1、VB程序设计课程设计报告(2016 2017 学年第 1 学期)题 目: 排序演示 学 院: 经济与管理学院 班 级: 物流管理1502 学 号: 姓 名: 指导教师: 阮冰 时 间:起 2017年1月3日 止 1月6日 一、 课程设计基本信息课程代码:课程名称:计算机基础课程设计课程英文名称: puterbased Course Design课程所属单位(院(系)、教研室):数学与计算机学院计算机基础课程群课程面向专业:生物科学类、制药工程、制药工程(生物制药)、药物制剂、物流管理课程类型:必修课先修课程:大学计算机基础通识选修课程、Visual Basic程序设计课程学分:1 总学时:16
2、二、 课程设计目标掌握所学语言程序设计得方法,熟悉所学语言得开发环境及调试过程,熟悉所学语言中得数据类型,数据结构、语句结构、运算方法,巩固与加深对理论课中知识得理解,提高学生对所学知识得综合运用能力。通过综合设计要求达到下列基本技能:1.培养查阅参考资料、手册得自学能力,通过独立思考深入钻研问题,学会自己分析、解决问题。 2.通过对所选题目方案分析比较,确立方案,编制与调试程序,初步掌握程序设计得方法,能熟练调试程序。 3.系统设计编程简练,可用,功能全面,并有一定得容错能力。用户界面良好,有较好得输出功能。在完成课题基本要求后,具有创新型设计,具有一定得实用价值。4.根据个人得设计调试过程
3、,撰写设计报告。三、 课程设计内容利用已掌握得VB程序设计语言基础,以及面向对象得程序设计方法、事件驱动得编程方式,进行应用程序与系统得开发设计。在强化巩固已有编程知识基础之上,训练新得设计与编程思路,通过综合应用所学知识设计、编制、调试实用得Visual Basic程序。四、 课程设计要求1. 要求每个同学都要认真对待,积极参与。2. 课程设计结束时,提交完成得所有源程序、相关文件与可执行文件。同时填写并完成课程设计报告册。3. 不符合要求得程序、设计报告、抄袭得设计报告或源程序代码、在设计中完全未参与得将作不及格处理。五、 考核方式指导老师负责验收程序得运行结果,并结合学生得工作态度、实际
4、动手能力、创新精神与设计报告等进行综合考评,百分制计算,具体考核标准主要包含以下几个部分:1. 程序运行情况20分2. 程序功能得完善程度10分3. 程序结构得合理性10分4. 对问题得答辩情况20分5. 创新情况10分6. 学生得工作态度与独立工作能力10分7. 设计报告内容得规范性20分备注:1. 按规定时间填写各阶段文档,学习态度加5分2. 设计报告内容雷同扣40分,无调试过程问题分析扣10分,无参考文献扣10分3. 源程序无注释则在程序结构合理性扣10分六、 课程设计主要参考资料Visual Basic程序设计教程 第4版龚沛曾 高等教育出版社Visual Basic程序设计实验指导与
5、测试 第4版龚沛曾 高等教育出版社Visual Basic从入门到精通 清华大学出版社Visual Basic课程设计 王栋 清华大学出版社Visual Basic开发实战1200例 孙秀梅,巩建华 清华大学出版社七、 课程设计计划安排时 间任 务课程设计前一周选择课程设计题目,分析课题得要求,确定设计方案,完成报告册中“课程设计概述”课程设计第1天按功能模块编写详细设计说明,完成报告册中“总体设计”课程设计第2天编写程序、调试程序课程设计第3天编写程序、调试程序,完成报告册中“详细设计”课程设计第4天调试程序,完成报告册中“调试分析过程”课程设计第5天完成报告册中“总结”、“参考文献”、“课
6、程设计评审表”部分内容,提交课程设计报告、源程序、面试或答辩一、课程设计概述课程设计问题描述本题主要就是针对在程序设计中对数值型数据进行排序得问题,这虽然就是最基本得数据处理操作,但本题不仅综合了四种不同得排序算法:比较法、选择法、直接插入法与冒泡法,也涉及到了一些窗体编辑器,快捷菜单得做法,定时器得编码,使得本题更加得复杂,也增加了本题得理解难度。本程序以动画方式演示上述四种排序算法得排序过程,并可以比较四种算法所需交换数据得次数,从而对四种排序算法有一个比较直观得认识,也可以对四种排序算法得排序效率进行对比。本程序还可以找出所产生得10个随机数中得最大值、最小值与平均值。设计要求1. 对所
7、选题目方案分析比较,确立方案。2. 用户界面良好,有较好得输入输出能力。3. 编制与调试程序,初步掌握程序设计得方法,能熟练调试程序。4、 程序运行情况正常,程序功能完善,程序结构合理。5、 系统设计编程可用,简练,并有一定得容错能力。6、 在完成基本要求后,最好能有一定得创新。设计目得1. 以计算机语言程序设计(VB)课程为基础,目得就是进一步培养学生综合应用VB得各种编程知识与技巧进行程序设计得能力对本学期VB课程学习得一个总结,对所学知识得巩固与加深。2. 开发与挖掘我们得创新与实践能力,使我们达到具备设计功能较为复杂得Windows应用程序得能力。3. 通过课程设计,培养我们自主学习与
8、独立创新得精神,也就是人才培养体系中极为重要得一环。4. 掌握所学语言程序设计得方法,熟悉所学语言得开发环境及调试过程,熟悉所学语言中得数据类型,数据结构、语句结构、运算方法,巩固与加深对理论课中知识得理解,提高学生对所学知识得综合运用能力。开发环境、操作系统:Windows10 Sever/XP/Professional 、处理器:486DX/66 MHz或更高得处理器 、显示器:VGA或更高分辨率得显示器 、应用软件:Visual Basic 6、0二、总体设计(1)系统功能需求分析1、 程序启动后,显示图6、1所示得主界面。首先单击“产生10个随机数”按钮来产生10个随机数,并显示在10
9、个文本框中;然后选择一种“演示模式”与“排序方式”,其中演示模式可以直接给出排序结果,也可以通过动画动态演示整个排序过程,排序方式可以按从小到大顺序,也可以按从大到小顺序排序。图6、1 启动后得主界面2、 在主窗口得空白区单击鼠标右键,弹出如图6、2所示得快捷菜单。从中选择“排序算法”命令,打开图6、3所示得对话框,从中选择一种排序方式,单击不同排序方式时,“算法描述”中简要介绍了这种算法。单击“确定”按钮返回到主窗口,主窗口中最上方框架控件得标题文字显示当前所选得排序算法。图6、2 快捷菜单图6、3 “排序算法选择”对话框 快捷菜单中有一“从文件读取数据”命令,使用此命令可以从当前目录得da
10、ta、txt文件中读入10个数。要使用这个命令,必须事先建立这个文本文件。3、 设置完毕,单击“开始排序”按钮(此按钮在生成数据之前就是不可用得)启动排序过程。若选择了动画方式(见图6、4),红色背景得文本框表示当前正在比较得元素,黄色得代表己排序得元素,两个运动得文本框表示交换过程。在排序过程中可以调节水平滚动条来控制演示得速度。排序结束后程序以消息框得形式报告数据交换得次数(如图6、5)。可以使用快捷菜单中得“将数据写入文件”命令将排序后得数据保存到“data、txt”中覆盖原有内容。图6、4 程序主界面 4、 选择窗口主菜单中得“颜色设置”命令,主窗口扩大,底部显示“颜色设置”框架(如图
11、6、6所示),可以对“文本背景色”、“文本前景色”、“已排序元素色”与“交换结点色”进行设置。再选择此命令,窗口恢复到原来大小。 图6、5 显示交换次数 图6、6系统主菜单 图6、7确认退出对话颜色设置5、 选择“退出”命令可退出本程序,程序显示图6、7所示得对话框予以确认。二、总体设计(2)系统总体设计框架1. 基本窗体控件设计2. 菜单编辑器快捷菜单得弹出3. 定时器得编码4. 窗体编辑器多重窗体1. 四种排序方法(比较法、选择法,直接插入法与冒泡法)2. 最大值,最小值,平均值得计算3. 动画演示4. 对话框弹出编写代码窗体设计排 序 演 示三、详细设计主要功能模块源程序1. 窗体设计1
12、.四个Frame 控件第一个Frame 控件包含此问题得基本运算得也就是时刻会发生变化得控件。 第二个与第三个 Frame 控件主要就是对此程序运行方式得选择。 第四个Frame 控件实质就是菜单项中 “颜色设置”单机事件得结果,就是对第一个Frame中控件运行时得颜色设置。2 、1个文本框数组包括10个随机数文本框与两个交换时运动着得文本框3、 菜单设计下拉式菜单分为两部分,每部分功能不同。 弹出式菜单分为三部分,第一部分得单机事件会出现一个新得Form窗体。三、详细设计主要功能模块源程序4 、一个水平滚动条对Frame中控件运动时得速度调控。5 五个mand按钮“产生十个随机数” 命令按钮
13、1(0)单击事件会在前十个文本框中产生十个随机数 “开始排序”命令按钮1(2)在第二个与第三个 Frame 中控件都被选择后才会有效,然后对十个随机数进行不同方式得排序。 “ 默认值”命令按钮2就是对文本框数组颜色设置得默认按钮。 “停止”命令按钮1(2)在 情况下才有效。 “退出”命令按钮3就是用来结束该程序得运行。6 一个timer控件对此程序运行时得时间间隔控制。7 一个bo数组包括四个bo控件 Color1(0)文本背景色 Color1(1)文本前景色 Color1(2)已排序元素色 Color1(3)交换元素色2. 代码设计1. 变量声明Option ExplicitOption B
14、ase 1 Dim a(10) As Integer 随机数数组Dim First As IntegerDim Second As IntegerPrivate mblnMoving As BooleanDim Speed As IntegerDim inColor1 As Long 文本背景色Dim inColor2 As Long 文本前景色Dim inColor3 As Long 已排序元素色Dim inColor4 As Long 交换元素色Dim inNum As Long 交换次数Public inSortMethod As Integer 排序算法0比较法,1选择法 2直接插入法
15、,3冒泡法Private inSortOrder As Integer 排序方向 0升序 1降序Private inShowMode As Integer 演示模式,0直接求解,1动态演示2.1 mand1(0) 产生十个随机数 Private Sub mand1(0)_Click Randomize For i = 1 To 10 a(i) = Int(Rnd * 201) 100 Text1(i)、Text = a(i) Text1(i)、BackColor=inColor1 Text1(i)、ForeColor = inColor2 Next i mand1、Enabled = True
16、Frame2 Frame3中option得选择直接关系到随机数得排序方式2 mand1(1)开始排序 Private Sub Option1_Click(Index As Integer) intShowMode = IndexEnd SubPrivate Sub Option2_Click(Index As Integer) intSortOrder = IndexEnd Sub当排序结束后,会弹出如下一个对话框。response = MsgBox(比较法排序完毕,交换次数为: + Str(Num), vbOKOnly, 系统提示)代码为: 3 mand1(2) 停止程序得运行 Privat
17、e Sub mand3_Click If mand3、Caption = 停止 Then Timer1、Enabled = False mand3、Caption = 继续 ElseIf mand3、Caption = 继续 Then Timer1、Enabled = Truemand3、Caption = 停止 End If End IfEnd Sub 4 mand2 默认颜色得按钮Private Sub mand2_Click Color1(0)、ListIndex = 0 inColor1 = vbGreen 文本背景色 Color1(1)、ListIndex = 1 inColor2
18、= vbBlack 文本前景色 Color1(2)、ListIndex = 2 inColor3 = vbYellow 已排序元素色 Color1(3)、ListIndex = 3 inColor4 = vbRed 交换元素色5 mand3退出按钮3、bo数组 名称分别为 Color1(0)文本背景色 Color1(1)文本前景色 Color1(2)已排序元素色 Color1(3)交换元素色 每个bo又有不同得list,都为黑色,绿色,蓝色,青色,红色,黄色紫色分布。 用index区分 Private Sub Color1_Click(Index As Integer) Dim i As In
19、teger Select Case Index Case 0 color1(0)文本背景色 Select Case Color1(0)、ListIndex bo1(0)得list属性,用index区分背景颜色。 Case 0 inColor1 = vbGreen Case 1 inColor1 = vbBlue Case 2 inColor41= vbRed Case 3 inColor41= vbYellow End Select For I = 1 To 10 Text1(I)、BackColor = inColor1 Next I End Select For i = 1 To 10 T
20、ext1(i)、BackColor = intColor1 Next i Case 1 color1(1)文本前景色 Select Case Color1(1)、ListIndexbo1(1)得list属性,用index区分前景颜色。 Case 0 inColor4 = vbGreen Case 1 inColor4 = vbBlue Case 2 inColor4 = vbRed Case 3 inColor4 = vbYellow End Select For I = 1 To 10 Text1(I)、ForeColor = inColor2 Next I End Select For i
21、 = 1 To 10 Text1(i)、ForeColor = intColor2 Next ibo1(2)得list属性,用index区分已排序元素色。 Case 2 Select Case Color1(2)、ListIndex Case 0 inColor4 = vbGreen Case 1 inColor4 = vbBlue Case 2 inColor4 = vbRed Case 3 inColor4 = vbYellow End Select For I = 1 To 10 Text1(I)、ForeColor = inColor2 Next I End Select Case 3
22、 处理正在交换得结点得背景色 Select Case Color1(3)、ListIndex Case 0bo1(3)得list属性,用index区分交换元素色。 inColor4 = vbGreen Case 1 inColor4 = vbBlue Case 2 inColor4 = vbRed Case 3 inColor4 = vbYellow End Select For I = 1 To 10 Text1(I)、ForeColor = inColor2 Next I End SelectEnd Sub4、开始排序 Private Sub mand1(1)_Click Dim Min
23、As Integer, Max As Integer, s As Single Min = 1000: Max = 1000: s = 0 For i = 1 To 10 If e(i) Max Then Max = e(i) If e(i) Min Then Min = e(i) s = s + e(i) Next i Text4、Text = Max 最大值 Text5、Text = Min 最小值 Text6、Text = s / 10 平均值 mand3、Enabled = True Select Case intSortMethod Case 0 比较法 paration_sort
24、e, intSortOrder Case 1 选择法 selection_sort e, intSortOrder Case 2 直接插入法 insertion_sort e, intSortOrder Case 3 冒泡法 bubble_sort e, intSortOrder End SelectPrivate Sub mand1(2)_Click Exit_ClickEnd Sub5.弹出菜单 Private Sub Form_MouseUp(Button As Integer, Shift As Integer, x As Single, Y As Single) If Button
25、= 2 Then PopupMenu Menu2 End IfEnd Sub6、下拉式菜单 Private Sub Color_Click Form1、Height = Form1、Height + 2000 Frame3、Visible = True Color、Checked = TrueEnd Sub Private Sub Exit_Click Dim I As Integer I = MsgBox(您真得要退出吗?, vbYesNo + vbQuestion + vbDefaultButton2, 请您确认!) If I = vbYes Then End End IfEnd Sub8
26、. 弹出菜单中排序算法 四种同时出现新窗体 2个Frame控件一个包含了一个option数组,就是对排序方式得选择 另一个包含了一个text控件,就是对选中得option得解释 1个mand按钮,就是与Form1得衔接,决定了Form1中十个随机数得排序方式四、调试分析过程(1)调试过程出现得问题及解决方法1、在程序一运行时,没有对speed进行初定量,在程序运行后,动态演示时,负责显示交换元素得两个文本框不运动,也没有排序得作用。 解决:在Form1得load事件中增加了 speed = 100 语句。2.下拉式菜单与快捷菜单分离不开 导致快捷菜单不出现 下拉式菜单又出现太多选项 解决:增加
27、第二个主菜单“弹出式菜单”,且不可见。3、快捷菜单无法弹出,且无法联系到窗体。弹出菜单要用PopupMenu方法 在单击“排序算法”时,出现 Form2、show 语句,联系到Form14、对四种排序方法得编程混淆不清在网络上查找资料,先了解四种排序方法得特点与区别。用简单得语句解释理解,然后随机列举几个数字,用排序方法依次排大小,总结规律。写出排序方法得代码。5. 动态演示如何演变用Timer事件进行编程。四、调试分析过程(2)测试数据及测试结果程序运行后,单击下拉式菜单,对颜色进行设置,单击“产生十个随机数”,可以瞧到随机数所在文本框得背景色与前景色发生改变,然后对演示模式与排序方式进行选
28、择1、当选择静态演示时,会弹出如下对话框。单击确定后,发现排序与最值,平均值得运算已完成。 2、当动态演示时,正在排序元素与已排序元素文本背景色发生变化,且两个变化文本框会运动,在排序结束后,也会出现系统提示得对话框。还可以通过对水平滚动条设置来调整交换速度单击右键会弹出快捷菜单 单击“停止”按钮时,排序运动会暂停,再次单击时又会重新启动。 单击“退出按钮时”,会出现对话框2. 第二个窗体得选择也关系到第一个窗体得运行Option得选择不同,窗体一中得排序方法也不同。五、总结设计用到得知识点 1 多窗体得设计与衔接 2 四种排序方法得运用与编程 3 弹出式菜单得运用 4 最大值,最小值,平均值
29、得计算 5 定时器得运用使文本框进行移动 6 滚动条与Frame控件得运用 7 读入与读出数据收获与体会在此次课程设计中,我才真正了解到VB得魅力,生活得方方面面都体现了vb知识,计算机上那些普普通通得小程序也同样需要那么多得代码才能够运行起来在,而在已经结束得半年VB课程学习中,我们学到得只就是VB知识得冰山一角,要想探索到vb得奥秘,我们还需更将努力。 在完成该课题得过程中,我也深刻体会到只有对vb事件与方法真正理解,我们在瞧到题目时才会胸有成竹,下笔如有神。 在编程程序时,我们应该多思考,多提问,从仿照与借鉴中学习与积累属于自己得知识。不足与努力方向本程序涉及得知识点很广,不仅包括有比较
30、法排序,插入法排序,冒泡发排序,选择法排序,集合了所有得排序,还包括多窗体得设计与衔接,弹出式菜单得运用,读入数据与数据写入,定时器得运用,各种事件与方法联系比较密切,让我对题目得理解变得困难。而且控件数量十分多,十分容易混杂。 而且我对多窗体完全不了解,对读入数据与写入数据鲜有接触,最重要得四种排序方法又十分混杂,有点让我不知所措。 今后在学习与理解vb学习得过程中,要真正得理解,始终怀有一种求知得态度,不懂就问,不停地钻研与实践,终会得到回报。六、参考文献参考书籍及参考论文与网址1.2. Visual Basic 程序设计代码第四版3.4.课程设计成绩评审表姓名易思佳学号1508090038班级物流1502设计题目排序演示作品描述本程序以动画方式演示四种排序算法得排序过程,并可以比较四种算法所需交换数据得次数,从而对四种排序算法有一个比较直观得认识,也可以对四种排序算法得排序效率进行对比。本程序还可以找出所产生得10个随机数中得最大值、最小值与平均值。观测内容分值评 分(上限)得 分ABCDE程序运行情况2020151053程序功能得完善程度10108642程序结构得合理性10108642对问题得答辩情况2020151053创新情况10108642工作态度与独立工作能力10108642设计报告内容得规范性2020151053指导教师评定成绩 指导教师(签名) 年 月 日