运动比赛信息管理数据库系统

目录

1需求分析

1.1 设计目标

1.2 用户角色

1.3 基本数据

1.4 主要功能

2系统设计

2.1 系统功能设计

2.2 数据库设计

2.2.1数据库概念分析

2.2.2 实体之间的联系

2.2.3 E-R图

2.2.4设计相应的数据库关系模型

2.2.5数据表及其视图

2.2.6设置存储过程

2.2.7设置触发器

2.3 系统流程图

2.4 数据流程图

2.4.1 全局数据流图

2.4.2 局部数据流图

3 系统实现

3.1 创建系统登录窗体

3.1.1 新建登录窗体

3.1.2 VB连接数据库SQL sever

3.1.3 登录窗体FormLogin程序

3.1.4 登录程序代码

3.2 创建系统主窗体MDIparent

3.3 运动比赛成绩查询窗体Form2

3.4 编辑运动项目信息窗体

4 收获与反思

4.1 数据库应用系统实现过程总结

4.2 遇到的问题及其解决方法

参考文献

 

 

 

 

 

 

 

 


运动比赛信息管理数据库系统

我在20个选题中选择第18个选题“运动比赛信息管理”开发数据库系统。

1需求分析

1.1 设计目标

规范运动比赛流程。简化运动比赛管理过程,使得运动比赛信息管理电子化和及时化;提高比赛信息处理的速度和准确度,能够准确、及时和有效的查询和修改运动进程相关信息。

1.2 用户角色

    项目管理员、团队管理员、运动员、系统管理员

1.3 基本数据

运动比赛项目信息、运动比赛项目信息、学院团队信息、运动员信息、比赛成绩信息

1.4 主要功能

用户可以选择不同的身份登录(系统管理员、团队管理员、项目管理员、运动员)。运动员报名参赛和成绩查询。团队管理员进行团队管理、运动员管理和运动成绩查询。项目管理员管理运动比赛信息和参赛管理。系统管理员对系统进行用户管理和系统维护。

 

2系统设计

2.1 系统功能设计

系统功能模板主要有比赛信息管理、团队管理、参赛管理、运动成绩管理和系统管理等。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.2 数据库设计

2.2.1数据库概念分析

在校田径运动会中设置了各类比赛。每一比赛类别有类别编号、类别名称和主管等属性,每一比赛类别包含很多比赛项目,每一比赛项目有项目编号、项目名称、比赛时间和级别等属性。各个学院团队有团编号、团名称、领队等属性,每个学院团队有多名运动员组成,运动员有编号,姓名,年龄,性别等属性。每一名运动员可以参加多个比赛项目,每一比赛项目有多名运动员参加,运动员参加比赛有成绩属性。

2.2.2 实体之间的联系

比赛类别与比赛项目之间是一对多联系(1:n)

学院团队与运动员之间是一对多联系(1:n)

比赛项目与运动员之间是多对多联系(m:n)

2.2.3 E-R图

  实体:比赛类别、比赛项目、学院团队、运动员

 

 

 

 

 

 

 

 

2.2.4设计相应的数据库关系模型

比赛类别(类别编号、类别名称、主管)

比赛项目(项目编号,项目名称,比赛时间,级别,类别编号)

学院团队(团编号,团名称,领队)

运动员(运动员编号,姓名,年龄,性别,团编号)

参加(项目编号运动员编号,成绩)

2.2.5数据表及其视图

Compcate(比赛类别)、compgame(比赛管理)、schoolteam(学院团队)、sportsman(运动员)、partin(参加)

2.2.6设置存储过程

在数据库sportsgame中创建一个名为selectscore的存储过程,查询所有运动成绩名次在八名以内的运动员的编号、姓名、运动项目和成绩,并按成绩降序排列。

   USE [sportsgame]

GO

Create PROCEDURE selectscore1

AS

   SELECT a.pid, a.pname, b.gname, c.achive

   FROM sportsman a, Compgame b, partinPerson c

   WHERE a.pid=c.pid  AND b.gid =c.gid AND c.achive<8

   ORDER BY c.achive DESC

2.2.7设置触发器

 基于sportsman 表创建一个INSERT和UPDATE 触发器tr_CheckStID,如果输入的运动员编号pid的第三位未出现在schoolteam表的tid中,则不允许插入或更新记录,并显示相应提示“无此学院,不能输入这样的运动员编号”。写创建语句:

CREATE TRIGGER tr_CheckStID

ON sportsman

FOR INSERT

AS

BEGIN

  DECLARE @gid VARCHAR(3)

  SELECT @gid=tid  FROM INSERTED

  IF NOT EXISTS (SELECT * FROM sportsman WHERE  tid  =@gid)

     BEGIN

     PRINT '无此学院,不能输入这样的学号'

  ROLLBACK TRANSACTION

 END

END

2.3 系统流程图

 

 

 

 

 

 

 

 

 

                          

2.4 数据流程图

2.4.1 全局数据流图

2.4.2 局部数据流图

3 系统实现

3.1 创建系统登录窗体

3.1.1 新建登录窗体

