1、c语言程序设计课程设计报告分数计算器C+语言程序设计课程设计报告 姓 名: 指 导 学 号: 班 级:10计本2班 日 期:2011年05月20日 计算机科学与技术系课程设计评分表课程名称: 面向对象程序设计 分数计算器 项 目评 价设计方案的合理性与创造性设计与调试结果设计说明书的质量功能完善度综合成绩学 号班 级姓 名综合成绩 教师签名: 日 期: C+语言课程设计简单计算器说明书一、设计目标制作一个分数计算器,以完成分数之间,分数与整数之间的四则运算,以及求分数的指数。系统界面不做牵制要求。在进行运算后可以选择继续运算或者进行下一次新的运算,能实现返回功能。二、设计图1、总体设计图2、详
2、细图case1case2case3fenshu()js()js()zs()模块功能说明及调用关系说明:三、图解1、欢迎使用简单计算器2、等待系统进入主菜单在此选择计算类型【选择代码,回车确定】1、为选择分数与分数之间的四则运算、2、为选择分数与整数之间的四则运算3、为分数的指数运算0、为安全退出程序3、选择分数与分数之间的四则运算分数与分数的加法 如:18/5+16/3=134/15分数与分数的减法 如:1/6-/2=-1/3注:在此举例分数与分数的加法 、减法计算完成后,按y或n,选择是否继续,y则继续本类运算,n为返回到主菜单,再次进行选择4、选择分数与整数之间的四则运算分数与整数的乘法
3、如:1/2*2=1/1分数与整数的加法 如:1/5+6=31/5注:在此举例分数与整数的乘法 、加法计算完成后,按y或n,选择是否继续,y则继续本类运算,n为返回到主菜单,再次进行选择5、选择分数的指数运算如:1/3的2次方等于1/9 如:2/3的2次方等于4/9 6、安全退出注:计算完成后,按y或n,选择是否继续,y则继续本类运算,n为返回到主菜单,再次进行选择至此,以安全退出。四、调试和测试、调试方法:首先打开Microsoft Visual C+ 6.0 ,运行程序,出现错误修改再运行,直至运行结果0 error ,0 warning结束。接着进入程序界面,看程序能否实现所要求的各项功能
4、,再作下一步的修改。、调试时出现的问题及解决方案:1、当多次运行程序时,屏幕被运行数据占满,显得很杂乱。解决方案:引用清屏函数。2、在进行运算时要实现反复运算得有返回功能,由于我们程序分支,不能正常的调用完毕后进入下一个循环,自动返回。解决方案:直接在switch的cash语句中直接调用所需返回的函数。按y或n,选择是否继续,y则继续本类运算,n为返回到主菜单,再次进行选择3、在一次运算完毕后如何不返回继续作下一次的相同运算。解决方案:作用循环语句,结果始终为真,结尾利用if语句控制是否跳入上级菜单或者continue。4、如何在欢迎界面停留时间。解决方案:通过for循环,执行无条件的;的语句
5、,通过执行次数控制程序在欢迎界面的停留时间。5、还有一些小错误,比如未声明就直接使用变量、未对一些变量初始化、声明是空值函数却有返回值、缺少;、使用getch(),system(cls)却缺少相应的头文件,出现警告五、分析及结论在做这个课程设计报告之初是仿照以前的计算器,但是,由于程序行数做了要求,而且题目要求不一样,所以我就在仿照以前的计算器的同时,进一步完善其功能。该程序是我经过多次编写,修改,在不懂的问题上,与指导朋友刘华和刘洋 一起讨论,根据观察其他程序,通过菜单选择实现不同功能得到的启发,将自己所需实现的功能通过文字形式的菜单表现出来。 然后再菜单处进行选择计算类型,正常完成计算,返
6、回和退出。我最满意的地方是“清屏”和“在界面上停留的时间”,总之这个程序基本能符合我自己的要求。不足之处:1、代码重用;2、不能熟练的运用类;3、没有用到指针和数组,对数组和指针还不能很好的运用。心得体会:通过这次课程设计我对这学期所学的C+语言的理论知识得到巩固,达到该设计的基本目的,也发现自己的不足之出,在以后的上机中应更加注意。同时体会到C+语言具有的语句简洁,使用灵活,执行效率高等特点。发现上机实训的重要作用,特别是对数组和循环有了深刻的理解。发现自己对指针还不能正确使用。通过实际操作,学会 C+语言程序编程的基本步骤、基本方法,开发了自己的逻辑思维能力,培养了分析问题、解决问题的能力
7、。深刻体会到“没有做不到的,只有想不到的”,“团结就是力量”,“实践是检验真理的标准”,“不耻下问”的寓意。六、附录 附录源代码:#include #include /数学函数的定义#include /屏幕操作函数#include /库函数const int n=; using namespace std;int xz;class jsqpublic: jsq() jsq() menu(); /菜单 fenshu(); /分数之间的运算 js(); /整数与分数运算 start(); /开始 zs(); /分数的指数运算 tc(); /退出 fun(int t,int f);/约分函数 pri
8、vate: int a,b,c,d,i,r,t,t1,f,f1,x; char n,q;void cd()/进入界面 int i,j; coutendlendlendlendl; cout endl; cout * 欢迎使用分数计算器 *endl; cout endl; coutendlendl; cout |endl; cout |*|endl; cout | 重庆工商大学派斯学院 |endl; cout | 计算机科学系 |endl; cout | 制作人: 10计本2 邓寅森 |endl; cout | 2011年5月 |endl; cout |*|endl; cout |endlend
9、l; coutendl 正; for(i=0;in;i+); cout在; for(i=0;in;i+); cout进; for(i=0;in;i+); cout入; for(i=0;in;i+); cout系; for(i=0;in;i+); cout统; for(i=0;in;i+); cout,; for(i=0;in;i+); cout请; for(i=0;in;i+); cout稍; for(i=0;in;i+); cout等; for(i=0;in;i+); for(j=0;j=6;j+) cout.; for(i=0;in;i+); for(i=0;i8*n;i+); coute
10、ndlendl;coutendsendsendsendsendsendsendsendsendsendsendsendsendsendsends; for(j=0;j=50;j+) cout; for(i=0;i=;i+); jsq:menu() / 主菜单 do system(cls); /清屏 coutendl; cout endl; cout *简单计算器*endl; cout endlendl; cout 1: 分数之间的运算endlendl; cout 2: 整数与分数运算endlendl; cout 3: 分数的指数运算endlendl; cout 0: 退 出endlendl;
11、coutxz; while(xz3); /循环结束条件jsq:start()/自定义科学函数 jsq js; js.menu();while(xz=1 & xz=3) switch(xz) case 1: js.fenshu(); break; case 2: js.js(); break; case 3: js.zs(); break; coutendlendl; cout 是否继续进行运算(YN): ;/提示是否继续 if(getch()=n) js.menu(); /调用标准函数实现返回 else continue; /重复上一次法则运算 if(xz=0) js.tc();jsq:fun
12、(int t=0,int f=0)/约分 int r,t1=t,f1=f; while(r=t%f)!=0) t=f; f=r; t1=t1/f; f1=f1/f; coutendl 计算结果为:t1/f1endl;jsq:tc()/退出 coutendlendl 正 在 安 全 退 出 请稍候.; for(;i30000;i+) ; /*控制界面停留时间*/ system(cls);/清屏 coutendlendlendl endl; cout 谢 谢 使 用 endl; cout bay-bay endl; cout endl; for(;i0;i+) ; /*控制界面停留时间*/ sys
13、tem(cls);/清屏jsq:fenshu()/自定义分数函数 jsq js; system(cls); coutendl; cout =endl; cout 欢迎使用分数之间的计算endl; cout =endlendl; coutanb; coutendl 请选择计算方式endlq; coutendlcnd; if(b=0 | d=0) coutendl 输入错误或分数无意义endl;fenshu(); switch(q) case+: t1=t=a*d+b*c;/分子 f1=f=b*d;/分母 js.fun(t1,f1); break; case-: t1=t=a*d-b*c; f1=
14、f=b*d; js.fun(t1,f1); break; case*: t1=t=a*c; f1=f=b*d; js.fun(t1,f1); break; case/: t1=t=a*d; f1=f=b*c; js.fun(t1,f1); break; jsq:js()/自定义分数函数【分数+整数】 system(cls);/清屏 coutendl; cout =endl; cout 欢迎使用分数与整数运算endl; cout =endlendl; coutanb; coutendl 请选择计算方式endlq; coutendlx; if(b=0) coutendl 输入错误或分数无意义end
15、l;fenshu(); switch(q) case+: t1=t=x*b+a; f1=f=b; fun(t1,f1); break; case-: t1=t=a-b*x; f1=f=b; fun(t1,f1); break; case*: t1=t=a*x; f1=f=b; fun(t1,f1); break; case/: t1=t=a; f1=f=b*x; fun(t1,f1); break; jsq:zs()/分数的指数 system(cls); coutendl; cout =endl; cout 欢迎使用分数的指数计算endl; cout =endlendl; coutendlaqb; coutc; t=pow(a,c); f=pow(b,c); coutendl 最后结果为: t/fendl;void main() /主函数 jsq a; cd();/调用菜单函数 a.start(); /调用开始函数