您的位置:首页 > 其它

20162326 齐力锋 挑战出题

2017-06-04 23:15 281 查看

需求分析(描述自己对需求的理解,以及后续扩展的可能性)

1.代码要满足加减乘除的运算,包含括号,支持真分数

2.对象选择生成四则运算题目的数量

3.只出题不判题



4.题目要可以验证结果正确与否并统计正确率

5.要输出文件

6.可以支持多运算符

7.将程序的过程写入文件

8.最好使用栈的方式,中缀转后缀

9.对象可以选择题目运算符的数量决定题目的难度

10.测试需要显示生成10000道题目的时间

11.不能生成重复题目

设计思路

1.先将代码的结构构建好,即先写输出题目的数量

2.通过for循环设计随机出现的题型,包括真分数题型

3.编写不同类型的题型

4.通过BufferedWriter的类写入名字为LX的txt文件,建立一个栈,把每次循环生成的题目压入栈内

5.测试

6.编写一个中缀转后缀的类并编写测试代码使用,最后加入主代码中

7.将每一步生成的题目用list.add压入栈中,写入文件

8.加入统计时间的代码

9.测试

UML类图



代码托管

运行及测试截图







遇到的困难及解决方法

问题:如何题目去重?

解答:我和搭档选择用根据答案去重的方式

关键代码

import java.io.*;
import java.util.*;

/**

* Created by Lenovo on 2017/6/1.

*/
public class ExpressionGenerator {
public static void main(String[] args) throws IOException {
Sort sort = new Sort();
List<String> list = new ArrayList<String>();
List<String> list1 = new ArrayList<String>();
List<String> list2 = new ArrayList<String>();
Conversion con = new Conversion();
Evaluation eva = new Evaluation();
PrimaryTitle title = new PrimaryTitle();
String str1 = args[0];
String str2 = args[1];
String str3 = args[2];
String l1 = null, result2 = null, result1, result3 = null, result4 = null;
int i = 0;
if (args.length == 0) {
System.out.println("No command line arguments");
} else {
FileOutputStream out = new FileOutputStream("D:\\untitled1\\bin\\" + str3);
i = Integer.parseInt(str2);
for (int s = 0; s < Integer.parseInt(str1); s++) {
int x = 0;
Random random = new Random();
int q = random.nextInt(2) + 1;
if (str2.equals("1")) {
q = 3;
}
if (q == 1) {
l1 = title.promber3(i + 1, 9, 4, 1);//

result1 = con.storage(l1);//

result3 = eva.calculate(result1);//

result2 = sort.sorting(result1);

if (list.size() != 0) {
for (int w = 0; w < list.size(); w++) {
if (result2.equals(list.get(w))) {
result4 = eva.calculate(list2.get(w));
if (result3.equals(result4)) {
x = 1;
s --;
break;
}
}
}
}
if (x == 0) {
list.add(result2);

list1.add(l1);//

list2.add(result1);

}
} else if (q == 2) {
String l2 = title.promber1(i + 1, 9, 4, 1);
result1 = con.storage(l2);

result2 = sort.sorting(result1);

result3 = eva.calculate(result1);

if (list.size() != 0) {
for (int w = 0; w < list1.size(); w++) {
if (result2.equals(list.get(w))) {
result4 = eva.calculate(list2.get(w));
if (result3.equals(result4))
x = 1;
s--;
break;
}
}
}
if (x == 0) {
list.add(result2);//

list1.add(l2);//

list2.add(result1);//

}
} else if (q == 3) {
String l2 = title.promber1(i + 1, 9, 4, 1);
result1 = con.storage(l2);//

result2 = sort.sorting(result1);//

if (list.contains(result2)) {
s --;
}
else{
list.add(result2);//

list1.add(l2);//

}
}
}
String s = " ";
for (int i1 = 0; i1 < list1.size(); i1++) {
s += list1.get(i1) + "\r\n";
}
String t = s.trim();
byte[] b = t.getBytes();
out.write(b);
out.close();
}
}
}

对结对的小伙伴做出评价及打分(重点指出需要改进的地方)

打分:我的搭档给我打了51分,我想给他打52分。我这一次还是做领航员的角色,提供思路,他来具体实现代码。这周我做的不够好,思路不够清楚,在去重这里,我只想到了根据答案去重,这是我的失误。

评价:我们在竭力解决如何代码去重的问题,最后还是选择根据答案来去重。我们共同完成的程序达到了基本要求,主动输入运算符数量能生成20000+的题目,并且统计时间。我会和搭档再接再历,继续提高。

PSP记录

Personal Software Process Stages预估耗时(分钟)实际耗时(分钟)
计划5060
估计这个任务需要多少时间500720
设计复审 (和同事审核设计文档)55
开发3030
需求分析2010
具体编码400540
测试2030
测试报告6030
事后总结, 并提出过程改进计划3020
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: