分数计算器设计-韩明泽.docx

上传人:大张伟 文档编号:11728832 上传时间:2021-09-01 格式:DOCX 页数:20 大小:220.29KB
返回 下载 相关 举报
分数计算器设计-韩明泽.docx_第1页
第1页 / 共20页
分数计算器设计-韩明泽.docx_第2页
第2页 / 共20页
分数计算器设计-韩明泽.docx_第3页
第3页 / 共20页
分数计算器设计-韩明泽.docx_第4页
第4页 / 共20页
分数计算器设计-韩明泽.docx_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《分数计算器设计-韩明泽.docx》由会员分享,可在线阅读,更多相关《分数计算器设计-韩明泽.docx(20页珍藏版)》请在三一文库上搜索。

1、荆楚理工学院课程设计成果学院:计算机工程学院班级:2014级计算机科学与技术2班学生姓名:韩明泽 学号:2014404010216设计地点(单位)教学楼B栋102实验室设计题目:分数计算器设计完成日期:2016年06月18日指导教师评语:成绩(五级记分制):教师签名:C+湎向对象程序设计课程设计报告摘要随着面向对象程序设计方法的不断普及和应用,学习和掌握C+胡言已经成 为许多计算机专业工作者和广大计算机应用人员的迫切需要。C+胡言是在C语言基础上扩充了面向对象机制而形成的一种面向对象程序设计语言,它继承了 C语言的全部优点和功能外,还支持面向对象程序设计。本次分数计算器设计运用了 C+”类和派

2、生类的使用,实行对流提取和流插 入运算符进行重载;分数对整数的加、减、乘和除法运算;整数对分数的加、减、 乘和除法运算;分数对分数的加、减、乘和除法运算。最后对整个设计过程进行 了总结。【关键词】:C+y类;分数的加、减、乘、除计算。1、问题描述 12、功能要求 13、问题的解决方案 14、功能调试 24.1 开始界面 24.2 分数与整数的加法运算调试 34.3 整数与分数的减法运算调试 34.4 分数与分数的乘法运算调试 44.5 分数与分数的除法运算调试 44.6 分数分母为0错误测试 55、总结 5参考文献 6附录:源代码 71、问题描述定义一个整数类。定义一个分数类,由整数类派生出。

