GitHub项目地址: https://github.com/SmileZhbb/zhaohb
一、需求分析
- 为了让小学生得到充分锻炼,每个练习题至少要包含2种运算符。同时,由于小学生没有分数与负数的概念,你所出的练习题在运算过程中不得出现负数与非整数,比如不能出 3/5+2=2.6,2-5+10=7等算式。
- 练习题生成好后,将你的学号
- 扩展功能可以用:在算式中包含括号,计算存在真分数的式子。
二、功能分析
(1) 根据提示输入数字m(即要产生的式子个数)。
(2)输出学号且随机生成m个包含两个运算符的式子,计算结果。
(3)将运算结果输出到指定文件result.txt中。
三、设计思路和过程
(1) 键盘接收m,用random方法产生对应运算数的随机数和对应运算符的随机数;
(2)利用do_whie循环判断生成的随机数是否符合表达式的条件,如果符合准备产生算式,如果不符合重新生成。
(3)如果产生运算符的随机数为0,产生加法,赋值为question,计算出答案赋值为answer。随机数为1,产生减法,随机数为2,产生乘法,随机数为3,产生除法。
(4)将question和answer赋值给datasourse,利用WriteToFile write=new WriteToFile("result.txt",datasourse)输出结果。
四、运行结果
(1)在eclipse中运行代码如图所示:
(2) result.txt中显示如下:
五、核心代码
Scanner num =new Scanner(System.in); System.out.print("请输入个数:"); m =num.nextInt(); ArrayList<String> datasourse=new ArrayList<String>(); String question=new String(); Random r = new Random(); Scanner in = new Scanner(System.in); System.out.println("学号:201571030142"); for (int i = 1; i <= m; i++) { // 随机生成题目question(包括数据和符号),计算答案answer //String question = null; int answer = 0; int a, b, c,d; c = r.nextInt(4); do { a = r.nextInt(100); b = r.nextInt(100); d = r.nextInt(100); } while ((c == 3 && b == 0) || (c == 3 && a % b != 0) || (c == 2 && a * b > 100) || (c == 1 && a < b) || (c == 0 && a + b > 100)); if (c == 0) { question = a + "+" + b +"+"+d; answer = a + b + d; } else if (c == 1) { question = a + "-" + b+"+"+d; answer = a - b + d; } else if (c == 2) { question = a + "*" + b+"*"+d; answer = a * b * d; } else { question = a + "/" + b+"*"+d; answer = a / b * d; } // 输出题目question datasourse.add(question+"="+answer); //System.out.println(i + ")"+ question + "="+answer); }
将question和answer赋值给datasourse,写入result.txt。
for ( int i = 0; i < datasourse.size(); i++){ System.out.println(datasourse.get(i)); } WriteToFile write=new WriteToFile( "result.txt",datasourse); System.out.println("已写入result.txt!");
六、小结
在本次实验设计中,发现了自己的很多不足:
(1)java基础知识点掌握不牢固,知识模糊,结构混乱。
(2)动手能力太差,面对一个问题,不知道如何去实现它,参考大量资料才完成此次作业。
(3)实验过程设计简单,部分功能不太完善。
在这次设计实验过程中,遇到了很多问题。这都是值得我反思的。为什么不知道这个结构?为什么老是出现bug?在今后的学习中,应当认真学习,
重新改进,在下一次的实验设计中,能够更好的完成。
学到的知识点:
java写入文件有三种方法:
FileWriter fileWritter = new FileWriter();
BufferedWriter bw = new BufferedWriter();
FileOutputStream写入文件
七、PSP
PSP2.1 | 任务内容 | 计划完成需要的时间(min) | 实际完成需要的时间(min) |
Planning | 计划 | 30 | 60 |
Estimate | 估计这个任务需要多少时间,并规划大致工作步骤 | 20 | 40 |
Development | 开发 | 240 | 600 |
Analysis | 需求分析 (包括学习新技术) | 20 | 20 |
Design Spec | 生成设计文档 | 20 | 30 |
Design Review | 设计复审 (和同事审核设计文档) | 20 | 30 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 30 | 60 |
Design | 具体设计 | 40 | 60 |
Coding | 具体编码 | 300 | 400 |
Code Review | 代码复审 | 20 | 20 |
Test | 测试(自我测试,修改代码,提交修改) | 30 | 40 |
Reporting | 报告 | 30 | 45 |
Test Report | 测试报告 | 10 | 20 |
Size Measurement | 计算工作量 | 5 | 5 |
Postmortem & Process Improvement Plan | 事后总结 ,并提出过程改进计划 | 5 | 8 |