结对编程-四则运算(挑战出题)

结对伙伴:20162307 张韵琪

需求分析

1.建立一个新的代码仓库用于储存代码
2.随机生成指定运算符个数、指定个数和指定存储路径的表达式,包括括号
3.根据要求进行编译测试
4.ps:操作数为个位整数,即选择范围只能是:1,2,3,4,5,6,7,8,9这9个数字
操作符选择范围只能是:+,-,*,/, 还有括号

设计思路(同时输出UML类图)

1.在之前的代码的基础上进行了修改,原来的代码不能生成括号,括号部分参考了百度上有关二叉树的部分
2.输出文件,这部分就在老师博客的基础上进行了修改

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

运用循环产生表达式并输出到文件

    Random rnd = new Random();FileWriter fw = new FileWriter(file_path);BinaryTree bTree;for(int i = 0; i < num_topic ; i++){bTree = new BinaryTree(optr_num );bTree.createBTree();System.out.println(bTree.toString()  );fw.write(bTree.toString()  +'\n');}fw.close();

生成运算符

    public static char getOperator(){char operator = 0;Random ran = new Random();int i = ran.nextInt(4);switch(i){case 0:operator = '+';break;case 1:operator = '-';break;case 2:operator = '*';break;case 3:operator = '/';break;}return operator;}

