一:需求分析
(1)自动生成10道100以内的2个操作数的四则运算算式(+ - * /),要求运算结果也在100以内
(2)剔除重复算式。 2 + 3 = 和 2 + 3 = 是重复算式 2 + 3 = 和 3 + 2 = 不属于重复算式
(3)题目数量可定制
(4)相关参数可控制
是否包含乘法和除法
操作数数值范围可控(如操作数 在100以内 还是1000以内)
操作数是否含负数
(5)生成的运算题存储到外部文件result.txt中
二:功能设计
基本功能:自动生成四则运算题
扩展功能:快速得出答案;四则运算依据用户的输入得出结论
三:设计实现
使用Java实现,软件Eclipse,运用while、for等多种语句
四:测试运行
运行结果
五:代码片段
生成四则表达式
public HashSet<String> generateArithmetic(){
HashSet<String> arithSet =new HashSet<String>();
while(arithSet.size() < this.n){ //生成指定数量的公式
String arithmetic = "";
int number = this.getRandomNumber(this.m,this.i);
int otherNumber = this.getRandomNumber(this.m,this.i);
arithmetic += this.getNumber(number);
// 生成指定操作数的表达式
for(int i = 1; i < this.o; i++){
arithmetic += " "+ this.getRandomOperator(this.isMultiAnddiv) + " " +this.getNumber(otherNumber);
otherNumber = this.getRandomNumber(this.m,this.i);
}
Object result = this.getComputeReturn(arithmetic); // 计算表达式结果
// 把符合要求的结果存起来
if (Double.parseDouble(result.toString()) < this.r){
arithmetic += " = " + String.format("%.3f",Double.parseDouble(result.toString()));
arithSet.add(arithmetic);
}
}
return arithSet;
}
计算四则表达式的结果
private Object getComputeReturn(String arithmetic){
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine se = manager.getEngineByName("js");
Object result = null;
try {
result = se.eval(arithmetic);
} catch (ScriptException e) {
e.printStackTrace();
}
// System.out.println(result);
return result;
}
为负数加上括号,返回负数带括号的数,整数原样输出
private String getNumber(int number){
if (number > 0){
return number+"";
}else{
return "(" + number +")";
}
}
生成随机操作符号
private String getRandomOperator(boolean isMultiAnddiv){
String [] operator = {"+", "-", "*", "/"};
Random randomOper = new Random();
if (isMultiAnddiv){
return operator[randomOper.nextInt(4)];
}else{
return operator[randomOper.nextInt(2)];
}
}
六:总结
这次我应该先构成整体框架,勾勒出大体的程序模式再进行程序的复查等,而不是从琐碎的小地方抓起,组装之后思绪繁琐,深刻认识到了这次的弊端,我会继续加油努力哒
七:PSP
||||||||||||||
|:--|:--|:--|:--|
|psp2.1|任务内容|计划共完成需要的时间(min)|实际完成需要的时间(min)|
|Planning|计划|60|520|
|· Estimate|估计这个任务需要多少时间,并规划大致工作步骤|60|520|
|Development|开发|40|120|
|·· Analysis| 需求分析 (包括学习新技术)|10|30|
|· Design Spec| · 生成设计文档|10|40|
|· Coding Standard| · 代码规范 (为目前的开发制定合适的规范)|10|20|
|·Coding| · 具体编码|120|200|
|·Code Review| · 代码复审|10|30|
|·Test| · · 测试(自我测试,修改代码,提交修改)|10|20|
|·Reporting| · · 报告|10|30|
|· Test Report| · · 测试报告|10|10|
|· Size Measurement| · · 计算工作量|10|10|
|· Postmortem & Process Improvement Plan| · · 事后总结 ,并提出过程改进计划|10|10|