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