文件菜单,创建工程项目。创建登录窗体FormLogin如下:

 

 

 

 

 

3.1.2 VB连接数据库SQL sever

项目->添加数据源,依次下一步设置

 

 

 

 

 

 

 

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

    <configSections>

    </configSections>

    <connectionStrings>

        <add name="ConsoleApp4.My.MySettings.sportsgameConnectionString"

            connectionString="Data Source=DESKTOP-J5U71PU;Initial Catalog=sportsgame;Integrated Security=True"

            providerName="System.Data.SqlClient" />

    </connectionStrings>

    <startup>

        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />

    </startup>

</configuration>

3.1.3 登录窗体FormLogin程序

当操作者输入了用户名、密码和用户类型时,系统就打开sportsgame数据库中的userinfo用户信息表进行识别。若用户名、密码和用户类型正确,操作者就可以登录到运动比赛信息管理系统中,同时系统根据角色权限的类别授予权限范围。若选择“系统管理员”身份则可操作整个系统;若选择普通用户登录则只能对系统中的相应权限操作

 

 

 

 

 

3.1.4 登录程序代码

Public Class Form1

    Private results As String

    Private user_name As String

    Private pass_word As String

Private user_type As String

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        '       Label1.Text = "111"

        user_name = TextBox1.Text

        pass_word = TextBox2.Text

        user_type = ComboBox1.Text

        Dim myform2 As New Form2()

        cmmd.CommandText = "select count(*)  FROM userinfo where username= '" + user_name + "' and password= '" + pass_word + "' and type= '" + user_type + "'"

        'myReader = cmmd.ExecuteScalar()

        If (Convert.ToInt64(cmmd.ExecuteScalar()) > 0) Then

            'Label4.Text = user_name + pass_word + user_type

            myform2.Show()

            Finalize()

        End If

        Label4.Text = "用户名或密码错误!"

    End Sub

 

    Private Sub form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        'TODO: 这行代码将数据加载到表“SportsgameDataSet.userinfo”中。您可以根据需要移动或删除它。

        Me.UserinfoTableAdapter.Fill(Me.SportsgameDataSet.userinfo)

        conn.ConnectionString = "Data Source=DESKTOP-J5U71PU;Initial Catalog=sportsgame;Integrated Security=True"

        conn.Open()

        cmmd.Connection = conn

 

        TextBox1.Text = "张三"

        TextBox2.Text = "123456"

    End Sub

 

    Private Sub Form1_FormClosed(sender As Object, e As Windows.Forms.FormClosedEventArgs) Handles MyBase.FormClosed

        If conn.State <> ConnectionState.Closed Then

            myReader.Close()

            conn.Close()

        End If

    End Sub

 

    Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged

    End Sub

 

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click

        Me.Dispose()

    End Sub

End Class

3.2 创建系统主窗体MDIparent

添加新项—>MDI父窗体

3.3 运动比赛成绩查询窗体Form2

  

Private Sub 比赛成绩ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 比赛成绩ToolStripMenuItem.Click

        Dim ofd As New Form2

        If ofd.ShowDialog() = DialogResult.OK Then

            Me.Text = ofd.Visible

        End If

End Sub

3.4 编辑运动项目信息窗体

4 收获与反思

4.1 数据库应用系统实现过程总结

首先在数据库管理系统SQL Server2019建立数据库、在数据库中建立数据表,录入数据,设置存储过程和触发器等。然后在应用系统开发工具Visual Basic.NET进行数据库应用系统的实现。依次是创建系统登录窗体及其程序实现、创建系统主窗体及其程序实现、查询信息窗体实现及其程序实现、编辑信息窗体实现及其程序实现等。

4.2 遇到的问题及其解决方法

问题1:先用了英文名,后来还是改为了采用中文名

根据这学期学过的例题和作业,先采用了英文字段名,但是在应用系统开发工具Visual Basic.NET连接用数据表的时候,发现英文名对于用户使用不太直观明白,查询了资料,SQL Sever2019对语言的支持很好,使用中文很顺畅。所以,后来采用了中文名。

问题2:VB连接SQL数据库的问题解决

SQL的联结实例化,并且输入SQL服务器的相关参数,保存服务器名称、数据库名称、登录密码。

问题3:登录窗体不同用户角色类型登录的程序实现

在登录Button程序窗体中反复调试程序才成功。

参考文献

[1]    严晖,刘卫国等.数据库技术与应用SQL Sever2019[M].中国水利水电出版社,2022.

[2]    严晖,周肆清等.数据库技术与应用实践教程SQL Sever2019[M].中国水利水电出版社,2022.

[3]    王洪姿,焦怡迪,刘思伶等.天津市青少年田径比赛在线报名系统的设计与实现[J].科技视界,2020,No.306(12):78-80.DOI:10.19694/j.cnki.issn2095-2457.2020.12.030.

[4]    银雪莉,阳亚,韦忠孝.第3~4届广西高校大学生田径比赛成绩比较分析[J].当代体育科技,2019,9(36):221-223.DOI:10.16655/j.cnki.2095-2813.2019.36.221.