20165325 2017-2018-2 《Java程序设计》结对编程_第一周:四则运算
一、码云链接
项目名称FAO
二、需求分析
- 实现一个命令行程序;
- 自动生成小学四则运算题目(加、减、乘、除)
- 支持整数
- 支持多运算符(比如生成包含100个运算符的题目)
- 支持真分数
- 统计正确率
三、设计思路
首先设计一个基础的数据类,由于本次项目编程的难点在于分数运算的处理,所以我们打算从一开始就以“分数类”作为基础数据,并由此设计了Rational类(成员变量以及方法均详见UML图),Rational将所有的数据设计为分数,并且能进行+、-、*、/运算。
其次,我们需要设计一个类似于“栈”的类(即Mystack类),其作用是存储用作运算的后缀表达式,后面的“计算器类”遍以此为基础进行运算。
接下来,四则运算的核心便是“计算器”类,即Calculator类,其作用是计算一个后缀表达式的值,其计算方法在2017-2018-2 165X 『Java程序设计』课程 结对编程练习_四则运算里面已经写的很清楚了,即建立一个空栈,遇到数字就入栈,遇到符号就以符号前面的两个数为运算数进行计算。
这周我们设计的程序的最后一个便是:“转换器”类,其作用是将一个正常的运算式(即中缀表达式)转换为后缀表达式,我们将其命名为Transform类。
以上四类我们已经开发完毕,目前的程序可以实现:计算一个正常的运算式(即中缀表达式)的值(支持有理数的运算,输出结果为一个字符串类型)。根据需求分析,我们还需要以下功能:
- 随机生成(多个)运算式;
- 判断计算结果值是否正确;
- 判断随机生成的(多个)运算式是否有重复;
- 计算正确率
- 系统优化
以上功能需要在下一周的编程中开发实现。
四、UML类图

五、功能截图




六、结对感受
这一次的代码非常繁多,设计开发任务也很重。
首先是第一次结对设计这样大型项目,我们缺乏经验;其次,我们在设计上花了较多的时间讨论,后来在实践开发过程中才发现:一些想法和顾虑是多余的,果然实践是检验真理的唯一标准,一味地空想是错误的计划赶不上变化,要在实践中思考,做出选择判断。
最后我觉得这个程序,仅仅靠一个人,不论是体力还是精神都难以支撑,我体会到了两人结对编程的最大好处:相互鼓励,相互帮助,共同面对和克服困难。
七、结对编程照片

