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

结对项目

时间:2024-03-26 12:45:13浏览次数:20  
标签:结对 20 项目 30 答案 题目

杨宇航 3122004498

赵军 3122004501

这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/SoftwareEngineering2024
这个作业要求在哪里 结对项目 - 作业 - 软件工程2024 - 班级博客 - 博客园 (cnblogs.com)
这个作业的目标 1.能够生成包含自然数和真分数的四则运算题目。2.支持基本的四则运算(加、减、乘、除)和括号。3.生成的题目和对应答案分别存入指定的文件中。生成的题目和对应答案分别存入指定的文件中。4.程序应能支持一次生成多达一万道题目。

GitHub 链接https://github.com/1AYyh/3122004498

PSP表格

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

1. 效能分析

img

时间投入

我在改进程序性能上的时间投入主要分为三个阶段:

  1. 初始分析(约1小时):运行基线版本的程序,使用Python的cProfile模块进行性能分析,确定性能瓶颈。
  2. 优化实施(约3-4小时):根据性能分析结果,实施具体的优化措施。
  3. 验证与调整(约2小时):再次进行性能测试,验证优化效果,并进行必要的调整。

改进思路

  • 减少重复计算:通过缓存已经计算过的表达式结果,避免重复的计算。
  • 优化数据结构:例如,使用更加高效的数据结构(如字典代替列表)来存储题目和答案,以加快搜索和访问速度。
  • 并行计算:对于题目生成和答案计算这样的可以独立进行的任务,使用多线程或多进程来加速处理。

2. 设计实现过程

设计概述

程序的设计可以分为几个关键部分:

  • 题目生成器(一个类):负责生成符合条件的题目。
  • 答案计算器(一个类):负责计算题目的答案。
  • 文件操作器(一个类):负责读写题目文件和答案文件。
  • 有效性检查器(一个或多个函数):负责检查题目的有效性,如是否产生负数或除数为0等情况。

关键函数流程图

对于题目生成和答案计算等关键功能,可以绘制流程图来明确其逻辑。例如,题目生成器的流程图会展示如何随机选择操作数和运算符,以及如何确保题目的唯一性和有效性。

3. 代码说明

关键代码展示

以题目生成器为例,关键代码可能包含:

public class ExerciseValidator {
    public static void validate(String exerciseFile, String answerFile) throws IOException {
        List<String> exercises = FileHandler.readLines(exerciseFile);
        List<String> answers = FileHandler.readLines(answerFile);

        int correct = 0;
        List<Integer> correctIndexes = new ArrayList<>();
        List<Integer> wrongIndexes = new ArrayList<>();

        for (int i = 0; i < exercises.size(); i++) {
            // 假设每个答案是计算后的最简形式,且直接与题目结果匹配
            // 实际实现中需要考虑解析和计算表达式,此处直接以答案匹配作为示例
            String expectedAnswer = calculateAnswer(exercises.get(i));
            if (expectedAnswer.equals(answers.get(i))) {
                correct++;
                correctIndexes.add(i + 1);
            } else {
                wrongIndexes.add(i + 1);
            }
        }

        // 输出结果到Grade.txt
        try {
            List<String> results = new ArrayList<>();
            results.add("Correct: " + correct + " " + correctIndexes.toString());
            results.add("Wrong: " + (exercises.size() - correct) + " " + wrongIndexes.toString());
            FileHandler.writeLines("Grade.txt", results);
        } catch (IOException e) {
            System.out.println("Failed to write Grade.txt: " + e.getMessage());
        }
    }

4. 测试运行

测试用例

  1. 单一运算符题目。
  2. 含有所有四种运算符的题目。
  3. 数值在边界上的题目(如1和range-1)。
  4. 产生真分数结果的题目。
  5. 含有括号的题目。

在结对项目的过程中,我们共同完成了一项挑战性任务,其过程中我们体会到了团队合作的重要性,同时也面对了一系列的技术和沟通挑战。以下是我们的项目小结,包含成败得失、经验分享、教训总结、结对感受以及对彼此的评价和建议。

进步

成就:

  • 有效沟通:我们通过频繁的交流和讨论,确保了项目目标和需求的一致性,这帮助我们避免了很多潜在的误解和重工。
  • 技术成长:项目让我们有机会深入探索和应用了数据结构、算法优化、以及软件工程的最佳实践,促进了我们的技术成长。
  • 问题解决:面对问题时,我们学会了如何分解问题、逐步解决,特别是在性能优化和代码重构方面取得了明显的进步。

不足:

  • 时间管理:项目初期,我们在时间规划上存在一定的问题,导致后期不得不加班加点赶工。
  • 技术选型:一开始没有充分评估和比较不同技术方案的优劣,导致项目中途需要调整技术栈,影响了开发进度。

经验与教训

经验:

  • 事先规划:在项目开始之初就进行细致的需求分析和任务规划,可以有效避免后期的返工和调整。
  • 持续沟通:保持团队成员之间的持续沟通,有利于及时发现和解决问题,加强团队协作。

教训:

  • 备选方案:在确定技术方案时,应考虑备选方案,并评估各方案的可行性,以备不时之需。
  • 进度控制:应实施更加严格的进度控制和监督机制,确保项目按时完成。

结对感受

共同感受:

