ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

结对项目

2020-10-13 02:00:24  阅读:200  来源: 互联网

标签:10 结对 20 项目 真分数 生成 题目 表达式


软件工程 班级链接
作业要求 作业要求链接
作业目标 PSP+四则运算实现+团队合作体验+GitHub过程记录
作者 吴春丰3118005426 陈蜀毅3118005404

github地址

psp表格

各自合并之后

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

项目要求

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

Myapp.exe -n 10

将生成10个题目。

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

Myapp.exe -r 10

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

生成的题目中计算过程不能产生负数,也就是说算术表达式中如果存在形如e1− e2的子表达式,那么e1≥ e2。
生成的题目中如果存在形如e1÷ e2的子表达式,那么其结果应是真分数。
每道题目中出现的运算符个数不超过3个。
程序一次运行生成的题目不能重复,即任何两道题目不能通过有限次交换+和×左右的算术表达式变换为同一道题目。例如,23 + 45 = 和45 + 23 = 是重复的题目,6 × 8 = 和8 × 6 = 也是重复的题目。3+(2+1)和1+2+3这两个题目是重复的,由于+是左结合的,1+2+3等价于(1+2)+3,也就是3+(1+2),也就是3+(2+1)。但是1+2+3和3+2+1是不重复的两道题,因为1+2+3等价于(1+2)+3,而3+2+1等价于(3+2)+1,它们之间不能通过有限次交换变成同一个题目。
生成的题目存入执行程序的当前目录下的Exercises.txt文件,格式如下:

四则运算题目1
四则运算题目2
……

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

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

答案1
答案2

特别的,真分数的运算如下例所示:1/6 + 1/8 = 7/24。

程序应能支持一万道题目的生成。
程序支持对给定的题目文件和答案文件,判定答案中的对错并进行数量统计,输入参数如下:

Myapp.exe -e .txt -a .txt

统计结果输出到文件Grade.txt,格式如下:

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

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

其中“:”后面的数字5表示对/错的题目的数量,括号内的是对/错题目的编号。为简单起见,假设输入的题目都是按照顺序编号的符合规范的题目。

项目实现

1. 项目文件结构

main.py main函数
stack.py
Calculate.py 计算
infixTosuffix.py 转换后缀表达
generator.py 生成表达式

2. 分析

实现四则运算的方法不少,在这里使用了逆波兰表达式+栈的方法实现

表达式生成需要注意以下几点

  • 计算过程中不能产生负数
  • 数字数量可以随机
  • 0不能为除数
     利用列表先随机生成1~3个运算符存入一个列表,通过列表长度生成对应个数的操作数,如果除号后的操作数等于0则重新生成一个。
    操作数的类型统一为分数类型(Fraction类),整数的分母为1,但由于整数,带分数,真分数的显示格式不同,所以定义了一个str_num()的方法将分数转换为符合标准的字符串。

括号

插空法在运算符数组中随机成对插入括号,通过检测前后的运算符优先级判断是否需要插入括号。

计算

转化为波兰表达式后通过栈操作实现计算

3. 实现

  1. 主函数

  2. 生成表达式


4. 逆波兰表达


5. 计算

测试


1w题:

性能分析

代码覆盖率

项目小结:

吴春丰:团队合作编程中交流异常重要,如果在提前没有定好一系列参数及各种章程的话,遇到问题时所消耗的时间一定会比你提前讨论清楚所消耗的时间大的多的多
陈蜀毅:有声的交流重要,无声的交流(指注释)也是同样的,不偷懒改写的得写好才能提高效率

标签:10,结对,20,项目,真分数,生成,题目,表达式
来源: https://www.cnblogs.com/wxyzwcf/p/13806511.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有