分数计算器设计Word格式.docx
- 文档编号:22657866
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:14
- 大小:68.97KB
分数计算器设计Word格式.docx
《分数计算器设计Word格式.docx》由会员分享,可在线阅读,更多相关《分数计算器设计Word格式.docx(14页珍藏版)》请在冰豆网上搜索。
(6)菜单功能:
每种功能的操作都是在菜单中进行相应选择。
3、问题的解决方案
根据系统功能要求,可以将问题解决分为以下步骤:
(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;
(2)分析系统中的各个实体及它们之间的关系;
Main.obj分数计算器.obj
main.exe
(3)根据问题描述,设计系统的类层次;
(4)完成类层次中各个类的描述;
(5)完成类中各个成员函数的定义;
(6)完成系统的应用模块;
(7)功能调试;
(8)完成系统总结报告。
源代码:
//分数计算器h.h:
#include<
iostream.h>
classInteger//整数类
{
protected:
intfz;
intfm;
public:
Integer(inta=0,intb=1):
fz(a),fm(b){}
~Integer(){}
voiddisplay();
};
classFraction:
publicInteger//分数类,进行计算和输入输出
Fraction(inta=0,intb=1):
Integer(a,b){}
friendistream&
operator>
>
(istream&
Fraction&
);
//重载输入流
friendostream&
operator<
<
(ostream&
//重载输出流
Fractionoperator+(Fraction&
c);
//重载+运算符(分数与分数)
Fractionoperator+(intn);
//重载+运算符(整数与分数)
Fractionoperator-(Fraction&
//重载-运算符(分数与分数)
Fractionoperator-(intn);
//重载-运算符(整数与分数)
friendFractionoperator-(intn,Fraction&
Fractionoperator*(Fraction&
//重载*运算符(分数与分数)
Fractionoperator*(intn);
//重载*运算符(整数与分数)
Fractionoperator/(Fraction&
//重载/运算符(分数与分数)
Fractionoperator/(intn);
//重载/运算符(整数与分数)
friendFractionoperator/(intn,Fraction&
Fractionpredigest();
//约分函数
//实现函数(分数计算器设计)
#include"
分数计算器h.h"
voidInteger:
:
display()
cout<
endl;
cout<
"
------------------分数计算器-----------------"
endl<
请选择功能:
"
1分数与整数的四则运算。
2整数与分数的四则运算。
3分数与分数的四则运算。
0输入0退出。
}
FractionFraction:
predigest()//定义约分函数
intn,d,t,sign=1;
Fractiontemp;
if(fz<
0&
&
fm<
0)
{
fz=-fz;
fm=-fm;
}
if(fz>
sign=-1;
if(fz<
fm>
n=fz;
d=fm;
intr;
if(n<
d)//辗转相除,求分子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;
returntemp;
operator+(Fraction&
c)//重载两个分数的加法运算符
temp.fz=fz*c.fm+fm*c.fz;
temp.fm=fm*c.fm;
returntemp;
operator+(intn)//重载分数和整数的加法运算
temp.fz=fm*n+fz;
temp.fm=fm;
Fractionoperator-(intn,Fraction&
c)
temp.fz=c.fm*n-c.fz;
temp.fm=c.fm;
operator-(intn)//重载分数减整数的减法运算符
temp.fz=fz-fm*n;
operator-(Fraction&
c)//重载两个分数的减法运算符
Fractiontemp;
temp.fz=fz*c.fm-fm*c.fz;
temp.fm=fm*c.fm;
operator*(Fraction&
c)//重载两个分数的乘法运算符
temp.fz=fz*c.fz;
operator*(intn)//重载分数与整数的乘法运算符
temp.fz=fz*n;
operator/(Fraction&
c)//重载两个分数的除法运算符
temp.fz=fz*c.fm;
temp.fm=fm*c.fz;
operator/(intn)//重载分数除以整数的除法运算符
temp.fz=fz;
temp.fm=fm*n;
Fractionoperator/(intn,Fraction&
c)
temp.fz=n*c.fm;
temp.fm=c.fz;
ostream&
output,Fraction&
t)//重载输出运算符,输出分数
inta,b,c;
a=t.fz;
b=t.fm;
if(a==0||b==0)//当分子,或者分母为0时,输出0
0"
;
if(b==1)//当分母为1时,输出分子
a;
if(a>
b&
b!
=1)//判断分数为假分数
c=a/b;
a=a%b;
c;
if(a!
cout<
又"
a<
'
/'
b;
if(a<
0&
-a>
=1)//当分数为负时,判断为假分数
c=-a/b;
a=-a%b;
c=-c;
='
b<
if(t.fz>
t.fz<
t.fm&
t.fm!
=0&
t.fm!
=1)
//判断为真分数
output<
t.fm;
if(t.fz<
-t.fz<
=0&
("
t.fm<
)"
returnoutput;
istream&
input,Fraction&
t)//重载输入运算符,输入分数
{inta,c;
charb;
input>
a>
b>
if(b=='
&
c!
=0)
t.fz=a;
t.fm=c;
else
错误!
!
输入格式错误或分母为0!
请退出重新输入!
returninput;
//main函数
intmain()
Integerdis;
Fractiona,b,result,real;
intm,z;
charc;
//数据类型
dis.display();
while(m!
请输入:
(0-3):
cin>
m;
if(m==1)//分数与整数的运算
请输入一个分数:
cin>
请输入运算符:
输入一个正整数:
z;
if(c=='
+'
)
result=a+z;
-'
result=a-z;
*'
result=a*z;
result=a/z;
real=result.predigest();
运算式规范为:
c<
z<
a.predigest()<
real<
if(m==2)//整数与分数的运算
请输入一个正整数:
请输入运算符:
请输入一个分数:
result=b+z;
result=z-b;
result=b*z;
result=z/b;
b.predigest()<
if(m==3)//分数与分数的运算
result=a+b;
result=a-b;
result=a*b;
result=a/b;
return0;
总结报告:
这是我的第一次课程设计,刚开始拿到手感觉一头雾水,不知道到底是从哪里开头去设计一个课题,虽然提供了解决方案让我可以照着步骤去做,但是没有老师的辅导,下手真不容易。
不过,在理清了程序设计的一条条思路后,画了设计层次图,然后一步一步深入,把程序完成了。
其中也遇到很多麻烦,在网上搜索解决了问题。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 分数 计算器 设计