EXCEL VBA学生成绩管理系统教程.pdf
《EXCEL VBA学生成绩管理系统教程.pdf》由会员分享,可在线阅读,更多相关《EXCEL VBA学生成绩管理系统教程.pdf(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 学生成绩管理系统学生成绩管理系统 1.1 学生成绩管理系统的总体设计 1.2 班级管理模块的设计 1.3 学生名单管理模块的设计 1.4 管理学生成绩模块的设计 1.5 查询学生成绩模块的设计 1.6 成绩统计分析模块的设计 1.7 打印成绩单模块的设计 1.1 学生成绩管理系统的总体设计 对学生考试成绩的管理,是每个学校重要的日常管理工作之一。由于每个学校的考试面广,参加人数多,如果人工管理学生成绩,将会降低学校的运作效率。而利用 Excel VBA开发一个学生成绩管理系统,则可大大提高管理效率。1.1.1 学生成绩管理系统的构成模块 本章介绍的学生成绩管理系统的模块构成如图 1-1 所示
2、。本系统由“班级管理”、“学生名单管理”、“登记学生成绩”、“查询学生成绩”、“成绩统计分析”和“打印成绩单”6个模块构成。各个模块的功能介绍如下。学生成绩管理系统 班级管理 学生名单管理 登记学生成绩查询学生成绩成绩统计分析 打印成绩单 图 1-1 学生成绩管理系统 (1)班级管理:设置各个年级的班级名称。(2)学生名单管理:用于管理各班级的学生信息,包括学生的学号、姓名、性别等基本信息。(3)登记学生成绩:完成学生各学科考试成绩的登记、修改等功能。(4)查询学生成绩:根据设定的条件查询学生成绩。(5)成绩统计分析:对各班、各年级的学生考试成绩进行统计分析。(6)打印成绩单:将学生的考试成绩
3、按班级生成成绩单,并打印出来。1.1.2 学生成绩管理系统的工作簿设计 建立一个名称为“学生成绩管理系统”的工作簿,将此工作簿的一个工作表重命名为“首页”,在此工作表中插入一个自己喜欢的背景图片。插入一个艺术字“学生成绩管理系统”并设置其格式。插入 6 个自选图形(矩形),分别在这 6 个自选图形中添加文字,添加的文字分别为“管理学生名单”、“管理学生成绩”、“查询学生成绩”、“成绩统计分析”、“打印成绩单”和“班级管理”,设置自选图形和文字的格式。插入其他的用于修饰界面的自选图形,并设置其格式。最后的界面如图 1-2 所示。2 数据列表管理与应用 学生成绩管理系统 图 1-2 学生成绩管理系
4、统界面 1.1.3 为自选图形按钮指定宏 为了在单击首页工作表的 6 个自选图形时,能够执行相应的操作,为这 6 个自选图形指定如下的宏,并将它们保存在一个名称为“自定义按钮的指定宏”的标准模块中。Sub 管理学生名单()管理学生名单按钮 学生管理窗口.Show End Sub Sub 管理学生成绩()管理学生成绩按钮 学生成绩管理窗口.Show End Sub Sub 查询学生成绩()查询学生成绩按钮 学生成绩查询窗口.Show End Sub Sub 成绩统计分析()成绩统计分析按钮 成绩统计分析窗口.Show End Sub Sub 打印成绩单()打印成绩单按钮 打印成绩单窗口.Show
5、 End Sub Sub 班级管理()班级管理按钮 Worksheets(班级管理).Visible=True 显示工作表班级管理 Worksheets(班级管理).Activate 激活工作表班级管理 End Sub 1.1.4 为工作簿对象编写有关的事件程序 为了在打开系统工作簿时,自动激活“首页”工作表,并将该工作表进行保护。同时 3 将工作簿中除“首页”工作表外的所有工作表隐藏起来,以保护其中的数据(如果用户需要查看某工作表的数据,可以在相应窗体进行有关操作,使隐藏的工作表显示出来)。因此,为工作簿对象设置 Open 事件,程序代码如下:Private Sub Workbook_Ope
6、n()Dim i As Integer Worksheets(首页).Activate 激活工作表首页 Worksheets(首页).Protect 保护工作表首页 For i=1 To Worksheets.Count If Worksheets(i).Name 首页 Then Worksheets(i).Visible=False 保护除工作表首页外的所有工作表 End If Next i End Sub 由于在操作时,对学生考试成绩进行了录入、修改等操作,而学生成绩都保存在本系统工作簿的有关工作表中,因此,在关闭系统工作簿之前,要先保存工作簿,为此,对工作簿对象设置 BeforeClos
7、e 事件,程序代码如下:Private Sub Workbook_BeforeClose(Cancel As Boolean)ThisWorkbook.Close SaveChanges:=True End Sub 此外,在操作时,我们会激活某些工作表并查看数据,这样,为了能够返回“首页”工作表,并隐藏其他的工作表,应该为工作簿的所有工作表都设置一个能够返回“首页”工作表的事件。为工作簿对象设置 SheetBeforeRightClick 事件,即单击鼠标右键激活“首页”工作表。工作簿对象的 SheetBeforeRightClick 事件程序代码如下:Private Sub Workbook
8、_SheetBeforeRightClick(ByVal Sh As Object,_ ByVal Target As Range,Cancel As Boolean)Dim i As Integer Cancel=True For i=1 To Worksheets.Count If Worksheets(i).Name 首页 Then Worksheets(i).Visible=False End If Next i Worksheets(首页).Activate End Sub 1.1.5 保护工作表 为了保护“首页”工作表的各个自选图形及其布置,应该对此工作表进行保护。在设计好工作表后
9、,可以通过手工的方法对工作表进行保护。为了保险起见,在工作簿对象的Open 事件程序中,也同时对工作表进行保护。1.1.6 定义公共变量 定义下面几个公共变量,它们保存在一个名称为“公共变量”的标准模块中:Public ClassName 保存班级名称的数组变量 Public Class 保存年级名称的数组变量 Public n 保存某年级下的班级数目的数组变量 Public m As Integer 保存年级数目 Public p As Integer 保存某班级学生人数 4 数据列表管理与应用 学生成绩管理系统 1.2 班级管理模块的设计 班级管理模块的功能是对各个年级的班级名字进行管理。
10、班级管理是通过一个工作表“班级管理”进行的。“班级管理”工作表的结构如图 1-3 所示。图 1-3 “班级管理”工作表 在“班级管理”工作表中,第 1 行保存年级名称,如“初一”、“初二”、“初三”、,在年级名称对应的各列分别保存个年级的班级名称,如“1 班”、“2 班”、“3 班”、。这样设计是为了便于操作各个班级学生成绩工作表。在“首页”工作表中单击“班级管理”图形按钮,即可激活“班级管理”工作表。1.3 学生名单管理模块的设计 学生名单管理模块的功能是激活各个班级工作表并输入或修改学生的基本信息,包括“学号”、“姓名”、“性别”等基本信息。而各个班级工作表可以编写程序自动创建。学生名单管
11、理模块的这些功能是通过一个“管理学生名单”窗体完成的。1.3.1 “管理学生名单”窗体的结构设计“管理学生名单”窗体的结构如图 1-4 所示。在此窗体上,有 2 个框架、1 个 TreeView控件、1 个标签和 3 个命令按钮。各个控件的功能及属性设置说明如下。图 1-4 “管理学生名单”窗体结构 5 (1)用户窗体:名称属性设置为“学生管理窗口”,Caption 属性设置为“管理学生名单”。将用户窗体的 ShowModal 属性设置为 False,即设置为无模式窗体,以便在运行窗体后,仍可以操作工作表。(2)2 个框架:用于将不同功能的控件组合在一起,其 Caption 属性分别设置为“选
12、择班级”和“创建班级工作表”。(3)1 个 TreeView 控件:名称为 TreeView1,用于显示各个年级的各个班级名称,分两级节点显示,一级节点是年级名称,二级节点是班级名称。(4)1 个标签:显示说明文字,其 Caption 属性设置为“如果还没有班级工作表,就单击此按钮”。(5)命令按钮“创建班级工作表”:单击此按钮,系统将自动创建班级工作表,其名称属性和 Caption 属性均设置为“创建班级工作表”。(6)命令按钮“重新选择”:单击此按钮,系统将 TreeView 控件中的节点收缩,以便用户重新选择班级工作表,其名称属性和 Caption 属性均设置为“重新选择”。(7)命令按
13、钮“退出”:单击此按钮,就关闭窗体,其名称属性和 Caption 属性均设置为“退出”。1.3.2 班级工作表结构设计 班级工作表是保存各个班级的学生基本信息和各科考试成绩的工作表,可以通过单击命令按钮“创建班级工作表”自动创建。班级工作表的结构如图 1-5 所示。当创建完各个班级工作表后,就可以激活某个班级工作表,在班级工作表中输入学生的基本信息。学生的“学号”、“姓名”、“性别”等基本信息是通过工作表输入的,这样设计的好处是可以充分利用 Excel 的工具实现数据的快速输入,比如学号是有规律的序列号,可以采用填充复制的方法输入学号。图 1-5 各个班级工作表的结构 1.3.3 “管理学生名
14、单”窗体的程序代码设计(1)首先为用户窗体设置Initialize 事件,当启动窗体时,查询年级数和班级数,为TreeView1设置节点。程序代码如下:6 数据列表管理与应用 学生成绩管理系统 Private Sub UserForm_Initialize()Dim i As Integer,j As Integer Call 年级班级 清除原有的节点 TreeView1.Nodes.Clear 设置 TreeView1 控件的属性 TreeView1.LineStyle=tvwRootLines TreeView1.Style=tvwTreelinesPlusMinusText TreeVi
15、ew1.LabelEdit=tvwManual 添加一级节点(年级)For j=1 To m Set nodx=TreeView1.Nodes.Add(,Class(j),Class(j)Next j 添加二级节点(班级)For j=1 To m For i=1 To n(j)Set nodx=TreeView1.Nodes.Add(Class(j),_ tvwChild,Class(j)&Space(1)&ClassName(j,i),ClassName(j,i)Next i Next j End Sub 这里,子程序“年级班级”的功能是查询年级名称和班级名称,并保存在数组变量中。这个子程序
16、保存在一个名称为“公共子程序”的标准模块中。程序代码如下:Public Sub 年级班级()Dim i As Integer,j As Integer,nmax As Integer Dim ws As Worksheet 获取年级个数和班级个数 Set ws=Worksheets(班级管理)m=ws.Range(IV1).End(xlToLeft).Column ReDim n(1 To m)As Integer ReDim Class(1 To m)As String 获取各年级的最大班级数目 nmax=ws.UsedRange.Rows.Count-1 ReDim ClassName(1
17、 To m,1 To nmax)As String 保存班级名称 For j=1 To m n(j)=ws.Cells(65536,j).End(xlUp).Row-1 Class(j)=ws.Cells(1,j)For i=1 To n(j)ClassName(j,i)=ws.Cells(1+i,j)Next i Next j End Sub(2)为 TreeView1 设置 NodeClick 事件,当单击某个班级节点时,激活某班级工作表。程序代码如下:Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)On Err
18、or Resume Next 显示并激活某班级工作表 Worksheets(Node.Key).Visible=True Worksheets(Node.Key).Activate End Sub(3)为“重新选择”按钮设置 Click 事件,当单击此按钮时,收缩 TreeView 控件的节点,以便用户重新选择班级工作表。程序代码如下:7 Private Sub 重新选择_Click()收缩班级节点 Dim i As Integer For i=1 To TreeView1.Nodes.Count TreeView1.Nodes(i).Expanded=False Next i End Sub
19、(4)为“创建班级工作表”按钮设置 Click 事件,当单击此按钮时,系统将自动创建班级工作表,并输入工作表的标题数据。程序代码如下:Private Sub 创建班级工作表_Click()On Error Resume Next Dim ws As Worksheet Dim i As Integer,j As Integer 创建班级工作表,工作表名称格式为年级名班级名 For j=1 To m For i=1 To n(j)Set ws=Worksheets(Class(j)&Space(1)&ClassName(j,i)If ws Is Nothing Then 如果没有该工作表,就创建
20、它 Worksheets.Add After:=Worksheets(Worksheets.Count)ActiveSheet.Name=Class(j)&Space(1)&ClassName(j,i)输入标题数据 Range(A1:K1).Select Selection=Array(学号,姓名,性别,数学,语文,_ 英语,物理,化学,生物,体育,总分)Selection.HorizontalAlignment=xlCenter 标题文字居中 Columns(A:A).NumberFormatLocal=A 列数据为文本 End If Next i Next j Worksheets(首页)
21、.Activate ActiveSheet.Range(A2).Select End Sub(5)为“退出”设置 Click 事件,当单击此按钮时就关闭窗体。程序代码如下:Private Sub 退出_Click()End End Sub 1.3.4 学生名单管理模块的应用举例 单击“首页”工作表的“管理学生名单”图形按钮,可打开“管理学生名单”窗体,如图 1-6 所示。如果还没有各个班级的工作表,就单击“创建班级工作表”按钮,创建各个班级工作表。单击左边控件中的某个年级,展开年级节点,选择要操作的班级名,则系统就自动激活该班级节点对应的工作表,如图 1-7 所示,此时可以单击“退出”按钮关闭
22、窗体后在该工作表中直接输入学生信息,也可以不关闭窗体而直接在该工作表中输入学生信息(因为窗体被设置成了无模式窗体),如图 1-8 所示。输入完毕后,可以按【Ctrl+S】组合键或单击【保存】按钮将工作簿进行保存。当全部学生的基本信息输入完毕后,就可以在当前工作表中单击鼠标右键,返回到“首页”工作表。8 数据列表管理与应用 学生成绩管理系统 图 1-6 启动“管理学生名单”窗体 图 1-7 选择班级名称 图 1-8 不关闭窗体,在班级工作表中直接输入学生基本信息 1.4 管理学生成绩模块的设计 管理学生成绩模块的功能是输入和修改各个班级学生的考试成绩。管理学生成绩模块的功能是通过一个“学生成绩管
23、理”窗体完成的。1.4.1 “学生成绩管理”窗体的结构设计“学生成绩管理”窗体的结构如图 1-9 所示。在此窗体上,有 3 个框架、1 个 TreeView控件、12 个标签、12 个文本框和 4 个命令按钮。各个控件的功能及属性设置说明如下。(1)用户窗体:名称属性设置为“学生成绩管理窗口”,Caption 属性设置为“学生成绩管理”。将用户窗体的 ShowModal 属性设置为 False,即设置为无模式窗体,以便在运行窗体后,仍可操作工作表。(2)3 个框架:用于将不同功能的控件组合在一起,其 Caption 属性分别设置为“选择学生”、“学生基本信息”和“学生考试成绩”。(3)1 个
24、TreeView 控件:名称为 TreeView1,用于显示各个年级、各个班级的各个学生姓名,分 3 级节点显示,一级节点是年级名称,二级节点是班级名称,三级节点是学生姓名。9 图 1-9 “学生成绩管理”窗体(4)12 个标签:用于对 12 个文本框的功能进行说明,其 Caption 属性的设置情况如图 1-9 所示。(5)12 个文本框:分别用于显示或输入学生的基本信息和各科的考试成绩,其名称属性分别设置为“学号”、“姓名”、“性别”、“班级”、“数学”、“语文”、“英语”、“物理”、“化学”、“生物”、“体育”和“总分”。(6)命令按钮“重选学生”:单击此按钮,系统将 TreeView
25、控件中的节点收缩,以便用户重新选择学生,其名称属性和 Caption 属性均设置为“重选学生”。(7)命令按钮“输入新学生”:单击此按钮,系统将窗体文本框中的学生信息数据清除(但保留班级文本框的数据),以输入新的学生信息,其名称属性和 Caption 属性均设置为“输入新学生”。(8)命令按钮“添加/修改”:单击此按钮,系统将输入的学生考试成绩保存到该学生所在的班级工作表中,其名称属性设置为“添加/修改”,Caption 属性设置为“添加/修改”。此外,在按钮中插入一个图片(通过设置其 Picture 属性来插入图片),并将PicturePosition 属性设置为 fmPicturePosi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EXCEL VBA学生成绩管理系统教程 VBA 学生 成绩管理系统 教程
限制150内