简易计算器 (1)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录
第一章:设计目的1
1.1课程设计目的.................................................................................. 错误!未定义书签。

1.2简易计算器设计的意义 (1)
1.3系统的基本要求 (1)
1.4功能设计 (3)
第二章:功能描述 (3)
2.1功能模块框图 (3)
2.2相关功能介绍.................................................................................. 错误!未定义书签。

2.1系统模块机构框图 (4)
第三章:总体设计 (5)
3.1系统流程图 (3)
3.2模块描述 (5)
3.3函数声明 (5)
第四章:程序实现 (5)
4.1界面设计 (10)
4.2计算界面 (11)
4.3退出界面 (12)
第五章:课程设计的结果展示 (13)
第六章:参考文献................................................................................................. - 15 -第七章:课程设计总结......................................................................................... - 16 -
第一章课程设计目的
1.通过一个学期的学习,我认为要学好C语言程序这门课程,不仅要认真阅读课本知识,更重要的是要通过上机实践才能增强和巩固我的知识。

特别是作为本科生,更要注重实践这一环节,只有这样我们才能成为合格的计算机人材。

通过这次课程设计,进一步巩固所学的语句,如语句嵌套等;加深对循环,分支等结构的运用;最后还可以熟悉四则运算﹑三角函数等经典算法。

2.通过此次课程设计扩展自己的知识面,课本上的东西是远远不够的,可以通过去图书馆查资料,上网找资料等手段学到一些新知识,比如画图函数,颜色填充函等。

3.通过课程设计,加深对结构化程序设计思想的理解,能进行一个系统功能需求分析并设计合理的模化结构。

提高程序开发能力。

1.1简易计算器设计的意义
本课题的内容是设计一个简单的计算器。

通过对程序的设计可以对C程序中的函数,循环,数组,调用,文件……内容有更深入的理解和运用。

设计程序的过程中,通过已有知识的运用和思考,能够做到对知识的整体理解。

通过解决设计中遇到的问题,能够提高设计程序的熟练度,并对知识有巩固作用。

另外,所选课题与自己的兴趣有关,编程之中不仅能提高题目涉及到的内容的兴趣,更主要的在于能对C语言更加感兴趣。

1.2系统的基本要求
1)设计一个简单的计算器;
2)程序基本功能要求完整,并有简单的验证;
3)用C实现系统;
4)利用结构体、数组等实现数据结构设计;
5)系统的各个功能模块要求用函数的形式实现;6)本系统可以进行复杂的混合运算。

第二章功能描述
简易计算器能够进行加减乘除运算
加法:输入一个数,按“+”,输入被加数,按“=”,输出结果。

减法:输入一个数,按“—”,输入被减数,按“=”,输出结果。

乘法:输入一个数,按“*”,输入另外个数,按“=”,输出结果。

除法:输入一个数,按“/”,输入另外个数,按“=”,输出结果。

2.1功能设计
1)在程序中加入足够的操作提醒环节,使得使用者能够清楚的掌握操作流程和界面。

2)程序中完成+、-、*、/的混合运算,使用者可以根据个人的需要在提示后输入相应的代码,然后进行相应的运算,最后在运算结果中查找相应的结果即可,如果需要继续运算,只要在上一次的运算结束后按照提示输入相应代码即可选择是继续进行运算还是退出程序。

2.2功能模块框图
图2.2 功能模块框图
2.3系统模块流程图
第三章模块详细设计
3.1主要函数
(1)主函数main()
功能:计算器功能选择界面,选择循环调用mm()自定义函数;
输入:用户输入运算类型、退出程序的相应数字代码(1 四则运算,2 混合运算3退出程序)
处理: 根据用户输入的数字代码,跳转到相关功能函数
输出:显示相应界面或退出程序
(2)mm()自定义函数
功能:进行混合运算;
(3)nn()自定义函数
功能:退出界面,显示“THANKS!”
(4) kk()自定义函数
功能:在开始界面显示“WELCOME”
3.2模块功能
数学计算模块中,根据用户选择的运算类型和运算符号,自动调用相应的函数,运行相关程序,进行计算,并显示结果。