括号生成参考了二叉树生成

    public String toString(){String Lstr = "", Rstr = "", Str = "";if(hasChild()){if(getRchild().hasChild()){//判断左邻括号的运算符是否为'/'if(str.equals("/")){Rstr = getRchild().toString();}//判断左邻括号的运算符是否为'*'或'-'else if(str.equals("*") || str.equals("-")){//判断op是否为'+'或'-'if(getRchild().str.equals("+") || getRchild().str.equals("-")){Rstr = getRchild().toString();}else{Rstr = getRchild().toString().substring(1, getRchild().toString().length()-1);}}else{Rstr = getRchild().toString().substring(1, getRchild().toString().length()-1);}}else{Rstr = getRchild().str;}if(getLchild().hasChild()){if(str.equals("*") || str.equals("/")){if(getLchild().str.equals("+") || getLchild().str.equals("-")){Lstr = getLchild().toString();}else{Lstr = getLchild().toString().substring(1, getLchild().toString().length()-1);}}else{Lstr = getLchild().toString().substring(1, getLchild().toString().length()-1);}}else{Lstr = getLchild().str;}Str = "(" + Lstr + str + Rstr + ")";}else{Str = str;}return Str;
}

测试方法

exprchecker.exe进行测试

运行过程截图

5个运算符

7个运算符

测试



代码托管地址

遇到的困难及解决方法

刚开始的时候发现测试时存在除数为零的情况,因此把操作数直接改成了1至10,避免了这种情况。

后续发现运算数只能为1到9,修改后还是无法正常测试

在老师的指点下,发现生成表达式并不应该产生等号,去掉等号后就能够正常测试了。

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

我和我的结对伙伴是室友,整个结对过程都是坐在一起,面对面的进行讨论与修改,互相指出对方的错误,提出新的思路与想法,修改了许多bug,合作的非常愉快,感觉效率也很高,非常满意。
问题就是我的结对伙伴的IDEA过期了,因此进行了重装,修复等一系列的操作,不过我们后续还是追赶了进度,并没有耽误时间。
打分的话我会对我的小伙伴打出52分,我是48分。因为我们都是在一块进行编程,所做的工作量基本一致,她产生了代码最初轮廓,我们一块再进行修复,但是由于测试软件只能在windows系统下使用,因此最后的测试是在我的电脑上完成的,但是我们的工作量都是大致一样的,合作的也很愉快,所以我认为这个分数是合理的。

如有参考或引用的设计、实现,请进行说明

参考:http://www.cnblogs.com/vertextao/p/6896953.html

PSP

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 30 30
· Estimate · 估计这个任务需要多少时间 610 920
Development 开发 50 40
· Analysis · 需求分析 (包括学习新技术) 30 20
· Design Spec · 生成设计文档 30 50
· Design Review · 设计复审 (和同事审核设计文档) 60 100
· Coding Standard · 代码规范 (为目前的开发制定合适的规范) 10 10
· Design · 具体设计 100 90
· Coding · 具体编码 100 300
· Code Review · 代码复审 30 60
· Test · 测试(自我测试,修改代码,提交修改) 30 90
Reporting 报告 60 60
· Test Report · 测试报告 30 30
· Size Measurement · 计算工作量 20 20
· Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 30 20
合计 610 920

转载于:https://www.cnblogs.com/syx390234975/p/6940816.html

20162303 结对编程-四则运算(挑战出题)相关推荐

  1. 20162312Java结对编程之挑战出题

    需求分析 实现去重出题,并以命令行参数形式指定题目要求. 设计思路 具体的思路: 思路一: 原本我和春旺商量通过集合中的元素的不重复性进行去重.但是运算符多也导致重复的数字多,去重的数量也大大增多越到 ...

  2. 张天钰 内大计算机学院,20175305张天钰Java结对编程四则运算

    Java结对编程四则运算 一.题目描述:如何对表达式进行求值运算呢 1.中缀表达式与后缀表达式(娄老师讲解) 中缀表达式就是运算符号在运算数中间的表达式,比如1+2,顾名思义,后缀表达式就是运算符在运 ...

  3. 结对编程--------四则运算 实验总结2

    结对编程----------四则运算 实验总结2 结对对象 20172301 郭恺 20172328 李馨雨 过程截图 这个是我们编写的main,叫ArithmeticTest1主要用于生成随机等级的 ...

  4. 20172304 结对编程--四则运算实验总结

    20172304 结对编程--四则运算 结对对象 20172301 郭恺 20172328 李馨雨 需求分析 以结对小组形式编写代码,实现以下功能: 1.自动生成题目 可独立使用(能实现自己编写测试类 ...

  5. 20172316 结对编程-四则运算 第一周 阶段总结

    20172316 结对编程-四则运算 第一周 阶段总结 1.项目内容 以结对小组形式编写代码,实现以下功能: 1.自动生成题目 可独立使用(能实现自己编写测试类单独生成题目的功能) 可生成不同等级题目 ...

  6. 结对编程-四则运算生成

    结对编程-四则运算生成 java实现四则运算程序 github传送门:https://github.com/JJYdesu/operation 成员:赖展飞 江家懿 一.项目要求 实现一个自动生成小学 ...

  7. postfixcalc函数 java_结对编程--四则运算(Java)萧英杰 夏浚杰

    结对编程--四则运算(Java)萧英杰 夏浚杰 功能要求 题目:实现一个自动生成小学四则运算题目的命令行程序 使用 -n 参数控制生成题目的个数(实现) 使用 -r 参数控制题目中数值(自然数.真分数 ...

  8. java 四则运算gui_结对编程-四则运算GUI的实现

    一.项目成员以及coding地址: 二.结对编程题目描述 在个人作业1中,用各种语言实现了一个命令行的四则运算小程序.进一步,本次要求把这个程序做成GUI,成为一个有基本功能.一定价值的程序.在下面的 ...

  9. 结对编程——四则运算过程

    一.问题描述: 某公司程序员二柱的小孩上了小学二年级,老师让家长每天出100道(100以内)四则运算题目给小学生做. 二.结对对象:杨思思 博客地址:http://www.cnblogs.com/ci ...

最新文章

  1. pywebio和stylecolud 做的词云gui
  2. Zygote进程启动流程分析
  3. mysql5.7gtid_MySQL5.7 GTID 运维实战
  4. 如何在两个jsp页面之间传值,在另外一个页面用EL表达式获取值
  5. Android录制和播放PCM数据
  6. oracle告警日志备份,教你怎样用Oracle方便地查看报警日志错误
  7. 6-2 有序数组的插入 (20分)
  8. brctl 设置ip_Linux 网桥配置命令:brctl
  9. 关于Mac下mysql8.0的启动
  10. 奇怪的 Win10 输入法问题
  11. 莫烦python博客_莫烦Python 4
  12. 微信小程序测试二维码跳转链接
  13. Java socket编程 CPU占用率高的问题解决
  14. android记账本的技术路线,Android — 个人简洁记账本项目开发日志
  15. vue FullCalendar使用案例及详解
  16. 你还有“不撞南墙不回头”之心吗?
  17. 专访STEM领域人才资深人工智能图像算法工程师张旦
  18. 【算法】红黑树插入数据(变色,左旋、右旋)(二)
  19. 安卓AccountManager数据库存储位置
  20. android studio制作.9图片,并且不改变原图大小

热门文章

  1. 【分享】(性能优化)思考数据列表中“特殊的列”
  2. Hibernate的主键生成器generator(zhuan)
  3. ListView 与 ImageList
  4. e1载波把32个信道按_E1载波把32个信道按(11)方式复用在一条2.048Mb/s的高速信道上,每条话音信道的数据速率是(12)。...
  5. 华为mate20 android,华为Mate20 Pro上手:安卓最强机会带来哪些体验惊喜?
  6. bde oracle 商友的流程_bde oracle 商友的流程_BDE动态连接Oracle数据库
  7. python怎么删除特定文件_如何使用python从文件中删除特定行?
  8. hive创建mysql表,hiveMysql创建、修改、删除字段/表
  9. Android与iOS:谁更适合HTML 5?
  10. JAVA 中BIO,NIO,AIO的理解