个人作业1

PSP2.1个人软件过程实践
本文详细记录了一次个人软件过程(PSP2.1)实践经历,包括任务预估与实际耗时对比、需求分析、设计思路、编码实现、测试验证等多个阶段,并分享了开发过程中遇到的问题及解决办法。

没有大气又可爱的标题

一、预估与实际

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

二、需求分析

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

-运算范围在100以内
-运算符号只有加减乘数

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

-小学一年级:
-100以内的相加减
-不能有负数

-小学二年级:
-九九乘法表内的乘法
-一百以内的被除数除以一位数的除数
-商不能出现小数

三、设计

1. 设计思路

  • 用户输入参数,输入的参数需要进行判断
  • 随机数生成
  • 判断输入的参数需要生成什么类型的题目
  • 题目及答案生成写入文本

2. 实现方案

  • 准备工作:先在Github上创建仓库,再用git克隆到本地
  • 技术关键点:计算符号的判断

四、编码

  • 实现用户输入
  • rand.nextInt()的方法随机生成随机数
  • if判断生成什么类型的题目(规范格式)
  • 最后用IO流写入文本

1. 调试日志

  • 进行判断时让字符串args【】与整型进行判断,后改为正则运算
  • 设计除法时,忽略了生成随机数时除数会生成0
  • 不输入参数或第二个参数没输入都会报错,后增加对args进行长度判断

2. 关键代码

    Random rand = new Random();
    if (grade==1)) {
         //1为一年级,2为二年级
        int d = 0;
        String x = "";
        String y = "";
        for (int i = 1; i <= n; i++) {
            int c = (rand.nextInt(2));// 0表示加法,1表示减法
            if (c == 0) {
                int a = (rand.nextInt(100));// 随机生成两个0-99的相加减的数,且之和不大于100
                int b = (rand.nextInt(100 - a));
                d = a + b;
            if (i != 1) {
                    x = x + "\n";
                    y = y + "\n";
                      }
                x = x + "(" + i + ")" + " " + a + " " + "+" + " " + b + " " + "=";// 将题目存入x
                y = y + "(" + i + ")" + " " + a + " " + "+" + " " + b + " " + "=" + " " + d;// 将题目及答案存入y

            } else {

                int a = (rand.nextInt(100));// 随机生成两个0-99的相加减的数,且b不大于a
                int b = (rand.nextInt(10));
                d = a - b;
                if (i != 1) {
                    x = x + "\n";
                    y = y + "\n";
                }
                x = x + "(" + i + ")" + " " + a + " " + "-" + " " + b + " " + "=";// 将题目存入x
                y = y + "(" + i + ")" + " " + a + " " + "-" + " " + b + " " + "=" + " " + d;// 将题目及答案存入y

            }
        }

3. 代码规范

请给出本次实验使用的代码规范:
1.左大括号前不换行。
2.左大括号后换行。
3.右大括号前换行。
4.右大括号后还有else等代码则不换行
5.表示终止右大括号后必须换行。
6.if/for/while/switch/do等保留字与括号之间都必须加空格。

五、测试

测试内容输入预期实际)
第一个参数0输入有误,程序结束1符合预期
-5输入有误,程序结束符合预期
100000000输入有误,程序结束符合预期
a输入有误,程序结束符合预期
00000000000005输入有误,程序结束符合预期
5.5输入有误,程序结束1符合预期
5生成五道一年级的题目符合预期
第二个参数5 -1输入有误,程序结束符合预期
5 100000000000输入有误,程序结束符合预期
5 a输入有误,程序结束符合预期
5 5输入有误,程序结束符合预期
5 2生成五道二年级的题目符合预期

六、总结

使用了“软件开发的基本策略:分而治之”
从一开始看到题目就头疼,觉得无从下手;再到有了初步构思,询问度娘及同学,到最后完成。我觉得这并不是什么困难的事情即使自己是一个小白,“世上无难事,只怕有心人”。
不知道重构是什么- -!!!

转载于:https://www.cnblogs.com/lzmlzm/p/9620233.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值