分数计算器设计.docx

上传人:b****5 文档编号:5101547 上传时间:2022-12-13 格式:DOCX 页数:11 大小:67.81KB
下载 相关 举报
分数计算器设计.docx_第1页
第1页 / 共11页
分数计算器设计.docx_第2页
第2页 / 共11页
分数计算器设计.docx_第3页
第3页 / 共11页
分数计算器设计.docx_第4页
第4页 / 共11页
分数计算器设计.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

分数计算器设计.docx

《分数计算器设计.docx》由会员分享,可在线阅读,更多相关《分数计算器设计.docx(11页珍藏版)》请在冰豆网上搜索。

分数计算器设计.docx

分数计算器设计

分数计算器设计

黔南民族师范学院计算机科学系

姓名:

何--

指导老师:

任--

学号:

1208075---

班级:

B12计科班

日期:

1、问题描述

定义一个整数类。

定义一个分数类,由整数类派生出。

能对分数进行各种计算和输入/输出。

2、功能要求

(1)定义整数类和分数类。

其中,包括构造函数、析构函数、显示函数等。

(2)输入/输出:

对流提取和流插入运算符进行重载。

(3)计算功能:

可进行分数的加、减、乘和除法运算。

(4)化简功能:

将分数化简为最简分数。

(5)异常处理功能:

分数中分母不能为零。

(6)菜单功能:

每种功能的操作都是在菜单中进行相应选择。

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//分数类,进行计算和输入输出

{

public:

Fraction(inta=0,intb=1):

Integer(a,b){}

friendistream&operator>>(istream&,Fraction&);//重载输入流

friendostream&operator<<(ostream&,Fraction&);//重载输出流

Fractionoperator+(Fraction&c);//重载+运算符(分数与分数)

Fractionoperator+(intn);//重载+运算符(整数与分数)

Fractionoperator-(Fraction&c);//重载-运算符(分数与分数)

Fractionoperator-(intn);//重载-运算符(整数与分数)

friendFractionoperator-(intn,Fraction&c);

Fractionoperator*(Fraction&c);//重载*运算符(分数与分数)

Fractionoperator*(intn);//重载*运算符(整数与分数)

Fractionoperator/(Fraction&c);//重载/运算符(分数与分数)

Fractionoperator/(intn);//重载/运算符(整数与分数)

friendFractionoperator/(intn,Fraction&c);

Fractionpredigest();//约分函数

voiddisplay();

};

//实现函数(分数计算器设计)

#include<>

#include"分数计算器"

voidInteger:

:

display()

{

cout<

cout<<"------------------分数计算器-----------------"<

cout<<"请选择功能:

"<

cout<<"1分数与整数的四则运算。

"<

cout<<"2整数与分数的四则运算。

"<

cout<<"3分数与分数的四则运算。

"<

cout<<"0输入0退出。

"<

}

FractionFraction:

:

predigest()//定义约分函数

