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

结对项目

时间:2024-03-25 21:24:51浏览次数:23  
标签:20 结对 题目 项目 生成 60 FileOperation 表达式

结对项目

作业所属班级 https://edu.cnblogs.com/campus/gdgy/SoftwareEngineering2024
作业的要求 https://edu.cnblogs.com/campus/gdgy/SoftwareEngineering2024/homework/13137
我理解的作业目标 完成四则运算的算法完成以及软件开发到应用的实现

本项目由 郭亮(学号:3122004520)、黄俊超(学号:3122004524)合作完成

github链接

https://github.com/shishuiliuqing/project

PSP表格

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

效能分析


可以看到String类的调用较多,这是将真分数转化为假分数便于计算带来的代价,同时HashMap调用也非常频繁,这是因为在大量生成题目和判题时会多次使用到哈希表,在生成题目数量巨大时,我们认为这样的消耗是可以接受的。

设计实现

本次项目满足了多项需求,包括多道题目的生成,每一道题目答案的计算,对重复题目的检查(包括对交换律等形式不同而本质一样的题目的筛查),答案的比对等需求。
其由四个类组成,分别为Main类、FileOperation类、ArithmeticExpression类、Fraction类组成。
其中Main类读取命令行参数,然后调用FileOperation类,FileOperation类中可以通过调用ArithmeticExpression类进行题目生成,然后在FileOperation类中进行题目判断。而Fraction类的功能是将数字转化为假分数进行计算,然后再将结果转化为真分数输出满足需求,其通过ArithmeticExpression类来调用。

具体代码设计

算术表达式的生成

生成随机不重复的算术表达式由ArithmeticExpression类完成,也是本次项目中主要的难点。为了便于查重与括号的生成,我们将一个小的算术表达式作为一个表达式的基本元素,这个元素可以是一个数字或者式子,通过递归的方法将各个小表达式组合生一个完整的表达式。在计算答案的过程中每一个元素都有着独立的优先级,相当于是自带了一个括号,然后我们再通过对题目的解析,判断是否将括号加上。其储存形式如下图,每一行都代表一个元素,先确定符号个数,再随机出每一个元素的符号个数,如果符号个数有剩,那就继续生成下一个元素。

再筛选重复题目的过程中,我们将输入一个题目,返回一个字符串数组,里面包含自身与有限交换的所有结果,以此来排查所有可能出现的重复题目。
运行结果如下:

计算生成的算术表达式

在计算的过程中,由于考虑到分数的存在,我们将所有的数字都转化成了分数的形式,用假分数的方法进行计算,然后再将其转化为标准的形式进行输出。

命令行参数读取

Main中找到命令行参数中的"-n""-r""-e",并读取其后的字符串,交给其他功能,比较简单,不再赘述。

题目判断

在FileOperation类中完成,在生成好所有的题目与答案后,从指定文件中获取答案进行比对,再将评判结果输出到指定文件,其运行结果如下:

测试运行



总结

在结对编程中,我们保持了高效的沟通,在编程过程中遇到的问题也能够及时的发现。而且思维的碰撞也可以帮助我们得到更有效的算法,在不断的讨论和优化中很快构建出程序的雏形。编程过程中,我们有时两人共同讨论难题,有时分工解决问题,使得项目的进行十分顺利,两人都得到了许多收获。

标签:20,结对,题目,项目,生成,60,FileOperation,表达式
From: https://www.cnblogs.com/miaomiao-QAQ/p/18094292

相关文章

  • 结对项目
    |这个作业属于哪个课程|软件工程||-----------------|---------------||这个作业要求在哪里|结对项目||这个作业的目标|完成四则运算生成,熟悉结对流程|结对成员陆靖3122004621陈家谦3122004602GitHub链接仓库psp表格PSP2.1PersonalSoftwareProc......
  • 结对项目
    这个作业属于哪个课程https://edu.cnblogs.com/campus/gdgy/SoftwareEngineering2024/这个作业要求在哪里https://edu.cnblogs.com/campus/gdgy/SoftwareEngineering2024/homework/13137这个作业的目标通过合作完成一个四则运算项目来了解项目开发流程项目合作......
  • Flink API的四层抽象级别是什么?能用实际项目案例讲解一下吗? Flink API的四层抽象级别
    FlinkAPI的四层抽象级别是什么?能用实际项目案例讲解一下吗?首先,FlinkAPI的四层抽象级别是指:最底层抽象:ProcessFunctionAPI、核心API:DataStreamAPI、TableAPI、SQL。这四个抽象级别可以比作烹饪中的不同方式,从简单的速食制作到复杂的大餐烹饪。1.最底层抽象:ProcessFunctionAP......
  • 【旅游景点项目日记 | 第二篇】基于Selenium爬取携程网景点详细数据
    文章目录3.基于Selenium爬取携程网景点详细数据3.1前提环境3.2思路3.3代码详讲3.3.1查询指定城市的所有景点3.3.2获取详细景点的访问路径3.3.3获取景点的详细信息3.4数据库设计3.5全部代码3.6效果图3.基于Selenium爬取携程网景点详细数据3.1前提环境确保安装pytho......
  • SpringBoot3项目使用Knife4j时访问doc.html出现Knife4j文档请求异常且开发者工具网络
    1.在各个pom.xml中替换Knife4j的依赖版本,升级为4.0以上,如果找不到依赖可以在Maven配置中多添加几个镜像,或者使用汉化插件重启IDEA;<dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId......
  • 在线试题答题考试系统项目开发搭建源码
    这是关于在线试题答题考试系统项目的程序开发:PHP+MySQL程序演示:http://ks1.yetukeji.top,账户13112215717,密码qq2607788043程序开源:代码全部开源,支持任意二开功能介绍:多种试题类型支持判断题、单选题、多选题、填空题、简答题、材料题六种试题类型多种试题难度支持简单......
  • 结对项目
    作业所属班级软件工程2024作业要求自动生成四则运算作业目标实现论文查重姓名梁爽唐育健学号31220048723122004879该项目的GitHub仓库链接PSP表格PSP2.1PersonalSoftwareProcessStages预估耗时(分钟)实际耗时(分钟)Planning计划......
  • 基于java中的springboot框架实现学生宿舍管理系统的设计与开发演示【附项目源码+论文
    基于springboot实现学生宿舍管理系统的设计与开发演示摘要互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对学生宿舍信息管理混乱,出错率高,信息安全性差,劳动强......
  • 基于java中的SpringBoot框架实现企业客户管理系统演示【附项目源码+论文说明】
    基于SpringBoot实现企业客户管理系统演示摘要本论文主要论述了如何使用JAVA语言开发一个企业客户管理系统,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论述企业客户管理系统的当前背景以及系统开发的目的,后......
  • 基于java中的springboot框架实现学生宿舍管理系统的设计与开发演示【附项目源码+论文
    基于springboot实现学生宿舍管理系统的设计与开发演示摘要互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对学生宿舍信息管理混乱,出错率高,信息安全性差,劳动强......