武汉理工课程设计封面
- 格式:doc
- 大小:173.76 KB
- 文档页数:15
序号(学号):0121109310631学生实习报告书实习类别单片机应用实习实习地址武汉理工大学信息工程学院学院信息工程学院专业通信工程班级姓名指导教师2014 年 1 月13 日课程设计任务书学生姓名:专业班级:指导教师:工作单位:武汉理工大学题目: 单片机原理与应用初始条件:STC89C52 数码管 MAX232 矩阵键盘仿真软件要求完成的主要任务:1)利用PROTEL等软件进行硬件设计;2)利用Keil uV2软件完成应用系统软件设计;3)利用PROTEUS软件进行仿真设计;4)完成单片机最小系统和应用系统电路板的焊接;5)对电路进行调试;6)利用stc-isp软件完成在系统编程、下载,并完成系统软件调试;7)题目由指导教师提供;8)要求每个学生单独完成硬件软件设计、仿真、焊接、调试任务;9)写出实习报告,实习报告主要包括以下内容:目录、摘要、关键词、基本原理、方案论证、硬件设计、软件设计(带流程图、程序清单)、仿真结果、实物运行结果照片、结论、参考文献等;10)实习完成后通过答辩;11)答辩时交实习报告电子文档,通过答辩后根据修改意见修改并打印、装订成册。
实习地点武汉理工大学信息工程学院通信实验室。
实习时间2013年12月30日---2014年1月12日。
指导教师签名:年月日系主任(或责任教师)签名:年月日目录摘要 (I)Abstract (II)1系统总体设计 (3)2系统单元原理与设计 (4)2.1系统硬件设计 (4)2.1.1单片机控制模块设计 (4)2.1.1.1 时钟电路 (7)2.1.1.2 复位电路 (8)2.1.2 矩阵键盘调整模块设计 (9)2.1.3 数据管显示模块设计 (10)2.1.4 串口通信模块设计 (13)2.1.3 系统整体设计电路图 (15)2.2系统软件设计 (15)2.2.1系统主程序模块 (15)2.2.2功能选择模块 (16)2.2.3数据输入模块 (17)2.2.4 数据输出模块 (18)2.2.5 数据通信模块 (18)2.2.7按键扫描模块 (19)2.2.8 数据显示模块 (20)3电路仿真结果 (21)3.1 仿真环境简介 (21)3.2 仿真过程记录 (22)3.2.1 数据输入输出功能调试 (22)3.2.2 串口通信功能调试 (23)3.3 仿真结果分析 (24)4实物的制作与调试 (25)4.1 实物的制作 (25)4.2 电路的调试过程 (26)4.2.1 数据输入输出功能调试 (26)4.2.2 串口通信功能调试 (29)4.3 电路的调试结果分析 (29)4.3 调试过程中遇到的问题 (30)5心得体会 (31)6参考文献 (32)附录 (33)附录1系统整体电路图 (33)附录2元件清单 (34)附录3 单片机程序 (36)I摘要单片微型计算机简称单片机,又称为微型控制器,是微型计算机的一个重要分支。
目录1.理论分析 (1)1.1 概念 (1)1.2一阶线性RL和RC电路的零状态响应、零输入响应分析 (1)1.2.1 一阶线性RC电路的零状态响应分析 (1)1.2.2 一阶线性RC电路的零输入响应分析 (3)1.2.3 一阶RL线性电路的零输入响应分析 (4)1.2.4 一阶线性RL电路的零状态响应分析 (5)2.运行结果及分析 (7)2.1用CAPTURE绘制电路图 (7)2.1.1 一阶RC串联线性电路图 (7)2.1.2 一阶RL串联线性电路图 (7)2.2用P SPICE运行的结果 (8)2.2.1一阶RC串联线性电路的运行结果以及分析 (8)2.2.2一阶RL串联线性电路的运行结果以及分析 (9)2.3小结 (10)3. 心得体会 (11)4.参考文献 (12)1.理论分析1.1 概念(1)一阶电路: 在一般的情况下,当电路中仅含有一个动态原件,动态原件以外的线性电阻电路可用戴维宁定理或诺顿定理置换为电压源和电阻的串联组合,或电流源和电阻的并联组合,对于这样的电路,所建立的电路方程将是一阶线性微分方程,相应的电路称为一阶电路。
(2) 稳态的定义: 稳态是指电路中的电流和电压在给定的情况下已经到达某一稳定值〔对交流来讲是其幅值到达稳定〕。
(3)零输入响应的定义: 零输入响应就是电路在没有外加电源的状态下所产生的响应。
(4) 零状态响应的定义: 零状态响应就是电路在零初始状态下〔动态原件初始储能为零〕由外施激励引起的响应。
1.2 一阶线性RL 和RC 电路的零状态响应、零输入响应分析1.2.1 一阶线性RC 电路的零状态响应分析如图2-1所示RC 串联电路,开关S 闭合前电路出于零初始状态,即(0)0t=0c S u S -=在时刻,开关闭合,电路接入直流电压源U 。
u Ci图1 RC 串联电路根据KVL ,有R C u u U += (1-1)将R u Ri =,Cdu i Cdt=代入,得电路的微分方程 C C duRC u U dt+= (1-2)此方程为一阶线性非齐次方程。
目录物流设施规划与设计 (3)1 物料品种、规格、数量及车船型分析 (3)1.1物料品种 (3)1.2规格分析 (3)1.3数量分析 (3)1.4车船型分析 (3)2 集装箱、件杂货的作业流程分析 (3)2.1 集装箱的作业流程分析 (3)2.2 件杂货的作业流程分析 (3)3 作业单位分析及辅助单位分析 (3)3.1 集装箱作业单位 (3)3.2 件杂货作业单位 (4)3.3 辅助单位分析 (4)4 作业时间及生产率要求分析 (4)4.1 作业时间分析 (4)4.2 生产率要求分析 (4)5 主要作业定位物流分析 (5)5.1 集装箱 (5)5.2 件杂货 (5)6 主要作业单位所需面积及要求计算 (5)6.1 泊位计算 (5)6.1.1 集装箱泊位计算 (5)6.1.2 件杂货泊位计算 (6)6.2 仓库和堆场面积计算 (6)6.2.1 集装箱堆场 (6)6.2.2 集装箱拆装箱库 (7)6.2.3 件杂货堆场容量和面积计算 (8)6.3 集装箱港区大门所需车道数 (9)6.3.1 集装箱港区大门所需车道数计算 (9)6.3.2 道路宽度的设置 (9)7 实际可用面积及布置规划 (10)7.1 主要作业场地布置规划 (10)7.2 辅助生产和辅助生活建筑物及绿化设计 (10)8 设计小结 (11)9 参考资料 (12)物流设施规划与设计1 物料品种、规格、数量及车船型分析1.1物料品种集装箱、件杂货、棉花包。
1.2规格分析每TEU集装箱载重量为8t。
1.3数量分析集装箱吞吐量为20万TEU;件杂货吞吐量为200万吨。
箱型比例:集装箱中重箱占70%,空箱占30%。
拆装箱比例为15%。
1.4车船型分析集装箱船型:依照现在港口运行量和目前形式以30TEU 的集装箱自航船为主,选择49×9.8×2.2m的集装箱自航船。
件杂货船型:依目前主流形式为件杂货堆场设计规格为47×8.8×2.5m的500t驳船。
武汉理工 课程设计一、课程目标知识目标:1. 学生能够掌握课程相关章节的基本概念、原理和知识点,如XXX(具体知识点,例如:物理学中的牛顿运动定律、化学中的元素周期表等)。
2. 学生能够理解并描述XXX(学科特定内容,如:生物进化过程、历史事件的发展脉络等)的特点、规律和实际应用。
3. 学生能够运用所学知识解释现实生活中的现象,提高知识运用能力。
技能目标:1. 学生能够运用XXX(学科特定技能,如:数学中的代数运算、英语中的听力理解等)方法解决问题,提高解决问题的能力。
2. 学生能够通过小组合作、讨论等方式,培养团队协作和沟通能力。
3. 学生能够运用现代信息技术手段,如网络、多媒体等,搜集、整理、分析相关信息,提高信息处理能力。
情感态度价值观目标:1. 学生能够对学科知识产生兴趣,树立正确的学习态度,养成主动学习的习惯。
2. 学生能够尊重他人观点,培养批判性思维,形成独立思考的能力。
3. 学生能够关注社会热点问题,将所学知识与国家发展、社会责任相结合,提高社会责任感和使命感。
课程性质:本课程为XXX学科(如:数学、语文、英语等)的示范课,旨在帮助学生深入理解学科知识,提高学科素养。
学生特点:考虑到学生所在年级的特点,课程内容将结合学生的认知水平、兴趣和需求,注重启发式教学,激发学生的学习兴趣。
教学要求:教师应关注学生的个体差异,采用多元化的教学方法和评价手段,确保课程目标的实现。
同时,将课程目标分解为具体的学习成果,以便于教学设计和评估。
二、教学内容根据课程目标,本章节教学内容如下:1. 知识点讲解:- 教材第X章:XXX(具体知识点1)- 教材第X章:XXX(具体知识点2)- 教材第X章:XXX(具体知识点3)2. 实践操作:- 结合教材第X章内容,开展XXX实验/实践活动,提高学生的动手操作能力。
3. 案例分析:- 分析教材中的案例,如XXX,让学生了解知识在实际生活中的应用。
4. 小组讨论:- 围绕教材第X章主题,组织学生进行小组讨论,培养学生的团队协作和沟通能力。
课程设计任务书学生姓名: XX 专业班级:计算机科学与技术指导教师: XX 工作单位:计算机科学系题目:快速排序与冒泡排序算法比较初始条件:试分别实现冒泡排序和非递归形式的快速排序算法,并通过随机数据比较两种排序算法中关键字的比较次数和移动次数。
(1)待排序表的表长不小于100;其中的数据要用伪随机数产生程序产生;至少要用5组不同的输入数据作比较;比较的指标为有关键字参加的比较次数和关键字的移动次数(关键字交换计为3次移动)。
(2)最后要对结果作出简单分析,包括对各组数据得出结果波动大小的解释。
(3)对冒泡排序应指出进行了多少趟。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)课程设计报告按学校规定格式用A4纸打印(书写),并应包含如下内容:1. 问题描述简述题目要解决的问题是什么。
2. 设计存储结构设计、主要算法设计(用类C/C++语言或用框图描述)、测试用例设计;3. 调试报告调试过程中遇到的问题是如何解决的;对设计和编码的讨论和分析。
4. 经验和体会(包括对算法改进的设想)5. 附源程序清单和运行结果。
源程序要加注释。
如果题目规定了测试数据,则运行结果要包含这些测试数据和运行输出。
说明:1. 设计报告、程序不得相互抄袭和拷贝;若有雷同,则所有雷同者成绩均为0分。
2. 凡拷贝往年任务书或课程设计充数者,成绩一律无效,以0分记。
时间安排:1、6月15日~6月21日完成。
2、6月22日上午和下午在实验中心检查程序、交课程设计报告、源程序(U盘)。
指导教师签名: 2012年6月14日系主任(或责任教师)签名:年月日目录1问题分析和任务定义 (3)2.开发平台 (3)3.程序设计 (3)4.调试结果与运行情况分析 (6)5.自我评价与总结 (12)6.课程设计参考资料 (12)1.问题分析和任务定义1.1问题分析编程实现快速、冒泡两种排序算法,两者之间的算法好坏比较主要有两个方面:数据比较次数和数据移动次数。
《专业综合课程设计》任务书学生姓名:专业班级:指导教师:工作单位:信息工程学院题目: 模数转换电路测试与MIX1电路设计课程设计目的:1.通过对THEX-1型综合实验平台的使用,较深入了解通信电路的原理;2.掌握通信电路的测试方法和设计实验的方法;3.学习利用EWB仿真设计简单通信系统的方法;4.练习利用Protel绘制PCB电路的方法;5.提高正确地撰写论文的基本能力。
课程设计内容和要求1.电路测试:测试PAM1,PAM2,PAM3,PAM4,PCM,TDM1,TDM2实验电路板。
要求详细分析实验电路的工作原理(说明每个元器件的作用和功能),写出测试项目,并对测试结果作出详细分析;如果电路板不能测出所需要的结果,要分析原因,找出电路板损坏的部位。
2.用EWB做出MIX1的仿真电路,并测试各点的波形;要求详细分析电路原理(说明每个元器件的作用和功能),对测试结果作出详细分析。
3.用Protel绘制HDB33的PCB电路。
4.查阅不少于6篇参考文献。
初始条件:1.THEX-1型综合实验平台及实验指导书;2.示波器,万用表。
3.EWB和Protel软件。
时间安排:第18周,安排设计任务;第19周,完成实验测试和仿真电路的设计与测试;第20周,完成PCB电路绘制;撰写设计报告,答辩。
指导教师签名:年月日系主任(或责任教师)签名:年月日目录1. 模数转换电路测试 (1)1.1 PAM双路抽样脉冲发生实验 PAM1 (1)1.1.1实验原理 (1)1.1.2 实验测试 (2)1.2抽样定理和脉冲调幅实验 PAM2 (2)1.2.1 实验原理 (2)1.3 PAM模拟传输线实验PAM3(实验模块PAM1 PAM3) (5)1.3.1 实验原理 (5)1.3.2 实验测试 (6)1.4 PAM脉冲幅度解调实验PAM4(实验模块PAM1 PAM2 PAM4) (7)1.4.1实验原理 (7)1.4.2 实验测试 (8)1.5 PCM脉冲编译码实验PCM (10)1.5.1 实验原理 (10)1.5.2 实验测试 (11)1.6 数字多路传输系统实验 TDM1,TDM2 (12)1.6.1实验原理 (12)1.6.2 实验测试 (13)2. 集成乘法器混频MIX1电路设计 (15)2.1实验目的 (15)2.2实验原理 (15)2.3 实验步骤 (18)2.4 实验仿真 (19)3 PCB制作 HDB3译码 HDB33 (21)4 总结 (22)5 参考文献 (23)1.模数转换电路测试1.1 PAM 双路抽样脉冲发生实验 PAM11.1.1实验原理(一)电路组成PAM 双路抽样脉冲发生实验是供给PAM 、PSK 等实验所需时钟和基带信号,图1-1是实验电原理图,由以下电路组成:1.内时钟信号源。
f武汉理工大学《环境工程学》课程设计摘要垃圾渗滤液是指来源于垃圾填埋场中垃圾本身含有的水分、进入填埋场的雨雪水及其他水分,扣除垃圾、覆土层的饱和持水量,并经历垃圾层和覆土层而形成的一种高浓度废水。
垃圾渗滤液具有不同于一般城市污水的特点:BOD5和COD浓度高、金属含量较高、水质水量变化大、氨氮的含量较高,微生物营养元素比例失调等。
在渗滤液的处理方法中,将渗滤液与城市污水合并处理是最简便的方法。
垃圾渗滤液对水体和环境的危害很大,必须经过处理.其处理方法包括物理化学法和生物法. 物化处理不受水质水量变动的影响,出水水质比较稳定,但其处理成本较高,不适于大水量垃圾渗滤液的处理,因此目前垃圾渗滤液主要是采用生物法。
本设计是150m3/d城市垃圾填埋场渗滤液污水处理设计。
首先,通过提供资料确定废水水量水质。
然后,通过分析治理原理,比较各种治理方法,结合废水水质和排放要求,确定设计方案。
再次,根据以往设计经验(相关设计人员)确定设计参数,设计构筑物尺寸结构,选定附属设备。
最后,进行水力损失计算及高程计算,进行平面布置.设计结果表明,该方法能够有效去除污染物,使水质达到相关要求.并且,效率高,值得推广使用.本设计的特色在于通过查阅相关文献和根据自己的实践认识,合理选取设计参数。
此外,为了能够有效彻底的净化污水,本实验采用了一些新方法,既经济又高效.可以为渗滤液污水处理领域的相关人员提供一些参考关键词: 渗滤液; 分级处理; SBR;深度处理目录1.绪论 (3)1.1渗滤液的产生及组成特点 (3)1.2 国内外的研究现状分析 (4)1.3 设计基本目的和内容 (4)2.技术设计方案 (4)2.1项目背景 (4)2.2设计依据、原则和范围 (4)2.2.1设计依据 (4)2.3水质及处理要求 (5)2.3.1设计进水水质 (5)2.3.2设计出水水质 (6)2.4工艺流程确定 (6)2.5废水处理工艺的比较与选择 (8)2.5.1一级预处理方案 (8)2.5.2二级生化处理方案 (9)2.5.3生化工艺的选择 (13)2.5.4三级深度处理方案………………………………………………133. 计算说明书 (14)4.设施一览表 (18)4.1建、构筑物一览表 (18)4.2 主要设备一览表 (19)5.污水厂总体布置 (22)6.总结 (22)参考文献……………………………………………… (23)致谢 (25)1.绪论1.1渗滤液的产生及组成特点①填埋场渗滤液的主要来源如下:(1)直接降水:降水包括降雪和降雨,它是渗滤液产生的主要来源。
Protel课程设计任务书学生姓名:专业班级:指导教师:工作单位:题目三:正弦波-三角波-方波函数发生器的原理图设计初始条件:熟练使用Protel 99se(或Protel DXP) 印制板设计系统,使用PROTEL软件,新建和加载原理图项目文件及原理图设计环境的设置,熟练掌握如何进行原理图设计、原理图仿真的方法,设计原理图并生成网表。
要求具有较扎实的电子电路的理论知识及较强的实践能力,对电路器件的选型及电路形式的选择有一定的了解;具备电子电路的基本设计能力及基本调试能力。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1、完成一个正弦波-三角波-方波函数发生器电路的设计。
2、画出完整的正弦波-三角波-方波函数发生器电路的的原理图。
3、分析正弦波-三角波-方波函数发生器电路的原理。
4、完成Protel课程设计报告(应包含电路原理图,元件清单、原理分析,设计总结)。
指导教师签名:年月日系主任(或责任教师)签名:年月日目录1.方波、三角波、正弦波发生器方案 (1)2.各组成部分的工作原理 (2)2.1 方波发生电路的工作原理 (2)2.2 方波--三角波转换电路的工作原理 (3)2.3三角波--正弦波转换电路的工作原理 (4)2.4总电路图 (4)3 使用protel99se制原理图及PCB图的制作 (5)3.1 原理图 (5)3.2 PCB布线图 (5)3.3 需要元件及封装号 (6)附录: (7)个人体会 (7)PCB图 (8)仪器仪表清单 (9)参考文献 (10)本科生课程设计成绩评定表........................... 错误!未定义书签。
1.方波、三角波、正弦波发生器方案图1 方波、三角波、正弦波、信号发生器的原理框图产生正弦波、方波、三角波的方案有多种,如首先产生正弦波,然后通过整形电路将正弦波变换成方波,再由积分电路将方波变成三角波;也可以首先产生三角波—方波,再将三角波变成正弦波或将方波变成正弦波等等。
课程设计任务书学生姓名:李文瑶专业班级:测控1103班指导教师:胡剑韩雪工作单位:机电学院测控系题目: 测控系统应用软件实训——产品质量监测系统设计初始条件:日光灯试验台是用来检测点亮日光灯的整流器或逆变器是否合格的装置,通过多次测量灯管两端的电压和电流,再通过分析,来验证整流器或逆变器工作是否正常。
单个整流器或逆变器有不同功率之分,也有可以同时点亮日光灯个数多少之分。
检测一个整流器或逆变器,下位机大概会产生30组左右的电压和电流数据。
本实训的目标是设计一个产品质量监测系统,保存日光灯试验台下位机产生的数据信息,并时行产品合格检查、产品质量查询、分类统计和报表打印操作,以期使产品的质量管理工作系统化、规范化、自动化,从而提高生产效率。
设计功能要求:1、仪器检测结果的输入,包括记录号、检修日期、仪器编号、仪器类型、仪器功率、仪器点亮日光灯个数、检测人员、检测记录。
除检测人员和检测记录由工作人员在计算机上直接输入外,其他项都通过串口读入。
2、仪器检测数据的输入,包括记录号、仪器编号、检测电压、检测电流。
一条仪器检测结果对应多条检测数据。
3、仪器检测数据以图形方式显示变化趋势。
4、仪器检测信息的查询、修改和删除。
5、仪器类型和功率代码管理。
6、仪器检测信息的报表和打印处理。
(选做)7、密码和权限管理,不同权限用户具有不同的操作权力。
(选做)系统功能模块设计:对上述各项功能进行集中分块,按结构化程序设计的要求,得到如图1所示的系统功能模块图。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1.合理进行数据库设计,数据项和数据结构包括以下部分:1)仪器检测结果信息表,保存检测结果记录,包括:记录号、检测日期、仪器编号、仪器类型、仪器功率、仪器额定点亮日光灯个数、仪器温升、检测时间间隔、检测人员、检测记录。
2)仪器检测数据信息表,保存检测数据记录,包括:记录号、仪器编号、检测电压、检测电流。
课程设计任务书学生姓名: XX 专业班级:计算机科学与技术指导教师: XX 工作单位:计算机科学系题目:快速排序与冒泡排序算法比较初始条件:试分别实现冒泡排序和非递归形式的快速排序算法,并通过随机数据比较两种排序算法中关键字的比较次数和移动次数。
(1)待排序表的表长不小于100;其中的数据要用伪随机数产生程序产生;至少要用5组不同的输入数据作比较;比较的指标为有关键字参加的比较次数和关键字的移动次数(关键字交换计为3次移动)。
(2)最后要对结果作出简单分析,包括对各组数据得出结果波动大小的解释。
(3)对冒泡排序应指出进行了多少趟。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)课程设计报告按学校规定格式用A4纸打印(书写),并应包含如下内容:1. 问题描述简述题目要解决的问题是什么。
2. 设计存储结构设计、主要算法设计(用类C/C++语言或用框图描述)、测试用例设计;3. 调试报告调试过程中遇到的问题是如何解决的;对设计和编码的讨论和分析。
4. 经验和体会(包括对算法改进的设想)5. 附源程序清单和运行结果。
源程序要加注释。
如果题目规定了测试数据,则运行结果要包含这些测试数据和运行输出。
说明:1. 设计报告、程序不得相互抄袭和拷贝;若有雷同,则所有雷同者成绩均为0分。
2. 凡拷贝往年任务书或课程设计充数者,成绩一律无效,以0分记。
时间安排:1、6月15日~6月21日完成。
2、6月22日上午和下午在实验中心检查程序、交课程设计报告、源程序(U盘)。
指导教师签名: 2012年6月14日系主任(或责任教师)签名:年月日目录1问题分析和任务定义 (3)2.开发平台 (3)3.程序设计 (3)4.调试结果与运行情况分析 (6)5.自我评价与总结 (12)6.课程设计参考资料 (12)1.问题分析和任务定义1.1问题分析编程实现快速、冒泡两种排序算法,两者之间的算法好坏比较主要有两个方面:数据比较次数和数据移动次数。
在该程序中,首先对两种排序算法进行实现,然后再进行比较。
1.2任务定义1.2.1冒泡排序定义冒泡排序又称起泡排序,它也是一种简单实用的排序方法。
其基本思想是通过相邻记录之间关键字的比较和交换,使关键字值较小的记录逐渐的从底部移向顶部,即从下标较大的单元移向下标较小的单元,就像水底的气泡一样逐渐向上冒;而关键字较大的记录就像石块往下沉一样,每一趟有一块“最大”的石头沉到水底。
1.2.2 快速排序定义快速排序也叫做分区排序,是目前应用最广泛的排序算法。
它采用分治法进行排序。
其基本思想是任取待排序元素序列中的某个元素(例如取第一个元素)作为基准,按照该元素的排序码大小,将整个元素序列划分为左右两个子序列;左侧子序列中所有元素的排序码都小于基准元素的排序码,右侧子序列中所有元素的排序码都大于或等于基准元素的排序码,基准元素则排在这两个子序列中间。
然后分别对这两个子序列重复实行上述方法,直到所有的元素都排在相应的位置上为止。
2.开发平台操作系统:Microsoft Windows7开发工具:Microsoft Visual C++ 6.0语言选择:C++高级程序语言3.程序设计3.1冒泡排序void BSort(int* a, int n ,int& number,int& move) //冒泡排序{//number,move用于记录关键字的比较和移动次数int i,j,temp;int flag;for(i=1;i<=n-1;i++){flag=0;j=n;while(j>=i+1){if(a[j]<a[j-1]) //a[j]与a[j-1]比较{temp=a[j];a[j]=a[j-1];a[j-1]=temp;flag=1; //如果有记录交换发生,则置交换标志为1move+=3; //关键字移动次数加3}number++; //执行if语句,比较次数加1j--;}if(flag==0) break; //如果无记录交换发生,则退出循环}cout<<"完成冒泡排序后的序列为:"<<endl;for(i=1;i<=n;i++){cout<<a[i]<<" ";if(i%10==0) cout<<endl;}}3.3快速排序void QSort(int* a, int n ,int& number,int& move)//快速排序{//number,move用于记录关键字的比较和移动次数stack<Param> sp;number=0,move=0;Param pm;for(;;){if( n<=2 )//不超过两个数据就处理完毕{if( n==2 && a[1] < a[0] ){number++;swap(a, a+1);move+=3;}if(sp.empty()) break;//如果栈中没有待排序数据就退出pm = sp.top(); //如果栈中有待排序数据就取出最后入栈的一段sp.pop();a = pm.a;n = pm.n;continue;}int temp=*a;//以现在最前面的数据作为分界值int* l=a+1;//左边第二个数据int* r=a+n-1;//右边最后一个数据while( l<r )//把数据分组{while( l<r && *l<temp ) //小于分界值的留在左边,遇到不小于的停止{l++;number++;}number++;while( r>a && *r>=temp )//不小于分界值的留在右边,遇到小于的停止{r--;number++;}number++;if( l<r ) swap( l, r );//交换这两个数据move+=3;}if( *a > *r )swap( a, r );//把分界值交换回中间位置move+=3;pm.a=r+1, pm.n=n-1-(r-a);//对左右两组分别非递归排序sp.push(pm);n = r-a;}}4. 调试结果与运行情况分析4.1 函数的调用关系图反映了演示程序的层次结构主程序srand BSort QSortrandswap empty top pop push 4.2调试过程中出现的问题在实验过程中,发现许多容易忽视的问题。
例如,在程序中并没有考虑任务书的要求“待排序表的表长不小于100”,虽然程序可以运行但是却和要求不符;再者就是在快速排序的辅助函数中。
4.3调试程序产生的结果程序运行界面4.4 运行结果简单分析有关键字参加的比较次数和关键字的移动次数的对比:关键字参加比较的次数第一组第二组第三组第四组第五组冒泡排序4929 5836 5822 5794 5732快速排序977 900 880 902 894关键字的移动次数第一组第二组第三组第四组第五组冒泡排序7911 7626 7251 8229 8679快速排序585 555 624 609 633冒泡排序关键字比较次数和移动次数都要比快速排序的要高出许多次,所以快速排序速度也要快很多,所以总的来说快速排序要比冒泡排序性能更好一些。
由于冒泡排序中有temp=a[j]; a[j]=a[j-1];a[j-1]=temp;所以冒泡排序的关键字移动次数要比比较较次数多一些。
5.自我评价与总结a)设计出色的地方在于:实验结果的最后使用了表格,是的实验结果清晰可见,便于分析。
b)设计不好的地方:最后的结果分析四喜系那个不够透彻,不能够全面的分析实验结果。
c)实验收获:通过此次试验,我学习到了很多。
例如:认真阅读课程设计任务书的要求,这样写出来的程序才能符合要求,不至于徒劳无功。
课程设计这种形式真的是我们需要的,可以让我们学到很多,包括书上的、书外的。
理论永远不等于实际。
在学排序算法的时候,读了书上的算法描述,觉得自己都会了,但真的到编程去实现它的时候,总会出点差错,很多小问题都被忽视掉了,只得一次次改,等到程序终于正确运行的时候,才算真正会了这些算法,理论和实际永远差那么一点,不去做是体会不出来的。
坐在电脑前才真正知道自己会不会,眼高手低是要不得的。
在写程序的时候,需要认真的去对待,书本是一个基础,无论什么时候设计都不能脱离书本,只有掌握了书本基础知识,才能更好的完成编程。
在写课程设计任务说明书的时候,要保证说明书条理清晰,让人一目了然,所以就需要有目录和字体粗细大小不一的序号,清楚地标示出来。
6.课程设计参考资料《数据结构——用面向对象方法与C++语言描述(第二版)》,殷人昆编著,清华大学出版社,出版或修订时间:2009年9月附录:源程序#include<iostream>#include<Stack>#include <time.h> //使用当前时钟做种子using namespace std;void BSort(int* a, int n ,int& number,int& move) //冒泡排序{int i,j,temp;int flag;for(i=1;i<=n-1;i++){flag=0;j=n;while(j>=i+1){if(a[j]<a[j-1]) //a[j]与a[j-1]比较{temp=a[j];a[j]=a[j-1];a[j-1]=temp;flag=1; //如果有记录交换发生,则置交换标志为1move+=3; //关键字移动次数加3}number++; //执行if语句,比较次数加1j--;}if(flag==0) break; //如果无记录交换发生,则退出循环}cout<<"完成冒泡排序后的序列为:"<<endl;for(i=1;i<=n;i++){cout<<a[i]<<" ";if(i%10==0) cout<<endl;}}void swap( int*a, int*b )//通过地址交换两个数据{int t = *a;*a = *b;*b = t;}struct Param{int* a;int n;};void QSort(int* a, int n ,int& number,int& move)//快速排序{//number,move用于记录关键字的比较和移动次数stack<Param> sp;number=0,move=0;Param pm;for(;;){if( n<=2 )//不超过两个数据就处理完毕{if( n==2 && a[1] < a[0] ){number++;swap(a, a+1);move+=3;}if(sp.empty()) break;//如果栈中没有待排序数据就退出pm = sp.top(); //如果栈中有待排序数据就取出最后入栈的一段sp.pop();a = pm.a;n = pm.n;continue;}int temp=*a;//以现在最前面的数据作为分界值int* l=a+1;//左边第二个数据int* r=a+n-1;//右边最后一个数据while( l<r )//把数据分组{while( l<r && *l<temp ) //小于分界值的留在左边,遇到不小于的停止{l++;number++;}number++;while( r>a && *r>=temp )//不小于分界值的留在右边,遇到小于的停止{r--;number++;}number++;if( l<r ) swap( l, r );//交换这两个数据move+=3;}if( *a > *r )swap( a, r );//把分界值交换回中间位置move+=3;pm.a=r+1, pm.n=n-1-(r-a);//对左右两组分别非递归排序sp.push(pm);n = r-a;}}int main(){int n,numbers=0,moves=0,a[1000],b[1000];srand((unsigned)time( NULL ) );for(int i=1;;i++){cout<<"请输入要产生的长度:"<<endl;cin>>n;for(int i=1;i<=n;i++){a[i]=rand()%100;b[i-1]=a[i];cout<<a[i]<<" ";if(i%10==0) cout<<endl;}cout<<endl;cout<<"以下进行冒泡排序:"<<endl;BSort(a,n,numbers,moves);cout<<"冒泡排序的趟数为:"<<n-1<<endl;cout<<"冒泡排序关键字的比较次数为:"<<numbers<<","<<"关键字移动次数为:"<<moves<<endl;cout<<"以下进行快速排序:"<<endl;cout<<endl;QSort(b,n,numbers,moves);cout<<"完成快速排序后的序列为:"<<endl;for(i=1;i<=n;i++){cout<<b[i-1]<<" ";if(i%10==0) cout<<endl;}cout<<endl;cout<<"快速排序关键字的比较次数为:"<<numbers<<","<<"关键字移动次数为:"<<moves<<endl;}return 0;}本科生课程设计成绩评定表班级:姓名:学号:序号评分项目满分实得分1 学习态度认真、遵守纪律102 设计分析合理性103 设计方案正确性、可行性、创造性204 设计结果正确性405 设计报告的规范性106 设计验收10总得分/等级评语:注:最终成绩以五级分制记。