201571030114随机四则运算

一:需求分析

         

要求如下:
  • 程序可接收一个输入参数n,然后随机产生n道加减乘除练习题,每个数字在 0 和 100 之间,运算符在3个到5个之间。
  • 为了让小学生得到充分锻炼,每个练习题至少要包含2种运算符。同时,由于小学生没有分数与负数的概念,你所出的练习题在运算过程中不得出现负数与非整数,比如不能出 3/5+2=2.6,2-5+10=7等算式。
  • 练习题生成好后,将你的学号与生成的n道练习题及其对应的正确答案输出到文件“result.txt中,不要输出额外信息,文件目录与程序目录一致。
  • 当程序接收的参数为4时,以下为输出文件示例。

二:功能设计

       整个程序可分为三大部分

            2. 1:随机生成一个算式

                        这个部分做的还不是很完善,利用两个for循环来随机生成算式,利用StringBuilder动态字符串来接收随机生成的算式,并加入到ArrayList数组中

            2.2:计算这个算式

                       计算部分,有两种方法,第一种是利用 javascript脚本引擎,另一种是利用逆波兰式中和栈来解决,相比较而言第一种较为简单

            2. 3:输出到文本文件

三:设计实现

        1:设计程序流程图、

         2:接收随机生成算式的个数来进行循环

         3:随机产生运算符,当产生'-'或者'/'时加以判断并产生合适的数字,并将随机产生的算式加入数组

         4:遍历数组进行计算和输出         

四:测试运行

         

            

 

五:核心代码

        

 //使用增强for循环的方法遍历
        try {  
            FileWriter fw = new FileWriter("lilei.txt");//输出  
            BufferedWriter bw = new BufferedWriter(fw);  
            bw.append("201571030114"); 
            bw.newLine();
            for(String e:equations) {
                e=e+"="+se.eval(e.toString());//计算
                System.out.println(e);
                bw.write(e.toString()); 
                bw.newLine();
             }
             bw.close();  
                fw.close(); 
        } catch (Exception ee) {  
            ee.printStackTrace();  
        }  

 

 

 

六:总结

           对于这次的作业因为一开始对于运算符的优先级考虑不完善,导致后面出现了很多问题,所以代码功能也不是很完善,很长时间没有写过java了,要花很多的时间来复习和熟悉java,能力有限,时间也有限,以后有时间会进行改进。

 

PSP:           github地址:https://github.com/Lei-surely/Calculate

 

PSP任务内容计划完成需要的时间(min)实际完成需要的时间(min)
  计划准备 60 150
Estimate 需求分析,函数实现 30 40
  开发 30 30
Analysis 需求分析 10 20
Design Spec 设计 30 30
Design Review 设计复审 5 10
Design 具体设计 5 10
Coding 具体编码 60 150
Code Review 代码复审,查找语法错误 2 2
Test 测试 30 150
  报告 10 30
Test Report 经测试,程序编译正确,运行结果正确,完全符合要求 2 2
Size Measurement 因为很久没有用过java所以重点要花很多时间来复习java语言,找回思路 2 2
Postmortem 这个程序还存在问题,主要在减法和除法部分有时会出现小数的情况,会继续改进 5 5
posted @ 2018-03-20 22:01  Lei-surely  阅读(225)  评论(1编辑  收藏  举报