学生考试管理系统 (考试系统数据库设计)

考试管理系统智慧校园,学生考试管理系统

系统介绍

本系统包含主要功能有:学生管理,考试管理,考场管理,考试安排,考试成绩统计,生成报表。

商品中包含简要的设计报告(功能模块图,业务流程图,UC矩阵,数据流图,数据字典,E-R图等)和制作截图文档。

数据库系统包含:表,查询,窗体,报表,VBA代码

系统为单机使用的access数据库系统,可作为课程学习实例使用。

设计部分

功能模块图

考试管理系统智慧校园,学生考试管理系统

业务流程图

考试管理系统智慧校园,学生考试管理系统

数据流图

考试管理系统智慧校园,学生考试管理系统

E-R图

考试管理系统智慧校园,学生考试管理系统

程序流程图

考试管理系统智慧校园,学生考试管理系统

关系模型

考试(考试名称,科目,考试日期,考试时间)

考试安排(学号,考试,考场,座位,监考员,成绩,状态)

考场(考场名称,考场座位,状态)

学生(学号,姓名,性别,班级)

监考员(监考员,监考科目,联系电话)

系统部分

表关系

考试管理系统智慧校园,学生考试管理系统

窗体

考试安排

考试管理系统智慧校园,学生考试管理系统

考场管理

考试管理系统智慧校园,学生考试管理系统

考试管理

考试管理系统智慧校园,学生考试管理系统

学生管理

考试管理系统智慧校园,学生考试管理系统

考试统计

考试管理系统智慧校园,学生考试管理系统

报表

考试安排报表

考试管理系统智慧校园,学生考试管理系统

考试统计报表

考试管理系统智慧校园,学生考试管理系统

代码部分

系统主页

Private Sub Command监考管理_Click()

Me.显示界面子窗体.SourceObject = "监考员管理"

Me.显示界面子窗体.SetFocus

End Sub

Private Sub Command考场管理_Click()

Me.显示界面子窗体.SourceObject = "考场管理"

Me.显示界面子窗体.SetFocus

End Sub

Private Sub Command考试安排_Click()

Me.显示界面子窗体.SourceObject = "考试安排管理"

Me.显示界面子窗体.SetFocus

End Sub

Private Sub Command考试管理_Click()

Me.显示界面子窗体.SourceObject = "考试管理"

Me.显示界面子窗体.SetFocus

End Sub

Private Sub Command考试统计_Click()

Me.显示界面子窗体.SourceObject = "考试统计"

Me.显示界面子窗体.SetFocus

End Sub

Private Sub Command退出系统_Click()

If MsgBox("是否退出系统", vbYesNo) <> vbYes Then

Exit Sub

End If

Application.Quit acQuitSaveAll

End Sub

Private Sub Command系统后台_Click()

DoCmd.Close acForm, Me.Name

DoCmd.SelectObject acForm, , True

End Sub

Private Sub Command学生管理_Click()

Me.显示界面子窗体.SourceObject = "学生管理"

Me.显示界面子窗体.SetFocus

End Sub

监考员管理

Private Sub Command查询_Click()

On Error GoTo 结束查询

If 查询内容 <> "" And IsNull(查询内容) = False And 查询字段 <> "" And IsNull(查询字段) = False Then

Me.数据表子窗体.Form.Filter = Me.查询字段 & " like '*" & Me.查询内容 & "*'"

Me.数据表子窗体.Form.FilterOn = True

Me.数据表子窗体.Requery

Else

Me.数据表子窗体.Form.FilterOn = False

Me.数据表子窗体.Requery

End If

Me.数据表子窗体.SetFocus

Exit Sub

结束查询:

MsgBox Err.Description

End Sub

Private Sub Command清空_Click()

监考员.Value = ""

监考科目.Value = ""

联系电话.Value = ""

End Sub

Private Sub Command全部_Click()

Me.数据表子窗体.Form.FilterOn = False

Me.数据表子窗体.Requery

End Sub

Private Sub Command添加_Click()

If 监考员 = "" Or IsNull(监考员) = True Then

MsgBox "监考员值为空!"

Exit Sub

End If

If 监考科目 = "" Or IsNull(监考科目) = True Then

MsgBox "监考科目值为空!"

Exit Sub

