logo资料库

JAVA分数计算器.doc

第1页 / 共17页
第2页 / 共17页
第3页 / 共17页
第4页 / 共17页
第5页 / 共17页
第6页 / 共17页
第7页 / 共17页
第8页 / 共17页
资料共17页,剩余部分请下载后查看
C++语言实习报告 题 目: 分数计算器 指导教师: ____ 院 班 姓 学 系: 级: 名 号: 完成时间: ___
目 录 一、设计的任务要求…………………………………………………………..1 二、程序综述…………………………………………………………………..1 1.程序设计基本思路………………………………………....................1 2.主要程序功能设计……………………………………………………1 三、程序设计流程图…………………………………………………………..4 四、程序清单…………………………………………………………………..5 五、结束语……………………………………………………………………..13 六、参考文献…………………………………………………………………..15
一、设计的任务要求 (1)该程序是分数计算器,程序的一些算术功能没有完成,请编写函数,将程 序完成,要求界面提示清楚,便于操作。 (2)程序的很多逻辑功能没有完成,如大于、小于以及分数与整数的逻辑比较, 请编写函数,将程序完成,要求界面提示清楚,便于操作。 二、程序综述 随着科学的进步和科技的发展,计算机的应用可以说是家喻户晓,但是随着 计算机应用领域的不断扩大,计算机已经深入到社会和生活的各个领域,而对于我 们 21 世纪的青年来说,在社会主义发展的新阶段,更应该了解和掌握时代的脉 搏,通晓计算机的知识和识别计算机的语言,在掌握了 C++语言的概念和语法后, 能熟悉掌握面向对象程序设计的编程方法及各种编程技巧,并能够利用简洁的语 句编写出高效、完整,以解决在生活中各个方面遇到的具体问题,且为程序语言 的软件编程奠定基础,也是在 C 语言程序的基础之上,使我对计算机语言有了 更进一步的理解,和更深一步的认知。同时通过用 C++程序设计语言的应用,可 以让我们提高学生的 C++编程水平,让我们能够学有所获,灵活的运用所学知识, 来实现机器语言。 1.程序设计基本思路 若想完成程序设计首先需要定义一个分数类即 CFraction,并设置分子和分母, 以及将分数转换为对应的小数、返回分数的绝对值、分子分母的约分和置换功能, 在执行计算器功能时,需要进行四则混合运算和逻辑运算,由于是特殊的函数成 员对象之间相互运算,所以需要使用运算符重载功能。故有: 在设计四则混合运算时: const CFraction&operator+=(int num);//重载+=运算符 const CFraction&operator-=(int num); //重载-=运算符 const CFraction&operator*=(int num); //重载*=运算符 在设计逻辑运算时: CFraction operator^(const CFraction&basetra,int exp); bool operator==(const CFraction&leftfra,const CFraction&rightfra); bool operator!=(const CFraction&leftfra,const CFraction&rightfra); bool operator>=(const CFraction&leftfra,const CFraction&rightfra); ostream&operator<<(ostream&os,const CFraction&fra);//输出运算符重载 //(幂)运算符重载 //逻辑运算符 1
//输入运算符重载 istream&operator>>(istream&is,CFraction&fra); 在进行分数运算的时候,由于分子不能为 0,所以有: void CFraction::Setnume(int newnume){nNume=newnume;} void CFraction::Setdeno(int newdeno) { if(newdeno!=0) nDeno=newdeno; cout<<"错误:分母不可以为 0 !\n"<<"按任意键继续"; else { cin>>AnyChar; abort(); } } 2.主要程序功能设计: 该程序是分数计算器,所以要完成分数与分数之间的加、减、乘、除、乘幂等运 算和分数与整数之间的加、减、乘、除、乘幂等运算,以及分数与分数,分数与 整树之间的逻辑功能运算。 程序中涉及到的类的定义和主要运用函数的列举: class CFraction { private: int nNume; int nDeno; char AnyChar; public: CFration(); CFration(int nume,int deno); int Getnume()const; int Getdeno()const; double Decimal()const; //分数类定义 //分子 //定义一个字符变量 //分母 //构造函数 //构造函数 //返回分子,const 成员函数,不能修改数据成员 //返回分母 //将分数转换为对应的小数 2
//返回分数的绝对值 //设置分子 //设置分母 //约分 //分子分母置换 CFraction Absval()const; void Setnume(int newnume); void Setdeno(int newdeno); void Simplify(); void Recip(); const CFraction&operator+=(int num);//重载+=运算符 const CFraction&operator-=(int num); const CFraction&operator*=(int num); CFraction(){ nNume=0; nDeno=1;} CFraction(int nume,int deno){nNume=nume;nDeno=deno;} }; //默认构造函数(=0/1) 四则混合运算程序模块: 由于是特殊的函数成员对象之间相互运算,所以需要使用运算符重载功能,以便 用来计算数据之间的大小。 CFraction operator+(const CFraction&leftfra,const CFraction&rightfra); CFraction operator+(const CFraction&leftfra,int rightnum); CFraction operator-(const CFraction&leftfra,const CFraction&rightfra); CFraction operator-(const CFraction&leftfra,int rightnum); CFraction operator*(const CFraction&leftfra,const CFraction&rightfra); CFraction operator*(const CFraction&leftfra,int rightnum); CFraction operator^(const CFraction&basetra,int exp); //(幂)运算符重载 逻辑运算程序模块: 由于是特殊的函数成员对象之间相互运算,所以需要使用运算符重载功能,以便 用来比较数据之间的大小。 bool operator==(const CFraction&leftfra,const CFraction&rightfra); bool operator!=(const CFraction&leftfra,const CFraction&rightfra); bool operator>=(const CFraction&leftfra,const CFraction&rightfra); istream&operator>>(istream&is,CFraction&fra); istream&operator>>(istream&is,CFraction&fra); //输入运算符重载 //输入运算符重载 //逻辑运算符 3
三、程序设计流程图 开始执行 输入选择项 [1] [2] [1] 是 否 做 混 合运算 输入选择项 输入选择项 [2] 是 否 做 逻 辑 运算 [1]加法 [2]减法 [3]乘法 [1]分数与分数 [2]分数与整数 最后输出结果 是否返回上一 级[1]或[2] 是 否 退 出 [0] 结束 4
四、程序清单 //定义一个字符变量 #include #include #include #include using namespace std; class CFraction { private: int nNume; int nDeno; char AnyChar; public: CFration(); CFration(int nume,int deno); int Getnume()const; int Getdeno()const; double Decimal()const; CFraction Absval()const; void Setnume(int newnume); void Setdeno(int newdeno); void Simplify(); void Recip(); const CFraction&operator+=(int num);//重载+=运算符 const CFraction&operator-=(int num); const CFraction&operator*=(int num); CFraction(){ nNume=0; nDeno=1;} CFraction(int nume,int deno){nNume=nume;nDeno=deno;} }; //默认构造函数(=0/1) //分数类定义 //分子 //分母 //构造函数 //构造函数 //返回分子,const 成员函数,不能修改数据成员 //返回分母 //将分数转换为对应的小数 //返回分数的绝对值 //设置分子 //设置分母 //约分 //分子分母置换 5
//求 x、y 的最大公因子 int GCF(int x,int y); CFraction operator+(const CFraction&leftfra,const CFraction&rightfra); CFraction operator+(const CFraction&leftfra,int rightnum); CFraction operator-(const CFraction&leftfra,const CFraction&rightfra); CFraction operator-(const CFraction&leftfra,int rightnum); CFraction operator*(const CFraction&leftfra,const CFraction&rightfra); CFraction operator*(const CFraction&leftfra,int rightnum); CFraction operator^(const CFraction&basetra,int exp); bool operator==(const CFraction&leftfra,const CFraction&rightfra); bool operator!=(const CFraction&leftfra,const CFraction&rightfra); bool operator>=(const CFraction&leftfra,const CFraction&rightfra); ostream&operator<<(ostream&os,const CFraction&fra);//输出运算符重载 istream&operator>>(istream&is,CFraction&fra); //(幂)运算符重载 //逻辑运算符 //输入运算符重载 CFraction returnValue(abs(nNume),abs(nDeno)); int CFraction::Getnume()const{return nNume;} int CFraction::Getdeno()const{return nDeno;} double CFraction::Decimal()const{return double(nNume)/double(nDeno);} CFraction CFraction::Absval()const { return returnValue; } void CFraction::Setnume(int newnume){nNume=newnume;} void CFraction::Setdeno(int newdeno) { if(newdeno!=0) nDeno=newdeno; cout<<"错误:分母不可以为 0 !\n"<<"按任意键继续"; else { cin>>AnyChar; abort(); } 6
分享到:
收藏