3.3模块接口设计:
1.四则混合运算:void SiZeHunHeYunSuan() 首先判断优先级,其过程为int compare(char symbol) { int jud = 0; switch (symbol)
{case '(':jud = 1:break; case '*': case '/': jud = sym[tops] == '/'?-1:1;break;case ')': jud=0;break;case '+': case '-': jud = (sym[tops] != '*' && sym[tops] != '/')?1:-1;break; default: break;} return jud;}
四则混合运算包括的子函数的函数原型:
void sizeyunsuan(double num1, char symbol, double num2) 把表达式转化成波兰式C语言课程设计﹒简易计算器
3.4源代码
#include <cstdio>
#include <ctype.h>
struct eoe {
FILE* fp;
char token;
eoe() { fp = stdin; }
eoe(FILE* p) { fp = p; }
inline void getToken();
inline int exp();
inline int term();
inline int factor();
inline int result();
};
void eoe::getToken() {
while (1) {
token = fgetc(fp);
if (token == EOF || token == ';' || token == '=') { token = 0; break;
} else if (!isspace(token)) break;
}
}
int eoe::exp() {
int t = term();
while (1) {
if (token == '+') getToken(), t += term();
else if (token == '-') getToken(), t -= term();
else break;
} return t;
}
int eoe::term() {
int t = factor();
while (1) {
if (token == '*') getToken(), t *= term();
else if (token == '/') getToken(), t /= term();
else break;
} return t;
}
int eoe::factor() {
int t;
if (token == '(') getToken(), t = exp(), getToken();
else if (isdigit(token)) ungetc(token, fp), fscanf(fp, "%d", & t), getToken();
return t;
}
int eoe::result() {
int t; getToken(); t = exp(); return t;
}
int main() {
eoe e;
printf("%d\n", e.result());
return 0;
}
第四章:程序实现
#include <stdio.h>
#include <conio.h>
void JF(int a,int c);//声明加法运算
void CF(int a,int c);//声明乘法运算
void chuFa(int a,int c);//声明除法运算
void jianFa(int a,int c);//声明减法运算
void jianFa(int a,int c)//减法
{
printf("%d-%d=%d\n",a,c,a-c);
}
void chuFa(int a,int c)//除法
{
printf("%d/%d=%lf\n",a,c,a/(double)c);//在此我用了强制类型转换,确保输出结果不是两者取整。

}
void CF(int a,int c)//乘法
{
printf("%d*%d=%d\n",a,c,a*c);
}
void JF(int a,int c)//加法
{
printf("%d+%d=%d\n",a,c,a+c);
}
void main(void)
{
int a,c;
char b;
a: printf("请输入计算式,(注意:在键盘中无除法符号,所以采用“/”代替)");
scanf("%d%c%d",&a,&b,&c);
switch (b)
{
case '+' : JF(a,c);
break;
case '-' : jianFa(a,c);
break;
case '*' : CF(a,c);
break;
case '/' : chuFa(a,c);
break;
default : printf("输入计算符不存在,请重新输入") ;
}
goto a;
图2.4 系统主界面
进入主界面之后,主屏上显示“WELCOME”表示您已进入本系统,然后系统屏幕上会提示“xuan ze shifou ji suan”意思为“选择是否计算”,1,“yes”代表进入计算界面,0,“no”代表退出程序,用户可根据自己
的意思来输入相应代码进行下一步。

图2.5 计算界面
在计算界面中,主屏显示“qing shu ru ji suan gong shi”代表“请输入计算公式”之后用户可以进行任何四则运算,例如:在主屏中输入
“86*67+32/4+5=”然后通过enter键得出计算结果
图2.6 退出界面
退出程序后用户将看到“THANKS!”字样,代表对您本次使用表示感谢。

之后主屏左下方提示“shu ru ren yi shu zi tui chu”代表您将输入任意一个数
字退出程序
第五章:课程设计的结果展示
图5.1.错误1 函数之后多打了一个逗号,导致系统报错
图5.2.错误2 由于逗号的影响,出现了语法声明错误
莫名的进入死循环,后经验证,只因输错了一个字
第六章:参考文献
[1]科钦.C语言程序设计.北京:电子工业出版社,1987:56-58
[2]徐君毅.C语言程序设计基础.上海:复旦大学出版社,1992:87-98
[3]李成付.C语言程序设计基础.北京:科学出版社,1992:42-67
[4]郝玉洁.C语言程序设计.北京:机械工业出版社,2000:63-88
[5]钱启平.C语言程序设计基础.北京:中国铁道出版社,2000:91-99
[6]李大友.C语言程序设计基础.北京:清华大学出版社,1999:58-98
[7]黄迪明.C语言程序设计.北京:电子科技大学出版社,1998:78-98
[8]姜仲秋.C语言程序设计基础.南京:南京大学出版社,1998:16-100
[9]李国昌.C语言程序设计基础.北京:科学出版社,1998:78-120
[10]谭浩强.C语言程序设计.北京:清华大学出版社,2000:74-129
第七章:课程设计总结
本报告对简单计算器系统的分析、设计、实现的完整过程进行了介绍。

经过了五天的课程设计,在设计中我们遇到了很多编程问题,最后我们齐心合力的攻克一个个难关,我们组做得是计算器的设计,内容包括很多。

运用的函数也很复杂。

测试阶段中发现了几处错误导致程序不能编译,去图书馆查找相关的资料, 又与同学一起讨论。

通过耐心的分析源代码终于编好了一个完整无误的程序。

在这次的c语言程序设计实习中遇到了现实编程中必然见到的问题通过这些问题解决积累了编程的实践经验。

在实际的编程操作中发现自己对c语言知识的不足,加深了对c语言的理解。

在学习之余体验到收获的感觉. 善于总结,也是学习能力的一种体现,每次完成一个编程任务,完成一段代码,都应当有目的的跟踪该程序的应用状况,随时总结,找到自己的不足,这样所编写的程序才能逐步提高
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节
是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新月异,当今计算机应用在生活中可以说得是无处不在。

因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。

自从拿到题目到完成整个编程,从理论到实践,在整整五天的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到很多在书本上所没有学到过的知识。

通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合才能完成。

通过这次课程设计,我拓宽了知识面,锻炼了能力,综合素质得到较大提高。

安排课程设计的基本目的,分析和解决问题的实际工作能力,以便培养成为能够主动适应社会主义现代化建设需要的高素质的复合型人才。

作为整个学习体系的有机组成部分,课程设计虽然安排在一周进行,但并不具有绝对独立的意义。

它的一个重要功能,在于运用学习成果,检验学习成果。

运用学习成果,把课堂上
学到的系统化的理论知识,尝试性地应用于实际设计工作,并从理论的高度对设计工作的现代化提出一些有针对性的建议和设想。

检验学习成果,看一看课堂学习与实际工作到底有多大距离,并通过综合分析,找出学习中存在的不足,以便为完善学习计划,改变学习内容与方法提供实践依据。

而这种实际能力的培养单靠课堂教学是远远不够的,必须从课堂走向实践。

这也是一次预演。

通过课程设计,让我们找出自身状况与实际需要的差距,并在以后的学习期间及时补充相关知识,为求职与正式工作做好充分的知识、能力准备,从而缩短从校园走向社会的心理转型期。

课程设计促进了我系人才培养计划的完善和课程设置的调整。

近年来,我系为适应学生的实践需要陆续增设与调整了一系列课程,受到同学的欢迎,其中这次的设计很受同学们的喜欢。

课程设计达到了专业学习的预期目的。

在一个星期的课程设计之后,我们普遍感到不仅实际动手能力有所提高,更重要的是通过对软件开发流程的了解,进一步激发了我们对专业知识的兴趣,并能够结合实际存在的问题在专业领域内进行更深入的学习。

兰州交通大学博文学院C语言课程设计
设计题目:简易计算器
专业:自动化
班级:15 自动化
学号:20150373
姓名:吕雨楠
指导教师:史红霞
二零一五年六月二十八日
兰州交通大学博文学院C语言课程设计
设计题目:简易计算器
专业:自动化
班级:15 自动化
学号:20150377
姓名:柴晓慧
指导教师:史红霞
二零一六年六月二十三日
兰州交通大学博文学院C语言课程设计
设计题目:简易计算器
专业:自动化
班级:15 自动化
学号:20150374
姓名:田湫川
指导教师:史红霞
二零一六年六月二十三日
兰州交通大学博文学院C语言课程设计
设计题目:简易计算器
专业:自动化
班级:15 自动化
学号:20150376
姓名:寇德鑫
指导教师:史红霞
二零一六年六月二十三日
电信工程系
电信工程系
电信工程系
电信工程系。

相关文档
最新文档