End If

If 联系电话 = "" Or IsNull(联系电话) = True Then

MsgBox "联系电话值为空!"

Exit Sub

End If

If Nz(DCount("监考员", "监考员表", "监考员='" & Me.监考员 & "'"), 0) > 0 Then

MsgBox "该监考员已存在!不能重复"

Exit Sub

End If

On Error Resume Next

DoCmd.SetWarnings (False)

Dim add_sql As String

add_sql = "Insert Into 监考员表 (监考员,监考科目,联系电话) Values ('" & 监考员 & "','" & 监考科目 & "','" & 联系电话 & "')"

DoCmd.RunSQL add_sql

MsgBox "添加完成"

Me.数据表子窗体.Form.Requery

End Sub

监考员数据表

Private Sub Form_BeforeUpdate(Cancel As Integer)

If 监考员.Value <> "" And 监考科目.Value <> "" And 联系电话.Value <> "" Then

On Error GoTo 数据更新前提醒_Err

If (MsgBox("是否保存对记录的修改", 1, "修改记录提醒") = 1) Then

Beep

Else

DoCmd.RunCommand acCmdUndo

End If

Else

MsgBox "监考员,监考科目,联系电话都不能为空"

On Error Resume Next

DoCmd.RunCommand acCmdUndo

Exit Sub

End If

数据更新前提醒_Exit:

Exit Sub

数据更新前提醒_Err:

MsgBox Error$

Resume 数据更新前提醒_Exit

End Sub

Private Sub 监考员_DblClick(Cancel As Integer)

If MsgBox("是否删除该记录:" & Me.监考员 & "?", vbYesNo) = vbYes Then

DoCmd.SetWarnings (False)

Dim del_sql As String

del_sql = "Delete From 监考员表 Where 监考员 = '" & Me.监考员 & "'"

DoCmd.RunSQL del_sql

Me.Requery

End If

End Sub

考场管理

Private Sub Command查询_Click()

On Error GoTo 结束查询

If 查询内容 <> "" And IsNull(查询内容) = False And 查询字段 <> "" And IsNull(查询字段) = False Then

Me.数据表子窗体.Form.Filter = Me.查询字段 & " like '*" & Me.查询内容 & "*'"

Me.数据表子窗体.Form.FilterOn = True

Me.数据表子窗体.Requery

Else

Me.数据表子窗体.Form.FilterOn = False

Me.数据表子窗体.Requery

End If

Me.数据表子窗体.SetFocus

Exit Sub

结束查询:

MsgBox Err.Description

End Sub

Private Sub Command清空_Click()

考场名称.Value = ""

考场座位.Value = ""

状态.Value = ""

End Sub

Private Sub Command全部_Click()

Me.数据表子窗体.Form.FilterOn = False

Me.数据表子窗体.Requery

End Sub

Private Sub Command添加_Click()

If 考场名称 = "" Or IsNull(考场名称) = True Then

MsgBox "考场名称值为空!"

Exit Sub

End If

If 考场座位 = "" Or IsNull(考场座位) = True Then

MsgBox "考场座位值为空!"

Exit Sub

End If

If 状态 = "" Or IsNull(状态) = True Then

MsgBox "状态值为空!"

Exit Sub

End If

If Nz(DCount("考场名称", "考场表", "考场名称='" & Me.考场名称 & "' and 考场座位='" & Me.考场座位 & "'"), 0) > 0 Then

MsgBox "该考场名称座位已存在!不能重复"

Exit Sub

End If

On Error Resume Next

DoCmd.SetWarnings (False)

Dim add_sql As String

add_sql = "Insert Into 考场表 (考场名称,考场座位,状态) Values ('" & 考场名称 & "','" & 考场座位 & "','" & 状态 & "')"

DoCmd.RunSQL add_sql

MsgBox "添加完成"

Me.数据表子窗体.Form.Requery

End Sub

考场数据表

Private Sub Form_BeforeUpdate(Cancel As Integer)

If 考场名称.Value <> "" And 考场座位.Value <> "" And 状态.Value <> "" Then

On Error GoTo 数据更新前提醒_Err

If (MsgBox("是否保存对记录的修改", 1, "修改记录提醒") = 1) Then

Beep

Else

DoCmd.RunCommand acCmdUndo

