ExcelVBA课程设计实习报告成绩管理系统.doc

上传人:仙人指路1688 文档编号:2389699 上传时间:2023-02-17 格式:DOC 页数:25 大小:3.75MB
返回 下载 相关 举报
ExcelVBA课程设计实习报告成绩管理系统.doc_第1页
第1页 / 共25页
ExcelVBA课程设计实习报告成绩管理系统.doc_第2页
第2页 / 共25页
ExcelVBA课程设计实习报告成绩管理系统.doc_第3页
第3页 / 共25页
ExcelVBA课程设计实习报告成绩管理系统.doc_第4页
第4页 / 共25页
ExcelVBA课程设计实习报告成绩管理系统.doc_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《ExcelVBA课程设计实习报告成绩管理系统.doc》由会员分享,可在线阅读,更多相关《ExcelVBA课程设计实习报告成绩管理系统.doc(25页珍藏版)》请在三一办公上搜索。

1、课程设计实习报告 题目成绩管理系统 系别信息工程系 班级计算机应用技术姓名xXXXXxx 学号21起止时间 12月26日-1月6日20112012年目录一、实习目的1二、实习内容1三、实习过程1(一)实习准备1(二)表格和窗体的设计2(三)代码设计6四、实习日志22五、实习体会24VBA是Ofice中广泛使用的宏语言,使用宏可以增强Word、Excel等办公软件的自动化能力,使用户更高效地完成特定任务。Excel处理对象多为数据,使用VBA可以使繁琐和枯燥的工作变得简单易行。本学期的学习使我对VBA有了深刻的认识,掌握VBA的一些操作方法,本次的实习使我对VBA的实际运用又有了进一步的了解。一

2、、实习目的掌握VBA程序设计语言的基础知识,并开发一个基于数据库的高效办公应用系统,通过实习能达到利用VBA编程思想和技巧,实现各种高效自动化办公应用,能建立友好的图形用户界面,能正确地进行数据库服务器和数据库中数据的操作。二、实习内容题目:(项目二)成绩管理系统本项目利用VBA实现学生成绩评估的自动化,使学校提高对考生成绩分析的效率,从而提高学校考试系统的自动化。三、实习过程(一)实习准备在任何程序设计时,都需要有缜密的设计思路。本次是“成绩管理系统”,结合学校的实际情况,首先对问题和需求进行分析,其次对项目的功能进行分析。得出项目设计流程图学生成绩管理系统信息录入与更新学生考试情况分析学生

3、整体考试情况学生信息录入学生个体考试情况学生分数信息录入学生成绩的打印退出系统(二)表格和窗体的设计在开始编写代码前,需要设计好需要的每个工作表的框架,以便调用。首先设计了学生信息表,在第二行中一次输入编号、姓名、性别、班级字段,如图 2。设计学生分数表用来录入学生的考试成绩,涉及字段为:编号、姓名、数学、英语、语文、物理、化学、生物、体育、总分;如图 1。设计统计学生整体情况的统计表;如图 3图 1 学生分数信息表图 2 学生信息表图 3 统计表本次实习涉及到窗体,我采用先设计窗体再编写代码的方式。添加与更新学生信息窗体,添加与更新学生分数信息窗体,如图所示。 图 4 添加与更新学生信息窗体

4、图 5 添加与更新学生分数信息窗体 图 6 分数查询(普通查找与高级查找)窗体(三)代码设计相关窗体设计完成后,接下来就是编写相关的功能代码,有了代码窗体的功能才能充分体现。首先是添加与更新学生信息窗体的“确定”按钮编写相应代码,主要代码如下:Private Sub CommandButton1_Click()Dim tempY As IntegerDim SetFlag As BooleanSetFlag = TruetempY = 3 If (Trim(TextBox1.Text) = ) Or (Trim(TextBox2.Text) = ) Then MsgBox 请输入编号和姓名,确

