zoukankan      html  css  js  c++  java
  • MathExam6317

    自己取一个大气又可爱的标题

    • 小学二年级的还没来得及写,大部分时间还是花在巩固和查阅新旧知识上了,通过看学习视频,查资料,看博客园的博客...下次完善好了交上。

    一、预估与实际

    PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
    Planning 计划
    • Estimate • 估计这个任务需要多少时间 24*60 24*60
    Development 开发
    • Analysis • 需求分析 (包括学习新技术) 6*60 6*60
    • Design Spec • 生成设计文档 - -
    • Design Review • 设计复审 - -
    • Coding Standard • 代码规范 (为目前的开发制定合适的规范) 60 60
    • Design • 具体设计 120 120
    • Coding • 具体编码 360 360
    • Code Review • 代码复审 120 120
    • Test • 测试(自我测试,修改代码,提交修改) 60 60
    Reporting 报告
    • Test Repor • 测试报告 - -
    • Size Measurement • 计算工作量 60 60
    • Postmortem & Process Improvement Plan • 事后总结, 并提出过程改进计划 60 60
    合计 2640

    二、需求分析

    我通过百度的方式了解到,小学一年级数学有如下的几个特点:

    • 1.100以内数的认识和加减法
    • 2.两位数加、减一位数
    • 3.两位数加、减整十数

    经过分析,我认为,这个程序应当:

    • 1.限制输入的题数太大
    • 2.限制两数相加的其中一位是整十数或者是个位数
    • 3.限制两数相减的减数是整十数或者是个位数

    三、设计

    1. 设计思路

    说明你如何设计这个程序

    • 这个程序就一个主函数
    • 创建文件IO流
    • 获取用户输入
    • 判断输入参数是否符合
    • 输出 ...

    2. 实现方案

    写出具体实现的步骤

    • 准备工作:先在Github上创建仓库,克隆到本地...
    • pull request提交
    • 写代码:
      创建文件IO流,后期将题目 和 题目+答案 写入out.txt文本中,再输出
      获取用户输入并用正则表达式判断用户输入的参数是否符合题意
      生成两个随机数组成加减法题目,第二个数要符合整十数或者个位数,然后写入将题目和答案文本中
      按格式输出题目 题目+答案
    • 技术关键点:判断用户输入的各种不符合参数,如:
      少于或多于一个参数
      参数为非数字
      参数数字过大或参数为负数
    • ...

    四、编码

    • main函数:
      new File 创建文本文件“out.txt”
      DataOutputStream 创建文件输出流
      Scanner 获取用户输入的参数 String 类型
      用正则表达式+while循环判断输入的参数是否少于或多于一个参数、参数为非数字、参数为负数,是的话重新输入,不是的话转换成int类型
      用while循环判断输入的参数是否在范围内,参数数字是否过大或过小,符合的话break,不符合的话重新输入
      利用random生成两个1~100的随机数,若第二个数大于10,num2%10*10,保证为整十数或个位数
      用writeUTF写入数据
      用readUTF读出数据
      ...

    1. 调试日志

    • 如何创建文件IO流
      解决:通过查阅上学期的PPT课件

    • 输入的参数过大或过小
      解决:利用while(true)和for循环判断参数范围

    • 输入的参数不是正整数、字符或小数,参数过多
      解决:通过上网查阅,利用正则表达式和while循环解决

    2. 关键代码

    请展示一段程序的关键代码,并解释代码的作用
    public static void main(String[] args) throws IOException {

    	//确定输出的文件
    	File file = new File("out.txt");
    	//创建指向文件的数据输出流
    	DataOutputStream out = new DataOutputStream(new FileOutputStream(file));
    

    // @SuppressWarnings("resource")
    // Scanner input = new Scanner(System.in);
    // System.out.println("小学一年级数学加减计算题");
    // System.out.println("请输入题目数量:");

    	//获取控制台输入题目数量n,格式为String
    

    // String args[0] = input.nextLine();

    	//循环判断:输入的是否是一个正整数
    

    // while(true) {
    // if(!(args[0].matches("d+"))) {
    // System.out.println("错误1.您的输入有误,请重新输入一个1~1000的整数:");
    // args[0] = input.nextLine();
    // }
    // else {
    // break;
    // }
    // }
    // //将n从String类型转换为int类型
    // int n = Integer.parseInt(args[0]);
    //
    // //循环判断:当n的范围属于1~1000时跳出死循环,否则重新获取控制台输入
    // while(true) {
    // if(n>0 && n<=1000) {
    // break;
    // }
    // else {
    // System.out.println("错误2.您的输入有误,请重新输入一个1~1000的整数:");
    // args[0] = input.nextLine();
    // }
    // n = Integer.parseInt(args[0]);
    // }
    //判断输入
    while(true) {
    //非正整数
    if(!(args[0].matches("d+"))) {
    return;
    }
    //范围 0~1000
    else if(Integer.parseInt(args[0])>0 && Integer.parseInt(args[0])<=1000) {
    break;
    }
    else {
    return;
    }
    }

    	//生成题目
    	for (int i = 1; i <= Integer.parseInt(args[0]); i++) {
    		//生成两个0~100的随机数
    		int num1 = (int)(Math.random()*100+1);
    		int num2 = (int)(Math.random()*100+1);
    		//生成题序和题目
    		if(num1 > num2) {//被减数大于减数 保证得数不为负数
    			//生成减法
    			if(num2 >= 10) {
    				num2 = num2/10*10;//减数取整十数
    			}				
    			System.out.println("("+ i +") " + num1 +" - "+ num2);
    			String str = ("("+ i +") " + num1 +" - "+ num2 + " = " + (num1-num2));
    			//写入数据
    			out.writeUTF(str);
    

    // System.out.println(str);
    }
    else {
    //生成加法
    if(num2 >= 10)
    num2 = num2/10*10;//取整十数
    if(num1 + num2 >100)
    num2 = num2/10;//保证两数和不大于100
    System.out.println("("+ i +") " + num1 +" + "+ num2);
    String str = ("("+ i +") " + num1 +" + "+ num2 + " = " + (num1+num2));
    //写入数据
    out.writeUTF(str);
    // System.out.println(str);
    }
    }
    out.close();

    	System.out.println();
    	
    	//创建指向文件的数据输入流
    	DataInputStream in = new DataInputStream(new FileInputStream(file));
    	//读数据   输出题目和答案
    	for (int i = 0; i < Integer.parseInt(args[0]); i++) {
    		System.out.println(in.readUTF());
    	}
    	in.close();
    	
    }//main
    

    3. 代码规范

    请给出本次实验使用的代码规范:

    • 第一条.注释必须通俗易懂,该要的要,不该要的不要
    • 第二条.代码尽量精简,不要太冗长

    并人工检查代码是否符合规范

    五、测试

    测试各种输入参数,如:0、100000、-22、9.3、asd、3 4 7...

    六、总结

    请总结过程中的教训和经验,思考

    编程思想还不够严谨,基础知识掌握的不扎实,有很多较基础的代码或语句的运用还需通过查阅PPT课件和百度,博客园是个好东西啊,有很多大佬的各种经验和建议,很多不懂的知识点也可以在博客园上找到,GitHub的使用目前还很生疏,还需慢慢掌握,应该多花时间在基础知识的掌握上,掌握好了才去更深入的学习,不能操之过急。

    • 是否使用了“软件开发的基本策略:分而治之”,是否需要重构
    • “高质量的设计、规范的编码以及有效的测试是保证软件产品质量的三个重要方面”,你是否采用了相关的手段,是否需要重构
  • 相关阅读:
    cs224n word2vec
    背包问题
    动态规划二
    动态规划
    递推求解
    Tmux 使用技巧
    LeetCode 75. Sort Colors
    LeetCode 18. 4Sum new
    LeetCode 148. Sort List
    LeetCode 147. Insertion Sort List
  • 原文地址:https://www.cnblogs.com/Lin-zy/p/9631650.html
Copyright © 2011-2022 走看看