一、需求分析
在我们上小学时大家都免不了要学习数学并会四则运算,那学会四则运算就要大量做练习题,那么问题来了,如果是在课堂上老师要出十道题给学生,需要现场编题并自己计算出答案以便判断学生做的对错,这时候就需要时间以及答案的准确性,本程序正好解决了时间问题以及答案的准确性。
二、功能设计
1、基本功能
自动生成10道100以内的2个操作数的四则运算算式(+ - * /),要求运算结果也在100以内。
2、扩展功能
(1)剔除重复算式,2 + 3 = 和 2 + 3 = 是重复算式,2 + 3 = 和 3 + 2 = 不属于重复算式
(2)题目数量可定制
(3)相关参数可控制:
是否包含乘法和除法
操作数数值范围可控(如操作数在100以内还是1000以内)
操作数是否含负数
(4)生成的运算题存储到外部文件result.txt中
三、设计实现
定义静态变量以便函数调用,主函数中调用其他函数,生成文件、随机数、随机符号分别写在不同函数内。键盘输入控制题目数量、是否含有乘除运算、操作数范围、是否含有负数。
四、测试运行
运行结果
五、代码片段
1、将生成题目存储到.txt文件中
static void create(HashSet hashSet) throws IOException {
PrintWriter pw = new PrintWriter(new FileWriter("D:\\result.txt"));
int sum = 1;
for (Iterator it = hashSet.iterator(); it.hasNext();) {
pw.println(it.next());
sum++;
}
pw.close();
PrintWriter pw2 = new PrintWriter(new FileWriter("D:\\无答案题.txt"));
int sum1 = 1;
for (Iterator it = hashSet.iterator(); it.hasNext();) {
String next = (String) it.next();
String[] split = next.split("= ");
pw2.println(split[0] + "=");
sum1++;
}
pw2.close();
}
2、生成随机数和随机符号
static int number() { // 返回一个随机数
return (int) (1 + Math.random() * (range - 1 + 1));
}
static char sign() {// 返回一个符号
char symbol[] = { '+', '-', '*', '/' };
int a = (int) (Math.random() * (4));
int b = (int) (Math.random() * (2));
if (embody == 1) {
return symbol[a];
} else {
return symbol[b];
}
}
3、计算结果
static String summation(int a, char b, int c) { // 获取 a b c 计算出結果
if (b == '+') {
return (a + c) + "";
}
if (b == '-') {
return (a - c) + "";
}
if (b == '*') {
return (a * c) + "";
}
if (b == '/') {
DecimalFormat df = new DecimalFormat("0.00");
double sum = (double) a / c;
String e = df.format(sum);
return e;
}
return c + "";
}
六、总结
想要每个函数都能调用而不用传参用静态变量比较好,先做出整体,然后在逐一细化每个部分,这样效率比较高,键盘输入最好在主函数内进行。
七、PSP
PSP2.1
任务内容
计划共完成需要的时间(min)
实际完成需要的时间(min)
Planning
计划
150
120
Estimate
估计这个任务需要多少时间,并规划大致工作步骤
150
120
Development
开发
10
12
Analysis
需求分析 (包括学习新技术)
8
8
Design Spec
生成设计文档
7
6
Design Review
设计复审 (和同事审核设计文档)
10
11
Coding Standard
代码规范 (为目前的开发制定合适的规范)
6
8
Design
具体设计
20
22
Coding
具体编码
50
55
Code Review
代码复审
10
9
Test
测试(自我测试,修改代码,提交修改)
7
6
Reporting
报告
10
10
Test Report
测试报告
6
6
Size Measurement
计算工作量
7
7
Postmortem & Process Improvement Plan
事后总结 ,并提出过程改进计划
5
3