计算机网络课程设计实验报告曼彻斯特的编码模拟来自东华理工大学学子Word文档格式.docx
- 文档编号:12953972
- 上传时间:2022-10-01
- 格式:DOCX
- 页数:13
- 大小:109.11KB
计算机网络课程设计实验报告曼彻斯特的编码模拟来自东华理工大学学子Word文档格式.docx
《计算机网络课程设计实验报告曼彻斯特的编码模拟来自东华理工大学学子Word文档格式.docx》由会员分享,可在线阅读,更多相关《计算机网络课程设计实验报告曼彻斯特的编码模拟来自东华理工大学学子Word文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
1.3功能划分·
1.4运行需求及其他·
3
第2章总体设计·
2.1系统方案·
2.2软件结构·
4
第3章详细设计·
5
第4章实验源码·
6
第5章实验测试·
9
5.1测试步骤及内容·
5.2测试总结·
10
第6章实验总结·
11
第一章需求分析
1.1引言
为方便日后软件的维护及升级,编写此需求说明书。
按照此次课程设计的相关要求,在老师的指导下设计完成了程序。
程序推荐在VC++6.0的环境下运行。
以下是程序中用到的相关变量及函数名称释义:
intd[20][4],用来存储转换后的二进制数的数组
charc[20],用来存储十六进制数据的数组
inti,用来进行运算及统计数组长度的变量
intg,用来存储数组长度的变量
intu,用来计算输出二维数组第一维的维数的变量
intj用来计算输出二维数组第二维的维数的变量
inte,用来判断是否进行图像输出
voidMan()将字符串数据转换为十进制数,然后进行二进制转换的函数
voidTu()显示曼彻斯特的模拟编码
设计过程中使用到的参考资料有如下:
1、C程序设计(第四版)----谭浩强著,清华大学出版社
2、计算机网络(第三版)----吴功宜著,清华大学出版社
3、软件工程(2010年6月第一版)----景秀丽、吕洪林著,中国水利水电出版社
1.2任务概述
任务的目的是输入十六进制数据,输出曼彻斯特编码模拟的波形图。
最终使程序能够在VC++6.0中运行。
要求在三天的上机课内完成任务,经老师验证后,方可准备实验报告。
报告的内容应该包括封面、目录、需求分析、总体设计、详细设计、编码(详细写出编程步骤)、测试的步骤和内容、课程设计总结、参考资料等。
1.3功能划分
第一部分为输入数据;
第二部分为字符串转换十进制数;
第三部分为十进制转换二进制数;
第四部分为输出曼彻斯特模拟编码;
第五部分为主函数入口。
1.4运行需求及其他
程序在VC++6.0的环境下编写,可以在支持语言的环境下运行。
软件不具备保密功能,但可维护性强。
若用户对保密性要求高,不推荐使用或测试。
第2章总体设计
2.1系统方案
数据流图:
输入数据
显示图像
按照数据流图的实现方式,推荐设计两个函数,第一个是将字符串转换为
第3章实验源码
实验源码如下:
(
附编程步骤:
1、写文件头并建立main函数
2、定义要创建的两个子函数
3、main函数中调用子函数并进行第一次编译检查
4、完成子函数的详细内容
5、进行最后的编译及运行检测
)
#include"
stdio.h"
String.h"
intd[20][4]={0};
//用来存储转换后的二进制数
charc[20]={0};
//用来存储十六进制数据
inti=0;
//用来进行计算
inte=0;
intg;
//用来计算数组长度
////////////////////////////////////////////////////////////////////////////////////////////////
voidMan()//将数据进行二进制转换
{
printf("
请输入十六进制数据(小于20位):
"
);
scanf("
%s"
c);
while(c[i])//将字符串数据转换为数字
{
if(c[i]>
='
0'
&
c[i]<
9'
)
c[i]=c[i]-48;
elseif(c[i]>
A'
F'
c[i]=c[i]-55;
a'
f'
c[i]=c[i]-87;
else
{
printf("
数据错误!
请退出重来!
!
\n"
e=1;
return;
}
i++;
}
g=i;
intj;
该数据转换为二进制为:
for(i=0;
i<
g;
i++)//将十六进制转换为二进制
for(j=3;
j>
=0;
j--)
{
d[i][j]=c[i]%2;
c[i]/=2;
for(j=0;
j<
4;
j++)
%d"
d[i][j]);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
voidTu()//显示曼彻斯特的模拟编码
{
if(e==1)
该数据的曼彻斯特模拟编码为:
\n\n"
for(intu=0;
u<
i;
u++)
for(intj=0;
if(u==(g-1)&
j==3)
{
if(d[u][j]==0)
printf("
▔|▁"
else
▁|▔"
}
elseif(d[u][j]==0)
printf("
if(j==3&
g)
{
if(d[u+1][0]==d[u][3])
printf("
|"
}
if(d[u][j+1]==d[u][j])
else
else
printf("
///////////////////////////////////////////////////////////////////////////////////////////////////////////
voidmain()
Man();
Tu();
第4章实验测试
5.1测试步骤及内容
首先进行正确的数据测试
第一次测试:
输入十六进制数据为:
a12
第二次测试:
输入十六进制数据为:
0a12
接下来进行不正确数据的测试
第三次测试:
输入的数据为:
ppq
第四次测试:
12sq
测试总结:
输入合适或者不合适的数据都可以得到正确的回复,满足了课程设计的要求。
第5章实验总结
前前后后大的修改代码不下六次,第一次的代码当然是不完善的,虽然经过自己的多次验证,认为已经是正确的。
其实当时还存在相当大的缺陷,比如图像的显示非常难看,没有显示出竖杠“|”,也不能进行多次循环执行。
认识到这些缺点后,果断开始进行完善。
第一步是对多次循环进行完善。
第一次尝试使用for循环来实现。
失败后,选择了最不受喜欢的goto语句,我居然实现了!
经过对循环内容的多次修改,实现了输入正确数据显示图像之后的循环,包括在选择的时候退出程序。
也实现了输入错误数据提示之后的循环及退出。
万万没料到的是第二天经过老师的测试,发现循环没问题,可是在第二次循环输入的时候,对字母(例如“a”)进行二进制转换时竟然会出现错误。
但是数字却不会。
疑惑的同时,接到老师的提醒,遂寻找修正错误。
花去大量时间之后,发现个人解决不了,便认为是循环方式出错。
改为while循环,修改完成之后,不仅发现第二次对字母进行二进制转换会出错,而且会在第二输出二进制数是多加上一组四个零的数据。
无奈之下只好放弃循环。
放弃循环之后,程序没有出现什么奇怪的错误了。
于是进行第二步,对图像显示的完善。
运用特殊字符将“▔”、“|”、“▁”输出来了。
再次找老师进行审查。
老师提出了本次课程设计本人的最后一个问题:
最后输出图像多出了一竖。
经过添加判断语句之后完善了这个缺陷,老师也终于“无可奈何”的认可了我的程序。
最后,我对我第三次(goto语句)的代码还是存在很多疑问,为什么我第一次进行对字母的二进制转换没有问题,第二次会出错,数字却不会一起出错?
?
第四次(while语句)的代码为什么每次第二次进行二进制转换都会多出四个零?
知道此次课程设计结束,为什么字母第二次转换会出现错误依然没有解决。
我将利用我自己的课余时间找出问题所在,尽全力解决。
最后的最后,我再一次认识到自己编码能力的不足,今后一定会加强程序设计的锻炼,早日成为一个合格的程序猿~~
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机网络 课程设计 实验 报告 曼彻斯特 编码 模拟 来自 东华 理工大学 学子