课程设计报告书正文标准格式.docx
- 文档编号:1907354
- 上传时间:2022-10-25
- 格式:DOCX
- 页数:10
- 大小:51.11KB
课程设计报告书正文标准格式.docx
《课程设计报告书正文标准格式.docx》由会员分享,可在线阅读,更多相关《课程设计报告书正文标准格式.docx(10页珍藏版)》请在冰豆网上搜索。
课程设计报告书正文标准格式
课程设计报告书正文标准格式
请留出一个汉字的空间,下同
1引言(或绪论)(可作为正文第1章标题,用小3号黑体,加粗,并留出上下间距为:
段前0.5行,段后0.5行)
×××××××××(小4号宋体,20磅行距)××××××××××××××××××××××××××××××…………
1.1××××××(作为正文2级标题,用4号黑体,加粗)
×××××××××(小4号宋体,20磅行距)×××××××××××××××××××××××××××××××…………
1.1.1××××(作为正文3级标题,用小4号黑体,不加粗)
×××××××××(小4号宋体,20磅行距)×××××××××××××××××××××××××××…………
2×××××××(作为正文第2章标题,用小3号黑体,加粗,并留出上下间距为:
段前0.5行,段后0.5行)
×××××××××(小4号宋体,20磅行距)×××××××××××××××××××××××××××××××××××…………
×××××××××××××××××××…………
…………
注:
1.正文中表格与插图的字体一律用5号宋体;
2.正文各页的格式请以此页为标准复制。
报告中的内容仅为参考字体格式,与本次设计无关!
题目
内部排序教学软件。
1需求分析和说明
内部排序教学软件的总体目标:
在TURBOC2.0的开发环境下,利用所学C语言和数据结构的相关知识,开发一个具有良好人机界面的内部排序教学软件,实现各种内部排序,并能使用户经过其显示结果对每种排序方法的性能有一个直观的了解,从而达到教学的目的。
1.1基本要求
(1)界面友好,易与操作。
采用菜单或其它人机对话方式进行选择。
(2)实现各种内部排序。
包括冒泡排序,直接插入排序,直接选择排序,希尔排序,快速排序,堆排序。
(3)待排序的元素的关键字为整数。
可用随机数据和用户输入数据作测试比较。
比较的指标为有关键字参加的比较次数和关键字的移动次数(关键字交换以3次计)。
(4)演示程序以人机对话的形式进行。
每次测试完毕显示各种比较指标
的列表,以便比较各种排序的优劣。
1.2各功能模块的功能描述:
1.主函数模块
本模块的主要功能是初始化图形界面,调用各模块,实现软件功能。
2.排序功能及输出子模块
本模块的主要功能是根据用户的选择进行数组的创立,并对输入数据或者随机产生的数据使用六种排序方法进行排序并统计每种方法的移动次数和比较次数,然后输出以表格形式输出。
3.封面和结束画面子模块
本模块的主要功能是当用户打开本软件时模拟软件加载,延时数秒后关闭,并进入图形界面,在用户退出软件时显示结束画面,延时数秒后关闭程序。
4.图形界面子模块
本模块的主要功能是根据用户的选择显示不同的画面,引导用户使用软件所提供的各种功能,并在用户提供必要数据,并选择排序功能时调用排序模块,并显示结果画面。
5.输入子模块
本模块的主要功能是进行光标定位,输出提示文字,并对用户输入数据进行处理,创立数组。
6.鼠标实现模块
本模块的主要功能是为用户提供鼠标操作支持,使用户能使用鼠标进行功能的选择。
2详细设计
2.1模块调用图
图1模块调用图
2.2可排序表的抽象数据类型定义
ADTOrderablelist
{
数据对象:
D={A[i]|A[i]∈Integer,i=1,2,…,n,n>=0}
数据关系:
基本操作:
}
#defineMAXSIZE200
/*数组最大长度*/
intMOV_CNT;/*移动次数*/
intCMP_CNT;/*比较次数*/
voidExchange(intnum[],inti,intj)/*交换数组元素i,j*/
voidShellSort(intnum[],intn)/*希尔排序*/
voidQuickSort(intp[],intc,intd)/*快速排序*/
voidSIFT(intnum[],ints,intn)/*调整建堆函数*/
voidHeapSort(intnum[],intn)/*堆排序*/
voidChooseSort(intnum[],intn)/*选择排序*/
voidBubbleSort(intnum[],intn)/*冒泡排序*/
voidInsertsort(intnum[],intn)/*插入排序*/
voidSort(intarray[],intn)/*调用六种排序方法并输出移动次数和比较次数*/
voidCreatRan(intarray[],intn)/*建立随机数组*/
voidCreatUp(intarray[],intn)/*建立升序数组*/
voidCreatDown(intarray[],intn)/*建立降序数组*/
intInputLen()/*输入数组长度*/
voidInputArray(intarray[],intn)/*建立人工输入的数组*/
voidLocate(introw,intcol)/*光标定位*/
voidMouseMath()/*计算鼠标的样子*/
voidMouseOn(intx,inty)/*鼠标光标显示*/
voidMouseSetX(intlx,intrx)/*设置鼠标左右边界*/
voidMouseSetY(intuy,intdy)/*设置鼠标上下边界*/
voidMouseSetXY(intx,inty)/*设置鼠标当前位置*/
intMouseStatus(int*x,int*y,int*state)/*鼠标坐标及按键情况*/
intStartScreen()/*开始界面的进度条*/
intMainWin(intx1,inty1,intx2,inty2)/*主窗口*/
intCloseButton(inty1,intx2,intclose)/*关闭按钮*/
voidButton(intbuttonx1,intbuttony1,intbuttonx2,intbuttony2,char*name,intstate)/*功能按钮*/
voidClear()/*清屏*/
voidScreen(intsn)/*界面*/
voidCloseScreen()/*结束画面*/
intMouse()/*鼠标事件处理*/
intRun(intbn,intsn)/*功能调用*/
2.3算法思想
1.主函数模块
首先调用initgraph函数进行图形驱动的初始化,然后调用StartScreen函数显示进度条,模拟软件加载,然后调用Mouse函数,再调用closegraph函数关闭图形模式。
2.排序功能及输出子模块
在实现排序功能时,每调用一种排序方法前首先应该把原始数组array[]复制到num[] ,把移动次数MOV_CNT和比较次数CMP_CNT置零,然后对num进行一种排序,同时进行记数,最后进行光标定位,输出次数。
这样进行六次,就能够把六种排序方法的移动次数和比较次数统计出来。
再这里,光标的定位是利用软中断方式实现的,这样做能够直接利用scanf和printf进行输入输出,而不必进行数字和字符串之间的转化。
3.封面和结束画面子模块
软件的封面是一个模拟软件加载的一个进度条。
其设计思路是,先利用bar函数画出一个浅蓝色的矩形条,然后进行光标定位,输出“Loading…”字符串,然后将分十段将矩形条用蓝色填充,同时在字符串同一行的右边几个字符的距离输出百分数。
由于输出的是利用字符函数,而非图形函数,字符的背景色会覆盖上一次的数字,造成百分数不断增加,进度条不断前进的动画效果。
4.图形界面子模块
这个模块是软件最为复杂,开发时间最长,修改次数最多的一个模块。
这个界面主要是仿照传统的WINDOWS界面。
主窗口是由四部分组成,蓝色的屏幕背景、灰色的窗体、蓝色的标题栏和关闭按钮。
窗口和按钮的突起效果是现在屏幕上画一浅色形状,再将纵横坐标增加一两点,画深色形状,从而造成突起效果。
为了体现动画的效果,按钮分三种状态,突起状态,平面状态和凹陷状态。
凹陷效果可由深色形状在浅色形状的大小基础上缩小一两个像素点得到。
一个界面包括提示文字和功能按钮。
软件一共有6个界面,其中界面0是用户一开始看到的界面,界面1,2,3,4分别对应于功能按钮1,2,3,4,界面5是显示结果的界面。
这个模块的关键在于鼠标控制。
鼠标状态state为0时,没有鼠标键按下,为1时鼠标左键被按下。
鼠标在哪个按钮上是利用鼠标的坐标值是否在按钮的坐标范围内进行判断的。
判断用户是否选择了某一功能是利用鼠标在哪个按钮上同时state==1进行判断的。
当鼠标在非按钮区域按下左键时程序会直接进入下一个循环。
界面0的四个功能按钮名为:
“Random”,”OrderUp”,”OrderDn”,”Input”,代表产生数组的四种方式——随机、升序、降序、人工输入。
界面1,2,3,4的两个功能按钮名为:
”Input”,”Static”,代表确定数组长度的方式——人工输入、默认。
界面5包含一个“Restart”按钮,用来返回到界面0。
5.输入子模块
当选择好功能以后,分4种情况,随机数组、升序数组、降序数组、人工输入的数组。
长度分两种,Input是先进行光标定位,然后输出提示文字,当用户输入长度后,把值赋给n,而Static是直接把10赋给n。
6.鼠标实现模块
软件的鼠标最初使用的系统自带的样式,经过BIOS中断INT33H能够实现。
图2Mouse()的流程图
3调试报告
3.1遇到的问题
1.同一数组排序六次
由于要对同一数组排序六次,必须在排序前先将数组保存起来,每次排序只对数组副本进行操作。
2.鼠标在WIN,XP下不能正常显示
鼠标使用软中断方式在WIN98下能正常工作,可是更高版本如WIN,XP下都不能显示鼠标,即鼠标处于隐形状态。
经过思考和查找资料,我决定用自已画一个鼠标指针形状,并根据中断提供的坐标值绘制在屏幕的相应坐标上。
当鼠标移动时,先将原始位置的鼠标消去,然后在新的位置绘制出指针形状。
3.屏幕和按钮不停闪烁
经过检查,发现是屏幕重绘频率过快引起的,在每次绘图以后加上一定延时,在有意识的控制循环的频率即可解决。
4.图形界面下输入数据
图形界面下的输入一般为字符串,为了不进行数字和字符串之间的转化,我利用了中断定位光标,直接利用scanf进行输入。
5.在程序显示结果后无法返回界面0
在结果界面上增加一个按钮Restart,利用goto语句即可返回到界面0。
3.2心得体会
。
。
。
。
。
。
4用户手册
用户打开软件后,首先见到的是进度条屏幕,如图3所示,随后进入了如图4所示的界面0。
。
。
。
。
。
。
图4登陆界面
界面0的四个功能按钮名为:
“Random”,”OrderUp”,”OrderDn”,”Input”,代表产生数组的四种方式——随机、升序、降序、人工输入。
点选任意一个功能按钮,将会进入如图5所示界面。
Input按钮是人工输入数组长度,Static按钮是使用默认长度10。
当用户点选Input按钮时,进入输入长度的界面。
当用户点选Static按钮时,进入界面5或输入数据界面然后进入界面5。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 报告书 正文 标准 格式
![提示](https://static.bdocx.com/images/bang_tan.gif)