End If

Else

MsgBox "考场名称,考场座位,状态都不能为空"

On Error Resume Next

DoCmd.RunCommand acCmdUndo

Exit Sub

End If

数据更新前提醒_Exit:

Exit Sub

数据更新前提醒_Err:

MsgBox Error$

Resume 数据更新前提醒_Exit

End Sub

Private Sub 考场名称_DblClick(Cancel As Integer)

If MsgBox("是否删除该记录:" & Me.考场名称 & "?", vbYesNo) = vbYes Then

DoCmd.SetWarnings (False)

Dim del_sql As String

del_sql = "Delete From 考场表 Where 考场名称 = '" & Me.考场名称 & "'"

DoCmd.RunSQL del_sql

Me.Requery

End If

End Sub

考试安排管理

Private Sub Command报表_Click()

If Me.数据表子窗体.Form.FilterOn = True Then

DoCmd.OpenReport "考试安排报表", acViewReport, , Me.数据表子窗体.Form.Filter

Else

DoCmd.OpenReport "考试安排报表", acViewReport

End If

End Sub

Private Sub Command查询_Click()

On Error GoTo 结束查询

If 查询内容 <> "" And IsNull(查询内容) = False And 查询字段 <> "" And IsNull(查询字段) = False Then

Me.数据表子窗体.Form.Filter = Me.查询字段 & " like '*" & Me.查询内容 & "*'"

Me.数据表子窗体.Form.FilterOn = True

Me.数据表子窗体.Requery

Else

Me.数据表子窗体.Form.FilterOn = False

Me.数据表子窗体.Requery

End If

Me.数据表子窗体.SetFocus

Exit Sub

结束查询:

MsgBox Err.Description

End Sub

Private Sub Command清空_Click()

学号.Value = ""

考试.Value = ""

考场.Value = ""

座位.Value = ""

监考员.Value = ""

成绩.Value = ""

状态.Value = ""

End Sub

Private Sub Command全部_Click()

Me.数据表子窗体.Form.FilterOn = False

Me.数据表子窗体.Requery

End Sub

Private Sub Command添加_Click()

If 学号 = "" Or IsNull(学号) = True Then

MsgBox "学号值为空!"

Exit Sub

End If

If 考试 = "" Or IsNull(考试) = True Then

MsgBox "考试值为空!"

Exit Sub

End If

If 考场 = "" Or IsNull(考场) = True Then

MsgBox "考场值为空!"

Exit Sub

End If

If 座位 = "" Or IsNull(座位) = True Then

MsgBox "座位值为空!"

Exit Sub

End If

On Error Resume Next

Dim add_rs As DAO.Recordset

Set add_rs = CurrentDb.OpenRecordset("考试安排表", dbOpenTable)

With add_rs

.AddNew

!学号.Value = 学号.Value

!考试.Value = 考试.Value

!考场.Value = 考场.Value

!座位.Value = 座位.Value

!监考员.Value = 监考员.Value

!成绩.Value = 成绩.Value

!状态.Value = 状态.Value

.Update

.Close

End With

Set add_rs = Nothing

MsgBox "添加完成"

Me.数据表子窗体.Form.Requery

End Sub

Private Sub 考场_AfterUpdate()

If Me.考场 <> "" Then

Me.座位.RowSource = "Select 考场座位,状态 From 考场表 where 考场名称='" & Me.考场 & "'"

Me.座位 = ""

Me.座位.Requery

Else

Me.座位.RowSource = "Select 考场座位,状态 From 考场表"

Me.座位 = ""

Me.座位.Requery

End If

End Sub

Private Sub 考场_Change()

If Me.考场 <> "" Then

Me.座位.RowSource = "Select 考场座位,状态 From 考场表 where 考场名称='" & Me.考场 & "'"

Me.座位 = ""

Me.座位.Requery

Else

Me.座位.RowSource = "Select 考场座位,状态 From 考场表"

Me.座位 = ""

Me.座位.Requery

End If

End Sub

考试管理

Private Sub Command查询_Click()

On Error GoTo 结束查询

If 查询内容 <> "" And IsNull(查询内容) = False And 查询字段 <> "" And IsNull(查询字段) = False Then

