资源描述
《NBA球员管理系统》
《数据库原理》课程设计汇报
——NBA球员管理系统设计和实现
学 院: 信息学院
专业班级: 计算机科学和技术1班
组员姓名: 王治铭 2405
陈昭儒 2406
殷鹏飞 2400
指导老师: 李晓莉
完成日期: -6-17
一、 概述
1.1 背景说明
软件名称:NBA球员信息管理系统
用户:球队数据分析师
1.2 开发环境
操作系统 Windows 7
软件配置Visual Basic 6.0 & SQL Server
二、 需求分析
2.1 用户需求
NBA发展至今,整个联盟涵括了三十支球队,每支球队球员名单上限在常规赛时期能够达成15位,加上不计其数自由球员,管理并分析这些球员生涯数据成为了一件棘手事,NBA球员信息管理系统能够师处理这个问题。
本系统面向对象为球队数据分析师,对于专业人士,她们不仅有权浏览数据,也能够对数据进行修改、删除,用户共享数据并更新数据。
2.2 关键功效
本系统从用户需求出发,可实现以下功效:
a) 球员数据浏览
b) 球员数据修改
c) 球员数据删除
2.3 数据字典
名称
数据类型
字段描述
char
char
球员姓名
Prage
smallint
球员年纪
Pno
smallint
球衣号码
PID
char
球员代号
Pcapital
money
球员薪金
Tname
char
隶属球队名称
TID
char
隶属球队代号
ppg
float
场均得分
rpg
float
场均篮板
apg
float
场均助攻
spg
float
场均抢断
bpg
float
场均盖帽
Pbe
smallint
最近一场得分
三、 数据库概念结构设计
依据需求分析,可知本系统有以下E-R图:
球员薪金
隶属球队代号
隶属球队名称
球衣号码
球员年纪
球员代号
球员姓名
球员信息
3.1 球员信息E-R图
3.2 球员数据E-R图
场均抢断
场均助攻
场均篮板
场均盖帽
球员代号
场均得分
球员数据
球员姓名
3.3 球员表现E-R图
最近一场得分
球员表现
球员姓名
球员代号
四、 逻辑结构设计
4.1球员信息表
列名
NULL
约束
PID
NOT NULL
primary key
Pname
NOT NULL
Pcapital
NOT NULL
Prage
NOT NULL
Pno
NOT NULL
Tname
NOT NULL
TID
NOT NULL
4.2球员数据表
列名
NULL
约束
PID
NOT NULL
primary key
Pname
NOT NULL
ppg
NOT NULL
rpg
NOT NULL
apg
NOT NULL
spg
NOT NULL
bpg
NOT NULL
4.3 球员表现表
列名
NULL
约束
PID
NOT NULL
primary key
Pname
NOT NULL
Pbe
NOT NULL
五、 创建数据库及其对象
5.1 建表
5.1.1 球员信息表
create table player(
PID char(10) NOT NULL,
Pname char(25) NOT NULL,
Pcapital money NOT NULL,
Prage smallint NOT NULL,
Tname char(30) NOT NULL,
Pno smallint NOT NULL,
TID char(15) NOT NULL,
primary key (PID,Pname)
)
5.1.2 球员数据表
create table playerData (
PID char(10) NOT NULL,
Pname char(25) NOT NULL,
ppg float NOT NULL,
rpg float NOT NULL,
apg float NOT NULL,
spg float NOT NULL,
bpg float NOT NULL,
primary key (PID,Pname)
)
5.1.3 球员表现表
create table behave(
PID char(10) NOT NULL,
Pbe smallint NOT NULL,
Pname char(25) NOT NULL
primary key (PID)
)
六、 基于VBUI设计
6.1 Form1窗口
Private Sub Add_Click()
Adodc1.Recordset.AddNew
Add.Enabled = False
Del.Enabled = False
Edit.Enabled = True
Cancel.Enabled = True
End Sub
Private Sub Cancel_Click()
Adodc1.Recordset.CancelUpdate
Add.Enabled = True
Del.Enabled = True
Cancel.Enabled = False
End Sub
Private Sub Command1_Click()//打开form2窗口
Form2.Show
End Sub
Private Sub Del_Click()
Dim res As Integer
res = MsgBox("确实要删除此行吗?", vbExclamation + vbYesNo + vbDefaultButton2)
If res = vbYes Then
Adodc1.Recordset.Delete
Adodc1.Recordset.MoveNext
If Adodc1.Recordset.EOF = True Then
Adodc1.Recordset.MoveLast
End If
End If
End Sub
Private Sub Edit_Click()
Adodc1.Recordset.Fields("Pno") = Trim(TextPno.Text)
Adodc1.Recordset.Fields("Pname") = Trim(TextPname.Text)
Adodc1.Recordset.Fields("Prage") = Trim(TextPrage.Text)
Adodc1.Recordset.Fields("Pcapital") = Trim(TextPcpt.Text)
Adodc1.Recordset.Fields("PID") = Trim(TextPID.Text)
Adodc1.Recordset.Fields("TID") = Trim(TextTID.Text)
Adodc1.Recordset.Fields("Tname") = Trim(TextTname.Text)
Adodc1.Recordset.Update
Add.Enabled = True
Del.Enabled = True
Cancel.Enabled = False
End Sub
Private Sub Exit_Click()
End
End Sub
Private Sub First_Click()
Adodc1.Recordset.MoveFirst
End Sub
Private Sub Last_Click()
Adodc1.Recordset.MoveLast
End Sub
Private Sub Next_Click()
Adodc1.Recordset.MoveNext
If Adodc1.Recordset.EOF = True Then
Adodc1.Recordset.MoveLast
End If
End Sub
Private Sub Previous_Click()
Adodc1.Recordset.MovePrevious
If Adodc1.Recordset.BOF = True Then
Adodc1.Recordset.MoveFirst
End If
End Sub
Private Sub Print_Click()//打开apg窗口
apg.Show
End Sub
Private Sub Form_Load()
Cancel.Enabled = False
Combo1.AddItem "球员信息"
Combo1.AddItem "球员数据"
Combo1.AddItem "球员表现"
Combo1.AddItem "球员表现对比"
Dim strPID As String
Dim strSelect As String
strPID = Trim(TextPID.Text)
strSelect = "select * from player"
Adodc1.CommandType = adCmdText
Adodc1.RecordSource = strSelect
Adodc1.Refresh
Set DtgCond.DataSource = Adodc1
Call InitGird
Dim strPID1 As String
Dim strSelect1 As String
strPID1 = Trim(TextPID.Text)
strSelect1 = "select * from playerData"
Adodc2.CommandType = adCmdText
Adodc2.RecordSource = strSelect1
Adodc2.Refresh
Set DtgCond1.DataSource = Adodc2
Call InitGird1
Dim strPID2 As String
Dim strSelect2 As String
strPID2 = Trim(TextPID.Text)
strSelect2 = "select * from behave"
Adodc3.CommandType = adCmdText
Adodc3.RecordSource = strSelect2
Adodc3.Refresh
Set DtgCond2.DataSource = Adodc3
Call InitGird2
Dim strPID3 As String
Dim strSelect3 As String
strPID3 = Trim(TextPID.Text)
strSelect3 = "select * from playerData join behave on playerData.PID = behave.PID "
Adodc4.CommandType = adCmdText
Adodc4.RecordSource = strSelect3
Adodc4.Refresh
Set DtgCond3.DataSource = Adodc4
End Sub
Private Sub InitGird()
With DtgCond
.Columns(0).Caption = "ID"
.Columns(1).Caption = "Name"
.Columns(2).Caption = "Capital"
.Columns(3).Caption = "Age"
.Columns(4).Caption = "Team"
.Columns(5).Caption = "No"
.Columns(6).Caption = "Team ID"
.Columns(0).Width = 1000
.Columns(1).Width = 1000
.Columns(2).Width = 1000
.Columns(3).Width = 1000
End With
End Sub
Private Sub InitGird1()
With DtgCond1
.Columns(0).Caption = "ID"
.Columns(1).Caption = "Name"
.Columns(2).Caption = "ppg"
.Columns(3).Caption = "rpg"
.Columns(4).Caption = "apg"
.Columns(5).Caption = "spg"
.Columns(6).Caption = "bpg"
.Columns(0).Width = 1000
.Columns(1).Width = 1000
.Columns(2).Width = 1000
.Columns(3).Width = 1000
End With
End Sub
Private Sub InitGird2()
With DtgCond2
.Columns(0).Caption = "ID"
.Columns(1).Caption = "pbe"
.Columns(2).Caption = "Name"
.Columns(0).Width = 1000
.Columns(1).Width = 1000
.Columns(2).Width = 1000
End With
End Sub
Private Sub Combo1_Click()
If Combo1.Text = "球员信息" Then
Frame1.ZOrder 0
ElseIf Combo1.Text = "球员数据" Then
Frame2.ZOrder 0
ElseIf Combo1.Text = "球员表现" Then
DtgCond2.ZOrder 0
ElseIf Combo1.Text = "球员表现对比" Then
DtgCond3.ZOrder 0
End If
End Sub
6.2 Form2窗口
Private Sub Add_Click()
Adodc2.Recordset.AddNew
Add.Enabled = False
Del.Enabled = False
Edit.Enabled = True
Cancel.Enabled = True
End Sub
Private Sub Cancel_Click()
Adodc2.Recordset.CancelUpdate
Add.Enabled = True
Del.Enabled = True
Cancel.Enabled = False
End Sub
Private Sub Del_Click()
Dim res As Integer
res = MsgBox("确实要删除此行吗?", vbExclamation + vbYesNo + vbDefaultButton2)
If res = vbYes Then
Adodc2.Recordset.Delete
Adodc2.Recordset.MoveNext
If Adodc2.Recordset.EOF = True Then
Adodc2.Recordset.MoveLast
End If
End If
End Sub
Private Sub Edit_Click()
Adodc2.Recordset.Fields("Pbe") = Trim(TextPbe.Text)
Adodc2.Recordset.Fields("Pname") = Trim(TextPname.Text)
Adodc2.Recordset.Fields("PID") = Trim(TextPID.Text)
Adodc2.Recordset.Update
Add.Enabled = True
Del.Enabled = True
Cancel.Enabled = False
End Sub
Private Sub Exit_Click()
End
End Sub
Private Sub First_Click()
Adodc2.Recordset.MoveFirst
End Sub
Private Sub Last_Click()
Adodc2.Recordset.MoveLast
End Sub
Private Sub Next_Click()
Adodc2.Recordset.MoveNext
If Adodc2.Recordset.EOF = True Then
Adodc2.Recordset.MoveLast
End If
End Sub
Private Sub Previous_Click()
Adodc2.Recordset.MovePrevious
If Adodc2.Recordset.BOF = True Then
Adodc2.Recordset.MoveFirst
End If
End Sub
Private Sub Form_Load()
Cancel.Enabled = False
End Sub
6.3 apg窗口
Private Sub Add_Click()
Adodc2.Recordset.AddNew
Add.Enabled = False
Del.Enabled = False
Edit.Enabled = True
Cancel.Enabled = True
End Sub
Private Sub Cancel_Click()
Adodc2.Recordset.CancelUpdate
Add.Enabled = True
Del.Enabled = True
Cancel.Enabled = False
End Sub
Private Sub Del_Click()
Dim res As Integer
res = MsgBox("确实要删除此行吗?", vbExclamation + vbYesNo + vbDefaultButton2)
If res = vbYes Then
Adodc2.Recordset.Delete
Adodc2.Recordset.MoveNext
If Adodc2.Recordset.EOF = True Then
Adodc2.Recordset.MoveLast
End If
End If
End Sub
Private Sub Edit_Click()
Adodc2.Recordset.Fields("ppg") = Trim(Textppg.Text)
Adodc2.Recordset.Fields("Pname") = Trim(TextPname.Text)
Adodc2.Recordset.Fields("rpg") = Trim(Textrpg.Text)
Adodc2.Recordset.Fields("apg") = Trim(Textapg.Text)
Adodc2.Recordset.Fields("PID") = Trim(TextPID.Text)
Adodc2.Recordset.Fields("bpg") = Trim(Textbpg.Text)
Adodc2.Recordset.Fields("spg") = Trim(Textspg.Text)
Adodc2.Recordset.Update
Add.Enabled = True
Del.Enabled = True
Cancel.Enabled = False
End Sub
Private Sub Exit_Click()
End
End Sub
Private Sub First_Click()
Adodc2.Recordset.MoveFirst
End Sub
Private Sub Last_Click()
Adodc2.Recordset.MoveLast
End Sub
Private Sub Next_Click()
Adodc2.Recordset.MoveNext
If Adodc2.Recordset.EOF = True Then
Adodc2.Recordset.MoveLast
End If
End Sub
Private Sub Previous_Click()
Adodc2.Recordset.MovePrevious
If Adodc2.Recordset.BOF = True Then
Adodc2.Recordset.MoveFirst
End If
End Sub
Private Sub Form_Load()
Cancel.Enabled = False
End Sub
七、 试验数据实例
修改球员数据。
修改球员表现。
Form1中删除操作。
Form1中添加操作。
Form1中修改操作。
八、 心得
经过这次为期五天数据库课程设计实习,本组从中学习到了一个数据库程序设计基础步骤,包含需求分析、概念结构设计、逻辑结构设计等,同时加强了关系型数据库管理方面部分知识。需求分析是很关键,只有做好需求分析,后面工作才会轻松;逻辑结构设计也很关键,需要完善实体所应包含全部属性,假如这个阶段有纰漏,等到后面修改起来会比较麻烦。
这次课设提供了宝贵历练,让本组对数据库认知和程序编写方面全部得到了提升。
展开阅读全文