四则运算题目生成程序(基于控制台)

基于控制台的四则运算

 


 

代码地址


a.需求分析

    1. 运算符为 +, −, ×, ÷
    2. 除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:1/6 + 1/8 = 7/24
    3. 要求能处理用户输入的真分数, 如 1/2, 5/12 等
    4. 并且要求能处理用户的输入,并判断对错,打分统计正确率。

          b.功能设计

    1. 基本功能   通过从控制台随机的得到整数和真分数的四则运算,然后根据控制台输入的结果判断对错,给出正确率
    2. 扩展功能   希望改进代码可以实现带括号的复合运算(未完成)

 

        c.设计实现 

         一个测试类class Test 用来检测程序的正常运行

          一个整数类class zhengshu  里面有一个方法jisuan()用来实现整数的四则运算

          一个分数类class Fracetion 有Numerator,Denominator,fraction用来表示分子,分母和分数,然后包含了getter()方法和构建分数的方法creatfraction()

          一个分数的方法类class Mathod 里面有三个分数四则运算时要用到的方法 求最大公约数getGCD(int i,int j)约分重构分数           Reduction(int i,int j)和判断正错compare(String a, String b)

          一个分数的四则运算法则类class Calculate 里面包含四个方法,分别是加减乘除

          一个分数计算类class fenshu 里面包含一个计算方法jisuan()用来随机选择计算符号,然后判断正误

          关系:测试类只要调用class zhenghsu和class fenshu中的jisuan()方法即可测试;class Calculate需要import Fraction类和Mathod,Fraction类也import了Mathod类


 

        d.代码说明

      • 真分数的生成
 1 public String creatfraction() //创建分数并且化为最简
 2         {
 3             int i, j;
 4             Numerator = 1+(int) (Math.random() * 10);
 5             Denominator = 2+(int) (Math.random() * 10);
 6             i = Numerator;
 7             j = Denominator;
 8             j = Mathod.getGCD(i, j);
 9             Numerator = Numerator / j;
10             Denominator = Denominator / j;
11             fraction = Mathod.Reduction(Numerator, Denominator);
12             return fraction;
13 
14         }
      • Mathod类中的方法
 1 static int getGCD(int i, int j) //求最大公约数 辗转相除法。
 2     {
 3         int temp;
 4         while (i % j != 0) {
 5             temp = i % j;
 6             i = j;
 7             j = temp;
 8         }
 9         return j;
10     }
11     
12     static String Reduction(int i, int j) //约分,化为最简。
13     {
14         String k;
15         if (j == 1) {
16             k = i + "";
17         } else {
18             k = (i) + "" + "/" + (j) + "";
19         }
20         return k;
21     }
22     
23     static boolean compare(String a, String b) //比较输入值与答案,返回值为boolean类型。
24     {
25         if (a.equals(b))
26             {System.out.println("回答正确");
27             return true;}
28         else
29             {
30             System.out.println("回答错误,正确答案是" + b);
31             return false;
32             }
33     }
      • 真分数的四则运算(以加法为例,其余雷同)
 1 public String add(Fraction a, Fraction b) //加法 参考分数间加减乘除 用四个变量表示两个分数的分子分母
 2     {
 3         int i, j, k, s, m, n, p;
 4         i = a.getNumerator();// 分子
 5         j = a.getDenominator();// 分母
 6         k = b.getNumerator();
 7         s = b.getDenominator();
 8         m = i * s + j * k;
 9         n = s * j;
10         p = Mathod.getGCD(m, n);
11         return Mathod.Reduction(m / p, n / p);
12 
13     }

        e.测试运行

 


        PSP


 

PSP2.1Personal Software Process StagesEstimated time(min)actual time(min)
Planning计划1210
· Estimate估计这个任务需要多少时间120115
Development开发8090
· Analysis需求分析 (包括学习新技术)1010
· Design Spec生成设计文档710
· Design Review设计复审65
· Coding Standard代码规范45
· Design具体设计3040
· Coding具体编码3540
· Code Review代码复审1015
· Test测试(自我测试,修改代码,提交修改)1515
Reporting报告2025
·测试报告55
·计算工作量47
·并提出过程改进计划44

         总结


 

     在做作业的时候,体会到了逻辑清晰是有多重要,不管编程能力怎么样,首先看见一道题目时不要急着就去做,想想如何做怎么做才是最重要的,如果逻辑清晰知道需要建几个类,每个类包含什么,每个类之间的关系是什么,就算个别方法不会写,大体的模子也能画出来,最后要就个别函数即可。下次我做作业的时候应该会多花时间在逻辑分析,流程图上。

 

 

 

 

转载于:https://www.cnblogs.com/sy0717/p/6512108.html

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

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

相关文章

前端学习(2306):react之组件使用

Home.js import React, {Component} from react;class Home extends Component {render() {return (<div><div>你好我是组件{parseInt(Math.random()*10)}</div><div>你好我是组件2{parseInt(Math.random()*10)}</div></div>);} }export …

前端学习(2306):react之组件使用之图片使用