Me.数据表子窗体.Form.Filter = Me.查询字段 & " like '*" & Me.查询内容 & "*'"

Me.数据表子窗体.Form.FilterOn = True

Me.数据表子窗体.Requery

Else

Me.数据表子窗体.Form.FilterOn = False

Me.数据表子窗体.Requery

End If

Me.数据表子窗体.SetFocus

Exit Sub

结束查询:

MsgBox Err.Description

End Sub

Private Sub Command清空_Click()

考试名称.Value = ""

科目.Value = ""

考试日期.Value = ""

考试时间.Value = ""

End Sub

Private Sub Command全部_Click()

Me.数据表子窗体.Form.FilterOn = False

Me.数据表子窗体.Requery

End Sub

Private Sub Command添加_Click()

If 考试名称 = "" Or IsNull(考试名称) = True Then

MsgBox "考试名称值为空!"

Exit Sub

End If

If 科目 = "" Or IsNull(科目) = True Then

MsgBox "科目值为空!"

Exit Sub

End If

If 考试日期 = "" Or IsNull(考试日期) = True Then

MsgBox "考试日期值为空!"

Exit Sub

End If

If 考试时间 = "" Or IsNull(考试时间) = True Then

MsgBox "考试时间值为空!"

Exit Sub

End If

If Nz(DCount("考试名称", "考试表", "考试名称='" & Me.考试名称 & "'"), 0) > 0 Then

MsgBox "该考试名称已存在!不能重复"

Exit Sub

End If

On Error Resume Next

DoCmd.SetWarnings (False)

Dim add_sql As String

add_sql = "Insert Into 考试表 (考试名称,科目,考试日期,考试时间) Values ('" & 考试名称 & "','" & 科目 & "',#" & 考试日期 & "#,'" & 考试时间 & "')"

DoCmd.RunSQL add_sql

MsgBox "添加完成"

Me.数据表子窗体.Form.Requery

End Sub

考试数据表

Private Sub Form_BeforeUpdate(Cancel As Integer)

If 考试名称.Value <> "" And 科目.Value <> "" And 考试日期.Value <> "" And 考试时间.Value <> "" Then

On Error GoTo 数据更新前提醒_Err

If (MsgBox("是否保存对记录的修改", 1, "修改记录提醒") = 1) Then

Beep

Else

DoCmd.RunCommand acCmdUndo

End If

Else

MsgBox "考试名称,科目,考试日期,考试时间都不能为空"

On Error Resume Next

DoCmd.RunCommand acCmdUndo

Exit Sub

End If

数据更新前提醒_Exit:

Exit Sub

数据更新前提醒_Err:

MsgBox Error$

Resume 数据更新前提醒_Exit

End Sub

Private Sub 考试名称_DblClick(Cancel As Integer)

DoCmd.OpenForm "考试信息管理", acNormal, , "考试名称='" & 考试名称 & "'"

End Sub

考试统计

Private Sub Command报表_Click()

If Me.数据表子窗体.Form.FilterOn = True Then

DoCmd.OpenReport "考试统计报表", acViewReport, , Me.数据表子窗体.Form.Filter

Else

DoCmd.OpenReport "考试统计报表", acViewReport

End If

End Sub

Private Sub Command查询_Click()

On Error GoTo 结束查询

If 查询内容 <> "" And IsNull(查询内容) = False And 查询字段 <> "" And IsNull(查询字段) = False Then

Me.数据表子窗体.Form.Filter = Me.查询字段 & " like '*" & Me.查询内容 & "*'"

Me.数据表子窗体.Form.FilterOn = True

Me.数据表子窗体.Requery

Else

Me.数据表子窗体.Form.FilterOn = False

Me.数据表子窗体.Requery

End If

Me.数据表子窗体.SetFocus

Exit Sub

结束查询:

MsgBox Err.Description

End Sub

Private Sub Command清空_Click()

考场名称.Value = ""

考场座位.Value = ""

状态.Value = ""

End Sub

Private Sub Command全部_Click()

Me.数据表子窗体.Form.FilterOn = False

Me.数据表子窗体.Requery

End Sub

Private Sub Command添加_Click()

If 考场名称 = "" Or IsNull(考场名称) = True Then

MsgBox "考场名称值为空!"

Exit Sub

End If

