第二次作业: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第二次作业的更多相关文章

  1. MathExam第二次作业(升级版)

    MathExamLv2——林华伟 211506319 陈珍 211406263   一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实 ...

  2. 耿丹CS16-2班第二次作业汇总

    -- Deadline: 2016-09-28 12:00 -- 作业内容:http://www.cnblogs.com/huangjunlian/p/5891726.html -- 第二次作业总结: ...

  3. JAVA第二次作业展示与学习心得

    JAVA第二次作业展示与学习心得 在这一次作业中,我学习了复选框,密码框两种新的组件,并通过一个邮箱登录界面将两种组件运用了起来.具体的使用方法和其他得组件并没有什么大的不同. 另外我通过查阅资料使用 ...

  4. 20169212《Linux内核原理与分析》第二周作业

    <Linux内核原理与分析>第二周作业 这一周学习了MOOCLinux内核分析的第一讲,计算机是如何工作的?由于本科对相关知识的不熟悉,所以感觉有的知识理解起来了有一定的难度,不过多查查资 ...

  5. 软件工程(QLGY2015)第二次作业点评(随机挑选20组点评)

    相关博文目录: 第一次作业点评 第二次作业点评 第三次作业点评 说明:随机挑选20组点评,大家可以看看blog名字,github项目名字,看看那种是更好的,可以学习,每个小组都会反应出一些问题,希望能 ...

  6. 程序设计第二次作业<1>

    面向对象程序设计第二次作业<1> Github 链接:https://github.com/Wasdns/object-oriented 题目: <1>第一次尝试 我立马认识到 ...

  7. homework-02,第二次作业——寻找矩阵最大子序列和

    经过漫漫漫~~~~~~~~~~~~~~长的编译和调试,第二次作业终于告一段落了 先放出源码,思路后面慢慢道来 #include<stdio.h> #include<stdlib.h& ...

  8. 20169210《Linux内核原理与分析》第二周作业

    <Linux内核原理与分析>第二周作业 本周作业分为两部分:第一部分为观看学习视频并完成实验楼实验一:第二部分为看<Linux内核设计与实现>1.2.18章并安装配置内核. 第 ...

  9. SQL 第二章 作业

    /*第二章 作业*/ create table S ( sno char(2) NOT NULL UNIQUE, sname char(3), city char(2) ); alter table ...

随机推荐

  1. OpenGL 混合功能

    一.概念:简言之,即在颜色缓存区和深度缓存区中,新旧颜色的覆盖和替换问题:已经存在于缓存区的为目标颜色,即将进入缓存区的为源颜色: 二.应用场景:在不透明的图形前绘制一个透明的图形: 三.主要代码实现 ...

  2. 关于IRAM和IFLASH启动模式,重映射remap 整理中

    工程基于NXP LPC2468 1 为什么试用IRAM MODE 2 设置Program algorithm 编程算法的作用是什么 3 IRAM和FLASH 模式下IROM和IRAM的地址为什么不一样 ...

  3. msserver的update or insert语句

    方案1:SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; BEGIN TRANSACTION; IF EXISTS (SELECT 1 FROM dbo.ta ...

  4. 牛客练习赛31 D 最小相似度

    最小相似度 链接 分析: 转化为求1的个数,这样两个串不同的位置的个数就是1的个数.那么对于一个二进制串x,它的贡献就是max{x与s[i]异或后0的个数}=>max{m-x与s[i]异或后1的 ...

  5. vivado与modelsim的联合仿真

    转载: 一.在vivado中设置modelsim(即第三方仿真工具)的安装路径.在vivado菜单中选择“Tools”——>“Options...”,选择“General”选项卡,将滚动条拉倒最 ...

  6. idea tomcat热部署 Error running 'Tomcat 7': Unable to open debugger port (127.0.0.1:3622): java.net.SocketExcepti

    2018/5/6  经过测试,发现只需要修改 http port 为 8081即可,JMX port 不用改 默认是 1099 今天在进 tomcat 的 debug 模式时报了此异常, tomcat ...

  7. JAVA基础 XML生成与解析和String包装类下 .replace方法的使用以及char和字符序列的使用场景

    ptLink0.setText(arbu.getPtLink().replace("&","&")); // 如果像 '&','& ...

  8. 【SoDiaoEditor电子病历编辑器更新啦】--谨以献给那些还在医疗行业奋斗的小伙伴们

    为什么推荐的人这么少~~~~   更新(2017-4-18): 截止目前已知的已有2个三甲医院在使用该编辑器,容我内心澎湃以下,O(∩_∩)O哈哈~   先放github地址:https://gith ...

  9. Web层框架对网站中所有异常的统一处理

    一个网站的异常信息作为专业的人士,是不会轻易暴露给用户的,因为那样狠不安全,显得你漏是一回事,只要还是考虑到网站的数据安全问题,下面给大家分享一下一些常见的web层框架是如何处理统一的异常. 之前都是 ...

  10. 如何创建XHTML表单

    首先奉上本菜曾经的作业——一张模仿智联招聘中的注册表单.虽然没有加样式显得很难看,但表单的基本要素已经具备了. 接下来进入正文,开始介绍各表单元素 form标签: 在创建表单时,第一步就是form标签 ...