{

intn,d,t,sign=1;

Fractiontemp;

if(fz<0&&fm<0)

{

fz=-fz;

fm=-fm;

}

if(fz>0&&fm<0)

{

fm=-fm;

sign=-1;

}

if(fz<0&&fm>0)

{

fz=-fz;

sign=-1;

}

n=fz;

d=fm;

intr;

if(n

{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;

}

FractionFraction:

:

operator+(Fraction&c)//重载两个分数的加法运算符

{

Fractiontemp;

=fz*+fm*;

=fm*;

returntemp;

}

FractionFraction:

:

operator+(intn)//重载分数和整数的加法运算

{

Fractiontemp;

=fm*n+fz;

=fm;

returntemp;

}

Fractionoperator-(intn,Fraction&c)

{

Fractiontemp;

=*;

=;

returntemp;

}

FractionFraction:

:

operator-(intn)//重载分数减整数的减法运算符

{

Fractiontemp;

=fz-fm*n;

=fm;

returntemp;

}

FractionFraction:

:

operator-(Fraction&c)//重载两个分数的减法运算符

{

Fractiontemp;

=fz*-fm*;

=fm*;

returntemp;

}

FractionFraction:

:

operator*(Fraction&c)//重载两个分数的乘法运算符

{

Fractiontemp;

=fz*;

=fm*;

returntemp;

}

FractionFraction:

:

operator*(intn)//重载分数与整数的乘法运算符

{

Fractiontemp;

=fz*n;

=fm;

returntemp;

}

FractionFraction:

:

operator/(Fraction&c)//重载两个分数的除法运算符

{

Fractiontemp;

=fz*;

=fm*;

returntemp;

}

FractionFraction:

:

operator/(intn)//重载分数除以整数的除法运算符

{

Fractiontemp;

=fz;

=fm*n;

returntemp;

}

Fractionoperator/(intn,Fraction&c)

{

Fractiontemp;

=n*;

=;

returntemp;

}

ostream&operator<<(ostream&output,Fraction&t)//重载输出运算符,输出分数

{

inta,b,c;

a=;

b=;

if(a==0||b==0)//当分子,或者分母为0时,输出0

cout<<"0";

if(b==1)//当分母为1时,输出分子

cout<

if(a>b&&b!

=1)//判断分数为假分数

{

c=a/b;

a=a%b;

cout<

if(a!

=0)

cout<<"又"<

}

if(a<0&&-a>b&&b!

=1)//当分数为负时,判断为假分数

{

c=-a/b;

a=-a%b;

c=-c;

cout<<'='<

if(a!

=0)

cout<<"又"<

}

if>0&&<&&!

=0&&!

=1)

//判断为真分数

output<<<<'/'<<;

if<0&&<&&!

=0&&!

=1)

//判断为真分数

output<<"("<<<<'/'<<<<")";

returnoutput;

}

istream&operator>>(istream&input,Fraction&t)//重载输入运算符,输入分数

{inta,c;

charb;

input>>a>>b>>c;

if(b=='/'&&c!

=0)

{

=a;

=c;

}

else

cout<<"错误!

输入格式错误或分母为0!

请退出重新输入!

"<

returninput;

}

//main函数

#include<>

#include"分数计算器"

intmain()

{

Integerdis;

Fractiona,b,result,real;

intm,z;

charc;//数据类型

();

while(m!

=0)

{

cout<<"请输入:

(0-3):

";

cin>>m;

if(m==1)//分数与整数的运算

{

cout<

";

cin>>a;

cout<

";

cin>>c;

cout<

";

cin>>z;

if(c=='+')

result=a+z;

if(c=='-')

result=a-z;

if(c=='*')

result=a*z;

if(c=='/')

result=a/z;

real=();

cout<<"运算式规范为:

"<

cout<

}

if(m==2)//整数与分数的运算

{

cout<

cout<

";

cin>>z;

cout<

";

cin>>c;

cout<

";

cin>>b;

if(c=='+')

result=b+z;

if(c=='-')

result=z-b;

if(c=='*')

result=b*z;

if(c=='/')

result=z/b;

real=();

cout<<"运算式规范为:

"<

cout<

}

if(m==3)//分数与分数的运算

{

cout<

cout<

";

cin>>a;

cout<

";

cin>>c;

cout<

";

cin>>b;

if(c=='+')

result=a+b;

if(c=='-')

result=a-b;

if(c=='*')

result=a*b;

if(c=='/')

result=a/b;

real=();

cout<<"运算式规范为:

"<

cout<

}

}

return0;

}

总结报告:

这是我的第一次课程设计,刚开始拿到手感觉一头雾水,不知道到底是从哪里开头去设计一个课题,虽然提供了解决方案让我可以照着步骤去做,但是没有老师的辅导,下手真不容易。

不过,在理清了程序设计的一条条思路后,画了设计层次图,然后一步一步深入,把程序完成了。

其中也遇到很多麻烦,在网上搜索解决了问题。

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

当前位置:首页 > 外语学习 > 韩语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1