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

结对项目

时间:2024-09-18 09:12:32浏览次数:10  
标签:结对 项目 算式 代码 30 生成 计算

这个作业属于哪个课程 软件工程
这个作业要求在哪里 结对项目
这个作业的目标 与同学一起完成结对项目(四则运算自动生成程序)并进行测试

项目成员

本次结对项目由

  • 艾彬 学号 3122004730
  • 陆宇星 学号 3122004491

共同完成

正文

github地址

本次作业的代码已上传github,地址: 结对项目

PSP表格

根据作业要求,我们使用PSP表格预测并记录下队伍完成各部分的时间

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

设计实现过程

代码说明

效能分析

初版本效能分析如下:


观察总结得,在重新生成算式的部分有改进的空间

  • 重新审视题目,发现对“计算过程中不能产生负数”这一要求的实现有误,代码中对重新生成算式的依据是算式结果的判负。于是对此进行改进,以下是改进后的效能分析图:

观察得,本程序中消耗最大的部分为com.pair.CreatePromblem.ProblemAnalysis.create函数,主要的原因是一旦在计算过程中生成负数字,程序就需要调用自身以生成新的算式,极大提高了这部分的消耗。

设计实现过程

目录结构

  1. Main类 主类,负责接收并分析命令行参数与调用其他模块
  2. ReadFile类 读取文件类,根据路径读取文件的文本内容并返回
  3. OutputFile类 写入文件类,根据路径将数组数据写入文件
  4. ProblemAnalysis类 算式生成类,储存有各类符号常类,负责循环生成算式并判断算式是否正确重新生成等功能
  5. ProblemCheck类 算式检查类,负责对比算式与算式,答案与答案是否重复,决定是否重新生成算式
  6. ResultComputation类 结果计算类,负责整理算式、真假分数化简转换,并以假分数先乘除后加减计算
  7. ResultCheck类 结果检查类,负责调用读写文件类和结果计算类,判断结果是否正确
  8. BaseException类 异常类,作为异常的基类
  9. InsufficientParametersException类 异常类,继承基类的命令行参数缺失异常

简要流程

代码说明

本部分是生成算式的代码部分,随机循环1到3次,生成1到3个运算符的算式,其中也有随机生成括号的功能,利用flag把控左右括号的统一生成,避免括号嵌套和无意义的括号生成。

生成算式具体代码

本部分是结果计算类的计算部分,由于真分数的分割、计算、再拼接过于繁琐,因此我们采用将算式的真分数部分转换为假分数部分,再通过分子分母分离的计算方式进行计算,在最终结果时提供一个化简为真分数的函数返回算式结果。

计算具体代码

测试运行

我们通过测试不断生成10000条算式并积极寻找异常,其中大有 7/0/2、0'1/2、6'0/5 等各种错式,我们不断分析各种情况改进化简函数和计算函数,将其一一排除

测试代码

覆盖率

异常处理说明

  • 异常处理基类:BaseException
  • 命令行参数缺失异常处理类:InsufficientParametersException

项目小结

  • 艾彬:这是我首次尝试与他人一同完成编程作业,起初些许紧张与不安。但我的队友展现的出色代码能力消解了我的紧张,在他身上我看到了许多值得学习的地方,这是一次愉快的合作。
  • 陆宇星:与队友的代码思路讨论让我受益很多,一起写代码时,他总能及时校验复查到我的思维盲区,给我带来了很好的合作体验。我们在项目中不仅相互分工,还经常分享各自的经验和技巧,这种互动让我在代码质量和效率上有了显著提升。通过深入的交流和问题讨论,我也学到了许多新的编程模式和优化方法。更重要的是,合作过程中培养了彼此的信任与默契,让我们在面对复杂任务时能够更快速地达成共识,解决问题的过程更加高效、顺畅。

标签:结对,项目,算式,代码,30,生成,计算
From: https://www.cnblogs.com/lyx1908/p/18417923

