1、课程设计汇报课程设计题目:曼彻斯特编码模拟 学生姓名:* 专 业:计算机科学和技术班 级:*学 号:*指导老师:* 12月19日 目 录第1章 需求分析 2 1. 1 引言 2 1. 2 任务概述 2 1. 3 功效划分 2 1. 4 运行需求及其它 3第2章 总体设计 32. 1 系统方案 32. 2 软件结构 4第3章 具体设计 5第4章 试验源码 6第5章 试验测试 95. 1 测试步骤及内容 95. 2 测试总结 10第6章 试验总结 11 第一章 需求分析1. 1 引 言为方便以后软件维护及升级,编写此需求说明书。根据此次课程设计相关要求,在老师指导下设计完成了程序。程序推荐在VC+
2、 6.0环境下运行。以下是程序中用到相关变量及函数名称释义:int d204,用来存放转换后二进制数数组char c20, 用来存放十六进制数据数组int i, 用来进行运算及统计数组长度变量int g, 用来存放数组长度变量int u, 用来计算输出二维数组第一维维数变量int j 用来计算输出二维数组第二维维数变量int e, 用来判定是否进行图像输出void Man() 将字符串数据转换为十进制数,然后进行二进制转换函数void Tu() 显示曼彻斯特模拟编码设计过程中使用到参考资料有以下:1、 C程序设计(第四版)-谭浩强 著,清华大学出版社2、 计算机网络(第三版)-吴功宜 著,清华
3、大学出版社3、 软件工程(6月第一版)-景秀丽、吕洪林著,中国水利水电出版社1. 2 任务概述任务目标是输入十六进制数据,输出曼彻斯特编码模拟波形图。最终使程序能够在VC+6.0中运行。要求在三天上机课内完成任务,经老师验证后,方可准备试验汇报。汇报内容应该包含封面、目录、需求分析、总体设计、具体设计、编码(具体写出编程步骤)、测试步骤和内容、课程设计总结、参考资料等。1. 3 功效划分第一部分为输入数据;第二部分为字符串转换十进制数;第三部分为十进制转换二进制数;第四部分为输出曼彻斯特模拟编码;第五部分为主函数入口。1. 4 运行需求及其它 程序在VC+6.0环境下编写,能够在支持语言环境下
4、运行。软件不含有保密功效,但可维护性强。若用户对保密性要求高,不推荐使用或测试。第二章 总体设计2. 1 系统方案 数据流图 :读取数据 输入数据将二进制数对应图形输出将字符串转换为二进制数 显示图像根据数据流图实现方法,推荐设计两个函数,第一个是将字符串转换为二进制函数,第二个是将二进制数对应图像显示函数。2. 2 软件结构层次图 :曼彻斯特编码模拟系统 判定输出图形 转换为二进制 转换为十进制 输出 输入 编辑第三章 具体设计依据第二章系统方案中数据流图和总体设计中软件结构层次图设计,画出具体程序步骤图。 开始步骤图设计以下 :输入数据字符是否正当? NO YES 将字符转换 为十进制数
5、输犯错误提醒 结束 对应输出相 正确波形图像 为十进制数 将十进制数 转换二进制 第四章 试验源码试验源码以下 :(附编程步骤:1、 写文件头并建立main函数2、 定义要创建两个子函数3、 main函数中调用子函数并进行第一次编译检验4、 完成子函数具体内容5、 进行最终编译及运行检测 )#includestdio.h#includeString.hint d204=0;/用来存放转换后二进制数char c20=0;/用来存放十六进制数据int i=0;/用来进行计算int e=0;int g;/用来计算数组长度/void Man()/将数据进行二进制转换printf(请输入十六进制数据(小
6、于20位):);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=
7、0;j4;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 测试步骤及内容首优异行正确数据测试第一次测试:输入十六进制数据为:
8、a12 第二次测试: 输入十六进制数据为:0a12 接下来进行不正确数据测试 第三次测试: 输入数据为:ppq第四次测试: 输入数据为:12sq 测试总结:输入适宜或不适宜数据全部能够得到正确回复,满足了课程设计要求。第六章 试验总结前前后后大修改代码不下六次,第一次代码当然是不完善,即使经过自己数次验证,认为已经是正确。其实当初还存在相当大缺点,比图像显示很难看,没有显示出竖杠“|”,也不能进行数次循环实施。认识到这些缺点后,果断开始进行完善。第一步是对数次循环进行完善。第一次尝试使用for循环来实现。失败后,选择了最不受喜爱goto语句,我竟然实现了!经过对循环内容数次修改,实现了输入正确
9、数据显示图像以后循环,包含在选择时候退出程序。也实现了输入错误数据提醒以后循环及退出。万万没料到是第二天经过老师测试,发觉循环没问题,可是在第二次循环输入时候,对字母(比如“a”)进行二进制转换时竟然会出现错误。不过数字却不会。迷惑同时,接到老师提醒,遂寻求修正错误。花去大量时间以后,发觉个人处理不了,便认为是循环方法犯错。改为while循环,修改完成以后,不仅发觉第二次对字母进行二进制转换会犯错,而且会在第二输出二进制数是多加上一组四个零数据。无奈之下只好放弃循环。放弃循环以后,程序没有出现什么奇怪错误了。于是进行第二步,对图像显示完善。利用特殊字符将“”、“|”、“”输出来了。再次找老师进行审查。老师提出了此次课程设计本人最终一个问题:最终输出图像多出了一竖。经过添加判定语句以后完善了这个缺点,老师也最终“无可奈何”认可了我程序。最终,我对我第三次(goto语句)代码还是存在很多疑问,为何我第一次进行对字母二进制转换没有问题,第二次会犯错,数字却不会一起犯错?第四次(while语句)代码为何每次第二次进行二进制转换全部会多出四个零?知道此次课程设计结束,为何字母第二次转换会出现错误仍然没有处理。我将利用我自己课余时间找出问题所在,尽全力处理。最终最终,我再一次认识到自己编码能力不足,以后一定会加强程序设计锻炼,早日成为一个合格程序猿