此次作业的源码地址:https://git.coding.net/ClausKE/Calculator1.git

写在前面:这次的作业完成得不易,在跟一些同学的交流中对这次作业有了更多的理解,在咨询了一些较厉害的大佬后,我才学习到了一些新的东西,但因理解得不够完全,只是较为基础地完成了这次作业,不得不说,大一时候在工作室的学习到的一些东西渐渐都忘了,日后要更加努力打好基础。

一、需求分析

1.完成一个程序,输入参数n,随机产生n道加减乘除练习题,每个数字在0和100之间,运算符在3个到5个之间。

2.每个练习题至少包含两种运算符,在练习运算中不能出现负数和非整数。

二、功能设计

1)基本功能:实现简单的加减乘除四则运算,一道题目中包含三到五个符号。这一部分的功能已经实现,可以生成10000道以内任意数量的题目以供小学生进行简单练习;

2)附加功能:支持有括号的运算,支持真分数的出题与运算。这部分还没有实现,希望能在询问同学、与同学交流过后,从同学和老师那儿获得一些帮助。

三、设计实现

我的代码较为简单,实现的功能也较为基础,包含一个Main类,负责设计生成n道题目,其中包含三个方法,分别实现生成一个符号的运算题目、生成多个符号的运算题目和对生成的题目进行计算得值。

四、算法详解

通过比较得出被减数与减数的大小并判断是否交换它们的值来保证不会出现负数的运算,通过对除数与被除数设定关系,保证运算中出现除法都是整除。通过了解,java中有一个eval函数能够对加减乘除进行优先级判断。

五、测试运行

以下是我的生成题目和其对应的计算结果:

六、代码片段

以下代码片段是我用来保证减法运算不会得到负数,除法运算得到的结果都是整除的。

//生成简单的四则运算public String Sentence1() {int x = (int) (Math.random() * 100);// 定义x为一个100内的数int y = (int) (Math.random() * 100);// 定义y为一个100内的数int z = (int) (Math.random() * 4);// 定义z为0或1或2或3//用z代表符号,z=1则为减法if (z == 1) {// 如果是减法,保证减数小于被减数if (x < y) {int temp = x;x = y;y = temp;}}//z=3为除法if (z == 3) {// 如果是除法,保证能整除y = (int) (Math.random() * 20) + 1;x = (int) (Math.random() * 6) * y;}//a为表达式String a = x + symbols1[z] + y;if (symbols1[z].equals("-") || symbols1[z].equals("+")) {flag = 1;}return a;}

//进行计算public void Sentence3() {Stack<String> num = new Stack<>();Stack<Character> operate = new Stack<>();int q = (int) (Math.random() * 2) + 2;String sentence = Sentence2(q);//调用方法sentence2(q),生成多个符号的运算int l = sentence.length();int t = 0;int rt = 0;for (int m = -1; m < l - 1; m++) {if (sentence.charAt(m + 1) == '+' || sentence.charAt(m + 1) == '-' || sentence.charAt(m + 1) == '*'|| sentence.charAt(m + 1) == '÷'|| m == l - 2) {if (m == -1) {operate.push(sentence.charAt(0));} else if (m == l - 2) {num.push(sentence.substring(t));break;} else {if (t <= m) {num.push(sentence.substring(t, m + 1));}if (operate.empty() ) {operate.push(sentence.charAt(m + 1));} else if ((operate.peek() == '+' || operate.peek() == '-')&& (sentence.charAt(m + 1) == '*' || sentence.charAt(m + 1) == '÷')) {operate.push(sentence.charAt(m + 1));}else {if(operate.peek()==sentence.charAt(m + 1)){rt++;}num.push(String.valueOf(operate.pop()));operate.push(sentence.charAt(m + 1));}}t = m + 2;}}if(rt==q+2){//符号有无重复er=1;}while (!operate.empty()) {num.push(String.valueOf(operate.pop()));}String[] result = new String[20];int g = 0;while (!num.empty()) {result[g] = num.pop();g++;}

七、总结

我设计的程序用三个方法的相互调用来完成了生成的n道题目,并保证完成了基础的作业要求。经过这次作业,我也体会到了IT行业的不易,软件工程这个专业的不易,虽然我现在做的还只是一个小小的项目,但是我已经意识到了我要为了这份作业付出的努力,未来的编程之路也会更坎坷,需要我不断地学习,与他人交流,向大佬还有老师们提问,借鉴他们逻辑、算法和项目实现过程中的优点。只有努力地学习,才能在未来有一份好的工作,才能为国家做出点贡献。加油!

八、PSP展示

