计算器.docx
《计算器.docx》由会员分享,可在线阅读,更多相关《计算器.docx(14页珍藏版)》请在冰豆网上搜索。
计算器
沈阳航空工业学院
课程设计
学号200604061108
班级6406103
姓名徐梦龙
指导教师王晓岩
2008年03月14日
沈阳航空工业学院
课程设计任务书
机械电子工程机械设计及其自动化6406103班200604061108
一、课程设计题目:
计算器
二、课程设计时间:
2007~08第2学期第2周,共计1周,20学时
三、课程设计内容:
用C语言编写软件完成以下任务:
在实数范围内支持加、减、乘、除运算,同时支持正弦、正切,及其反三角函数运算。
用户可以选择运算的类型,并可以在界面进行数据的输入和输出。
被运算的数据、运算的类型、运算的结果应能够保存到文件myfile.txt中。
保存的形式可以参考如下所示:
4*2=8;sin(0.5)=0.479426。
四、课程设计要求:
程序质量:
✧贯彻结构化程序设计思想。
✧用户界面友好,功能明确,操作方便;可以加以其它功能或修饰。
✧用户界面中的菜单至少应包括“运算选项”、“数据输入”、“保存结果”、“退出”4项。
✧代码应适当缩进,并给出必要的注释,以增强程序的可读性。
课程设计说明书:
课程结束后,上交课程设计说明书(打印稿和电子稿),其内容如下:
✧封面
✧课程设计任务书
✧目录
✧需求分析(分析题目的要求)
✧程序流程图(总体流程图和主要功能模块流程图)
✧核心技术的实现说明及相应程序段
✧个人总结
✧参考资料
✧源程序及适当的注释
指导教师:
学生签名:
五、说明书成绩
六、教师评语
目录
一、需求分析1
二、程序流程图2
三、核心技术的实现说明及相应程序段12
四、个人总结17
五、参考文献18
六、源程序18
一、需求分析
经过对程序设计题目的分析可知,整个程序的设计实现大致分为两个大模块他们的功能分别是:
运算和保存。
其中运算模块又分为八个小模块,每一个小模块对应一个函数,他们的功能分别是:
数据作和函数(+),数据作差函数(-),数据作积函数(*),数据作商函数(/),数据作正弦函数运算(sin),数据作正切函数运算(tan),数据作反正弦函数运算(asin),数据作反正切函数运算(atan)模块。
每个小模块的功能如下:
1、数据作和函数主要实现求两个数的和;
2、数据作差函数主要实现求两个数的差;
3、数据作积函数主要实现求两个数的乘积;
4、数据作商函数主要实现求两个数的商值;
5、数据作正弦函数运算可以实现度数和数据的转化;
6、数据作余弦函数运算可以实现度数和数据的转化;
7、数据作反正弦函数运算可以实现数据和度数的转化;
8、数据作反正切函数运算可以实现数据和度数的转化。
除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。
每一个记录都包含在实数范围内加、减、乘、除运算,以及正弦、正切,及其反三角函数运算。
在程序当中,用户可以选择运算的类型,并可以在界面进行数据的输入和输出。
被运算的数据、运算的类型、运算的结果都能够保存到文件myfile.txt中。
这样做可以对所进行过的运算进行永久保存。
二、程序流程图
1、程序总体结构图
真n=a?
假
作真n=b?
假
和作真n=c?
假
运差作真n=d?
假
算运积作真n=e?
假
算运商作真n=f?
假
算运正作真n=g?
假
算弦正反真n=h?
假
运切正反
运弦正退
算运切
算运出
算
图1程序总体结构图
2、具体功能框图
(1)数据作和函数(+)
开始
结束
图2数据作和函数
(2)数据作差函数(-)
开始
结束
图3数据作差函数
(3)数据作积函数(*)
开始
图4数据作积函数
(4)数据作商函数(/)
开始
图5数据作商函数
(5)数据作正弦函数运算(sin)
开始
图6数据作正弦函数运算
(6)数据作正切函数运算(tan)
开始
图7数据作正切函数运算
(7)数据作反正弦函数运算(asin)
开始
图8数据作反正弦函数运算
(8)数据作反正切函数运算(atan)
开始
图9数据作反正切函数运算
三、核心技术的实现说明及相应程序段
1.定义函数名称,分别编号,按照数字选择。
进入调试状态,页面显示“pleaseenteryourchoice:
”选择计算函数进行下一步的运算,具体程序段如下:
voidmain()
{
floatm1,m2;
doubleresult;
charch;
FILE*fp;
fp=fopen("D:
\\myfile.txt","w+");
while
(1)
{
printf("****************************\n");
printf("**\n");
printf("*Calculator*\n");
printf("**\n");
printf("****************************\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("------------------------------------------\n");
printf("|Pleaseenteryourchoice:
|\n");
printf("------------------------------------------\n");
2.运算函数:
用switch语句实现,分别计算,然后跳出。
具体程序段如下:
switch(ch)
{
case'a':
printf("-----------------------------------------\n");
printf("|Pleaseentertwonumbers:
|\n");
printf("-----------------------------------------\n");
scanf("%f%f",&m1,&m2);
getchar();
result=m1+m2;
printf("%f+%f=%f\n",m1,m2,m1+m2);
fprintf(fp,"%f+%f=%f",m1,m2,result);
break;
case'b':
printf("-----------------------------------------\n");
printf("|Pleaseentertwonumbers:
|\n");
printf("-----------------------------------------\n");
scanf("%f%f",&m1,&m2);
getchar();
result=m1-m2;
printf("%f-%f=%f\n",m1,m2,m1-m2);
fprintf(fp,"%f-%f=%f",m1,m2,result);
break;
case'c':
printf("-----------------------------------------\n");
printf("|Pleaseentertwonumbers:
|\n");
printf("-----------------------------------------\n");
scanf("%f%f",&m1,&m2);
getchar();
result=m1*m2;
printf("%f*%f=%f\n",m1,m2,m1*m2);
fprintf(fp,"%f*%f=%f",m1,m2,result);
break;
case'd':
printf("-----------------------------------------\n");
printf("|Pleaseentertwonumbers:
|\n");
printf("-----------------------------------------\n");
scanf("%f%f",&m1,&m2);
getchar();
result=m1/m2;
printf("%f/%f=%f\n",m1,m2,m1/m2);
fprintf(fp,"%f/%f=%f",m1,m2,result);
break;
case'e':
printf("-----------------------------------------\n");
printf("|Pleaseenteronenumber:
|\n");
printf("-----------------------------------------\n");
scanf("%f",&m1);
getchar();
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("-----------------------------------------\n");
printf("|Pleaseenteronenumber:
|\n");
printf("-----------------------------------------\n");
scanf("%f",&m1);
getchar();
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("-----------------------------------------\n");
printf("|Pleaseenteronenumber:
|\n");
printf("-----------------------------------------\n");
scanf("%f",&m1);
getchar();
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("-----------------------------------------\n");
printf("|Pleaseenteronenumber:
|\n");
printf("-----------------------------------------\n");
scanf("%f",&m1);
getchar();
result=atan(m1)*360/(3.1415926*2);
printf("atan(%f)=%f\n