基于控制台的四则运算


代码地址


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.1 Personal Software Process Stages Estimated time(min) actual time(min)
Planning 计划 12 10
· Estimate 估计这个任务需要多少时间 120 115
Development 开发 80 90
· Analysis 需求分析 (包括学习新技术) 10 10
· Design Spec 生成设计文档 7 10
· Design Review 设计复审 6 5
· Coding Standard 代码规范 4 5
· Design 具体设计 30 40
· Coding 具体编码 35 40
· Code Review 代码复审 10 15
· Test 测试(自我测试,修改代码,提交修改) 15 15
Reporting 报告 20 25
· 测试报告 5 5
· 计算工作量 4 7
· 并提出过程改进计划 4 4

总结


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

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

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

  1. 【2017下集美大学软工1412班_助教博客】个人作业1——四则运算题目生成程序 成绩公示...

    作业要求 个人作业1--四则运算题目生成程序(基于控制台) 使用 -n 参数控制生成题目的个数 使用 -r 参数控制题目中数值 生成的题目中如果存在形如e1 ÷ e2的子表达式,那么其结果应是真分数 ...

  2. 高级软件工程2017第2次作业—— 个人项目:四则运算题目生成程序(基于控制台)...

    Deadline:2017-09-27(周三) 21:00pm (注:以下内容参考 福大软工作业 和集大个人作业 ) 0.前言 很多童鞋在本课程的目标和规划中,都表示希望能提高自己的实践能力. Pra ...

  3. 个人作业1——四则运算题目生成程序(基于控制台)

    题目描述: 从<构建之法>第一章的 "程序" 例子出发,像阿超那样,花二十分钟写一个能自动生成小学四则运算题目的命令行 "软件",满足以下需求: 除 ...

  4. 四则运算题目生成程序

    一.题目描述: 实践能力的提高当然就是得多动手了,那么就从第一个个人项目开始吧,用一周的时间完成一个基于控制台的四则运算程序,实现一个自动生成小学四则运算题目的命令行程序. 从<构建之法> ...

  5. 个人作业1 四则运算题目生成程序

    项目地址:https://gitee.com/wenguixin/javascript_four_algorithms.git 1.题目描述: 生成定量小学四则运算的题目. 2.需求分析: 在现今的时 ...

  6. 个人作业1——四则运算题目生成程序(基于java)

    需求分析 能够根据输入要求生成一定数量和数值范围的题目 对题目自动计算得到正确的答案 支持作答并检查计算结果 功能设计 随机数以及运算符产生 用产生随机数的原理,对已经定义好的运算符数组进行匹配,并加 ...

  7. 个人作业1——四则运算题目生成程序

    需求分析: 1.控制运算表达式的题目数量,根据键盘输入数字提供对应数量表达式 2.运算符个数不能超过三个 3.能够自动生成四则运算 4.随机生成分数运算或整数运算 5.程序判断对错并给出正确答案 6. ...

  8. 第一次作业--四则运算题目生成程序

    功能简介: 1.获取用户所要生成算术的个数 2.随机生成算式和式子的答案 3.生成算式和答案的txt文件来保存算式和答案 思路: 生成里的运算数分为三个部分,整数,如果是分数就再分为分子和分母,然后为 ...

  9. 购买流程图java_Java实现基于控制台的购书系统基本操作

    Java开发基于控制台的购书系统 题目 开发基于控制台的购书系统.具体要求如下: (1)输出所有图书的信息:包括每本图书的图书编号.图书名称.图书单价和库存数量. (2)顾客购买图书:根据提示输入图书 ...

最新文章

  1. linux下源码安装rabbitMq
  2. python正则表达式指南_Python正则表达式指南
  3. mysql分片库分页查询_mysql数据库分页查询优化
  4. ASP.NET MVC 1.0 + spring.net 1.2.0.20288 + NHibernate 2.0.1.4000整合笔记(三)——NHibernate配置...
  5. 最近的日子,很惬意!
  6. solr-4.10.3.tgz.tgz下载
  7. 【英语学习】【WOTD】ephemeral 释义/词源/示例
  8. linux下查看mysql版本的四种方法
  9. Vivado设计流程(五)工程实现
  10. python机器学习库sklearn——SGD梯度下降法
  11. centos7安装eclipse
  12. NetApp收购Data Domain 当上冤大头?
  13. 【黑客】利用VBS脚本让QQ永远在线,等级速升
  14. ar9285网卡驱动 for linux,atheros ar9285无线网卡驱动 免费版
  15. python获取列表控件_PyQt学习随笔:ListView控件获取当前选择项的方法
  16. Windows中的工作组(Work Group)、域(Domain)、域控(DC)、活动目录(AD)介绍
  17. Google Chrome 浏览器安装教程
  18. ffmpeg合并多个MP4视频
  19. Pytorch深度学习笔记(四)梯度向下算法
  20. 木兰在线英语词典 -- 溯源拆分记单词

热门文章

  1. 【EWSA无线路由密码破解工具 中文特别版下载】含教程及字典(弱口令生日特殊符号等)
  2. 修改linux默认启动级别(包括Ubuntu)
  3. OOB套接字传输实例(达不到预期结果)
  4. 最安全的js类型检测
  5. 依赖包报错Invalid options object. Less Loader has been initialized using an options object that does not
  6. vue-cli3项目通过vue如何引入第三方js包完成登陆功能
  7. USB基础与重点梳理—关于USB的问题
  8. 前端学习(2910):vue的介绍
  9. [html] 说说你对Media Source Extensions(MSE)的理解,它解决了什么问题呢?
  10. [html] html5中的meta标签http-equiv属性有什么作用?