相关文章

  • 使用pnpm、monorepo 来构建 vue + 独立组件库项目
    新建项目使用pnpm进行安装pnpmcreatevue@latest在根目录下创建pnpm-workerspace.yaml文件packages:-'components/**'此处,components为根目录中的components文件夹,他是独立于我们项目的一个组件库,不包含在src内,此时目录结构如下:root-components-node_modules......
  • 结对对对项目
    结对对对项目这个作业属于哪个课程软件工程课程这个作业要求在哪里个人项目-作业-计科22级34班-班级博客-博客园(cnblogs.com)这个作业的目标按照要求写一个四则运算生成器成员一3122004883许億驰任务列表[x]1.实现命令行程序:创建一个命令行......
  • 开源项目dotnet/eshop 和 dotnet/eshopsupport
    dotnet/eshop[1]和dotnet/eshopsupport[2]是两个与.NET相关的开源项目,分别用于展示电子商务应用的不同方面。dotnet/eshop:功能与架构:dotnet/eshop是一个基于.NETAspire的参考电商应用,展示了服务架构在构建现代在线购物平台中的应用。项目涵盖产品目录、购物车和订单管理......
  • 【JDK8新特性】Stream API 结合Lambda语法在项目中的实战应用
    Lambda语法回顾在JDK8中,Lambda表达式支持的引用类型主要有以下几种,如表1所示。种类Lambda表达式示例对应的引用示例类名引用普通方法(x,y,...)->对象名x.类普通方法名(y,...)类名::类普通方法名类名引用静态方法(x,y,...)->类名.类静态方法名(x,y,...)......
  • 实景三维助力工程建设项目智慧选址
    随着科技的不断进步,实景三维技术已经成为城市规划和工程建设中不可或缺的一部分。它通过高精度的地理信息数据,为工程建设项目提供了智慧选址的新思路。1.实景三维技术简介实景三维技术,是一种利用遥感、地理信息系统(GIS)、三维建模等技术手段,将现实世界的地理信息......
  • 项目测试用例:
    项目概述该项目是一款网上点餐系统,满足普通商家和普通用户的基本需求,主要有两大功能模块,分别是管理员模块(商家端)和用户模块(客户端)。系统供管理员登录和普通用户,登录进去会有对应相关管理操作:商家端主要实现了对员工和菜品的增删改査以及订单相关数据的查看与分析,客户端基于......
  • 如何使用Maven将项目中的依赖打进jar包
    需求有时候写一些库,需要其它三方依赖,但是又不想这个依赖影响到使用方,可以将这些三方依赖打到自己的项目jar包,并且更换包名,避免冲突(更换包名之后,项目中的类引用第三方依赖的类import语句也会跟着变化)。如Mybatis就使用了Ognl库,在打包时把Ognl的所有类都打到了Mybatis自己的jar中......
  • 系统架构设计师教程 第5章 5.7 软件项目管理 笔记
    5.7软件项目管理★★☆☆☆5.7.1项目管理概述软件项目管理的对象是软件工程项目。它所涉及的范围覆盖了整个软件工程过程。为使软件项目开发获得成功,关键问题是必须对软件项目的工作范围、可能风险、需要资源(人、硬件/软件)、要实现的任务、经历的里程碑、花费工作量......
  • 网络编程速递小项目
    一.项目需求功能描述:仿照顺丰速运功能,实现一个自己的速递项目。自行定义项目名,最终可以提现到简历中服务器:处理客户端的请求,并将数据存入数据库中,客户端请求的数据从数据库进行获取,服务器转发给客户端。用户客户端:实现账号的注册、登录、注销、修改用户密码功能,当登录成......
  • 在远程的ubuntu服务器安装了rust环境,本地的windows上也安装了VSCode并且连接到了ubunt
    你已经在Ubuntu服务器上安装了Rust环境,并且在本地Windows上安装了VSCode并通过Remote-SSH扩展连接到了Ubuntu服务器。接下来,我将指导你如何在Ubuntu上创建一个Rust项目,并使用VSCode进行开发和调试。步骤1:在Ubuntu上创建Rust项目连接到Ubuntu服务器(......