1《VB程序设计》课程设计报告(2016—2017学年第1学期)题目:排序演示学院:经济与管理学院班级:物流管理1502学号:姓名:指导教师:阮冰时间:起2017年1月3日止1月6日2一、课程设计基本信息课程代码:05190124课程名称:计算机基础课程设计课程英文名称:Computer-basedCourseDesign课程所属单位(院(系)、教研室):数学与计算机学院计算机基础课程群课程面向专业:生物科学类、制药工程、制药工程(生物制药)、药物制剂、物流管理课程类型:必修课先修课程:大学计算机基础通识选修课程、VisualBasic程序设计课程学分:1总学时:16二、课程设计目标掌握所学语言程序设计的方法,熟悉所学语言的开发环境及调试过程,熟悉所学语言中的数据类型,数据结构、语句结构、运算方法,巩固和加深对理论课中知识的理解,提高学生对所学知识的综合运用能力。通过综合设计要求达到下列基本技能:1.培养查阅参考资料、手册的自学能力,通过独立思考深入钻研问题,学会自己分析、解决问题。2.通过对所选题目方案分析比较,确立方案,编制与调试程序,初步掌握程序设计的方法,能熟练调试程序。3.系统设计编程简练,可用,功能全面,并有一定的容错能力。用户界面良好,有较好的输出功能。在完成课题基本要求后,具有创新型设计,具有一定的实用价值。4.根据个人的设计调试过程,撰写设计报告。三、课程设计内容利用已掌握的VB程序设计语言基础,以及面向对象的程序设计方法、事件驱动的编程方式,进行应用程序和系统的开发设计。在强化巩固已有编程知识基础之上,训练新的设计与编程思路,通过综合应用所学知识设计、编制、调试实用的VisualBasic程序。四、课程设计要求1.要求每个同学都要认真对待,积极参与。2.课程设计结束时,提交完成的所有源程序、相关文件和可执行文件。同时填写并完成《课程设计报告册》。3.不符合要求的程序、设计报告、抄袭的设计报告或源程序代码、在设计中完全未参与的将作不及格处理。五、考核方式指导老师负责验收程序的运行结果,并结合学生的工作态度、实际动手能力、创新精神和设计报告等进行综合考评,百分制计算,具体考核标准主要包含以下几个部分:1.程序运行情况20分2.程序功能的完善程度10分3.程序结构的合理性10分34.对问题的答辩情况20分5.创新情况10分6.学生的工作态度与独立工作能力10分7.设计报告内容的规范性20分备注:1.按规定时间填写各阶段文档,学习态度加5分2.设计报告内容雷同扣40分,无调试过程问题分析扣10分,无参考文献扣10分3.源程序无注释则在程序结构合理性扣10分六、课程设计主要参考资料《VisualBasic程序设计教程第4版》龚沛曾高等教育出版社《VisualBasic程序设计实验指导与测试第4版》龚沛曾高等教育出版社《VisualBasic从入门到精通》清华大学出版社《VisualBasic课程设计》王栋清华大学出版社《VisualBasic开发实战1200例》孙秀梅,巩建华清华大学出版社七、课程设计计划安排时间任务课程设计前一周选择课程设计题目,分析课题的要求,确定设计方案,完成报告册中“课程设计概述”课程设计第1天按功能模块编写详细设计说明,完成报告册中“总体设计”课程设计第2天编写程序、调试程序课程设计第3天编写程序、调试程序,完成报告册中“详细设计”课程设计第4天调试程序,完成报告册中“调试分析过程”课程设计第5天完成报告册中“总结”、“参考文献”、“课程设计评审表”部分内容,提交课程设计报告、源程序、面试或答辩4一、课程设计概述课程设计问题描述本题主要是针对在程序设计中对数值型数据进行排序的问题,这虽然是最基本的数据处理操作,但本题不仅综合了四种不同的排序算法:比较法、选择法、直接插入法和冒泡法,也涉及到了一些窗体编辑器,快捷菜单的做法,定时器的编码,使得本题更加的复杂,也增加了本题的理解难度。本程序以动画方式演示上述四种排序算法的排序过程,并可以比较四种算法所需交换数据的次数,从而对四种排序算法有一个比较直观的认识,也可以对四种排序算法的排序效率进行对比。本程序还可以找出所产生的10个随机数中的最大值、最小值和平均值。设计要求1.对所选题目方案分析比较,确立方案。2.用户界面良好,有较好的输入输出能力。3.编制与调试程序,初步掌握程序设计的方法,能熟练调试程序。4.程序运行情况正常,程序功能完善,程序结构合理。5.系统设计编程可用,简练,并有一定的容错能力。6.在完成基本要求后,最好能有一定的创新。设计目的1.以《计算机语言程序设计(VB)》课程为基础,目的是进一步培养学生综合应用VB的各种编程知识和技巧进行程序设计的能力对本学期VB课程学习的一个总结,对所学知识的巩固与加深。2.开发和挖掘我们的创新和实践能力,使我们达到具备设计功能较为复杂的Windows应用程序的能力。3.通过课程设计,培养我们自主学习和独立创新的精神,也是人才培养体系中极为重要的一环。4.掌握所学语言程序设计的方法,熟悉所学语言的开发环境及调试过程,熟悉所学语言中的数据类型,数据结构、语句结构、运算方法,巩固和加深对理论课中知识的理解,提高学生对所学知识的综合运用能力。5开发环境.操作系统:Windows10Sever/XP/Professional.处理器:486DX/66MHz或更高的处理器.显示器:VGA或更高分辨率的显示器.应用软件:VisualBasic6.06二、总体设计(1)系统功能需求分析1.程序启动后,显示图6.1所示的主界面。首先单击“产生10个随机数”按钮来产生10个随机数,并显示在10个文本框中;然后选择一种“演示模式”和“排序方式”,其中演示模式可以直接给出排序结果,也可以通过动画动态演示整个排序过程,排序方式可以按从小到大顺序,也可以按从大到小顺序排序。图6.1启动后的主界面2.在主窗口的空白区单击鼠标右键,弹出如图6.2所示的快捷菜单。从中选择“排序算法”命令,打开图6.3所示的对话框,从中选择一种排序方式,单击不同排序方式时,“算法描述”中简要介绍了这种算法。单击“确定”按钮返回到主窗口,主窗口中最上方框架控件的标题文字显示当前所选的排序算法。图6.2快捷菜单图6.3“排序算法选择”对话框快捷菜单中有一“从文件读取数据”命令,使用此命令可以从当前目录的data.txt文件中读入10个数。要使用这个命令,必须事先建立这个文本文件。73.设置完毕,单击“开始排序”按钮(此按钮在生成数据之前是不可用的)启动排序过程。若选择了动画方式(见图6.4),红色背景的文本框表示当前正在比较的元素,黄色的代表己排序的元素,两个运动的文本框表示交换过程。在排序过程中可以调节水平滚动条来控制演示的速度。排序结束后程序以消息框的形式报告数据交换的次数(如图6.5)。可以使用快捷菜单中的“将数据写入文件”命令将排序后的数据保存到“data.txt”中覆盖原有内容。图6.4程序主界面4.选择窗口主菜单中的“颜色设置”命令,主窗口扩大,底部显示“颜色设置”框架(如图6.6所示),可以对“文本背景色”、“文本前景色”、“已排序元素色”和“交换结点色”进行设置。再选择此命令,窗口恢复到原来大小。图6.5显示交换次数图6.6系统主菜单5.选择“退出”命令可退出本程序,程序显示图6.7所示的对话框予以确认。图6.7确认退出对话颜色设置8二、总体设计(2)系统总体设计框架排序演示窗体设计1.基本窗体控件设计2.菜单编辑器------快捷菜单的弹出3.定时器的编码4.窗体编辑器-----多重窗体编写代码1.四种排序方法(比较法、选择法,直接插入法和冒泡法)2.最大值,最小值,平均值的计算3.动画演示4.对话框弹出9三、详细设计主要功能模块源程序1.窗体设计1.四个Frame控件----第一个Frame控件包含此问题的基本运算的也是时刻会发生变化的控件。第二个和第三个Frame控件主要是对此程序运行方式的选择。第四个Frame控件实质是菜单项中“颜色设置”单机事件的结果,是对第一个Frame中控件运行时的颜色设置。2.1个文本框数组----包括10个随机数文本框和两个`交换时运动着的文本框3.菜单设计----下拉式菜单分为两部分,每部分功能不同。弹出式菜单分为三部分,第一部分的单机事件会出现一个新的Form窗体。10三、详细设计主要功能模块源程序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.变量声明OptionExplicitOptionBase1Dima(10)AsInteger随机数数组DimFirstAsIntegerDimSecondAsIntegerPrivatemblnMovingAsBooleanDimSpeedAsIntegerDiminColor1AsLong文本背景色DiminColor2AsLong文本前景色DiminColor3AsLong已排序元素色DiminColor4AsLong交换元素色DiminNumAsLong交换次数PublicinSortMethodAsInteger排序算法0-比较法,1-选择法2-直接插入法,3-冒泡法PrivateinSortOrderAsInteger排序方向0-升序1-降序PrivateinShowModeAsInteger演示模式,0-直接求解,1-动态演示112.1command1(0)---产生十个随机数PrivateSubCommand1(0)_Click()RandomizeFori=1To10a(i)=Int(Rnd*201)-100Text1(i).Text=a(i)Text1(i).BackColor=inColor1Text1(i).ForeColor=inColor2NextiCommand1.Enabled=True2command1(1)----开始排序PrivateSubOption1_Click(IndexAsInteger)intShowMode=IndexEndSubPrivateSubOption2_Click(IndexAsInteger)intSortOrder=IndexEndSub当排序结束后,会弹出如下一个对话框。代码为:3command1(2)---停止程序的运行PrivateSubCommand3_Click()IfCommand3.Caption=停止ThenTimer1.Enabled=FalseCommand3.Caption=继续ElseIfCommand3.Caption=继续ThenTimer1.Enabled=TrueCommand3.Caption=停止EndIfEndIfEndSub4command2-----默认颜色的按钮Frame2Frame3中option的选择直接关系到随机数的排序方式response=MsgBox(比较法排序完毕,交换次数为:+Str(Num),vbOKOnly,系统提示)12PrivateSubCommand2_Click()Color1(0).ListIndex=0inColor1=vbGreen文本背景色Color1(1).ListIndex=1inColor2=vbBlack文本前景色Color1(2).ListIndex=2inColor3=vbYellow已排序元