数据库课程设计NBA篮球管理系统.docx
《数据库课程设计NBA篮球管理系统.docx》由会员分享,可在线阅读,更多相关《数据库课程设计NBA篮球管理系统.docx(27页珍藏版)》请在冰豆网上搜索。
数据库课程设计NBA篮球管理系统
山西大学软件学院
数据库系统概论课程设计报告书
题目NBA数据系统
专业软件工程
班级
姓名
学号
指导教师
2017年6月
一、选题背景....................................................................3
二、需求分析....................................................................3
2.1功能需求................................................................3
2.2数字字典...............................................................4
2.2.1数据项...............................................................4
2.2.2数据结构............................................................6
2.2.3数据流...............................................................6
三、概念结构设计..............................................................6
3.1球员E-R图............................................................7
3.2球队E-R图............................................................7
3.3赛程E-R图............................................................8
四、逻辑结构设计..............................................................8
五、物理结构设计.............................................................8
5.1球员数据表............................................................9
5.2球队信息表............................................................9
5.3赛程信息表.........................................................10
六、数据库实施..............................................................10
七、界面及代码...............................................................13
八、心得体会..................................................................23
一、选题背景
本学期的课设又开始了,我的想法就是为每个球迷建立一个方便查询NBA相关信息的数据库系统。
虽然当今NBA数据系统很强大而且很全面,但这次我就是想继续通过自己的能力以及利用自己学习的知识来做出一个可以利用的软件系统。
另外,NBA球员多,球队多,比赛也多。
球迷需要一个可以方便查询所有信息的一个系统。
所以,针对这个背景,我便定了这个题目。
以下就是我的设计思想和过程。
二、需求分析
2.1功能需求
系统要实现的主要功能有:
(1)建立数据库:
根据系统功能设计的要求以及功能模块的划分,设计相关数据库。
(2)球员数据管理模块:
实现NBA球员基本情况的录入、删除等基本操作;对球员基本信息能提供灵活的查询方式。
(3)球队信息管理模块:
实现NBA球队的录入、删除等基本操作;能方便的查询球队的各项信息。
(4)球队赛程信息管理模块:
实现NBA各球队赛程信息的录入、删除等基本操作;能方便查询各球队各赛季的比赛信息。
2.2数据字典
通过对NBA联盟赛制赛程以及球迷关注信息的研究分析,我设计出如下的简单的数据项和数据结构:
2.2.1数据项
所涉及全部数据项及其解释与类型定义:
数据项名
数据项含义
数据类型
长度
Season
所属赛季
varchar
10
Name
球员姓名
varchar
20
Team_Name
球队名
varchar
20
Number
球员的号码
varchar
4
Position
球员的场上位置
varchar
8
Minutes
球员的场均上场时间
varchar
5
PTS
球员的场均得分
varchar
8
Assist
球员的场均助攻
varchar
8
Rebound
球员的场均篮板
varchar
8
Steal
球员的场均抢断
varchar
8
Block_Shot
球员的场均盖帽
varchar
8
Turnover
球员的场均失误
varchar
8
Foul
球员的场均犯规
varchar
8
FG
球员的场均投篮命中率
varchar
5
FT
球员的场均罚球命中率
varchar
5
TP
球员的场均三分命中率
varchar
5
Zone
球队所属分区
varchar
4
Coach
球队主教练
varchar
20
Arena
球队主场球馆
varchar
20
PPG
球队的场均得分
varchar
10
APG
球队的场均助攻
varchar
10
RPG
球队的场均篮板
varchar
10
SPG
球队的场均抢断
varchar
10
BPG
球队的场均盖帽
varchar
10
AFG
球队的场均投篮命中率
varchar
5
AFT
球队的场均罚球命中率
varchar
5
ATP
球队的场均三分命中率
varchar
5
Date_Time
比赛日期和时间
varchar
20
Opponent
对手
varchar
20
Result
比赛结果
varchar
5
Scores
比分情况
varchar
10
Site
比赛地点
varchar
20
2.2.2数据结构
数据结构名
数据结构含义
组成
球员数据表
表示球员的各项数据
Season,Team_Name,Number,Position,Minutes,PTS,Assist,Rebound,Steal,Block_Shot,Foul,FG,FT,TP
球队信息表
表示球队的各项信息
Team_Name,Zone,Coach,Arena,PPG,APG,RPG,SPG,BPG,AFG,AFT,ATP
赛程信息表
表示球队之间的赛程安排以及部分比赛结果
Date_Time,Team_Name,Opponent,Result,Scores,Site
2.2.3数据流
数据流名称
操作
数据流来源
数据流去向
数据流组成
球员数据
增删球员数据
管理员操作
球员数据表
同表中相关属性
球队信息
增删球队信息
管理员操作
球队信息表
同表中相关属性
赛程信息
增删赛程信息
管理员操作
赛程信息表
同表中相关属性
三、概念结构设计
3.1球员数据E-R模型
3.2球队信息E-R模型
3.3赛程信息E-R模型
四、逻辑结构设计
根据概念结构设计阶段的E-R模型,现按规则将其转换为以下3个关系模式:
(表名和属性名均用英文)
①PLAYER(Season,Season,Name,Team_Name,Number,Position,Minutes,PTS,Assist,Rebound,Steal,Block_Shot,Turnover,Foul,FG,FT,TP)
②TEAM(Zone,Coach,Arena,PPG,APG,RPG,SPG,BPG,AFG,AFT,ATP)
③SCHEDULE(Date_Time,Team_Name,Opponent,Result,Scores,Site)
五、物理结构设计
将逻辑设计阶段设计的关系模型转化为物理数据库。
5.1PLAYER表(球员数据表)
5.2TEAM表(球队信息表)
5.3SCHEDULE表(赛程信息表)
六、数据库实施
6.1向数据库输入数据
数据的数据只是象征性的输入一些代表性数据。
以下是输入数据的结果图,过程中没有发生错误以及约束冲突问题。
PLAYER表:
(注:
上图没有完整截图)
TEAM表:
(注:
上图没有完整截图)
SCHEDULE表:
(注:
上图没有完整截图)
6.2建立数据库(SQL语句)
createtablePLAYER
(
Seasonvarchar(10),--赛季
Namevarchar(20),--球员姓名
Team_Namevarchar(20),--所在球队
Numbervarchar(4),--球员号码
Positionvarchar(8),--场上位置
Minutesvarchar(5),--场均上场时间
PTSvarchar(8),--场均得分
Assistvarchar(8),--场均助攻
Reboundvarchar(8),--场均篮板
Stealvarchar(8),--场均抢断
Block_Shotvarchar(8),--场均盖帽
Turnovervarchar(8),--场均失误
Foulvarchar(8),--场均犯规
FGvarchar(5),--场均投篮命中率
FTvarchar(5),--场均罚球命中率
TPvarchar(5),--场均三分命中率
primarykey(Season,Number,Team_Name)
)
createtableTEAM
(
Team_Namevarchar(20)primarykey,--球队名
Zonevarchar(4),--分区
Coachvarchar(20),--主教练
Arenavarchar(20),--主场球馆
PPGvarchar(10),--场均得分
APGvarchar(10),--场均助攻
RPGvarchar(10),--场均篮板
SPGvarchar(10),--场均抢断
BPGvarchar(10),--场均盖帽
AFGvarchar(5),--场均投篮命中率
AFTvarchar(5),--场均罚球命中率
ATPvarchar(5)--场均三分命中率
)
createtableSCHEDULE
(
Date_Timevarchar(20),--日期
Team_Namevarchar(20),--当前球队
Opponentvarchar(20),--对手
Resultvarchar(5),--比赛结果
Scoresvarchar(10),--比分
Sitevarchar(20),--比赛地点
primarykey(Date_Time,Team_Name),
foreignkey(Team_Name)referencesTEAM(Team_Name)
)
七、界面及代码
以下是其中一些界面的截图以及代码,不是全部。
7.1主界面(菜单界面)
主要是给用户及管理员进行导航,详情如下:
截图:
部分代码:
(头部代码省略)
namespaceWindowsFormsApplication1
{
publicpartialclassMenu:
Form
{
publicMenu()
{
InitializeComponent();
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
PlayerForm2=newPlayer();
Form2.Show();
}
privatevoidbutton2_Click_1(objectsender,EventArgse)
{
TeamForm3=newTeam();
Form3.Show();
}
privatevoidbutton3_Click(objectsender,EventArgse)
{
ScheduleForm4=newSchedule();
Form4.Show();
}
privatevoidbutton4_Click(objectsender,EventArgse)
{
Loginhoutai=newLogin();
houtai.Show();
}
privatevoidbutton5_Click(objectsender,EventArgse)
{
this.Close();
}
(“声明”按钮定义省略)
}
}
}
7.2查看球员数据界面
选择球队点击“查询”按钮即可查询该球队所有球员信息。
截图:
(其中一个例子)
部分代码:
(头部代码省略)
namespaceWindowsFormsApplication1
{
publicpartialclassPlayer:
Form
{
publicPlayer()
{
InitializeComponent();
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
//创建数据库连接
SqlConnectionconn=newSqlConnection(@"Server=.;database=NBA;IntegratedSecurity=True");
try
{
conn.Open();//打开数据库连接
stringsql="selectSeasonas'赛季',Nameas'球员',Team_Nameas'球队',Numberas'号码',Positionas'位置',Minutesas'场均上场时间',PTSas'场均得分',Assistas'场均助攻',Reboundas'场均篮板',Stealas'场均抢断',Block_Shotas'场均盖帽',Turnoveras'场均失误',Foul'场均犯规',FG'场均投篮命中率',FTas'场均罚球命中率',TPas'场均三分命中率'fromPLAYERwhereTeam_Name='{0}'";//编写SQL语句
sql=string.Format(sql,comboBox1.SelectedItem.ToString());//填充SQL语句
SqlDataAdapterada=newSqlDataAdapter(sql,conn);//创建数据适配器对象
DataSetds=newDataSet();//创建数据集对象
ada.Fill(ds);//填充数据集
dataGridView1.DataSource=ds.Tables[0];//将数据集中的内容与datagridview绑定
}
catch
{
MessageBox.Show("操作错误!
");
}
finally
{
conn.Close();//关闭数据库连接
}
}
}
}
7.3查看球队信息导航界面
在主界面上点击“查看球队信息”按钮进入球队信息导航界面。
在这个界面中会给出30个球队的按钮,点击其中一个则可查询该球队信息。
截图:
部分代码:
(头部代码省略)
namespaceWindowsFormsApplication1
{
publicpartialclassTeam:
Form
{
publicTeam()
{
InitializeComponent();
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
ATLlaoying=newATL();
laoying.Show();
}
(这里只列举一个按钮,其余还有29个按钮定义省略)
7.4球队信息界面(以芝加哥公牛为例)
在球队信息导航界面中点击“芝加哥公牛”进入该界面。
自动从数据库中提取该球队数据。
且其中文本框内容为只读。
截图:
部分代码:
(头部代码省略)
namespaceWindowsFormsApplication1
{
publicpartialclassCHI:
Form
{
publicCHI()
{
InitializeComponent();
}
privatevoidCHI_Load(objectsender,EventArgse)
{
textBox1.ReadOnly=true;//设置textBox为只读
textBox2.ReadOnly=true;
textBox3.ReadOnly=true;
textBox4.ReadOnly=true;
textBox5.ReadOnly=true;
textBox6.ReadOnly=true;
textBox7.ReadOnly=true;
textBox8.ReadOnly=true;
textBox9.ReadOnly=true;
textBox10.ReadOnly=true;
textBox11.ReadOnly=true;
SqlConnectionconn=newSqlConnection(@"Server=.;database=NBA;IntegratedSecurity=True");
conn.Open();//打开数据库连接
stringsql="selectZonefromTEAMwhereTeam_Name='公牛'";//编写SQL语句
SqlCommandcmd=newSqlCommand(sql,conn);//创建命令对象
textBox1.Text=cmd.ExecuteScalar().ToString();
sql="selectCoachfromTEAMwhereTeam_Name='公牛'";//编写SQL语句
cmd=newSqlCommand(sql,conn);//创建命令对象
textBox2.Text=cmd.ExecuteScalar().ToString();
sql="selectArenafromTEAMwhereTeam_Name='公牛'";//编写SQL语句
cmd=newSqlCommand(sql,conn);//创建命令对象
textBox3.Text=cmd.ExecuteScalar().ToString();
(这里只列出三个,剩下8个省略)
conn.Close();
}
}
}
7.5后台登陆以及后台功能选择界面
提供登陆以及检查用户名密码。
成功进入后即可选择功能。
截图:
选择功能界面部分代码:
namespaceWindowsFormsApplication1
{
publicpartialclassHoutai:
Form
{
publicHoutai()
{
InitializeComponent();
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
AddPlayerAddPlayer=newAddPlayer();
AddPlayer.Show();
}
privatevoidbutton2_Click(objectsender,EventArgse)
{
AddTeamAddTeam=newAddTeam();
AddTeam.Show();
}
(其他四个功能代码省略)
}
}
}
7.6后台添加功能界面(以添加球员为例)
在文本框中输入内容,然后插入到insert语句中,完成插入数据过程。
截图:
部分代码:
namespaceWindowsFormsApplication1
{
publicpartialclassAddPlayer:
Form
{
publicAddPlayer()
{
InitializeComponent();
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
SqlConnectionconn=newSqlConnection(@"Server=.;database=NBA;IntegratedSecurity=True");
try
{
conn.Open();//打开数据库连接
stringsql="insertintoPLAYER(Season,Name,Team_Name,Number,Positio