5、保一致, vbOKOnly, 警告! EndEnd IfWhile (Not IsEmpty(Sheets(学生信息表).Cells(tempY, 1).Value) If (Trim(TextBox1.Text = Sheets(学生信息表).Cells(tempY, 1).Value) Then Sheets(学生信息表).Cells(tempY, 1).Value = TextBox1.Text Sheets(学生信息表).Cells(tempY, 2).Value = TextBox2.Text If (Trim(ComboBox1.Text ) Then Sheets(学生信息表).

6、Cells(tempY, 3).Value = ComboBox1.Text End If If (Trim(TextBox4.Text ) Then Sheets(学生信息表).Cells(tempY, 4).Value = TextBox4.Text End If SetFlag = False GoTo renew End If tempY = tempY + 1WendWhile (Not IsEmpty(Sheets(学生信息表).Cells(tempY, 1).Value)If (Trim(TextBox1.Text = Sheets(学生信息表).Cells(tempY, 1).

7、Value) Then SetFlag = False GoTo renew End If tempY = tempY + 1Wendrenew: If (SetFlag) Then If (vbOK = MsgBox(没有找到该学生信息,是否新加入条目, vbOKCancel, 提示) Then Sheets(学生信息表).Cells(tempY, 1).Value = TextBox1.Text Sheets(学生信息表).Cells(tempY, 2).Value = TextBox2.Text If (Trim(ComboBox1.Text ) Then Sheets(学生信息表).C

8、ells(tempY, 3).Value = ComboBox1.Text End If If (Trim(TextBox4.Text ) Then Sheets(学生信息表).Cells(tempY, 4).Value = TextBox4.Text End If End If End IfEnd Sub窗体的效果如下图所示:输入学生信息后,单机“确定”按钮后,如果找到相应的学生信息将会更新学生信息,如果没有相关学生信息,将弹出是否添加学生信息的对话框。如图 7所示图 7当查找到学生信息需要删除时,点击删除按钮。相应代码为:Private Sub CommandButton4_Click()

9、Dim tempY As IntegertempY = 3按照编号搜索记录If (Trim(TextBox5.Text) ) ThenWhile (Not IsEmpty(Sheets(学生信息表).Cells(tempY, 1).Value) If (TextBox5.Text = Sheets(学生信息表).Cells(tempY, 1).Value) Then Sheets(学生信息表).Select Sheets(学生信息表).Range(A & CStr(tempY) & :D & CStr(tempY).SelectDim shanchu As Integershanchu = M

10、sgBox(确定删除学生信息?, vbYesNo, 提示:)If shanchu = 6 Then Sheets(学生信息表).Range(A & CStr(tempY) & :D & CStr(tempY).Delete Shift:=xlUp MsgBox 删除学生信息成功!, vbOKOnly, 提示: End If End If tempY = tempY + 1WendElseIf (Trim(TextBox6.Text) ) ThenWhile (Not IsEmpty(Sheets(学生信息表).Cells(tempY, 1).Value)If (TextBox6.Text =

11、Sheets(学生信息表).Cells(tempY, 2).Value) Then Sheets(学生信息表).Select Sheets(学生信息表).Range(A & CStr(tempY) & :D & CStr(tempY).Selectshanchu = MsgBox(确定删除学生信息?, vbYesNo, 提示:) If shanchu = 6 Then Sheets(学生信息表).Range(A & CStr(tempY) & :D & CStr(tempY).Delete Shift:=xlUp MsgBox 删除学生信息成功!, vbOKOnly, 提示:End If En

12、d If tempY = tempY + 1 Wend ElseMsgBox 请选择要删除的学生编号或姓名!, vbOKOnly, 提示: End IfEnd Sub当需要删除学生信息时,如果没有输入学生的条件编号或者姓名,将弹出提示输入删除条件的对话框;当输入了学生的编号或姓名,将弹出确认删除的信息框。如下图所示: 图 8 删除学生信息添加与更新学生分数的窗体代码:Private Sub CommandButton1_Click()Dim tempY As IntegerDim SetFlag As BooleanSetFlag = TruetempY = 3 If (Trim(TextBo

13、x1.Text) = ) Or (Trim(TextBox2.Text) = ) Then MsgBox 请输入编号和姓名,确保一致, vbOKOnly, 警告! EndEnd IfWhile (Not IsEmpty(Sheets(学生分数表).Cells(tempY, 1).Value) If (Trim(TextBox1.Text = Sheets(学生分数表).Cells(tempY, 1).Value) Then Sheets(学生分数表).Cells(tempY, 1).Value = TextBox1.Text Sheets(学生分数表).Cells(tempY, 2).Valu

14、e = TextBox2.Text If (Trim(TextBox3.Text ) Then Sheets(学生分数表).Cells(tempY, 3).Value = TextBox3.Text End If If (Trim(TextBox4.Text ) Then Sheets(学生分数表).Cells(tempY, 4).Value = TextBox4.Text End If If (Trim(TextBox5.Text ) Then Sheets(学生分数表).Cells(tempY, 5).Value = TextBox5.Text End If If (Trim(TextBo

15、x6.Text ) Then Sheets(学生分数表).Cells(tempY, 6).Value = TextBox6.Text End If If (Trim(TextBox7.Text ) Then Sheets(学生分数表).Cells(tempY, 7).Value = TextBox7.Text End If If (Trim(TextBox8.Text ) Then Sheets(学生分数表).Cells(tempY, 8).Value = TextBox8.Text End If If (Trim(TextBox9.Text ) Then Sheets(学生分数表).Cell

16、s(tempY, 9).Value = TextBox9.Text End If SetFlag = False GoTo renew End If tempY = tempY + 1WendWhile (Not IsEmpty(Sheets(学生分数表).Cells(tempY, 1).Value) If (Trim(TextBox1.Text = Sheets(学生分数表).Cells(tempY, 1).Value) Then SetFlag = False GoTo renew End If tempY = tempY + 1Wendrenew: If (SetFlag) Then I

17、f (vbOK = MsgBox(没有找到该学生信息,是否新加入条目, vbOKCancel, 提示) Then Sheets(学生分数表).Cells(tempY, 1).Value = TextBox1.Text Sheets(学生分数表).Cells(tempY, 2).Value = TextBox2.Text If (Trim(TextBox3.Text ) Then Sheets(学生分数表).Cells(tempY, 3).Value = TextBox3.Text End If If (Trim(TextBox4.Text ) Then Sheets(学生分数表).Cells(

18、tempY, 4).Value = TextBox4.Text End If If (Trim(TextBox5.Text ) Then Sheets(学生分数表).Cells(tempY, 5).Value = TextBox5.Text End If If (Trim(TextBox6.Text ) Then Sheets(学生分数表).Cells(tempY, 6).Value = TextBox6.Text End If If (Trim(TextBox7.Text ) Then Sheets(学生分数表).Cells(tempY, 7).Value = TextBox7.Text E

19、nd If If (Trim(TextBox8.Text ) Then Sheets(学生分数表).Cells(tempY, 8).Value = TextBox8.Text End If If (Trim(TextBox9.Text ) Then Sheets(学生分数表).Cells(tempY, 9).Value = TextBox9.Text End If End If End If qinkonEnd Sub当添加学生分数时将检查是否已有该生的分数记录,如果有该学生的记录将进行更新,如果没有相关信息将提示是否添加新的记录。单击“确定”按钮后,界面输入的内容将自动清空,方便添加下一条记

20、录。图 9 添加与更新学生分数信息框为了方便快速的找到所要学生的分数信息,本项目提供了查找功能,可以通过输入学生编号或姓名查询该生的分数信息,也可以根据分数信息查询相关的学生信息。主要代码如下:Private Sub CommandButton1_Click()Dim tempY As IntegertempY = 3If (Trim(TextBox1.Text) ) ThenWhile (Not IsEmpty(Sheets(学生分数表).Cells(tempY, 1).Value) If (TextBox1.Text = Sheets(学生分数表).Cells(tempY, 1).Valu

21、e) Then Sheets(学生分数表).Select Sheets(学生分数表).Range(A & CStr(tempY) & :J & CStr(tempY).Select End If tempY = tempY + 1 Wend按姓名搜所ElseIf (Trim(TextBox2.Text) ) ThenWhile (Not IsEmpty(Sheets(学生分数表).Cells(tempY, 1).Value) If (TextBox2.Text = Sheets(学生分数表).Cells(tempY, 2).Value) Then Sheets(学生分数表).Select Sh

22、eets(学生分数表).Range(A & CStr(tempY) & :J & CStr(tempY).Select End If tempY = tempY + 1 Wend Else mei you xin xi shu ru MsgBox 请输入查询条件, vbOKOnly, 提示: End IfEnd Sub该段代码用来实现通过输入学生的编号或姓名来找到相应的分数信息。效果如图:图 10 通过编号或姓名的方式查找相应信息 高级查找代码:Public Function searchvalue(ByVal colvalue As Integer, ByVal numbervalue As

23、 Integer, ByVal limitnum As Integer)Dim tempY As IntegerDim tempflag As Booleantempflag = TruetempY = 3Sheets(学生分数表).Select进入逐行循环While (Not IsEmpty(Sheets(学生分数表).Cells(tempY, 1).Value) If (numbervalue = 1) Then If (Sheets(学生分数表).Cells(tempY, 1).Offset(0, (colvalue + 1).Value limitnum) ThenIf (vbOK =

24、 MsgBox(是 & Sheets(学生分数表).Cells(tempY, 2).Value & 吗?, vbOKCancel, 确认) ThenSheets(学生分数表).Range(A & CStr(tempY) & :J & CStr(tempY).Select End End If End IfEnd If tempY = tempY + 1 Wend If (tempflag) Then MsgBox 没有找到该学生, vbOKOnly, 查找失败! End IfEnd Function该段代码通过分数信息来找到相应的学生。单击“确定”按钮后将弹出确认对话框询问是否要查找该生,单击

25、“取消”将查询下一条符合筛选规则的记录,单击“确定”按钮将选中有该姓名的记录,如果没有需要的信息将显示查找失败的内容。如图所示:图 11 高级查询接下来就是分数单的相关代码。分数单是用来发给学生成绩信息的,就要求有完整的信息内容。需要在相应的分数上有相应的科目标题。主要代码如下:Private Sub CommandButton1_Click()Dim tempX As IntegerDim tempY As IntegerDim tempZ As IntegertempZ = 3tempY = 4While (Not IsEmpty(Sheets(学生分数表).Cells(tempZ, 1)

26、.Value) tempX = 1 While (Not IsEmpty(Sheets(学生分数表).Cells(2, tempX).Value) Sheets(分数单).Cells(tempY, tempX).Value = Sheets(学生分数表).Cells(2, tempX).Value Sheets(分数单).Cells(tempY + 1, tempX).Value = Sheets(学生分数表).Cells(tempZ, tempX).Value tempX = tempX + 1 Wend tempY = tempY + 2 tempZ = tempZ + 1 WendEnd

27、 Sub本段代码实现在“分数单”表中生成分数单。当单击“生成分数单”按钮后将生成一个学生成绩的分数单。如图所示:图 12 生成分数单使用统计表对学生考试情况的整体分析,主要代码设计:While (Not IsEmpty(Sheets(学生信息表).Cells(L, 1).Value) If (一班 = Sheets(学生信息表).Cells(L, 4).Value) Then bji1 = bji1 + 1 H = 3 While (Not IsEmpty(Sheets(学生分数表).Cells(H, 1).Value) If (Sheets(学生信息表).Cells(L, 1).Value

28、= Sheets(学生分数表).Cells(H, 1).Value) Then bji1fs = bji1fs + CInt(Sheets(学生分数表).Cells(H, 10).Value) End If H = H + 1 Wend ElseIf (二班 = Sheets(学生信息表).Cells(L, 4).Value) Then bji2 = bji2 + 1 H = 3 While (Not IsEmpty(Sheets(学生分数表).Cells(H, 1).Value) If (Sheets(学生信息表).Cells(L, 1).Value = Sheets(学生分数表).Cell

29、s(H, 1).Value) Then bji2fs = bji2fs + CInt(Sheets(学生分数表).Cells(H, 10).Value) End If H = H + 1 Wend ElseIf (三班 = Sheets(学生信息表).Cells(L, 4).Value) Then bji3 = bji3 + 1 H = 3 While (Not IsEmpty(Sheets(学生分数表).Cells(H, 1).Value) If (Sheets(学生信息表).Cells(L, 1).Value = Sheets(学生分数表).Cells(H, 1).Value) Then

30、bji3fs = bji3fs + CInt(Sheets(学生分数表).Cells(H, 10).Value) End If H = H + 1 Wend ElseIf (四班 = Sheets(学生信息表).Cells(L, 4).Value) Then bji4 = bji4 + 1 H = 3 While (Not IsEmpty(Sheets(学生分数表).Cells(H, 1).Value) If (Sheets(学生信息表).Cells(L, 1).Value = Sheets(学生分数表).Cells(H, 1).Value) Then bji4fs = bji4fs + CI

31、nt(Sheets(学生分数表).Cells(H, 10).Value) End If H = H + 1 Wend End If If (男 = Sheets(学生信息表).Cells(L, 3).Value) Then nan = nan + 1 H = 3 While (Not IsEmpty(Sheets(学生分数表).Cells(H, 1).Value) If (Sheets(学生信息表).Cells(L, 1).Value = Sheets(学生分数表).Cells(H, 1).Value) Then nanfs = nanfs + CInt(Sheets(学生分数表).Cells

32、(H, 10).Value) End If H = H + 1 Wend ElseIf (女 = Sheets(学生信息表).Cells(L, 3).Value) Then nv = nv + 1 H = 3 While (Not IsEmpty(Sheets(学生分数表).Cells(H, 1).Value) If (Sheets(学生信息表).Cells(L, 1).Value = Sheets(学生分数表).Cells(H, 1).Value) Then nvfs = nvfs + CInt(Sheets(学生分数表).Cells(H, 10).Value) End If H = H +

33、 1 Wend End If L = L + 1 Wend此段代码实现在学生信息表中循环查找记录和循环查找分数记录。Sheets(统计表).Cells(7, 7).Value = bji1Sheets(统计表).Cells(8, 7).Value = bji2Sheets(统计表).Cells(9, 7).Value = bji3Sheets(统计表).Cells(10, 7).Value = bji4Sheets(统计表).Cells(12, 7).Value = bji1 + bji2 + bji3 + bji4Sheets(统计表).Cells(14, 7).Value = nanShe

34、ets(统计表).Cells(15, 7).Value = nvSheets(统计表).Cells(7, 8).Value = bji1fs / bji1Sheets(统计表).Cells(8, 8).Value = bji2fs / bji2Sheets(统计表).Cells(9, 8).Value = bji3fs / bji3Sheets(统计表).Cells(10, 8).Value = bji4fs / bji4Sheets(统计表).Cells(12, 8).Value = (bji1fs + bji2fs + bji3fs + bji4fs) / (bji1 + bji2 + b

35、ji3 + bji4)Sheets(统计表).Cells(14, 8).Value = nanfs / nanSheets(统计表).Cells(15, 8).Value = nvfs / nv此段代码实现将找到的记录自动写入统计表中对应的项目中。图 13 统计表生成数据为了引导使用者快速了解本项目的各种功能,为此项目添加了一个主界面。如图所示:图 14 主界面设计四、实习日志2011年12月26日 星期一今天是实习的第一天,根据个人能力和实习安排的时间我选择做“成绩管理系统”,本项目利用VBA来实现学生成绩评估的自动化。在设计本项目之前,我首先进行了问题和需求的分析。结合学校的情况,围绕如何

36、分析考生的情况和如何统计总体考试情况,得出我的项目至少应具备提供单个考生信息和按教师需要的指标来分析整体的水平这两个功能。但在设计代码前还要将系统的各个步骤进行细化。项目在具有所需的功能的同时,作为一个系统应该是完整的体系,这就要加入其他的辅助功能来保证项目的完整。因此在我的项目中应该考虑到存放学生信息和分数信息,要有分数录入和更改的功能,要有学生信息录入和更改的功能,要能够提供查找功能让老师可以迅速分析整体或个体进行分析,提供个性化的评估,能够对全班和整个年级进行评估。2011年12月27 星期二在昨天做好的分析基础上开始设计我的项目,但在编写代码之前,我首先要设计好将要涉及到得每个工作表的

37、框架。以便在我编写代码时可以方便的调用这些信息。首先做了一个“生信息表”和生分数表”如图 15;学生分数表中我只放入了需要的字段。接下来新建名为“统计表”的工作表用来分析整体考试情况。图 15 学生分数表2011年12月28日 星期三有了前两天对本项目的认真构思和表格的设计,今天的实习内容安排为开始编写相应的代码。此次项目的内容涉及到窗体,因此我采用先设计窗体再添加相应的功能代码的方法进行本次项目的开展。根据项目的需要设计不同的窗体和不同的代码。在窗体设计时本着规范美观实用的原则进行设计。代码的设计对于我说是一个难题,因此在设计代码时多多参考书上的知识,对于不理解的地方多和同学老师交流,尽量使

38、自己编写的代码正确完整,同时使自己加深对代码的理解。2011年12月29日 星期四窗体的设计基本完成,今天主要工作是继续编写相关代码,在编写代码时我采用边写代码边调试的方式进行,以便有错误能及时修改。写代码是本次实习比较一个繁琐环节,也是考验耐心的环节。在编写代码时要做到细心因为一个字母的漏写或多写都会导致项目不能正常运行,在调试时出错是不可避免的,这就需要我静下心来仔细检查找出并修改错误的地方。尽管如此,代码作为本次项目的不可缺少的核心内容,我还是尽心尽力的做好每一步相应的工作。2011年12月30日 星期五繁琐的代码终于写完了,同时也宣告我的项目即将完成。今天主要工作就是运行测试我的项目,发现问题就马上停下来进行修改调整。通过几次的调试修正,我的代码也趋于完善。一个完整的程序还需要主界面来引导使用者快速了解项目的功能,做好我的主界面内容,我的“成绩管理系统”就宣告完工啦。看着自己做的系统流畅的运行,还是有点小小的成就感。只要认真学习,勤于思考,加上多多动手就能克服难关,按时完成任务。五、实习体会本次实习使我深刻体会到VBA的强大功能,VBA相比其他语言更加简单实用,利用VBA可以更轻松地实现重复的工作办公自动化,以Excel为平台,自定义Excel工具栏、菜单和界面,对数

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

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号