软件工程导论项目之小学生四则运算出题软件
要求:
- 程序可接收一个输入参数n,然后随机产生n道加减乘除(分别使用符号+-*÷来表示)练习题,每个数字在 0 和 100 之间,运算符在3个到5个之间。
- 每个练习题至少要包含2种运算符。同时,由于小学生没有分数与负数的概念,你所出的练习题在运算过程中不得出现负数与非整数,比如不能出 3÷5+2=2.6,2-5+10=7等算式。
- 练习题生成好后,将你的学号与生成的n道练习题及其对应的正确答案输出到文件“result.txt”中,不要输出额外信息,文件目录与程序目录一致。
- 当程序接收的参数为4时,以下为一个输出文件示例。
- 支持有括号的运算式,包括出题与求解正确答案。注意,算式中存在的括号数必须大于2对,且不得超过运算符的个数。
- 扩展程序功能支持真分数的出题与运算(只需要涵盖加减法即可),例如:1/6 + 1/8 + 2/3= 23/24。注意在实现本功能时,需支持运算时分数的自动化简,比如 1/2+1/6=2/3,而非4/6,且计算过程中与结果都须为真分数。
Coding.net源码仓库地址:
https:https://git.dev.tencent.com/Cathy_Yang/arithmetic_.git
ssh:git@git.dev.tencent.com:Cathy_Yang/arithmetic_.git
测试步骤:
1.进入src文件夹
2.在命令行输入javac -encoding utf-8 *.java
3.回车再输入java Main 1000
4.回车,将会在src同级目录下产生result.txt
项目结构:
- 项目主要是参考的学姐的代码,由四个类构成。
- Main.java负责对输入数据进行判断,并产生文件;CreateFile.Java负责文件在指定路径的生成,并随机选择每次生成哪种运算式(包括简单四则运算、有括号的四则运算、真分数的加减运算),直到达到输入要求的运算式即可;每次生成运算式都要执行GenFormula.java类,该类提供了三种运算式对应的三个方法simple(),properFraction() 和 brackets() 方法,
- 其中在simple() 方法中为了避免在运算过程和结果中出现负数出现,在产生运算符时有限制条件,即:减号后仅允许加号,防止负数出现以及除号后仅允许乘号与加号,防止负数;在brackets() 方法中为了生成括号,先以一定概率生成左括号,再随机生成与之配对的右括号;在properFraction() 方法中为了保证随时都是真分数,每次配对生成分子或者相加减的时候都要进行是否是真分数的判断(判断方法在Calculator.java类中)。
- 最后一个类为Calculator.java,其中的eval() 函数直接可以用来计算字符串结果的计算,省了很多事,其他的方法每个都只有几行,非常简洁易懂,学姐就是历害啊 (ง •̀_•́)ง,然后我把学姐之前写的分数相加和相减的两个方法结合成了一个方法,因为我发现他们代码重复度很高,只有一行不一样,所以写成一个方法可以减少更多的代码,而在GenFormula.java类中的真分数生成方法中正好一直有一个 key[] 标记作为运算符的下标标记,正好可以作为Calculator类中判断是相加还是相减的参数。
参考博客:
- 大一没有好好学Java,现在做项目基本上都忘完了。使用Random()函数创建随机数,形成操作数。Ⅰ:调用这个Math.Random()函数能够返回带正号的double值,该值大于等于0.0且小于1.0,即取值范围是[0.0,1.0)的左闭右开区间,返回值是一个伪随机选择的数,在该范围内(近似)均匀分布。Ⅱ:Random random = new Random(); random.nextInt(n)的取值范围是[0,n)。java中有两种random函数,详见博客:https://www.cnblogs.com/ningvsban/p/3590722.html。
- Java中强制转换格式:int n = Integer.parseInt(args[0]);
- 创建文件的方法之一,例:在上一级路径中创建名为“result.txt”的文件,最后记得关闭。
- FileWriter类和BufferedWriter区别与用法:https://blog.csdn.net/Jerry_CSDN_YZR/article/details/71124206
- String.valueOf()函数的用法:https://blog.csdn.net/springk/article/details/6414017
- 使用函数计算式子的值:https://www.cnblogs.com/liu-fei-fei/p/5623017.html,https://blog.csdn.net/msyqmsyq/article/details/52954833
- Math.abs(x)=|x|,该函数用于求绝对值:https://zhidao.baidu.com/question/167319873.html
- 利用git上传项目到coding上的步骤:https://www.cnblogs.com/gdfhp/p/5889168.html,过程中太多bug了,心累。coding中文件的在线删除和新建:https://segmentfault.com/a/1190000000726192
PSP:
PSP2.1 |
任务内容 |
计划共完成需要的时间(h) |
实际完成需要的时间(h) |
Planning |
计划 |
0.5 |
0.5 |
· Estimate |
· 估计这个任务需要多少时间,并规划大致工作步骤 |
0.1 |
0.1 |
Development |
开发 |
35 |
37 |
· Analysis |
· 需求分析 (包括学习新技术) |
4 |
5 |
· Design Spec |
· 生成设计文档 |
1 |
1 |
· Design Review |
· 设计复审 (和同事审核设计文档) |
0.5 |
0 |
· Coding Standard |
· 代码规范 (为目前的开发制定合适的规范) |
1 |
3 |
· Design |
· 具体设计 |
0.5 |
0.5 |
· Coding |
· 具体编码 |
32 |
35 |
· Code Review |
· 代码复审 |
0.5 |
0.5 |
· Test |
· 测试(自我测试,修改代码,提交修改) |
3 |
4 |
Reporting |
报告 |
0.2 |
0.2 |
· Test Report |
· 测试报告 |
0.1 |
0.1 |
· Size Measurement |
· 计算工作量 |
0 |
0 |
· Postmortem & Process Improvement Plan |
· 事后总结, 并提出过程改进计划 |
0.1 |
0.1 |
简单总结:
这次主要是花了大部分时间理解学姐的博客和代码,所以并没有花太多时间,要是自己动手写所有的代码可能要花两倍的时间吧,主要还是大一学JAVA没有扎实学好,现在是很后悔,不过有什么办法捏,只有现在好好学了。学姐的博客和代码都条理清晰,代码的注释也多,看起来非常易懂,以后我自己做项目写博客也会学习学习学姐的。通过这个项目还是捡起来了很多Java的知识,感觉还是很有收获的,希望下次能自己亲手敲出来一个完整的项目,那样成就感肯定会更高吧,加油加油。
软件工程导论项目之小学生四则运算出题软件相关推荐
- 《小学生四则运算出题软件》结对项目总结
一.项目介绍及github地址 github地址:https://github.com/ChaoPiPi 结对伙伴:哦哦:博客地址:https://www.cnblogs.com/Mooa123/ A ...
- 《小学生四则运算出题软件》个人项目总结
一.PSP耗时估算 可以从上图看出:在Reporting上我减少了一般的时间,因为在本次项目中没有完成单元测试,只做了简单的CPU占用率和热路径图,在测试上时间也少了一半,是因为只做了黑盒测试. 二. ...
- java四则运算考试系统_小学生四则运算出题软件-基于java控制台的实现
.题目描述: 1. 使用 -n 参数控制生成题目的个数,例如 Myapp.exe -n 10 -o Exercise.txt 将生成10个题目. 2. 使用 -r 参数控制题目中数值(自然数.真分数和 ...
- 201571030301/201571030302《小学生四则运算练习软件》结对项目报告
Github地址 :https://github.com/Ahmatjan-IT/sizeyunsuanGUI 队友博客地址:http://www.cnblogs.com/dyh666/p/87191 ...
- 201571030130 小学生四则运算练习软件项目报告
小学生四则运算练习软件项目报告 github地址:https://github.com/Opalus-wangs/ws-lib/tree/master 一.需求分析 由用户输入参数n. 系统随机生成随 ...
- 201571030139/201571030134《小学生四则运算练习软件需求说明》结对项目报告
任务一 首先,我们进行了用户体验,把我们已经完成的小学生四则运算软件发给我们要调研的人,他们体验了我们的程序后再填写需求分析调查问卷,这样可以更好的得到一个反馈,让我们的需求分析更加清楚. 其次,我们 ...
- 基于JavaGUI的小学生四则运算练习软件
资源下载地址:https://download.csdn.net/download/sheziqiong/85638970 一.需求分析 本次实验采用结对编程方式,设计开发一个小学生四则运算练习软件, ...
- 简易小学生四则运算练习软件(自动出题判题)-java实现
一.主要功能说明 二.运行截图 三.类的设计(各类之间的关系) 四.源代码 1. MyExGUI.java 2.Operation.java 3.Addition.java 4.Subtraction ...
- 201571030121 《小学生四则运算练习软件》结对项目
201571030107/201571030121<小学四则运算练习软件>结对项目 结对伙伴:201571030107 冯晓 项目Github地址 https://github.com/d ...
最新文章
- 某大型银行深化系统之二十:异常规范
- DBLINK 无统计信息导致SQL变慢
- DCMTK:基本工作清单管理服务类提供程序基于一组文件作为数据源
- 有关C语言中有符号/无符号数混合运算的小问题
- SQL Server数学函数
- msp430中如何连续对位进行取反_四元数数控:如何保养视觉对位平台?
- iPhone 12系列电池容量曝光:不仅没增加竟还在缩水
- 凑零钱动态规划java_动态规划巧解凑零钱问题 | 创作者训练营
- 表格开源的数据集FUSD数据集、TableBank数据集、DocBank数据集
- 64位的windows server 2003运行IIS6运行32位的.NET程序
- 使用TinyPNG批量压缩图片
- matlab调和均值滤波_matlab-均值滤波
- android前置拍照镜像代码,从Android的前置摄像头拍摄的镜像翻转视频
- 几组数据的相关性python_几的定义
- [总结]mac pro 提示“USB设备已停用”导致外接显示器黑屏
- 智能化场景识别,8个视频图像处理方案你值得拥有
- Failed to load local image resource /pages/pics/cloud://xxxxxxxxx.jpg
- 撸起袖子加油干努力实现中国梦想PPT模板
- 物流行业的大数据发展与应用
- 全国计算机等级考试二级 Python 语言程序设计考试大纲(2022年版)
热门文章
- ntpdate提示Server dropped: no data处理记录
- uniapp 微信小程序实现走势图生成图片分享
- 清除浮动的几种方式,以及各自的优缺点
- error : xxxx:对‘xxxxxxxxx’未定义的引用
- 数据的中心化和标准化处理
- 第二章(1) SCADA/EMS系统的概述
- 记一次vue^2.6.5-router^3.0.6的keep-alive事故
- nfs:server is not responding, still trying(NFS,不能从服务器读取,mount的问题)
- 程序员“996”,真的能带来高产出吗?
- 单片机实现教学上下课的自动打玲