计应191(西) 周伟春 小学生口算题卡
一、计划:
做一个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)测试:
小学生口算题卡 |
预估时间(min) |
实际记录(min) |
计划 |
25 |
45 |
明确需求和其他相关因素,估计每个阶段的时间成本。 |
30 |
25 |
开发 |
45 |
30 |
需求分析(学习新技术,新工具) |
30 |
45 |
生成设计文档(整体框架的设计,各模块的接口,用时序图等方法) |
30 |
45 |
设计复审(和同事审核设计文档) |
30 |
60 |
代码规范(为目前的开发制定合适的规范) |
30 |
20 |
具体设计(用伪代码,流程图等方法来设计具体模块) |
40 |
50 |
具体编码 |
60 |
65 |
代码复审 |
25 |
30 |
测试(自测、修改代码、提交修改) |
30 |
25 |
报告 |
20 |
35 |
测试报告(发现了多少bug,修复了多少) |
20 |
30 |
计算工作量(多少行代码,多少次签入,多少测试用例,其他工作量) |
30 |
20 |
事后总结,并提出过程改进计划(包括写文档,博客的时间) |
20 |
30 |
|
个人总结:
在整个实践案例中,我发现自己有很多地方不足,我才知道自己要多加练习,而且很多地方也完善的不是很好,代码也不够完整,不过也让我学习了很多,让我充分认识到自己还有发展的空间,会更加努力学习和练习的。