20162323周楠 四则运算挑战出题

20162323周楠 四则运算挑战出题

需求分析

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

四则运算——挑战出题(只出题,不判题)

题目去重
程序一次运行生成的题目不能重复,即任何两道题目不能通过有限次交换+和×左右的算术表达式变换为同一道题目

要能指定生成题目的数量

要能指定题目包含的运算符数量

  • 任意两道题目不能重复,运算符的前后位置变化也算是重复,数字的前后位置变化也算是重复,这些情况统统都要排除
    -可以指定需要生成多少道题目,回答不上来的题目也可以空着,订正出正确答案

  • 指定生成的题目中的运算符的个数,也算是难易程度的一种,可以让生成的题目更加的智能化,有更多的选择性。

  • 自动生成一个四则运算题目,输入结果,回答完问题之后判断结果是否正确,再选择是否继续答题,以此循环。

  • 支持整数,并且要求能处理用户的输入,并判断对错,打分统计正确率。

  • 后续的可能拓展,可以选择题目的难度等级

设计思路

实现四则运算中后缀转换类

实现四则运算后缀表达式计算类

实现四则运算生成题目并判断正误

实现四则运算选择生成题目数量并开始作答

实现四则运算指定生成题目中的运算符数量(难易度)

  • 题目生成

    • 可以独立使用
    • 可以选择生成的题目数量
  • 题目运算及正误判断

    • 用到中缀表达式转后缀表达式
    • 实现四则运算生成题目并判断正误
  • 支持多语言系统

    • 支持中文简体、英文、中文繁体
  • 创建类

    • 创建一个后缀表达式的计算类

    • 创建一个后缀表达式转中缀表达式的转换类

  • 指定生成题目的数量

    • 输入需要多少题目,自动生成
  • 指定生成题目中运算符的个数

  • 题目生成并判断正误

    • 题目生成后开始作答
    • 不会的题目可以空着,判题时显示正确答案
    • 判断正误
  • 计算正确率

编写过程记录

PSP2.1 Personal Softwore Process Stage 预计耗时(分钟) 实际耗时(分钟) 重要成长
Planning 计划 20 30
Estimate 做这个任务需要多长时间 900 720
Development 开发 360 360
Analysis 需求分析(包括学习新技术) 30 30
Design Spec 生成设计文档 180 100
Design Review 设计复审(和同事审核设计软件) 300 100
Coding Standard 代码规范 (为目前的开发制定合适的规范) 60 60
Design 具体设计 300 240
Coding 具体编码 600 400
Code Review 代码复审 120 60
Test 测试(自我测试,修改代码,提交修改) 240 120
Reporting 报告 120 60
Test Report 测试报告 120 80
  | Size Measurement         |   计算工作量         | 20             |  20     |

| Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 60 | 30 | |

关键代码解释

public class OutPutTest { public static void main(String[] args) { IOPractice pra = new IOPractice(); try { pra.outFile(args[0], args[1]); } catch (IOException e) { System.out.println(e); } } }

  • 按照要求,将题目的个数和难易程度改为以参数的形式,实现在命令行中运行

运行过程截图

运行命令

我们编写的程序可以在idea里编译运行,在bash里编译,可是无法在bash里运用老师给出的测试工具运行

代码托管地址

[结对编程](http://git.oschina.net/zyl905487045/arithmeticchallenge2322-2323)

实验过程中遇到的问题及解决思路

  • 问题:我们编写的程序在idea里可以编译运行,但是在老师给出的测试工具里无法运行

  • 解决方案:我们在经过了近乎半天的努力之后(各种百度,问同学,反复检查代码),对代码删删减减涂涂改改,但还是始终没有办法运行,我们俩也没有什么头绪,我们实在无法自己解决这个问题,于是就询问了老师。在老师的帮助下,我们在命令行下执行命令:
javac -encoding UTF-8 src/Arhithmetic3/*.java

再将之前的class文件删掉重新编译。最终,我们的代码能够成功运行了。

评价

  • 结对编程中的两个角色
  • 领航员:20162322朱娅霖
  • 驾驶员:20162323周楠

我的结对小伙伴是20162322朱娅霖同学,这周的任务是首先进行需求分析,在前两周的编程学习中得到的经验和结果在这周可以接着运用,增加对自动生成的题目中的运算符的个数的指定,以此我个人觉得可以达到对难易度的要求,经过前两周的结对编程学习,我发现,平均下来,结对编程时间花销比单人编程增加不少时间,但也会比单人编程减少不少的代码BUG,已经在老师们的指点下逐步的熟悉结对编程的模式,如果再算上后期代码的维护,结对编程比单人编程更有效率,还更加节省成本。有效地避免了闭门造车,并可以减少后期的code review(代码复审)时间,在Design Review(设计复审)环节会节约时间成本,时间上算是非常的有效率了,两个人在一起结对编程,还能互相学习,从对方身上看到自己欠缺的地方,遇到困难也可以互相鼓励,共同解决,不像一个人时那样焦头烂额,耗费时间。

posted on 2017-06-04 21:50  GiggleKV  阅读(291)  评论(1)    收藏  举报

导航