资源描述
教学管理系统设计说明_模板
———————————————————————————————— 作者:
———————————————————————————————— 日期:
2
个人收集整理 勿做商业用途
兰州交通大学
课程设计(论文)
题 目 名 称 教学管理系统
课 程 名 称 数据库技术及应用
学 生 姓 名 毛燕春
学 号 201109118
学院 自然班 自动化与电气工程学院 电气2011-01
指 导 教 师 甄兴华
2013年 6 月 14 日
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 标准模块代码设计
Option Explicit
Public UserName As String
Public UserType As Boolean
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 代码设计
l 公共定义
Option Explicit
Dim Count1 As Integer
l 窗体装载处理程序(Load)
Private Sub Form_Load()
Count1 = 0 ‘错误次数清零
End Sub
l 取消按钮(cmdCancel)处理程序(Click)
Private Sub cmdCancel_Click()
Unload Me ‘系统退出
End Sub
l 确定按钮(cmdOk)处理程序(Click)
Private Sub cmdOk_Click()
Dim s1 As String
Dim Password As String
On Error Resume Next
If Text1.Text = "" Then ‘用户名为空,则退出
MsgBox (”用户名不能为空,请重新输入")
Text1。SetFocus
Exit Sub
End If
‘按输入的用户名进行查询
s1 = ”SELECT * from 用户表 WHERE 用户名=’” & Text1.Text & ”'"
Adodc1。RecordSource = s1
Adodc1。Refresh
If Adodc1.Recordset。EOF = False Then ‘判断查询结果
UserName = Adodc1.Recordset.Fields(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
Text1。Text = "”
Text2.Text = ”"
End If
Count1 = Count1 + 1 ‘错误次数累计
If Count1 >= 3 Then
MsgBox "错误超过3次,系统退出"
Unload Me
End If
End Sub
4.3. 主界面模块
4.3.1 说明
作为系统总界面,供用户进行各项选择。
4.3.2 窗体设计
主界面模块窗体类型为MDIForm,界面如下图所示.
4.3.3 代码设计
l 窗体变为活动窗体处理程序(MDIForm-Activate)
Private Sub MDIForm_Activate()
WindowState = 2 ‘窗体最大化状态
StatusBar1.Panels(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).Enabled = False ‘对普通用户设工具栏的某些按钮不可用
Toolbar1.Buttons(3).Enabled = False
Toolbar1.Buttons(6)。Enabled = False
Toolbar1。Buttons(7).Enabled = False
Toolbar1.Buttons(9).Enabled = False
End If
End Sub
l 定时器(Timer1)处理程序(Timer)
Private Sub Timer1_Timer()
StatusBar1.Panels(3).Text = Now ‘在状态栏中显示当前时间
End Sub
l 工具栏(Toolbar1)处理程序(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.Show (1) ‘学生成绩查询
Case 12
Unload Me ‘系统退出
End Select
End Sub
l “用户管理”菜单项处理程序(AA1-Click)
Private Sub AA1_Click()
Form11.Show (1)
End Sub
l “退出”菜单项处理程序(AA3-click)
Private Sub AA3_Click()
Unload Me
End Sub
l “学生基本信息维护”菜单项处理程序(BB1-click)
Private Sub BB1_Click()
Form21.Show (1)
End Sub
l “学生基本信息查询"菜单项处理程序(BB2-click)
Private Sub BB2_Click()
Form22。Show (1)
End Sub
l “课程添加”菜单项处理程序(CC1-click)
Private Sub CC1_Click()
Form31。Show (1)
End Sub
l “课程删除”菜单项处理程序(CC2-click)
Private Sub CC2_Click()
Form32。Show (1)
End Sub
l “学生成绩维护”菜单项处理程序(DD1-click)
Private Sub DD1_Click()
Form41.Show (1)
End Sub
l “学生成绩查询”菜单项处理程序(DD2-click)
Private Sub DD2_Click()
Form42。Show (1)
End Sub
4.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 If
End Sub
l 下一条(Command2)处理(Click)
Private Sub Command2_Click()
Command1.Enabled = True
Adodc1.Recordset.MoveNext
If Adodc1.Recordset.EOF Then
Command2。Enabled = False
Adodc1.Recordset.MoveLast
End If
End Sub
l 添加(Command3)处理(Click)
Private Sub Command3_Click()
If Command3.Caption = "添加" Then
Command3.Caption = ”确定"
Command1.Enabled = False
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 If
End Sub
l 删除(Command4)处理(Click)
Private Sub Command4_Click()
Adodc1.Recordset。Delete
Adodc1.Recordset。MoveNext
If Adodc1.Recordset。EOF Then
Adodc1。Recordset。MoveLast
End If
End Sub
l 退出(Command5)处理(Click)
Private Sub Command5_Click()
Unload Me
End Sub
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. 代码设计
l 窗体装载处理程序(Load)
Private Sub Form_Load()
DataGrid1.AllowAddNew = True
DataGrid1。AllowDelete = True
DataGrid1.AllowUpdate = True
End Sub
l 退出(Command1)处理(Click)
Private Sub Command1_Click()
Unload Me
End Sub
4.5.3 学生基本信息查询窗体
4.5.3.1. 窗体设计
主要控件属性如下表所示:
对象名
类型
属性
值
说明
Form22
窗体
Caption
学生基本信息查询
学生基本信息查询窗体
Adodc1
Adodc
ConnectionString
连接所使用的数据库,ConnectionString属性在界面中设置,RecordSource属性在代码中设置。
Adodc2
Adodc
ConnectionString
连接所使用的数据库,ConnectionString、RecordSource属性都在界面设置。
作为DataList1的数据源
RecordSource
CommandType
1-adCmdText
SELECT DISTINCT 班级名称 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. 代码设计
l 查询(Command1)处理(Click )
Private Sub Command1_Click()
Dim s1 As String
s1 = ””
If Check1。Value = 1 Then
If Text1。Text 〈〉 "" Then
s1 = s1 & "姓名=’" & Text1.Text & "'"
End If
End If
If Check2。Value = 1 Then
If Text2。Text <> "” Then
If s1 〈〉 ”" Then
s1 = s1 & " and "
End If
s1 = s1 & "学号='" & Text2.Text & ”’"
End If
End 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 = "where ” & s1
End If
Adodc1。RecordSource = ”select * from 学生基本信息表 " & s1
Adodc1.Refresh
Set DataGrid1。DataSource = Adodc1
End Sub
l 退出(Command2)处理(Click)
Private Sub Command2_Click()
Unload Me
End Sub
l 窗体装载处理程序(Load)
Private Sub Form_Load()
DataGrid1.AllowAddNew = False
DataGrid1.AllowDelete = False
DataGrid1.AllowUpdate = False
End Sub
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. 代码设计
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 = 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。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
Set DataGrid1。DataSource = Adodc1。Recordset
Text2.SetFocus
Text2.Text = "”
Exit Sub
End Sub
l 查询(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。Recordset
End Sub
l 退出(Command3)处理(Click)
Private Sub Command3_Click()
Unload Me
End Sub
l 窗体装载处理程序(Load)
Private Sub Form_Load()
DataGrid1.AllowAddNew = False
DataGrid1.AllowDelete = False
DataGrid1.AllowUpdate = False
End Sub
4.6.3 课程删除窗体
4.6.3.1. 窗体设计
主要控件属性如下表所示:
对象名
类型
属性
值
说明
Form32
窗体
Caption
课程添加
课程删除及修改窗体
Adodc1
Adodc
ConnectionString
连接所使用的数据库,ConnectionString、RecordSource属性都在界面中设置。
作为DataList1的数据源
RecordSource
CommandType
1-adCmdText
SELECT DISTINCT 班级名称 from 班级课程表
Adodc2
Adodc
ConnectionString
连接所使用的数据库,ConnectionString在界面中设置,RecordSource属性在代码中设置。
Label1
标签
Caption
班级名称
Label2
标签
Caption
课程列表
DataList1
DataList
RowSource
Adodc1
用于选择输入班级名称
ListField
班级名称
DataSource
Adodc1
DataListField
班级名称
DataGrid1
DataGrid
显示查询得到的学生基本信息
4.6.3.2. 代码设计
l 退出(Command1)处理(Click)
Private Sub Command1_Click()
Unload Me
End Sub
l 数据列表框(DataList1)处理(Click)
Private Sub DataList1_Click()
Dim s1 As String
s1 = ”select * from 班级课程表 where 班级名称=’" & DataList1。Text & ”'"
Adodc2。RecordSource = s1
Adodc2.Refresh
Set DataGrid1。DataSource = Adodc2
End Sub
l 窗体装载处理程序(Load)
Private Sub Form_Load()
DataGrid1.AllowDelete = True
DataGrid1。AllowUpdate = True
DataGrid1。AllowAddNew = False
End Sub
4.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 Error 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。Recordset。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.RecordSource = s1 & s2 & s3
Adodc3。Refresh
Set DataGrid1。DataSource = Adodc3
End Sub
l 退出(Command1)处理(Click )
Private Sub Command2_Click()
Unload Me
End Sub
l 数据列表框(DataList1)处理(Click)
Private Sub DataList1_Click()
Dim s1 As String, s2 As String
Set DataGrid1。DataSource = Nothing
s1 = ”select 课程名称 from 班级课程表 ”
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.MoveNext
Loop
s1 = "select 学号 from 学生基本信息表 ”
s2 = ”where 班级名称=’” & DataList1。Text & "’”
Adodc2。RecordSource = s1 & s2
Adodc2.Refresh
If Adodc2.Recordset。EOF = True Then
MsgBox "请在学生信息表里
展开阅读全文