首页 理论教育 Access数据库基础与应用教程指南成绩

Access数据库基础与应用教程指南成绩

时间:2023-11-05 理论教育 版权反馈
【摘要】:“成绩管理”模块是系统的核心模块,包含“成绩录入”和“成绩查询打印”两个子模块。“成绩录入”子模块通过“成绩输入”窗体实现,其中较多地使用了VBA数据库编程。下面对成绩管理模块的各个子模块的详细设计过程分别进行说明。“学期综合成绩交叉表”查询的设计视图如图10-22所示。

Access数据库基础与应用教程指南成绩

“成绩管理”模块是系统的核心模块,包含“成绩录入”和“成绩查询打印”两个子模块。“成绩录入”子模块通过“成绩输入”窗体实现,其中较多地使用了VBA数据库编程。“成绩查询打印”子模块实现了两种查询方式:一种是按班级查单科课程的成绩,另一种是按班级和开课学期查所有已录入了成绩的课程的成绩。为了实现按班级查单科课程成绩的功能,设计了“单科成绩查询”窗体和“单科成绩”查询。为了实现按班级和开课学期查所有课程成绩的功能,设计了“学期综合成绩查询”窗体。“学期综合成绩查询”窗体的功能是用VBA代码实现的。设计了两个起辅助作用的查询:“学期综合成绩交叉表”和“学期课程门数”,将这两个查询的SQL视图中的SQL语句复制到模块的代码中,提高了编写代码的效率。交叉表查询很有特色,功能比较强大,读者学习中应该重点掌握。“学期课程门数”查询的功能是查指定班级、指定学期已经录入了成绩的课程的门数。

下面对成绩管理模块的各个子模块的详细设计过程分别进行说明。

1.“成绩录入”子模块的设计与实现

和“学生数据的录入修改”子模块一样,通常,成绩录入都是以班级和课程为单位来进行的。在系统运行中,“成绩”表中的记录数最大,它保存了学院所有学生各门课程的成绩。要注意的是,不能直接以“成绩”表为记录源来实现成绩录入窗体,这是因为需要按照班级和课程筛选出相关记录,如果某班级指定课程的成绩已经录入,则能筛选到记录,筛选后修改即可。但是如果成绩还没有录入,则筛选不到记录,窗体视图中看不到相关记录,怎么录入成绩呢?我们可能会想到,逐条追加记录,这样的话,需要录入学号和课程编号,系统将很难使用。另外,直接以“成绩”表为记录源时,录入成绩的窗体中看不到学生的姓名,很不直观,所以通过编写模块代码,将窗体的记录源指定为一个条件查询语句来实现成绩录入窗体的功能。我们知道查询不仅可以查找数据,同时还可以更新源表,因此,这样设计的成绩输入窗体,能够方便地输入成绩数据。

(1)“成绩输入”窗体设计

“成绩输入”窗体是一个表格式窗体,在窗体页眉节放置两个组合框,分别用来选择班级和课程,两个组合框的名称分别为Combo_className和Combo_courseName。代码中根据组合框的值来构造窗体记录源查询语句的查询条件,并将此SQL语句设置为窗体记录源。如果“成绩”表中存在相关记录,说明成绩已经录入,窗体显示成绩数据后即可进行修改。如果成绩表中无相关记录,说明成绩还未录入(当然可能的情况还有班级数据存在而班级学生数据尚未录入,代码应给予明确的提示),此时查找学生表中该班级的学生记录,同时在成绩表中插入相关记录用来录入成绩,插入记录后同样将窗体的记录源设置为SQL查询语句,运行代码后,窗体中显示相关记录,即可录入成绩。此窗体的设计视图和窗体视图如图10-18和图10-19所示。

978-7-111-45056-6-Chapter10-29.jpg

图10-18 “成绩输入”窗体的设计视图

(2)“成绩输入”窗体的窗体模块代码

978-7-111-45056-6-Chapter10-30.jpg

图10-19 “成绩输入”窗体的窗体视图

978-7-111-45056-6-Chapter10-31.jpg

978-7-111-45056-6-Chapter10-32.jpg

978-7-111-45056-6-Chapter10-33.jpg

978-7-111-45056-6-Chapter10-34.jpg

2.“成绩查询打印”子模块的设计与实现

“成绩查询打印”子模块实现了两种查询方式:一种是按班级查单科课程的成绩;另一种是按班级和开课学期查已录入成绩课程的成绩。第一种查询方式的实现通过“单科成绩查询”窗体和“单科成绩”查询来完成。第二种查询方式的实现通过“学期综合成绩查询”窗体来完成。

(1)“单科成绩”查询的设计

“单科成绩”查询的设计视图如图10-20所示。

978-7-111-45056-6-Chapter10-35.jpg

图10-20 “单科成绩”查询的设计视图

(2)“单科成绩查询”窗体的设计

“单科成绩查询”窗体以“单科成绩”查询的SQL语句为记录源,窗体的设计视图如图10-21所示。该窗体的模块代码请从系统中查看。

978-7-111-45056-6-Chapter10-36.jpg

