《小学生题卡APP》——王芳
一、计划:
做一个1~6年纪的小学生口算题卡的程序,可以自动生成每组10道100以内的加减乘除题,在学生给出题的答案后,系统则会判断对错,并给予正确的答案。在结束后统计用时和正确率。
二、开发:
(1)分析需求:
典型用户:小学生的家长和学生
实现:①口算题卡软件
②随机产生一组10个以内的加减运算题(减数>被减数)
③要判断结果是否正确
④计算用时和正确率
(2)生成设计文档:
任务一:出题:给出一组10个100以内正整数的加减算式
任务二:答题:界面显示10个题,作答
任务三:统计:答案是否准确,用时以及正确率
(3)设计复审:
和室友一起审核过设计文档,意见一致
(4)代码规范:
按照目前要求的代码规范写的
(5)具体设计:
准备通过JAVA代码来实现
(6)具体编码:
package cn.com;
import java.util.Date;
import java.util.Scanner;
public class MathTi {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String name = "wf";
int password = 100527;
int num1 = 0;// 总题数
int num2 = 0;// 对题数
double acc = 0;// 正确率
int time;// 所用时间
System.out.println("******欢迎使用小学生口算题卡系统******");
System.out.println("请输入用户名:");
String username = input.nextLine();
System.out.println("请输入密码:");
int pass = input.nextInt();
if (username.equals(name) && pass == password) {
System.out.println("恭喜你,登陆成功");
Date start = new Date(System.currentTimeMillis());
long starttime = start.getTime();
while (true) {
System.out.println("1,加法运算");
System.out.println("2,减法运算");
System.out.println("3,退出系统");
System.out.print("请输入你的选择");
int choice = input.nextInt();
if (choice == 1) {
for (int i = 1; i <= 10; i++) {
int x = (int) (Math.random() * 100);
int y = (int) (Math.random() * 100);
System.out.print(x + "+" + y + "=");
int z = input.nextInt();
if (z == (x + y)) {
System.out.println("恭喜你,回答正确");
num2++;
} else {
System.out.println("你的答案错误,正确答案为:" + x + "+" + y + "=" + (x + y));
}
num1++;
}
} else if (choice == 2) {
for (int i = 1; i <= 10;) {
int x = (int) (Math.random() * 100);
int y = (int) (Math.random() * 100);
if (x > y) {
System.out.print(x + "-" + y + "=");
int z = input.nextInt();
if (z == (x - y)) {
System.out.println("恭喜你,回答正确");
num2++;
} else {
System.out.println("答案错误,正确答案为:" + x + "-" + y + "=" + (x + y));
}
num1++;
i++;
}
}
}
else if (choice == 3) {
acc = (num2 * 1.0 / num1 * 1.0) * 100;
System.out.println("总题数:" + num1 + "答对的题数:" + num2 + "正确率:" + acc + "%");
Date end = new Date(System.currentTimeMillis());
long endtime = end.getTime();
time = (int) ((endtime - starttime) / (1000));
System.out.println("您的答题时间为:"+time+"秒");
System.out.println("用户已退出,欢迎下次使用");
System.exit(3);
}
else {
System.out.println("没有此选项,请重新选择");
}
}
} else {
System.out.println("用户名或密码输入错误");
}
}
}
(7)代码复审:
和室友一块看过,意见一致
(8)测试:


三:记录用时:
| PSP阶段 | 预计时间(h) | 实际时间(h) |
| 计划 | 0.5 | 0.5 |
|
明确需求和其他相关因素, 估计每个阶段的时间成本 |
0.5 | 0.5 |
| 开发 | 15 | 20 |
| 需求分析 | 0.5 | 0.5 |
| 生成设计文档 | 0. 5 | 0.5 |
| 设计复审(和同事审核设计文档) | 0. 5 | 0.5 |
| 代码规范(为目前的开发制定合适的规范) | 0. 5 | 0.5 |
| 具体设计 | 1 | 1 |
| 具体编码 | 10 | 15 |
| 代码复审 | 1 | 1 |
| 测试(自测,修改代码,提交修改) | 1 | 1 |
| 报告 | 2 | 3 |
| 测试报告 | 1 | 1. 5 |
| 计算工作量 | 0.5 | 1 |
| 事后总结,并提出过程改进计划 | 0.5 | 0. 5 |
四:测试报告:
已和室友进行测试,运行结果理想
五:计算工作量:
老师给了一个月的时间,对于这个时间而言,工作量不算多
六:事后总结:
纸上谈兵总归只是虚的,在计划的时候感觉就是去实现几个点,感觉一会就能写完,但当你真的去写的时候,才发现并不是那么容易,现在还有百度可以查,老师以及同学可以帮忙,但以后就要靠自己了。所以还是要努力提高自己的技术。
七:提出过程改进计划:
要合理安排时间,对于每个部分进行规划,让过程变得不那么慌乱,而是可以有条理的去完成。

浙公网安备 33010602011771号