GitHub地址: https://github.com/201571030116/sizeyunsuan

一、题目要求

尝试按照《构建之法》第2章中2.3所述PSP流程,使用JAVA编程语言,独立完成一个包含3到5个数字的四则运算练习的命令行软件开发

软件基本功能要求如下:

  • 程序可接收一个输入参数n,然后随机产生n道加减乘除练习题,每个数字在 0 和 100 之间,运算符在3个到5个之间。
  • 为了让小学生得到充分锻炼,每个练习题至少要包含2种运算符。同时,由于小学生没有分数与负数的概念,你所出的练习题在运算过程中不得出现负数与非整数,比如不能出 3/5+2=2.6,2-5+10=7等算式。
  • 练习题生成好后,将你的学号与生成的n道练习题及其对应的正确答案输出到文件“result.txt”中,不要输出额外信息,文件目录与程序目录一致。
  • 当程序接收的参数为4时,以下为输出文件示例。

二、需求分析

1.程序可接收一个输入参数n

2.可以随机产生n道四则运算练习题

3.生成的数字范围为0-100

4.要求至少包含2种运算符,即运算符个数为2个或两个以上,可知随机产生的数字至少有3个

5.不能出现负数与小数

6.将学号与生成的练习题和答案输出并存储到result文件中

三、算法设计

1.随机生成3个或3个以上0-100的正整数

2.随机生成2-5个运算符,包含:+、-、*、/  用0、1、2、3分别定义

3.判断减法运算时是否产生负数,是的话则排除;除法运算是否可以整除,不可以的话排除

4.定义运算符的优先级

5.接收参数n

6.随机组合产生n个运算式

7.输出随机产生的运算式和结果,存储到result.txt文件中

四、设计实现

由于对Java已经不是很熟悉,所以理清思路之后在网上查找了一些相关问答和博客,对于一些功能只是能大概了解所用函数但是无法实现(因为Java基础很差,学完之后也没有经常练习,比如判断优先级的堆栈和可以去括号的逆波兰式,在查了一些资料之后发现自己无法写出正确的代码来实现,就放弃了),所以在做的时候有投机取巧的现象,对于一些自己编码无法实现的功能用了投机的方法把老师要求的功能简化了,没有完全实现。(比如把生成的运算符的先后顺序和个数定死了,省去了判断优先级部分),大概的要求实现了,但是完成之后回过头来反思发现跟原来的设计思路有所差异,随机输出的运算式都被我认为定义成了由3个随机正整数和2个运算符组成的式子。对于函数这块的调用不太熟练所以采用了很笨很繁琐的办法来一个一个写输出。关于这些问题我希望自己能够在之后的学习中多下功夫钻研,争取能跟上老师和同学们的进度。

以下是我查找资料时所引用的博文地址:https://www.cnblogs.com/ziyixuedie/p/6492163.html

五:测试运行

    

六、核心代码