PSP 任务内容 计划时间(h) 实际完成时间(h)
planning 计划 0.5 1
estimate 估计每个阶段的时间成本,并规划大致工作步骤 0.5 1
development 开发 5 7
analysis 需求分析 0.5 0.5
design spec 生成设计文档 0.5 0.5
design review 设计复审 1 1.5
coding standard 代码规范 1 1
design 具体设计 1 1
coding 具体编码 5 10
code review 代码复审 2 2
test 测试 1 1
reporting 报告 0.5 0.5
size measurement 计算工作量 0.5 0.5
postmortem&process improvement plan 事后总结,并提出过程改进计划 1 1

转载于:https://www.cnblogs.com/ClausKE/p/8647488.html

2016012007+小学四则运算练习软件项目报告相关推荐

  1. 2016012101小学四则运算练习软件项目报告

    2016012101小学四则运算练习软件项目报告 Coding.net源码仓库地址:https://git.coding.net/naiteu/sgwq.git 一.需求分析 1,程序可以接收一个参数 ...

  2. 小学四则运算练习软件项目报告

    小学四则运算练习软件项目报告 作业源代码地址:https://git.coding.net/weijn/SiZe.git 一.需求分析 程序可接收一个输入参数n,然后随机产生n道加减乘除练习题. 每个 ...

  3. 2016012090+小学四则运算练习软件项目报告

    2016012090+小学四则运算练习软件项目报告 Coding.net原码仓库地址:https://git.coding.net/Ai_Code/Work.git 目录: 一.需求分析 二.功能设计 ...

  4. 201571030107 小学四则运算练习软件项目报告

    本文转载自:http://www.javaxxz.com/thread-359437-1-1.html 201571030107 小学四则运算练习软件项目报告 项目Github地址 Arithmeti ...

  5. 201571030334 小学四则运算练习软件项目报告

    小学四则运算练习软件项目报告 Github的仓库主页链接地址:https://github.com/huicunzhang/sizeyunsuan 一.需求分析: 1. 程序可接收一个输入参数n,然后 ...

  6. 2016012028+小学四则运算练习软件项目报告

    任务1源码可直接克隆的仓库地址: (HTTPS)https://git.coding.net/zhaoliguaner/Calculate.git (SSH)git@git.coding.net:zh ...

  7. 2016012033 小学四则运算练习软件项目报告

    week2的作业弄到现在week3才开始着手做,所幸截止日期还有几天. Coding.net源码仓库地址:https://git.coding.net/Agustin_Leonard_DPS/Calc ...

  8. 201571030138 小学四则运算练习软件项目报告

    项目gihub地址 fateiceb 项目过程 1.需求分析 基本功能 程序可接收一个输入参数n,然后随机产生n道加减乘除练习题,每个数字在 0 和 100 之间,运算符在3个到5个之间. 为了让小学 ...

  9. 2016012023+小学四则运算练习软件项目报告

    零.coding链接 https://git.coding.net/hiawei/homework1.1.git 一.需求分析程序为四则运算生成器 用户为小学生 1.功能需求: 输入参数N,随机产生N ...

最新文章

  1. JVM源码分析-Java运行
  2. SSM中进行注解式和XML配置式事务管理
  3. python处理pdf实例_python 使用pdfminer3k 读取PDF文档的例子
  4. 反射获取成员方法并使用【应用】
  5. 注解@NotNull/@NotEmpty/@NotBlank
  6. Linux 命令之 pico -- 文本编辑器
  7. 高级IO--1 ---(五种典型IO,阻塞IO,非阻塞IO,信号驱动IO,异步IO, IO多路转接)
  8. 基于Keras的卷积神经网络用于猫狗分类(未进行数据增强)+卷积层可视化
  9. 计算机丢失binkw32会怎么样,binkw32.dll 丢失 binkw32dll安装在哪
  10. 断路器之一:Hystrix 使用与分析
  11. Python模拟谷歌浏览器发布文字、图片
  12. 12306抢票软件的一些学习
  13. Vulkan 多线程渲染
  14. css 网格布局_CSS网格布局三年
  15. [文档] 软件测试说明书
  16. TP-Link wr703n 刷Openwrt始末
  17. 2021/12/20 显示动态读秒跳转页面
  18. 前端外行的微信小程序瞎折腾之旅
  19. ue5 lyra探索分析2 持续更新中
  20. 100g的攻击大概是多少钱一天?

热门文章

  1. 92款jQuery图片展示/幻灯插件开源软件
  2. 漫步微积分三十六——曲面的面积
  3. 深度学习-tensorflow1.x之交叉熵损失函数(softmax_cross_entropy_with_logits)代码实现 Tensorflow1.x 和 Numpy
  4. fread和fwrite函数
  5. 【python】踩坑:ImportError: numpy.core.multiarray failed to import
  6. leetcode —— 216. 组合总和 III
  7. 使用递归法求阶乘(C语言)
  8. 如何实现A星寻路算法 Cocos2d-x 3 0 beta2
  9. leetcode53. 最大子序和详解——pygo
  10. LeNet-5——CNN经典网络模型详解(pytorch实现)