版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、County continuation records has examined and approved the draft, spirit, believe, comprehensive Yearbook of zhuanglang already prepared draft, entered the phase of evaluation. Civil air defense workCounty continuation records has examined and approved the draft, spirit, believe, comprehensive Yearbo
2、ok of zhuanglang already prepared draft, entered the phase of evaluation. Civil air defense workCounty continuation records has examined and approved the draft, spirit, believe, comprehensive Yearbook of zhuanglang already prepared draft, entered the phase of evaluation. Civil air defense work课程设计报告
3、课程设计题目:曼彻斯特的编码模拟 学生姓名:* 专 业:计算机科学与技术班 级:*学 号:*指导教师:* 2013年12月19日 - 13 -目 录 需求分析 2 1. 1 引言 2 1. 2 任务概述 2 1. 3 功能划分 2 1. 4 运行需求及其他 3 总体设计 32. 1 系统方案 32. 2 软件结构 4 详细设计 5 实验源码 6 实验测试 95. 1 测试步骤及内容 95. 2 测试总结 10 实验总结 11 第一章 需求分析1. 1 引 言为方便日后软件的维护及升级,编写此需求说明书。按照此次课程设计的相关要求,在老师的指导下设计完成了程序。程序推荐在VC+ 6.0的环境下运
4、行。以下是程序中用到的相关变量及函数名称释义:int d204,用来存储转换后的二进制数的数组char c20, 用来存储十六进制数据的数组int i, 用来进行运算及统计数组长度的变量int g, 用来存储数组长度的变量int u, 用来计算输出二维数组第一维的维数的变量int j 用来计算输出二维数组第二维的维数的变量int e, 用来判断是否进行图像输出void Man() 将字符串数据转换为十进制数,然后进行二进制转换的函数void Tu() 显示曼彻斯特的模拟编码设计过程中使用到的参考资料有如下:C程序设计(第四版)谭浩强 著,清华大学出版社计算机网络(第三版)吴功宜 著,清华大学出
5、版社软件工程(2010年6月第一版)景秀丽、吕洪林著,中国水利水电出版社1. 2 任务概述任务的目的是输入十六进制数据,输出曼彻斯特编码模拟的波形图。最终使程序能够在VC+6.0中运行。要求在三天的上机课内完成任务,经老师验证后,方可准备实验报告。报告的内容应该包括封面、目录、需求分析、总体设计、详细设计、编码(详细写出编程步骤)、测试的步骤和内容、课程设计总结、参考资料等。1. 3 功能划分第一部分为输入数据;第二部分为字符串转换十进制数;第三部分为十进制转换二进制数;第四部分为输出曼彻斯特模拟编码;第五部分为主函数入口。1. 4 运行需求及其他 程序在VC+6.0的环境下编写,可以在支持语
6、言的环境下运行。软件不具备保密功能,但可维护性强。若用户对保密性要求高,不推荐使用或测试。 总体设计2. 1 系统方案 数据流图 :读取数据 输入数据将二进制数对应的图形输出将字符串转换为二进制数 显示图像按照数据流图的实现方式,推荐设计两个函数,第一个是将字符串转换为二进制的函数,第二个是将二进制数对应的图像显示的函数。2. 2 软件结构层次图 :曼彻斯特编码模拟系统 判断输出图形 转换为二进制 转换为十进制 输出 输入 编辑 详细设计根据第二章系统方案中的数据流图以及总体设计中软件结构的层次图设计,画出详细的程序流程图。 开始流程图设计如下 :输入数据字符是否合法? NO YES 将字符转
7、换 为十进制数 输出错误提示 结束 对应输出相 对的波形图像 为十进制数 将十进制数 转换二进制 实验源码实验源码如下 :(附编程步骤:写文件头并建立main函数定义要创建的两个子函数main函数中调用子函数并进行第一次编译检查完成子函数的详细内容进行最后的编译及运行检测 )#includestdio.h#includeString.hint d204=0;/用来存储转换后的二进制数char c20=0;/用来存储十六进制数据int i=0;/用来进行计算int e=0;int g;/用来计算数组长度/void Man()/将数据进行二进制转换printf(请输入十六进制数据(小于20位):)
8、;scanf(%s,c);while(ci)/将字符串数据转换为数字if(ci=0&ci=A&ci=a&ci=f)ci=ci-87;elseprintf(数据错误!请退出重来!n);e=1;return;i+;g=i;int j;printf(该数据转换为二进制为:);for(i=0;i=0;j-) dij=ci%2;ci/=2;for(j=0;j4;j+)printf(%d,dij);printf(n);/void Tu()/显示曼彻斯特的模拟编码if(e=1)return;printf(该数据的曼彻斯特模拟编码为 :nn);for(int u=0;ui;u+)for(int j=0;j4;
9、j+)if(u=(g-1)&j=3)if(duj=0)printf(|);elseprintf(|);else if(duj=0)printf(|);if(j=3&ug)if(du+10=du3)printf(|);elseif(duj+1=duj)printf(|);else printf(|);if(j=3&ug)if(du+10=du3)printf(|);else if(duj+1=duj)printf(|);i+;printf(nn);/void main()Man();Tu(); 实验测试5. 1 测试步骤及内容首先进行正确的数据测试第一次测试:输入十六进制数据为:a12 第二次测
10、试: 输入十六进制数据为:0a12 接下来进行不正确数据的测试 第三次测试: 输入的数据为:ppq第四次测试: 输入的数据为:12sq 测试总结:输入合适或者不合适的数据都可以得到正确的回复,满足了课程设计的要求。 实验总结前前后后大的修改代码不下六次,第一次的代码当然是不完善的,虽然经过自己的多次验证,认为已经是正确的。其实当时还存在相当大的缺陷,比如图像的显示非常难看,没有显示出竖杠“|”,也不能进行多次循环执行。认识到这些缺点后,果断开始进行完善。第一步是对多次循环进行完善。第一次尝试使用for循环来实现。失败后,选择了最不受喜欢的goto语句,我居然实现了!经过对循环内容的多次修改,实
11、现了输入正确数据显示图像之后的循环,包括在选择的时候退出程序。也实现了输入错误数据提示之后的循环及退出。万万没料到的是第二天经过老师的测试,发现循环没问题,可是在第二次循环输入的时候,对字母(例如“a”)进行二进制转换时竟然会出现错误。但是数字却不会。疑惑的同时,接到老师的提醒,遂寻找修正错误。花去大量时间之后,发现个人解决不了,便认为是循环方式出错。改为while循环,修改完成之后,不仅发现第二次对字母进行二进制转换会出错,而且会在第二输出二进制数是多加上一组四个零的数据。无奈之下只好放弃循环。放弃循环之后,程序没有出现什么奇怪的错误了。于是进行第二步,对图像显示的完善。运用特殊字符将“”、“|”、“”输出来了。再次找老师进行审查。老师提出了本次课程设计本人的最后一个问题:最后输出图像多出了一竖。经过添加判断语句之后完善了这个缺陷,老师也终于“无可奈何”的认可了我的程序。最后,我对我第三次(goto语句)的代码还是存在很多疑问,为什么我第一次进行对字母的二进制转换没有问题,第二次会出错,数字却不会一起出错?第四次(while语句)的代码为什么每次第二次进行二进制转换都会多出四个零?知道
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论