首页 > 其他分享 >结对项目

结对项目

时间:2024-03-26 09:33:06浏览次数:25  
标签:60 结对 题目 项目 生成 运算符 integer generate

结对项目

这个作业来自哪个班级 https://www.cnblogs.com/Liao-Ying/p/18063083
这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/SoftwareEngineering2024/homework/13137
这个作业目标 结对完成一个小学运算题目自动生成的程序
姓名 学号
廖莹 3222004640
邓金玲 3221003139

github地址:https://github.com/3222004640/3222004640
一、PSP表格:

PSP Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 60 50
Estimate 估计这个任务需要多少时间 600 1000
Development 开发 1200 1000
Analysis 需求分析 (包括学习新技术) 240 360
Design Spec 生成设计文档 60 30
Design Review 设计复审 60 25
Coding Standard 代码规范 60 30
Design 具体设计 70 40
Coding 具体编码 1000 1200
Code Review 代码复审 60 50
Test 测试(自我测试,修改代码,提交修改) 120 80
reporting 报告 90 90
Test Report 测试报告 60 80
Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 60 50
总计 3680 4085

二、需求分析

  • 需求分析在题目的需求和说明中已经讲解的非常清楚了,在思考需求分析的时候,我发现有几点是比较难实现了。比如,e1− e2的子表达式,那么e1≥ e2该点,要确保e1>=e2,刚开始的我一直在思考如何把两个字符串算术表达式比较大小,后来发现python中有一个numexpr库,可以直接将其计算出来就可以比较大小了。

三、设计实现过程:
1、算法思路
(1)生成题目部分:本算法就通过随机生成数来控制生成题目的类型和运算符的个数,生成一个运算符的题目generate_integer_two()是通过随机生成两个数字和一个运算符来组成,生成两个运算的题目generate_integer_three()则是在generate_integer_two()的基础上再随机生成一个数字和一个运算符来组成,同理,generate_integer_four()是在generate_integer_three()的基础上形成的,在题目生成的基础上调用insert()随机插入(),每一次生成题目都会保证被除数不能为0,且调用计算函数calculation()判断结果会不会为负,如果为负则重新生成。
(2)计算答案部分:通过调用python的sympy库来计算,由于该方法计算出来的结果全部是分数,需要对结果进行进一步处理,如果分子能整除分母,则返回整数,如果分子不能整除分母,则将分数化成最简,且是真分数,如果计算结果为负,返回"0"。
(3)比较答案对错部分:打开两个要对比的文件,按行读取文件,然后比较,将相同的行数和不相同的行数分别记录下来。
2、函数调用



四、代码说明
(1)生成整数题目:
生成一个运算符的题目generate_integer_two()是通过随机生成两个数字和一个运算符来组成,生成两个运算的题目generate_integer_three()则是在generate_integer_two()的基础上再随机生成一个数字和一个运算符来组成,同理,生成三个运算符是在生成两个运算符的基础上形成的



(2)生成分数题目
分数的本质是除法,生成一个分数需要两个数字和一个"",生成的每一个分数都要判断是否符合规范,不符合需要化简



(3)随机插入括号:通过生成随机数控制插入括号的个数,观察左右括号能插入的位置,随机插入,比如左括号可以插入的位置数字的前面,可以是0、2...表达式结尾前两个位置



五、测试运行:
单元测试部分代码:





单元测试覆盖率:



运行结果:就目前测试来看,根据题目运算出来的结果没有问题,每个函数也通过了单元测试,所以我们认为这个程序应该没有问题





六、性能分析:

目前本算法中消耗最大的函数是generate_integer_two()和static_error(),因为无论生成运算符为多少个的题目都会调用它generate_integer_three(),而statistics_error()需要对比文件每一行内容,我们并没有想到这个函数消耗那么大。
改进思路:对于generate_integer_two()采用递归的办法生成题目,每次生成一个子表达式,深度减1,直至深度为0。由于题目要求运算符不能超过三个,所以本题采用递归的方法效率比上面的算法效率更高,但是由于时间关系,只是初步完成了该算法生成题目的部分,还没有实现全部要求,故没有将优化后的程序及代码放出来,但是后续我们会继续完成利用该算法实现的程序,而对于statistics_error(),目前还没有想到更好的办法。