public class yunsuan {public static void main(String[] args) throws Exception {// TODO Auto-generated method stubint x, y, i, a1;int d1 = 0;String d = null;System.out.println("请输入题目的数量");BufferedWriter BufferedWriterbw = new BufferedWriter(new FileWriter("result.txt"));BufferedWriterbw.write("201571030116\r\n");Scanner scan2 = new Scanner(System.in);x = scan2.nextInt();int daan[] = new int[x];y=100;for (i = 0; i < x; i++) {int a = (int) (Math.random() * y);// 随机生成一个1-10的整数int b = (int) (Math.random() * y);// 随机生成一个1-10的整数int e = (int) (Math.random() * y);// 随机生成一个1-10的整数int c = (int) (Math.random() * 4);// 随机生成一个1-4的整数,0表示加法,1表示减法,2表示乘法,3表示除法if (c == 0) {d1 = a + b+ e;System.out.print(a + "+" + b + "+" + e + "= \n"   );BufferedWriterbw.write( a + "+" + b + "+" + e + "=" +d1+"\r\n"   );}if (c == 1) {d1 = a -b +e;int f = a - b;if(f<0){i--;}else{System.out.print(a + "-" + b + "+" + e + "= \n" );BufferedWriterbw.write( a + "-" + b + "+" + e + "=" +d1+"\r\n"  );}}if (c == 2) {d1 = a * b + e;System.out.print(a + "*" + b + "+" + e + "= \n" );BufferedWriterbw.write(a + "*" + b + "+" + e + "=" +d1+"\r\n"  );}if (c == 3) {d1 = a / b * e;int f = a%b;if(f!=0){i--;}else{System.out.print(a + "/" + b + "*" + e + "= \n" );BufferedWriterbw.write(a + "/" + b + "*" + e + "=" +d1+"\r\n"  );}}if ((i + 1) % 3 == 0) {System.out.println();}}BufferedWriterbw.flush();}}

七、总结

很久没有用Java写过这样一个相对来说比较复杂的程序了,其实大部分的时间不是花费在敲代码上,是花费在复习和寻找某个功能的解决方法上。说来惭愧,Java基础一直很差的我当年还抱着考过了这门课就万事大吉了的心态,现在想来当时那种不负责任的态度对现在造成的影响可以说是很大了。在这一周的时间里开始恶补Java,但是短短的一周也没有起到太大的作用,反而把这次作业一拖再拖。在完成的过程中也是在自己探索的基础上借鉴网上给出的一些最基础的算法还有同学的帮忙才算勉强完成任务。

这次作业比起上次提问题来难度突然增大了不少,让我有些慌乱。但是这是我真正意识编程这件事不是只靠写代码就能完美解决的。需求分析和算法设计在这种相对较难的程序中扮演着举足轻重的角色,如果一味的埋头敲代码,那碰到一个需求就得转换一下思路,这样缝缝补补不仅浪费时间,写出来的代码也不够精炼。总之这次作业中在个人能力方面收获最大的还是知道了需求分析和算法设计的重要性,这两步在之后的编程过程中不可或缺。

还有一个很深的感触,以前一直觉得只有Deadline临近才能催发灵感事半功倍,于是这几天我一次又一次在这种刺激里探索和尝试,最终的结果与我所料也相差无几,每次都能做到Deadline的一半——Dead。 虽然是句玩笑话,但是我真的意识到完成作业这件事赶早不赶晚,不下功夫是不会有所谓的灵光乍现的,踏踏实实做功课才是道理。

八、PSP展示

PSP2.1

任务内容

计划完成需要的时间(min)

实际完成需要的时间(min)

Planning

计划

15

20

·     Estimate

·    估计这个任务需要多少时间,并规划大致工作步骤

10

10

Development

开发

480

600

··     Analysis

需求分析 (包括学习新技术)

20

25

·   Design Spec

·    生成设计文档

10

15

· Design   Review

·    设计复审 (和同事审核设计文档)

30

60

·   Coding

Standard

代码规范 (为目前的开发制定合适的规范)

10

10

·       Design

具体设计

20

30

·       Coding

具体编码

240

400

·  Code   Review

·    代码复审

20

20

Test

·    测试(自我测试,修改代码,提交修改)

10

40

Reporting

报告

60

120

·· Test   Report

·    测试报告

20

30

Size Measurement

计算工作量

10

10

·Postmortem   & Process Improvement Plan

·    事后总结 ,并提出过程改进计划

10

15

转载于:https://www.cnblogs.com/liyuying/p/8625478.html

201571030116 实验二——小学四则运算练习相关推荐

  1. 实验四:201571030116/201571030106《小学四则运算练习软件需求说明》结对项目报告...

    任务1:以实验二个人项目.实验三结对项目所开发的小学生四则运算练习软件作为原型,实施小学生四则运算练习软件用户调研活动. 由于上次作业小伙伴很机智的把软件的操作过程录成了gif动图,所以在做基于原型的 ...

