结队项目

news/2024/9/28 15:11:35
这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/CSGrade22-34
这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/homework/13230
这个作业的目标 实现四则运算程序,掌握结对合作完成项目的技巧
成员一 王佳伟3122004880
成员二 范圣林3122004735

项目地址

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.ryyt.cn/news/65787.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

AI动作异常行为分析预警系统

AI动作异常行为分析预警系统采用AI神经网络的学习算法,AI动作异常行为分析预警系统实时分析现场人员人体动作操作行为以及着装穿戴情况是否合规进行实时监测,AI动作异常行为分析预警系统通过统计和分析后实现人员违规行为实时监测预警提升现场人员合规操作规范,降低人员违规…

《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(中央处理单元)根据程序指令处理数据。 存储:内存和硬盘等存储设备用于保存数据和程序。 输出:处理结果通过显示器、…

XSS攻击和CSRF攻击

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