一、码云链接

项目名称FAO

码云链接

二、需求分析

  • 实现一个命令行程序
  • 自动生成小学四则运算题目(加、减、乘、除)
  • 支持整数
  • 支持多运算符(比如生成包含100个运算符的题目)
  • 支持真分数
  • 统计正确率

三、设计思路

首先设计一个基础的数据类,由于本次项目编程的难点在于分数运算的处理,所以我们打算从一开始就以“分数类”作为基础数据,并由此设计了Rational类(成员变量以及方法均详见UML图),Rational将所有的数据设计为分数,并且能进行+、-、*、/运算。

其次,我们需要设计一个类似于“栈”的类(即Mystack类),其作用是存储用作运算的后缀表达式,后面的“计算器类”遍以此为基础进行运算。

接下来,四则运算的核心便是“计算器”类,即Calculator类,其作用是计算一个后缀表达式的值,其计算方法在2017-2018-2 165X 『Java程序设计』课程 结对编程练习_四则运算里面已经写的很清楚了,即建立一个空栈,遇到数字就入栈,遇到符号就以符号前面的两个数为运算数进行计算。

这周我们设计的程序的最后一个便是:“转换器”类,其作用是将一个正常的运算式(即中缀表达式)转换为后缀表达式,我们将其命名为Transform类。

以上四类我们已经开发完毕,目前的程序可以实现:计算一个正常的运算式(即中缀表达式)的值(支持有理数的运算,输出结果为一个字符串类型)。根据需求分析,我们还需要以下功能:

  • 随机生成(多个)运算式;
  • 判断计算结果值是否正确;
  • 判断随机生成的(多个)运算式是否有重复;
  • 计算正确率
  • 系统优化

以上功能需要在下一周的编程中开发实现。

四、UML类图

五、功能截图

六、结对感受

这一次的代码非常繁多,设计开发任务也很重。

首先是第一次结对设计这样大型项目,我们缺乏经验;其次,我们在设计上花了较多的时间讨论,后来在实践开发过程中才发现:一些想法和顾虑是多余的,果然实践是检验真理的唯一标准,一味地空想是错误的计划赶不上变化,要在实践中思考,做出选择判断

最后我觉得这个程序,仅仅靠一个人,不论是体力还是精神都难以支撑,我体会到了两人结对编程的最大好处:相互鼓励,相互帮助,共同面对和克服困难

七、结对编程照片

确认调试出来的那一瞬间,舒服了舒服了舒服了......

附:遇到的问题将在下周的博客中一并总结。

最新文章

  1. Web服务器与数据库服务器分离 导入 Excel数据至数据库
  2. 《数据结构与算法Python语言描述》习题第二章第三题(python版)
  3. js中正则表达式的模式匹配
  4. 《day15---多线程安全问题_JDK1.5的锁机制》
  5. 也谈LBP
  6. (四)动态生成控件,点击button添加控件
  7. \r,\n,\t
  8. Linux 命令 - file: 确定文件类型
  9. [转] 弱校ACM奋斗史
  10. c++构造函数析构函数调用顺序
  11. python实现类jq的json路径过滤
  12. nand flash和nor flash的区别
  13. CentOS6.9升级autoconf版本,解决”Autoconf version 2.64 or higher is required“错误
  14. 干货 | 教你如何监控 Java 线程池运行状态
  15. 服务器与客户端连接 & 聊天机器人
  16. wordpress升级版本时出现错误“Maximum execution time of 30 seconds exceeded”
  17. [总结]JS操作DOM常用API详解
  18. CMake系列之四:多个源文件-多个目录
  19. Qt动态库静态库的创建、使用、多级库依赖、动态库改成静态库等详细说明
  20. 对Java的常用对象(POJO、DTO、PO、BO、VO、DAO)详细解释及应用场景

热门文章

  1. 图论分支-Tarjan初步-点双连通分量
  2. nGrinder TestRunnerBarrier.groovy / jihedian
  3. PL/SQL Developer
  4. spring MVC页面的重定向
  5. Mysql查看表的建表语句
  6. hdu 6441 (费马大定理+勾股数 数学)
  7. nginx配置fcgi
  8. javascript中var、let和const的区别
  9. 细说shiro之三:在独立应用中使用shiro
  10. springboot(十八):CORS方式实现跨域