图10-21 “单科成绩查询”窗体的设计视图

(3)“学期综合成绩查询”窗体的设计

“学期综合成绩查询”窗体的功能是用VBA代码实现的,为了提高编写效率,设计了两个起辅助作用的查询:“学期综合成绩交叉表”和“学期课程门数”,并将这两个查询的SQL视图中的SQL语句复制到模块的代码中。“学期综合成绩交叉表”是交叉表查询,目的是查班级指定学期已录入成绩课程的成绩。“学期课程门数”查询是选择查询,目的是查班级指定学期已录入成绩的课程门数。需要说明的是,窗体模块代码需要根据班级名称和开课学期的选择来构造查询语句的查询条件,这也是在这两个查询的设计视图中看不到查询条件的原因。

由于同一学期各个班级开设的课程不同,开课门数不同,因此查询结果的显示方式是设计的难点。假设不是以代码方式,而是以班级名称和开课学期为条件设计交叉表查询,以学号、姓名做行标题、课程名称做列标题,在交叉格中显示成绩,设计要求可以做到。但当条件不同,即班级和学期不同时,查询结果的列数不同,之后进入窗体设计视图设计窗体时,窗体的记录源如何指定?绑定型控件又怎样选择?显然以交叉表查询为记录源无法完成查询窗体的设计。

代码思路:在窗体模块代码中,执行交叉表查询语句,条件是指定的班级和学期,交叉表的行标题是学号、姓名,列标题是课程名称,交叉格显示成绩,查询结果通过列表框控件来显示,其中,列表框的行来源类型设置为“表/查询”,行来源设置为这个交叉表查询的SQL语句,根据查到的班级学期已录入成绩的课程门数来动态设置列表框的列数,这样就可以通过这个列表框来显示查询结果。这是“学期综合成绩查询”窗体设计的主要特点。“学期综合成绩交叉表”查询的设计视图如图10-22所示。“学期课程门数”查询的设计视图如图10-23所示。

978-7-111-45056-6-Chapter10-37.jpg(www.xing528.com)

图10-22 “学期综合成绩交叉表”查询的设计视图

978-7-111-45056-6-Chapter10-38.jpg

图10-23 “学期课程门数”查询的设计视图

“学期综合成绩查询”窗体的设计视图如图10-24所示,窗体视图如图10-25所示。

978-7-111-45056-6-Chapter10-39.jpg

图10-24 “学期综合成绩查询”窗体的设计视图

978-7-111-45056-6-Chapter10-40.jpg

图10-25 “学期综合成绩查询”窗体的窗体视图

(4)“学期综合成绩查询”窗体的窗体模块代码

978-7-111-45056-6-Chapter10-41.jpg

978-7-111-45056-6-Chapter10-42.jpg

978-7-111-45056-6-Chapter10-43.jpg

(5)成绩打印功能的设计

成绩打印实现了两个基本功能:①按班级打印单科课程的成绩,此功能通过“单科成绩”查询和“单科成绩”报表来完成;②按班级打印指定学期已录入成绩的课程的成绩,此功能通过“学期综合成绩”查询和“学期综合成绩”报表来完成。下面分别做简单介绍。

1)“单科成绩”报表的设计。“单科成绩”报表以前面讲述过的“单科成绩”查询为记录源,在运行报表时自动运行记录源的查询。在“打开报表”按钮事件宏的设计中实现按班级和课程对成绩记录的筛选功能。进入报表视图后显示筛选记录,切换至打印预览视图后即可打印查询到的成绩数据。“单科成绩”报表的设计视图和报表视图分别如图10-26和图10-27所示,“打开报表”按钮事件的嵌入宏的代码结构如图10-28所示。

978-7-111-45056-6-Chapter10-44.jpg

图10-26 “单科成绩”报表的设计视图

978-7-111-45056-6-Chapter10-45.jpg

图10-27 “单科成绩”报表的报表视图

978-7-111-45056-6-Chapter10-46.jpg

图10-28 “打开报表”按钮事件的嵌入宏的代码结构

2)“学期综合成绩”查询的设计。“学期综合成绩”查询的设计视图如图10-29所示。

978-7-111-45056-6-Chapter10-47.jpg

图10-29 “学期综合成绩”查询的设计视图

3)“学期综合成绩”报表的设计。“学期综合成绩”报表以“学期综合成绩”查询为记录源,是一个分组报表,分组依据为“课程名称”,这样就能将一个班级某一学期所有课程的成绩在不同组中显示。在课程名称页眉节显示“课程名称”字段的值。在课程名称页脚节添加11个显示汇总结果的计算型控件用来输出汇总结果,包括课程的最高分、最低分和平均分以及各个分数段的人数、总人数、及格人数和及格率。“学期综合成绩”报表的设计视图和报表视图分别如图10-30和图10-31所示。

978-7-111-45056-6-Chapter10-48.jpg

图10-30 “学期综合成绩”报表的设计视图

978-7-111-45056-6-Chapter10-49.jpg

图10-31 “学期综合成绩”报表的报表视图

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