结对编程项目-四则运算(第二周)

需求分析(描述自己对需求的理解,以及后续扩展的可能性)

1.代码要满足加减乘除的运算,包含括号,支持真分数

2.对象选择生成四则运算题目的数量

3.手动输入结果

4.题目要可以验证结果正确与否并统计正确率

5.要输出文件

6.可以支持多运算符

7.将程序的过程写入文件

8.最好使用栈的方式,中缀转后缀

9.对象可以选择题目运算符的数量决定题目的难度

设计思路

1.先将代码的结构构建好,即先写输出题目的数量

2.通过for循环设计随机出现的题型,包括真分数题型

3.编写不同类型的题型并检验

4.编写题目出现后的输入及对应的语句,最后调用NumberFormat类统计正确的概率

5.通过BufferedWriter的类写入名字为LX的txt文件,建立一个栈,把每次循环生成的题目压入栈内

6.测试

7.编写一个中缀转后缀的类并编写测试代码使用,最后加入主代码中

实现过程中的关键代码解释

   BufferedWriter bw = new BufferedWriter(new FileWriter("LX.txt"));
        ArrayList<String> list = new ArrayList<String>();

建立栈,把for循环生成的题目使用 list.add("题目" + (i + 1)+":");压入

        for(String i:list){
                bw.write(i);
                bw.newLine();
            }
            bw.close();

把每次压入栈内的内容通过迭代器写入文件,并添加空行,最后关闭。

测试方法

通过输入数量决定生成题目的数量,并且题型随机,最后统计正确率,并且检查生成的txt文件是否包含了对应的四则运算题目。

运行过程截图



代码托管

遇到的困难及解决方法

1.关于如何将程序运行结果写入txt文件的问题

解决过程:我先翻阅了教材上IO流的代码,里面只教了如何通过循环写入多行代码,便舍弃。于是我通过网上搜索,找到了一段代码

     BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        System.out.print("请输入你要保存的字符:");
//读取一个文本行
        String str=br.readLine();
//创建一个新的File对象
        File f=new File("testio.txt");
//创建一个新的文件testio.txt
        FileOutputStream fos=new FileOutputStream("testio.txt");
        //写到文本
        fos.write(str.getBytes());
        //关闭输出流
        fos.close();

通过实践发现这种方式每次写入一行内容都要生成一个fos,相比书上的方法较为简单,但仍有麻烦之处。不过为我后来的代码提供了思路,这里不得不提一下张旭升和王彪同学,在张旭升和王彪同学帮助下,帮我梳理了代码结构,并提出了迭代器和栈的方法解决该问题,再次感谢。

对结对的小伙伴做出评价(重点指出需要改进的地方)

这次我和小伙伴齐力锋同学有了明确分工,我负责完善四则运算的代码和分数类及其测试,齐力锋则时写中缀转后缀的类和自动生成题目的类。在第一周我们设计了不用栈的方式来进行四则运算,第二周我们则另外做了一个可以用栈方式的四则运算,所以我们用了两种方法来完成这个题目。我认为齐力锋同学的设计思路很有逻辑性,并且自己总结并做了中缀转后缀的类,很厉害。我认为我们都需要更多地动手实践,只有多做才能多学嘛。

对于搭档代码的理解

关于搭档的中缀转后缀,通过深入学习,有了自己的理解。他利用了调度场算法,先建立一个堆栈,存储暂时还不需要处理的运算符,根据运算符级别的高低决定顺序,例如,先扫描级别较高的运算符,若遇见括号则先压入,直到扫描到右括号再把左括号之后的所有弹出。

PSP记录

Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
计划 60 60
估计这个任务需要多少时间 360 720
生成设计文档 5 5
设计复审 (和同事审核设计文档) 5 5
开发 30 30
需求分析 20 10
具体编码 240 360
测试 20 30
测试报告 60 30
事后总结, 并提出过程改进计划 20 10
原文地址:https://www.cnblogs.com/lxrlxr/p/6859675.html