结对项目
结对项目
这个作业属于哪个课程 | < 网工1934-软件工程 > |
---|---|
这个作业要求在哪里 | 作业要求 |
这个作业的目标 | 实现一个自动生成小学四则运算题目的命令行程序 |
队员: 3119005398周晋轩 3119005369高子淇
本项目已上传结对项目github
last更新:添加图形化界面并生成.exe可执行文件
一、psp表格
PSP | Personal Software Process Stages | 预估耗时(分钟 | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 30 | 20 |
Estimate | 估计这个任务需要多少时间 | 30 | 10 |
Development | 开发 | 1000 | 360 |
Analysis | 需求分析(包括学习新技术) | 120 | 30 |
Design Spec | 生成设计文档 | 30 | 10 |
Design Review | 设计复审 | 30 | 20 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 60 | 30 |
Design | 具体设计 | 10 | 5 |
Coding | 具体编码 | 120 | 120 |
Code Review | 代码复审 | 20 | 5 |
Test | 测试(自我测试,修改代码,提交修改) | 60 | 30 |
Reporting | 报告 | 30 | 40 |
Test Repor | 测试报告 | 20 | 10 |
Size Measurement | 计算工作量 | 10 | 10 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 30 | 15 |
Total | 总计 | 2000 | 600 |
二、效能分析
生成题目答案模式下,要用到计算模块生成答案;阅卷模式下,也要用到计算模块检查正误。因此无论何种模式下cal()计算函数是最频繁调用也是消耗最大的函数
生成题目和答案模式下的性能分析
阅卷模式下的性能分析
三、设计实现过程
核心思想
使用fractions*模块将算式中的数字实例化并替换为Fraction类,保持分数运算、输出、读取。实际上是字符串替换和exce()*的运用
*fractions 模块提供了分数类型的支持
*exec 执行储存在字符串或文件中的 Python 语句
主要函数及作用
- cal()计算模块
- getqst()生成题目
- getans()生成答案
- check()阅卷模块
四、代码说明
本程序将功能分为两块:生成模式和阅卷模式,命令行参数-n-r为生成模式,-e-a为阅卷模式
五、测试运行
命令行输入展示
生成模式 main.py -n 10 -r 10
阅卷模式 main.py -e Exercises.txt -a Answers.txt
生成文件展示
本程序支持生成10000道题目的生成
项目小结
周晋轩:本次结对项目是本人为数不多合作开发的经历之一,在这次结对项目中,我和队友首先明确了项目主要结构和总体方向,然后在开发中积极讨论和互相学习,相信我们都从合作中得到了许多经验,感受到合作带来的效率提升,经队友指出也发现了各自在开发中的许多不足之处。虽然在合作过程中还是不可避免地走了不少弯路,但是我认为我们都在享受其过程和完成项目后的喜悦!
高子淇:这次项目一开始觉得很简单,后来分工开始写自己部分的时候,发现需要考虑问题非常多,尤其是符号处理和括号优先级。还有在处理减法非负的问题以及在除数位置上的减法非零问题都花了比较多的时间。两个人合作完成度很高,基本上问题都在讨论后得到了解决,学到了如何完成一个多人项目
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!