沈阳航空航天大学c语言课程设计计算器.docx
《沈阳航空航天大学c语言课程设计计算器.docx》由会员分享,可在线阅读,更多相关《沈阳航空航天大学c语言课程设计计算器.docx(14页珍藏版)》请在冰豆网上搜索。
沈阳航空航天大学c语言课程设计计算器
沈阳航空航天大学
课程设计
学号
班级_
姓名
指导教师___
2013年08月28日
沈阳航空航天大学
课程设计任务书
系:
材料科学与工程学院专业:
金属材料工程班级:
24110102
学号:
2012041101051题目:
计算器
一、课程设计时间
2013~2014第1学期第1周,共计1周,20学时。
二、课程设计内容
用C语言编写软件完成以下任务:
在实数范围内支持加、减、乘、除运算,同时支持正弦、正切,及其反三角函数运算。
用户可以选择运算的类型,并可以在界面进行数据的输入和输出。
被运算的数据、运算的类型、运算的结果应能够保存到文件myfile.txt中。
保存的形式可以参考如下所示:
4*2=8;sin(0.5)=0.479426。
三、课程设计要求
程序质量:
✧贯彻结构化的程序设计思想。
✧用户界面友好,功能明确,操作方便。
✧用户界面中的菜单至少应包括“运算选项”、“数据输入”、“保存结果”、“退出”4项。
✧代码应适当缩进,并给出必要的注释,以增强程序的可读性。
课程设计说明书:
✧课程结束后,上交课程设计说明书和源程序。
课程设计说明书的内容参见提供的模板。
四、指导教师和学生签字
指导教师:
________学生签名:
________
五、成绩
六、教师评语
一、需求分析
经过对程序设计题目的分析可知,整个程序的设计实现大致分为两个大模块他们的功能分别是:
运算和保存;运算中又分为八个小模块,其中每一个小模块对应一个函数,他们的功能分别是:
数据作和函数(+),数据作差函数(-),数据作积函数(*),数据作商函数(/),数据作正弦函数运算(sin),数据作正切函数运算(tan),数据作反正弦函数运算(asin),数据作反正切函数运算(atan)模块。
。
1、数据作和函数主要实现求两个数的和;
2、数据作差函数主要实现求两个数的差;
3、数据作积函数主要实现求两个数的乘积;
4、数据作商函数主要实现求两个数的商值;
5、数据作正弦函数运算可以实现度数和数据的转化;
6、数据作余弦函数运算可以实现度数和数据的转化;
7、数据作反正弦函数运算可以实现数据和度数的转化;
8、数据作反正切函数运算可以实现数据和度数的转化。
除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。
每一个记录都包含在实数范围内加、减、乘、除运算,以及正弦、正切,及其反三角函数运算。
在程序当中,用户可以选择运算的类型,并可以在界面进行数据的输入和输出。
被运算的数据、运算的类型、运算的结果都能够保存到文件myfile.txt中。
这样做可以对所进行过的运算进行永久保存。
二、程序流程图
1、程序总体结构图
图1程序总体结构图
2、具体功能框图
(1)数据作和函数(+)
图2数据作和函数
(2)数据作差函数(-)
3数据作差函数图
(3)数据作积函数(*)
图4数据作积函数
(4)数据作商函数(/)
图5数据作商函数
(5)数据作sin数运算
图6数据作正弦函数运算
(6)数据作tan函数运算
图7数据作正切函数运算
(7)数据作asin函数运算
图8数据作反正弦函数运算
(8)数据作atan函数运算
图9数据作反正切函数运算
三、核心技术的实现说明及相应程序段
1.定义函数名称,分别编号,按照数字选择。
进入调试状态,页面显示“pleaseshurunidexuanzhe”选择计算函数进行下一步的运算,具体程序段如下while
(1)
{
printf("-----------------------------------------\n");
printf("jisuanqi\n");
printf("(a)+\n(b)-\n(c)*\n(d)/\n");
printf("(e)sin\n(f)tan\n(g)asin\n(h)atan\n(Q)out\n");
printf("pleaseshurunidexuanzhe\n");
2.运算函数:
用switch语句实现,分别计算,然后跳出。
具体程序段如下:
1.当加法时:
{
case'a':
printf("pleaseshurulianggeshuju\n");
scanf("%f%f",&m1,&m2);
result=m1+m2;
printf("%f+%f=%f\n",m1,m2,m1+m2);
fprintf(fp,"%f+%f=%f",m1,m2,result);
break;
2.当减法时:
case'b':
printf("pleaseshurulianggeshuju\n");
scanf("%f%f",&m1,&m2);
result=m1-m2;
printf("%f-%f=%f\n",m1,m2,m1-m2);
fprintf(fp,"%f-%f=%f",m1,m2,result);
break;
3.当乘法时:
case'c':
printf("pleaseshurulianggeshuju\n");
scanf("%f%f",&m1,&m2);
result=m1*m2;
printf("%f*%f=%f\n",m1,m2,m1*m2);
fprintf(fp,"%f*%f=%f",m1,m2,result);
break;
4.当除法时:
case'd':
printf("pleaseshurulianggeshuju\n");
scanf("%f%f",&m1,&m2);
result=m1/m2;
printf("%f/%f=%f\n",m1,m2,m1/m2);
fprintf(fp,"%f/%f=%f",m1,m2,result);
break;
而当是函数时,有下列关系式:
1.当sin函数时:
case'e':
printf("pleaseshuruyigeshuju\n");
scanf("%f",&m1);
result=sin(m1*2*3.1415926/360);
printf("sin(%f)=%f\n",m1,result);
fprintf(fp,"sin(%f)=%f",m1,result);
break;
2.当tan函数时:
case'f':
printf("pleaseshuruyigeshuju\n");
scanf("%f",&m1);
result=tan(m1*2*3.1415926/360);
printf("tan(%f)=%f\n",m1,result);
fprintf(fp,"tan(%f)=%f",m1,result);
break;
3.当函数是asin时
case'g':
printf("pleaseshuruyigeshuju\n");
scanf("%f",&m1);
result=asin(m1)*360/(3.1415926*2);
printf("asin(%f)=%f\n",m1,result);
fprintf(fp,"asin(%f)=%f",m1,result);
break;
4.当是atan时:
case'h':
printf("pleaseshuruyigeshuju\n");
scanf("%f",&m1);
result=atan(m1)*360/(3.1415926*2);
printf("atan(%f)=%f\n",m1,result);
fprintf(fp,"atan(%f)=%f",m1,result);
break;
default:
;
}
四.设计分析
本程序主要由八个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。
在这些函数当中,数据三角函数运算和反三角函数运算是程序中较为核心的部分,下面分别进行说明。
数据作三角函数运算
三角函数运算分为两种情况,其一是正弦函数(sin),其二是正切函数(tan)。
输入一个数据,通过数与度数的转换公式,输出结果。
具体的程序段如下:
正切函数:
case'e':
printf("pleaseshuruyigeshuju\n");
scanf("%f",&m1);
result=sin(m1*2*3.1415926/360);
printf("sin(%f)=%f\n",m1,result);
fprintf(fp,"sin(%f)=%f",m1,result);
break;
正弦函数:
case'f':
printf("pleaseshuruyigeshuju\n");
scanf("%f",&m1);
result=tan(m1*2*3.1415926/360);
printf("tan(%f)=%f\n",m1,result);
fprintf(fp,"tan(%f)=%f",m1,result);
break;
数据作反三角函数运算
该部分反三角函数运算也分为两种情况,其一是反正弦函数(asin),其二是反正切函数(atan)。
输入一个数据,通过度数与数的转换公式,输出结果。
具体程序段如下:
反正切函数:
case'g':
printf("pleaseshuruyigeshuju\n");
scanf("%f",&m1);
result=asin(m1)*360/(3.1415926*2);
printf("asin(%f)=%f\n",m1,result);
fprintf(fp,"asin(%f)=%f",m1,result);
break;
反正弦函数
case'h':
printf("pleaseshuruyigeshuju\n");
scanf("%f",&m1);
result=atan(m1)*360/(3.1415926*2);
printf("atan(%f)=%f\n",m1,result);
fprintf(fp,"atan(%f)=%f",m1,result);
break;
五、个人总结
一周的时间既短暂又漫长,但我学会了很多东西。
我深切的体会到在目前一个高速发展的社会,学好计算机对于一个大学生的重要性。
就C语言来说,每个题目都是以前没有练习过的,所以我们必须用自己平时所学的和发挥自己的创造性的思维去完成一个程序。
对于我个人来说,这的确是个一个很大的挑战,但却培养了我们做事的耐性和严谨性。
因为只要有一个地方出错就会导致整个程序不运行。
虽然课设之前接触了半年的C语言,但做课设的时候才知道我在这个方面知识是多么的匮乏。
面对题目,感觉有些力不从心。
但这一个让我对C语言产生了兴趣,当我实现了计算器的功能时,我有多么的高兴,有强烈的自豪感,也深深感到C语言这门功课真的很有用。
记得刚开始的时候,我经常因为一些英文字母而失去耐心,但现在想想我能一个人编一个完整的程序了,这是多大的进步啊!
对我有多大的鼓励!
对于C语言的学习我曾有过抱怨,也有过不解,有时会因力不从心而困惑,甚至还质问过为什么会有人发明这些东西,但经过这一个星期的学习我打消了这些念头,因为它所给我带来的痛苦远远不及我这几天所得到的快乐,有些东西一旦学到就会终身受益。
现在回想我在图书馆里查看那么多的资料,一个一个坚持看下来,这将在我今后的道路上有很大的帮助,心里有多高兴。
以上便是我这一周来课设的总结。
六、参考文献
谭浩强.C程序设计.北京:
清华大学出版社,2005
七、源程序
#include"stdio.h"
#include
#include"math.h"
voidmain()
{
floatm1,m2;
doubleresult;
charch;
FILE*fp;
fp=fopen("D:
\\myfile.txt","a+");
while
(1)
{
printf("-----------------------------------------\n");
printf("jisuanqi\n");
printf("(a)+\n(b)-\n(c)*\n(d)/\n");
printf("(e)sin\n(f)tan\n(g)asin\n(h)atan\n(Q)out\n");
printf("pleaseshurunidexuanzhe\n");
scanf("%c",&ch);
switch(ch)
{
case'a':
printf("pleaseshurulianggeshuju\n");
scanf("%f%f",&m1,&m2);
result=m1+m2;
printf("%f+%f=%f\n",m1,m2,m1+m2);
fprintf(fp,"%f+%f=%f",m1,m2,result);
break;
case'b':
printf("pleaseshurulianggeshuju\n");
scanf("%f%f",&m1,&m2);
result=m1-m2;
printf("%f-%f=%f\n",m1,m2,m1-m2);
fprintf(fp,"%f-%f=%f",m1,m2,result);
break;
case'c':
printf("pleaseshurulianggeshuju\n");
scanf("%f%f",&m1,&m2);
result=m1*m2;
printf("%f*%f=%f\n",m1,m2,m1*m2);
fprintf(fp,"%f*%f=%f",m1,m2,result);
break;
case'd':
printf("pleaseshurulianggeshuju\n");
scanf("%f%f",&m1,&m2);
result=m1/m2;
printf("%f/%f=%f\n",m1,m2,m1/m2);
fprintf(fp,"%f/%f=%f",m1,m2,result);
break;
case'e':
printf("pleaseshuruyigeshuju\n");
scanf("%f",&m1);
result=sin(m1*2*3.1415926/360);
printf("sin(%f)=%f\n",m1,result);
fprintf(fp,"sin(%f)=%f",m1,result);
break;
case'f':
printf("pleaseshuruyigeshuju\n");
scanf("%f",&m1);
result=tan(m1*2*3.1415926/360);
printf("tan(%f)=%f\n",m1,result);
fprintf(fp,"tan(%f)=%f",m1,result);
break;
case'g':
printf("pleaseshuruyigeshuju\n");
scanf("%f",&m1);
result=asin(m1)*360/(3.1415926*2);
printf("asin(%f)=%f\n",m1,result);
fprintf(fp,"asin(%f)=%f",m1,result);
break;
case'h':
printf("pleaseshuruyigeshuju\n");
scanf("%f",&m1);
result=atan(m1)*360/(3.1415926*2);
printf("atan(%f)=%f\n",m1,result);
fprintf(fp,"atan(%f)=%f",m1,result);
break;
case'q':
exit(0);
default:
;
}
fclose(fp);
}
}