If 考场座位 = "" Or IsNull(考场座位) = True Then

MsgBox "考场座位值为空!"

Exit Sub

End If

If 状态 = "" Or IsNull(状态) = True Then

MsgBox "状态值为空!"

Exit Sub

End If

If Nz(DCount("考场名称", "考场表", "考场名称='" & Me.考场名称 & "' and 考场座位='" & Me.考场座位 & "'"), 0) > 0 Then

MsgBox "该考场名称座位已存在!不能重复"

Exit Sub

End If

On Error Resume Next

DoCmd.SetWarnings (False)

Dim add_sql As String

add_sql = "Insert Into 考场表 (考场名称,考场座位,状态) Values ('" & 考场名称 & "','" & 考场座位 & "','" & 状态 & "')"

DoCmd.RunSQL add_sql

MsgBox "添加完成"

Me.数据表子窗体.Form.Requery

End Sub

考试信息管理

Private Sub Command更新_Click()

If 考试名称.Value <> "" And 科目.Value <> "" And 考试日期.Value <> "" And 考试时间.Value <> "" Then

On Error GoTo 数据更新前提醒_Err

DoCmd.RunCommand acCmdSaveRecord

Else

MsgBox "考试名称,科目,考试日期,考试时间都不能为空"

On Error Resume Next

DoCmd.RunCommand acCmdUndo

Exit Sub

End If

数据更新前提醒_Exit:

Exit Sub

数据更新前提醒_Err:

MsgBox Error$

Resume 数据更新前提醒_Exit

End Sub

Private Sub Command删除_Click()

On Error Resume Next

DoCmd.RunCommand acCmdSaveRecord

DoCmd.SetWarnings (False)

If MsgBox("是否删除该记录:" & Me.考试名称, vbYesNo) = vbYes Then

DoCmd.SetWarnings (False)

Dim del_sql As String

del_sql = "Delete From 考试表 Where 考试名称 = '" & Me.考试名称 & "'"

DoCmd.RunSQL del_sql

MsgBox "删除成功"

Forms("系统主页").显示界面子窗体.Form.数据表子窗体.Form.Requery

DoCmd.Close acForm, Me.Name

Else

Exit Sub

End If

If Error.Number <> 0 Then

MsgBox Error.Description

End If

End Sub

Private Sub Form_BeforeUpdate(Cancel As Integer)

If 考试名称.Value <> "" And 科目.Value <> "" And 考试日期.Value <> "" And 考试时间.Value <> "" Then

On Error GoTo 数据更新前提醒_Err

If (MsgBox("是否保存对记录的修改", 1, "修改记录提醒") = 1) Then

Beep

Else

DoCmd.RunCommand acCmdUndo

End If

Else

MsgBox "考试名称,科目,考试日期,考试时间都不能为空"

On Error Resume Next

DoCmd.RunCommand acCmdUndo

Exit Sub

End If

数据更新前提醒_Exit:

Exit Sub

数据更新前提醒_Err:

MsgBox Error$

Resume 数据更新前提醒_Exit

End Sub

学生管理

Private Sub Command报表_Click()

If Me.数据表子窗体.Form.FilterOn = True Then

DoCmd.OpenReport "学生报表", acViewReport, , Me.数据表子窗体.Form.Filter

Else

DoCmd.OpenReport "学生报表", acViewReport

End If

End Sub

Private Sub Command查询_Click()

On Error GoTo 结束查询

If 查询内容 <> "" And IsNull(查询内容) = False And 查询字段 <> "" And IsNull(查询字段) = False Then

Me.数据表子窗体.Form.Filter = Me.查询字段 & " like '*" & Me.查询内容 & "*'"

Me.数据表子窗体.Form.FilterOn = True

Me.数据表子窗体.Requery

Else

Me.数据表子窗体.Form.FilterOn = False

Me.数据表子窗体.Requery

End If

Me.数据表子窗体.SetFocus

Exit Sub

结束查询:

MsgBox Err.Description

End Sub

Private Sub Command清空_Click()

学号.Value = ""

姓名.Value = ""

性别.Value = ""

班级.Value = ""

End Sub

Private Sub Command全部_Click()

Me.数据表子窗体.Form.FilterOn = False

Me.数据表子窗体.Requery

End Sub

