整理单位换算c程序设计doc.docx
《整理单位换算c程序设计doc.docx》由会员分享,可在线阅读,更多相关《整理单位换算c程序设计doc.docx(25页珍藏版)》请在冰豆网上搜索。
整理单位换算c程序设计doc
1前言1
2课程设计任务和基本设计要求1
2.1课程设计任务1
2.2基本设计要求2
3系统需求分析1
3.1系统功能需求分析2
3.2系统其它需求分析2
4系统设计2
4.1系统总体设计3
4.2系统详细设计3
4.2.1界面及功能详细设计4
4.2.2程序运行的具体操作6
5系统调试与设置
6课程设计总结13
6.1对所设计的系统的总结13
6.2个人心得体会14
参考文献14
附录23
单位换算
1前言
为了加深对《C语言程序设计》课程所学知识的理解,进一步巩固C语言语法规则。
学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备解决综合性实际问题的能力。
参加该程序设计可以很好的将所学的知识运用于实际,加深了对C语言的了解和体验,学会了一定的新方法来实现编程的目的。
提高了我用C语言编程的能力,达到了学以致用的目的。
此次课程设计我选择的题目是单位换算。
2课程设计任务和基本设计要求
2.1课程设计任务
学习C语言已有半年的时间,掌握了一定的C语言知识,但都只是皮毛,且仅限于课本的知识,而这是远远不够的,为了更深的掌握C语言知识,我参加了本次课程设计,按要求完成该程序的设计。
我设计的单位换算程序是一个单位换算程序,通过设计的程序实现输入输出、判断等基本功能。
该题要求实现二种以上单位的换算,必须有运用结构体、函数等
2.2基本设计要求
单位换算应该具有一个友好的系统界面,操作简单,结果清晰明了、适用于所有的用户,能满足用户的要求,即用户能够按照所编写的程序实现输入输出、判断进行三种不同类别的单位换算等基本功能。
3系统需求分析
3.1系统功能需求分析
单位换算程序的主要功能如下:
(1)输入输出信息功能
用户通过此功能进行信息录入,用户通过此功能在机器终端按照程序输出主菜单、1.长度单位转换2.时间单位转换3.数制转换等信息,从而控制单位换算的进程。
当程序开始运行时,用户可以通过输入功能选择执行那种单位换算,
(2)判断信息功能
程序开始后,用户通过输入信息后,通过一定的判断语句,输出相应的信息继续运行程序。
例如人通过输入信息1、2、3。
机器判断来决定执行哪个小程序。
3.2系统其它需求分析
(1)性能要求
实时性好、可靠性强。
(2)设计约束
开发工具:
Turbo.c
运行环境:
Windows2000以上
能实现用户所定义的各项需求
(3)软硬件要求
在windows平台上运行;
在Turbo.c中运行;
客户端使用普通个人计算机。
(4)界面要求
以Windows窗口形式显示,顶部为标题栏,接着是菜单栏,上面有File、Edit、Compile、Run等操作显示。
程序全部英文给出。
4系统设计
4.1系统总体设计
为了实现单位换算程序的所有需求,设计应分为三个部分:
首先需要设计此单位换算的界面以及其框架布局。
单位换算的框架采用Windows标准框架,从上由下依次是标题栏、菜单栏、操作栏和信息显示区。
菜单栏包含设置以及操作两个菜单项,并对菜单项以及界面上的控制按钮进行事件响应,相应地来成功控制单位换算程序的各项操作。
其次则需设计单位换算的功能设计,需要设计输入输出、判断等功能。
单位换算程序
长度单位转换
时间单位转换
数
制
转换
千米与其他长度单位的转换
米与其他长度单位的转换
分米与其他长度单位的转换
厘米与其他长度单位的转换
毫米与其他长度单位的转换
钠米与其他长度单位的转换
微米与其他长度单位的转换
天与其他时间单位的转换
分钟与其他时间单位的转换
小时与其他时间单位的转换
秒与其他时间单位的转换
二进制与其他进制的转换
八进制与其他进制的转换
十进制与其他进制的转换
十二进制与其他进制的转换
单位换算程序设计设计共含输入、输出、判断等功能模块。
单位换算的功能模块图如图1所示。
图1单位换算功能模块
4.2系统详细设计
4.2.1界面及功能详细设计
单位换算的程序设计由三个调用函数构成,分别为fun1、fun2和fun3函数,其中fun1函数是用于进行长度单位的换算,fun2函数则是用于时间单位的换算,最后fun3函数用来实现数制转换。
生成单位换算程序的结构图如图2所示。
图2单位换算的程序结构图
此单位换算程序由三个调用函数实现所有设计需求。
第一个函数实现了长度单位转换的功能,第二个函数实现了时间单位转换的功能,第三个则实现了数制转换的功能,他们各自实现的功能分析如下:
(1)fun1()方法
fun1()方法完成了长度单位转换的功能,调用此函数后,人如在机器终端输入x==10,y==k,则表示将10千米用其他长度单位表示。
(2)fun2()方法
fun2()方法实现了时间单位转换的功能,人如在机器终端输入x==24,y==h,则表示将24小时用其他时间单位表示。
(3)fun3()方法
fun3()函数的设计主要是为了实现数制转换的功能,人如在机器终端输入x==10,y==2,则表示将十进制转换成二进制。
开始
输入x,y,z
Z=1
fun1(floatx,chary)
fun3(intx,inty)
Z=2
fun2(floatx,chary)
y=t
y=k
输出c=(le+3)a,d=’m’c=(le+4)a,d=’d’
………
Y
由此三个调用函数,下面给出游戏流程图,如图3所示:
…
…
y=h
y=d
y=s
输出c=86400a,e=’s’c=1440a,e=’d’
c=24a,e=’h’
输出c=3600a,e=’s’c=60a,e=’d’
c=a/24,e=’h’
输出
c=60a,e=’s’
c=a/60,e=’h’c=a/24,e=’t’
输出c=a/60,e=’s’c=a/3600,e=’h’
c=a/86400,e=’t’
结束
Y
Y
Y
N
N
N
图3单位换算流程图
4.2.2程序运行的具体操作
单位换算程序各种操作实现详细如下:
(1) 输入输出信息操作
由程序流程可知,程序运行时,首先会输出主菜单,1长度单位转换、2时间单位转换、3数制转换,表示此为单位换算程序。
当再次输出Z的数值时,再决定执行那一步程序,此时程序开始
{
/* printf("\t\t*****主菜单****\n\n");
printf("\t\t**** 1.单位换算 ****\n\n");
printf("\t\t**** 2.时间换算****\n\n”);
printf(“\t\t****3.数制转换****\n\n”);
*/
}
(2)判断用户所输入的Z值
if(z==1)
fun1(x,y);
elseif(z==2)
fun2(x,y);
else
fun3(x,y);
}
(3)长度单位转换的程序
voidfun1(floata,charb)
/*a为数值,b为长度单位*/
{
floatc,chard;
clrscr();
if(b==’k’)
/*千米与米、分米、厘米、毫米、微米、纳米之间的转换*/
{
c=(le+3)*a,d='m';/*千米转换成米*/
c=(le+4)*a,d='d';/*千米转换成分米*/
c=(le+5)*a,d='c';/*千米转换成厘米*/
c=(le+6)*a,d='g';/*千米转换成毫米*/
c=(le+9)*a,d='u';/*千米转换成微米*/
c=(le+12)*a,d='n';/*千米转换成钠米*/
}
if(b=='m')
/*米与千米、分米、厘米、毫米、微米、纳米之间的转换*/
{
c=(le-3)*a,d='k';
c=(le+1)*a,d='d';
c=(le+2)*a,d='c';
c=(le+3)*a,d='g';
c=(le+6)*a,d='u';
c=(le+9)a,d='n';
}
if(b=='d')
/*分米与千米、米、厘米、毫米、微米、纳米之间的转换*/
{
c=(le-4)*a,d='k';
c=(le-1)*a,d='m';
c=(le+1)*a,d='c';
c=(le+2)*a,d='g';
c=(le+5)*a,d='u';
c=(le+8)*a,d='n';
}
if(b=='c')
/*厘米与千米、米、分米、毫米、微米、纳米之间的转换*/
{
c=(le-5)*a,d='k';
c=(le-2)*a,d='m';
c=(le-1)*a,d='d';
c=(le+1)*a,d='g';
c=(le+4)*a,d='u';
c=(le+7)*a,d='n';
}
if(b=='g')
/*毫米与千米、米、分米、厘米、微米、纳米之间的转换*/
{
c=(le-6)*a,d='k';
c=(le-3)*a,d='m';
c=(le-2)*a,d='d';
c=(le-1)*a,d='c';
c=(le+3)*a,d='u';
c=(le+6)*a,d='n';
}
if(b='u')
/*微米与千米、米、分米、厘米、毫米、纳米之间的转换*/
{
c=(le-9)*a,d='k';
c=(le-6)*a,d='m';
c=(le-5)*a,d='d';
c=(le-4)*a,d='c';
c=(le-3)*a,d='g';
c=(le+3)*a,d='n';
}
if(b='n')
/*纳米与千米、米、分米、厘米、毫米、微米之间的转换*/
{
c=(le-12)*a,d='k';
c=(le-9)*a,d='m';
c=(le-8)*a,d='d';
c=(le-7)*a,d='c';
c=(le-6)*a,d='g';
c=(le-3)*a,d='u';
}
}
(4)时间单位转换的程序
voidfun2(floata,charb)
/*a为数值,b为时间单位*/
{
floatc,chare;
clrscr();
if(b=t)
/*天与小时、分钟、秒之间的转换*/
{
c=86400*a,e='s';/*天转换成秒*/
c=1440*a,e='d';/*天转换成分钟*/
c=24*a,e='h';/*天转换成小时*/
}
if(b=h)
/*小时与天、分钟、秒之间的转换*/
{
c=3600*a,e='s';
c=60*a,e='d';
c=a/24,e='t';
}
if(b=d)
/*分钟与天、小时、秒之间的转换*/
{
c=60*a,e='s';
c=a/60,e='h';
c=a/1440,e='t';
}
if(b=s)
/*秒与天、小时、分钟之间的转换*/
{
c=a/60.e='d';
c=a/3600,e='h';
c=a/86400,e='t';
}
}
(5)数制转换的程序
void fun3(intm,intn)
{
intx;
charch;
flush(stdin);
/*一个M进制的数X转10进制*/
for(x=0;;)
{
ch=getchar();
if(ch>='0'&&ch<='9')
{
n=ch-'0';
}
elseif(ch>='a'&&ch<='z')
{
n=ch-'a'+10;
}
elseif(ch>='A'&&ch<='Z')
{
n=ch-'A'+10;
}
else
{
break;
}
if(n>=m)
{
gotoloop;
}
x=x*m+n;
}
printf("转化成十进制数为:
%d\n",x);
printf("给定要转化进制数M:
");
scanf("%d",&m);
printf("转化成%d进制后的结果为:
",m);
trans(x,m);
printf("\n");
}
voidtrans(intn,intm)
{
charstr[100];
inti;
for(i=0;n>0;i++)
{
if(n%m<10)
{
str[i]=n%m+'0';
}
else
{
str[i]=n%m-10+'A';
}
n=n/m;
}
for(n=i;n>0;n--)
{
printf("%c",str[n-1]);
}
5系统实现与设置
使用Turbo.c运行程序时,首先打开fire文件夹中的edit子文件夹,编辑以写出的文件,再通过ctrl+c进行检查,程序无误后运行。
运行次单位换算成叙事窗口指令操作如下:
Printfz==1
Scanf长度单位转换
Pleasecount:
printfx==10,y==‘k’;
scanfc==10000,d==‘m’;
c==10000,d==‘d’;
c==100000,d==‘c’;
c==1000000,d==‘g’;
c==1000000000,d==‘u’;
c==10000000000000,d==‘n’;
printfz==2
Scanf时间单位转换
Pleasecount:
Printfx==3,y==t;
Scanfc==72,e==‘h’;
c==4320,e==‘d’;
c==259200,e==‘s’;
6课程设计总结
6.1对所设计的程序的总结
此次我所设计的单位换算程序基本实现了所需求的功能,即成功地运行了。
用户能够正常进行三项简单的单位之间的转换。
但是受水平及其它一些因素的限制,该程序行数不够长,设计也不够完善,能进行的单位换算有限。
不足以吸引用户使用。
但通过这次课程设计,所得的收获还是挺多的。
不仅学到了课堂上所学不到的东西,而且还加深了对这门课的理解,能够较熟悉的使用C语言编写稍复杂点的程序了,特别是对函数的调用上,进步颇大,收获甚多。
还有在自主学习能力上也有了很大的提高。
同时这次课程设计也给了我多次上机操作的机会,加强了自己的动手操作能力。
希望下次还能有这么好的机会来提高自己的能力,真正掌握并应用自己的所学,达到学以致用的目的。
6.2个人心得体会
这次课程设计做下来感触颇多,硬逼着自己利用一个暑假的时间来更深地学习C语言课程设计,并利用所学做一个课程设计,这对于我来说是一个挑战。
因为毕竟我们所学的知识有限,且以前在课堂上学的是一些简短且易懂的程序。
仅凭我们在课堂上的所学来完成该程序设计是无法达到的,因此我必需不断上网查询或去图书馆借书来研读,幸好经过努力,我虽不能很好的运用我所学的相关知识到实际设计中来,但是最终我还是按自己所预定的设计要求完成了流程的各个步骤,基本实现了单位换算的程序设计。
第一次进行课程设计,难度虽不小,但是收获也异常丰富,更深的掌握了C
语言程序设计这门课程,掌握了一定的专业基础,了解了课程设计的书写,认识到了自己能力水平的不足,改变了自己对于语言学习的态度,语言的学习核心在实际操作而非理论学习。
最重要的是,它培养了我对C语言的兴趣。
通过为期一个暑假的课程设计实验使我了解到了一个程序从编写到运行是需要经过多少次不断的更改,操作再操作。
为了一个算法的实现而绞尽脑汁,为了一个小小的编译错误而花时间去寻找,这需要很大的毅力和耐心,而且要有良好的思维,这才能完成这个任务,也使我感到一分喜悦。
使我更深的体会到一分耕耘一分收获。
于此,我也发现自己的一些不足,知道只有养成良好的编程习惯,有着坚定的毅力和决心,不断的补充C语言知识,同别人交流才能不断使自己进步并取得成功。
参考文献
[1]刘振安等.C程序设计课程设计[M].机械工业出版社.书号:
ISBN7-111-14619-0
[2]李兰友等.TurboC语言程序设计[M]400例.电子工业出版社.书号:
ISBN7-5053-1327-4
[3]李大友.C语言程序设计[M].清华大学出版社.书号:
ISBN7-302-03103-7
[4]付玉生.SQLServer2005基础教程与上机指导[M].北京:
清华大学出版社,2006
[5]裘雪红.计算机毕业设计宝典[M].西安:
西安电子科技大学出版社,2008
[6]萨师煊,王珊.数据库系统概论[M].北京:
高等教育出版社,2006
[7]谭浩强.C程序设计(第1版)[M].清华大学出版社
附录
单位换算的完整程序如下:
附件(个)
超大附件
正在检测超大附件
%name% (%size%,%expiretime%),
查看下载信息
#include
voidmain()
{
/* printf("\t\t*****主菜单****\n\n");
printf("\t\t**** 1.单位换算 ****\n\n");
printf("\t\t**** 2.时间换算****\n\n”);
printf(“\t\t****3.数制转换****\n\n”);
*/
voidfun1(float,char)
/*对被调用函数fun1的声明*/
voidfun2(float,char)
/*对被调用函数fun2的声明*/
voidfun3(int,int)
/*对被调用函数fun3的声明*/
floatx,z,m;chary,n;
printf(“pleaseinputx,y,z:
\n”);
scanf("%f,%f,%c",&x&z&y);
if(z==1)
fun1(x,y);
elseif(z==2)
fun2(x,y);
else
fun3(x,y);
}
voidfun1(floata,charb)
/*a为数值,b为长度单位*/
{
floatc,chard;
clrscr();
if(b==’k’)
/*千米与米、分米、厘米、毫米、微米、纳米之间的转换*/
{
c=(le+3)*a,d='m';/*千米转换成米*/
c=(le+4)*a,d='d';/*千米转换成分米*/
c=(le+5)*a,d='c';/*千米转换成厘米*/
c=(le+6)*a,d='g';/*千米转换成毫米*/
c=(le+9)*a,d='u';/*千米转换成微米*/
c=(le+12)*a,d='n';/*千米转换成钠米*/
}
if(b=='m')
/*米与千米、分米、厘米、毫米、微米、纳米之间的转换*/
{
c=(le-3)*a,d='k';
c=(le+1)*a,d='d';
c=(le+2)*a,d='c';
c=(le+3)*a,d='g';
c=(le+6)*a,d='u';
c=(le+9)a,d='n';
}
if(b=='d')
/*分米与千米、米、厘米、毫米、微米、纳米之间的转换*/
{
c=(le-4)*a,d='k';
c=(le-1)*a,d='m';
c=(le+1)*a,d='c';
c=(le+2)*a,d='g';
c=(le+5)*a,d='u';
c=(le+8)*a,d='n';
}
if(b=='c')
/*厘米与千米、米、分米、毫米、微米、纳米之间的转换*/
{
c=(le-5)*a,d='k';
c=(le-2)*a,d='m';
c=(le-1)*a,d='d';
c=(le+1)*a,d='g';
c=(le+4)*a,d='u';
c=(le+7)*a,d='n';
}
if(b=='g')
/*毫米与千米、米、分米、厘米、微米、纳米之间的转换*/
{
c=(le-6)*a,d='k';
c=(le-3)*a,d='m';
c=(le-2)*a,d='d';
c=(le-1)*a,d='c';
c=(le+3)*a,d='u';
c=(le+6)*a,d='n';
}
if(b='u')
/*微米与千米、米、分米、厘米、毫米、纳米之间的转换*/
{
c=(le-9)*a,d='k';
c=(le-6)*a,d='m';
c=(le-5)*a,d='d';
c=(le-4)*a,d='c';
c=(le-3)*a,d='g';
c=(le+3)*a,d='n';
}
if(b='n')
/*纳米与千米、米、分米、厘米、毫米、微米之间的转换*/
{
c=(le-12)*a,d='k';
c=(le-9)*a,d='m';
c=(le-8)*a,d='d';
c=(le-7)*a,d='c';
c=(le-6)*a,d='g';
c=(le-3)*a,d='u';
}
}
voidfun2(floata,charb)
/*a为数值,b为时间单位*/
{
floatc,chare;
clrscr();
if(b=t)
/*天与小时、分钟、秒之间的转换*/
{
c=86400*a,e='s';/*天转换成秒*/
c=1440*a,e='d';/*天转换成分钟*/
c=24*a,e='h';/*天转换成小时*/
}
if(b=h)
/*小时与天、分钟、秒之间的转换*/
{
c=3600*a,e='s';
c=60*a,e='d';
c=a/24,e='t';
}
if(b=d)
/*分钟与天、小时、秒之间的转换*/
{
c=60*a,e='s';
c=a/60,e='h';
c=a/1440,e='t';
}
if(b=s)
/*秒与天、小时、分钟之间的转换*/
{
c=a/60.e='d';
c=a/3600,e='h';
c=a/86400,e='t';
}
}
void fun3(intm,intn)
/*数制转换*/
{
intx;
charch;
flush(stdin);
/*一个M进制的数X转10进制*/
for(x=0;;)
{
ch=getchar();
if(ch>='0'&&ch<='9')
{
n=ch-'0';
}
elseif(ch>='a'&&ch<='z')
{
n=ch-'a'+10;
}
elseif(ch>='A'&&ch<='Z')
{
n=ch-'A'+10;
}
else
{
break;
}