结队项目

news/2024/11/17 6:26:50/文章来源:https://www.cnblogs.com/aste/p/18436808
这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/CSGrade22-34
这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/homework/13230
这个作业的目标 实现四则运算程序,掌握结对合作完成项目的技巧

项目地址

GitHub地址

PSP表格

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

效能分析


设计实现

代码说明

检测输入

// 检查输入的题目数量与数值范围是否可实现,并修改static boolean able(int n, int r) {if (n>10000) {error = "最大题数为10000";return false;} else if (n<=0) {error = "题数不合法";return false;} else if (range == 0) {error = "请给定数值范围,详细操作通过 -h 查看";return false;} else if (range<0) {error = "数值范围不合法";return false;} else if (range<5) {error = "数值范围过小,至少为5";return false;}return true;}

表达式生成

// 生成表达式,并存入题目列表static void subject() {// 运算符个数 1-3 个List<String> exp = new ArrayList<String>();int opr_n = (int) (Math.random()*3 + 1);switch(opr_n) {case 1:exp.add(createnum());exp.add(createopr1());exp.add(createnum());break;case 2:// 括号起始位置int bkt_s = (int) (Math.random()*3);// 括号结束位置int bkt_e = 0;// 无括号if (bkt_s == 0) {bkt_e = 0;} else {bkt_e = bkt_s + 1;}for (int i = 1; i <= 3; i++) {if (bkt_s == i) {exp.add("(");}exp.add(createnum());if (bkt_e == i) {exp.add(")");}exp.add(createopr1());}// 处理括号无意义情况checkbkt(bkt_s, bkt_e,exp);exp.remove(exp.size()-1);	// 删除最后多加入的一个运算符break;case 3:// 括号起始位置bkt_s = (int) (Math.random()*4);// 无括号if (bkt_s == 0) {bkt_e = 0;} else if (bkt_s == 3){bkt_e = 4;} else {bkt_e = bkt_s + (int) (Math.random()*2 + 1);    // [1,3)}for (int i = 1; i <= 4; i++) {if (bkt_s == i) {exp.add("(");}exp.add(createnum());if (bkt_e == i) {exp.add(")");}exp.add(createopr1());}// 处理括号无意义情况checkbkt(bkt_s, bkt_e,exp);exp.remove(exp.size()-1);	// 删除最后多加入的一个运算符break;}e.add(exp);System.out.println(toString(exp));//  exp.clear();}

随机数获取

// 产生随机数public static String createnum() {ThreadLocalRandom rand = ThreadLocalRandom.current();int a = rand.nextInt(range);int b = rand.nextInt(range);if (a == 0) {a += (int) (Math.random()*range + 1);}if (b == 0) {b += (int) (Math.random()*range + 1);}if (b == range) {b = b-1;}num n = new num(a,b);easy(n);if (n.a == n.b) {return Integer.toString(1);}if (n.b == 1) {return Integer.toString(n.a);}return n.tostring();}

测试运行


题目及答案

项目小结

在本项目中,我们成功实现了一个命令行程序,能够根据给定参数自动生成小学四则运算题目,并记录相关答案。以下是我们在项目实施过程中总结的经验和教训:

成功经验

  1. 功能实现完整性:程序能够按照用户指定的数量和范围生成题目,且确保每道题目的计算过程不产生负数,符合真分数的运算规则。这增强了程序的可靠性。

  2. 用户友好的参数设计:我们设计了简洁的命令行参数,用户只需输入数量和范围即可生成题目,使用方便,减少了用户的操作负担。

  3. 高效的数据存储:题目和答案被有效地存储在文本文件中,便于后续的阅卷和统计。这种设计使得题目生成与评分分离,逻辑清晰。

  4. 准确性和可扩展性:程序支持生成高达一万道题目的功能,这使得我们的程序具有较高的可扩展性,满足不同用户需求。

遇到的挑战与教训

  1. 逻辑复杂性:在设计题目生成的逻辑时,我们遇到了如何避免重复题目的问题。经过多次讨论和调整,我们实现了通过运算符和括号的组合来有效避免重复,确保题目的多样性。

  2. 性能优化的时间消耗:在优化程序性能时,我们发现某些计算逻辑存在冗余,花费了不少时间进行代码分析与调整。最终,我们通过简化运算过程和减少不必要的重复计算,提高了整体性能。

  3. 团队协作的挑战:虽然我们的分工明确,但在一些关键功能的实现上,沟通不足导致了一些重复的工作。后期我们调整了沟通方式,增加了代码审查,最终提高了效率。

合作感受

