第七章 学生成绩报告单
及成绩分析模板
? 7.1 设计目标
? 7.2 成绩报告表
? 7.3 成绩分析表
结束
7.1 设计目标
本应用实例的设计目标是:利用 Excel工作簿,以高校的系为单位,
将任意年级任意课程的成绩报告表和成绩统计分析输入、生成、存储、
打印、传送,实现学生成绩管理的微机化,为网络化管理打下基础。稍
加修改,可用于其它各级各类学校的学生成绩管理。
对于成绩报告表,利用事先做好的模板,只需输入每位学生的成绩,
系统将成绩自动按档次定位,使各分数段成绩一目了然。如果是考查成
绩,输入字母 a,b,c,d,e,系统自动转换为汉字“优秀”、“良好”、
“中等”、“及格”、“不及格”。单击“统计”按钮,系统自动统计
出全班的实考人数、各分数段人数、平均分、筛淘率并填入表格。
对于成绩分析,在已有表格框架的基础上,单击“统计”按钮,系
统自动对全年级所有班统计出实考人数、各分数段人数、百分比,求出
最高分、最低分、平均分,画出成绩分布曲线图。
模板工作簿主要包含“成绩报告表”工作表(每班一个)和“成绩
分析”工作表(整个年级一个)。
7.2 成绩报告表
每个班级的每门课需要一个成绩报告表
(或称成绩单),如果按年级和课程定义
工作簿,那么,工作簿中每个班对应一个
工作表。为便于程序控制,各成绩报告表
分别命名为“表 1”,表 2”, …… 。各班的
成绩报告表除了标题、学号、学生姓名不
同外,表的框架结构和统计方式都相同,
因此,我们只要设计出一个工作表,其余
的就可以复制产生。
?7.2.1 工作表设计
?7.2.2 工作表的复制和命

?7.2.3 工作簿代码设计
?7.2.4,统计, 按钮代码设

