个人作业1——四则运算题目生成程序(基于java)
项目代码:
https://git.coding.net/YJh_/11.git
题目要求:
除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:/ + / = /
运算符为 +, −, ×, ÷
并且要求能处理用户的输入,并判断对错,打分统计正确率。
要求能处理用户输入的真分数, 如 /, / 等
使用 -n 参数控制生成题目的个数,例如执行下面命令将生成10个题目
Myapp.exe -n
程序设计:
主要功能:
- 真分数的四则运算
- 按照用户输入的题数出题
- 能得出用户的正确率
设计的主要函数以及属性:
主要算法代码:
public static int commonDivisor(int x, int y) // 计算2个数的最大公约数。按绝对值计算。
{
if (x == 0 || y == 0) {
return 1;
}
int x1;
int y1; x1 = (Math.abs(x) > Math.abs(y)) ? Math.abs(x) : Math.abs(y); // 使x1>y1.
y1 = (Math.abs(x) > Math.abs(y)) ? Math.abs(y) : Math.abs(x);
int z = 1;
while (z != 0) {
z = x1 % y1;
x1 = y1;
y1 = z;
}
return x1;
}
主要四则运算方法:
Calculator add(Calculator r) { // 加法运算
int a = r.getNumerator();
int b = r.getDenominator();
int newNumerator = numerator * b + denominator * a;
int newDenominator = denominator * b; int maxCommon = commonDivisor(newNumerator, newDenominator);
Calculator result = new Calculator(newNumerator/ maxCommon, newDenominator/ maxCommon);
return result;
} Calculator sub(Calculator r) { // 减法运算
int a = r.getNumerator();
int b = r.getDenominator();
int newNumerator = numerator * b - denominator * a;
int newDenominator = denominator * b; int maxCommon = commonDivisor(newNumerator, newDenominator);
Calculator result = new Calculator(newNumerator/ maxCommon, newDenominator/ maxCommon);
return result;
} Calculator muti(Calculator r) { // 乘法运算
int a = r.getNumerator();
int b = r.getDenominator();
int newNumerator = numerator * a;
int newDenominator = denominator * b; int maxCommon = commonDivisor(newNumerator, newDenominator);
Calculator result = new Calculator(newNumerator/ maxCommon, newDenominator/ maxCommon);
return result;
} Calculator div(Calculator r) { // 除法运算
int a = r.getNumerator();
int b = r.getDenominator();
int newNumerator = numerator * b;
int newDenominator = denominator * a; int maxCommon = commonDivisor(newNumerator, newDenominator);
Calculator result = new Calculator(newNumerator/ maxCommon, newDenominator/ maxCommon);
return result;
}
程序测试:
项目总结:
由于java学得并不好,重新回去看了java笔记学习,也上网查了一些资料,包括如何提交代码到码市,装egit的时候,因为下载的eclipse是中文版的,都不大懂,安装了一直出差错,所以前前后后花费了挺多的时间了,请教了班级里的一些比较厉害的同学,做出了这个程序。从中深刻了解到,平时要多多实践,熟能生巧。纸上得来终觉浅,绝知此事要躬行。
PSP表格
PSP2.1 | Personal Software Process Stages | Time (%) Senior Student | Time (%) |
Planning | 计划 | 8 | 15 |
· Estimate | 估计这个任务需要多少时间 | 8 | 15 |
Development | 开发 | 20 | 15 |
· Analysis | 需求分析 (包括学习新技术) | 1 | 1 |
· Design Spec | 生成设计文档 | 1 | 1 |
· Design Review | 设计复审 | 0 | 0 |
· Coding Standard | 代码规范 | 10 | 7 |
· Design | 具体设计 | 8 | 9 |
· Coding | 具体编码 | 6 | 6 |
· Code Review | 代码复审 | 1 | 1 |
· Test | 测试(自我测试,修改代码,提交修改) | 3 | 3 |
Reporting | 报告 | 10 | 10 |
·Test Report | 测试报告 | 8 | 7 |
· Size Measurement | 计算工作量 | 2 | 2 |
·Postmortem & Process Improvement Plan | 并提出过程改进计划 | 0 | 0 |
个人作业1——四则运算题目生成程序(基于java)的更多相关文章
- 个人作业1——四则运算题目生成程序(java代码,基于控制台)
一.题目描述: 从<构建之法>第一章的 "程序" 例子出发,像阿超那样,花二十分钟写一个能自动生成小学四则运算题目的命令行 "软件",满足以下需求: ...
- 个人作业1——四则运算题目生成程序(基于C++)
题目描述: 从<构建之法>第一章的 "程序" 例子出发,像阿超那样,花二十分钟写一个能自动生成小学四则运算题目的命令行 "软件",满足以下需求: 1 ...
- 小学生四则运算出题软件-基于java控制台的实现
.题目描述: 1. 使用 -n 参数控制生成题目的个数,例如 Myapp.exe -n 10 -o Exercise.txt 将生成10个题目. 2. 使用 -r 参数控制题目中数值(自然数.真分数和 ...
- 【2015 软件工程 个人项目 PJ1】四则运算题目生成程序
1.开发时间预估 PSP2.1 Personal Software Process Stages Time Planning 计划 · Estimate · 估计这个任务需要多少时间 2day Dev ...
- 高级软件工程2017第3次作业——结对项目:四则运算题目生成程序(基于GUI)
Deadline:2017-10-11(周三)21:00pm (注:以下内容参考集大作业 ) 前言 想过和别人一起探索世界吗?多么希望,遇到困难时,有人能一起探讨:想要懈怠时,有人推你一把:当你专注于 ...
- 四则运算题目生成程序(基于控制台)(Bug修改)
针对上个程序中出现的bug进行修改 https://git.coding.net/cx873230936/calculator.git Bug: 1.控制台输入问题数问题 a.不能处理用户输入负数. ...
- 结对项目:四则运算题目生成器(Java)
目录 一.需求分析 二.开发计划 三.实现方案 3.1 项目结构 3.2 代码说明 3.2.1 出题功能代码 3.2.3 批卷功能代码 3.2.3 四则运算功能代码 四.效能分析 4.1 程序效能 4 ...
- 1st 四则运算题目生成程序
程序代码见此 程序展示 需求分析 需要程序能根据用户指定生成四则运算的题目,并且能让用户做题,并且最后打分统计正确率 功能设计 主要实现的功能就是: 接受用户输入以便知道要出多少道题目(-n x) 能 ...
- 四则运算题目生成(python版)
四则运算题目生成-基于控制台 项目托管在码云:飞机票 需求分析 根据控制台提示信息,输入题目生成相关配置参数 题目生成数量 数字范围 式子中是否有分数 .... 程序支持 10000 题目生成 题目与 ...
随机推荐
- suffix tree
文章出处:http://www.cnblogs.com/snowberg/archive/2011/10/21/2468588.html 3 What is a Suffix Tree Suf ...
- kill 和killall----杀死进程
1.根据进程ip查看进程名 Liunx中 通过进程名查找进程PID可以通过 pidof [进程名] 来查找. 反过来 ,通过PID查找进程名则没有相关命令.但在linux根目录中,有一个/proc的 ...
- Appium实现的技巧
截图功能: //截屏并保存至本地 File screen = driver.getScreenshotAs(OutputType.FILE); File ...
- 如何两周达到150行Java程序的能力--part 2
第一次课训练营课程打通了有C语言编程通往面向对象编程的道路,然而道路依然会曲折.下图是第二次训练营课程的训练大纲,从第二次开始,每次课首先进行测试. 针对作业1的训练要求,明确定义了13个具体的测试点 ...
- 小球自由落体动态模拟(Position Based Simulation)
在过去的几十年中,基于物理的三维物体动态模拟成为了计算机图形学的研究热点,其中最常见的方法是基于力(force-based)的模拟方法,比如弹簧质点模型,它把物体抽象成一系列质点以及连接这些质点的弹簧 ...
- POJ 3254 Corn Fields:网格密铺类 状压dp
题目链接:http://poj.org/problem?id=3254 题意: 给你一片n*m的耕地,你可以在上面种玉米.但是其中有一些地方是荒芜的,不能种植.并且种植玉米的地方不能相邻.问你在这片地 ...
- 采用SmartQQ 协议可制作聊天机器人
采用.NET CORE可运行在 Linux . Windows 和 Mac OSX 平台下. SmartQQ可以: 收发文字消息 获取好友.群.讨论组.好友分组和最近会话的列表 SmartQQ不可以: ...
- Entity Framework : The model backing the '' context has changed since the database was created
1.采用code first 做项目时,数据库已经生成,后期修改数据库表结构.再次运行时出现一下问题: Entity Framework : The model backing the '' cont ...
- [js高手之路] 设计模式系列课程 - jQuery的链式调用与灵活的构造函数
一.我们从一个简单的构造函数+原型程序开始 var G = function(){}; G.prototype = { length : 5, size : function(){ return th ...
- async的异步使用es7
关于异步的问题,一直很受关注,es7中的async...await也是针对异步问题的. 需求:我想使用promise,和async这两种方法,在一定时间之后输出一个'hellow world' 使用p ...