分数计算器设计Word格式文档下载.docx
《分数计算器设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《分数计算器设计Word格式文档下载.docx(11页珍藏版)》请在冰豆网上搜索。
每种功能的操作都是在菜单中进行相应选择。
3、问题的解决方案
根据系统功能要求,可以将问题解决分为以下步骤:
(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;
(2)分析系统中的各个实体及它们之间的关系;
分数计算器.obj
(3)根据问题描述,设计系统的类层次;
(4)完成类层次中各个类的描述;
(5)完成类中各个成员函数的定义;
(6)完成系统的应用模块;
(7)功能调试;
(8)完成系统总结报告。
源代码:
//分数计算器:
#include<
>
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"
分数计算器"
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;
=sign*(fz/d);
=fm/d;
returntemp;
operator+(Fraction&
c)//重载两个分数的加法运算符
=fz*+fm*;
=fm*;
returntemp;
operator+(intn)//重载分数和整数的加法运算
=fm*n+fz;
=fm;
Fractionoperator-(intn,Fraction&
c)
=*;
=;
operator-(intn)//重载分数减整数的减法运算符
=fz-fm*n;
operator-(Fraction&
c)//重载两个分数的减法运算符
Fractiontemp;
=fz*-fm*;
operator*(Fraction&
c)//重载两个分数的乘法运算符
=fz*;
operator*(intn)//重载分数与整数的乘法运算符
=fz*n;
operator/(Fraction&
c)//重载两个分数的除法运算符
operator/(intn)//重载分数除以整数的除法运算符
=fz;
=fm*n;
Fractionoperator/(intn,Fraction&
c)
=n*;
=;
ostream&
output,Fraction&
t)//重载输出运算符,输出分数
inta,b,c;
a=;
b=;
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>
&
!
=0&
!
=1)
//判断为真分数
output<
if<
<
=0&
("
)"
returnoutput;
istream&
input,Fraction&
t)//重载输入运算符,输入分数
{inta,c;
charb;
input>
a>
b>
if(b=='
c!
=0)
=a;
=c;
else
错误!
!
输入格式错误或分母为0!
请退出重新输入!
returninput;
//main函数
intmain()
Integerdis;
Fractiona,b,result,real;
intm,z;
charc;
//数据类型
();
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=();
运算式规范为:
c<
z<
()<
real<
if(m==2)//整数与分数的运算
请输入一个正整数:
请输入运算符:
请输入一个分数:
result=b+z;
result=z-b;
result=b*z;
result=z/b;
if(m==3)//分数与分数的运算
result=a+b;
result=a-b;
result=a*b;
result=a/b;
return0;
总结报告:
这是我的第一次课程设计,刚开始拿到手感觉一头雾水,不知道到底是从哪里开头去设计一个课题,虽然提供了解决方案让我可以照着步骤去做,但是没有老师的辅导,下手真不容易。
不过,在理清了程序设计的一条条思路后,画了设计层次图,然后一步一步深入,把程序完成了。
其中也遇到很多麻烦,在网上搜索解决了问题。