3、能对分数进行各种计算和输入 /输出2、功能要求(1)定义整数类和分数类。其中,包括构造函数、析构函数、显示函数等。(2)输入/输出:对流提取和流插入运算符进行重载。(3)计算功能:可进行分数的加、减、乘和除法运算。(4)化简功能:将分数化简为最简分数。(5)异常处理功能:分数中分母不能为零。(6)菜单功能:每种功能的操作都是在菜单中进行相应选择。3、问题的解决方案根据系统功能要求,可以将问题解决分为以下步骤:(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;图3.1功能应用模块(2)分析系统中的各个实体及它们之间的关系;图3.1各个实体关系(3)根据问题描述,设计系统的类层次;

4、class Integer / 定义整数类class FractionpublicInteger /分数类,由整数类进行派生friend istream & operator(istream & Fraction & );/重载输入流friend ostream & operator(ostream & Fraction & );/重载输出流(4)完成类中各个成员函数的描述和定义;Fraction(int a=0,int b=1) /分数类成员函数display。/实现成员函数operator+(Fraction &c)/重载两个分数的加法运算符operator-(Fraction &c)/重

5、载两个分数的减法运算符operator*(Fraction &c)/重载两个分数的乘法运算符operator/(Fraction &c)/重载两个分数的除法运算符operator+(int n)/重载分数和整数的加法运算operator-(int n)/重载分数减整数的减法运算符operator *(int n)/重载分数与整数的乘法运算符operator/(int n)/重载分数除以整数的除法运算符Fraction predigest(); / 约分函数 main()/主函数4、功能调试4.1开始界面E:vc + +6.0_win8CommonMSDev98BinDebugCpp1j X I

6、 on , I f | m F /J KA Id月后旨1分数与糕嬲臃算。2整数与分数的四则运算3分数与分数的四则运算,0输入巧退出。请输入:时3:图4.1开始界面24.2分数与整数的加法运算调试3图4.2分数与整数的加法运算4.3整数与分数的减法运算调试图4.3整数与分数的减法运算4.4分数与分数的乘法运算调试4图4.4分数与分数的乘法运算调试4.5分数与分数的除法运算调试图4.5分数与分数的除法运算调试4.6分数分母为0错误测试图4.6错误测试5、总结通过此次的课程设计,我们将本学期由课本上所学习的有关内容应用到实践 当中,刚开始拿到手感觉一头雾水,不知道到底是从哪里开头去设计一个课题, 虽

7、然提供了解决方案让我可以照着步骤去做, 但是没有老师的辅导,下手真不容 易。后来在老师的帮助下理清了程序设计的一条条思路后,画了设计层次图,然后一步一步深入,把程序完成了。其中也遇到很多麻烦,在网上搜索解决了问题。这一次课程设计也使我在应用过程中更加清楚的了解并掌握C+胡言的各部分的内容,进一步加深了对 C+胡言的认识与理解,尤其注重了 C+胡言与C 语言不同的部分,同时提高了个人程序设计思想,及时发现一些错误,并在调试 过程中更加深刻的认识到 C+邮言程序的严谨性。认识到 C+叫言,他不仅全面 兼容了 C语言,保持了 C语言的简洁、高效和接近汇编语言的特点,更对C的类 型系统进行了改革和扩充

8、,比 C语言更安全,编译系统更强大。总之,通过此次课程设计,我们学到了许多我们在书本上学不到的知识,受益匪浅。通过实践,我们能更好地掌握 C+胡言,并运用它编写应用程序。我们 对它的功能和实用性、严密性,和对程序的编写都有了比较深刻的体会。毫无疑 问,编程过程中我们遇到了许多问题,但通过我们不懈的努力,团结奋斗的精神, 我们终究将问题一一解除,最终实现了程序的各项功能。虽然我们的程序还不够 完善,加以改进以实现更多的功能。但通过这次的课程设计我们不仅学到了许多 知识,学会如何设计一个应用程序,包括程序设计方法,调试程序,还学会如何 解决问题,学会将所学知识运用到实际情况中。参考文献2013.中

9、国水利水电1李素若,杜华兵编.C+向对象程序设计.北京:中国水利水电出版社,2李素若,杜华兵编.C+面向对象程序设计习题解答及上机指导.北京:出版社,2013.3郑莉,傅仕星编.C+面向对象程序设计.清华大学出版社,2003.4谭浩强编.C+0向对象程序设计.北京:清华大学出版社,2006.5Davis Chapman,学用 Visual c+ 6.0,清华大学出版社,2001.17分数类,进行计算和/重/重重载+运算符(分数与重载+运算符(整数重载-运算符(分数重载-运算符(整数重载*运算符(分数与重载*运算符(整数重载/运算符(分数与附录:源代码/分数计算器h.h:#include cla

10、ss Integer / 整数类protected:int fz;int fm;public:Integer(int a=0,int b=1):fz(a),fm(b)(Integer() void display。;);class Fractionpublic Integer/输入输出public:Fraction(int a=0,int b=1):Integer(a,b)friend istream & operator(istream & Fraction & );载输入流friend ostream & operator(ostream & Fraction & );载输出流Fracti

11、on operator+(Fraction &c);/分数)Fraction operator+(int n);/与分数)Fraction operator-(Fraction &c);/与分数)Fraction operator-(int n);/与分数)friend Fraction operator-(int n,Fraction &c);Fraction operator*(Fraction &c);/分数)Fraction operator*(int n);/与分数)Fraction operator/(Fraction &c);/分数)Fraction operator/(int

12、n);/重载/运算符(整数与分数)friend Fraction operator/(int Fraction &c);Fraction predigest(); /约分函数void display。;/实现函数(分数计算器设计)#include/#include 分数计算器h.hvoid Integer二display () coutendl;coutendlendl;coutcout1cout2cout”3cout0请选择功能:分数与整数的四则运算 整数与分数的四则运算 分数与分数的四则运算输入0退出。分数计算器endl;endlendl;endlendl;endlendl;endlend

13、l;Fraction Fraction二predigest()/定义约分函数int n,d,t,sign=1;Fraction temp;if(fz0 & fm0 & fm0) fm=-fm; sign=-1;if(fz0) fz=-fz; sign=-1;n=fz;d=fm;int r;if(nd)/辗转相除,求分子n与分母d的最大公约数t=n;n=d;d=t;r=n%d;while(r!=0)n=d;d=r;/d为最大公约数r=n%d; temp.fz=sign*(fz/d); temp.fm=fm/d; return temp; Fraction Fraction:operator+(F

14、raction &c)/重载两个分数的加法运算符Fraction temp;temp.fz=fz*c.fm+fm*c.fz;temp.fm=fm*c.fm;return temp;Fraction Fraction:operator+(int n)/重载分数和整数的加法运算Fraction temp;temp.fz=fm*n+fz;temp.fm=fm;return temp;Fraction operator-(int n,Fraction &c)Fraction temp;temp.fz=c.fm*n-c.fz ;temp.fm=c.fm;return temp;Fraction Frac

15、tion二operator-(int n)法运算符Fraction temp;temp.fz=fz-fm*n;temp.fm=fm;return temp;Fraction Fraction二operator-(Fraction &c) / 运算符Fraction temp ;temp.fz =fz*c.fm -fm*c.fz;temp.fm =fm*c.fm;return temp;/重载分数减整数的减重载两个分数的减法Fraction Fraction二operator*(Fraction &c)乘法运算符Fraction temp;temp.fz=fz*c.fz;temp.fm=fm*c

16、.fm;return temp;Fraction Fraction二operator *(int n)法运算符Fraction temp;temp.fz=fz*n;temp.fm=fm;return temp;/重载两个分数的/重载分数与整数的乘Fraction Fraction二operator/(Fraction &c)运算符/重载两个分数的除法Fraction temp; temp.fz=fz*c.fm; temp.fm=fm*c.fz; return temp;Fraction Fraction二operator/(int n)除法运算符/重载分数除以整数的Fraction temp;

17、temp.fz=fz;temp.fm=fm*n;return temp;Fraction operator/(int Fraction &c)Fraction temp;temp.fz =n*c.fm ;temp.fm =c.fz ;return temp;ostream& operator(ostream &output,Fraction &t) /重载输出运算符,输出分数int a,b,c;a=t.fz;当分子,或者分母为0时,输出0当分母为1时,输出分子/判断分数为假分数b=t.fm;if(a=0|b=0)/cout0;if(b=1)/coutb&b!=1)c=a/b;a=a%b;cou