七、项目小结
成败:虽然我们的程序已经实现了大部分要求,但程序在生成题目和计算上还有一些缺陷,比如分数的运算只实现了一位运算符这一种情况(性能优化那里提出的方法可以解决这一问题)还有有题目的查重没有实现。
感受:
邓金玲: 我和廖莹同学一起完成了这个项目,从思考题目的要求到使用代码实现,我们都在每一次编写代码中学习到更多的编程知识以及python中一些常用的库的用法,同时学到python社区版如何对代码进行性能分析和性能改进的方法。这是一次宝贵的经验,我们都很认真和努力特别是廖莹同学,每次讨论有不懂得地方,她都会很认真的为我讲解,有与她不同的思路她也愿意和我一起讨论思考。这个项目仍有不足,不过我们都会继续努力提高自己的编程能力
廖莹:这是我第一次和同学一起结对编程,从审题到具体实现,每一次的交流与讨论我都能从邓金玲同学那里获得新的思路、收获惊喜,她总能想到很巧妙的算法解决问题,而我自己想出来的算法很普通、效率也很低下。这次项目从她带给我的一些启发和思路,对我以后也是很有帮助的。

标签:60,结对,题目,项目,生成,运算符,integer,generate
From: https://www.cnblogs.com/Liao-Ying/p/18090895

相关文章

  • springboot项目的目录顺序
    在idea上自动生成的springboot项目中一定要注意文件的上下顺序此时在项目运行时并不会报错但是不会执行utils下的类此时 此时 utils下的类是一个解析类可以解析一份存放在resources下的一份emp.xml文件并把解析后的数据返会给一个集合,因为此时不会执行utils下的类所以......
  • 一天涨 23k Star 的开源项目「GitHub 热点速览」
     ​在GitHub上做过开源项目的小伙伴,可能都经历过截图自己项目100Star、1000Star的时刻,但有些时候事情发生的太快来不及截图,因为可能一觉醒来就破万了。这件事看似有些天方夜谭,但放在马斯克的身上就不足为奇了。就在昨天,马斯克在GitHub上开源了Grok-1大模型,一天时间......
  • 「薪酬设计」某维修服务公司维修技术人员薪酬体系设计项目纪实
    ——搭建合理薪酬制度,有效激励维修技术人员本次薪酬体系设计项目持续的时间比较长,前后大约持续了半年时间,华恒智信团队对公司的多个模块都给予了分析,提供了建议方案,专家比较细心,服务很全面,我们对其问题诊断和方案设计都一致地肯定。在项目开展的过程中,以赵磊老师为首的咨询团......
  • 【薪酬设计】某纺织企业薪酬体系设计管理咨询项目纪实
    作为一家传统型的纺织企业,我公司在基层员工的薪酬管理方面问题重重。由于缺乏专业的人力资源知识和管理实践,我们开始寻求人力资源专家:华恒智信的帮助。华恒智信专家团队对我公司进行了为期3周的认真细致、深入缜密的调研和访谈,做出了具有较高专业性的诊断报告,提出了专业的分析......
  • [附源码]计算机毕业设计大学生创新项目管理系统(JSP+java+springmvc+mysql+MyBatis)
    本项目包含程序+源码+数据库+LW+调试部署环境,文末可获取一份本项目的java源码和数据库参考。项目文件图项目介绍随着高等教育的不断发展,大学生创新项目成为培养学生创新能力和实践能力的重要途径。有效的项目管理对于确保创新项目的顺利进行和高质量完成至关重要。然而,目前......
  • 【macOS】删除“登陆项 - 允许在后台”卸载残留项目
    ✨“登陆项-允许在后台”更新了macOSVentura后,系统设置页面大改除了用户登陆项管理外还可以更改“允许在后台”项目然而许多软件卸载后在“登陆项-允许在后台”会出现残留项目下面给出解决方案✨删除卸载残留“允许在后台”项目Terminal运行以下命令sudo--bash-c......
  • 基于vue+Springboot后台前后端分离项目:购物商城设计与实现(源码+文档+安装部署)
      博主介绍:黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。所有项目都配有从入门到精通的基础知识视频课程,学习后应对毕业设计答辩。项目配有对应开发文档、开题报告、任务书......
  • 结对项目
    结对项目这个作业属于哪个课程https://edu.cnblogs.com/campus/gdgy/SoftwareEngineering2024这个作业要求在哪里https://edu.cnblogs.com/campus/gdgy/SoftwareEngineering2024/homework/13137这个作业的目标完成团队协作姓名黄诃华欧文杰学号3122......
  • 结对项目
    这个作业属于哪个课程https://edu.cnblogs.com/campus/gdgy/SoftwareEngineering2024这个给作业要求在哪里https://edu.cnblogs.com/campus/gdgy/SoftwareEngineering2024/homework/13137这个作业的目标实现一个自动生成小学四则运算题目的命令行程序合作人员......
  • 海量数据处理项目-阿里编码规范里面Manager分层介绍和开发规范说明
    ......