Private Sub Command添加_Click()

If 学号 = "" Or IsNull(学号) = True Then

MsgBox "学号值为空!"

Exit Sub

End If

If 姓名 = "" Or IsNull(姓名) = True Then

MsgBox "姓名值为空!"

Exit Sub

End If

If 性别 = "" Or IsNull(性别) = True Then

MsgBox "性别值为空!"

Exit Sub

End If

If 班级 = "" Or IsNull(班级) = True Then

MsgBox "班级值为空!"

Exit Sub

End If

If Nz(DCount("学号", "学生表", "学号='" & Me.学号 & "'"), 0) > 0 Then

MsgBox "该学号已存在!不能重复"

Exit Sub

End If

On Error Resume Next

DoCmd.SetWarnings (False)

Dim add_sql As String

add_sql = "Insert Into 学生表 (学号,姓名,性别,班级) Values ('" & 学号 & "','" & 姓名 & "','" & 性别 & "','" & 班级 & "')"

DoCmd.RunSQL add_sql

MsgBox "添加完成"

Me.数据表子窗体.Form.Requery

End Sub

学生数据表

Private Sub Form_BeforeUpdate(Cancel As Integer)

If 学号.Value <> "" And 姓名.Value <> "" And 性别.Value <> "" And 班级.Value <> "" Then

On Error GoTo 数据更新前提醒_Err

If (MsgBox("是否保存对记录的修改", 1, "修改记录提醒") = 1) Then

Beep

Else

DoCmd.RunCommand acCmdUndo

End If

Else

MsgBox "学号,姓名,性别,班级都不能为空"

On Error Resume Next

DoCmd.RunCommand acCmdUndo

Exit Sub

End If

数据更新前提醒_Exit:

Exit Sub

数据更新前提醒_Err:

MsgBox Error$

Resume 数据更新前提醒_Exit

End Sub

Private Sub 学号_DblClick(Cancel As Integer)

DoCmd.OpenForm "学生信息管理", acNormal, , "学号='" & 学号 & "'"

End Sub

学生信息管理

Private Sub Command更新_Click()

If 学号.Value <> "" And 姓名.Value <> "" And 性别.Value <> "" And 班级.Value <> "" Then

On Error GoTo 数据更新前提醒_Err

DoCmd.RunCommand acCmdSaveRecord

Else

MsgBox "学号,姓名,性别,班级都不能为空"

On Error Resume Next

DoCmd.RunCommand acCmdUndo

Exit Sub

End If

数据更新前提醒_Exit:

Exit Sub

数据更新前提醒_Err:

MsgBox Error$

Resume 数据更新前提醒_Exit

End Sub

Private Sub Command删除_Click()

On Error Resume Next

DoCmd.RunCommand acCmdSaveRecord

DoCmd.SetWarnings (False)

If MsgBox("是否删除该记录:" & Me.学号, vbYesNo) = vbYes Then

DoCmd.SetWarnings (False)

Dim del_sql As String

del_sql = "Delete From 学生表 Where 学号 = '" & Me.学号 & "'"

DoCmd.RunSQL del_sql

MsgBox "删除成功"

Forms("系统主页").显示界面子窗体.Form.数据表子窗体.Form.Requery

DoCmd.Close acForm, Me.Name

Else

Exit Sub

End If

If Error.Number <> 0 Then

MsgBox Error.Description

End If

End Sub

Private Sub Form_BeforeUpdate(Cancel As Integer)

If 学号.Value <> "" And 姓名.Value <> "" And 性别.Value <> "" And 班级.Value <> "" Then

On Error GoTo 数据更新前提醒_Err

If (MsgBox("是否保存对记录的修改", 1, "修改记录提醒") = 1) Then

Beep

Else

DoCmd.RunCommand acCmdUndo

End If

Else

MsgBox "学号,姓名,性别,班级都不能为空"

On Error Resume Next

DoCmd.RunCommand acCmdUndo

Exit Sub

End If

数据更新前提醒_Exit:

Exit Sub

数据更新前提醒_Err:

MsgBox Error$

Resume 数据更新前提醒_Exit

End Sub

如果需要做好的数据库系统文件和全部设计资料,可访问同名↓获取

考试管理系统智慧校园,学生考试管理系统