  • 我们感到非常幸运能够结对完成这个项目。在相互学习和支持中,我们不仅提升了技术能力,也增进了理解和友谊。

对彼此的评价和建议:

赵军
  • 闪光点:在解决问题上表现出了非凡的逻辑思维能力和耐心,尤其是在面对复杂问题时能够保持冷静,逐步分析解决。
  • 建议:在项目管理方面,建议可以更加积极主动地参与规划和决策过程,这将有助于提升项目的整体效率。
杨宇航
  • 闪光点:在项目规划和协调上表现出色,能够高效地分配任务,并确保团队按时达成目标。
  • 建议:有时倾向于过度优化细节,建议可以在保证质量的前提下,更加关注项目的整体进度和时间管理。

总之,这次结对项目是一次宝贵的学习和成长经历。我们不仅提高了自己的技术能力,也学会了如何在团队中更好地沟通和协作。我们期待未来有更多这样的机会,继续深化我们的友谊和合作。

标签:结对,20,项目,30,答案,题目
From: https://www.cnblogs.com/Yyh1b/p/18096408

相关文章

  • 信息系统项目管理师——第7章项目立项管理
    本章考选择题2-3分,案例和论文均有可能作为领域考试。项目建议与立项申请♥♥♥♥♥立项申请的概念立项申请又称为项目建议书,是项目建设单位向上级主管部门提交项目申请时所必须的文件,是该项目建设筹建单位根据国民经济的发展、国家和地方中长期规划、产业政策、生产力......
  • 海量数据处理项目-账号微服务和流量包数据库表+索引规范(下)
    海量数据处理项目-账号微服务和流量包数据库表+索引规范(下)第2集账号微服务和流量包数据库表+索引规范讲解《下》简介:账号微服务和流量包数据库表+索引规范讲解账号和流量包的关系:一对多traffic流量包表思考点海量数据下每天免费次数怎么更新?海量数据付费流量套餐包每天......
  • 使用Go语言开发一个短链接服务:三、项目目录结构设计
    章节 使用Go语言开发一个短链接服务:一、基本原理 使用Go语言开发一个短链接服务:二、架构设计 使用Go语言开发一个短链接服务:三、项目目录结构设计 使用Go语言开发一个短链接服务:四、生成code算法 使用Go语言开发一个短链接服务:五、添加和获取短链接 使用Go语言开......
  • 智慧工地解决方案,智慧工地项目管理系统源码,支持大屏端、PC端、手机端、平板端
    智慧工地解决方案依托计算机技术、物联网、云计算、大数据、人工智能、VR&AR等技术相结合,为工程项目管理提供先进技术手段,构建工地现场智能监控和控制体系,弥补传统方法在监管中的缺陷,最线实现项目对人、机、料、法、环的全方位实时监控。支持多端展示(大屏、PC端、手机端、平板......
  • vue3+ts项目引入富文本编辑器wangeditor
    说明项目开发中,做到媒体说、资讯等模块时,会需要引入富文本编辑器,对比发现wangeditor使用群众多,并且很多问题也已经有解答。界面展示实现要点引入wangeditor配置导航栏代码<template><divstyle="border:1pxsolid#EEEFF0;border-radius:5px;overflow:hidden;wid......
  • Springboot项目的main函数入口,如何像jar包一样接受参数
    一般来说,springboot项目是提供服务的,但是也可以用到导出jar来启动,那么如何介绍参数呢:packagecom.example.TestDemo;importcom.example.jmeter.bean.TestCaseResult;importcom.example.jmeter.controller.JmeterController;importlombok.extern.slf4j.Slf4j;importorg.......
  • 使用Github托管Unity项目
    ​准备工作在本机生成ssh密钥ssh-keygen-trsa-C"你的邮箱地址"点击回车后会出现生成的密钥路径,我们直接打开密钥复制下来。github官网添加我们的本机密钥进入Github官网,点击设置,选择SSHandGPGkeys点击newSSHkey,将我们刚才在本机生成的ssh密钥放入key中,并起......
  • EECS 183项目分析
    EECS183项目4:酷派图片p4酷图片EECS183项目4:CoolPics项目截止时间:2024年3月22日星期五晚上11:59直接自动标记链接在这个项目中,您将创建一个程序,读取形状的描述,绘制形状,并将结果保存到文件中。您将使用表示不同的形状。在这里以下是学生在上学期创作的一些图像示例:EECS183项目4......
  • 结对项目
    这个作业属于哪个课程<软件工程2024(广东工业大学)>这个作业要求在哪里<结对项目>这个作业的目标<团队互相合作完成一个随机生成四则运算题目的项目>Gitee链接:https://github.com/messagelost/Arithmetic-Operations一、团队介绍项目合作者学号陈......
  • 结对项目
    这个作业属于哪个课程<软件工程2024(广东工业大学)>这个作业要求在哪里<结对项目>这个作业的目标<团队互相合作完成一个随机生成四则运算题目的项目>Gitee链接:https://github.com/messagelost/Arithmetic-Operations一、团队介绍项目合作者学号陈......