18、tc;if(a!=0)cout又a/b;if(ab&b!=1)/当分数为负时,判断为假分数c=-a/b;a=-a%b;c=-c;cout=c;if(a!=0)cout又a/b0&t.fzt.fm & t.fm!=0&t.fm!=1) / outputt.fz/t.fm;if(t.fz0 & -t.fzt.fm & t.fm!=0 & t.fm!=1) / output(t.fz/t.fm(istream &input,Fraction &t)入分数 int a,c;char b;inputabc;if(b=/ & c!=0 )t.fz=a;t.fm=c;elsecout”错误! ! !输入格式

19、错误或分母为endl;return input;判断为真分数/重载输入运算符,输0!请退出重新输入!#includeint main() /main 函数Integer dis;Fraction a,b,result,real;int m,z;char c;/数据类型II.dis.display (); while(m!=0)coutm;if(m=1)/coutendla;coutendlc;coutendlz;if(c=+)result=a+z;if(c=-)result=a-z;if(c=*)result=a*z;if(c=/)result=a/z;输入一个正整数:real=result.

20、predigest();cout 运算式 规范为:acz=a.predigest()cz=realendl;coutendl;if(m=2)/整数与分数的运算coutendl;coutendlz;coutendlc;coutendlb;if(c=+)result=b+z;if(c=-)result=z-b;if(c=*)result=b*z;if(c=/)result=z/b;real=result.predigest();cout运算式规范为: ()=realendl;coutendl;if(m=3)/zcb=zcb.predigest分数与分数的运算coutendl;coutendlcina;coutendlcinc;coutendlcinb;if(c=+,)result=a+b;if(c=,-)result=a-b;if(c=,*)result=a*b;if(c=7)result=a/b;real=result.predigest();请输入一个分数:请输入运算符:请输入一个分数:acb-a.predigestcout运算式规范为: ()cb.predigest ()-,realendl;coutendl;)return 0;)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1