zoukankan      html  css  js  c++  java
  • 结对编程项目-四则运算(第二周)

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

    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
  • 相关阅读:
    C++Primer第5版学习笔记(三)
    C++Primer第5版学习笔记(二)
    C++Primer第5版学习笔记(一)
    A*寻路算法的探寻与改良(三)
    A*寻路算法的探寻与改良(二)
    A*寻路算法的探寻与改良(一)
    html5页面js判断是否安装app,以及判断是否在app内部打开html5页面
    结合prototype和xmlhttprequest封装ajax请求
    前端常见的性能优化和浏览器兼容性问题
    常见的HTTP状态码
  • 原文地址:https://www.cnblogs.com/lxrlxr/p/6859675.html
Copyright © 2011-2022 走看看