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

上传人:b****2 文档编号:2008976 上传时间:2022-10-26 格式:DOCX 页数:14 大小:127.81KB
下载 相关 举报
Access数据库VBA编程实例通用成绩处理系统.docx_第1页
第1页 / 共14页
Access数据库VBA编程实例通用成绩处理系统.docx_第2页
第2页 / 共14页
Access数据库VBA编程实例通用成绩处理系统.docx_第3页
第3页 / 共14页
Access数据库VBA编程实例通用成绩处理系统.docx_第4页
第4页 / 共14页
Access数据库VBA编程实例通用成绩处理系统.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

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

《Access数据库VBA编程实例通用成绩处理系统.docx》由会员分享,可在线阅读,更多相关《Access数据库VBA编程实例通用成绩处理系统.docx(14页珍藏版)》请在冰豆网上搜索。

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

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

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

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

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

一、系统总体分析与设计

成绩录入采用EXCEL电子表格模板方式,各班以电子表格形式上缴年段,由年段汇总后导入通用成绩处理系统,然后由系统进行计算总分、排名次、质量分析后,通过导出功能导出EXCEL表格形式并打印出统计结果。

录入成绩与打印成绩都在教师悉熟的EXCEL电子表格进行,方便教师操作,数据的统计与分析由系统自动完成,提高工作效率。

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

二、数据库分析与设计

1.数据库数据结构分析

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

“学生成绩”为EXCEL格式的“学生成绩”通过导入模块生成,EXCEL格式的“学生成绩”格式如下:

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

字段名称

数据类型

字段大小

小数位

班级

文本

2

科目

文本

8

与考人数

数字

长整形

自动

及格人数

数字

长整形

自动

高分人数

数字

长整形

自动

平均分

数字

单精度

2

及格率

数字

单精度

4

高分率

数字

单精度

4

2、窗体的设计与实现

窗体是Access2003数据库系统的一个重要对象。

前面介绍的数据导入、浏览记录、质量分析、显示查询结果、导出数据等都是在“数据表”视图中所进行的操作。

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

图一

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

PrivateSubForm_Load()

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

")

EndSub

PrivateSub命令0_Click()

OnErrorGoToerr

DimdbAsDatabase

Setdb=CurrentDb()

Fori=0Todb.TableDefs.Count-1

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

DoCmd.DeleteObjectacTable,"学生成绩"

EndIf

Nexti

Setdb=Nothing

MsgBox("请将要导入的文件置于“成绩统计”文件夹中,文件名必须是“学生成绩”")

DoCmd.TransferSpreadsheetacImport,8,"学生成绩",CurrentProject.Path&"\学生成绩.xls",True

MsgBox("导入完成!

")

ExitSub

err:

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

EndSub

PrivateSub命令11_Click()

DoCmd.OpenTable"学生成绩"

EndSub

PrivateSub命令12_Click()

MsgBox("提示:

00表示年段,01表示一班,02表示二班.....")

DoCmd.OpenTable"质量分析"

EndSub

PrivateSub命令13_Click()

DoCmd.OpenQuery"temp"

EndSub

PrivateSub命令15_Click()

FollowHyperlinkCurrentProject.Path&"\功能说明.doc"

EndSub

PrivateSub命令22_Click()

DoCmd.QuitacQuitSaveAll

EndSub

PrivateSub命令6_Click()

DoCmd.OpenForm"质量分析"

EndSub

PrivateSub命令7_Click()

DoCmd.OpenForm"导出结果"

EndSub

(2)质量分析窗体

各命令按钮VBA代码:

PrivateSub命令10_Click()

Dimkmzf(15)AsDouble

Dimkmmc(15)AsString

Fori=1To11

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)="理综"

DimkAsString

tt=False

k=""

'DimdbAsDAO.Database'声明数据库对象变量

Setdb=CurrentDb()

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

Fori=1To11

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

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

Forj=Val(TXTbjks.Value)ToVal(TXTbjks.Value)+bjzs-1

Ifj<10Then

k="0"&CStr(j)

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

Else

k=CStr(j)

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

EndIf

Nextj

EndIf

Nexti

Iftt=FalseThen

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

EndIf

EndSub

PrivateSub命令97_Click()

Call查询

EndSub

PrivateSub命令100_Click()

DoCmd.Close

EndSub

PrivateSub命令111_Click()

DimkkAsString

Call计算总分

Fori=Val(TXTbjks.Value)ToVal(TXTbjks.Value)+Val(txtbjzs.Value)-1

Debug.Printi

Ifi<10Then

kk="""0"&CStr(i)&"*"""

Else

kk=""""&CStr(i)&"*"""

EndIf

Debug.Printkk

CallRangBerechnen_bj("学生成绩",kk,"总分")

Nexti

MsgBox("处理完毕!

")

EndSub

PrivateSub命令98_Click()

tt=True

'Call计算总分

CallRangBerechnen("学生成绩","总分")'年段排名

Call查询

IfttThen

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

EndIf

EndSub

(3)导出结果窗体

各命令按钮VBA代码:

PrivateSub命令0_Click()

DoCmd.OutputToacOutputQuery,"temp",acFormatXLS,CurrentProject.Path&"\学生站队表.xls"

MsgBox"导出完毕!

结果为“成绩统计\学生站队表.xls”"

EndSub

PrivateSub命令1_Click()

DoCmd.OutputToacOutputTable,"质量分析",acFormatXLS,CurrentProject.Path&"\质量分析.xls"

MsgBox"导出完毕!

结果为“成绩统计\质量分析.xls”"

EndSub

PrivateSub命令3_Click()

DoCmd.Close

EndSub

(4)通用模块代码

PublicttAsBoolean

PubliciAsInteger

PublicjAsInteger

PublicstrAsString

PublicbjzsAsInteger

Publickmzf(15)'存放各科总分

Publickmmc(15)'存放科目名称

Sub统计(kmAsString,kmzfAsDouble,jjAsString)

DimsumAsLong

DimintIAsLong

DimavgAsSingle

DimgfliAsSingle

DimjgliAsSingle

DimstrsqlAsString

DimdbAsDAO.Database'声明数据库对象变量

DimrecNameAsDAO.Recordset'声明记录集对象变量

DimstrNameAsDAO.Field'声明字段对象变量

OnErrorGoTowrong

Setdb=CurrentDb()'指定数据库为当前数据库

Ifjj="00"Then

SetrecName=db.OpenRecordset("学生成绩")'计算年段

Else

SetrecName=db.OpenRecordset("select*from学生成绩where班号like"&""""&jj&"*"&"""")'计算班级

EndIf

SetstrName=recName.Fields(km)'指定记录集“科目”字段

'计算三率

jgrs=0'及格人数

sum=0'总分

gfrs=0'高分人数

intI=0'总人数

DoUntilrecName.EOF

sum=sum+IIf(IsNull(strName),0,strName)'将“科目”字段读入数组

IfstrName>=kmzf*0.6Then

jgrs=jgrs+1'及格人数

EndIf

IfstrName>=0.8*kmzfThen

gfrs=gfrs+1'高分的人数

EndIf

intI=intI+1'总人数

recName.MoveNext'读取记录集的下一行记录

Loop

avg=sum/intI'平均分

gfli=gfrs/intI'高分率

jgli=jgrs/intI'及格率

'写入“质量分析”表

SetrecName=db.OpenRecordset("质量分析")'将“”表读入记录集

recName.AddNew

recName.Fields(0)=jj

recName.Fields

(1)=km

recName.Fi

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1