• 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道加减的题目

    六、总结

    本次代码的难度不算太难,只要想清楚其中的逻辑结构即可,但是题目中的错误处理确实是生活中会出现的问题,比如输入了过多的题数,或者输入了不是数字,则会使程序崩溃。所以在编程前一定要写好需求,在编程的过程中要随手记下出现的问题,及时解决,帮助文档是个好帮手,不懂的问题要及时去查。

  • 相关阅读:
    EF Code First一对一、一对多、多对多关联关系配置
    ASP.NET MVC 3.0 HTML辅助方法
    CSS常用命名
    ExtJS3.4.0系列:ExtJS下载使用
    在HTTP响应标题中隐藏ASP.NET MVC的版本
    ASP.NET MVC动作过滤器
    Sql Server系列:使用TransactSQL编程
    ExtJS3.4.0系列:Ext.Panel
    Sql Server系列:Select检索数据
    ASP.NET MVC资源文件多语言实现方式
  • 原文地址:https://www.cnblogs.com/L960416/p/9631011.html
Copyright © 2020-2023  润新知