实现一个自动生成小学四则运算题目的命令行程序

这个作业属于哪个课程 计科22级12班
这个作业要求在哪里 结对项目
这个作业的目标 实现一个自动生成小学四则运算题目的命令行程序。

一:

詹洛熙 3122004800
GitHub链接 (https://github.com/Zhannoi/-/tree/main)

二:PSP表格

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

三:设计思路

主要方法

  • main(String[] args):处理命令行参数,选择生成题目或检查答案。

  • generateExercises(int num, int maxNum):生成指定数量的题目并计算答案。

  • generateExpression(int depth, int maxNum):递归生成随机数学表达式。

  • evaluateExpression(String expr):计算数学表达式的值。

  • formatFraction(String result):将计算结果格式化为真分数。

  • checkAnswers(String exerciseFile, String answerFile):读取题目和答案文件,检查正确性。

  • readLinesFromFile(String filename):从文件中读取行。

  • writeToFile(String filename, Set content):将题目或答案写入文件。

  • writeResults(List correct, List wrong):输出检查结果到文件。

函数之间的关系

  • main 方法是程序入口,根据输入参数选择调用 generateExercises 或 checkAnswers。

  • generateExercises 方法负责生成题目,依赖于 generateExpression 来创建表达式,最终使用 evaluateExpression 来计算答案。

  • checkAnswers 方法读取题目和答案,使用 evaluateExpression 计算题目的结果,比较并统计正确与错误的答案。

  • 文件读写操作通过 readLinesFromFile 和 writeToFile 方法进行。

效能分析

关键代码

  • 生成四则运算

    递归生成表达式。depth 参数控制表达式的复杂度,maxNum 控制生成的数字范围。
  • 计算结果

    使用 Java 的 ScriptEngine 计算字符串形式的数学表达式。如果计算成功,返回结果;否则捕获异常并返回 0。
  • 检查校对

    逐行比较题目和答案,并统计正确与错误的题目编号。如果题目数量与答案数量不匹配,输出错误提示。比较时,调用 evaluateExpression 计算每道题目的正确答案,并与用户答案进行比较。

四:测试结果

生成10以内(不包括10)的四则运算题目10道并给出答案(-n 10 -r 10)


检验答案
输入的答案:

结果:

五:项目小结

本项目为开发一个自动生成和检验小学四则运算题目的Java程序。在项目中,提升了Java编程技能,并深入理解了递归和字符串处理。同时,过程中也遇到了一些挑战,如表达式的合法性检查与格式化输出,但通过思考与调试,成功解决了问题。通过本项目,实现了功能目标,为今后类似项目的开展积累了宝贵经验

posted @ 2024-09-28 21:23  zhannoi  阅读(20)  评论(0编辑  收藏  举报