个人作业1
个人作业1
一、预估与实际
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 20 | 20 |
• Estimate | • 估计这个任务需要多少时间 | 240 | 500 |
Development | 开发 | 60 | 120 |
• Analysis | • 需求分析 (包括学习新技术) | 60 | 120 |
• Design Spec | • 生成设计文档 | 30 | 80 |
• Design Review | • 设计复审 | 5 | 10 |
• Coding Standard | • 代码规范 (为目前的开发制定合适的规范) | 10 | 20 |
• Design | • 具体设计 | 10 | 20 |
• Coding | • 具体编码 | 60 | 120 |
• Code Review | • 代码复审 | 10 | 20 |
• Test | • 测试(自我测试,修改代码,提交修改) | 10 | 20 |
Reporting | 报告 | 20 | 25 |
• Test Repor | • 测试报告 | 10 | 15 |
• Size Measurement | • 计算工作量 | 5 | 5 |
• Postmortem & Process Improvement Plan | • 事后总结, 并提出过程改进计划 | 10 | 10 |
合计 | 585 |
二、需求分析
我通过上网的方式了解到,小学一年级数学有如下的几个特点:
-
特点1
-
10以内数的认识和加减法。
-
会读、写0~20各数
-
能比较熟练地计算一位数的加法和10以内的减法
-
经过分析,我认为,这个程序应当:
-
使用的数字小于10
-
不能有负数
-
算法应该是10以内
三、设计
1. 设计思路
-
弄清随机数的生成
-
输入一组数据
-
判断数据是否符合要求,包括数据类型
2. 实现方案
- 准备工作:先在Github上创建仓库,克隆到本地
- 技术关键点:随机数的生成;数据异常的处理;
四、编码
- 随机数的生成,需选择符号和数字两种
- 写出各年级方法
- 用main函数调用方法
1. 调试日志
- 输入非法字符时,程序会出现异常
- 输入参数时没有忽略了输入的数字数量问题导致异常报错
2. 关键代码
package com.java315;
import java.io.BufferedWriter;
import java.io.File;
import java.io.IOException;
import java.io.FileWriter;
import java.util.Scanner;
import java.util.Random;
public class MathExam315 {
public static void save(String[] a,String[] b) throws IOException{
File file=new File("out.txt");
BufferedWriter bw=null;
try {
bw=new BufferedWriter(new FileWriter(file));
} catch (IOException e1) {
e1.printStackTrace();
}
if(!file.exists()){
try {
file.createNewFile();
}
catch (IOException e) {
e.printStackTrace();
}
}
for(int i=0;i<b.length;i++) {
try {
bw.write(b[i]);
bw.newLine();
bw.flush();
}
catch (IOException e) {
e.printStackTrace();
}
}
bw.newLine();
bw.flush();
for(int i=0;i<b.length;i++) {
try {
bw.write(a[i]);
bw.newLine();
bw.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) throws IOException {
Scanner input=new Scanner(System.in);
System.out.println("请输入正整数");
String z=input.next();
String regex="\\d+";
System.out.println(z.matches(regex));
String[] s=new String[Integer.valueOf(z)];
String[] s1=new String[Integer.valueOf(z)];
if(z.matches(regex)==false) {
System.out.println("有误,请重新输入正整数");
}else {
for(int i=0;i<Integer.valueOf(z);i++) {
Random q=new Random();
int a1=q.nextInt(2);
int a2=q.nextInt(10);
int a3=q.nextInt(10);
if(a1==1) {
s[i]="("+(i+1)+")"+" "+a2+"+"+a3+"="+(a2+a3);
s1[i]="("+(i+1)+")"+" "+a2+"+"+a3+"=";
}
if(a1==0) {
if(a2-a3>=0) {
s[i]="("+(i+1)+")"+" "+a2+"-"+a3+"="+(a2-a3);
s1[i]="("+(i+1)+")"+" "+a2+"-"+a3+"=";
}
if(a2-a3<0) {
s[i]="("+(i+1)+")"+" "+a3+"-"+a2+"="+(a3-a2);
s1[i]="("+(i+1)+")"+" "+a3+"-"+a2+"=";
}
}
}
}
save(s,s1);
}
}
3. 代码规范
请给出本次实验使用的代码规范:
- 第一条:保持代码格式首行缩进
- 第二条:左大括号前不换行
- 第三条:代码最后的右括号换行
- 第四条:并人工检查代码是否符合规范
五、测试
请思考并记录你认为必要的测试点,并记录测试用例与测试结果
- 输入 0.5:提示输入错误,请重新输入
- 输入999:提示错误
六、总结
- 使用了“软件开发的基本策略:分而治之”
- “高质量的设计、规范的编码以及有效的测试是保证软件产品质量的三个重要方面”,本次实验由于开始的比较晚,时间比较充忙在这一块还未做好。由于基础较差,这次很勉强的完成了作业,其中有许多的毛病还需要改正,一开始的无从下手到后来慢慢的了解,多问多学真的是很有用的,勤能补拙,下次我会继续努力。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步