  2. 201571030321 马玉婷 实验四 小学四则运算需求分析结对报告

    小伙伴博客园链接:http://www.cnblogs.com/mameiling/p/8876532.html 任务一: 实践软件需求获取方式 (1)在线咨询 老师层面:特意找到了母校的老师,由于双 ...

  3. 201571030128/201571030118《小学四则运算练习软件软件需求说明》结对项目报告

    一.以实验二个人项目.实验三结对项目所开发的小学生四则运算练习软件作为原型,实施小学生四则运算练习软件用户调研活动具体过程. 1.真实的调研对象 对象 性别 年龄 身份 刘老师 女 23 小学数学实习 ...

  4. 小学四则运算练习软件需求说明

    201571030135/201571030137<小学四则运算练习软件需求说明>结对项目报告 任务1: 1.说明 以我的同学中当小学数学老师的同学为调查对象,进行问卷调查,同时我请他们帮 ...

  5. 《小学四则运算练习软件软件需求说明》结对项目报告

    任务一: 结对队员链接:http://www.cnblogs.com/wuqiong666/p/8870248.html#3962241 1.线下需求获取: (1).小学生培训机构课堂考察,教师采访 ...

  6. 201571030121《小学四则运算练习软件软件需求说明》结对项目报告

    201571030107/201571030121<小学四则运算练习软件软件需求说明>结对项目报告 结对小伙伴:冯晓(201571030107) 任务一 首先,我们进行了实例体验,把我们已 ...

  7. 【软件工程】小学四则运算 “软件”之初版

    作业要求来源于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2186 我的github远程仓库的地址: https://github ...

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

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

  9. 作业五—个人项目-小学四则运算 “软件”之升级版1

    作业五-个人项目-小学四则运算 "软件"之升级版 作业要求来源:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/21 ...

最新文章

  1. viewport,html,body在pc和移动的差异
  2. java cpu 占用高问题定位
  3. 最简单的基于FFMPEG+SDL的视频播放器 ver2 (采用SDL2.0)
  4. 伦茨8400变频器面板按键说明_lenze变频器 8400 protec
  5. 虚拟主机创建虚拟lan_创建虚拟背景应用
  6. linux 中断 应用程序,Linux中断编程
  7. Android中自定义水球
  8. 第10篇 WINDOWS2003服务器 IIS上配置404页面的图文教程
  9. 速率法和终点法的区别_终点法 速率法 二点法
  10. linux是基于什么的开源操作系统,什么是开源操作系统
  11. 史上最全4S店维修潜规则 看完绝不被坑
  12. K8S集群节点显示NotReady怎么解决?
  13. 【笔记】创新思维工作坊(一)
  14. 阿里云Linux服务器新手入门(2核4G)
  15. HDFS退出安全模式
  16. 快充对电池有损害么?
  17. 听听Vitalik对token设计的看法
  18. HTML5七夕情人节表白网页制作【HTML5庆祝生日蛋糕烟花特效】HTML+CSS+JavaScript
  19. 用 python 爬取 gutenberg 上的英文科幻小说
  20. Excel学习笔记:P30-如何制作一个让老板眼睛为之一亮的甘特图

热门文章

  1. mysql 复制表的几种方式
  2. 解决bootstrap popover首次显示位置有偏差的问题
  3. 重装华为服务器系统教程,服务器系统重装步骤
  4. mac上使用git管理代码
  5. 推荐大数据排名前六的公众号
  6. 中国汽车流通协会:芯片供给逐步改善
  7. .Xmind文件如何上传金山文档共享在线编辑?
  8. 香肠派对服务器维护时间,怎么解除香肠派对时间限制_怎么解除香肠派对健康保护时间限制_资讯...
  9. 当 RTC 遇到“杨超越编程大赛”=?
  10. 网易拟在杭州开“云创大会”,浙江已成云计算高地