Home.js import React, {Component,Fragment} from react; import ImgA from "../assset/index.jpg" class Home extends Component {render() {return (<Fragment><div>你好我是组件{parseInt(Math.random()*10)}</div><div>你好我是组件2…

php背景图添加字,怎样给视频后面加背景图 视频加背景图片并添加一行广告文字...

有不少广告小视频中&#xff0c;视频画面是一张海报背景图片&#xff0c;图片上显示一个小视频播放&#xff0c;并且在画面上还有显示一行广告字幕。这样的宣传视频制作其实蛮简单的&#xff0c;怎样给视频后面加背景图片的方法倒是挺多&#xff0c;要给视频加背景图片的同时还…

前端学习(2307):react之props和state

Home,js import React, {Component} from react; import News from "./News"; class Home extends Component {render() {return (<div>home<News name"你好"/></div>);} }export default Home; news,js import React, {Component} f…

前端学习(2308):react之子传父

Home,js import React, {Component} from react; import News from "./News"; class Home extends Component {constructor(props) {super(props);this.state{text:我是默认值}}dataFun(text)>{console.log(text)this.setState({text})}render() {return (<di…

linux 密码复杂度,用PAM 搞定Linux 平台密码复杂度问题

用PAM 搞定Linux 平台密码复杂度问题星期五, 十二月 27, 20130作为一个PAM的一个模块&#xff0c;pam_cracklib可以被用来检查密码是否违反密码字典&#xff0c;这个验证模块可以通过插入password堆栈&#xff0c;为特殊的应用提供可插入式密码强度性检测&#xff0c;能够很好地…

前端学习(2309):react之同级传值

Home,js import React, {Component} from react; import News from "./News"; class Home extends Component {constructor(props) {super(props);this.state{text:我是默认值}}dataFun(text)>{console.log(text)this.setState({text})}render() {return (<di…

前端学习(2310):数据请求和json-server

app.js import React from react;import ./App.css; import Home from ./components/Home.js import World from "./components/World"; function App() {return (<div className"App">你好<World/></div>); }export default App;worl…

对Linux课程内容的建议,Linux课程笔记 Day01 课程内容总结(示例代码)

系统安装&#xff1a;引导项简单介绍&#xff1a;在“boot:”提示后&#xff1a;直接回车(Enter)——图形界面安装模式linux text——字符界面安装模式linux askmethod——提示用户选择安装方法(例如&#xff1a;nfs、ftp、http远程安装)linux rescue——救援模式&#xff0c;…

前端学习(2311):react中处理跨域问题

proxy:{"/api":{target:"http://www.weather.com.cn/data/cityinfo/101320101.html",changeOrigin:true,"pathRewrite":{"^/api":"/"}}}

Dev Express Report 学习总结(五)在分组中使用聚集表达式AggregateExpression

聚集表达式AggregateExpression主要包括几种&#xff1a;Avg(),Count(),Exists(),Max(),Min(),Single()和Sum()。其中对于Sum()&#xff0c;在我看来主要有两种用法&#xff0c;一种是Group时的合计&#xff0c;另一种是整个页面某个列的值的合计。但是对于Count(),由于以前对D…

linux6.8安装图形桌面,图形/文本界面安装CentOS 6.8系统详解

2. anaconda的工作过程前面提到&#xff0c;使用anaconda安装CentOS系统有两种方式&#xff0c;默认使用的是图形界面(GUI)安装&#xff0c;要求主机内存至少有512MB内存。而使用基于文本配置接口(TUI)来安装CentOS则需要显示指定&#xff0c;指定方式可以是在菜单界面按ESC键&…

从零开始学JavaWeb

引言 记得上学时,有位导师说过一句很经典的话:"编程语言只是工具,最重要的是掌握思想。" 笔者一直主要从事.net领域的开发工作。随着工作阅历的丰富&#xff0c;越来越深刻的理解当年导师说的那句话的意义。 "他山之石,可以攻玉",相互借鉴,然后为我所用,无…

VS2010 C++下编译调试MongoDB源码 r2.2.2

编译下载mongodb-src-r2.2.2用VS2010打开mongodb-src-r2.2.2\src\mongo\db\db_10.sln编译mongod项目调试先创建数据库文件夹"D:\mongodb\db"设置调试参数--dbpathD:\mongodb\dbF5运行调试

linux如何记录测试时长,如何测试Linux命令运行时间?

如何测试Linux命令运行时间&#xff1f;良许在工作中&#xff0c;写过一个 Shell 脚本&#xff0c;这个脚本可以从 4 个 NTP 服务器轮流获取时间&#xff0c;然后将最可靠的时间设置为系统时间。因为我们对于时间的要求比较高&#xff0c;需要在短时间内就获取到正确的时间。所…

软件工程概论个人作业02(四则运算2)

1、设计思想&#xff1a; 在四则运算1的基础上&#xff0c;多加了几个要求&#xff0c;是否有乘除法可以通过不同的选择然随机生成符号的函数有时候生成两个数字对应加减&#xff0c;有时候生成四个数对应加减乘除&#xff1b;括号没有实现&#xff1b;数值范围通过一个函数实现…

linux的yum详解,Linux之YUM 详解

一、yum是什么yum Yellow dog Updater, Modified主要功能是更方便的添加/删除/更新RPM包.它能自动解决包的倚赖性问题.它能便于管理大量系统的更新问题二、yum 的运用格式及常用参数yum [option] "包名"有些记不住的包名 可以使用通配符* 来一次安装多个前端一直的软…