软件工程结对项目
结对项目
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/ |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/homework/13230 |
这个作业的目标 | 结对完成四则运算生成器 |
项目成员
- 伍绍雄 学号 3122004753
- 陈鸿航 学号 3122004732
Github
GitHub地址https://github.com/cywoo-1?tab=repositories
PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 40 | 30 |
Estimate | 估计这个任务需要多少时间 | 30 | 30 |
Development | 开发 | 400 | 330 |
Analysis | 需求分析 (包括学习新技术) | 240 | 120 |
Design Spec | 生成设计文档 | 30 | 20 |
Design Review | 设计复审 | 10 | 10 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 15 | 20 |
Design | 具体设计 | 50 | 40 |
Coding | 具体编码 | 350 | 360 |
Code Review | 代码复审 | 60 | 70 |
Test | 测试(自我测试,修改代码,提交修改) | 30 | 50 |
Reporting | 报告 | 60 | 50 |
Test Report | 测试报告 | 60 | 40 |
Size Measurement | 计算工作量 | 30 | 10 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 10 | 10 |
Total | 合计 | 1415 | 1190 |
设计实现说明
函数设计
- reset_ui:用于重置整个页面,重新获取输入的题目
- input_num:获取输入的题目
- input_answer:获取输入的答案
- compare_answer:用于比较原答案和用户输入答案的对错
- answer_table:用于生成答题的区域
- get_last_framee:用于排版和美化界面
- generate_question:调用外部函数生成题目,并展示
- generate_answer: 获取文件中的答案并存入字典中
- upload_file :获取上传的文件
- submit_answers_file:用于上传答案文件比进行比对
效能分析
代码说明
random_generation:
作用:用于生成四则运算题目,并确保生成的题目符合要求‘没有负数,题目中的算术符不超过三个,生成数值大小可以控制,随机产生括号’
实现:使用python库中的random.randint函数控制生成数的大小,random.choice函数控制算术符和括号的生成
calculation:
作用:用于将后缀表达式计算出对应的数值大小,并确保e1÷ e2的子表达式,其结果应是真分数
实现:通过使用栈的结构,按顺序弹出对应的算术符号和数值,并且使用Fraction函数进行分数之间的运算
infix_converts_suffixes:
作用:用于将输入的中缀表达式转化为后缀表达式
实现:使用字典将运算符号进行分级,只有比栈中的运算符号更高一级才可以压栈,否则将弹栈,而遇到数值则直接进栈
read_file:
作用:读取用户上传的问题文件并且计算出对应的结果后输出到答案文件中
测试运行
1.这个测试确保了compare_answer方法在各种情况下都能正确地比较答案并给出正确的结果。
2.这个测试确保了reset_ui方法能够正确地将界面重置为子组件数量不超过特定值的状态,并且保证了相关方法的可调用性。
3.这个测试确保了input_num方法能够正确处理整数输入并给出适当的反馈。
4.这个测试保证了input_answer方法能够正确地获取和处理多个答案输入。
5.这个测试确保了answer_table方法能够根据输入数据正确地创建相应数量的输入框和标签,并正确地管理界面中的框架。
6.这个测试确保了get_last_frame方法能够正确地找到根窗口中的最后一个框架,如果没有框架则返回None。
7.这个测试保证了generate_answer方法能够正确地生成答案字典,并且与外部文件的内容相关联。
8.这个测试保证了test_infix_converts_suffixes方法能够将中缀表达式正确的转化为后缀表达式。
9.这个测试保证了test_calculation方法能够将后缀表达式的算术值正确的输出。
10.这个测试保证了random_generation方法能够正确的随机生成算术表达式
测试结果
界面:
生成题目:
生成答案:
核对答案:
代码覆盖率
通过python安装的coverage进行代码覆盖率测试
项目小结
通过这次结对项目,懂得了如何事先进行交流和沟通,来进行合理的任务分配,再编写各自任务的过程中,对于一些细节要进行沟通,方便在后面进行代码的整合,对于个人的代码书写要更具有独立性。