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