在整个项目中,合作的过程让我体会到了团队合作的重要性。我们共同讨论、互相学习,弥补了各自的不足。通过分工合作,我们不仅提升了个人技能,还增强了团队协作能力。

总结

本项目不仅增强了我们的编程能力,更让我们体会到了从需求分析到最终实现的全过程的重要性。通过此次经历,我们意识到良好的沟通、合理的时间管理和对细节的关注是成功的关键。在未来的项目中,我们将继续保持这种合作精神,追求更高的编程水平和项目质量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/805210.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《Python 基础篇》一:初相识

Python 基础语法,以及运算符。Author: ACatSmiling Since: 2024-09-27基础语法 Python 的语法比较简单,采用缩进方式,写出来的代码就像下面的样子: # print absolute value of an integer: a = 100 if a >= 0:print(a) else:print(-a)Python 程序是大小写敏感的,如果写…

VulnHub-SickOs1.1靶机笔记

SickOs1.1靶机笔记 概述 Vulnhub的靶机sickos1.1 主要练习从互联网上搜索信息的能力,还考察了对代理使用,目录爆破的能力,很不错的靶机 靶机地址: 链接: https://pan.baidu.com/s/1JOTvKbfT-IpcgypcxaCEyQ?pwd=ytad 提取码: ytad 一、nmap扫描 1)主机发现 sudo nmap -sn …

MES开发004

写了流程图和数据字段

《DNK210使用指南 -CanMV版 V1.0》第二十七章 摄像头图像调整实验

第二十七章 摄像头图像调整实验 1)实验平台:正点原子DNK210开发板 2)章节摘自【正点原子】DNK210使用指南 - CanMV版 V1.0 3)购买链接:https://detail.tmall.com/item.htm?&id=782801398750 4)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/…

linux mariadb odbc

参考: https://blog.csdn.net/mei777387/article/details/75331428 https://www.cnblogs.com/pycode/p/9495793.html mariadb与mysql非常像,甚至安装mariadb后可以使用mysql命令运行mariadb。 安装软件 sudo apt install -y mariadb-server mariadb-client我这里安装的是mari…

深入汇编:计算机工作机制解析

深入汇编:计算机工作机制解析 计算机的工作原理 计算机的工作原理可以概括为以下几个步骤:输入:用户通过键盘、鼠标或其他输入设备提供数据。 处理:CPU(中央处理单元)根据程序指令处理数据。 存储:内存和硬盘等存储设备用于保存数据和程序。 输出:处理结果通过显示器、…

结对项目——小学四则运算题目自动生成器

这个作业属于哪个课程 <计科22级34班>这个作业要求在哪里 <结对项目>这个作业的目标 <实现一个自动生成小学四则运算题目的命令行程序(也可以用图像界面,具有相似功能)>团队成员 <杨富国(3122004587)、李思柔(3222004638)>Github项目地址 https…

XSS攻击和CSRF攻击

一、XSS XSS,即跨站脚本攻击。是值攻击者在网站上注入恶意的客户端代码,通过恶意脚本对客户端网页进行篡改,从而在用户浏览网页时,对用户浏览器进行控制或者获取用户隐私数据的一种攻击方式。 比如在论坛上或者输入框内输入 "<alert>document.cookie</alert&…

解决win10无法用独显玩游戏的问题

首先要下载独显驱动。 https://www.nvidia.cn/Download/index.aspx?lang=cn 这时任务管理器里就可以看到独显占用率了。 然后桌面右键打开nvidia控制面板,把要使用独显的游戏设置为使用独显(如果默认不使用独显的话)如果还不行,可能是还需要装上CPU的核显驱动(很奇怪吧?…

day8[OpenCompass 评测 InternLM-1.8B 实践]

环境配置 创建开发机和 conda 环境数据准备 评测数据集启动评测 (10% A100 8GB 资源) 使用命令行配置参数法进行评测评测完成后,将会看到:

sha256sum文件哈希值和直接哈希字符串的哈希值不一样

例如在文件test.txt里写入 test没有换行。 然后 sha256sum test.txt出来的结果是 f2ca1bb6c7e907d06dafe4687e579fce76b37e4e93b7605022da52e6ccc26fd2 test.txt但是在这个网站上 http://encode.chahuo.com/ 输入test,然后以sha256方式哈希得到的结果是 9f86d081884c7d659a2f…

F-Droid使用教程

F-Droid下载地址:https://f-droid.org/ 默认的官方源太慢了。建议更换清华源。官方教程:https://mirrors.tuna.tsinghua.edu.cn/help/fdroid/ 先打开F-Droid,进入设置->存储库点进F-Droid存储库,可能会看到一些官方镜像:如果啥也没有,可能等一段时间就会出现。 把这些…