一、码云链接

项目名称FAO

码云链接

二、需求分析

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

三、设计思路

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

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

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

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

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

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

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

四、UML类图

五、功能截图

六、结对感受

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

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

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

七、结对编程照片

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

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

20165325 2017-2018-2 《Java程序设计》结对编程_第一周:四则运算的更多相关文章

  1. 20165325 2017-2018-2 《Java程序设计》结对编程_第二周:四则运算

    20165325 2017-2018-2 <Java程序设计>结对编程_第二周:四则运算 一.码云链接 FAO项目的码云链接; 1.Git提交日志已经实现一个功能/一个bug修复的注释说明 ...

  2. 20165232 2017-2018-2《Java程序设计》结对编程一 第一周总结

    20165232 2017-2018-2<Java程序设计>结对编程一 第一周总结 结对对象 20165219王彦博 20165232何彦达 需求分析 实现一个程序,要求: 1 支持整数运 ...

  3. 20165205 2017-2018-2《Java程序设计》结对编程一 第一周总结

    20165205 2017-2018-2<Java程序设计>结对编程一 第一周总结 需求分析 对输入的算式进行计算,要求满足一下条件: 支持整数运算,如2+5,47+7865. 支持多运算 ...

  4. 20165219 2017-2018-2《Java程序设计》结对编程一 第一周总结

    20165219 2017-2018-2<Java程序设计>结对编程一 第一周总结 结对对象 20165219王彦博 20165232何彦达 需求分析 实现一个程序,要求: 1 支持整数运 ...

  5. 20172306 2018-2019 《Java程序设计与数据结构》第一周学习总结

    20172306 2018-2019 <Java程序设计与数据结构(下)>第一周学习总结 教材学习内容总结 第一章 概述 (程序=数据结构+算法 软件=程序+软件工程) 1.1 软件质量 ...

  6. 20172306《Java程序设计与数据结构》第一周总结

    20172306<Java程序设计>第一周学习总结 教材学习内容总结 本周主要学习<Android和Java>书中的第二十三章和第二十六章. 第二十三章:Android简介 A ...

  7. 20165205 2017-2018-2《Java程序设计》结对编程一 第二周总结

    20165205 2017-2018-2<Java程序设计>结对编程一 第二周总结 设计思路 编写主类Arithmetic4 编写ArithmeticFunc类来实现计算,其中包括:加.减 ...

  8. ### 20165219 2017-2018-2《Java程序设计》结对编程一 第二周总结

    20165219 2017-2018-2<Java程序设计>结对编程一 第二周总结 结对对象 20165219王彦博 20165232何彦达 需求分析 实现一个程序,要求: 1 支持整数运 ...

  9. 20172319 2018.04.11-16 《Java程序设计教程》 第6周学习总结

    20172319 2018.04.11-16 <Java程序设计教程>第6周学习总结 目录 教材学习内容总结 教材学习中的问题和解决过程 代码调试中的问题和解决过程 代码托管 上周考试错题 ...

随机推荐

  1. day15-ajax和jquery

    回顾: 分页: 将数据按照页码划分,提高用户的体验度. 分类: 逻辑分页:一次性将内容加载到内存(list),获取自己想要的数据 sublist截取.缺点:维护起来麻烦 物理分页:(经常使用) 每次只 ...

  2. MySQL_参数设置

    1.max_allowed_packet 描述:有时备份数据库时,将本地psc文件备份到数据库时,会遇见备份不成功的情况 分析:这时要考虑,是否由于max_allowed_packet这个参数过小,导 ...

  3. Rancher之HA部署

    sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors&q ...

  4. 面向对象【day07】:面向对象使用场景(十)

    本节内容 1.概述 2.知识回顾 3.使用场景 一.概述 之前我们学了面向对象知识,那我们在什么时候用呢?不可能什么时候都需要用面向对象吧,除非你是纯的面向对象语言,好的,我们下面就来谈谈 二.知识回 ...

  5. 开源实时消息推送系统 MPush

    系统介绍 mpush,是一款开源的实时消息推送系统,采用java语言开发,服务端采用模块化设计,具有协议简洁,传输安全,接口流畅,实时高效,扩展性强,可配置化,部署方便,监控完善等特点.同时也是少有的 ...

  6. @GetMapping(value="/") , "/" 可加可不加 ,是不是一样的

    @GetMapping(value = "/user") 和  @GetMapping(value = "user") 的区别 1.带上 "/&quo ...

  7. HDU - 3974 Assign the task (线段树区间修改+构建模型)

    https://cn.vjudge.net/problem/HDU-3974 题意 有一棵树,给一个结点分配任务时,其子树的所有结点都能接受到此任务.有两个操作,C x表示查询x结点此时任务编号,T ...

  8. linux大法好。。。。。

    vim: 移动光标至段首:^或者home键 移动光标至段尾:$或者end键 删除光标位置到本行开头:d0或者d^ 删除光标位置到本行末尾:D或者d$ 撤销操作:u 取消撤销操作:ctrl+r ---- ...

  9. 【二】Spring Cloud 入门

    官网 版本号: SpringCloud中文网:https://springcloud.cc SpringCloud中文社区:http://springcloud.cn 以下代码就是Maven父子工程, ...

  10. SSH整合方案二(不带hibernate.cfg.xml)

    整体结构: 1.引入相关jar包 2.编写实体类和映射文件 package cn.zqr.domain; public class Customer { private Long cust_id; p ...