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

结对项目

时间:2024-09-25 22:37:13浏览次数:1  
标签:结对 20 项目 30 括号 操作符 二叉树 表达式

| 这个作业属于哪个课程 | 22计科12班 |
| 这个作业要求在哪里 | 作业要求 |
| 这个作业的目标 | 实现一个自动生成小学四则运算的程序 |

姓名与学号
| 王展锐 | 3122004665 |https://github.com/r12-7/3122004665 |
| 达仁·江布尔 | 3122004420 |https://www.cnblogs.com/daren19 |

PSP

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

效能分析
效能分析

代码覆盖率

函数设计与实现
函数作用

函数名称 函数作用
CreateFormula() 随机生成四则运算式子,包含真分数
OptiExpression() 根据后缀表达式将其转换为二叉树的形式,方便后面判断是否重复并且防止出现负数
AdjustmentTree() 按规则优化二叉树,使其计算过程中不出现负数,并且中序遍历,生成查重使用的表达式,进行查重处理
TreeToExpression() 将二叉树重新转换为后缀表达式
SwapChildTree() 交换二叉树的左右孩子
calculate() 根据后缀表达式计算出结果
transform() 使用将中缀表达式转化为后缀表达式

关键函数
CreateFormula():生成 n 个包含随机操作符(+, -, *, ÷)、随机整数或分数的算术表达式。每个表达式可能包含括号来改变运算优先级,操作数的值在 1 到 m 之间。

OptiExpression():将算术表达式转化为二叉树,并对这棵树进行优化和表达式转换。

getCheckResult():计算题目的正确条数

calculate():计算

transform():表达式转换

测试



可能出现的异常以及解决方法
表达式解析错误:使用 expression.split("") 进行字符串拆分,这会将表达式逐字符拆分,例如 "12+34" 会变成 ["1", "2", "+", "3", "4"]
解决方法:使用正则表达式或 StringTokenizer 来正确解析操作数和操作符,避免将多位数字拆分开。例如,可以用 split("(?<=[-+/÷])|(?=[-+/÷])") 来正确分离操作符和操作数。

括号匹配不当:生成二叉树时,如果表达式中有括号,但括号不成对或顺序不对,可能会导致解析错误或生成错误的树结构。
解决方法:在解析表达式时,检查括号的匹配情况,确保左右括号数量一致,可以使用一个计数器来确保括号成对。

操作符处理缺陷:在操作符处理时,连续多个操作符或分隔符(如 "++", "--")会导致栈中的状态不一致。
解决方法:对于多个连续的操作符,加入判断,跳过多余操作符,或通过正则表达式处理特殊情况。

项目小结
1.结对编程需要考虑代码的可读性。团队协作当中,代码需要成员之间相互理解,制定一些标准,在必要的地方给出合适的注释是非常有必要的。
2.要合理分配工作,发挥团队效益。结对编程需要有合理的分工,发挥团队作用,提高彼此之间的沟通能力和团队协作能力,这些是个人编程所欠缺的。
3.兆康的资料搜索能力较强,但是python语言需要再系统学习一下。华健算法的设计思维较好,但是编码能力和成员沟通能力还需强化。

标签:结对,20,项目,30,括号,操作符,二叉树,表达式
From: https://www.cnblogs.com/wzrblog/p/18431644

相关文章

  • 五、软件测试(项目实施)的五种模型
    一、软件测试模型-瀑布模型1.特点阶段明确:分为计划、需求分析、软件设计、编码、测试、运行维护等阶段,各阶段任务目标清晰。文档驱动:每个阶段都产生相应文档,作为阶段成果和后续依据。顺序执行:严格按顺序进行,不能回溯。2.应用需求明确的项目:需求稳定时可有效规划。......
  • 【c++实战项目】从零实现一个高并发内存池
    主页:醋溜马桶圈-CSDN博客专栏:实战项目_醋溜马桶圈的博客-CSDN博客gitee:mnxcc(mnxcc)-Gitee.com目录1.项目介绍1.1 这个项目做的是什么?1.2这个项目的要求的知识储备和难度?2.什么是内存池2.1 池化技术2.2 内存池2.3 内存池主要解决的问题2.4malloc3.开胃......
  • SSM项目实战II基于SSM的培训机构运营系统(开发文档+数据库+源码)
    目录一、前言二、技术介绍三、系统实现四、论文参考五、核心代码六、源码获取全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者一、前言随着知识经济的兴起,教育培训行业迎来了前所未有的发展机遇。传统培训机构在追求教学质量的同时,也面临着运营管理效率提......
  • java项目发布后到Tomcat时,总是带一层路径解决方案
    java项目发布后到Tomcat时,总是带一层路径参考文章:java线上项目访问项目会多一层项目根路径根据参考文章写的这篇文章,部分文章细节有完善和改动在JavaWeb应用中,当你把应用发布到Tomcat时,如果应用的web.xml配置文件中的<context-root>元素被设置成了非根路径,或者你......
  • Day1 c++(发展历史,特点,面向对象核心术语,开发环境,新建项目,引用,窄化,输入,字符串,函数)
    1.C++发展历史(了解)1983年,贝尔实验室(BellLabs)的BjarneStroustrup发明了C++。C++在C语言的基础上进行了扩充和完善,是一种面向对象程序设计(OOP)语言。Stroustrup说:“这个名字象征着源自于C语言变化的自然演进”。还处于发展完善阶段时被称为“newC”,之后被称为“Cwi......
  • Java毕业设计-基于SSM框架的校园失物招领平台系统项目实战(附源码+论文)
    大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。......
  • Java毕业设计-基于SSM框架的网上奶茶店系统项目实战(附源码+论文)
    大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。......
  • 结对项目-四则运算
    github链接这个作业属于哪个课程班级的链接这个作业要求在哪里作业要求的链接这个作业的目标实现四则运算自动生成程序,结对协作开发姓名学号柳浩3122004444洪吉潮PSP表格PSP2.1PersonalSoftwareProcessStages预估耗时(分钟)实际耗......
  • 如何正确的在项目中接入微信JS-SDK
    微信JS-SDK的功能如果你点进来,那么我相信你应该知道微信的JS-SDK可以用来做什么了。微信的官方文档描述如下。微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包。通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照、选图、语音、位置等手机系统的......
  • 如何正确的在项目中接入微信JS-SDK
    微信JS-SDK的功能如果你点进来,那么我相信你应该知道微信的JS-SDK可以用来做什么了。微信的官方文档描述如下。微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包。通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照、选图、语音、位置等手机系统的......