一:计划分析:
作为一名一年级小学生家长,我希望制作一个出题软件,完成100以内加减正整,随机产生。
二:技术难点:
1.去掉不够减,不循环
2.显示一组算题,同时计算时间
3.显示正确答案时间,正确率
三:技术实现:
第一项:写一个简单的四则运算,方便后期进行修改
代码如下:
public class Exercise{
public int add(int a,int b){
return a+b;
}
public int deduct(int a,int b){
return a+b ;
}
.......
第二项:设计生成设计文档
制作100以内的四则运算,满足小学生的数学应用。
首先创建一个类,让它简单的实现加减乘除这个方法 在根据之后的具体要求进行更改变动。
第三项:设计复审
第四项:代码规范
注意代码规范,注意空格,特殊字数。
第五项:具体设计
设计用户名和密码,登录后可以选择进行四则运算,自己输入结果,得出正确结果,做题时间,和最后的正确率。
第六项:具体代码
代码如下:
package cn.edu.hnzj.com;
import java.util.Date;
import java.util.Scanner;
public class Text {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String name = "xs";
int password = 2357cdx;
int n1 = 0;// 设置它的总题数
int n2 = 0;//设置它的对题数
double a = 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("登陆成功");}
else {
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.println("3,除法");
System.out.println("5,退出");
System.out.print("输入您的选择");
int cho = input.nextInt();
if (cho == 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("恭喜你,回答正确");
n2++;
} else {
System.out.println("你的答案错误,正确答案为:" + x + "+" + y + "=" + (x + y));
}
n1++;
i++;
}
}
} else if (cho == 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("恭喜你,回答正确");
n2++;
} else {
System.out.println("答案错误,正确答案为:" + x + "-" + y + "=" + (x + y));
}
n1++;
i++;
}
}
}
else if (cho == 3) {
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)& x > 0 & y > 0) {
System.out.println("恭喜你,回答正确");
n2++;
} else {
System.out.println("你的答案错误,正确答案为:" + x + "*" + y + "=" + (x * y));
}
n1++;
i++;}
}
} else if (cho == 4) {
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)& x > 0) {
System.out.println("恭喜你,回答正确");
n2++;
} else {
System.out.println("你的答案错误,正确答案为:" + x + "/" + y + "=" + (x / y));
}
n1++;
i++;
}
}
}
else if (cho == 5) {
a = (n2 * 1.0 / n1 * 1.0) * 100;
System.out.println("总题数:" + n1 + "答对的题数:" + n2 + "正确率:" + a + "%");
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("没有此选项,请重新选择");
}
}
}
}
以此类推把加减乘除写完
第七项:代码复审
第八项 测试
自我测试,修改代码,提交代码
...把测试类写完,进行测试
如果测试时为绿条则测试通过,红色则测试失败,查找错误。
第九项: 写测试报告进行试验总结
第十项: 提出改进不足之处
找出代码中bug,并加以改正。
小学生口算答题卡 |
张慧芹的所花百分比 |
工程师所花时间百分比 |
计划 | ||
.明确相关需求和其他因素 | 12 | 10 |
开发 | ||
.需求分析 | 11 | 8 |
.生成设计文档 | 12 | 10 |
.明确相关需求和其他因素 | 10 | 10 |
开发 | ||
.需求分析 | 11 | 8 |
.生成设计文档(和同事审核设计文档) | 10 | 12 |
.代码规范(为目前开发指定合适的规范) | 12 | 7 |
.具体设计 | 20 | 13 |
.具体编码 | 26 | 21 |
.代码复审 | 8 | 10 |
报告 | ||
.测试报告 | 3 | 3 |
.计算工作量 | 2 | 1 |
.事后总结,并提出过程改进计划 | 2 | 1 |