作业三

news/2025/3/20 12:00:28/文章来源:https://www.cnblogs.com/faken233/p/18780176
问题 内容
这个作业属于哪个课程 课程链接
这个作业要求在哪里 作业要求
这个作业的目标 实现一个自动生成小学四则运算题目的命令行程序
姓名 学号
何松 3123004786
洪徐博 3123004747
PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划
· Estimate · 估计这个任务需要多少时间 10 10
Development 开发
· Analysis · 需求分析 (包括学习新技术) 30 30
· Design Spec · 生成设计文档 20 20
· Design Review · 设计复审 (和同事审核设计文档) 10 10
· Coding Standard · 代码规范 (为目前的开发制定合适的规范) 10 10
· Design · 具体设计 20 20
· Coding · 具体编码 60 69
· Code Review · 代码复审 30 30
· Test · 测试(自我测试,修改代码,提交修改) 20 20
Reporting 报告
· Test Report · 测试报告 10 10
· Size Measurement · 计算工作量 10 10
· Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 10 10
合计 240 240

性能图

image

实现过程

代码组织

Main 类:

程序的入口类,包含 main 方法。负责解析命令行参数并调用相应的功能。

功能函数:

generateExercises:生成指定数量的题目,并保存到文件中。

graph TDA[开始] --> B[初始化题目集合和列表]B --> C{是否生成足够题目?}C -- 是 --> D[保存题目和答案到文件]D --> E[结束]C -- 否 --> F[生成单个题目]F --> G{题目是否重复?}G -- 是 --> CG -- 否 --> H[添加到题目集合和列表]H --> I[计算题目答案并保存]I --> C

generateExercise:生成单个随机的四则运算题目。

calculateAnswer:计算题目的答案。

gradeAnswers:对比用户答案和正确答案,并生成统计结果。

graph TDA[开始] --> B[读取题目文件和答案文件]B --> C[初始化正确和错误题目编号列表]C --> D{是否遍历完所有题目?}D -- 是 --> E[保存统计结果到文件]E --> F[结束]D -- 否 --> G[计算当前题目的正确答案]G --> H{用户答案是否正确?}H -- 是 --> I[添加到正确题目列表]H -- 否 --> J[添加到错误题目列表]I --> DJ --> D

saveToFile 和 readFile:文件的读写操作。

simplifyFraction 和 gcd:辅助函数,用于分数简化和计算最大公约数。

代码说明

main 方法

public static void main(String[] args) throws UnsupportedEncodingException {// 如果没有传入参数,打印帮助信息并退出if (args.length == 0) {printHelp();return;}// 解析命令行参数if (args[0].equals("-n") && args.length == 4 && args[2].equals("-r")) {// 生成题目模式:-n <题目数量> -r <数值范围>int numberOfExercises = Integer.parseInt(args[1]);int range = Integer.parseInt(args[3]);generateExercises(numberOfExercises, range);} else if (args[0].equals("-e") && args.length == 4 && args[2].equals("-a")) {// 判断答案模式:-e <题目文件> -a <答案文件>String exerciseFile = args[1];String answerFile = args[3];gradeAnswers(exerciseFile, answerFile);} else {printHelp();}
}

思路与注释:

这是程序的入口方法,负责解析命令行参数。

如果参数是 -n <题目数量> -r <数值范围>,则调用 generateExercises 生成题目。

如果参数是 -e <题目文件> -a <答案文件>,则调用 gradeAnswers 检查答案。

如果没有参数或参数格式错误,打印帮助信息。

generateExercises 方法

private static void generateExercises(int numberOfExercises, int range) {Set<String> exercises = new HashSet<>(); // 用于存储已生成的题目,避免重复List<String> exerciseList = new ArrayList<>(); // 存储题目列表List<String> answerList = new ArrayList<>(); // 存储答案列表// 生成题目,直到达到指定数量while (exerciseList.size() < numberOfExercises) {String exercise = generateExercise(range);// 检查题目是否重复if (!exercises.contains(exercise)) {exercises.add(exercise);exerciseList.add(exercise);// 计算题目的答案并保存answerList.add(calculateAnswer(exercise));}}// 将题目和答案保存到文件中saveToFile("Exercises.txt", exerciseList);saveToFile("Answers.txt", answerList);
}

思路与注释:

使用 Set 来存储已生成的题目,避免重复。

使用 List 存储题目和答案。

循环生成题目,直到达到指定数量。

调用 generateExercise 生成单个题目,调用 calculateAnswer 计算答案。

最后将题目和答案保存到文件中。

项目小结

闪光点:

何松->洪徐博:在代码优化和边界情况处理上表现出色,提出了分数简化的实现方案。

洪徐博->何松:在文件操作和命令行参数解析上贡献突出,确保了程序的易用性。

小结
本项目成功实现了四则运算题目的生成和答案检查功能,代码逻辑清晰,功能完整。

通过结对编程,我们不仅提高了代码质量,还加深了对彼此编程风格的理解。

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

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