确认调试出来的那一瞬间,舒服了舒服了舒服了......
附:遇到的问题将在下周的博客中一并总结。
20165325 2017-2018-2 《Java程序设计》结对编程_第一周:四则运算的更多相关文章
- 20165325 2017-2018-2 《Java程序设计》结对编程_第二周:四则运算
20165325 2017-2018-2 <Java程序设计>结对编程_第二周:四则运算 一.码云链接 FAO项目的码云链接; 1.Git提交日志已经实现一个功能/一个bug修复的注释说明 ...
- 20165232 2017-2018-2《Java程序设计》结对编程一 第一周总结
20165232 2017-2018-2<Java程序设计>结对编程一 第一周总结 结对对象 20165219王彦博 20165232何彦达 需求分析 实现一个程序,要求: 1 支持整数运 ...
- 20165205 2017-2018-2《Java程序设计》结对编程一 第一周总结
20165205 2017-2018-2<Java程序设计>结对编程一 第一周总结 需求分析 对输入的算式进行计算,要求满足一下条件: 支持整数运算,如2+5,47+7865. 支持多运算 ...
- 20165219 2017-2018-2《Java程序设计》结对编程一 第一周总结
20165219 2017-2018-2<Java程序设计>结对编程一 第一周总结 结对对象 20165219王彦博 20165232何彦达 需求分析 实现一个程序,要求: 1 支持整数运 ...
- 20172306 2018-2019 《Java程序设计与数据结构》第一周学习总结
20172306 2018-2019 <Java程序设计与数据结构(下)>第一周学习总结 教材学习内容总结 第一章 概述 (程序=数据结构+算法 软件=程序+软件工程) 1.1 软件质量 ...
- 20172306《Java程序设计与数据结构》第一周总结
20172306<Java程序设计>第一周学习总结 教材学习内容总结 本周主要学习<Android和Java>书中的第二十三章和第二十六章. 第二十三章:Android简介 A ...
- 20165205 2017-2018-2《Java程序设计》结对编程一 第二周总结
20165205 2017-2018-2<Java程序设计>结对编程一 第二周总结 设计思路 编写主类Arithmetic4 编写ArithmeticFunc类来实现计算,其中包括:加.减 ...
- ### 20165219 2017-2018-2《Java程序设计》结对编程一 第二周总结
20165219 2017-2018-2<Java程序设计>结对编程一 第二周总结 结对对象 20165219王彦博 20165232何彦达 需求分析 实现一个程序,要求: 1 支持整数运 ...
- 20172319 2018.04.11-16 《Java程序设计教程》 第6周学习总结
20172319 2018.04.11-16 <Java程序设计教程>第6周学习总结 目录 教材学习内容总结 教材学习中的问题和解决过程 代码调试中的问题和解决过程 代码托管 上周考试错题 ...
随机推荐
- 关于Tcpdump抓包总结
一.简介 tcpdump是一个用于截取网络分组,并输出分组内容的工具.凭借强大的功能和灵活的截取策略,使其成为类UNIX系统下用于网络分析和问题排查的首选工具 tcpdump提供了源代码,公开了接口, ...
- bzoj2049 线段树 + 可撤销并查集
https://www.lydsy.com/JudgeOnline/problem.php?id=2049 线段树真神奇 题意:给出一波操作,拆边加边以及询问两点是否联通. 听说常规方法是在线LCT, ...
- 剑指Offer_编程题_15
题目描述 输入一个链表,反转链表后,输出链表的所有元素. /* struct ListNode { int val; struct ListNode *next; ListNode(int x) : ...
- 10 个 Linux 中方便的 Bash 别名
10 个方便的 Bash 别名 1. 你有几次遇到需要解压 .tar 文件但无法记住所需的确切参数?别名可以帮助你!只需将以下内容添加到 .bash_profile 中,然后使用 untar File ...
- 如何优雅地使用Sublime Text3
此文非原创,出处见文章结尾. 一.Sublime Text 3插件安装 优雅使用Sublime Text,插件则是不可缺少的存在:而插件的备份就显得非常的重要(譬如:各平台同步:更换系统/电脑,迅速使 ...
- JAVA核心技术I---JAVA回顾
一:基础类型运算 大部分的指令都没有支持byte.char.short,没有任何指令支持boolean类型.编译器在编译期或者运行期将byte和short类型的数据带符号扩展为相应的int类型数据,将 ...
- JAVA核心技术I---JAVA基础知识(package和import)
一:package 所有的Java类都是放置在同一个目录下面的,因此类之间的相互调用无需显式声明调用. –同一个目录下,两个类的名字不能相同 –文件过多,查找和修改都不易,且容易出 Java支持多个目 ...
- netty的拆包和粘包
第一种:自定义规则 比如说我们自己设定$_结尾的数据为一个整体. 看主要代码,大体不变,就多了几行代码.具体先看我上一篇的代码.这里只做修改 server端 b.childHandler(new Ch ...
- js拼接HTML页面元素a标签遇到的问题
业务,如下图需要做一个广告轮播的图片链接 使用了ajax请求后台,在js拼接html,关键代码: $("#scroll_img").html(""); for ...
- bzoj千题计划316:bzoj3173: [Tjoi2013]最长上升子序列(二分+树状数组)
https://www.lydsy.com/JudgeOnline/problem.php?id=3173 插入的数是以递增的顺序插入的 这说明如果倒过来考虑,那么从最后一个插入的开始删除,不会对以某 ...