C++分数计算器

C++分数计算器各种分数计算类型都能计算

代码:https://mbd.pub/o/bread/ZZeZk5hx

一 目的

(1)定义一个整数类。 定义一个分数类,由整数类派生。能对分数进行各种计算和输入/输出。可进行分数的加、减、乘和除法等四则运算。

流程图:
在这里插入图片描述
流程图
在这里插入图片描述

二 需求分析

1、问题描述

实现分数的计算器功能,对分数进行四则运算和输入/输出。

2、需求以及实现功能介绍

(1)定义整数类和分数类。其中,包括构造函数、析构函数、显示函数等。

(2)输入/输出:对流提取和流插入运算符进行重载。

(3)计算功能:可进行分数的加、减、乘和除法运算。

(4)化简功能:将分数化简为最简分数。

(5)异常处理功能:分数中分母不能为零。

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

3、设计步骤

根据系统功能要求,可以将问题解决分为以下步骤:

(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;

(2)分析系统中的各个实体及它们之间的关系;

(3)根据问题描述,设计系统的类层次;

(4)完成类层次中各个类的描述;

(5)完成类中各个成员函数的定义;

(6)完成系统的应用模块;

(7)功能调试;

(8)完成系统总结报告。

三 概要设计

1、函数类设计

(1)正数类设计

class Integer      //定义一个整数类{protected:     //私有属性 int fz;    //分子 int fm;    //分母 public:            //公有属性 Integer(int a=0,int b=1):fz(a),fm(b){}~Integer(){}    //析构函数 void display();  //显示函数 };

2、整数类派生分数类的关系

3、所有函数和类的定义

Fraction(int a=0,int b=1):Integer(a,b){}//分数类成员

            friend istream & operator>>(istream &input,Fraction &); //输入重载friend ostream & operator<<(ostream &output,Fraction &); //输出重载    Fraction 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 n);//重载/运算符(整数与分数) friend Fraction operator/(int n,Fraction &c);              Fraction predigest();//约分函数void display();//输出函数 

main() //主函数

四 详细设计

设计流程图:

在这里插入图片描述

五 调试分析

1、调试方法

首先打开开发软件Visual Studio,运行程序,出现错误修改再运行,直至运行结果0 error , 0 warning 结束。接着进入程序界面,看程序能否实现所要求的各项功能,再作下一步的修改。

2、调试时出现的问题及解决方案:

(1)当多次运行程序时,屏幕被运行数据占满,显得很杂乱。解决方案:引用清屏函数,及时销掉所占内存。(2)在进行运算时要实现反复运算得有返回功能,由于我们程序分支,不能正常的调用完毕后进入下一个循环,自动返回。解决方案:用if语句,判断输入功能对于的数字,然后运行函数块。(3)还有一些小错误,比如未声明就直接使用变量、未对一些变量初始化、声明是空值函数却有返回值、缺少";"、使用getch() , system("cls")却                                              缺少相应的头文件﹐出现警告。

六 测试结果

1、主界面调试

在这里插入图片描述

2、分数与整数运算调试:
在这里插入图片描述

七 用户使用说明

按照屏幕上的提示进行操作,输入整数与分数,其次按照页面弹出来的文字进行分数与分数的四则运算或者整数与分数的四则运算。分数计算器程序的每种功能都可以用菜单选项列出,用户可以根据需要选择相应的菜单项,从而执行不同的子程序以完成相应的功能。增加运算符重载功能,使所设计的分数计算器可以进行四则运算&幂运算&逻辑运算。四则运算&幂运算可以用菜单选项列出,用户可以根据需要选择相应的运算。程序具有判断功能,当有非法的输入时(如分母等于零等),能给出提示信息并退出运算。

八 课程设计总结

在这次C++编程过程中,我基本完成了编写程序和实习要求,经过知识的考验,让我深有感触,也让我知道编程不仅需要聪明的头脑,而且也需要耐心和恒心。在程序调试过程中,出现了很多错误和本不应该出现的毛病,然在老师的指导和同学们的帮助下,我把调试过程中的错误和毛病一一更正,完成了调试和编写程序过程,在这里我对谆谆教导我的老师和鼎立相助的同学们表示感谢。在这次设计中,我清楚的知道自己的知识结构和能力水平的不足,在原有的基础之上更应该有待加强,学人之长,补己之短,也要严谨认真的对待每一个问题。同时也要加强自身的自学能力和提高自我解决问题的能力水平,在这次实习中,我清楚的知道自己的知识结构和能力水平的不足,在原有的基础之上更应该有待加强,学人之长,补己之短,也要严谨认真的对待每一个问题。同时也要加强自身的自学能力和提高自我解决问题的能力水平。在设计过程中涉及到派生类,必须从整数类中派生分数类,还得有构造函数、析构函数、显示函数等。 虽说上面这些老师都讲过,但我还没有掌握住,不得不把书拿出来看一遍。随后就是分数与分数,分数与整数,整数与分数的约分了,若果两个分数相加还得同分,约分,求出最大公约数。又上网补习了这一方面的知识,还好网上的这些知识比较容易理解,在这方面没有浪费多长时间。最后无非就是输入输出流的重载了,说真的我对这些知识懵懵懂懂,一知半解。途中这方面出了问题,也不知道哪错了,日志里就是说输入输出流里面的问题,于是又上网查了些这些问题,最后不知道改了哪个地方,程序好了,能运行了,搞得我很懵逼。既然程序能运行了,我就试着运行了,首先我运行了分数与整数的运算,没啥问题,对我来说是个很好的信号。随后我又运行了分数与分数运算,出错了结果为0,我试着查找问题所在,最后原来是赋值错了,修改完毕,运行完美,到此结束,程序结束。虽说做本次实验途中出现了许多问题,但最后也都被解决了。从中看出了自己的不足之处有很多,希望通过本次实验以后自己能汲取这些失败的教训,为以后的学习打好坚实的基础。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/209682.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CYCA少儿形体礼仪 朝阳市培训成果考核圆满落幕

少年成长从形体教育开始——从2020年美育中考落地执行开始&#xff0c;美育成为少儿教育发展的必经之路&#xff0c;助力少儿综合能力全面发展。CYCA中国文化管理协会青少年文化艺术委员会全面贯彻党的教育方针&#xff0c;促进儿童素质艺术教育并深入实施&#xff0c;从少儿形…

“Install Js dependencies failed“JS SDK安装失败【Bug已解决-鸿蒙开发】

文章目录 项目场景:问题描述原因分析:解决方案:解决措施1解决方案2:其他解决方案解决方案3:此Bug解决方案总结项目场景: 在下载JS SDK时,出现下载失败的情况,并显示“Install Js dependencies failed”。 在使用版本为DevEco Studio 3.0.0.601 Beta1进行低代码开发时…

react-flip-move结合array-move实现前端列表置顶效果

你有没有遇到这样的需求&#xff1f;点击左侧列表项&#xff0c;则像聊天会话窗口一样将被点击的列表项置顶。 如果只是单纯的置顶的话&#xff0c;直接使用array-move就可以实现了&#xff0c;但置顶效果多少有点突兀~ 先上代码&#xff0c;直接使用array-move的情况&#xf…

JAVA调优

1 JAVA虚拟机 1.1 基本组成 通常来说Java平台标准版&#xff08;Java SE&#xff09;包括 Java SE开发工具包&#xff08;JDK&#xff09;和Java SE运行时环境&#xff08;JRE&#xff09;。 JRE提供了运行以Java编程语言编写的applet和应用程序所必需的库&#xff0c;Java虚…

WPF实战项目十八(客户端):添加新增、查询、编辑功能

1、ToDoView.xmal添加引用&#xff0c;添加微软的行为类 xmlns:i"http://schemas.microsoft.com/xaml/behaviors" 2、给项目添加行为 <i:Interaction.Triggers><i:EventTrigger EventName"MouseLeftButtonUp"><i:InvokeCommandAction Com…

《opencv实用探索·九》中值滤波简单理解

1、引言 均值滤波、方框滤波、高斯滤波&#xff0c;都是线性滤波方式。由于线性滤波的结果是所有像素值的线性组合&#xff0c;因此含有噪声的像素也会被考虑进去&#xff0c;噪声不会被消除&#xff0c;而是以更柔和的方式存在。这时使用非线性滤波效果可能会更好。中值滤波是…

MySQL 插入数据报错 Incorrect string value

当在sys_dict_data表中执行插入语句&#xff1b; insert into sys_dict_data values(1, 1, 男, 0, sys_user_sex, , , Y, 0, admin, sysdate(), , null, 性别男);报错信息如下&#xff1a; insert into sys_dict_data values(1, 1, 男, …

MySQL使用函数和存储过程实现:向数据表快速插入大量测试数据

实现过程 1.创建表 CREATE TABLE user_info (id INT(11) NOT NULL AUTO_INCREMENT,name VARCHAR(20) DEFAULT NULL,age INT(3) DEFAULT NULL,pwd VARCHAR(20) DEFAULT NULL,phone_number VARCHAR(11) DEFAULT NULL,email VARCHAR(255) DEFAULT NULL,address VARCHAR(255) DEF…

鸿蒙学习之TypeScript 语法理解笔记

1、变量及数据类型 // string&#xff1a;字符串&#xff0c;单引号或双引号 let msg : string hello wprld console.log(msg:msg)// number&#xff1a;数值、整数、浮点let num :number 21console.log(num:num)//boolean&#xff1a;布尔let finished: boolean truecons…

替代AMS1117-ADJ可调输出线性稳压器(LDO)

1、概 述 PC1117-ADJ/1.2/1.5/1.8/2.5/2.85/3.3/5是最大输出电流为1A的低压降正向稳压器&#xff0c;其中 PC1117-ADJ是可调输出电压版&#xff0c;只需要两个外接电阻即可实现输出电压在1.25V~13.8V范围内的调节&#xff0c;而PC1117-1.2/1.5/1.8/2.5/2.85/3.3/5是固定输出1.…

[linux] kaggle 数据集用linux下载

你可以通过以下步骤获取Kaggle的下载链接并在Linux中进行下载&#xff1a; 首先&#xff0c;确保你已经安装了Python和Kaggle API。如果没有安装&#xff0c;你可以通过以下命令安装&#xff1a; pip install kaggle 接着&#xff0c;你需要在Kaggle网站上获取API Token。登录…

腾讯云手动下发指令到设备-用于设备调试

打开腾讯云API Explorer&#xff0c;Publish Msg https://console.cloud.tencent.com/api/explorer?Productiotcloud&Version2021-04-08&ActionPublishMessagehttps://console.cloud.tencent.com/api/explorer?Productiotcloud&Version2021-04-08&ActionPub…

iptalbes firewalld

一、IPtables介绍Iptables(以下简称Iptables)是unix/linux自带的一款优秀且开放源代码的完全自由的基于包过滤(对OSI模型的四层或者是四层以下进行过滤)的防火墙工具&#xff0c;它的功能十分强大&#xff0c;使用非常灵活&#xff0c;可以对流入和流出服务器的数据包进行很精细…

蓝桥杯-03-蓝桥杯学习计划

蓝桥杯-03-蓝桥杯学习计划 参考资料 相关文献 报了蓝桥杯比赛&#xff0c;几乎零基础&#xff0c;如何准备&#xff0c;请大牛指导一下。谢谢&#xff1f; 蓝桥杯2022各组真题汇总(完整可评测) 基础学习 C语言网 ACM竞赛入门,蓝桥杯竞赛指南 廖雪峰的官方官网 算法题单 洛谷…

深圳找工作的网站

深圳吉鹿力招聘网是一家在深圳做的比较好的招聘网站&#xff0c;提供一站式的专业人力资源服务&#xff0c;包括网络招聘、校园招聘、猎头服务、招聘外包、企业培训以及人才测评等。深圳吉鹿力招聘网在深圳的口碑相当好&#xff0c;是一个很好的选择。 深圳找工作用 吉鹿力招聘…

ssrf介绍、相关php函数及demo演示

SSRF系列 危害&#xff08;利用&#xff09; 漏洞判断 回显 延时 DNS请求 相关函数

Python的文件的读写操作【侯小啾Python基础领航计划 系列(二十七)】

Python_文件的读写操作【侯小啾Python基础领航计划 系列(二十七)】 大家好,我是博主侯小啾, 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔…

燃烧效果:Burning Shader

NEW! Added HDRP 14.0 shaders NEW! Added HDRP 10.0 shaders NEW!

硬件基础:MOS管

MOSFET概述 MOSFET由MOS(Metal Oxide Semiconductor金属氧化物半导体)FET(Field Effect Transistor场效应晶体管)这个两个缩写组成&#xff0c;即全称为金属氧化物场效应管&#xff0c;简称MOS管。 即通过给金属层(M-金属铝)的栅极和隔着氧化层(O-绝缘层SiO2)的源极施加电压&am…

Intellij idea 快速定位到文件的开头或者结尾的几种方式

方式一&#xff1a;Scroll To Top / Scroll To Bottom 首先打开Keymap设置&#xff0c;并搜索Scroll To 依次点击File->Settings->Keymap可打开该界面 对于Scroll To Top 快速滑动定位到文件顶部&#xff0c; Scroll To Bottom快速定位到文件底部 默认是没有设置快捷键的…