1、 1. 3 功能划分 1. 4 运行需求及其他 3第2章 总体设计2. 1 系统方案2. 2 软件结构 4第3章 详细设计 5第4章 实验源码 6第5章 实验测试 95. 1 测试步骤及内容5. 2 测试总结 10第6章 实验总结 11 第一章 需求分析1. 1 引 言为方便日后软件的维护及升级,编写此需求说明书。按照此次课程设计的相关要求,在老师的指导下设计完成了程序。程序推荐在VC+ 6.0的环境下运行。以下是程序中用到的相关变量及函数名称释义:int d204,用来存储转换后的二进制数的数组char c20, 用来存储十六进制数据的数组int i, 用来进行运算及统计数组长度的变量int
2、 g, 用来存储数组长度的变量int u, 用来计算输出二维数组第一维的维数的变量int j 用来计算输出二维数组第二维的维数的变量int e, 用来判断是否进行图像输出void Man() 将字符串数据转换为十进制数,然后进行二进制转换的函数void Tu() 显示曼彻斯特的模拟编码设计过程中使用到的参考资料有如下:1、C程序设计(第四版)-谭浩强 著,清华大学出版社2、计算机网络(第三版)-吴功宜 著,清华大学出版社3、软件工程(2010年6月第一版)-景秀丽、吕洪林著,中国水利水电出版社1. 2 任务概述任务的目的是输入十六进制数据,输出曼彻斯特编码模拟的波形图。最终使程序能够在VC+6
3、.0中运行。要求在三天的上机课内完成任务,经老师验证后,方可准备实验报告。报告的内容应该包括封面、目录、需求分析、总体设计、详细设计、编码(详细写出编程步骤)、测试的步骤和内容、课程设计总结、参考资料等。1. 3 功能划分第一部分为输入数据;第二部分为字符串转换十进制数;第三部分为十进制转换二进制数;第四部分为输出曼彻斯特模拟编码;第五部分为主函数入口。1. 4 运行需求及其他 程序在VC+6.0的环境下编写,可以在支持语言的环境下运行。软件不具备保密功能,但可维护性强。若用户对保密性要求高,不推荐使用或测试。第2章 总体设计2. 1 系统方案 数据流图 : 输入数据 显示图像按照数据流图的实
4、现方式,推荐设计两个函数,第一个是将字符串转换为第3章 实验源码实验源码如下 :(附编程步骤:1、写文件头并建立main函数2、定义要创建的两个子函数3、main函数中调用子函数并进行第一次编译检查4、完成子函数的详细内容5、进行最后的编译及运行检测 )#includestdio.hString.hint d204=0;/用来存储转换后的二进制数char c20=0; /用来存储十六进制数据int i=0;/用来进行计算int e=0;int g;/用来计算数组长度/void Man()/将数据进行二进制转换 printf(请输入十六进制数据(小于20位):); scanf(%s,c); wh
5、ile(ci)/将字符串数据转换为数字 if(ci=0&ciAF ci=ci-55;af ci=ci-87; else printf(数据错误!请退出重来!ne=1; return; i+; g=i; int j;该数据转换为二进制为: for(i=0;i=0;j-) dij=ci%2; ci/=2; for(j=0;j4;j+)%d,dij);/void Tu()/显示曼彻斯特的模拟编码 if(e=1)该数据的曼彻斯特模拟编码为 :nn for(int u=0;ui;u+) for(int j=0; if(u=(g-1)&j=3) if(duj=0) printf(| else| else
6、if(duj=0) printf( if(j=3&g) if(du+10=du3) printf(| if(duj+1=duj) else else printf(/void main() Man(); Tu();第4章 实验测试5. 1 测试步骤及内容首先进行正确的数据测试第一次测试:输入十六进制数据为:a12 第二次测试: 输入十六进制数据为:0a12接下来进行不正确数据的测试 第三次测试: 输入的数据为:ppq第四次测试:12sq测试总结:输入合适或者不合适的数据都可以得到正确的回复,满足了课程设计的要求。第5章 实验总结前前后后大的修改代码不下六次,第一次的代码当然是不完善的,虽然经过
7、自己的多次验证,认为已经是正确的。其实当时还存在相当大的缺陷,比如图像的显示非常难看,没有显示出竖杠“|”,也不能进行多次循环执行。认识到这些缺点后,果断开始进行完善。第一步是对多次循环进行完善。第一次尝试使用for循环来实现。失败后,选择了最不受喜欢的goto语句,我居然实现了!经过对循环内容的多次修改,实现了输入正确数据显示图像之后的循环,包括在选择的时候退出程序。也实现了输入错误数据提示之后的循环及退出。万万没料到的是第二天经过老师的测试,发现循环没问题,可是在第二次循环输入的时候,对字母(例如“a”)进行二进制转换时竟然会出现错误。但是数字却不会。疑惑的同时,接到老师的提醒,遂寻找修正
8、错误。花去大量时间之后,发现个人解决不了,便认为是循环方式出错。改为while循环,修改完成之后,不仅发现第二次对字母进行二进制转换会出错,而且会在第二输出二进制数是多加上一组四个零的数据。无奈之下只好放弃循环。放弃循环之后,程序没有出现什么奇怪的错误了。于是进行第二步,对图像显示的完善。运用特殊字符将“”、“|”、“”输出来了。再次找老师进行审查。老师提出了本次课程设计本人的最后一个问题:最后输出图像多出了一竖。经过添加判断语句之后完善了这个缺陷,老师也终于“无可奈何”的认可了我的程序。最后,我对我第三次(goto语句)的代码还是存在很多疑问,为什么我第一次进行对字母的二进制转换没有问题,第二次会出错,数字却不会一起出错?第四次(while语句)的代码为什么每次第二次进行二进制转换都会多出四个零?知道此次课程设计结束,为什么字母第二次转换会出现错误依然没有解决。我将利用我自己的课余时间找出问题所在,尽全力解决。最后的最后,我再一次认识到自己编码能力的不足,今后一定会加强程序设计的锻炼,早日成为一个合格的程序猿
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1