《c语言程序设计-用c语言设计一个简单计算器课程设计》由会员分享,可在线阅读,更多相关《c语言程序设计-用c语言设计一个简单计算器课程设计(19页珍藏版)》请在金锄头文库上搜索。
1、word 可自由复制编辑 存档资料 成绩: 华东交通大学理工学院 课 程 设 计 报 告 书 所属课程名称 C 语言程序设计课程设计 题 目 用 C 语言设计一个简单计算器 分 院 电信分院 专业班级 学 号 学生姓名 指导教师 20 年 月 日 word 可自由复制编辑 目 录 1 需求分析 2 概要设计 3 详细设计 4 调试分析 5 设计心得 6 源程序 7 参考文献 word 可自由复制编辑 1 需求分析 1、编写目的: 通过对用户需求进行分析,写出需求分析文档作为项目设计的基本准则要求,以及作为系统分析员进行系统分析和测试人员进行测试时的计算手册 2、需求概述: 设计一个简单计算器,
2、使之能提供以下功能: (1)创建信息链表并以磁盘文件保存; (2)读取磁盘文件并显示输出计算结果; (3)按加、减、乘、除、开方和乘方计算; (4)可以退出计算系统。 3、需求说明: 要求:在功能上功能尽量模拟 windows 操作系统中的计算器,系统界面不做强制要求。 计算器主要包括加、减、乘、除、乘方、开方计算、退出系统等; 录入的计算信息要求用文件形式保存,并可以对其进行浏览、查询等基本操作; 计算信息的显式要求有一定的规范格式; 对计算信息应能够分别按加、减、乘、除、乘方及按开方两种方式进行; 对实数的计算应逐个地进行,一个输入信息不应影响其他的工作; 所设计的系统应以菜单方式工作,应
3、为用户提供清晰的使用提示,依据用户的选择来进行各种处理,并要求在此过程中能够尽可能的兼容用户使用过程中的异常情况。 word 可自由复制编辑 2 概要设计 1. 该系统可以按功能进行模块划分,其模块图如下: 其中: 信息输入模块完成计算信息的输入功能,输入信息包括计算所需的数据等; 信息运行模块完成已录入计算信息的运行计算; 信息查询模块完成计算结果的查询; 计算器系统 数据输入 数据运行 数据结果 word 可自由复制编辑 2.数据结构 本系统中主要的数据结构就是计算的信息,包含职加、减、乘、除、乘方和开方等,在处理过程中各项可以分开处理。 3.程序流程 系统的执行应从信息输入的选择开始,
4、依据用户的选择来进行后续的处理,直到用户选择退出系统为止,其间应对用户的选择做出判断及异常处理。系统的流程图如下: 3 详细设计 一、设计 程序分解为多模块,其中,计算模块通过对数据的导入,完成加、减、乘、除的相关运算。算法功能由标准输入(即键盘输入)来实现。表示开方,表示乘方 q 表示退出; while(判断条件) if(满足 ai=0&ai=0&aj=9) 执行语句 2) ; for(条件) 执行循环语句; while(条件 1/|条件|条件 3 ) 赋值语句; 赋值判断; 判断条件 if(满足条件) 执行循环判断 循环语句; 二、数据结构: double jisuan(char a) i
5、nt i=1,j,k,m,cnt=0,t1=0,t2=0,t3=0; char nibo50,zhan250; double x,n,l,z=0,zhan320; 4 调试分析 开始菜单: word 可自由复制编辑 加法计算 减法计算 word 可自由复制编辑 乘法计算 word 可自由复制编辑 除法计算 乘方计算 word 可自由复制编辑 开方计算 word 可自由复制编辑 退出系统 5 设计心得 在为期不到两周的课程设计中,我体会颇多,学到很多东西。利用设计这次简单计算器的机会,我加强了对 C+的认识,复习了自己以前的知识,自己的逻辑思考能力也提高不少。从而对 Microsoft Visu
6、al C+ 6.0又有了更深入的认识!在这次课程设计中,我还懂得了程序开发的一些比较重要的步骤, 比如需求分析、 总体设计、 数据库设计(含概念设计、逻辑设计、物理设计)、程序模块设计(含功能需求、用户界面设计、程序代码设计与分析、运行结果)、系统使用说明等。总之,通过这次课程设计,我收获颇丰,相信会为自己以后的学习和工作带来很大的好处。最重要的还是激发了我编程的兴趣和热情, 让我从一个只懂理论变成了能做一些小型程序, 让我对编程更加热爱了。整体地评价这次课程设计,我认为收获很大,正如上面所说的那样,通过课程设计,既复习了以前的旧知识,又学到了一些新的知识;设计增强了我们用所学知识去解决具体问
7、题的能力,进一步培养了我们独立思考问题和解决问题的能力。特别是学会了在 Visual C+ 集成开发环境中如何调试程序的方法。 这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在老师的辛勤指word 可自由复制编辑 导下,终于游逆而解。同时,在老师的身上我学得到很多实用的知识,在次我表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢! 6 源程序 #include #include #include double jisuan(char a) int i=1,j,k,m,cnt=0,t1=0,t2=0,t3=0; char nibo50,zhan250; dou
8、ble x,n,l,z=0,zhan320; typedef struct double d1; int d2; dd; typedef struct dd data50; int top; zhan1; zhan1 shu; shu.top=0; while(ai!=0) if(ai=0&ai=0&aj=9) j+; j-; for(k=i;k=0&aj=9) j+; j-; for(k=i;k0&zhan2t2!=() nibo+t1=zhan2t2; nibot1+1=0; t2-; zhan2+t2=ai; i+; else if(ai=-) if(ai-1=$) a0=0; i=0;
9、 else if(ai-1=() ai-1=0; ai-2=(; i=i-2; else while(t20&zhan2t2!=() nibo+t1=zhan2t2; nibot1+1=0; t2-; zhan2+t2=ai; i+; word 可自由复制编辑 else if(ai=*|ai=/) while(zhan2t2=*|zhan2t2=/|zhan2t2=|zhan2t2=) nibo+t1=zhan2t2; nibot1+1=0; t2-; zhan2+t2=ai; i+; else if(ai=|ai=) while(zhan2t2=|zhan2t2=) nibo+t1=zhan
10、2t2; nibot1+1=0; t2-; zhan2+t2=ai; i+; while(t20) nibo+t1=zhan2t2; nibot1+1=0; t2-; t1=1; while(nibot1!=0) if(nibot1=0&nibot1=9) for(i=0;i=shu.top;i+) if(nibot1-0=shu.datai.d2) word 可自由复制编辑 m=i; break; zhan3+t3=shu.datam.d1; else if(nibot1=+) zhan3t3-1=zhan3t3-1+zhan3t3; t3-; else if(nibot1=-) zhan3
11、t3-1=zhan3t3-1-zhan3t3; t3-; else if(nibot1=*) zhan3t3-1=zhan3t3-1*zhan3t3; t3-; else if(nibot1=/) zhan3t3-1=zhan3t3-1/zhan3t3; t3-; else if(nibot1=) zhan3t3-1=pow(zhan3t3-1,zhan3t3); t3-; else if(nibot1=) zhan3t3=sqrt(zhan3t3); t1+; word 可自由复制编辑 return zhan31; void main() for(;) char x,a50; double
12、jieguo; int i=0; a0=$; printf(表示开方,表示乘方n); printf(请输入表达式,退出请输入 q:nn); scanf(%c,&x); if(x=q) break; while(x!=n) a+i=x; scanf(%c,&x); ai+1=0; jieguo=jisuan(a); printf(n); printf(结果为:%lf,jieguo); printf(nn); 7 参考文献(以下为参考格式) C 语言程序教程 (人民邮电出版社) 百度网( http:/) 新浪网() C 语言上机指导 C 语言实践教程 (中国水力水电出版社) word 可自由复制编辑 C 语言案例分析 致 谢 致 谢 时光荏苒,感谢教给我人生道理的老师。 word 可自由复制编辑 结语: