计算器编程设计报告讲解_第1页
计算器编程设计报告讲解_第2页
计算器编程设计报告讲解_第3页
计算器编程设计报告讲解_第4页
计算器编程设计报告讲解_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、紫金学院Visual C-w课程设计南京理工大学紫金学院VC+课程设计报告课程:VC卄课程设计系另归计算机系班级:学号:姓名:课题名称:计算器与分数计算器起止时间:2013.11.262013.12.11指导教师:2013年 12月2012级计科、网络、软件紫金学院Visual C+课程设计1. 程序功能介绍计算器实现计算器的功能,使它能够进行加,减,乘,除以及四则运算,还使它能够进行开方, 正弦,余弦,正切运算,以及华氏温度转换为摄氏温度、摄氏温度转换为华氏温度的运 算。分数计算器 实现分数之间的加,减,乘,除的功能,以及分数与整数之间的比较,还有分数化小数 的运算。2. 课程设计要求计算器

2、(1)完善计算器程序,改为可对实数操作。(2)完善程序,改为多个操作数基本四则运算,遇到0为止。(3)增加函数、完成四则混合运算,注意算法要考虑运算符的优先级,对应增加主菜单选项。(4)添加语句,使四则运算具有测试功能,即计算机能够自动出题,并要求客户计算,同时 计算机判断用户计算的对错并打分,要求十题为一个单元,加减运算时最高为两位数运 算,乘法为两位数乘一位数,除法是两位数或三位数除一位数,且要求没有余数。分数计算器(1)完善计算器程序,对main函数的结构进行改进,要求有详细的菜单选项界面,用户不 选择退出就可以反复运算。(2)完善程序,改为多个操作数基本四则运算,遇到0为止。(3)增加

3、函数、完成四则混合运算,注意算法要考虑运算符的优先级,对应增加主菜单选 项。(4)添加语句,使四则运算具有测试功能,即计算机能够自动出题,并要求用户计算,同 时计算机判断用户计算的对错并打分,要求十题为一个单元,每题一个运算符,参与 运算的分子分母均为一位数,运算符包拾加、减、乘、除及大于、小于等逻辑运算。3. 对课程题目的分析计算器(1)在编译计算器程序的时候,要注意类的定义,要用将类进行化简。可以将操作数改为类 中的成员数据,可以直接用一个成员函数去实现一种运算方式。(2)操作数和运算符的输入问题。程序中会涉及大量的操作数的输入,如果只用cm流输入 而不加以处理,一旦输入出错,程序会出现非

4、法循环,不能正确运行,要避免这种情况 得对输入cin流进行处理,使它能够接受非法输入,能够自动察觉并提示重新输入。(3)要考虑新增的混合运算的算法,要注意四则混合运算中带拾号与不带括号的特殊算法。(4)测试程序是最麻烦的一项,测试程序是由计算机出题、用户计算,计算机判断对错并给 出分数,计算机用随机随机数发生器给出运算符和两个操作数,加减乘都比较简单,但 是除法要求没有余数,所以得在产生随机数时先使两个随机数做乘法,然后将结果和一 个随机数输出作为除法的两个操作数,这样就能使除法没有余数。分数计算器类的封装,不要修改源程序类的定义,新增的实现混合四则运算的函数定义为全局函数,实 现时在其中直接

5、定义类的对彖,可以充分利用已定义的各种重载运算符,并且main函数要进行 修改,使得每个菜单选项对应一项功能,供用户使用。2012级计科、网络、软件紫金学院Visual C卄课程设计4. 程序设计和说明(说明算法思想.设计思路,给出重要的、关键的代码)(1) 类的定义:class oopcalcprivate:double x,y;私有变量X和Ydouble faitocel(double number 1);/定义华氏温度转化为摄氏温度double celtofai(double numberl);double sqroot(double number 1);void calcsqrQ;vo

6、id calccos();void calctanQ;void calcsinQ;public:double getX()return x;double getY()return y;double set()x=number 1 ;y=number2;double calcadd(double number 1,double number2);/定义加法运算double calcsub(double number!,double numb亡】2);定 义减去运算double calcdiv(double numberLdouble number2);/定义除法运算double calcmult

7、(double number 1,double number2)y/定义乘法运算 void calcfartocel();void calcceltofai();void calcsroot();void menu()y/i菜单函数void badmputQ;void exitprogQ;void caculateQ;/定义混合运算函数void testQ;/测试函数;class fraction 分数类定义public:fiactionQ; /constiuctorsfiaction(iiit initn, iiit nutd);int numeratorO const; 取分子,const

8、成员函数,不能修改数据成员int denominator const;取 分 母double decunalQ const; 将分数转换为对应的小数 fraction absval() const; 分数的绝对值 void setnum(mt newnum); 设置分子 void setden(mt newden); 设置分母 void simplify。;约分void recip();分子分母转置2012级计科、网络、软件紫金学院Visual C+课程设计const fraction & operator+= (hit ills);private:int n;int d;;(2) 调用函数:

9、void oopcalc:calcsin()正弦函数coutHThe Sin Functionll;coutHEnter a number:cmnumberl;aiiswer=sm(number 1);coutHThe sin of MnumberlM is nanswerendl; coutHPress any key to contiiiueiiM;getchQ;menuQ;这个函数实现了正弦函数的运算。void oopcalc:calcsqrO/求平方的函数coutHThe sqr FunctioniiH;coutHEnter a number:cmnumberl;aiiswer=(nu

10、mber 1 *numberl);coutHThe sqr of MnumberlM is ,answerendl: coutHPress any key to contiiiueiiM;getchQ;menuQ;这个函数实现了求一个数的平方。double oopcalc:calcadd(double numberLdouble number2)/力口法运算 aiiswei-numberl +number2;retuin(aiiswer);这个函数实现了加法运算。double oopcalc:calcsub(double numberLdouble numb亡【2)/减去运算 answer =

11、 number 1 -number2;retuin(aiiswer);这个函数实现了减法运算。double oopcalc:calcdiv(double numbei Ldouble nuiub亡】2)除丫去运算2012级计科、网络、软件紫金学院Visual C+课程设计if(number2=0)/排除除数为零的情况getch();menu();elseanswer = number 1 /number2;retuin(aiiswer);这个函数实现了除法运算,但是除法运算要考虑除数为0的情况。double oopcalc:calcmult(double number 1,double num

12、ber2)answer = number 1 *number2;retuin(aiiswer);这个函数实现了乘法运算。void oopcalc:calcfartocel()/华氏温度转化为摄氏温度cout HThe Farenheit to Celsius Functionll;cout HEnter a tempature in Fareiilieit: M;ciii number 1;answer =(numberl - 32) *5)/9;cout HThe tempature in Celsius is ” answer endl;cout HPress any key to con

13、tinueiin;getchQ;menuQ;这个函数实现了华氏温度转换为摄氏温度,要注意转换关系。void oopcalc:calcceltofar()/摄氏温度转化为华氏温度cout HThe Celsius to Faieiiheit Functionjin;cout HEnter a tempature in Celsius: M;ciii number 1;answer =numberl *9/5 + 32;cout HThe tempature in Faieiiheit is ” answer endl:cout HPress any key to contiiiueiin;get

14、chQ;menuQ;这个函数实现了摄氏温度转换为华氏温度,注意转换关系。void oopcalc:calcsrootQ/求平方根的函数cout HThe Square Root FunctionnH;cout ”First number: M;42012级计科、网络、软件紫金学院Visual C卄课程设计ciii number 1;if(numberlO)/flf除负数开平方根coutMvoiu enter is iiiconect.please enter a new numb亡An”; getchQ;menu();elseanswer = sqrt(numberl);cout HThe s

15、quare root of number 1 is M answer endl; cout HPiess any key to contmueiin;getchQ;menuQ;这个函数实现了求一个数的平方根,但是负数没有平方根要考虑进去。 void oopcalc:exitpiogQ退出函数exit(-l);void oopcalc:menu()/菜单oopcalc a;system(”cis”); 执行系统命令:cis-清屏coutvv “欢迎使用计算器n“;cout ”=MENU=n; cout ”s:选择s进行正弦运算n”;cout “o:选择o进行余弦运算n”;cout 选择t进行正切

16、运算n”;cout选择n进行求平方运算5”;cout 1:选择1进行混合运算n“;cout 2:选择2进行华氏温度转化为摄氏温度的运算11”; cout 3:选择3进行摄氏温度转化为华氏温度的运算11”; cout 4:选择4进行求平方根运算n”;cout 5:选择5进行测试11”;cout 6:选择6退出运算11;cout ”请选择:”;ciiiinput;cout“=n; switch (input)case s:case Sacalcsin0;bieak;case Vxase Oacalccos0;bwak;case f :case Ta.calctanQreak;case rn*:ca

17、se Na.calcsqrQibreak;2012级计科、网络、软件紫金学院Visual C+课程设计case a.caculateQibreak;case 2acalcfhrtocel();bieak;case a.calcceltofaiOreak;case *4*:a.calcsroot();break;case a.testQreak;case r6*:a.exitprogQ;break;default:a.badmput();这个函数实现了菜单模式,要编好菜单的选择。void oopcalc:caculateQ/混合四则运算oopcalc a;coutHThe Multifuncti

18、on混合四则运算)iT;fbr(int n=l;n+)cout,rNumberHnM(Enter 0 to end entering);1; c innumn; 输入要运算的数 if(numn=0)/遇到 0 为止coutnPress any key to continuen;getchQ;menu();if(n=l)answer=numl; contmue;elselabell :coutHPlease choose the fiinction you want(+ or - or * or /):nM; cinval;switch(val)case*+:k=l;break;case-,:k

19、=2;break;cas 亡*1k=3;bTeak;case/k=4;beak;default:coutHBad mput?nM;goto labell;switch(k) case 1:2012级计科、网络、软件紫金学院Visual C卄课程设计answei-a.calcadd(answeraiumn); coutHThe answer is Hanswerendl; break;case 2:answei-a. calcsub(aiiswer,numn); coutHThe answer is Manswerendl; break;case 3:answei-a.calcmult(aiis

20、weinumn); coutHThe answer is Hanswerendl; break;case 4:answei-a. calcdiv(answerjiumn); coutHThe answer is Hanswerendl; break;这个函数实现了四则运算,在这里要注意改为多个数的基本四则运算,遇到0为止:要处理好数字 与运算符之间的关系。void oopcalc:test()测试函数coutHThe Test Functionll;int s;float p;s=rand()%4+iy/随机给出题目的+或-或*或/ siand (time (NULL);numberl=ran

21、d()%MAX+l;/在 1-100 之间随机给出数字 number2=rand()%MAX+1;switch(s)case 1:coutnumberl,+,number2,=,; aiiswer=calcadd(number 1 jiumber2);break;case 2: coutnumber 1 ,-,number2=,; aiiswer=calcsub(numberl4iumber2);break;case 3: coutnumber 1 7number2=,; answei-calcdiv(number 1 ,number2); break;case 4: coutnumbeil*

22、rnumber2,=,; answei-calcmult(number 1 ,number2); break;2012级计科、网络、软件紫金学院Visual C卄课程设计ciiip;if(answe L=p)coutWComct!n”;elsecoutnNO?The correct answer is HaiiswerHiiH;coutMPress any key to contmueiiM;coutflush;getchQ;menuQ;这个函数实现了测试功能,测试功能是觉得比较难的,要考虑计算机给用户随机出题的+、-、*、/ 这些基本运算符,还得设置计算数字区间1100,在出完题目之后,还需

23、要让计算机具有判断对错 的本领。(3) 主函数iiit mam()clw judge;coutn请选择用计算器(j)/分数计算器(f)退出ciiijudge;if(judge=,f)coutvv”欢迎使用分数计算器n”;cout ”MENUn”;cout ”7:两个分数间的运算n“;cout ”8:个分数和一个整数间的运算n” ;cout 9:将分数化为小数11;cout TO:将分数化为带分数n;cout 11:两分数间的比较cout T2:个分数和一个整数间的比较n”;cout n”;coutchoice:iT;fraction fl;fraction 2; 定义两个分数fl,f2int

24、input;chai c;cmiiiput;if(input=7)cout输入数据格式:分数1运算符分数2n“;cout”注:当计算乘方时,先把指数以分母为1的分数的形式输入” 1 & (iiit(decl) != decl)cout fl H as a mixed number is ”;PrintAsMixed(cout, fl);cout 3;else if(mput=ll)cout输入要比较的第一个分数:I1”;cout输入要比较的第二个分数:n”;cmfl2;cout Boolean operator tests (1 = true, 0 = false)nM;cout fl H H

25、 2 H (fl 2) n:cout fl H != 1 2 n: H (fl != f2) cout fl - = H 2 H (fl = 2) n:cout fl H = H 2 H (fl f2) n;cout fl H H f2 ,r: n (fl = n i M (fl = i) n:cout fl H = n i M (fl i) cout fl HH i H: H (fl i) else if(judge=j,)oopcalc s;s.menuQ;elseexit(-l);main();getchQ;return 0;这个主函数需要把计算器和分数计算器这个两个程序连接起来,定义了

26、一个judge字符,当judge 是f的时候会跳转到分数计算器的运算界面,当judge是j的时候,会跳转到计算器的运算界面,当 judge是t的时候,会退出运算。同时在这个主函数里面,还包含了分数计算器的运行程序以及退出 方法。5课程设计中遇到的问题及解决方法(1)在计算器的程序中,四则运算的编写根据资料中的编写,在运行时会出现操作数和运算符之 间的错乱。原先错误的程序片段:void oopcalc:caculate()oopcalc a;cout*The Multifunction混合四则运算)iT;fbr(int n=l;n+)cout,rNumberHnM(Enter 0 to end

27、enteiing)/1;ciniiumn;if(numn=0)/遇到 0 为止coutnPress any key to continueiiH;112012级计科、网络、软件紫金学院Visual C卄课程设计getchQ; menu(); if(n=l)answer=numl; contmue;label! :coutMPlease choose the function you want(+ or - or * or cinval;switch(val) case,+,:k=l;break;case,-,:k=2;break;case*k=3;break;case7:k=4;break;d

28、efault:coutHBad input!nH;goto label!;switch(k) case 1:answei-a.calcadd(answeraiumn); coutHThe answer is Hanswerendl; break;case 2:answei-a .calc su b(answer,numn); coutHThe answer is Manswerendl; break;case 3:answei-a.calcmult(aiisweinumn); coutHThe answer is Hanswerendl; break;case 4:answei-a. calc

29、div(answer,numn); coutHThe answer is Hanswerendl; break;改正后的程序片段:void oopcalc:caculate()oopcalc a;coutMThe Multifunction混合四则运算)n”;紫金学院Visual C卄课程设计2012级计科、网络、软件fbr(int n=l;n+)cout,TSTumberHnn(Enter 0 to end entering);1; cinnumn;if(numn=0)遇到 0 为止coutnPress any key to continueiin;getchQ;menu();if(n=l)

30、answer=numl;contmue;elselabell :coutHPlease choose the ftinction you want(+ or - or * or cinval;switch(val)case 屮:k=l;bieak;case-,:k=2;break;cas 亡*1k=3;bTeak;case/1k=4;beak;default:coutHBad mput?nM;goto labell;switch(k)case 1:answei-a.calcadd(answer.numn); coutHThe answer is ,answerendl; break;case

31、2:answei-a .calc sub(answer,numn); coutHThe answer is Hanswerendl; break;case 3:answei-a.calcmult(aiiswer.numn); coutHThe answer is ,answerendl; break;case 4:13answei-a. calcdiv(answer,numn); coutHThe answer is ,answerendl;2012级计科、网络、软件紫金学院Visual C+课程设计break;(2)本来想在主函数中添加一个清屏的功能,但是运行不出来:mtniam()char

32、 CLS;coutM是否清屏? ( Y/N) ii,r;clw judge;coutn请选择用计算器(j)/分数计算器(f)退出:n;ciiijudge;是否清屏?(Y/N)请选择用计算器Q少分数计算誥(门退出仆:Press any key to continue.于是我就放弃清屏这一功能了: int mam()clw judge;coutHn请选择用计算器(j)/分数计算器(f)退出(t):n; ciiijudge;请选择用计算器V”分数计算器“退岀工6.课程设计中所改变的功能模块(1)课程设计中所删除的功能模块142012级计科、网络、软件紫金学院Visual CH课程设计分数计算器把题目

33、中要求的测试功能省略了,没编写出来。(2)课程设计中所增加的功能模块计算器中增加了正弦,余弦,正切以及一个数的平方的运算,还增加了计算器的测试功能: 分数计算器中增加了将假分数化为带分数,分数化为小数,分数与整数的比较,分数与分 数之间的比较,但是没有完成题目要求的测试程序7课程设计结果首页请选择用计算器分数计算器退出壮:选择j出现的界面158运运度度温温氏氏为为度橐 运温温方 倉氏平试_nt erlie sa:SLE?Funct ionnumber:9 9 is 81选择1所出现的界面紫金学院Visual C+课程设计2012级计科、网络、软件选择3所出现的界面IS紫金学院Visual C+课程设计2012级计科、网络、软件欢迎使用计算器0二选择0进花余養运喜1= 3&2:选史建样環行瘻氏温贋转r塔M話方痕运MENUT)ngts运算The

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论