简单计算器
C课程设计报告
题目:简单计算器
设计者:刘妮娜.李文妮.肖明秋专业班级:网络0901
学号:0930*******
0930*******
0930*******
指导教师:任长安
所属系部:计算机与信息科学系
2010年6 月24 日
目录
一、设计目的
二、设计要求
三、本组课题及组员任务
四、程序功能简介
五、主体内容
1.设计分析
2.程序结构
3.各模块的功能及程序说明
4. 源程序
5.试验过程及结果截图
6.设计体会
六、附录
一、设计目的
1、培养自己的实际分析、编程和动手能力,最终目标是想通过这次课程
设计,帮助自己更加系统的掌握该门课程的主要内容,综合自己所学的,为以后的学习打下基础。同时增加同学间的团队合作精神,更加体会到团队合作在以后的工作中的重要性与必要性。
2、培养自己对c语言程序设计的兴趣,更加有信心学好这门课程,把自
己掌握的基本知识和编写程序的能力运用到实际应用中,以此提高实际操作运行能力。并为后续各门计算机课程的学习打下坚实的基础。
3、设计一个简易计算器,可以进行加、减、乘、除运算。
二、设计要求
此程序能够进行简单的加、减、乘、除运算,并且运用所学的知识, 在设计程序的过程中运用switch、if、goto等语句,使程序循环。在这四种算术功能上尽量模拟windows操作系统中的计算机。
三、本组课题及组员任务
课题:计算器
组员任务:源程序及报告整体设计由组员三人合作完成,设计报告中出现的错误查找工作与改错由肖明秋负责,程序的流程图由刘妮娜负责,设计报告的后期检验工作由李文妮负责。
四、程序功能简介
计算器在输入数字后可进行加(+)、减(-)、乘(*)、除(/)等简单算术计算。
五、主体内容:
1、设计分析
首先分析程序设计的思想,设计的步骤、难点技术和解决方案。以及开发的过程和所要完成的功能。在编写程序过程中先弄清楚需要调用哪些头文件,再运用所学知识分段编写菜单目录,设置全局变量以及加、减、乘、除的运算代码,并运用循环语句使得算术能更流畅。
2、程序结构(各部分流程图)
(1) 主菜单
(2) 菜单选项(3)加法运算(4)减法运算
(5)乘法运算(6) 除法运算
(7) 选择加法的循环(8) 选择减法的循环
(9) 选择乘法的循环(10) 选择除法的循环
3、各模块的功能及程序说明
图(1)为main函数图,图(2)为menu-select,图(3)为加法运算,图(4)为减法运算,图(5)为乘法运算,图(6)为除法运算,图(7)—(10)分别为加、减、乘、除运算的选择循环结构。
4、源程序
#include
#include
#include
float add(float ,float );
float mub(float ,float );
float mult(float ,float );
float divp(float ,float);
int menu_select();
void xun_huan1();
void xun_huan2();
void xun_huan3();
void xun_huan4();
float x,y;//全局变量
double answer;
int main()
{
switch(menu_select())
{
case 1:answer=add( x, y);
xun_huan1();
case 2:answer=mub( x, y);
xun_huan2();
case 3:answer=mult( x, y);
xun_huan3();
case 4:answer=divp( x, y);
xun_huan4();
case 0:
default :{printf("Error! please input again!\n");main();}
exit(0);
}
return 0;
}
int menu_select()//菜单选项//
{
char s;
int cn;
printf("\nThis is computer menu below:\n");
printf("\t1.add \t");
printf("\t2.mub \t");
printf("\t3.mult \n");
printf("\t4.div \t");
printf("\t0.Error!\n");
printf("input 1--4 to choose :\t");
do
{
s=getchar();
cn=(int)s-48;//为了使switch语句中的case语句对应数字0~4// }
while(cn<0||cn>4);
return cn;
}
//***下面就是定义各种运算函数***//
float add(float x,float y)
{
printf("input numbers:\n");
scanf("%f %f",&x,&y);
return(x+y);
}
float mub(float x,float y)
{
printf("input numbers:\n");
scanf("%f %f",&x,&y);
return(x-y);
}
float mult(float x,float y)
{
printf("input numbers:\n");
scanf("%f %f",&x,&y);
return(x*y);
}
float divp(float x,float y)
{
printf("input numbers:\n");
scanf("%f %f",&x,&y);
return(x/y);
}
void xun_huan1()
{
printf("answer=%lf\n",answer);
printf("Do you want to countine?(y/n)\t");
char c;
c=getchar();
if((c=getchar())=='y')
{
loop: answer=add( x, y);
printf("answer=%lf\n",answer);
printf("Do you want to countine?(y/n)\t");
c=getchar();
if((c=getchar())=='y')
goto loop;//使用goto语句实现循环,继续进行加法运算// else goto loop1;
}
loop1: main();//返回主菜单//
}
void xun_huan2()
{
printf("answer=%lf\n",answer);
printf("Do you want to countine?(y/n)\t");
char c;
c=getchar();
if((c=getchar())=='y')
{
loop2: answer=mub( x, y);
printf("answer=%lf\n",answer);
printf("Do you want to countine?(y/n)\t");
c=getchar();
if((c=getchar())=='y')
goto loop2;
else goto loop3;
}
loop3: main();
}
void xun_huan3()
{
printf("answer=%lf\n",answer);
printf("Do you want to countine?(y/n)\t");
char c;
c=getchar();
if((c=getchar())=='y')
{
loop4: answer=mult( x, y);
printf("answer=%lf\n",answer);
printf("Do you want to countine?(y/n)\t");
c=getchar();
if((c=getchar())=='y')
goto loop4;
else goto loop5;
}
loop5: main();
}
void xun_huan4()
{
printf("answer=%lf\n",answer);
printf("Do you want to countine?(y/n)\t");
char c;
c=getchar();
if((c=getchar())=='y')
{
loop6: answer=divp( x, y);
printf("answer=%lf\n",answer);
printf("Do you want to countine?(y/n)\t");
c=getchar();
if((c=getchar())=='y')
goto loop6;
else goto loop7;
}
loop7: main();
}}
5、实验过程及结果截图:
6、设计体会
①、通过此次课程设计,我深刻体会到,C语言程序设计是一门实践性比较强的课程,要想得到良好的效果,必须注重编写。程序调试和程序测试的每一个环节。
②、C语言程序设计要求我们能灵活运用所学的知识解决实际问题,把掌握的基本知识和简单设计程序运用到生活中,以此进一步提高设计和编程的能力。③、在做这个课程设计题目的过程中,遇到了很多困难,感觉题目很难,根本就做不出来,但是通过与朋友们的研究与讨论,在网上收索相关的资料。在共同的努力之下完成了设计。在程序设计的过程之中,必须要细心的去写每一个步骤,不然很容易出错。
附录
一、函数设计列表:
二、函数的使用清单
在课程设计中主要用到以下函数,用法说明如下:
●主调函数
原型:int main(void)
功能:总控;
参数:void
返回值:0。
●菜单选择函数
原型:int menu_select(void)
功能:显示运算总菜单,并接收用户输入的字符,然后把输入的数据转换成int 型的
参数:void
返回值:int
●加法运算函数
原型:float add(float ,float )
功能:提示用户输入计算数据并接收数据,然后进行加法运算
参数:float x ,float y
返回值:float
●减法运算函数
原型float mub(float ,float )
功能:提示用户输入计算数据并接收数据,然后进行减法运算
参数:float x ,float y
返回值:float
●乘法运算函数
原型float mult (float ,float )
功能:提示用户输入计算数据并接收数据,然后进行乘法运算
参数:float x ,float y
返回值:float
●除法运算函数
原型float divp(float ,float )
功能:提示用户输入计算数据并接收数据,然后进行除法运算
参数:float x:除数,float y:被除数
返回值:float
●循环使用加法的函数
原型:void xun_huan1(void)
功能:当使用一次加法运算后,就会提示“Do you want to continue?(y/n)”,如果用户输入“y”,就继续调用加法函数,如果输入“n”,就会返回主菜单。
参数:void
返回值:void
●循环使用减法的函数
原型:void xun_huan2(void)
功能:当使用一次减法运算后,就会提示“Do you want to continue?(y/n)”,如果用户输入“y”,就继续调用减法函数,如果输入“n”,就会返回主菜单。
参数:void
返回值:void
●循环使用乘法的函数
原型:void xun_huan3(void)
功能:当使用一次乘法运算后,就会提示“Do you want to continue?(y/n)”,如果用户输入“y”,就继续调用乘法函数,如果输入“n”,就会返回主菜单。
参数:void
返回值:void
●循环使用除法的函数
原型:void xun_huan4(void)
功能:当使用一次除法运算后,就会提示“Do you want to continue?(y/n)”,如果用户输入“y”,就继续调用除法函数,如果输入“n”,就会返回主菜单。
参数:void
返回值:void
三、程序整体流程图