相关文章

VMware Live Site Recovery 9.0.2.2 发布 - 数据中心灾难恢复 (DR)

VMware Live Site Recovery 9.0.2.2 发布 - 数据中心灾难恢复 (DR)VMware Live Site Recovery 9.0.2.2 发布 - 数据中心灾难恢复 (DR) Site Recovery Manager 9.0 Update 2 请访问原文链接:https://sysin.org/blog/vmware-live-site-recovery-9/ 查看最新版。原创作品,转载请…

可视化图解算法: 两个链表的第一个公共节点

对于链表的相关操作,我们总结了一套【可视化+图解】方法,依据此方法来解决链表相关问题,链表操作变得易于理解,写出来的代码可读性高也不容易出错。1. 题目 描述 输入两个无环的单向链表,找出它们的第一个公共结点,如果没有公共节点则返回空。(注意因为传入数据是链表,…

Windows 10 on ARM, version 22H2 ARM64 中文版、英文版下载 (2025 年 3 月更新)

Windows 10 on ARM, version 22H2 ARM64 中文版、英文版下载 (2025 年 3 月更新)Windows 10 on ARM, version 22H2 ARM64 中文版、英文版下载 (2025 年 3 月更新) Windows 10 on ARM, version 22H2 ARM64 (updated Mar 2025) 请访问原文链接:https://sysin.org/blog/windows-1…

河南郑州亚克力代加工厂家资源-代加工-外协加工-委外加工-激光代加工-河南郑州亚克力切割雕刻代加工-芯晨微纳(河南)

在河南省寻找亚克力代加工厂家,可以通过以下渠道和注意事项进行筛选: 一、推荐查找渠道**B2B平台 -百度搜索“河南郑州亚克力代加工厂家”、“激光代加工”、“亚克力加工”等关键词阿里巴巴:搜索“河南亚克力加工”“亚克力定制”等关键词,筛选河南本地厂家(如郑州、洛阳…

PureBasic 6.20 (macOS, Linux, Windows) - 现代的 BASIC 编程语言及 IDE

PureBasic 6.20 (macOS, Linux, Windows) - 现代的 BASIC 编程语言及 IDEPureBasic 6.20 (macOS, Linux, Windows) - 现代的 BASIC 编程语言及 IDE PureBasic is a modern BASIC programming language. 请访问原文链接:https://sysin.org/blog/purebasic/ 查看最新版。原创作品…

GIMP 3.0.0 (Linux, macOS, Windows) 正式版发布 - 免费开源图像编辑器

GIMP 3.0.0 (Linux, macOS, Windows) 正式版发布 - 免费开源图像编辑器GIMP 3.0.0 (Linux, macOS, Windows) 正式版发布 - 免费开源图像编辑器 GNU Image Manipulation Program (GIMP) 请访问原文链接:https://sysin.org/blog/gimp/ 查看最新版。原创作品,转载请保留出处。 作…

WinSCP主机名

连接Wifi的情况下,Ubuntu命令行输入"ifconfig",如图即为主机名当我在使用网线时,打开虚拟机显示的ifconfig却是这样:此时连接WinSCP是行不通的因此只能拔掉网线,在WiFi情况下,重启虚拟机,命令行如下: sudo shutdown -r now 然后再重新接入WinSCP即可。 只要在…

从0到1制作智慧医院,全流程解读

在科技飞速发展的今天,智慧医院已成为医疗行业变革的重要方向。想象一下,患者走进医院,无需繁琐的排队挂号,通过智能导诊系统就能快速找到就诊科室;医生借助大数据和人工智能,能更精准地诊断病情、制定治疗方案;医院管理者通过实时的数据监控,优化资源调配,提升运营效…

Pydantic多态模型:用鉴别器构建类型安全的API接口

title: Pydantic多态模型:用鉴别器构建类型安全的API接口 date: 2025/3/20 updated: 2025/3/20 author: cmdragon excerpt: Pydantic的鉴别器机制通过字段显式声明类型,实现自动化路由,避免了传统多态实现中的手动类型判断。基础鉴别器定义通过字段声明和类型标识,实现自…

固件打包流程

基础知识: SHA-256类型: 哈希函数 用途: 用于生成数据的唯一指纹(哈希值),确保数据的完整性。 特性: 不可逆、快速计算、抗碰撞性。RSA类型: 非对称加密算法 用途: 主要用于加密数据、数字签名和密钥交换。 特性: 使用一对密钥(公钥和私钥),其中公钥用于加密或验证签名,…

C语言入口函数

c语言入口函数必须是main

从数据孤岛到信息互通,多宁生物如何用CRM打破集团型企业的协同难题?

上海多宁生物科技股份有限公司(简称“多宁生物”)是一家一站式生物工艺解决方案提供商,提供生物制药产品从研发到商业化生产的全面解决方案,包括试剂及耗材、仪器设备和服务。公司经营生物工艺解决方案、实验室产品及服务两大业务线,帮助客户实现高效、稳定、质量及成本可…