版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、启京航空航尺丈哮QNanjingUniversityofAeronauticsandAstronautics面向对象程序设计语言-课程设计题目计算器设计院系一航空宇航学院专业飞行器设计与工程学生姓名学号指导教师二零一二年六月九日:誉南京統空就氏犬学寸NanjinxVnhxrrityofAcromratic*andAstrormutk*课程设计报告:渗南京統空銃氏衣学NanjinxVnhvrrityofAeronautic*andAstronautic*课程设计报告计算器设计、目的与要求:1、目的:通过开发计算器程序,进一步熟悉C+中类和对象的定义与使用,掌握程序控制的方法,掌握C+程序设计的基
2、本知识。2、基本要求:设计计算器程序,可对实数操作;可对多个基数操作的四则运算;增加函数如:正弦、余弦、正切、对数、平方和平方根、完成四则混合运算,注意考虑优先级,对应增加主菜单选项;根据程序的提示,可以进行正弦运算进行余弦运算、正切运算、对数运算、求平方运算、混合运算、华氏温度转化为摄氏温度的运算、摄氏温度转化为华氏温度的运算、求平方根运算。使四则运算能够具有测试功能,即计算机能够自动出题,并要求用户计算,同时计算机判断用户的对错并打分,要求十题为一个单元,加减运算时最高为两位数的运算,乘法为两位数乘以一位数,除法是两位数或者三位数除以一位数,要求没有余数。、设计方法和基本原理:1、问题描述
3、(功能要求):实数间的计算很复杂,它包括:相加、相减、相乘、相除、求三角函数、求对数、四则混合运算等。试设计计算器,使之能提供以下功能:.可以连续输入运算,对于输入的表达式能够按算符优先级进行处理。如:输入4+5*3时,应该输出60,而不是27。.可以处理包含括号的表达式。如:输入茁(3+2)时,应该输出10,而不是8。.可以计算三角函数、对数函数、平方根以及平方。.能够实现华氏温度与摄氏温度之间的转换。.四则运算能够具有测试功能,即计算机能够自动出题,并要求用户计算,同时计算机判断用户的对错并打分。6).系统以菜单方式工作。(所谓菜单指用户可以自由选择所要执行的功能)7).当使用者输入错误时
4、要有错误提示。2、问题的解决方案:根据系统功能要求,可以将问题解决分为以下步骤:(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;(2)分析系统中的各个实体及它们之间的关系包括属性和行为;(3)根据问题描述,设计系统的类层次;(4)完成类层次中各个类的描述(包括属性和方法);(5)完成类中各个成员函数的定义;(6)完成系统的应用模块;(7)功能调试;(8)完成系统总结报告。南京統空航氏衣学Nf|jinxUnhTrritjrofAeronautic*andAstrormutic*课程设计报告TOC o 1-5 h z系统需求分析1总体设计1详细设计25.结果分析系统调试错误!未定
5、义书签。6.总结附录:源程序清单::南京就空航氏衣学vV*NanjinxUnhTrritjrofAeronautic*andAstronautics课程设计报告系统需求分析实数间的计算很复杂,它包括:相加、相减、相乘、相除、求三角函数、求对数、四则混合运算等。试设计计算器,使之能提供以下功能:.可以连续输入运算,对于输入的表达式能够按算符优先级进行处理。如:输入4+5*3时,应该输出60,而不是27。.可以处理包含括号的表达式。如:输入茁(3+2)时,应该输出10,而不是8。.可以计算三角函数、对数函数、平方根以及平方。.能够实现华氏温度与摄氏温度之间的转换。.四则运算能够具有测试功能,即计算
6、机能够自动出题,并要求用户计算,同时计算机判断用户的对错并打分。.系统以菜单方式工作。(所谓菜单指用户可以自由选择所要执行的功能).当使用者输入错误时要有错误提示。学生可以通过以上功能计算实数间的加、减、乘、除、求三角函数、求平方、求平方根、求对数以及实现华氏温度和摄氏温度间的转换,除了要实现上述的基本功能之外,本系统还应该在细节上下工夫,使用户使用方便,在使用的过程中保持一个愉快的心情。计算器系统有广大的用户群,这其中有老师、学生、有公司办公人员,也可以供给一般用户使用。总之,该系统可以满足用户需求,实现对实数的计算。总体设计计算器系统包含六个大的功能,分别是:四则混合运算、三角函数运算、对
7、数运算、平方和平方根运算、摄氏温度和华氏温度的转换、测试功能。在上述六大功能中最难的是四则混合运算的实现,特别是优先级的判断,不但有加减乘除之间的优先级判断,而且还有括号夹杂其中,使得实现起来非常困难。于是,我考虑用栈和二叉树來实现。系统弹出主菜单來提示用户输入其想要实现的运算类型,然后根据用户所选的类型來调用相关的函数计算并返回结果。当系统完成运算后,会再次跳出主菜单让用户选择,用户可以选择推出或者继续。当用户输入出错时,系统会提示用户。总之,用户可以方便的在系统提示下进行使用。本系统还具有测试功能,系统出题,用户输入答案,系统会判断对错并给出用户的得分。计算器系统中功能模块图:详细设计系统
8、通过主菜单提示用户选择相应的功能。该计算器的功能主要为下列6个:(1).四则混合运算模块用户选择功能,输入要进行的多项式(不能输入空格符),实现实数的四则混合运算。混合运算流程图:开始输入多项式处理函数MixedQ:參南京統空航氏衣学NarjinxUnhvrrityofAeronautic*andAstroruiutic*课程设计报告.三角函数模块用户选择功能,输入实数,实现求三角函数的功能。三角函数运算流程图.对数模块用户选择功能,输入实数,实现对数的求解。对数函数流程图南京航空就氏犬学NanjinxUnhierrityofAeronauticsandAstroruiutic*课程设计报告(
9、4)平方和平方根模块用户选择功能,输入实数,实现平方和平方根运算。:會南京航空毓氏衣学vT*NanjinxVnhrrityofAeronauticsandAstronautk*课程设计报告(6)测试模块系统出题,用户输入答案,系统会判断对错并给出用户的得分。::南京航空航氏犬学辻“NanjinxVnhicrrityofAeronautic*andAstroruiutic*课程设计报告系统调试程序编写完成后,我进行了程序调试。调试过程中,出现了以下问题:.当我第一次运行程序时,出现了很多错误,大部分是定义的函数需与引用时不同,这是由于粗心引起的。还好,这个程序也就300多行代码,找起來不是很困难
10、,但是如果是上万行的代码,那就要花很多时间。以后在编程时,我要细心些,不能把时间浪费在这种低级错误上。.在调试除法运算时,我发现自己没有考虑除数为零的情况,一旦输入的除数为零,系统就无法运行了。我回到除法运算的函数中,加入判断除数是否为零以及为零时的处理的代码,问题就解决了。在对数运算、求平方根运算中都有类似情况。.当我选择运算的种类并输入要计算的实数后,系统输出答案,但马上屏幕乂恢复到主菜单选项,根本來不及看清答案。我到程序中去寻找错误,发现每一次用户输入后我都有写一个cm.ignore(),于是我想会不会是这个出的问题。我删了一个进行调试,发现没有错误,可以运行。但是,运行起來和以前还是一
11、样。于是,我回到代码南京航空航氏衣学NafjinxUnKvrrityofAeronauticsandAstronautk*课程设计报告中继续寻找,发现在mem】函数中我用了一个清屏的代码,把它删掉后继续调试,这次,运行起來后不再出现问题了,我进行的所有操作都保留下來了,没有被删除。原來,每次调用menu函数时,都会执行一次清屏,用户上次的运算结果会被删除并显示新的菜单。(4).在选择菜单项时,会出现问题,例如:输入1,选择正弦函数操作,但是输入12,却变成了选择正弦函数操作并且对2进行正弦计算,经过考虑并且尝试我发现只要将选择输入由字符型改成整形就可以了。结果分析这次的课设,虽然老师早早的就把
12、题目给我了,但我因为书本还没看完,就迟迟没有动手去做。从开始准备做这个题到完成也就是儿天的事,所以很多地方写的不好,其至有些地方还不是很懂。在多次调试后,有些错误依然存在,而且我想不出办法解决,实在是惭愧。现在,在这里也只能说说它的不足之处了。首先是类的问题,整个程序中,我只用了一个类,儿乎所有的函数都是这个类的成员,让人感觉很臃肿,我也试图去优化它,但最终也没能想出办法来。容易在基础的东西上出错,经常忘记写“;”,或者同一个函数不同地方调用时会打错名字,这些都是不应该的,必须改掉。函数参数设定不够完美,整个程序中对指针的运用比较少。对于指针的巧妙运用把握得不够。一开始挺顺利,但在如何实现四则
13、混合运算时,我茫然了。我苦想一整天都没能想出如何去做。于是,我去百度了一下,还好,让我找到了。可是,问题又来了,在实现四则混合运算时运用了栈和二叉树的知识,这让我很头疼,这两样东西我压根不懂。跑到图书馆借了相关的书看,还是不能完全理解,只能凑合着用了。在错误提示方面我还是很不足,经常忘记,都是调试出现问题了才会想到。6总结通过课程设计,我感觉到平时学的时候对书上的程序是看懂了,可是真正运用这些知识的时候还是有点力不从心,不能很好的了解并运用到自己的程序之中。通过这次的课程设计我明白了学习程序设计语言必须要勤做实验,通过实验总结经验。平时遇到的一些小问题一定要重视,越是基础的知识越要理解透彻。比
14、如指针与数组方面的知识,一旦没有弄清楚,在设计程序时就会吃亏。南京統空硫氏衣学NanjinxUnhvrrityofAeronautic*andAstronautics课程设计报告这次的课程设计中,我遇到了很多的问题,有的通过思考或查看书本解决了,有的还留在脑子里,只有通过孜孜不倦的求索我们才会有进步,不懂得思考就不能真正的掌握一门知识。像我做这个程序的时候,就感觉自己对栈的知识还很欠缺,有的地方不是很明白,多亏了上网查找的这方面知识和一些源程序才帮助我完成了这个程序的设计。可是一直到现在,对于混合运算中用到的栈和二义树我只是有些理解,真正运用还不行。之前我学的书上没有这些内容,虽然我去图书馆看
15、了有关这些内容的书,但毕竟能力有限,短时间内无法理解的那么好,运用起來就更加捉襟见肘了。今后,我还是会去看这方面的书的,把没弄懂的东西弄懂。最后,还有一点不得不说,这个程序中,我只定义了一个类,所有的函数都包含在里面,感觉很臃肿,想要优化,可最终也没能想出办法,真是一大遗憾。;參南京航空銃氏丈学V*NanjinxVnhxrrityofAeronautic*andAstronautic*课程设计报告附录:源程序清单#include#include/用以产生随机数#mclude定义杂项函数及内存分配函数include/包含数学函数#mcludeusingnamespacestd;#defineMA
16、X100#defineMIN10doublenumberhnumber2,answer;iiitmput;classcountpublic:doublecadd(doublenumber1,doublenumber2);/定义加法运算doublecsub(doublenumbeiLdoublenumber2);/定义减法运算doublecdiv(doublenumberLdoublenumber2);/定义除法运算doublecmult(doublenumber1,doublenumber2);/定义乘法运算voidcsqureO;/定义平方函数voidsqureroot();/定义求平方根运
17、算voidccos();定义余弦函数voidctan();定义正切函数voidcsin();定义正弦函数voidclogQ;/定义对数函数voidfatoce();/定义华氏温度转化为摄氏温度voidcetofa();定义摄氏温度转化为华氏温度定义混合运算函数voidmixed();voidcalcu();doublecalculate(char*f);voidcexit()/定义退出函数voidmenuQ;/定义主菜单函数voidbadmput();/定义出错提示函数voidtestQ;/定义测试函数;doublecount:cadd(doublenumberLdoublenumber2)/
18、力Fl法运算aiiswei-numbef1+number2;retmn(aiiswer);doublecount:csub(doublenumbei1.doublenumber2)减法运算answer=number1-number2;retmn(aiiswer);南京航空航氏衣学NarjinxVnhicrrityofAeronautic*andAstroruiutic*课程设计报告doublecount:cdiv(doublenumberdoublenumbed)/除去运算if(number2=0)/排除除数为零的情况coutM除数不可为0!iT;exit(0);elseanswer=numb
19、er1/number2;return(answei);doublecount:cmult(doublenumberl,doublemimb2)乘去运算answer=number1*number2;letuin(aiiswer);voidcount:csquie()/平方的函数coutM求平方S”;cout请输入一个数:;cmnumberl;aiiswer=(number1*numberl);coutnumbei1H的平方是Hansweiendl;cm.ignore();menu();voidcount:squrerootQ/R平方根的函数cout”求平方根iT;cout”请输入一个非负数:“;
20、ciiinumber1;if(numberl0)排除负数开平方根cout”输入错误!不可为负数!n“;cin.ignore();menu();elseanswer=sqit(numberl);coutnumberl”的平方根是”answerendl;cin.ignore();menu();:參南京統空就氏衣学寸NanjifuiVnhvrrityofAerommiticsandAstronautic*课程设计报告:參南京統空硫氏丈学vNanjinxUnhcrrityofAeronauticsandAstronautic*课程设计报告voidcount:csiiiQ/正弦函数coutM求正弦1T;
21、cout请输入一个数:;cmnumberl;aiiswer=sm(number1);coutnumbei1H的正弦是Manswerendl;ciii.ignore();menu();voidcount:ccosQ余弦函数coutM求余弦1T;cout请输入一个数:;cmnumberl;aiiswer=cos(numberl);coutnumbei1H的余弦是Manswerendl;ciii.ignore();menu();voidcount:ctanQ/正切函数coutM求正切1T;cout请输入一个数:;cmnumberl;aiiswer=tan(number1);coutnumbei1H的
22、正切是Manswerendl;ciii.ignore();menu();voidcount:clogQ/X4数函数coutM求对数n”;cout请输入一个正数:;cmnumberl;if(numberl=,0,)&(*p=9);操作数进栈sl+tl=x;执行先遇到的加、减、乘、除运算while(t2)calcu();返回结果returnsltl;voidcount:niixedQ/混合运算函数cout混合运算函数,请输入要计算的表达式:n”;chai-b100;ciiib;coutcalculate(b)endl;coutflushyz刷新缓冲区ciii.ignore();menuQ;void
23、count:cexit()/退出函数exit(0);_voidcount:badmput()/出错提示函数coutn输入错误!1T;ciii.ignore();menuQ;voidcount:test()测试函数coutM进行测试11”;iiits.sum=0:渗南京航空航氏衣学NanjinxUnhvrrityofAeronauticsandAstronautk课程设计报告南京就空就氏犬学Nanjin*UnhxrrityofAeronauticsandAstronautic*课程设计报告floatx;fbr(inti=l;i=10;i+)fis=rand()%4+l;/随机给出题目的+或-或*
24、或/sraiid(time(NULL);switch(s)case1:number1=rand()%MAX:number2=rand()%MAX:coutnumberl,+tnumber2=,;answer=cadd(number14iumber2);break:case2:number1=rand()%MAX:number2=rand()%MAX:coutnumberl-rnuniber2,=,;answer=csub(number14iumber2);break:case3:number1=rand()%MAX:number2=rand()%MIN1;coutnumberl7rnumber2=,;answer=cdiv(number1,number2);break:case4:number1=rand()%MAX:number2=rand()%MIN;coutnumberl,*,number2=,;answer=cmu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- NB/T 11539-2024矿用物位传感器通用技术要求
- 中医医学经络腧穴学课件-奇穴
- 《学前社会教育》课件
- 2025届海南省部分学校高三上学期全真模拟(二)历史试卷(解析版)
- 2024-2025学年浙江省台州市十校联考高一上学期期中考试历史试题(解析版)
- 《物流仓储管理》课件
- 单位管理制度集合大全员工管理篇
- 《物流管理运输管理》课件
- 单位管理制度汇编大全员工管理
- 单位管理制度合并汇编【职工管理】
- 2025年济南铁路局招聘笔试参考题库含答案解析
- 儿童涂色画空白填色图(100张文本打印版)
- 2024版合同及信息管理方案
- 压缩空气(教学设计)-2024-2025学年三年级上册科学教科版
- JGT266-2011 泡沫混凝土标准规范
- 健康证体检表
- 大气课程设计---袋式除尘器
- 市政桥梁工程施工
- 长线法节段梁预制施工方案wgm
- ProE5.0全套教程(完整版)
- 钢筋混凝土框架结构施工工艺(附施工图)
评论
0/150
提交评论