1、学生成绩管理系统设计说明 学生成绩管理系统设计说明 1. 需求本系统主要用于学校的学生成绩管理。1. 用户身份的验证2. 学生基本信息管理3. 按班级选课4. 学生成绩的管理2. 总体设计本系统包括:标准模块、系统登录模块、主界面模块、系统管理模块、学生基本信息管理模块、选课模块、成绩管理模块。1. 标准模块定义公共变量和过程。2. 系统登录模块进行用户身份的验证。3. 主界面模块作为系统总界面,供用户进行各项选择。4. 系统管理模块用户管理及系统退出。5. 学生基本信息管理模块学生基本信息的录入和查询。6. 选课模块为班级选课。7. 成绩管理模块进行学生成绩的录入及查询。3. 数据库设计及配
2、置3.1. 数据库设计该数据库由以下几个表组成:用户表、学生基本信息表、班级课程表、学生成绩表。3.1.1 用户表包括用户名、密码、是否是超级用户。字段名称数据类型用户名文本密码文本是否为超级用户布尔3.1.2 学生基本信息表包括学号、姓名、电话、地址、班级名称、性别。字段名称数据类型学号文本姓名文本电话文本地址文本班级名称文本性别文本3.1.3 班级课程表包括班级名称、课程名称。字段名称数据类型班级名称文本课程名称文本3.1.4 学生成绩表包括学号、课程名称、成绩。字段名称数据类型学号文本课程名称文本成绩数值(单精度浮点型)3.2. 数据库中各表关系学生基本信息表与班级课程表通过班级名称字段
3、相关联,学生基本信息表与学生成绩表通过学号字段相关联,班级课程表与学生成绩表通过课程名称字段相关联。4. 系统实现4.1. 标准模块(公有模块)4.1.1 标准模块中的数据定义用于定义全局变量及过程。本系统定义了当前用户名及用户类型。序号变量名数据类型1UserNameString2UserTypeBoolean4.1.2 标准模块代码设计Option Explicit Public UserName As String Public UserType As Boolean4.2. 系统登录模块4.2.1 说明进行用户身份的验证。特定的用户才能登录到系统。4.2.2 窗体设计系统登录窗体的窗体
4、类型为Form,界面如下图所示:主要控件属性如下表所示:对象名类型属性值说明FrmLogin窗体Caption学生成绩管理系统登录学生成绩管理系统登录窗体Label1标签Caption用户名:Label2标签Caption密码:Text1文本框Text用于输入用户名Text2文本框Text用于输入密码cmdOk命令按钮Caption确定确定当前输入的用户名和密码,进行用户登录。登录成功后进入主界面。如果三次输入错误的用户和密码,程序将自动退出cmdCancel命令按钮Caption取消取消操作,退出程序Adodc1AdodcConnectionString连接所使用的数据库,Connectio
5、nString属性在界面中设置,RecordSource属性在代码中设置。4.2.3 代码设计l 公共定义Option ExplicitDim Count1 As Integerl 窗体装载处理程序(Load)Private Sub Form_Load() Count1 = 0错误次数清零End Subl 取消按钮(cmdCancel)处理程序(Click)Private Sub cmdCancel_Click() Unload Me系统退出End Subl 确定按钮(cmdOk)处理程序(Click)Private Sub cmdOk_Click() Dim s1 As String Dim
6、 Password As StringOn Error Resume Next If Text1.Text = Then用户名为空,则退出 MsgBox (用户名不能为空,请重新输入) Text1.SetFocus Exit SubEnd If按输入的用户名进行查询 s1 = SELECT * from 用户表 WHERE 用户名= & Text1.Text & Adodc1.RecordSource = s1 Adodc1.Refresh If Adodc1.Recordset.EOF = False Then判断查询结果 UserName = Adodc1.Recordset.Fields
7、(0)有该用户名,即用户名正确 Password = Adodc1.Recordset.Fields(1) UserType = Adodc1.Recordset.Fields(2) If Password = Text2.Text Then判断密码是否正确 Unload Me密码正确,关闭当前窗体 FrmMain.Show显示主界面窗体 Exit Sub Else MsgBox (密码错误,请重新输入)密码错误,提示 Text2.SetFocus Text2.Text = End If Else没有该用户名,即用户名错误 MsgBox 用户名错误,请重新输入 Text1.SetFocus T
8、ext1.Text = Text2.Text = End If Count1 = Count1 + 1错误次数累计 If Count1 = 3 Then MsgBox 错误超过3次,系统退出 Unload Me End IfEnd Sub4.3. 主界面模块4.3.1 说明作为系统总界面,供用户进行各项选择。4.3.2 窗体设计主界面模块窗体类型为MDIForm,界面如下图所示。4.3.3 代码设计l 窗体变为活动窗体处理程序(MDIFormActivate)Private Sub MDIForm_Activate() WindowState = 2窗体最大化状态 StatusBar1.Pan
9、els(1).Text = 用户名: & UserName在状态栏显示用户名、用户类型 If UserType = True Then StatusBar1.Panels(2).Text = 用户类型: 管理员 Else StatusBar1.Panels(2).Text = 用户类型: 普通用户End If If UserType = False Then对普通用户设某些菜单项不可用 AA1.Enabled = False BB1.Enabled = False CC.Enabled = False DD1.Enabled = False Toolbar1.Buttons(1).Enable
10、d = False对普通用户设工具栏的某些按钮不可用 Toolbar1.Buttons(3).Enabled = False Toolbar1.Buttons(6).Enabled = False Toolbar1.Buttons(7).Enabled = False Toolbar1.Buttons(9).Enabled = False End IfEnd Subl 定时器(Timer1)处理程序(Timer)Private Sub Timer1_Timer() StatusBar1.Panels(3).Text = Now在状态栏中显示当前时间End Subl 工具栏(Toolbar1)处
11、理程序(ButtonClick)Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button) Select Case Button.Index Case 1 Form11.Show (1)用户管理 Case 3 Form21.Show (1)学生基本信息维护 Case 4 Form22.Show (1)学生基本信息查询 Case 6 Form31.Show (1)课程添加 Case 7 Form32.Show (1)课程删除 Case 9 Form41.Show (1)学生成绩维护 Case 10 Form42.Sho
12、w (1)学生成绩查询 Case 12 Unload Me系统退出 End SelectEnd Subl “用户管理”菜单项处理程序(AA1Click)Private Sub AA1_Click() Form11.Show (1)End Subl “退出”菜单项处理程序(AA3click)Private Sub AA3_Click() Unload MeEnd Subl “学生基本信息维护”菜单项处理程序(BB1click)Private Sub BB1_Click() Form21.Show (1)End Subl “学生基本信息查询”菜单项处理程序(BB2click)Private Sub
13、 BB2_Click() Form22.Show (1)End Subl “课程添加”菜单项处理程序(CC1click)Private Sub CC1_Click() Form31.Show (1)End Subl “课程删除”菜单项处理程序(CC2click)Private Sub CC2_Click() Form32.Show (1)End Subl “学生成绩维护”菜单项处理程序(DD1click)Private Sub DD1_Click() Form41.Show (1)End Subl “学生成绩查询”菜单项处理程序(DD2click)Private Sub DD2_Click()
14、 Form42.Show (1)End Sub4.4. 用户管理模块4.4.1 说明创建、删除用户。设定用户权限。4.4.2 窗体设计4.4.3 代码设计l 上一条(Command1)处理(Click)Private Sub Command1_Click() Command2.Enabled = True Adodc1.Recordset.MovePrevious If Adodc1.Recordset.BOF Then Command1.Enabled = False Adodc1.Recordset.MoveFirst End IfEnd Subl 下一条(Command2)处理(Clic
15、k)Private Sub Command2_Click() Command1.Enabled = True Adodc1.Recordset.MoveNext If Adodc1.Recordset.EOF Then Command2.Enabled = False Adodc1.Recordset.MoveLast End IfEnd Subl 添加(Command3)处理(Click)Private Sub Command3_Click() If Command3.Caption = 添加 Then Command3.Caption = 确定 Command1.Enabled = Fal
16、se Command2.Enabled = False Command4.Enabled = False Adodc1.Recordset.AddNew Text1.SetFocus Else If Text1.Text = Then MsgBox (用户名不能为空) Exit Sub End If Command3.Caption = 添加 Adodc1.Recordset.Update Command1.Enabled = True Command2.Enabled = True Command4.Enabled = True End IfEnd Subl 删除(Command4)处理(C
17、lick)Private Sub Command4_Click() Adodc1.Recordset.Delete Adodc1.Recordset.MoveNext If Adodc1.Recordset.EOF Then Adodc1.Recordset.MoveLast End IfEnd Subl 退出(Command5)处理(Click)Private Sub Command5_Click() Unload MeEnd Sub4.5. 学生基本信息管理模块4.5.1 说明学生基本信息的添加、删除、查询。该模块有两个窗体:学生基本信息维护窗体和学生基本信息查询窗体4.5.2 学生基本信
18、息维护窗体4.5.2.1. 窗体设计主要控件属性如下表所示:对象名类型属性值说明Form21窗体Caption学生基本信息维护学生基本信息维护窗体Adodc1AdodcConnectionString连接所使用的数据库,ConnectionString、RecordSource属性都在界面中设置。作为DataGrid1的数据源RecordSourceCommandType2adCmdTable学生基本信息表DataGrid1DataGridDataSourceAdodc1用于显示学生基本信息表内容Command1命令按钮Caption退出4.5.2.2. 代码设计l 窗体装载处理程序(Load
19、)Private Sub Form_Load() DataGrid1.AllowAddNew = True DataGrid1.AllowDelete = True DataGrid1.AllowUpdate = TrueEnd Subl 退出(Command1)处理(Click)Private Sub Command1_Click() Unload MeEnd Sub4.5.3 学生基本信息查询窗体4.5.3.1. 窗体设计主要控件属性如下表所示:对象名类型属性值说明Form22窗体Caption学生基本信息查询学生基本信息查询窗体Adodc1AdodcConnectionString连接所
20、使用的数据库,ConnectionString属性在界面中设置,RecordSource属性在代码中设置。Adodc2AdodcConnectionString连接所使用的数据库,ConnectionString、RecordSource属性都在界面设置。作为DataList1的数据源RecordSourceCommandType 1adCmdTextSELECT DISTINCT 班级名称 FROM 学生基本信息表Check1复选按钮Caption姓名选择查询条件Check2复选按钮Caption学号Check3复选按钮Caption班级Text1文本框用于输入姓名Text2文本框用于输入学
21、号DataList1DataListRowSourceAdodc2用于选择输入班级名称ListField班级名称DataSourceAdodc2DataListField班级名称DataGrid1DataGrid显示查询得到的学生基本信息Command1命令按钮Caption查询Command2命令按钮Caption退出4.5.3.2. 代码设计l 查询(Command1)处理(Click )Private Sub Command1_Click() Dim s1 As Strings1 = If Check1.Value = 1 Then If Text1.Text Then s1 = s1
22、& 姓名= & Text1.Text & End IfEnd If If Check2.Value = 1 Then If Text2.Text Then If s1 Then s1 = s1 & and End If s1 = s1 & 学号= & Text2.Text & End IfEnd If If Check3.Value = 1 Then If DataList1.Text Then If s1 Then s1 = s1 & and End If s1 = s1 & 班级名称= & DataList1.Text & End If End If If s1 Then s1 = whe
23、re & s1End If Adodc1.RecordSource = select * from 学生基本信息表 & s1 Adodc1.Refresh Set DataGrid1.DataSource = Adodc1End Subl 退出(Command2)处理(Click)Private Sub Command2_Click() Unload MeEnd Subl 窗体装载处理程序(Load)Private Sub Form_Load() DataGrid1.AllowAddNew = False DataGrid1.AllowDelete = False DataGrid1.Allo
24、wUpdate = FalseEnd Sub4.6. 选课模块4.6.1 说明该模块为一个班级选课。4.6.2 课程添加窗体用于课程的添加和查询4.6.2.1. 窗体设计主要控件属性如下表所示:对象名类型属性值说明Form31窗体Caption课程添加课程添加窗体Adodc1AdodcConnectionString连接所使用的数据库,ConnectionString属性在界面中设置,RecordSource属性在代码中设置。Label1标签Caption班级名称Label2标签Caption课程名称Text1文本框用于输入班级名称Text2文本框用于输入课程名称DataGrid1DataGr
25、id显示该班级课程Command1命令按钮Caption添加Command2命令按钮Caption查询Command3命令按钮Caption退出4.6.2.2. 代码设计l 添加(Command1)处理(Click)Private Sub Command1_Click() Dim s1 As String, s2 As String On Error Resume Next If Text1.Text = Or Text2.Text = Then MsgBox (输入不能为空) Exit Sub End If s1 = select * from 班级课程表 where 班级名称= s2 =
26、Text1.Text & and 课程名称= & Text2.Text & Adodc1.RecordSource = s1 & s2 Adodc1.Refresh If Adodc1.Recordset.EOF = False Then Text1.SetFocus MsgBox 该记录已存在,请重新输入, , 警告 Exit Sub End If s1 = select * from 班级课程表 Adodc1.RecordSource = s1 Adodc1.Refresh Adodc1.Recordset.MoveLast Adodc1.Recordset.AddNew Adodc1.R
27、ecordset.Fields(班级名称) = Text1.Text Adodc1.Recordset.Fields(课程名称) = Text2.Text Adodc1.Recordset.Update Adodc1.Refresh s1 = select 课程名称 from 班级课程表 where 班级名称= & Text1.Text & Adodc1.RecordSource = s1 Adodc1.Refresh Set DataGrid1.DataSource = Adodc1.Recordset Text2.SetFocus Text2.Text = Exit SubEnd Subl
28、 查询(Command2)处理(Click)Private Sub Command2_Click() Dim s1 As String s1 = select 课程名称 from 班级课程表 where 班级名称= & Text1.Text & Adodc1.RecordSource = s1 Adodc1.Refresh Set DataGrid1.DataSource = Adodc1.RecordsetEnd Subl 退出(Command3)处理(Click)Private Sub Command3_Click() Unload MeEnd Subl 窗体装载处理程序(Load)Pri
29、vate Sub Form_Load() DataGrid1.AllowAddNew = False DataGrid1.AllowDelete = False DataGrid1.AllowUpdate = FalseEnd Sub4.6.3 课程删除窗体4.6.3.1. 窗体设计主要控件属性如下表所示:对象名类型属性值说明Form32窗体Caption课程添加课程删除及修改窗体Adodc1AdodcConnectionString连接所使用的数据库,ConnectionString、RecordSource属性都在界面中设置。作为DataList1的数据源RecordSourceComma
30、ndType 1adCmdTextSELECT DISTINCT 班级名称 from 班级课程表Adodc2AdodcConnectionString连接所使用的数据库,ConnectionString在界面中设置,RecordSource属性在代码中设置。Label1标签Caption班级名称Label2标签Caption课程列表DataList1DataListRowSourceAdodc1用于选择输入班级名称ListField班级名称DataSourceAdodc1DataListField班级名称DataGrid1DataGrid显示查询得到的学生基本信息4.6.3.2. 代码设计l
31、退出(Command1)处理(Click)Private Sub Command1_Click() Unload MeEnd Subl 数据列表框(DataList1)处理(Click)Private Sub DataList1_Click() Dim s1 As String s1 = select * from 班级课程表 where 班级名称= & DataList1.Text & Adodc2.RecordSource = s1 Adodc2.Refresh Set DataGrid1.DataSource = Adodc2End Subl 窗体装载处理程序(Load)Private
32、Sub Form_Load() DataGrid1.AllowDelete = True DataGrid1.AllowUpdate = True DataGrid1.AllowAddNew = FalseEnd Sub4.7. 成绩管理模块4.7.1 说明进行学生成绩的录入及查询。4.7.2 成绩录入窗体进行学生成绩的添加、修改及删除。4.7.2.1. 窗体设计4.7.2.2. 代码设计l 录入(Command1)处理(Click)Private Sub Command1_Click() Dim s1 As String, s2 As String, s3 As String On Erro
33、r Resume Next s1 = select * from 学生成绩表 s2 = where 学号= & List2.Text & and s3 = 课程名称= & List1.Text & Adodc3.RecordSource = s1 & s2 & s3 Adodc3.Refresh If Adodc3.Recordset.EOF = False Then Adodc3.Recordset.Fields(2) = Val(Text1.Text) Else Adodc3.Recordset.MoveLast Adodc3.Recordset.AddNew Adodc3.Records
34、et.Fields(0) = List2.Text Adodc3.Recordset.Fields(1) = List1.Text Adodc3.Recordset.Fields(2) = Val(Text1.Text) End If Adodc3.Recordset.Update Adodc3.Refresh s1 = select 学号,成绩 from 学生成绩表 where 课程名称= & List1.Text & s2 = and 学号 in (select 学号 from 学生基本信息表 s3 = where 班级名称 = & DataList1.Text & ) Adodc3.Re
35、cordSource = s1 & s2 & s3 Adodc3.Refresh Set DataGrid1.DataSource = Adodc3End Subl 退出(Command1)处理(Click )Private Sub Command2_Click() Unload MeEnd Subl 数据列表框(DataList1)处理(Click)Private Sub DataList1_Click() Dim s1 As String, s2 As String Set DataGrid1.DataSource = Nothing s1 = select 课程名称 from 班级课程表
36、 s2 = where 班级名称= & DataList1.Text & Adodc2.RecordSource = s1 & s2 Adodc2.Refresh If Adodc2.Recordset.EOF = True Then MsgBox 请在班级课程表里添加该班级的课程名称 Exit Sub End If List1.Clear Adodc2.Recordset.MoveFirst Do While Adodc2.Recordset.EOF = False List1.AddItem Adodc2.Recordset.Fields(0) Adodc2.Recordset.MoveN
37、ext Loop s1 = select 学号 from 学生基本信息表 s2 = where 班级名称= & DataList1.Text & Adodc2.RecordSource = s1 & s2 Adodc2.Refresh If Adodc2.Recordset.EOF = True Then MsgBox 请在学生信息表里添加该班级 Exit Sub End If List2.Clear Adodc2.Recordset.MoveFirst Do While Adodc2.Recordset.EOF = False List2.AddItem Adodc2.Recordset.Fields(0) Adodc2.Recordset.MoveNext LoopEnd Subl 窗体装载处理程序(Load)Private Sub Form_Load() DataGrid1.AllowDelete = True DataGrid1.AllowAddNew = False DataGrid1.AllowUpdate = FalseEnd Subl 列表框(List1)处理(Click)Private Sub List1_Click() Dim s1 As String, s2 As String, s3 As String s1 = select 学号,成绩 fro