李伟乔 - 基于Excel的学生成绩管理系统设计(2) - 图文
更新时间:2024-02-03 17:24:01 阅读量: 教育文库 文档下载
- 李伟乔 女推荐度:
- 相关推荐
中南民族大学
毕业论文(设计)
学院: 计算机科学学院 专业: 自动化 年级: 2010 题目:基于Excel的学生成绩管理系统设计 学生姓名: 李伟乔 学号: 10064072 指导教师: 吴桂华 职称: 讲师
2014年5月
中南民族大学本科毕业论文(设计)原创性声明
本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。本人完全意识到本声明的法律后果由本人承担。
作者签名:
2014 年 05 月 01 日
目 录
摘要及关键词 .............................................................. 1 Abstract& Key words .......................................................... 1 引言 ........................................................................ 2 1 系统分析................................................................... 2
1.1设计思路 ............................................................. 2
1.1.1 系统要求 ..................................................... 2 1.1.2 功能设计 ..................................................... 2 1.2 关键技术 ............................................................. 3
1.2.1 文件对象集合 ................................................... 3 1.2.2 动态数组 ...................................................... 4
2 设计菜单................................................................... 4
2.1 设计菜单结构 ......................................................... 4 2.2设计菜单代码 ......................................................... 5
2.2.1定义菜单 ....................................................... 5 2.2.2删除自定义菜单 ................................................. 5 2.2.3设计菜单调用的子过程 ........................................... 6 2.3 工作簿事件 ........................................................... 7 3 各功能模块设计及相应窗体 ................................................... 8
3.1基础资料模块设计 ..................................................... 8
3.1.1窗体设计 ....................................................... 8 3.1.2代码设计 ....................................................... 8 3.2 学期初始化模块设计 .................................................. 10
3.2.1当前学期设置 .................................................. 10 3.2.2 班级课程安排 .................................................. 10 3.3 学生名单处理模块设计 ................................................ 12 3.4 成绩处理模块设计 .................................................... 13 3.5 查询模块设计 ........................................................ 15 4 主界面概览和测试样表 ...................................................... 17
4.1 主界面 .............................................................. 17 4.2 学生总表 ............................................................ 17 4.3 班级课程表 .......................................................... 18 4.4 基础数据 ............................................................ 18 4.5 成绩表 .............................................................. 18 结论 ....................................................................... 19 致 谢 ...................................................................... 20 参考文献.................................................................... 20
基于Excel的学生成绩管理系统设计
摘要:学生成绩管理系统是学校办公自动化的核心内容之一,实现学生成绩管理的自动化能有
效地提高学校的工作效率和办学水平。本文设计的基于Excel的学生成绩管理系统是集VBA的独特优越性、可视化的集成开发环境和良好的图形用户界面等特点于一体。文中详细地对学生成绩管理系统结构以及功能模块的设计进行了说明,给出了各功能模块的部分代码及工作流程,最后对系统进行了综合测试,并给出了测试运行时的效果图。测试表明:该系统基本上能实现学生成绩管理系统的各项功能,界面友好,窗体结构美观合理,通用性强,也具有较好的可移植性。
关键词:成绩管理 ;模块设计 ;可视化开发;Excel VBA
Student achievement management system design based on Excel
Abstract:Student achievement management system is one of the core content of the school office
automation, realize the automation of student achievement management can effectively improve the efficiency and level of running of the school. In this paper, design of student achievement management system based on Excel VBA unique superiority, visual integrated development environment and good graphic user interface, etc. This paper in detail on the student achievement management system structure and function module design are illustrated, the part of the code of the function modules and workflow, finally, the system has carried on the comprehensive test, and test the runtime rendering is presented. Tests show that the system can basically realize each function of student achievement management system, friendly interface, the form is beautiful and reasonable structure, strong commonality, also has good portability.
Key words:Performance management ;Module design;Visual development ;Excel VBA
1
引言
微软公司的Excel是一个被广泛应用的电子表格软件,除了具有常用电子表格软件的数据处理、统计分析、图表功能外,其最大特点是集成了VBA环境。VBA可以实现Excel的所有功能,它以Excel环境为母体,以Visual Basic为父体的类VB开发环境,基于Office平台,无须再增加其他的应用程序,具有很强的通用性;同时基于Office平台的特性,给予了VBA更为方便地利用Office已有的功能和方法,相当于站在巨人的肩膀上,极大的缩短了程序开发周期。通过VBA可以定制更适合用户需要的个性化办公环境,很大程度地提高工作效率。
学生成绩管理作为日常繁琐的教学管理任务之一,实现其管理的数字化、智能化、信息化、自动化,将具有划时代意义。同时大量减轻教务工作人员的工作量,节省教育成本,提高工作准确度和事务处理效率,使其变得更有条理性、科学性。该学生成绩管理系统正是基于Excel VBA开发平台得以实现。
1 系统分析
一个相对成熟的成绩管理系统,应该包含班级管理、学生名单管理、课程管理、成绩统计分析以及查询功能。系统应具有安全性、实用性和适用性,并且操作尽量的简单方便,做到真正意义上的提高效率。
1.1设计思路
作为自动化的学生,与之前所学的知识相比,虽然平常的学习生活中有应用到Excel表格处理的功能,但仅仅是一点皮毛。而Excel VBA程序编写生成系统可以说是一个新的知识点,在开题报告定稿之后,通过查阅大量有关书籍及网络资料才确定了大体的设计方向。根据系统的大致要求,采用模块化程序设计的方法,可以将系统分化成学生名单、课程管理、班级管理、成绩统计和查询等模块,每个模块应用相应的代码来实现其功能,并设计对应的窗体界面方便用户操作。 1.1.1 系统要求
对于学生成绩的录入输出存在很多重复性操作,手工输入必定耗时费力。通过计算机处理数据,利用可视化窗体操作界面,能轻松有效的完成成绩的录入、浏览和查询功能。
使用计算机管理学生成绩,首先设置相关数据,如教师名称、课程名称、学生名称等。然后按班级系统自动生成、分发学生名单(空表)给各班主任,并汇总学生名单。收集好各任课教师直接报送Excel格式的成绩单,教务科室工作人员将这些数据导入系统后,即可进行统计、查询等功能。其流程图如1—1所示。
初始数据设置分发学生名单导入学生名单分发成绩空表导入成绩单查询系统 图1—1 计算机处理流程
1.1.2 功能设计
自定义系统菜单,每一个自定义按钮实现其功能操作,并显示下拉菜单,实现对应的子功能。
系统:本系统自定义隐藏菜单栏,设计了一个“系统”模块提供对文件的保存、打印预览、
2
打印等Excel的功能。
基础资料:设置教师姓名、学期名称、班级名称和课程名称等基础资料。
学期初始化:每学期使用之前,使用该模块设置当前学期名称,以及设计本学期各班级授课教师等内容。
学生:本模块主要管理学生名单,包括分发空表、导入学生资料,以及手工输入学生资料等功能。
成绩:本模块包括分发学生空表、导入学生成绩和手工输入成绩等功能,实现对成绩的录入输出。
查询:可以按学生学号或姓名查询成绩,也可以按班级名称查看班级成绩表。 模块功能如图1—2所示,
设计工作表格学生成绩管理系统设计菜单设计窗体基础资料使用列表框控件学期初始化使用多列列表框使用Exit For使用文件系统处理学生名单使用动态数组使用文件系统处理学生成绩判断工作表存在用VBA删除单元格成绩查询用VBA粘贴数据
图1—2 系统模块图
1.2 关键技术
基于Excel VBA的编程语言特点,对于该系统的设计主要运用了文件对象集合和动态数组的操作两方面的内容,下面对这两个关键技术做具体说明。 1.2.1 文件对象集合
在处理文件时,VBA使用File System Object (FSO) 对象模型,该模型提供了一个基于对象的工具来处理文件夹和文件。FSO对象模型使应用程序能够创建、改变、移动和删除文件夹,或者检测是否存在指定的文件夹。FSO对象文件模型也能获取关于文件夹的信息,诸如名称、创建日期或最近修改日期等。常用的FSO对象有下面几种:
3
(1)FSO对象模型,File System Object对象提供对计算机文件系统的访问。用FSO对象模型
编程首先需要使用Create Object方法创建一个File System Object对象。语法格式如下:
Set fso=Create Object(“Scripting.” File System Object)
(2)Folder对象,Folder对象提供对一个文件夹所有属性的访问。使用File System Object对象的Get Folder方法将返回一个和指定路径中文件夹相对应的Folder对象。 (3)File对象,File对象提供对文件所有属性的访问。 1.2.2 动态数组
所谓动态数组,是指数组的元素个数在程序运行过程中可随时改变。在VBA中使用动态数组需要两个步骤。
步骤1:在过程级声明一个没有维数下标(带空圆括号)的数组。
步骤2:在能确定数组维数下标时,使用ReDim语句定义数组的维数下标。具体语法格式如下: ReDim [Preserve] varname(subscripts)[As type] [,varname(subscripts)[As type]]? 其中:Preserve为可选参数,当改变原有数组最末维的大小时,使用此关键字可以保持数组中原来的数据。
Varname是必需的,指定变量的名称,它应该是前面已经定义过的数组。
2 设计菜单
在Excel中,通过菜单驱动方式来调用各模块,只需要定义菜单名及选择该菜单时将调用的宏代码即可。
2.1 设计菜单结构
执行该系统的程序后,将隐藏Excel原有菜单,只显示自定义设计的菜单。菜单结构图如2—1所示。
图2—1 自定义菜单结构图
每一个菜单都有对应的下拉菜单,通过对下拉菜单的操作实现所需要的功能,其中基础资料和查询下拉菜单结构分别如图2—2,2—3所示。
图2—2 基础资料菜单结构图
4
图2—3 查询菜单结构图
2.2 设计菜单代码
各管理菜单都需要通过相应的代码才能实现其操作,下面将具体对自定义菜单的代码实现进行说明。 2.2.1定义菜单
Excel的VBA环境中没有提供菜单设计器,因此,只有通过输入代码的方式来定义菜单。定义图2—1所示菜单的部分代码如下:
Sub MyBar_Menu() '建立自定义菜单 Dim MyBar As CommandBar On Error Resume Next
Application.CommandBars(\成绩管理\’删除自定义菜单“成绩管理” Set MyBar = CommandBars.Add(Name:=\成绩管理\
MenuBar:=True, temporary:=True, Position:=msoBarTop) '建立\系统\菜单,提供系统打印、保存等功能的自定义菜单
Set MyBar1 = MyBar.Controls.Add(Type:=msoControlPopup) ’建立一个下拉菜单 MyBar1.Caption = \系统(&S) \’设置菜单标题为“系统” Set MyBar11 = MyBar1.Controls.Add(Type:=msoControlButton) With MyBar11
.Caption = \保存(&S)\’设置菜单项的标题为“保存” .Style = msoButtonIconAndCaption
.FaceId = \’设置菜单项的图标 .OnAction = \’设置单击该菜单时调用的子过程 End With 程序说明:
各菜单项的定义代码类似,可采用复制再进行修改的方法来快速录入。程序首先使用语句Application.CommandBars(“成绩管理”).Delete删除名称为“成绩管理”的自定义菜单。程序中通过名称MyBar,MyBar1,MyBar11来判断菜单的结构,其中MyBar为主菜单条,MyBar1为每主菜单条中的菜单项,MyBar11为下拉菜单中的菜单项。创建MyBar菜单条后,通过执行MyBar 对象Controls集合的Add方法可为其添加菜单项,通过指定菜单项的类型为msoControlPopup,定义该菜单为下拉菜单。运用相同原理创建MyBar1的下拉菜单。无论是添加菜单项,还是下拉菜单项,都是调用对象的Add方法。 2.2.2 删除自定义菜单
当系统执行结束时,应当将Excel恢复到最初的状态,需要将自定义菜单删除,并显示Excel的默认菜单。删除自定义菜单的子过程如下:
Sub MyBarDelete() '删除自定义菜单 On Error Resume Next ’设置错误处理 Application.CommandBars(\成绩管理\’删除自定义菜单 Application.DisplayFormulaBar = True ’显示编辑栏 On Error GoTo 0 ’取消错误处理
Application.CommandBars(\’显示标准工具栏
5
Application.CommandBars(\’显示格式工具栏
Application.CommandBars(\’显示系统默认菜单 End Sub 2.2.3 设计菜单调用的子过程
用户单击选择菜单项时,将调用对应的子过程来完成相应的功能,具体步骤有:
步骤a:系统菜单主要调用Excel提供的功能,如保存、打印预览、打印等。其代码如下: Sub SaveSys()
ActiveWorkbook.save ’调用系统的保存方法保存工作簿 End Sub
Sub ExitSys()
ActiveWorkbook.save
Application.Quit ’退出Excel End Sub
Sub 打印预览()
ActiveWindow.SelectedSheets.PrintPreview '打印预览 End Sub Sub 打印()
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True ’打印此工作表 End Sub
步骤b:除系统菜单外,其他菜单需要编写子过程来完成相应的功能,其中部分子过程只需要将对应的窗体显示出来即可。下面是部分子过程的代码,其他子过程将在后面逐步完善。 Sub 设置当前学期()
frmDqxq.Show ’显示当前学期窗体 End Sub
Sub 课程安排()
frmBjkc.Show ’显示课程安排窗体 End Sub
Sub 设置教师姓名()
frmJsxm.Show ’显示教师信息窗体 End Sub
Sub 设置学期() frmXq.Show End Sub
Sub 设置班级名称() frmNjmc.Show End Sub
Sub 设置课程名称() frmKcmc.Show End Sub
Sub 输入学生资料() '手工方式输入学生资料 Sheets(\学生总表\ Sheets(\学生总表\End Sub
Sub 输入成绩() '手工方式输入成绩
frmCjb.Show '显示一个窗体,让用户选择班级
6
End Sub
Sub 生成班级成绩表()
frmBjcj.Show ’显示班级成绩表窗体 End Sub
2.3 工作簿事件
当打开工作簿时,需对其进行初始化操作(包括隐藏工具栏,显示自定义菜单等),完成这些功能的代码应放置在工作簿的Open事件中。当工作簿关闭时,在BeforeClose事件中编写代码实现恢复Excel的操作,可分为下面几步完成:
(1) 通过工作簿的Open事件完成调用自定义菜单、隐藏工具栏等设置。其部分代码如下:
Private Sub Workbook_Open()
Application.ScreenUpdating = False ’关闭屏幕更新
Application.Cursor = xlDefault ’设置光标为默认图标 Application.Caption = \学生成绩管理系统\ ActiveWindow.Caption = \
Application.CommandBars(\屏蔽右键工具栏 Application.CommandBars(\ Application.CommandBars(\ Application.DisplayFormulaBar = False Application.DisplayStatusBar = True
ActiveWindow.DisplayWorkbookTabs = False '隐藏工作表标签 HideBar MyBar_Menu
Sheets(\主界面\’设置主界面的滚动区域 Sheets(\主界面\
Application.ScreenUpdating = True End Sub
(2) 在运行完本段程序后,应恢复Excel的初始设置。可在BeforeClose事件中编写如下代
码完成这些功能:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.Caption = \’设置应用程序的标题为初始值 MyBarDelete ShowBar
Application.CommandBars(\ Me.save ’保存工作簿 End Sub
(3) 在上面的两段事件过程中,调用了HideBar和ShowBar两个子过程,需运用到下列的代
码: Sub HideBar()
Application.CommandBars(1).Enabled = False ’禁止工具栏 Application.CommandBars(3).Visible = False ’隐藏工具栏 Application.CommandBars(4).Visible = False
End Sub
Sub ShowBar()
Application.CommandBars(1).Enabled = True
7
Application.CommandBars(3).Visible = True Application.CommandBars(4).Visible = True
End Sub
3 各功能模块设计及相应窗体
应用计算机进行信息处理时,需要将手工数据进行编码或规范化,以方便计算机快速查找。由于系统相对繁琐,整体设计出现问题不方便查找改错。基于模块化设计的优点,内聚高、外聚少,出错很容易查找,每一个模块自我包含、自我实现,方便管理。但模块的存在与划分必须以系统平台的整体功能作为前提,做到有层次感、结构感和整体性。
3.1 基础资料模块设计
基础资料模块的设计包含其窗体的设计及相应的代码实现,这里只用到教师的姓名,窗体界面只需录入教师姓名即可,并将删除、保存功能统一在一个窗体方便管理。 3.1.1 窗体设计
窗体界面如图3—1所示。
图3—1 教师名称窗体
在“教师名称”窗体中,左边放置一个列表框,显示教师姓名,单击“添加”按钮将文本框中输入的内容添加到列表框中;选中列表框中的项目后,单击“删除”按钮可删除该项。为了方便管理,将“增加”“删除”等功能都集中于一个窗体,并设有“保存”功能。设置“增加”按钮的Default属性为True,则在该窗体中按Enter键时,将触发该按钮的单击事件;设置“退出”按钮的Cancel属性为True,按Esc键时,将触发该按钮的单击事件。 3.1.2 代码设计
该窗体的代码首先将已有教师的资料显示出来,然后通过对窗体上控件的操作,可完成数据的添加、删除、修改等操作。
首先,在窗体中设置一个模块级变量bSave,当对数据进行了修改(增加或删除),就设置该变量为True,表示需要保存数据。
Dim bSave As Boolean ’保存数据标志
其次,在窗体初始化时,将“基础数据”表中的教师名称添加到列表框中,可通过一下代码实现:
Private Sub UserForm_Initialize()
Dim intRow As Integer, i As Integer
8
With Sheets(\基础数据\
intRow = .[A65536].End(xlUp).Row If intRow < 3 Then Exit Sub For i = 3 To intRow
ListBox1.AddItem .Cells(i, 1) Next End With End Sub
单击“增加”按钮时,将文本框中的内容添加到列表框中。 Private Sub cmdAdd_Click()
Dim i As Integer, strXm As String strXm = Trim(txtXm.Value) If strXm = \
MsgBox \请输入教师姓名!\学生成绩管理系统\ Exit Sub End If
For i = 0 To ListBox1.ListCount - 1 If ListBox1.List(i) = strXm Then
MsgBox \已有教师:“\”的数据!\ vbInformation + vbOKOnly, \学生成绩管理系统\ Exit Sub End If Next
ListBox1.AddItem strXm txtXm.SetFocus txtXm.Value = \ bSave = True End Sub
程序首先对文本框中输入的内容进行判断,如果为空就返回,不添加内容。并对输入的内容比较,如列表框中已有相同的内容,则不添加;若有新的数据添加到列表框后,应将bSave变量置为True,表示有数据需要保存。
“删除”按钮代码:
Private Sub cmdDel_Click()
If ListBox1.ListIndex >= 0 Then ’如果选择了列表框中的项目 ListBox1.RemoveItem ListBox1.ListIndex ’删除选中的项目 bSave = True ’设置需要保存的标志 End If End Sub
“保存”按钮功能实现代码: Private Sub cmdSave_Click() Dim i As Integer
With Sheets(\基础数据\
If ListBox1.ListCount <= 0 Then Exit Sub ’如果列表中没内容,则退出 For i = 0 To ListBox1.ListCount – 1 ’将列表框中的内容逐步写到工作表中 .Cells(i + 3, 1) = ListBox1.List(i) Next End With
bSave = False ’清楚需要保存标志
9
End Sub
“退出”按钮功能实现:
Private Sub cmdQuit_Click() If bSave Then
If MsgBox(\新增加的教师姓名还未保存。\是否保存?\
vbQuestion + vbYesNo + vbDefaultButton1, \学生成绩管理系统\= vbYes Then cmdSave_Click End If End If
Unload Me ’释放窗体 End Sub
单击“退出”按钮时,程序将判断bSave变量,如果其值为True,则表示有数据需要被修改而没有保存,将弹出消息提示,让用户选择是否存盘。
3.2 学期初始化模块设计
同样,学期初始化模块也应具有其操作窗体界面,但对其课程的安排需对课程和教师姓名同时进行管理,其代码相对繁琐,下面在保存功能方面有具体说明。 3.2.1 当前学期设置
通过该子模块设置系统当前操作的学期,后面的课程安排、导入成绩、查询成绩都以此为基础,不再处理其他学期的资料。设置代码与前面所用代码基本相同,并相对简单,这里不做详细的介绍。其窗口界面如图3—2所示。
图3—2 当前学期设置窗体
3.2.2 班级课程安排
班级课程安排模块用来设置各班本学期的课程及任课老师,为后面创建成绩分发表提供数据。窗体界面我们设置左边列表框的ColumnCount属性为2,即列表框显示两列,分别显示课程名称和授课教师姓名。如图3—3所示。
10
图3—3 班级课程安排窗体
代码方面,前面的下拉菜单、增加、删除功能实现已在基础资料模块窗体设计中进行了详细说明,这里只对课程设置的保存功能做下详细介绍,其保存工作流程图如图3—4所示:
开始在“班级课程表”中查找班级找到?是删除本学期原有数据添加本学期课程安排数据结束否添加本学期课程安排数据 图 3—4 保存流程图 完成该功能的代码如下:
Private Sub cmdSave_Click()
Dim i As Integer, j As Integer
Dim intColumn As Integer, intRow As Integer '班级课程表中的行数 With Sheets(\班级课程表\
intColumn = .[IV1].End(xlToLeft).Column ’获取班级课程表的数据列数 For i = 1 To intColumn Step 3
If .Cells(1, i) = strBj Then Exit For ’在班级课程表中查找班级 Next
If i > intColumn Then '班级课程表中没有该班 i = intColumn + 3 .Cells(1, i) = strBj .Cells(2, i) = \学期\ .Cells(2, i + 1) = \课程\ .Cells(2, i + 2) = \教师\
11
intRow = 3
Else '班级课程表中已有该班 intRow = .Cells(65536, i).End(xlUp).Row End If
If intRow > 3 Then '删除原有数据
For j = intRow To 3 Step -1
If .Cells(j, i) = strXq Then .Range(.Cells(j, i), .Cells(j, i + 2)).Delete Shift:=xlShiftUp End If Next
intRow = .Cells(65536, i).End(xlUp).Row + 1 '重新获取数据行 End If
For j = 0 To ListBox1.ListCount – 1 '将新增或修改后的数据保存 .Cells(j + intRow, i) = strXq ’当前学期 .Cells(j + intRow, i + 1) = ListBox1.List(j, 0) '课程
.Cells(j + intRow, i + 2) = ListBox1.List(j, 1) '授课教师 Next End With
bSave = False ’清楚保存标志 End Sub 程序说明:
(1) 在For循环中,执行完循环退出时,其循环变量的值将大于终值;如果循环为执行
完,遇到Eixt For语句退出时,其循环变量的值将小于终值。本程序利用这一特点来判断在循环内是否找到对应的班级。 (2) 在Excel中,删除单元格数据时,将弹出对话框让用户选择单元格的移动方式。在
VBA中,可以通过Delete方法的Shift参数来选择该项,常数xlShiftUp表示下方单元格上移。 (3) 通过列表框的List(row,col)属性访问列表框中的各项数据,这时将列表框作
为一个表格,通过行和列进行访问。
3.3 学生名单处理模块设计
学生名册的数据量非常大,如果全部由教务处进行处理,工作量巨大,而且容易出现错误,效率极低。通过设计相应的功能模块,由各班班主任报送Excel数据,然后导入系统中进行处理。本模块提供分发空表、导入学生资料和输入学生资料三项功能。这里主要描述导入学生资料的功能流程,如图3—5所示:
12
开始从“基础数据”表中读取当前学期从“基础数据”表中读取班级数据从“上报姓名”目录中获取文件名是文件数为0?否打开“上报姓名”中的一个文件判断文件的班级是否正确将上报文件的学生资料保存到数组在“学生总表”中查找班级将数组中的数据写入“学生总表”是还有文件?否结束
图3—5 导入学生资料的流程图
导入学生资料的功能是将收集的学生资料导入到系统中,需要先在保存本系统的文件的目录中建立一个“上报姓名”子目录,将各班班主任报来的表格放在子目录中。
3.4 成绩处理模块设计
与处理学生姓名类似,学生成绩处理功能也包含分发成绩空表、导入成绩和手工输入成绩三个子菜单。实现分发成绩空表功能代码如下:
Sub 分发成绩单()
Dim i1 As Integer, j1 As Integer ’声明变量 Dim i2 As Integer, j2 As Integer Dim i3 As Integer, j3 As Integer Dim i4 As Integer Dim strKc() As String
Dim strBj As String, strXq As String '班级和学期 Dim strJs As String '教师
strXq = Sheets(\基础数据\’获取当前学期
i1 = Sheets(\学生总表\获取班级数 For j1 = 1 To i1 Step 2 strBj = Sheets(\学生总表\
i2 = Sheets(\班级课程表\查询该年级的课程 For j2 = 1 To i2 Step 3 ’逐个查询该班级名称
13
If Sheets(\班级课程表\ Next j2
If j2 > i2 Then ’如果没有找到课程
MsgBox \“\”还未设置课程,不能分发成绩表!\ vbInformation + vbOKOnly, \学生成绩管理系统\ GoTo nextclass ’处理下一个班级 Else
i3 = Sheets(\班级课程表\ i4 = Application.WorksheetFunction.CountIf( _
Sheets(\班级课程表\班级课程表\ Sheets(\班级课程表\’统计本学期课程数 ReDim strKc(i4, 2) As String ’重新定义数组 i4 = 1
For j3 = 3 To i3 '获取课程和授课教师
If Sheets(\班级课程表\
strKc(i4, 1) = Sheets(\班级课程表\课程名称 strKc(i4, 2) = Sheets(\班级课程表\教师 i4 = i4 + 1 End If Next j3 End If
i3 = Sheets(\学生总表\获取班级中学生所占行数
For j3 = 1 To UBound(strKc)
Sheets(\成绩分发样表\ Range(\ Range(\
Range(\ Range(\
ActiveWindow.ActivateNext ’切换到系统工作簿
Sheets(\学生总表\学生总表\ Sheets(\学生总表\ ’复制学生总表中该班级的学生资料
ActiveWindow.ActivateNext ’切换到复制产生的工作簿 Range(\ Application.CutCopyMode = False
ActiveSheet.Name = strBj & \ ActiveSheet.Range(Cells(8, 1), Cells(i3 - 3 + 8, 3)).Borders.LineStyle
= xlContinuous
On Error GoTo 0
ActiveWorkbook.SaveAs ThisWorkbook.Path & \分发表\\成绩表(\& strBj & \
& strKc(j3, 1) & \ ActiveWorkbook.Close Next j3 nextclass: Next j1
Sheets(\主界面\’激活主界面 End Sub
14
流程图如3—6所示:
开始从“基础数据”表中获取班数从“学生总表”中获取一个班级名在“班级课程表”中查找指定班级、本学期的课程,保存到数组中复制“成绩分发样表”,并在复制的表中填写班级、课程、学期、任课老师等资料将“学生总表”中指定班级学生的学号和姓名复制到新工作簿中保存并关闭新工作簿是还有课程?否是还有班级?否结束 图3—6 生成分发成绩表流程图
成绩的导入与学生资料的导入类似,这里不做详细说明了。下面是手工输入成绩窗体界面,
图3—7 选择班级窗体
选择“成绩/输入成绩”菜单,将打开指定班级的成绩表,让用户手工输入或修改数据。
3.5 查询模块设计
查询菜单主要提供查询单个学生成绩和查询班级成绩两个功能。查询单个学生成绩时,用户可输入学生学号或姓名进行查询;查询班级成绩时,需要选择班级名称和查询学期。具体界面如图3—8和3—9所示。
15
图3—8 学生成绩查询 图3—9 班级成绩查询
这里只对学生成绩查询做一下代码说明:
Private Sub 查找学生()
Dim strXm As String, i As Integer, j As Integer
Do ’首先定义一个死循环
strXm = InputBox(\请输入学号或姓名(不输入内容则退出):\学生成绩管理系统\\’接受用户输入的内容
If strXm = \’如果输入内容为空 Exit Sub ’退出子过程 End If
For i = 8 To Sheets.Count ’从第8张工作表中开始查找 For j = 6 To Sheets(i).[A65536].End(xlUp).Row
If CStr(Sheets(i).Cells(j, 1).Value) = strXm Or _ CStr(Sheets(i).Cells(j, 2).Value) = strXm Then Sheets(i).Select ’选择当前工作表
Cells(j, 1).Select ’将焦点移动到所找的单元格 If MsgBox(\继续查找 \吗?\ vbQuestion + vbYesNo, 系统) <> vbYes Then Exit Sub End If End If Next j Next i Loop
Sheets(\主界面\End Sub 该子过程首先定义一个死循环,用户可以反复进行查询。在弹出的InputBox对话框中给不输入内容,则可退出该循环,结束该子过程。在所选工作表中如果查到所选内容,则选择该单元格并提示是否继续查找。
16
4 主界面概览和测试样表
表格作为Excel最基本的功能之一,通过相应的代码实现表格处理。 各功能模块的体现都
通过对应的Excel工作簿来完成。主界面设置了美化背景图,使程序界面显得不那么单调。
4.1 主界面
该系统中“主界面”表格的作用是:在等待用户选择菜单功能时显示该表格,避免将其他工作表中的数据显示出来。为了美化程序,用户可以根据自己的要求设置一张背景图,并输入系统名称和学校名称等内容,系统的主界面如图4—1所示。
图4—1 主界面图
4.2 学生总表
学生总表保存学校所有学生的基础资料,包括学号、姓名等,样表如表4—1所示。
表 4—1 学生总表
在该样表中,每个班级的学生资料排列有序,即每班占用两列,每行为一个学生的基本信息,这样可以保存100多个班级的学生资料。若班级超过150个,可以将该表的班级横着排列,即每班占两行,每列保存一个学生资料,这样可以最多保存3万多个班级,每个班级200多个学生资
17
料。该表的数据既可以手工输入,也可导入各班级主任上报的学生资料。分发成绩单空表时,将调用该表中的学生姓名。
4.3 班级课程表
班级课程表按班级排列,每班占3列,分别保存学期、课程和对应课程的任课教师,分发成绩单空表时,将从该表中查询数据,再按班级、课程生成成绩单空表。表4—2所示;
表4—2 班级课程表
4.4 基础数据
如表4—3所示,该表将教师、班级、课程、学期等资料统一保存在基础数据表中。根据需要,也可以将这些资料分别保存在单独的工作表中。
4.5 成绩表
本系统中成绩表根据需要可以分为成绩样表、单科成绩样表以及学期班级成绩表。其中成绩样表主要用来生成各班级成绩表,如表4—4所示。生成班级成绩表时,将首先复制该表,然后将新表名称改为班级名称,同时在B2单元格填写班级名称,再从“学生总表”中复制该班的学生基本资料。该表将保存每一学期、各科任课教师及考试成绩,这些数据将由程序自动生成。而在单科成绩表中,按班级、课程和教师名称生成,然后分发给各任课教师,用于收集学生成绩,
表4—3 基础数据表
表4—5所示。学期班级成绩表主要应用于用户的查询,汇总了整个班级的成绩信息。
表4—4 成绩样表
18
表4—5 单科成绩样表
通过对系统的运行测试,生成相应的工作表格,基本实现了学生成绩管理系统的功能。测试效果样表如上各图所示。
结论
21世纪是一个信息时代、知识经济的时代,互联网的引入让我们的生活更加丰富多彩,同时也促进了我们对于信息管理的数字化、科学化。互联网技术与信息化管理技术的结合为我们的生活和工作带来了极大的便利。运用现有科技,对学生成绩以及档案进行无纸化管理,全部数据信息的数字化,并且信息能进行及时更新和查看,无疑提高广大教育工作者的工作效率,提高学校的办学效率和现代化水平。
此次的毕业设计,可以说是对自己各方面的一个挑战和考验。Excel VBA系统设计对自己可以说是一个全新的知识点,掌握其运用将增加自己的实践能力,在工作学习中更有竞争力。本系统的设计采用隐藏界面菜单、自定义菜单的方法。采用二级菜单设计,通过下拉菜单的隐藏功能使操作界面简洁方便。该系统基本上实现了学生成绩管理应有的功能。由于本人水平有限,针对编程中相对严谨的程序设计考虑的不是很全面,程序运行过程中存在的问题还有待日后解决。通过这次毕业设计,我深刻地认识到任何工作都有其结构和层次性,对任何工作都要脚踏实地、一丝不苟,才能真真的学到东西,学以致用。学习来不得半点的虚假和马虎,否则最终糊弄的是自己,生活也是如此。
19
致 谢
从选择毕业设计题目,确定开题报告,根据系统要求进行设计。过去的几个月时间里,运用互联网和学校图书馆的资料,借助老师和同学的帮助,基本完成了系统的设计。首先感谢的是学校提供给我这样一个自我锻炼、自我考核的机会,给予我四年大学知识上的一个总结;当然不仅仅限于知识,学校拥有良好的网络数据库,优秀的学校图书馆,这在我遇到问题时能及时找到相关书籍资料给予了很大帮助。其次要感谢的就是负责我本次毕业设计的吴老师,吴老师时时关心我们的毕业设计进程,耐心的指导我们。对开题报告的认真审查和修改,论文初稿的检查,包括后期系统存在的问题的指导和修改,都表现出吴老师极大的耐心和责任感。吴老师对于我们的督促和关心,产生了一种压力,同时也是动力,促使我们认真的去完成此次的毕业论文设计。最后要感谢的是帮助过我的同学们,大家相互学习,彼此促进,共同进步。
在此,我衷心的感谢学校以及计算机科学学院所有老师对我的培养和关心!
参考文献
【1】 李防主编.Excel VBA超级手册 [M].北京:机械工业出版社,2011 【2】 罗刚君主编.Excel VBA范例大全[M].北京:电子工业出版社,2008
【3】 韩泽坤主编. Excel VBA高效办公范例应用[M].北京:中国青年电子出版社,2004 【4】 杭琳、汪智编著.Excel办公秘技[M].北京:中国青年出版社,2013 【5】 陈浩编著.Excel在公司管理中的应用[M].北京:中国青年出版社,2005 【6】 钟伟编著.Excel VBA入门及其应用[M].北京:清华大学出版社,2008 【7】 伍云辉编著.Excel VBA应用高效开发[M].北京:电子工业出版社,2007
【8】 李利民.基于Excel VBA学生信息管理系统设计[J].电脑识别与技术.2010(2)
【9】 安剑、刘彬彬编著.Visual Basic从入门到精通[M].北京:清华大学出版社.2010(2) 【10】 李洪心、李楠.数字化办公系统的设计与实现[J].教育信息化.2006(7) 【11】 李程,学生成绩管理系统的设计与实现[D].数字信息化.2009
【12】 游应德,基于Internet的学生信息管理系统.[D].电子科技大学.2007 【13】 蒲玲,基于WEB的学生信息管理系统设计与实现[J].信息管理.2007 【14】 王斌,学生成绩管理系统的设计与实现[D].厦门大学.2011 【15】 李玲,学生成绩管理系统[D].大连海事大学.2010
【16】 王佩红、刘慧婷,基于VB的学生信息管理系统设计[J].计算机技术与发展2007(12) 【17】 万芳.基于数据库的管理系统设计与应用[J].制造业自动化.2012(5)
20
正在阅读:
李伟乔 - 基于Excel的学生成绩管理系统设计(2) - 图文02-03
社会实践报告03-31
在心理咨询中应如何建立良好的帮助关系04-13
社会实践报告03-31
帮助让生活更美好作文600字06-23
拾金不昧的心情语录11-20
单位实习证明范文09-07
山西803-31
5学原理(微观)第五版测试题库(09)09-10
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 李伟
- 管理系统
- 基于
- 成绩
- 图文
- 学生
- 设计
- Excel
- 从幼儿园到小学一年级
- 如何创设有价值的教学情境
- 港口总体规划环境影响评价技术要点
- 扬州市城市饮用水水源地安全保障规划
- 复合焊 - 图文
- 各税种纳税人比较难处理的会计涉税事项解答
- 环境心理学与工业设计 - 以公共直饮水机为例 - 图文
- 最新2019年高考物理模拟试题6套(含答案及解析)
- 贾东平 安康学院本科生毕业论文(设计)开题报告(附件4) - 图文
- 2019届高考英语一轮复习语法知识专项提升练习(语法填空)
- 下雪的声音教学设计
- 关于护士工龄津贴的若干规定劳人薪41号
- 《正确面对青春期的变化》教学设计
- 2012高速公路可变情报板维修技术手册(缩简)
- 浅谈税收风险管理存在的问题及优化思考
- 中职语文拓展模块第六单元教案 文档
- 学校后勤工作管理制度
- 汽车驾驶员初级理论知识试卷带答案
- 顺义区交通安全委员会文件
- 人教版三年级数学下册暑假作业