编号:
课程设计说明书
题 目: 简单计算器
院 (系): 信息与通信学院
专 业: 信息对抗
学生姓名:
学 号:
指导教师:
20##年 12 月 4 日
1. 题目与要求…………………………………………………1
1.1 课程设计目的………………………………………………………………1
1.2本系统涉及的知识点……………………………………………………1
1.3功能要求……………………………………………………………………1
2. 课程设计的基本过程…………………………………………1
2.1 功能需求……………………………………………………………………1
3. 总体设计……………………………………………………1
3.1 系统模块机构框图………………………………………………………1
3.2 功能模块框图……………………………………………………………2
3.3 系统流程图……………………………………………………………3
3.4 界面设计………………………………………………………………4
4.详细设计……………………………………………………5
4.1 模块描述………………………………………………………………5
4.2 系统头文件……………………………………………………………5
4.3 函数声明………………………………………………………………5
5.程序测试……………………………………………………12
6.设计总结…………………………………………………12
6.1 谢辞………………………………………………………………12
6.2 参考文献…………………………………………………………12
1. 题目与要求
1.1 课程设计目的
(1)巩固和加深C语言课程的基本知识的理解和掌握
(2)掌握C语言编程和程序调试的基本技能
(3)利用C语言进行基本的软件设计
(4)掌握书写程序设计说明文档的能力
(5)提高运用C语言解决实际问题的能力
1.2 本系统涉及的知识点
Goto loop循环 switch选择语句嵌套return退出语句格式化输入和输出If判断语句 函数的调用
2. 课程设计的基本过程
课程设计的基本过程包括5个步骤,即功能需求,总体设计,详细设计,程序测试,结论。每个步骤都有其特定的任务。
2.1 功能需求
功能概述:该软件为用户提供一个在windows系统上运行的简单计算器,能进行简单的加、减、乘、除四则运算和一些常用特殊运算,包括余弦运算、正弦运算、正切运算、绝对值、平方根运算、以e为底的指数运算、以10为底的对数运算。
3. 总体设计
3.1 系统模块机构框图
3.2功能模块框图
3.3系统流程图
3.4界面设计
系统主界面
四则运算界面
特殊运算界面
4. 详细设计
基于系统需求分析与系统总体设计的结论,本系统采用Visual C++实现各模块的功能。下面按照模块的划分来分别阐述系统的详细设计和实现过程。
4.1 模块描述
(1)显示界面模块为系统提供类似于菜单的功能,让用户输入要操作的运算类型的数字代码,并进入相应的功能执行程序,显示相应界面。
(2)数学计算模块中,根据用户选择的运算类型和运算符号,自动调用相应的函数,运行相关程序,进行计算,并显示结果。
(3)退出程序模块。根据用户的需要,选择是否退出程序。
4.2系统头文件
#include /* I/Q函数 */
#include /* 数学函数的定义 */
#include /*屏幕操作函数*/
#include /*库函数*/
int size(); /*函数的定义*/
double teshu();
4.3函数声明
(1)主函数main()
功能:计算器功能选择界面
输入:用户输入运算类型、退出程序的相应数字代码(1 四则运算,2 特殊运算,3 退出程序)
处理: 根据用户输入的数字代码,跳转到相关功能函数
输出:显示相应界面或退出程序
程序清单(a)
void main()
{
char h;
int a;
double b;
do
{
printf(" 简单计算器 \n");
printf("******************************\n");
printf(" 请输入要进行的运算 \n");
printf("------------------------------\n");
printf(" 1 四则运算 \n");
printf(" 2 特殊运算 \n");
printf(" 3 退出程序 \n");
h=getche();
switch(h) /*判断用户想要进行的操作*/
{
case'1': /*输入1则调用四则运算函数*/
a=size();
printf("结果是: %d",a);
break;
case'2': /*输入2则调用特殊运算函数*/
b=teshu();
printf("结果是:%f",b);
break;
case'3': /*输入3则退出程序*/
break;
}
}
while(h!='3');
}
(2)自定义函数size()
功能:进行简单的加、减、乘、除四则运算
输入:用户输入要计算的数字和运算符号(+、-、* 、/)
处理:根据用户输入的运算符号,跳转到相关运算函数,并调用
输出:运算结果和是否需要继续运算(y/n)
程序清单(b)
int size() /*定义四则(size)运算函数*/
{
int n,m;
int c;
char l;
int d;
do
{
printf("\n请输入第一个要计算的数并按Enter结束:");
scanf("%d",&m);
printf("\n请输入第二个要计算的数并按Enter结束:");
scanf("%d",&n);
printf("\n请选择运算符号[\t+\t-\t*\t/\t]:");
l=getche(); /*得到运算符号*/
switch(l)
{
case'+': /*加法运算*/
c=m+n;
printf("\n\n\t结果是 %d\n",c);
printf("\n");
break;
case'-': /*减法运算*/
c=m-n;
printf("\n\n\t结果是 %d\n",c);
printf("\n");
break;
case'*': /*乘法运算*/
c=m*n;
printf("\n\n\t结果是 %d\n",c);
printf("\n");
break;
case'/': /*除法运算*/
c=m/n;
printf("\n\n\t结果是 %d\n",c);
printf("\n");
break;
}
for(d=0;d<=999999;d++)
{
printf("\t 是否继续?(y/n):"); /*是否继续运算*/
l=getche(); /*得到输入的值*/
printf("\n");
if(l=='y') /*如果得到的是y,则重复运算步骤,达到无限运算的作用*/
{
printf("\n请输入下一个要计算的数并按Enter结束:");
scanf("%d",&n);
printf("\n请选择运算符号[\t+\t-\t*\t/\t]:");
l=getche();
switch(l)
{
case'+': /*加法运算*/
c=c+n;
printf("\n\n\t结果是 %d\n",c);
printf("\n");
break;
case'-': /*减法运算*/
c=c-n;
printf("\n\n\t结果是 %d\n",c);
printf("\n");
break;
case'*': /*乘法运算*/
c=c*n;
printf("\n\n\t结果是 %d\n",c);
printf("\n");
break;
case'/': /*除法运算*/
c=c/n;
printf("\n\n\t结果是 %d\n",c);
printf("\n");
break;
}
}
else
{
exit(l); /*如果得到的是n,则退出程序*/
}
}
}
while(l!='n');
return(c); /*返回值*/
}
(3)自定义函数teshu()
功能:进行一些特殊的运算(余弦运算、正弦运算、正切运算、绝对值、平方根运算、以e为底的指数运算、以10为底的对数运算)
输入:用户输入要计算的数字和特殊运算方式的数字代码(1 余弦,2 正弦,3 正切,4 绝对值,5 平方根,6 以e为底的指数,7 以10为底的对数)
处理:根据用户输入的数字代码,跳转到相关运算函数程序
输出:运算结果和是否需要继续运算(y/n)
程序清单(c)
double teshu() /*定义(teshu)特殊运算函数*/
{
double y;
int n,m;
char p;
printf("---------请选择特殊运算类型---------");
printf(" 1 余弦 2 正弦 3 正切 4 绝对值 \n");
printf(" 5平方根 6 以e为底的指数 7 以10为底的对数 \n");
printf("\n请输入您要计算的数并按Enter结束: ");
scanf("%d",&m); /*得到要进行运算的数*/
printf("\n请选择您要做的运算类型: ");
n=getche(); /*得到要做的运算*/
do
{
switch(n)
{
case'1':
y=cos(m); /*余弦函数*/
printf("\n\n\t结果是: %f\n",y);
printf("\n");
break;
case'2':
y=sin(m); /*正弦函数*/
printf("\n\n\t结果是: %f\n",y);
printf("\n");
break;
case'3':
y=tan(m); /*正切函数*/
printf("\n\n\t结果是: %f\n",y);
printf("\n");
break;
case'4':
y=fabs(m); /*绝对值函数*/
printf("\n\n\t结果是: %f\n",y);
printf("\n");
break;
case'5':
y=sqrt(m); /*平方根函数*/
printf("\n\n\t结果是: %f\n",y);
printf("\n");
break;
case'6':
y=exp(m); /*底数为e的指数函数*/
printf("\n\n\t结果是: %f\n",y);
printf("\n");
break;
case'7':
y=log10(m); /*底数为10的对数函数*/
printf("\n\n\t结果是: %f\n",y);
printf("\n");
break;
}
printf("\n是否继续?y/n");
p=getche();
if(p=='n')
exit(1);
return(y); /*返回值y*/
}
while(p=='y');
}
5. 程序测试
系统主界面
其他功能截图等……
6. 设计总结
6.1谢辞
程序调试后无错误、警告,运行正常。
通过这次c语言课程设计,我觉得自己知识还很欠缺,每种函数的功能还没有熟练掌握,特别是循环结构函数的应用还很欠缺,应用的时候感到力不从心,经多次调试后才运行正常,初步尝试编写程序时出现了好多错误,发现自己当初学函数和结构没有深入的去研究,做这次课程设计花了一周多的时间,多次翻阅课本和查资料,真的发现学习c语言在日常生活中,将来的工作中非常重要。这次c语言课程设计加强了我对c语言的认识,使我明白程序软件开发的不易。由于这是第一次进行设计,写报告,难免会有一些细节注意不到或出现错误。请老师谅解。
6.2参考文献
主要参考《C语言程序设计》课本和上网查询具体函数的运用。