C语言简易计算器课程设计.docx
《C语言简易计算器课程设计.docx》由会员分享,可在线阅读,更多相关《C语言简易计算器课程设计.docx(13页珍藏版)》请在冰豆网上搜索。
C语言简易计算器课程设计
C语言课程设计报告书
题目:
简易计算器
院系:
班级:
学号:
姓名:
摘要
该软件为用户提供在windows系统上的简易计算器,能进行简单的加、减、乘、除四则运算与混合运算。
目的是为了巩固和加深C语言课程的基本知识的理解和掌握,利用C语言进行基本的软件设计,掌握C语言的编程和程序调试的基本技能,掌握书写程序设计说明文档的能力,提高运用C语言解决实际问题的能力。
关键词:
C;简易计算器;程序;基本算法;混合运算
SUMMARY
thesoftwareprovidesasimplecalculatorinWindowssystemforusers,canbeasimpleadd,subtract,multiply,divide.ThepurposeistoconsolidateanddeepenthebasicknowledgeofClanguagecoursestounderstandandmaster,TheuseofClanguageforsoftwaredesignbasic,TomasterthebasicskillsofClanguageprogrammingandprogramdebugging,Masterthewritingprogramdesigndocumentationability,improvetheabilitytouseClanguagetosolvepracticalproblems.
目录
1、概述1
1.1.简单计算器设计的意义1
1.2.系统的基本要求1
1.3.功能设计1
2、总体设计2
2.1系统模块机构框图2
2.2.功能模块框图2
2.3.系统流程图3
2.4.界面设计4
3、详细设计5
3.1.模块描述5
3.2.系统头文件5
3.3.函数声明5
4、调试分析8
5、总结8
6、参考文献10
7、致谢11
1、概述
1.1.简单计算器设计的意义
本课题的内容是设计一个简单的计算器。
通过对程序的设计可以对C程序中的函数,循环,数组,调用,文件……内容有更深入的理解和运用。
设计程序的过程中,通过已有知识的运用和思考,能够做到对知识的整体理解。
通过解决设计中遇到的问题,能够提高设计程序的熟练度,并对知识有巩固作用。
另外,所选课题与自己的兴趣有关,编程之中不仅能提高题目涉及到的内容的兴趣,更主要的在于能对C语言更加感兴趣。
1.2.系统的基本要求
要求能实现比较复杂的混合运算。
1.3.功能设计
1)在程序中加入足够的操作提醒环节,使得使用者能够清楚的掌握操作流程和界面。
2)程序中完成+、-、*、/的混合运算,使用者可以根据个人的需要在提示后输入相应的代码,然后进行相应的运算,最后在运算结果中查找相应的结果即可,如果需要继续运算,只要在上一次的运算结束后按照提示输入相应代码即可选择是继续进行运算还是退出程序。
2、总体设计
2.1系统模块机构框图
图2.1
2.2.功能模块框图
图2.2
2.3.系统流程图
图2.3
2.4.界面设计
图2.4系统主界面
2.5.计算界面
图2.5计算界面
3、详细设计
基于系统需求分析与系统总体设计的结论,本系统采用TC2.0实现各模块的功能。
下面按照模块的划分来分别阐述系统的详细设计和实现过程。
3.1.模块描述
(1)显示界面模块为系统提供类似于菜单的功能,让用户输入要操作的运算类型的数字代码,并进入相应的功能执行程序,显示相应界面。
(2)数学计算模块中,根据用户选择的运算类型和运算符号,自动调用相应的函数,运行相关程序,进行计算,并显示结果。
(3)退出程序模块。
根据用户的需要,选择是否退出程序。
3.2.系统头文件
#include“stdio.h”
3.3.函数声明
(1)主函数main()
功能:
计算器功能选择界面
输入:
用户输入运算类型、退出程序的相应数字代码(1四则运算,2混合运算3退出程序)
处理:
根据用户输入的数字代码,跳转到相关功能函数
输出:
显示相应界面或退出程序
(2)程序清单
#include"stdio.h"
mm()
{
inti,t,e,k,l;
floatm,n;
floata[999];
intf[999];
intc[999];
charb[999];
clrscr();
m=0;
n=0;
c[0]=0;
f[0]=0;
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("----------qingshurujisuangongshi------------\n");
printf("\n");
printf("\n");
printf("");
for(i=0;i<=999;i++)
{
c[i]=0;
f[i]=0;
scanf("%f%c",&a[i],&b[i]);
if(b[i]=='=')
{
t=i;
break;
}
}
for(i=0;i<=t;i++)
{
if(b[i]=='/'&&b[i+1]=='/'||b[i]=='*'&&b[i+1]=='*'||b[i]=='/'&&b[i+1]=='*'||b[i]=='*'&&b[i+1]=='/')
{
for(k=0;k<=t;k++)
{
if(b[i+k]=='-'||b[i+k]=='+'||b[i+k]=='=')
l=k;
}
for(k=0;k<=l;k++)
{
if(b[i+k]=='*')
{
a[i+k+1]=a[i+k]*a[i+k+1];
a[i+k]=0;
}
if(b[i+k]=='/')
{
a[i+k+1]=a[i+k]/a[i+k+1];
a[i+k]=0;
}
}
}
for(i=0;i<=t;i++)
{
if(b[i]=='*'&&b[i+1]=='*'||b[i]=='*'&&b[i+1]=='/'||b[i]=='/'&&b[i+1]=='/'||b[i]=='/'&&b[i+1]=='*')
{for(k=0;k<=t;k++)
if(b[k+i]=='+'||b[k+i]=='-'||b[k+i]=="=")
{
l=k;
break;
}
i=l+i;
}
if(b[i]=='*'&&b[i+1]!
='*'&&b[i+1]!
='/')
{
a[i]=a[i]*a[i+1];
a[i+1]=0;
}
if(b[i]=='/'&&b[i+1]!
='/'&&b[i+1]!
='*')
{
a[i]=a[i]/a[i+1];
a[i+1]=0;
}
}
}
for(i=0;i<=t;i++)
{
m=m+a[i];
if(b[i]=='-')
m=m-a[i+1]-a[i+1];
}
printf("-----------jisuanjieguo------\n");
printf("|%f|\n",m);
printf("--------------------------------\n");
printf("\n");
printf("\n");
}
main()
{
inta,i;
clrscr();
for(i=0;i<=999;i++)
{
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("xuanzeshifoujixu(1......yes,0.......no)");
scanf("%d",&a);
if(a==1)
mm();
else
break;
}
}_
4、调试分析
图4.1系统运算
5、总结
本报告对简单计算器系统的分析、设计、实现的完整过程进行了介绍。
经过了五天的课程设计,在设计中我们遇到了很多编程问题,最后我们齐心合力的攻克一个个难关,我们组做得是计算器的设计,内容包括很多。
运用的函数也很复杂。
测试阶段中发现了几处错误导致程序不能编译,去图书馆查找相关的资料, 又同学一起讨论。
通过耐心的分析源代码终于编好了一个完整无误的程序。
在这次的c语言程序设计实习中遇到了现实编程中必然见到的问题通过这些问题解决积累了编程的实践经验。
在实际的编程操作中发现自己c语言知识的不足,加深了对c语言的理解。
在学习之余体验到收获的感觉. 善于总结,也是学习能力的一种体现,每次完成一个编程任务,完成一段代码,都应当有目的的跟踪该程序的应用状况,随时总结,找到自己的不足,这样所编写的程序才能逐步提高
.课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节
是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新月异,当今计算机应用在生活中可以说得是无处不在。
因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。
自从拿到题目到完成整个编程,从理论到实践,在整整五天的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到很多在书本上所没有学到过的知识。
通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合才能完成。
通过这次课程设计,我拓宽了知识面,锻炼了能力,综合素质得到较大提高。
安排课程设计的基本目的,分析和解决问题的实际工作能力,以便培养成为能够主动适应社会主义现代化建设需要的高素质的复合型人才。
作为整个学习体系的有机组成部分,课程设计虽然安排在一周进行,但并不具有绝对独立的意义。
它的一个重要功能,在于运用学习成果,检验学习成果。
运用学习成果,把课堂上学到的系统化的理论知识,尝试性地应用于实际设计工作,并从理论的高度对设计工作的现代化提出一些有针对性的建议和设想。
检验学习成果,看一看课堂学习与实际工作到底有多大距离,并通过综合分析,找出学习中存在的不足,以便为完善学习计划,改变学习内容与方法提供实践依据。
而这种实际能力的培养单靠课堂教学是远远不够的,必须从课堂走向实践。
这也是一次预演。
通过课程设计,让我们找出自身状况与实际需要的差距,并在以后的学习期间及时补充相关知识,为求职与正式工作做好充分的知识、能力准备,从而缩短从校园走向社会的心理转型期。
课程设计促进了我系人才培养计划的完善和课程设置的调整。
近年来,我系为适应学生的实践需要陆续增设与调整了一系列课程,受到同学的欢迎,其中这次的设计很受同学们的喜欢。
课程设计达到了专业学习的预期目的。
在一个星期的课程设计之后,我们普遍感到不仅实际动手能力有所提高,更重要的是通过对软件开发流程的了解,进一步激发了我们对专业知识的兴趣,并能够结合实际存在的问题在专业领域内进行更深入的学习。
6、参考文献
[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
7、致谢
在这次课程设计的撰写过程中,我得到了许多人的帮助。
首先我要感谢我的老师在课程设计上给予我的指导、提供给我的支持和帮助,这是我能顺利完成这次报告的主要原因,更重要的是老师帮我解决了许多技术上的难题,让我能把系统做得更加完善。
在此期间,我不仅学到了许多新的知识,而且也开阔了视野,提高了自己的设计能力。
其次,我要感谢帮助过我的同学,他们也为我解决了不少我不太明白的设计上的难题。
同时也感谢学院为我提供良好的做毕业设计的环境。
最后再一次感谢所有在设计中曾经帮助过我的良师益友和同学