Access数据库VBA编程实例通用成绩处理系统

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Access数据库VBA编程实例——通用成绩处理系统

诏安一中信息技术组吴瑶民

同学们通过学习高中选修课4《数据库管理技术》第四章“开发数据库应用系统”,已初步学会了简单应用系统的设计,为了让同学们能进一步提升开发能力,以学生熟知的成绩统计为实例,结合VBA编写通用成绩处理系统。

一、系统总体分析与设计

成绩录入采用EXCEL电子表格模板方式,各班以电子表格形式上缴年段,由年段汇总后导入通用成绩处理系统,然后由系统进行计算总分、排名次、质量分析后,通过导出功能导出EXCEL表格形式并打印出统计结果。录入成绩与打印成绩都在教师悉熟的EXCEL电子表格进行,方便教师操作,数据的统计与分析由系统自动完成,提高工作效率。

将上述模块设计图示化后我们便可以得到所示的系统功能模块图:

二、数据库分析与设计

1.数据库数据结构分析

通过对成绩统计过程分析及数据要求,创建该管理系统数据库,名为“通用成绩管理系统.mdb”,主要包含的数据表有“学生成绩”、“质量分析”两个表。“学生成绩”为EXCEL 格式的“学生成绩”通过导入模块生成,EXCEL格式的“学生成绩”格式如下:

“质量分析”表结构设计如下表:

2、窗体的设计与实现

窗体是Access 2003数据库系统的一个重要对象。前面介绍的数据导入、浏览记录、质量分析、显示查询结果、导出数据等都是在“数据表”视图中所进行的操作。

(1)通用成绩处理系统窗体:

图一

该窗体及命令按钮VBA代码:

Private Sub Form_Load()

MsgBox ("使用前先进入“使用帮助”,花几分钟阅读一下使用说明,会使你的工作事半功倍!")

End Sub

Private Sub 命令0_Click()

On Error GoTo err

Dim db As Database

Set db = CurrentDb()

For i = 0 To db.TableDefs.Count - 1

If db.TableDefs(i).Name = "学生成绩" Then

DoCmd.DeleteObject acTable, "学生成绩"

End If

Next i

Set db = Nothing

MsgBox ("请将要导入的文件置于“成绩统计”文件夹中,文件名必须是“学生成绩”") DoCmd.TransferSpreadsheet acImport, 8, "学生成绩", CurrentProject.Path & "\学生成绩.xls", True

MsgBox ("导入完成!")

Exit Sub

err:

MsgBox ("找不到文件或文件格式不对")

End Sub

Private Sub 命令11_Click()

DoCmd.OpenTable "学生成绩"

End Sub

Private Sub 命令12_Click()

MsgBox ("提示:00表示年段,01表示一班,02表示二班.....")

DoCmd.OpenTable "质量分析"

End Sub

Private Sub 命令13_Click()

DoCmd.OpenQuery "temp"

End Sub

Private Sub 命令15_Click()

FollowHyperlink CurrentProject.Path & "\功能说明.doc"

End Sub

Private Sub 命令22_Click()

DoCmd.Quit acQuitSaveAll

End Sub

Private Sub 命令6_Click()

DoCmd.OpenForm "质量分析"

End Sub

Private Sub 命令7_Click()

DoCmd.OpenForm "导出结果"

End Sub

(2)质量分析窗体

各命令按钮VBA代码:

Private Sub 命令10_Click()

Dim kmzf(15) As Double

Dim kmmc(15) As String

For i = 1 To 11

kmzf(i) = Val(Me.Controls("txtzf" & i).Value)

Next

kmmc(1) = "数学"

kmmc(2) = "语文"

kmmc(3) = "英语"

kmmc(4) = "物理"

kmmc(5) = "化学"

kmmc(6) = "地理"

kmmc(7) = "政治"

kmmc(8) = "历史"

kmmc(9) = "生物"

kmmc(10) = "文综"

kmmc(11) = "理综"

Dim k As String

tt = False

k = ""

'Dim db As DAO.Database '声明数据库对象变量

Set db = CurrentDb()

db.Execute "DELETE * FROM 质量分析;"

For i = 1 To 11

If Me.Controls("check" & i) <> 0 Then

Call 统计(kmmc(i), kmzf(i), "00") '算年段三率

For j = Val(TXTbjks.Value) To Val(TXTbjks.Value) + bjzs - 1 If j < 10 Then

k = "0" & CStr(j)

Call 统计(kmmc(i), kmzf(i), k) '算班级三率

Else

k = CStr(j)

Call 统计(kmmc(i), kmzf(i), k)

End If

Next j

End If

Next i

If tt = False Then

MsgBox ("统计完毕,请返回主菜单导出结果打印")

End If

End Sub

Private Sub 命令97_Click()

相关文档
最新文档