个人作业1——四则运算题目生成程序(基于控制台)

一、题目描述:
1. 使用 -n 参数控制生成题目的个数,例如
       Myapp.exe -n 10 -o Exercise.txt
将生成10个题目。
2. 使用 -r 参数控制题目中数值(自然数、真分数和真分数分母)的范围,例如 
      Myapp.exe -r 10
 将生成10以内(不包括10)的四则运算题目。该参数可以设置为1或其他自然数。该参数必须给定,否则程序报错并给出帮助信息。
3. 生成的题目中如果存在形如e1 ÷ e2的子表达式,那么其结果应是真分数
4. 每道题目中出现的运算符个数不超过3个。
5. 程序一次运行生成的题目不能重复,即任何两道题目不能通过有限次交换+和×左右的算术表达式变换为同一道题目。例如,23 + 45 = 和45 + 23 = 是重复的题目,6 × 8 = 和8 × 6 = 也是重复的题目。3+(2+1)和1+2+3这两个题目是重复的,由于+是左结合的,1+2+3等价于(1+2)+3,也就是3+(1+2),也就是3+(2+1)。但是1+2+3和3+2+1是不重复的两道题,因为1+2+3等价于(1+2)+3,而3+2+1等价于(3+2)+1,它们之间不能通过有限次交换变成同一个题目。
生成的题目存入执行程序的当前目录下的Exercises.txt文件,格式如下:
     1. 四则运算题目1
     2. 四则运算题目2
          ……
 
其中真分数在输入输出时采用如下格式,真分数五分之三表示为3/5,真分数二又八分之三表示为2’3/8。
6. 在生成题目的同时,计算出所有题目的答案,并存入执行程序的当前目录下的Answers.txt文件,格式如下:
    1. 答案1
    2. 答案2
 
    特别的,真分数的运算如下例所示:1/6 + 1/8 = 7/24。
7. 程序应能支持一万道题目的生成。
8. 程序支持对给定的题目文件和答案文件,判定答案中的对错并进行数量统计,并会输出所有题目中重复的题目,输入参数如下:
     Myapp.exe -e <exercisefile>.txt -a <answerfile>.txt -o Grade.txt
 
统计结果输出到文件Grade.txt,格式如下:
 
Correct: 5 (1, 3, 5, 7, 9)
Wrong: 5 (2, 4, 6, 8, 10)
Repeat:2
RepeatDetail:
(1)   2,45+32  Repeat 3,32+45                    
(2)   5,3+(2+1)  Repeat 7,1+2+3
 
解释:
Correct: 5 ----5道题目正确,正确的题号 1,3,5,7,9
Wrong:5 -----5道题目错误,错误的题号 2,4,6,8,10
Repeat:2   2---组题目重复
(1) 第一组 题号2,题目 45+32  与题号3的题目重复,题号3为 32+45
(2)第二组  题号5,题目 3+(2+1) 与题号7的题目重复,题号7为 1+2+3

二、需求分析

   该程序主要是根据输入的参数来确定生成的题目数量与题目中数值的范围,该程序还要支持对除法的运算,并且对于除法运算的结果要求其为真分数。同时将生成一个运算式文件和一个答案文件。并且要支持批改,找出回答错误的题目与正确的题目,并统计个数。此外,还要能够查重,不能生成重复的题目。并且,要求可以支持一万道题目的生成。

三、功能设计

  通过控制台生产四则运算表达式的一套卷子,进行查重,计算每道题的结果写入文件,并批改作业。、

四、设计实现

五、代码说明

 Home.java   是主程序的入口。

Exam.java    是生成一套卷子的一个方法类。

FileWritter.java  是文件操作的方法类。

Creating.java    是生成一个个表达式的类。

Computing.java   是计算表达式结果的类。

Check.java        是查重的类。

CompareAnswer.java   是批改作业比较答案的类。

fs.java     是对分数的一个封装。

六、测试运行

       1.运行程序

  2.输入相应的参数并生成题目

 

    3.题目文档

 

      4.正确答案文档

 

      5.答题文档

 

      6.进行批改,批改结果

七、源代码

代码地址:https://gitee.com/WBSMN1/four_operations.git

八、

PSP统计

PSP2.1Personal Software Process StagesTime Senior StudentTime
Planning计划3015
Estimate估计这个任务需要多少时间4046
Development开发3580
Analysis需求分析 (包括学习新技术)47
Design Spec生成设计文档46
Design Review设计复审46
Coding Standard代码规范33
Design具体设计1012
Coding具体编码1010
Code Review代码复审310
Test测试(自我测试,修改代码,提交修改)315
Reporting报告910
 测试报告21
 计算工作量46
 并提出过程改进计划33

九、小结

 代码还是要常常写,长时间没写,很多方法的用法都记忆模糊,通过这个小项目复习了以前的一些基础知识,也写到了很多。老师说的对,做一个能用的比10个不能用的强,现在发现以前写的很多东西都不能用。再接再厉!

转载于:https://www.cnblogs.com/WBSMN/p/8682542.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值