石家庄铁道大学课程设计
《课后习题答案解答系统》的课程设
计报告
单 位 土木工程 分院(系) 专 业 安全工程 学 号 学生姓名 指导教师
完成日期 2012年 6 月 23 日
摘 要
本课后习题解答系统是基于Visual Basic 6.0 的基础上设计制作的。VB系统是伴随着windows的操作系统的发展而发展起来,于1998年由美国微软公司推出的,包含了数据库、Internet和创建控件等强大功能的软件
随着科技的发展,在日常教育中,越来越电子化,越来越无纸化,VB设计软体有着面向对象可视化,事件驱动的编程机制,易学易用的开发环境等优点,成为简单编程的大众新宠,但在VB学习中,面对大量的课后习题,查阅及学习变的繁杂,因此设计一款VB课后习题解答系统成为必要。
本系统主要通过控件的基本使用,文件的读取,窗体之间及窗体内的控件显示切换等实现课后习题的方便查询与解答。减少查找的时间,增加查询的功效。
软体围绕文件的调用与转换,通过相关控件的使用及算法的设计,实现用尽量少的窗体及控件代码统一调用子程序、附属执行文件及相关文档。在此同时添加了相应的背景音乐及图片,美化界面,增加用户使用的舒适度。
关键词:面向对象、事件驱动 Visual basic 6.0
课后习题解答系统 文件读取
目 录
1.选题的意义„„„„„„„„„„„„„„„„„„„„„„„1 2.系统功能需求分析„„„„„„„„„„„„„„„„„„„„1
2.1系统概述„„„„„„„„„„„„„„„„„„„„„„„„„„1 2.2系统的组成„„„„„„„„„„„„„„„„„„„„„„„„„1 2.3系统的运行环境„„„„„„„„„„„„„„„„„„„„„„„1
3.系统设计„„„„„„„„„„„„„„„„„„„„„„2
3.1总体结构设计„„„„„„„„„„„„„„„„„„„„„„„„2 3.2各部分意义„„„„„„„„„„„„„„„„„„„„„„„„„2
4.系统实现„„„„„„„„„„„„„„„„„„„„„„„3
4.1登陆模块的设计与实现„„„„„„„„„„„„„„„„„„„3 4.2运行界面模块的设计与实现„„„„„„„„„„„„„„„„„3 4.3“关于我们”界面模块的设计实现„„„„„„„„„„„„„„9
5.总结„„„„„„„„„„„„„„„„„„„„„„„„„„10
5.1总结„„„„„„„„„„„„„„„„„„„„„„„„„„10 5.2存在的主要问题„„„„„„„„„„„„„„„„„„„„„10
参考文献„„„„„„„„„„„„„„„„„„„„„„„„10
课后习题解答系统
1.选题的意义
随着VB学习的深入,课后习题的查阅与解答变的繁复,因此有必要通过设计制作一款软体方便VB学习,增加VB学习的效率。同时本课题以习题解答的方式囊括了本学期所学VB知识的各方各面,是对学生的学习效果及能力的极大挑战与考查。
本课题通过该题目的设计,各控件使用、读取文件、菜单栏建立使用及窗体连接,进而掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能。通过课后习题解答系统的设计编写,实现对所学知识的整合与运用,同时增强学生发现问题、解决问题的能力,通过实践强化知识学习,同时感受VB程序设计的乐趣与魅力。
2.系统功能需求分析
2.1系统概述
分立的设计制作各个习题解答的子系统,生成exe文件,截取运行界面图片,通过文档保存核心代码,以习题解答系统的运行界面的命令按钮连接起来,在同一窗体内实现切换,形成统一的,运行流畅的,使用方便,界面美观的课后习题解答系统。
2.2系统的组成及各模块的功能
本系统包含多种控件,如:命令按钮、文本框、标签、图像框、图片框及菜单栏等,通过连接各个附属文件,在同一载体中实现切换,减少窗体、控件的数量及代码的无谓增多。各附属文件中,执行性文件通过VB设计制作,图片通过屏幕截图,核心代码通过文本文档保存,通过主程序中的Imagebox和Text切换调用呈现。同时添加了背景照片、音乐及Timer时间以美化界面。
2.3系统的运行环境
2.3.1系统开发环境:
操作系统:windows XP
系统软件:Visual Basic 6.0
2.3.2系统运行环境:
操作系统:windows XP
系统软件:Visual Basic 6.0
3.系统设计
3.1总体结构设计
各个习题的运行界面图片 登录界面 课后习题解答系统 运行界面 关于我们 各个习题的核心代码文档 各个习题的运行结果 3.2各部分意义
(1)登录界面。
(2)运行界面,通过菜单栏选中某章某题后,在窗口工作区显示几个命令按钮,标题分别为“题目内容”、“界面布局”、“程序代码”、“运行效果”、“返回”。当单击某个命令按钮时,就显示相应内容。其中,单击“界面布局”命令按钮,则显示“界面设计”图示;单击“程序代码”命令按钮,则显示该题目的全部代码或核心代码部分;单击“运行效果”命令按钮,则可以直接运行该VB程序;单击“返回”命令按钮,则窗口工作区内容清空。
(3)各个习题答案的运行的子程序设计,最后将生成的exe文件通过运行界面的“运行效果”与课后习题解答系统主程序连接起来,而运行代码通过文本文档的保存,通过“程序代码”命令按钮在主程序的文本框中进行读写。至于运行界面,通过对运行效果的截图保存,通过“界面布局”命令按钮和Imagebox的切换与主程序连接。
4.程序实现
4.1登录界面
Private Declare Function sndPlaySound Lib \"winmm.dll\" Alias \"sndPlaySoundA\" (ByVal_lpszSoundName As String, ByVal uFlags As Long) As Long Private Sub Command1_Click() Form1.Hide Form2.Show
End Sub【窗体的切换】
Private Sub Command2_Click() End
End Sub【结束运行】 Private Sub Form_Load()
Image1.Picture = LoadPicture(App.Path + \"水墨画2.jpg\")【加载图片】 Dim plays As Long
plays = sndPlaySound(App.Path + \"天空之城.mp3\End Sub【运行音乐】
4.2运行界面
Public flag As Integer, dizhi As String
Sub dakaidaima(n As String)
Open App.Path + n For Input As #1 Do While Not EOF(1) Line Input #1, k
Text1 = Text1 & k & Chr(13) & Chr(10) Loop Close #1
End Sub【调用文本文档】
Sub huanti()
Image2.Visible = False Text1.Visible = False End Sub
Private Sub Command1_Click()【“界面布局”命令按钮】 Image2.Visible = True Text1.Visible = False Select Case flag Case 0
MsgBox \"请选择试题\请选择\" Case 31
Image2.Picture = LoadPicture(App.Path + \"3.1截图.bmp\") Case 32
Image2.Picture = LoadPicture(App.Path + \"3.2截图.bmp\") Case 41
Image2.Picture = LoadPicture(App.Path + \"4.1截图.bmp\") Case 51, 52, 72, 73 Image2.Visible = False
MsgBox \"加油,做你想做的吧,我们没要求\界面要求\" Case 53
Image2.Picture = LoadPicture(App.Path + \"5.3截图.bmp\") Case 61
Image2.Picture = LoadPicture(App.Path + \"6.1截图.bmp\") Case 62
Image2.Picture = LoadPicture(App.Path + \"6.2截图.bmp\") Case 63
Image2.Picture = LoadPicture(App.Path + \"6.3截图.bmp\") Case
Image2.Picture = LoadPicture(App.Path + \"6.4截图.bmp\") Case 71
Image2.Picture = LoadPicture(App.Path + \"7.1截图.bmp\") Case 81
Image2.Picture = LoadPicture(App.Path + \"8.1截图.bmp\") Case 82
Image2.Picture = LoadPicture(App.Path + \"8.2截图.bmp\") End Select
End Sub【根据所选的试题,在Image1中加载相应的截图照片】
Private Sub Command2_Click()【“程序代码”命令按钮】 Text1.Visible = True Image2.Visible = False Select Case flag Case 0
MsgBox \"请选择试题\请选择\"
Text1.Visible = False Case 31
Text1.Text = \"\"
dizhi = \"3.1代码.txt\" Call dakaidaima(dizhi) Case 32
Text1.Text = \"\"
dizhi = \"3.2代码.txt\" Call dakaidaima(dizhi) Case 41
Text1.Text = \"\"
dizhi = \"4.1代码.txt\" Call dakaidaima(dizhi) Case 51
Text1.Text = \"\"
dizhi = \"5.1代码.txt\" Call dakaidaima(dizhi) Case 52
Text1.Text = \"\"
dizhi = \"5.2代码.txt\" Call dakaidaima(dizhi) Case 53
Text1.Text = \"\"
dizhi = \"5.3代码.txt\" Call dakaidaima(dizhi) Case 61
Text1.Text = \"\"
dizhi = \"6.1代码.txt\" Call dakaidaima(dizhi) Case 62
Text1.Text = \"\"
dizhi = \"6.2代码.txt\" Call dakaidaima(dizhi) Case 63
Text1.Text = \"\"
dizhi = \"6.3代码.txt\" Call dakaidaima(dizhi) Case
Text1.Text = \"\"
dizhi = \"6.4代码.txt\" Call dakaidaima(dizhi) Case 71
Text1.Text = \"\"
dizhi = \"7.1代码.txt\"
Call dakaidaima(dizhi) Case 72
Text1.Text = \"\"
dizhi = \"7.2代码.txt\" Call dakaidaima(dizhi) Case 73
Text1.Text = \"\"
dizhi = \"7.3代码.txt\" Call dakaidaima(dizhi) Case 81
Text1.Text = \"\"
dizhi = \"8.1代码.txt\" Call dakaidaima(dizhi) Case 82
Text1.Text = \"\"
dizhi = \"8.2代码.txt\" Call dakaidaima(dizhi) End Select
End Sub【根据所选试题,调用相应的代码存储的文本文档,在Text中显示】
Private Sub Command3_Click()【“运行效果”命令按钮】 Select Case flag Case 0
MsgBox \"请选择试题\请选择\" Case 31
Shell App.Path + \"3.1工程.exe\Case 32
Shell App.Path + \"3.2工程.exe\Case 41
Shell App.Path + \"4.1工程.exe\Case 51
Shell App.Path + \"5.1工程.exe\Case 52
Shell App.Path + \"5.2工程.exe\Case 53
Shell App.Path + \"5.3工程.exe\Case 61
Shell App.Path + \"6.1工程.exe\Case 62
Shell App.Path + \"6.2工程.exe\Case 63
Shell App.Path + \"6.3工程.exe\Case
Shell App.Path + \"6.4工程.exe\
Case 71
Shell App.Path + \"7.1工程.exe\Case 81
Shell App.Path + \"8.1工程.exe\Case 82
Shell App.Path + \"8.2工程.exe\Case 72, 73
MsgBox \"此题只有过程代码\请看清题目\" End Select
End Sub【根据所选试题,调用相应的执行文件。】
Private Sub Command4_Click()【“返回”命令按钮】 Text1.Visible = False Image2.Visible = False Label1.Caption = \"\" Label1.Visible = False End Sub
Private Sub Command5_Click()【“退出软体”命令按钮】 End End Sub
Private Sub fuer_Click(Index As Integer)
flag = 82【为菜单栏选项赋值,方便后面的筛选】 Label1.Caption = \"附加题二\" Call huanti【换题时切换】 End Sub
Private Sub fuyi_Click(Index As Integer) flag = 81
Label1.Caption = \"附加题一\" Call huanti End Sub
Private Sub guanyuzuopin_Click(Index As Integer) Form3.Show End Sub
Private Sub liuer_Click(Index As Integer) flag = 62
Label1.Caption = \"第六章第二题\" Call huanti End Sub
Private Sub liusan_Click(Index As Integer) flag = 63
Label1.Caption = \"第六章第三题\" Call huanti End Sub
Private Sub liusi_Click(Index As Integer) flag =
Label1.Caption = \"第六章第四题\" Call huanti End Sub
Private Sub liuyi_Click(Index As Integer) flag = 61
Label1.Caption = \"第六章第一题\" Call huanti End Sub
Private Sub qier_Click(Index As Integer) flag = 72
Label1.Caption = \"第七章第二题\" Call huanti End Sub
Private Sub qisan_Click(Index As Integer) flag = 73
Label1.Caption = \"第七章第三题\" Call huanti End Sub
Private Sub qiyi_Click(Index As Integer) flag = 71
Label1.Caption = \"第七章第一题\" Call huanti End Sub
Private Sub saner_Click(Index As Integer) flag = 32
Label1.Caption = \"第三章第二题\" Call huanti End Sub
Private Sub sanyi_Click(Index As Integer) flag = 31
Label1.Caption = \"第三章第一题\" Call huanti End Sub
Private Sub siyi_Click(Index As Integer) flag = 41
Label1.Caption = \"第四章第一题\" Call huanti End Sub
Private Sub wuer_Click(Index As Integer) flag = 52
Label1.Caption = \"第五章第二题\" Call huanti End Sub
Private Sub wusan_Click(Index As Integer) flag = 53
Label1.Caption = \"第五章第三题\" Call huanti End Sub
Private Sub wuyi_Click(Index As Integer) flag = 51
Label1.Caption = \"第五章第一题\" Call huanti End Sub
4.3“关于我们”界面
Private Sub Form_Load()
Picture1.Picture = LoadPicture(App.Path + \"水墨画3.jpg\") Image1.Picture = LoadPicture(App.Path + \"蝴蝶.jpg\") Timer1.Enabled = True End Sub
Private Sub Timer1_Timer() Image1.Move Image1.Left - 50 End Sub【设置蝴蝶的运动】
5、总结
5.1 总结
本次课业设计共历时十天,工程量极大,是对我是一份极大的的挑战,不过也正是因为这样,我在这其中收获颇多,获益匪浅。在这过程中,我深刻的理解了“实践是最好的老师”的意义,仅仅依赖参考书上的几句代码是极其不现实的,在这份软体的设计中,我不断面临着这样或者那样的小问题,这迫使我不得不开始进行自学和探索,当然在这其中,和同学们及老师的交流也是尤为重要的,毕竟问是最讨巧的学习方式。我们不可能学会所有的知识,因此在实践中的自我充电,自我学习变得尤为重要,在这份软体设计中,我便初步学会了调用文件等方法辅助设计,简化代码长度。除此之外,创新精神也是尤为重要的。在自己技术能力范围及时间等内,尽量达到自己的预期目标,实现卓尔不同并且更加满足用户需要的设计目的。
5.2在设计过程中存在的问题
1、变量声明部分。主要是Public、Dim、Static等的使用,不清楚变量声明的试用范围,因此常常需要重复声明,增加了无谓代码;并且对于数组的声明,在本软体中常常需
要在同一窗体内不同模块里有不同的控件调用同一数组,解决方法是在通用声明中Dim a()如此解决,免除了重复赋值的代码浪费。
2、图片等附属文件的调用。
3、代码的简化,在本软体中,因为相关子程序类似度大,因此常常需要重复过程,用sub等极大的简化了代码,也减少了调试过程中的麻烦。
4、本次结课设计如果能增加设计时间,增加课程设计所包含的内容,同时设计时可以上网方便一点的话,我相信效果会更好。
6、参考文献
1.《Visual Basic 6.0编程案例精解》, 张路平,电子工业出版社
2.《Visual Basic 6.0数据库编程思想与实践》 ,谭小丹,冶金工业出版社 3.《Visual Basic+Access数据库项目开发实践》,周国民,中国铁道出版社 4.《Visual Basic程序设计》,范通让,王学军,科学技术出版社,2012 5. VB 6.0中文版语言参考手册. 6. MSDN
因篇幅问题不能全部显示,请点此查看更多更全内容