数据库课程设计实例.docx
《数据库课程设计实例.docx》由会员分享,可在线阅读,更多相关《数据库课程设计实例.docx(36页珍藏版)》请在冰豆网上搜索。
![数据库课程设计实例.docx](https://file1.bdocx.com/fileroot1/2023-2/21/1339860f-a144-4aca-9f96-a414cb155398/1339860f-a144-4aca-9f96-a414cb1553981.gif)
数据库课程设计实例
学生成绩管理系统设计说明
(本设计以VB为前台对数据库进行操作)
1.需求
本系统主要用于学校的学生成绩管理。
1.用户身份的验证
2.学生基本信息管理
3.按班级选课
4.学生成绩的管理
2.总体设计
本系统包括:
标准模块、系统登录模块、主界面模块、系统管理模块、学生基本信息管理模块、选课模块、成绩管理模块。
1.标准模块
定义公共变量和过程。
2.系统登录模块
进行用户身份的验证。
3.主界面模块
作为系统总界面,供用户进行各项选择。
4.系统管理模块
用户管理及系统退出。
5.学生基本信息管理模块
学生基本信息的录入和查询。
6.选课模块
为班级选课。
7.成绩管理模块
进行学生成绩的录入及查询。
3.数据库设计及配置
3.1.数据库设计
该数据库由以下几个表组成:
用户表、学生基本信息表、班级课程表、学生成绩表。
3.1.1用户表
包括用户名、密码、是否是超级用户。
字段名称
数据类型
用户名
文本
密码
文本
是否为超级用户
布尔
3.1.2学生基本信息表
包括学号、姓名、电话、地址、班级名称、性别。
字段名称
数据类型
学号
文本
姓名
文本
电话
文本
地址
文本
班级名称
文本
性别
文本
3.1.3班级课程表
包括班级名称、课程名称。
字段名称
数据类型
班级名称
文本
课程名称
文本
3.1.4学生成绩表
包括学号、课程名称、成绩。
字段名称
数据类型
学号
文本
课程名称
文本
成绩
数值(单精度浮点型)
3.2.数据库中各表关系
学生基本信息表与班级课程表通过班级名称字段相关联,学生基本信息表与学生成绩表通过学号字段相关联,班级课程表与学生成绩表通过课程名称字段相关联。
4.系统实现
4.1.标准模块(公有模块)
4.1.1标准模块中的数据定义
用于定义全局变量及过程。
本系统定义了当前用户名及用户类型。
序号
变量名
数据类型
1
UserName
String
2
UserType
Boolean
4.1.2标准模块代码设计
OptionExplicit
PublicUserNameAsString
PublicUserTypeAsBoolean
4.2.系统登录模块
4.2.1说明
进行用户身份的验证。
特定的用户才能登录到系统。
4.2.2
窗体设计
系统登录窗体的窗体类型为Form,界面如下图所示:
主要控件属性如下表所示:
对象名
类型
属性
值
说明
FrmLogin
窗体
Caption
学生成绩管理系统登录
学生成绩管理系统登录窗体
Label1
标签
Caption
用户名:
Label2
标签
Caption
密码:
Text1
文本框
Text
用于输入用户名
Text2
文本框
Text
用于输入密码
cmdOk
命令按钮
Caption
确定
确定当前输入的用户名和密码,进行用户登录。
登录成功后进入主界面。
如果三次输入错误的用户和密码,程序将自动退出
cmdCancel
命令按钮
Caption
取消
取消操作,退出程序
Adodc1
Adodc
ConnectionString
连接所使用的数据库,ConnectionString属性在界面中设置,RecordSource属性在代码中设置。
4.2.3代码设计
●公共定义
OptionExplicit
DimCount1AsInteger
●窗体装载处理程序(Load)
PrivateSubForm_Load()
Count1=0‘错误次数清零
EndSub
●取消按钮(cmdCancel)处理程序(Click)
PrivateSubcmdCancel_Click()
UnloadMe‘系统退出
EndSub
●确定按钮(cmdOk)处理程序(Click)
PrivateSubcmdOk_Click()
Dims1AsString
DimPasswordAsString
OnErrorResumeNext
IfText1.Text=""Then‘用户名为空,则退出
MsgBox("用户名不能为空,请重新输入")
Text1.SetFocus
ExitSub
EndIf
‘按输入的用户名进行查询
s1="SELECT*from用户表WHERE用户名='"&Text1.Text&"'"
Adodc1.RecordSource=s1
Adodc1.Refresh
IfAdodc1.Recordset.EOF=FalseThen‘判断查询结果
UserName=Adodc1.Recordset.Fields(0)‘有该用户名,即用户名正确
Password=Adodc1.Recordset.Fields
(1)
UserType=Adodc1.Recordset.Fields
(2)
IfPassword=Text2.TextThen‘判断密码是否正确
UnloadMe‘密码正确,关闭当前窗体
FrmMain.Show‘显示主界面窗体
ExitSub
Else
MsgBox("密码错误,请重新输入")‘密码错误,提示
Text2.SetFocus
Text2.Text=""
EndIf
Else‘没有该用户名,即用户名错误
MsgBox"用户名错误,请重新输入"
Text1.SetFocus
Text1.Text=""
Text2.Text=""
EndIf
Count1=Count1+1‘错误次数累计
IfCount1>=3Then
MsgBox"错误超过3次,系统退出"
UnloadMe
EndIf
EndSub
4.3.主界面模块
4.3.1说明
作为系统总界面,供用户进行各项选择。
4.3.2窗体设计
主界面模块窗体类型为MDIForm,界面如下图所示。
4.3.3代码设计
●窗体变为活动窗体处理程序(MDIForm-Activate)
PrivateSubMDIForm_Activate()
WindowState=2‘窗体最大化状态
StatusBar1.Panels
(1).Text="用户名:
"&UserName‘在状态栏显示用户名、用户类型
IfUserType=TrueThen
StatusBar1.Panels
(2).Text="用户类型:
管理员"
Else
StatusBar1.Panels
(2).Text="用户类型:
普通用户"
EndIf
IfUserType=FalseThen‘对普通用户设某些菜单项不可用
AA1.Enabled=False
BB1.Enabled=False
CC.Enabled=False
DD1.Enabled=False
Toolbar1.Buttons
(1).Enabled=False‘对普通用户设工具栏的某些按钮不可用
Toolbar1.Buttons(3).Enabled=False
Toolbar1.Buttons(6).Enabled=False
Toolbar1.Buttons(7).Enabled=False
Toolbar1.Buttons(9).Enabled=False
EndIf
EndSub
●定时器(Timer1)处理程序(Timer)
PrivateSubTimer1_Timer()
StatusBar1.Panels(3).Text=Now‘在状态栏中显示当前时间
EndSub
●工具栏(Toolbar1)处理程序(ButtonClick)
PrivateSubToolbar1_ButtonClick(ByValButtonAsMSComctlLib.Button)
SelectCaseButton.Index
Case1
Form11.Show
(1)‘用户管理
Case3
Form21.Show
(1)‘学生基本信息维护
Case4
Form22.Show
(1)‘学生基本信息查询
Case6
Form31.Show
(1)‘课程添加
Case7
Form32.Show
(1)‘课程删除
Case9
Form41.Show
(1)‘学生成绩维护
Case10
Form42.Show
(1)‘学生成绩查询
Case12
UnloadMe‘系统退出
EndSelect
EndSub
●“用户管理”菜单项处理程序(AA1-Click)
PrivateSubAA1_Click()
Form11.Show
(1)
EndSub
●“退出”菜单项处理程序(AA3-click)
PrivateSubAA3_Click()
UnloadMe
EndSub
●“学生基本信息维护”菜单项处理程序(BB1-click)
PrivateSubBB1_Click()
Form21.Show
(1)
EndSub
●“学生基本信息查询”菜单项处理程序(BB2-click)
PrivateSubBB2_Click()
Form22.Show
(1)
EndSub
●“课程添加”菜单项处理程序(CC1-click)
PrivateSubCC1_Click()
Form31.Show
(1)
EndSub
●“课程删除”菜单项处理程序(CC2-click)
PrivateSubCC2_Click()
Form32.Show
(1)
EndSub
●“学生成绩维护”菜单项处理程序(DD1-click)
PrivateSubDD1_Click()
Form41.Show
(1)
EndSub
●“学生成绩查询”菜单项处理程序(DD2-click)
PrivateSubDD2_Click()
Form42.Show
(1)
EndSub
4.4.用户管理模块
4.4.1说明
创建、删除用户。
设定用户权限。
4.4.2窗体设计
4.4.3代码设计
●上一条(Command1)处理(Click)
PrivateSubCommand1_Click()
Command2.Enabled=True
Adodc1.Recordset.MovePrevious
IfAdodc1.Recordset.BOFThen
Command1.Enabled=False
Adodc1.Recordset.MoveFirst
EndIf
EndSub
●下一条(Command2)处理(Click)
PrivateSubCommand2_Click()
Command1.Enabled=True
Adodc1.Recordset.MoveNext
IfAdodc1.Recordset.EOFThen
Command2.Enabled=False
Adodc1.Recordset.MoveLast
EndIf
EndSub
●添加(Command3)处理(Click)
PrivateSubCommand3_Click()
IfCommand3.Caption="添加"Then
Command3.Caption="确定"
Command1.Enabled=False
Command2.Enabled=False
Command4.Enabled=False
Adodc1.Recordset.AddNew
Text1.SetFocus
Else
IfText1.Text=""Then
MsgBox("用户名不能为空")
ExitSub
EndIf
Command3.Caption="添加"
Adodc1.Recordset.Update
Command1.Enabled=True
Command2.Enabled=True
Command4.Enabled=True
EndIf
EndSub
●删除(Command4)处理(Click)
PrivateSubCommand4_Click()
Adodc1.Recordset.Delete
Adodc1.Recordset.MoveNext
IfAdodc1.Recordset.EOFThen
Adodc1.Recordset.MoveLast
EndIf
EndSub
●退出(Command5)处理(Click)
PrivateSubCommand5_Click()
UnloadMe
EndSub
4.5.学生基本信息管理模块
4.5.1说明
学生基本信息的添加、删除、查询。
该模块有两个窗体:
学生基本信息维护窗体和学生基本信息查询窗体
4.5.2
学生基本信息维护窗体
4.5.2.1.窗体设计
主要控件属性如下表所示:
对象名
类型
属性
值
说明
Form21
窗体
Caption
学生基本信息维护
学生基本信息维护窗体
Adodc1
Adodc
ConnectionString
连接所使用的数据库,ConnectionString、RecordSource属性都在界面中设置。
作为DataGrid1的数据源
RecordSource
CommandType
2-adCmdTable
学生基本信息表
DataGrid1
DataGrid
DataSource
Adodc1
用于显示学生基本信息表内容
Command1
命令按钮
Caption
退出
4.5.2.2.代码设计
●窗体装载处理程序(Load)
PrivateSubForm_Load()
DataGrid1.AllowAddNew=True
DataGrid1.AllowDelete=True
DataGrid1.AllowUpdate=True
EndSub
●退出(Command1)处理(Click)
PrivateSubCommand1_Click()
UnloadMe
EndSub
4.5.3学生基本信息查询窗体
4.5.3.1.窗体设计
主要控件属性如下表所示:
对象名
类型
属性
值
说明
Form22
窗体
Caption
学生基本信息查询
学生基本信息查询窗体
Adodc1
Adodc
ConnectionString
连接所使用的数据库,ConnectionString属性在界面中设置,RecordSource属性在代码中设置。
Adodc2
Adodc
ConnectionString
连接所使用的数据库,ConnectionString、RecordSource属性都在界面设置。
作为DataList1的数据源
RecordSource
CommandType
1-adCmdText
SELECTDISTINCT班级名称FROM学生基本信息表
Check1
复选按钮
Caption
姓名
选择查询条件
Check2
复选按钮
Caption
学号
Check3
复选按钮
Caption
班级
Text1
文本框
用于输入姓名
Text2
文本框
用于输入学号
DataList1
DataList
RowSource
Adodc2
用于选择输入班级名称
ListField
班级名称
DataSource
Adodc2
DataListField
班级名称
DataGrid1
DataGrid
显示查询得到的学生基本信息
Command1
命令按钮
Caption
查询
Command2
命令按钮
Caption
退出
4.5.3.2.代码设计
●查询(Command1)处理(Click)
PrivateSubCommand1_Click()
Dims1AsString
s1=""
IfCheck1.Value=1Then
IfText1.Text<>""Then
s1=s1&"姓名='"&Text1.Text&"'"
EndIf
EndIf
IfCheck2.Value=1Then
IfText2.Text<>""Then
Ifs1<>""Then
s1=s1&"and"
EndIf
s1=s1&"学号='"&Text2.Text&"'"
EndIf
EndIf
IfCheck3.Value=1Then
IfDataList1.Text<>""Then
Ifs1<>""Then
s1=s1&"and"
EndIf
s1=s1&"班级名称='"&DataList1.Text&"'"
EndIf
EndIf
Ifs1<>""Then
s1="where"&s1
EndIf
Adodc1.RecordSource="select*from学生基本信息表"&s1
Adodc1.Refresh
SetDataGrid1.DataSource=Adodc1
EndSub
●退出(Command2)处理(Click)
PrivateSubCommand2_Click()
UnloadMe
EndSub
●窗体装载处理程序(Load)
PrivateSubForm_Load()
DataGrid1.AllowAddNew=False
DataGrid1.AllowDelete=False
DataGrid1.AllowUpdate=False
EndSub
4.6.选课模块
4.6.1说明
该模块为一个班级选课。
4.6.2课程添加窗体
用于课程的添加和查询
4.6.2.1.窗体设计
主要控件属性如下表所示:
对象名
类型
属性
值
说明
Form31
窗体
Caption
课程添加
课程添加窗体
Adodc1
Adodc
ConnectionString
连接所使用的数据库,ConnectionString属性在界面中设置,RecordSource属性在代码中设置。
Label1
标签
Caption
班级名称
Label2
标签
Caption
课程名称
Text1
文本框
用于输入班级名称
Text2
文本框
用于输入课程名称
DataGrid1
DataGrid
显示该班级课程
Command1
命令按钮
Caption
添加
Command2
命令按钮
Caption
查询
Command3
命令按钮
Caption
退出
4.6.2.2.代码设计
●添加(Command1)处理(Click)
PrivateSubCommand1_Click()
Dims1AsString,s2AsString
OnErrorResumeNext
IfText1.Text=""OrText2.Text=""Then
MsgBox("输入不能为空")
ExitSub
EndIf
s1="select*from班级课程表where班级名称='"
s2=Text1.Text&"'and课程名称='"&Text2.Text&"'"
Adodc1.RecordSource=s1&s2
Adodc1.Refresh
IfAdodc1.Recordset.EOF=FalseThen
Text1.SetFocus
MsgBox"该记录已存在,请重新输入",,"警告"
ExitSub
EndIf
s1="select*from班级课程表"
Adodc1.RecordSource=s1
Adodc1.Refresh
Adodc1.Recordset.MoveLast
Adodc1.Recordset.AddNew
Adodc1.Recordset.Fields("班级名称")=Text1.Text
Adodc1.Recordset.Fields("课程名称")=Text2.Text
Adodc1.Recordset.Update
Adodc1.Refresh
s1="select课程名称from班级课程表where班级名称='"&Text1.Text&"'"
Adodc1.RecordSource=s1
Adodc1.Refresh
SetDataGrid1.DataSource=Adodc1.Recordset
Text2.SetFocus
Text2.Text=""
ExitSub
EndSub
●查询(Command2)处理(Click)
PrivateSubCommand2_Click()
Dims1AsString
s1="select课程名称from班级课程表where班级名称='"&Text1.Text&"'"
Adodc1.RecordSource=s1
Adodc1.Refresh
SetDataGrid1.DataSour