Github的仓库主页链接地址:https://github.com/cy0325/CulClation.git
一、实验要求
- 为了让小学生得到充分锻炼,每个练习题至少要包含2种运算符。同时,由于小学生没有分数与负数的概念,你所出的练习题在运算过程中不得出现负数与非整数,比如不能出 3/5+2=2.6,2-5+10=7等算式。
- 练习题生成好后,将你的学号
- 当程序接收的参数为4时,以下为输出文件示例。
二、需求分析
- 为了让小学生得到充分锻炼,每个练习题至少要包含2种运算符。同时,由于小学生没有分数与负数的概念,你所出的练习题在运算过程中不得出现负数与非整数,比如不能出 3/5+2=2.6,2-5+10=7等算式。
- 练习题生成好后,将你的学号
三、功能实现
1、随机生成2-5个数的运算表达式,运算符在1-4个之间。
2、每个数字在0-100之间。
3、完成了基本的运算。
4、将学号和四则运算及其结果保存到result.txt中。
四、设计实现
在主类Main.java中,先进行了文件操作,也就是基本的初始化,然后接收一个数,也就是将来生成的表达式的个数。接着调用随机函数,随机生成5位数数组,并产生随机运算符下标,之后运用switch语句生成有2-5个数的随机表达式并且有1-4个运算符,之后调用JavaScript的eval函数计算出所求的结果,将结果和自己的学号保存到文本文件中。
五、测试运行
输入产生的表达式8个,运行结果如图2,结果保存到result.txt,如图3所示,命令行测试如图4所示。
六、核心代码
1.文件操作
1 PrintStream ps = null;
2 try
3 {
4 File file =new File("./result.txt");
5 ps = new PrintStream(new FileOutputStream(file));
6 }
7 catch (FileNotFoundException e)
8 {
9 e.printStackTrace();
10 }
11 ps.println("201571030101");
2.产生五位数的随机数组
1 int[] array = new int[5];
2 Random r = new Random();
3 for (int i = 0, n = array.length; i < n; i++)
4 {
5 array[i] = r.nextInt(100);
6 }
3.产生随机运算符下标
char[] c={'+','-','*','/'};
Random ran = new Random();
int index=ran.nextInt(c.length);
int index1=ran.nextInt(c.length);
int index2=ran.nextInt(c.length);
int index3=ran.nextInt(c.length);
4.switch语句分情况生成2-5个数的四则运算
int s = r.nextInt(4);
switch (s)
{
case 0:
{
exp = String.valueOf(""+array[0]+c[index]+array[1]);
break;
}
case 1:
{
exp = String.valueOf(""+array[0]+c[index]+array[1]+c[index1]+array[2]);
break;
}
case 2:
{
exp = String.valueOf(""+array[0]+c[index]+array[1]+c[index1]+array[2]+c[index2]+array[3]);
break;
}
case 3:
{
exp = String.valueOf(""+array[0]+c[index]+array[1]+c[index1]+array[2]+c[index2]+array[3]+c[index3]+array[4]);
break;
}
}
5.计算结果并保存
try
{
result = Double.parseDouble(String.valueOf(javascript.eval(exp)));
}
catch (ScriptException e)
{
e.printStackTrace();
}
if(Math.floor(result)==result&&result>0&&result<99999)
{
System.out.println(exp + "=" + (int) result);
ps.println(exp + "=" + (int) result);
}
七、总结
本次实验,我明白了软件工程的庞大性,设计一个好的软件并不是很简单的,刚开始写这个实验,甚至都忘记了Java如何创建一个项目。虽然有这些困难,但还是努力克服。这已经是我第二次去修改已经提交了的代码,感觉自己的这个实验一次比一次成熟,我觉得学习就是慢慢积累的过程,虽然本次实验还有一些不足的地方,但是已经基本完成了老师所说的一些功能,其他功能还有待提高,我会在第三次实验中再接再厉的。
八、展示PSP
PSP |
任务内容 |
计划完成需要的时间(min) |
实际完成需要的时间(min) |
Planning |
计划 |
30 |
40 |
Estimate |
估计这个任务需要多少时间,并规划大致工作步骤 |
30 |
30 |
Development |
开发 |
200 |
300 |
Analysis |
需求分析 (包括学习新技术) |
15 |
30 |
Design Spec |
生成设计文档 |
10 |
20 |
Design Review |
设计复审 (和同事审核设计文档) |
10 |
20 |
Coding Standard |
代码规范 (为目前的开发制定合适的规范) |
5 |
10 |
Design |
具体设计 |
30 |
30 |
Coding |
具体编码 |
100 |
120 |
Code Review |
代码复审 |
10 |
20 |
est |
测试(自我测试,修改代码,提交修改) |
10 |
20 |
Reporting |
报告 |
30 |
60 |
Test Report |
测试报告 |
25 |
30 |
Size Measurement |
计算工作量 |
2 |
3 |
Postmortem & Process Improvement Plan |
事后总结 ,并提出过程改进计划 |
3 |
10 |