资源描述
C语言课程设计
工
程
实
践
院系名称 网络工程学院
班 级
学生姓名
学 号
课 题 计 算 器
目 录
摘 要 1
一、问题要求及任务描述 2
二、系统分析 3
1、功能需求 3
2、数据需求 3
3、性能需求 3
4、系统模块框架图 3
三、详细设计与实现 4
1、界面设计 4
2、流程图 4
四、程序测试 5
1、程序运行界面 5
欢迎界面 5
输入错误时界面 5
计算不包含三角函数时界面 6
输入算式后界面 6
计算包含三角函数时界面 7
输入算式后界面 7
选择continue后界面 8
不继续计算时界面 8
总结 9
源代码 10
摘 要
计算器是人们生活必不可少的简单工具。在我们的学习生活中经常会用到计算器来进行简单的运算。因此,如何编写一个简单的计算器程序,也是我们应该掌握的。
本程序使用C语言作为开发语言,开发计算器,实现简单的加、减、乘、除、取余数、求三角函数等运算。
本文分析了程序的设计需求、设计意义、题目要求等,分别从需求分析、总体设计、详细设计等各个方面详细介绍了程序的设计与实现过程。
关键字:计算器,加减乘除,取余数
一、问题要求及任务描述
题目要求
完成一个简单的计算器,要求实现最基本的运算操作,当用户输入一个算式后,计算器显示计算结果,同时屏幕项部显示:continue? 如果用户此时按Y键,则继续输入下一个算式,否则,程序终止。
实现要求:
由主函数获取用户输入的算式并进行分解,确定操作数和操作符
完成基本运算(+-×÷%)函数
完成复杂运算(sin,cos,tag)函数
二、系统分析
1、功能需求
本系统是一个简单的计算器程序系统
本系统需要实现加、减、乘、除、取余数、三角函数等功能,并尽量使计算结果精确。
2、数据需求
本系统需要手动输入需要计算的算式,由系统自动分解出运算数据,运算操作符。
3、性能需求
在运行本程序时只要按照正确的操作方法不会出现无法运行的情况,系统稳定好,安全可靠。
4、系统模块框架图
欢迎界面
进行运算
退 出
正切
余弦
正弦
求余
除法
乘法
减法
加
法
三、详细设计与实现
1、界面设计
运行本程序,会弹出一个窗口,用户在窗口中按照要求输入进行操作
开 始
2、流程图
Continue?
输出操作数据与计算数据
输出操作数据与计算数据
输入需计算算式
输入三角函数
输入错误,重新输入
输入需计算算式
Choise1
输入含三角函数吗?
choose
Y
退 出
输入错误,重新输入
结 束
四、程序测试
1、程序运行界面
欢迎界面
图1
输入错误时界面
图2
计算不包含三角函数时界面
图3
输入算式后界面
图4
计算包含三角函数时界面
图5
输入算式后界面
图6
选择continue后界面
图7
不继续计算时界面
图8
总结
经过一段时间的编译,终于完成计算器代码,虽然有的地方不尽人意,但是已达到了题目要求。为了完成程序,首先进行分析了自己的设计思路,制定了设计流程,从而明白了自己的设计方向。
通过这次程序设计,在实际的编程中发现自己学习过程中的问题,通过思考实践慢慢解决一个个问题,这增强了自己的能力,积累了编程的实践经验,加深了自己对C语言的理解。
源代码
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<string.h>
#define pi 3.1415926
#define M 1e-6
void function1(float x,char y,float z);
void function2(float x,char name[3]);
void choose();
main()
{
char choise1,choise2;
float num1,num2;
char symbol;
char name[3];
int t;
choose();
x:
printf("·请输入你要进行的操作:\n");
scanf("%d",&t);
getchar();
switch(t)
{
case 1:
do
{
loop:
printf("·计算包含三角函数吗?(y/n)\n");
scanf("%c",&choise1);
getchar();
switch(choise1)
{
case 'n':
case 'N':
printf("·请输入需要计算的算式:\n");
scanf("%f%c%f",&num1,&symbol,&num2);
getchar();
printf("·输入的第一个数为:%f\n",num1);
printf("·要进行的运算为:%c\n",symbol);
printf("·输入的第二个数为:%f\n",num2);
function1(num1,symbol,num2);
break;
case 'y':
case 'Y':
printf("·请输入需要计算的三角函数名与度数(中间以空格隔开):\n");
scanf("%s%f",name,&num1);
getchar();
printf("·输入的角度为:%f\n",num1);
printf("·输入的三角函数为:%s\n",name);
function2(num1,name);
break;
default:
printf("·输入错误,请重新输入!\n");
printf("\n");
goto loop;
}
printf("continue?(y/n)\n");
scanf("%c",&choise2);
getchar();
printf("\n");
}while(choise2=='y'||choise2=='Y');
printf("谢谢使用!\n");
system("pause");
break;
case 2:
system("pause");
break;
default:
printf("输入错误,请重新输入!\n");
printf("\n");
goto x;
}
}
void function1(float x,char y,float z)
{
float m;
int n;
switch(y)
{
case'+':
m=x+z;
printf("结果为:%f+%f=%f\n",x,z,m);
printf("\n\n");
break;
case'-':
m=x-z;
printf("%结果为:%f-%f=%f\n",x,z,m);
printf("\n\n");
break;
case'*':
m=x*z;
printf("结果为:%f*%f=%f\n",x,z,m);
printf("\n\n");
break;
case'/':
if(fabs(z)<M||fabs(z)==M)
{
printf("除法中分母不能为0!\n");
printf("\n\n");
}
else
{
m=x/z;
printf("结果为:%f/%f=%f\n",x,z,m);
printf("\n\n");
}
break;
case'%':
if(z==0)
{
printf("不能对0进行求余操作!\n");
printf("\n\n");
break;
}
else
{
n=(int)x%(int)z;
printf("结果为:%d\n",n);
printf("\n\n");
break;
}
default:
printf("未知运算符!");
printf("\n\n");
}
}
void function2(float x,char name[3])
{
float m,n,i,j;
m=(x*pi)/180;
printf("此度数的所有三角函数结果为:\n");
n=sin(m);
printf("sin %.2f=%.2f\n",x,n);
i=cos(m);
printf("cos %.2f=%.2f\n",x,i);
if(i!=0)
{
j=n/i;
printf("tan %.2f=%.2f\n",x,j);
printf("\n\n");
}
else
{
printf("tan的值不存在\n");
printf("\n\n");
}
}
void choose()
{
printf("\t\t\t********** 欢迎使用计算器 ***********\n");
printf("\t\t\t*************************************\n");
printf("\t\t\t* 1.进行运算 *\n");
printf("\t\t\t* 2.退 出 *\n");
printf("\t\t\t*************************************\n");
printf("\t\t\t*************************************\n");}
第 16 页 共16页
展开阅读全文