项目简介:

实现一个自动生成小学四则运算题目的命令行程序。

项目相关要求:

使用 -n 参数控制生成题目的个数

使用 -r 参数控制题目中数值(自然数、真分数和真分数分母)的范围,例如:Myapp.exe -r 10

将生成10以内(不包括10)的四则运算题目。该参数可以设置为1或其他自然数。该参数必须给定,否则程序报错并给出帮助信息。

3. 生成的题目中计算过程不能产生负数,也就是说算术表达式中如果存在形如e1 − e2的子表达式,那么e1 ≥ e2

4. 生成的题目中如果存在形如e1 ÷ e2的子表达式,那么其结果应是真分数。

5. 每道题目中出现的运算符个数不超过3个。

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

生成的题目存入执行程序的当前目录下的Exercises.txt文件,格式如下:

1. 四则运算题目1

2. 四则运算题目2

……

其中真分数在输入输出时采用如下格式,真分数五分之三表示为3/5,真分数二又八分之三表示为2’3/8。

7. 在生成题目的同时,计算出所有题目的答案,并存入执行程序的当前目录下的Answers.txt文件,格式如下:

1. 答案1

2. 答案2

8. 程序应能支持一万道题目的生成。

9. 程序支持对给定的题目文件和答案文件,判定答案中的对错并进行数量统计,输入参数如下:

Myapp.exe -e <exercisefile>.txt -a <answerfile>.txt                   (实现)

统计结果输出到文件Grade.txt,格式如下:                              (未实现)

Correct: 5 (1, 3, 5, 7, 9)

Wrong: 5 (2, 4, 6, 8, 10)

解题思路:构造number类进行随机数以及随机运算符的产生。

构造calculate类进行利用后缀表达式判断运算符优先级以及表达式运算。

查重操作部分利用了将运算符以及运算数相比较是否相同来检查生成表达式是否相同。但是其中有个严重的问题在于会出现1+2+3与3+2+1是相同的运算表达式。

与其他同学商量过,借鉴了其他同学利用后缀表达式查重,利用二叉树进行判断重复的方法,但是在功能实现依旧出现问题,最后仍未解决这个问题。

关键代码:

定义运算符优先级:

出现负数情况将顺序调转:

测试截图:

生成5条表达式:   五条表达式的答案:

生成10000条表达式:   10000条表达式答案:        

PSP表格:

PSP2.1

Personal Software Process Stages

预估耗时(分钟)

实际耗时(分钟)

Planning

计划

80

120

· Estimate

· 估计这个任务需要多少时间

100

120

Development

开发

1850

2230

· Analysis

· 需求分析 (包括学习新技术)

100

120

· Design Spec

· 生成设计文档

50

80

· Design Review

· 设计复审 (和同事审核设计文档)

50

50

· Coding Standard

· 代码规范 (为目前的开发制定合适的规范)

40

40

· Design

· 具体设计

150

210

· Coding

· 具体编码

900

960

· Code Review

· 代码复审

50

60

· Test

· 测试(自我测试,修改代码,提交修改)

300

350

Reporting

报告

30

40

· Test Report

· 测试报告

30

30

· Size Measurement

· 计算工作量

10

10

· Postmortem & Process Improvement Plan

· 事后总结, 并提出过程改进计划

50

30

合计

1970

2340

项目总结:这次结对编程考验了两人之间的合作,一个人编程,另外一个人可以在一旁很清晰的看见编码过程中对方的优点缺点。这样可以更好地督促两者编码能力,但是在编码过程中另外一个人观察自己编码是一件不容易的事情,总会感到十分犹豫而不动手。不过在软件开发的过程中,代码都是开放透明的,所以这一点需要调整,做到更加从容。在开发过程中遇到了许多问题,自己承认程序功能有些并未完成,依然有些bug未修复。编码能力不够过关,有些功能实现借鉴网上以及同学之间的代码从而实现。有些功能想法正确却由于自己编程能力不足而无法实现导致,就如同查重操作,在与吴昊同学交流过后认为比较运算符以及运算数是一种只解决表面的问题,但是因此也出现了一些BUG。通过这几次软件工程的作业,深刻发现到自己编码能力上的薄弱,也想更加的学好这门学科,多加的在平时日常编写更多的程序。

github地址:https://github.com/mingzzzZZ/-

转载于:https://www.cnblogs.com/mingz/p/9727375.html

