MathExam第二次作业
第二次作业:MathExam
一、预估与实际
| PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) | 
|---|---|---|---|
| Planning | 计划 | 20 | 30 | 
| • Estimate | • 估计这个任务需要多少时间 | 240 | |
| Development | 开发 | 120 | 240 | 
| • Analysis | • 需求分析 (包括学习新技术) | 60 | 60 | 
| • Design Spec | • 生成设计文档 | 60 | 60 | 
| • Design Review | • 设计复审 | 10 | 10 | 
| • Coding Standard | • 代码规范 (为目前的开发制定合适的规范) | 10 | 10 | 
| • Design | • 具体设计 | 20 | 20 | 
| • Coding | • 具体编码 | 60 | 120 | 
| • Code Review | • 代码复审 | 40 | 60 | 
| • Test | • 测试(自我测试,修改代码,提交修改) | 15 | 20 | 
| Reporting | 报告 | 60 | 80 | 
| • Test Repor | • 测试报告 | 20 | 20 | 
| • Size Measurement | • 计算工作量 | 10 | 10 | 
| • Postmortem & Process Improvement Plan | • 事后总结, 并提出过程改进计划 | 20 | 20 | 
| 合计 | 760 | 
二、需求分析
我通过上网查询的方式了解到,小学一年级数学有如下的几个特点:
- 循序渐进
- 要注重题目的简易程度,且必须让孩子在学习的过程中既不能过于简单,且还要培养好孩子的学习的兴趣
经过分析,我认为,这个程序应当:
- 使用的数字不大于100
- 加法的计算多考验孩子的进位,且不能出现孩子一年级还不能接受的:比如一个比较小的数字减去另一个比较大的数字,答案出现了一个孩子没有见过的负数。因为在小学一年级大部分的老师会给孩子们讲:我有5个苹果,分给了你3个,还剩几个?这是比较传统的减法的引入,如果有负数的出现,不仅不能让完整孩子做题,更不利于教师的教学
- 对于小学二年纪的学生来说,乘除法还比较局限于乘法口诀表,所以乘法方面最好不要出现两位数乘以两位数,有可能出现超纲的情况。
三、设计
1. 设计思路
- 本程序的基本的要求就是小学的加减乘除的四则运算,所以题目的主体应该是判断使用者的年级,从而判断使用者做题的难易程度,若为一年级,则做加减法,若为二年级,则出加减乘除
2. 实现方案
- 准备工作:先在Github上创建仓库,克隆到本地...
- 技术关键点:random随机数值的设置必须要符合实际,本次的题目和答案全部保存在question和answer的两个数组中,且不能用System.out,println的输出方法输出了。import java.io.File能实现文件的操作,实参和形参之间的传送数据。
四、编码
第一个代码中设置一个值,从而可以判断加法还是减法,循环输出随机的题目。
1. 调试日志
try {
System.setOut(new PrintStream(new BufferedOutputStream(new FileOutputStream("out.txt")), true));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
这一段代码是上学期Java高级开发学会的
2. 关键代码
public class MathExam2{
static int n;
static int grade;
public static boolean test(String A, String B) {
	grade=Integer.parseInt(B);
	n=Integer.parseInt(A);
	if(n>100) {
		System.out.println("输入的题数过多,请输入100以下的数字");
		return false;
	}
	return true;
}
public static void main(String[] args) {
	Random ran = new Random();
	int a;
	if(test(args[0], args[1])) {
		String[] question = new String[n+1];
		String[] answer = new String[n+1];
		File file = new File ("out.txt");
		try {
			System.setOut(new PrintStream(new BufferedOutputStream(new FileOutputStream("out.txt")), true));
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
这段代码实现了实参和形参的传递,将问题和答案保存在String字符串中,方便输出。同时防止输入的题数过多,造成不必要的浪费。
3. 代码规范
- 字母的大小写区分
- 不可抛出异常
- 命名不可使用拼音,严格使用英文,方便阅读者的阅读
五、测试
第一组:10 2
输出结果:输出了10道加减乘除的题目
第二组:200 1
输出结果:输入的题数过多,请输入100以下的数字
第三组: 37 1
输出结果:输出了37道加减的题目
六、总结
本次代码的难度不算太难,只要想清楚其中的逻辑结构即可,但是题目中的错误处理确实是生活中会出现的问题,比如输入了过多的题数,或者输入了不是数字,则会使程序崩溃。所以在编程前一定要写好需求,在编程的过程中要随手记下出现的问题,及时解决,帮助文档是个好帮手,不懂的问题要及时去查。
MathExam第二次作业的更多相关文章
- MathExam第二次作业(升级版)
		MathExamLv2——林华伟 211506319 陈珍 211406263 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实 ... 
- 耿丹CS16-2班第二次作业汇总
		-- Deadline: 2016-09-28 12:00 -- 作业内容:http://www.cnblogs.com/huangjunlian/p/5891726.html -- 第二次作业总结: ... 
- JAVA第二次作业展示与学习心得
		JAVA第二次作业展示与学习心得 在这一次作业中,我学习了复选框,密码框两种新的组件,并通过一个邮箱登录界面将两种组件运用了起来.具体的使用方法和其他得组件并没有什么大的不同. 另外我通过查阅资料使用 ... 
- 20169212《Linux内核原理与分析》第二周作业
		<Linux内核原理与分析>第二周作业 这一周学习了MOOCLinux内核分析的第一讲,计算机是如何工作的?由于本科对相关知识的不熟悉,所以感觉有的知识理解起来了有一定的难度,不过多查查资 ... 
- 软件工程(QLGY2015)第二次作业点评(随机挑选20组点评)
		相关博文目录: 第一次作业点评 第二次作业点评 第三次作业点评 说明:随机挑选20组点评,大家可以看看blog名字,github项目名字,看看那种是更好的,可以学习,每个小组都会反应出一些问题,希望能 ... 
- 程序设计第二次作业<1>
		面向对象程序设计第二次作业<1> Github 链接:https://github.com/Wasdns/object-oriented 题目: <1>第一次尝试 我立马认识到 ... 
- homework-02,第二次作业——寻找矩阵最大子序列和
		经过漫漫漫~~~~~~~~~~~~~~长的编译和调试,第二次作业终于告一段落了 先放出源码,思路后面慢慢道来 #include<stdio.h> #include<stdlib.h& ... 
- 20169210《Linux内核原理与分析》第二周作业
		<Linux内核原理与分析>第二周作业 本周作业分为两部分:第一部分为观看学习视频并完成实验楼实验一:第二部分为看<Linux内核设计与实现>1.2.18章并安装配置内核. 第 ... 
- SQL 第二章 作业
		/*第二章 作业*/ create table S ( sno char(2) NOT NULL UNIQUE, sname char(3), city char(2) ); alter table ... 
随机推荐
- win7上代码连接hadoop出现错误 :org.apache.hadoop.util.NativeCrc32.nativeComputeChunkedSumsByteArray(II[BI[BIILjava/lang/String;JZ)V
			在idea和eclipse中调试hadoop中hdfs文件,之前好好的,结果突然就出现java.lang.UnsatisfiedLinkError: org.apache.hadoop.util.Na ... 
- 小米路由器设置端口转发远程登录WEB管理页及安装MT工具箱
			1. 将小米路由器ROM升级到开发版 这一点是必须的,如果是稳定版是不行的 2. 获取高级管理权限 再次确认当前使用的是开发版ROM 到这个网址http://d.miwifi.com/rom/ssh ... 
- Python3抓取javascript生成的html网页
			用urllib等抓取网页,只能读取网页的静态源文件,而抓不到由javascript生成的内容. 究其原因,是因为urllib是瞬时抓取,它不会等javascript的加载延迟,所以页面中由javasc ... 
- let和var定义变量的区别
			使用 let 语句声明一个变量,该变量的范围限于声明它的块中. 可以在声明变量时为变量赋值,也可以稍后在脚本中给变量赋值. 使用 let 声明的变量,在声明前无法使用,否则将会导致错误. 如果未在 ... 
- PCA人脸识别的python实现
			这几天看了看PCA及其人脸识别的流程,并在网络上搜相应的python代码,有,但代码质量不好,于是自己就重新写了下,对于att_faces数据集的识别率能达到92.5%~98.0%(40种类型,每种随 ... 
- Java中getConstructors()、getDeclaredConstructors()、getConstructor(Class<?>... parameterType)、getDeclaredConstructor(Class<?>... parameterType)的区别
			区别一 在方法名末尾有s的是返回一个数组,没有s的是返回单个构造器. 区别二 在方法名中加Declared的是返回所有的构造方法,不加Declared的只返回public访问权限的构造器 区别三 有参 ... 
- CentOS7.4 部署 Django + Python3 + Apache + Mod_wsgi
			安装环境 Remote: CentOS 7.4 x64 (django.example.com) Python: Python3.6.5 Apache: Apache 2.4.6 Mod_wsgi: ... 
- 手把手教你测微信小程序
			WeTest 导读 在小程序持续大量爆发的形势下,现在已经成为了各平台竞争的战略布局重点.至今年2月,月活超500万的微信小程序已经达到237个,其中个人开发占比高达2成.因小程序的开发门槛低.传播快 ... 
- React——条件渲染
			在React中,你可以创建各种不同的组件,然后根据应用的状态渲染出它们其中的一般部分. 一.用变量存储元素 可以将元素保存到一个变量中,通过为变量赋不同的值去渲染不同的元素 function Logi ... 
- 通过Jmeter对Dubbo接口进行接口及性能测试
			dubbo接口/性能测试 dubbo简介 zookeeper简介.安装及配置 dubbo服务端demo dubbo客户端调用 jmeter工程改造及接口调用 读取jmeter参数用于dubbo性能测试 ... 
