四则运算题目生成程序(基于控制台)
基于控制台的四则运算
代码地址
a.需求分析
- 运算符为 +, −, ×, ÷
- 除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:1/6 + 1/8 = 7/24
- 要求能处理用户输入的真分数, 如 1/2, 5/12 等
- 并且要求能处理用户的输入,并判断对错,打分统计正确率。
b.功能设计
- 基本功能 通过从控制台随机的得到整数和真分数的四则运算,然后根据控制台输入的结果判断对错,给出正确率
- 扩展功能 希望改进代码可以实现带括号的复合运算(未完成)
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
四则运算题目生成程序(基于控制台)相关推荐
- 【2017下集美大学软工1412班_助教博客】个人作业1——四则运算题目生成程序 成绩公示...
作业要求 个人作业1--四则运算题目生成程序(基于控制台) 使用 -n 参数控制生成题目的个数 使用 -r 参数控制题目中数值 生成的题目中如果存在形如e1 ÷ e2的子表达式,那么其结果应是真分数 ...
- 高级软件工程2017第2次作业—— 个人项目:四则运算题目生成程序(基于控制台)...
Deadline:2017-09-27(周三) 21:00pm (注:以下内容参考 福大软工作业 和集大个人作业 ) 0.前言 很多童鞋在本课程的目标和规划中,都表示希望能提高自己的实践能力. Pra ...
- 个人作业1——四则运算题目生成程序(基于控制台)
题目描述: 从<构建之法>第一章的 "程序" 例子出发,像阿超那样,花二十分钟写一个能自动生成小学四则运算题目的命令行 "软件",满足以下需求: 除 ...
- 四则运算题目生成程序
一.题目描述: 实践能力的提高当然就是得多动手了,那么就从第一个个人项目开始吧,用一周的时间完成一个基于控制台的四则运算程序,实现一个自动生成小学四则运算题目的命令行程序. 从<构建之法> ...
- 个人作业1 四则运算题目生成程序
项目地址:https://gitee.com/wenguixin/javascript_four_algorithms.git 1.题目描述: 生成定量小学四则运算的题目. 2.需求分析: 在现今的时 ...
- 个人作业1——四则运算题目生成程序(基于java)
需求分析 能够根据输入要求生成一定数量和数值范围的题目 对题目自动计算得到正确的答案 支持作答并检查计算结果 功能设计 随机数以及运算符产生 用产生随机数的原理,对已经定义好的运算符数组进行匹配,并加 ...
- 个人作业1——四则运算题目生成程序
需求分析: 1.控制运算表达式的题目数量,根据键盘输入数字提供对应数量表达式 2.运算符个数不能超过三个 3.能够自动生成四则运算 4.随机生成分数运算或整数运算 5.程序判断对错并给出正确答案 6. ...
- 第一次作业--四则运算题目生成程序
功能简介: 1.获取用户所要生成算术的个数 2.随机生成算式和式子的答案 3.生成算式和答案的txt文件来保存算式和答案 思路: 生成里的运算数分为三个部分,整数,如果是分数就再分为分子和分母,然后为 ...
- 购买流程图java_Java实现基于控制台的购书系统基本操作
Java开发基于控制台的购书系统 题目 开发基于控制台的购书系统.具体要求如下: (1)输出所有图书的信息:包括每本图书的图书编号.图书名称.图书单价和库存数量. (2)顾客购买图书:根据提示输入图书 ...
最新文章
- linux下源码安装rabbitMq
- python正则表达式指南_Python正则表达式指南
- mysql分片库分页查询_mysql数据库分页查询优化
- ASP.NET MVC 1.0 + spring.net 1.2.0.20288 + NHibernate 2.0.1.4000整合笔记(三)——NHibernate配置...
- 最近的日子,很惬意!
- solr-4.10.3.tgz.tgz下载
- 【英语学习】【WOTD】ephemeral 释义/词源/示例
- linux下查看mysql版本的四种方法
- Vivado设计流程(五)工程实现
- python机器学习库sklearn——SGD梯度下降法
- centos7安装eclipse
- NetApp收购Data Domain 当上冤大头?
- 【黑客】利用VBS脚本让QQ永远在线,等级速升
- ar9285网卡驱动 for linux,atheros ar9285无线网卡驱动 免费版
- python获取列表控件_PyQt学习随笔:ListView控件获取当前选择项的方法
- Windows中的工作组(Work Group)、域(Domain)、域控(DC)、活动目录(AD)介绍
- Google Chrome 浏览器安装教程
- ffmpeg合并多个MP4视频
- Pytorch深度学习笔记(四)梯度向下算法
- 木兰在线英语词典 -- 溯源拆分记单词
热门文章
- 【EWSA无线路由密码破解工具 中文特别版下载】含教程及字典(弱口令生日特殊符号等)
- 修改linux默认启动级别(包括Ubuntu)
- OOB套接字传输实例(达不到预期结果)
- 最安全的js类型检测
- 依赖包报错Invalid options object. Less Loader has been initialized using an options object that does not
- vue-cli3项目通过vue如何引入第三方js包完成登陆功能
- USB基础与重点梳理—关于USB的问题
- 前端学习(2910):vue的介绍
- [html] 说说你对Media Source Extensions(MSE)的理解,它解决了什么问题呢?
- [html] html5中的meta标签http-equiv属性有什么作用?