结对编程java实现四则运算(张铭 吴昊)相关推荐

  1. 20172311『Java程序设计』课程 结对编程练习_四则运算第一周阶段总结

    20172311『Java程序设计』课程 结对编程练习_四则运算第一周阶段总结 结对伙伴 学号 :20172307 姓名 :黄宇瑭 伙伴第一周博客地址: http://www.cnblogs.com/ ...

  2. 20165101刘天野 2017-2018-2 《Java程序设计》 结对编程练习_四则运算(第二周)

    20165101刘天野 2017-2018-2 <Java程序设计> 结对编程练习_四则运算(第二周) 一.需求分析 能随机生成n道四则运算题目,n由使用者输入 支持分数运算 支持多运算符 ...

  3. 20165236 2017-2018-2 《Java程序设计》结对编程练习_四则运算

    20165236 2017-2018-2 <Java程序设计>结对编程练习_四则运算 结对小组:叶佺.郭金涛 一.需求分析: 1.能随机生成n道四则运算题目,n由使用者输入: 2.支持多种 ...

  4. 20175208『Java程序设计』课程 结对编程练习_四则运算

    20175208 结对编程练习_四则运算(第一周) 结对成员:20175208张家华,20175202葛旭阳 一.需求分析: 实现一个命令行程序,要求: (1)自动生成指定数量的小学四则运算题目(加. ...

  5. java 编程联系_《JAVA程序设计》结对编程联系_四则运算(第二周:整体性总结)...

    #结对对象与其博客链接 20175312陶光远:https://www.cnblogs.com/20175312-tgy/p/10697238.html #需求分析 (一)功能需求 1.自动生成题目( ...

  6. java 编程联系_《JAVA程序设计》结对编程联系_四则运算(第一周:阶段总结)...

    结对对象与其博客链接 需求分析 (一)功能需求 1.自动生成题目(本周已完成) 可生成包含不同运算符个数的题目 2.题目运算(判题)(这周先做了真分数,运算和后缀计算打算下周做) 实现中缀表达式转为后 ...

  7. 20172302『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结

    一.结对对象 姓名:周亚杰 学号:20172302 担任角色:驾驶员(周亚杰) 伙伴第二周博客地址 二.本周内容 (一)继续编写上周未完成代码 1.本周继续编写代码,使代码支持分数类计算 2.相关过程 ...

  8. 结对编程:小学四则运算

    文章目录 学生个人信息 作业基本信息 一.Gitcode作业链接 二.PSP表格 三.效能分析 代码覆盖率 性能测试 四.设计实现过程 函数作用 函数调用关系 五.代码说明 1. generate(n ...

  9. 20165330 结对编程项目-四则运算 第一周

    需求分析 实现一个命令行程序,要求:自动生成小学四则运算题目(加.减.乘.除) 可实现多个运算符一起运算 可以真分数形式输出结果 测试结果的正确性 统计题目完成数并计算正确率 设计思路 实验首先是完成 ...

最新文章

  1. Linux RSS/RPS/RFS/XPS对比
  2. python subprocess.Popen 使用简介
  3. 浅析那些你不知道的提升企业网站转化率的SEO优化技巧 !
  4. CST导出farfield远场文件至txt存在的缺陷
  5. sqlserver还原差异备份
  6. 阿里数据总监分享《阿里数据中台建设实践案例》,PPT+语音讲解!
  7. 作者:王建新(1969-),博士,中南大学信息科学与工程学院教授,中国计算机学会高级会员。...
  8. element-ui select单选切换多选问题解决
  9. Grunt-jsdoc生成JS API文档
  10. Effective C++ 条款 50:了解new和delete的合理替换时机
  11. python少儿图形编程软件_现在最好的少儿编程软件是什么?
  12. Scope参数错误或没有Scope权限解决方法
  13. 监控服务器系统密码忘了怎么办,监控服务器系统配置密码
  14. Sql server 实现增删改查
  15. 《使用Java实现一元二次方程求根计算器》改进版
  16. sketch导出html可以跳转,Sketch导入、导出功能说明及技巧
  17. 《计算机视觉工程师养成计划 》·数字图像处理·数字图像特征·链码
  18. linux新建挂载目录命令,告诉你Ubuntu添加新分区并设置挂载点的方法及命令
  19. 操作系统笔记(王道)(持续更新中)
  20. 计算机地图制图成图方法,第五章 地图成图方法.ppt

热门文章

  1. PostGreSQL语法及高级功能(2022-06-08补充中)
  2. Mybatis源码解析——入门级
  3. Java环境安装步骤
  4. 微服务 中台架构演进
  5. Linux下按照时间段过滤日志
  6. JPA @PersistenceContext和@Transactional Annotation
  7. 《ARM学习手札》----B、BL、BX、BLX 和 BXJ
  8. 全国计算机考试进制计算器吗,进制数换算器(十六进制计算器在线)
  9. reverse方法(自己实现)
  10. 极大后验概率(MAP)- maximum a posteriori(转载)