?7.2.5 运行结果
返回
进入 Excel,建立一个工作簿。
定义纸型、设置表格样式、设置单元
格式、设置列宽度、设置行高度。
在, 工具栏, 任意位置右击,打开
,控件工具栏,,在, 控件工具栏, 中选
择, 命令按钮,,在成绩报告表的右侧
(页边线外)适当位置单击,建立一个命
令按钮,右击新建的按钮,在快捷菜单中
选, 属性, 项,将 Caption属性设置为, 统
计,,并设置字体、字号、颜色和大小。
在设计好的工作表
选项卡上右击,选
,移动或复制工作
表,,然后选中, 建
立副本,,位置选
,移至最后,,单击
,确定, 按钮。
可同时选中多个工
作表进行复制。既按
住 Ctrl或 Shift键,再单
击工作表选择卡 。
为便于程序控制
各成绩报告表分别命名
为, 表 1”“表 2”,…… 。
整个工作簿用年级
和课程命名。如:成
绩单 00导论、成绩单 99
数字逻辑,可分别用
来表示 2000级, 计算机
科学导论, 课,1999级
,数字逻辑, 课的成
绩单工作簿。
为了在各“成绩报告表”中输入学生成绩时,系统能自动按档次定位,
使各分数段成绩直观明了,同时,对考查成绩,输入字母 a,b,c,d,e,
系统自动转换为汉字“优秀”、“良好”、“中等”、“及格”、“不及
格”。我们可以对工作簿的 SheetChange事件编程。 SheetChange在任意一个
工作表的内容改变时发生。
在菜单“工具 |宏”中选,Visual Basic编辑器”,进入 VBE,单击“工程
资源管理器”按钮,双击,ThisWorkBook” 模块,打开代码编辑窗口。
在菜单“工具 |宏”中选,Visual Basic编辑器”,进入 VBE,单击“工程
资源管理器”按钮,双击,ThisWorkBook” 模块,打开代码编辑窗口。
对工作簿 Workbook的 SheetChange事件编写具体代码 。
以上代码段首先求当出前工作表名,并根据当前单元格地址,求出列
字母和行号。如果是 C列或 F列(即成绩列),则取得当前单元格的值,值
有前导空格,说明已转换处理完毕,不再处理。否则,对考查课成绩(五
级分制),将 A,B,C,D,E转换为汉字“优秀”、“良好”、“中等”、
“及格”、“不及格”,并分别指定前导空格数 1,6,12,18,24,对考
试课成绩(百分制),直接根据分数段指定前导空格数 1,8,16,24,32。
最后重新按格式填写成绩。
每各成绩单工作表中都定义了一个, 统计, 命令按钮,
默认名为 CommandButton1,单击命令按钮,产生 Click事
件,通过下面代码调用 tj过程,完成统计功能。
Private Sub CommandButton1_Click()
Call tj '调用统计子程序
End Sub
在 VBE中选, 插入 |模块, 菜单,插入, 模块 1”,在
,模块 1”中定义一个过程 tj并编写具体代码。
在过程 tj中,首先定义实考人数、优秀人数、良好人
数、中等人数、及格人数、不及格人数和分数合计变量并
置初值。然后用双重循环,对 C列,F列,5行到 39行,取
出各单元格值,如果是有效的成绩(不空并且最左边的 5
个字符不是, 实考人数, ),则先将考查课成绩折合百分
制,再按分数段累加人数,最后,将统计结果填入特定的
单元格。为防止求, 平均分, 和, 筛淘率, 出错,当实考
人数为零时,将其赋予一个非零值(这里用, 99”)。
假如当前工作表是
,计算机系计算机应用
专业 2000级 5班,,, 计
算机科学导论, 课、
,2000-2001学年第一学
期, 的成绩报告表。在
已经输入了学号、姓名
和标题等信息的前提下,
输入学生成绩,系统自
动按分数段排列,单击
,统计, 按钮,自动将
统计结果。得到如图所
示的表格 。
菜单
7.3 成绩分析表
?7.3.1 工作表设计
?7.3.2, 统计”按钮代码设计
?7.3.3 运行结果
打开前面建立的成绩单工作簿,在“插入”菜单中选“工作表”
项,插入 一个新的工作表,将其命名为, 分析,,并调整到合适的位
置。
定义纸型、设置表格样式。 如图所示 。
在成绩分析表的右侧(页边线外)定义, 分数段,,, 人数,,
,班级数, 三项,前两项作为成绩分布曲线图的数据源,后一项用来
控制循环次数。
整个工作表单元格格式设置为, 数字作为文本处理, 。
在, 工具栏, 任意位置右击,打开, 控件工具栏,,在, 控件工具
栏, 中选择, 命令按钮,,在成绩分析表的右侧(页边线外)适当位
置单击,建立一个命令按钮,右击新建的按钮,在快捷菜单中选, 属
性, 项,将 Caption属性设置为, 统计,,并设置字体、字号、颜色和
大小。
成绩分布曲线图的设计:
选定, 分数段, 和, 人数, 下面的 K2:L12区域,单击, 常用, 工具栏
的, 图表向导,,在, 自定义类型, 选项卡中选择, 平滑直线图,,
单击, 下一步, 按钮,再击, 下一步,,在, 图例, 卡中取消, 显示
图例, 选择项,单击, 下一步,,选择将图表放置在当前工作表中,
单击, 完成, 。
将图表拖动到 A15单元格,右击图表区,在弹出菜单中选, 图表区格
式,,在, 图案, 卡中设置, 无, 边框,再右击图表区,在弹出菜单
中选, 图表选项,,在, 标题, 卡中输入图表标题, 学生考试成绩分
布曲线图,,, 分类, 轴标题为, 分数,,, 数值, 轴标题为, 人
数, 。
右击绘图区,在弹出菜单中选, 绘图区格式,,在, 图案, 卡中设
置, 无, 边框,区域颜色设置为白色。
返回
7.3.2,统计, 按钮代码设计
成绩分析工作表中定义了, 统计, 命令按钮,默认名为
CommandButton1,单击命令按钮,产生 Click事件,编写具体代码
完成统计功能。
在程序段开头定义了实考人数、优秀人数、良好人数、中
等人数、及格人数、不及格人数、分数合计、最高分、最低
分变量并赋初值,同时定义了一个数组 frs,用来存放各分数
段人数。
接然后,从 L14单元格取出班级数,每个班对应一个相同
结构的工作表。
下来用三重循环程序,对每个班成绩单工作表的 C列,F
列,5行到 39行,取出各单元格值,如果是有效的成绩(不空
并且最左边的 5个字符不是, 实考人数, ),则将考查课成绩
折合百分制,按 5段分数累加人数,再按 11段分数累加人数到
数组 frs,求出实考人数、最高分、最低分、总分。
最后,将统计结果填入特定的单元格。为防止求, 平均分,
和, 通过率, 出错,当实考 人数为零时,将其赋予一个非零
值(这里用, 99”)。
7.3.3 运行结果
假如当前工作簿中有计算机系计算机应用专
业 2000级 5,6,7三个班, 计算机科学导论, 课
的成绩报告表( 2000-2001学年第一学期),成
绩已输入完毕。现在只要在, 分析, 工作表中单
击, 统计, 按钮,系统便自动对全年级三个班统
计出实考人数、各分数段人数、百分比、最高分、
最低分、平均分,并画出成绩分布曲线图。
注意:某一年级某门课的成绩报告表和成绩
分析表建立之后,应该用, 文件, 的, 另存为,
项保存为工作簿。用年级和课程命名。如:成绩
单 00导论、成绩单 99数字逻辑,等等。