四则运算升级版–图形化界面

结对项目——四则运算 “软件”之升级版

这个作业的要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2232

GitHub地址:https://github.com/Rozmin/Airi

结对成员刘星辰博客园:https://www.cnblogs.com/destinymingyun

一、开发环境

 IDE :  IntelliJ IDEA 2018.2.4 x64

 JDK:  JDK_U801

 系统:  Window 10 x64


二、需求分析

1.原始需求:

  • 生成题目,单个题目最多不能超过4个运算符,操作数小于100。
  • 用户可以输入答案
  • 若用户输入答案正确,则提示正确;若答案错误,则提示错误,并要提示正确答案是多少。

2.拓展方向:

  1. 程序可以出带括 的正整数四则运算,支持分数,除法保留两位小数,如:(1/3+1)*2 = 2.67,特别注意:这里是2.67而非2.66,或保持分数形式:8/3
  2. 可以出表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括 ,用户输入的结果不用带括 。如: 2*(-4) = -8
  3. 用户答题结束以后,程序可以显示用户答题所用的时间
  4. 用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数
  5. 用户在第一次答题时,需要用户输入用户名,用户下次启动后,程序需要记住用户前一次输入的用户名 
  6. 程序可以出单个整数阶乘的题目:如:4!=24
  7. 程序可以设置答题时间,时间设置为整数,单位为秒,最大不能超过120秒,若超过了答题时间未答题,则提示:时间已到,不能答题。
  8. 程序可以设置皮肤功能,可以改变界面的颜色即可。

3.分析:

    对于8个功能的选择,我们小组参考了《构建之法》第8章的需求分析。将其按书中的四个象限进行分类

1.必要需求    

      原始需求 + 图形化界面

2.杀手需求

程序可以出带括 的正整数四则运算,支持分数,除法保留两位小数,如:(1/3+1)*2 = 2.67,特别注意:这里是2.67而非2.66

可以出表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括 ,用户输入的结果不用带括 。如: 2*(-4) = -8

程序可以出单个整数阶乘的题目:如:4!=24

3外围需求:

程序可以设置答题时间,时间设置为整数,单位为秒,最大不能超过120秒,若超过了答题时间未答题,则提示:时间已到,不能答题。

用户答题结束以后,程序可以显示用户答题所用的时间

用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数

用户在第一次答题时,需要用户输入用户名,用户下次启动后,程序需要记住用户前一次输入的用户名 

4.辅助需求:

程序可以设置皮肤功能,可以改变界面的颜色即可。

4.方向选择

   值得一提的是,一开始,因为我们小组以前没有完全写过整套的代码,一开始想八个功能全完成的,工作量高于我们估计的n倍,而且由于我们本身的技术能力限制,完成作业时间限制,最后不得不选其中的一部分。考虑到未来可能会升级到web模式,以及java对图形化界面过于复杂的操作(相对于html)。

  在参考了《构建之法》第8章的需求分析。将分好象限的功能再按5种办法细分

不做:

     程序可以设置皮肤功能,可以改变界面的颜色即可。

维持:

      登陆注册

抵消:

  程序可以设置答题时间,时间设置为整数,单位为秒,最大不能超过120秒,若超过了答题时间未答题,则提示:时间已到,不能答题。

用户答题结束以后,程序可以显示用户答题所用的时间

用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数

程序可以出带括 的正整数四则运算,支持分数,除法保留两位小数,如:(1/3+1)*2 = 2.67,特别注意:这里是2.67而非2.66

可以出表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括 ,用户输入的结果不用带括 。如: 2*(-4) = -8

程序可以出单个整数阶乘的题目:如:4!=24

差异化:

      无自定义新功能

优化:

      具体编码结构上的优化和可拓展性(重点)

      


三、设计

1.总体结构设计

 Question 模块详细设计

  我们在设计中想,题库只关心题目的生成和其他操作,并不会具体关心题目的个体差异,无论是阶乘还是四则运算都应该是一种操作,所以我们将二者的共性抽离出,同时考虑到未来题库可能管理的不是是数学类型的题目,所以我们设计了如下结构。

     题库只关心Question中的方法,在数学中我们定义了关于边界的设定计算方法抽象,至于如何实现我们交给了最终类。

      

 


 四、程序运行示例


 五、结对过程

  这个程序的总体结构是我们在分析组员刘星辰之前的初版四则运算的结构,进行总结,改进设计而来。

  在这里不得不佩服结对成员 任荣秀 根据  “要将对于答案的判断这个业务放在题库的生成里,还是调用计算类的方法,最后还是将计算多项式类并到题库生成类中作为一个静态方法。” 提出的新的设计理念

  最后在此放上我俩的结对图

四则运算升级版--图形化界面

 

总结

在结对编程中,虽逻辑上会有阻碍,但有一种不一样的体会,一个内容的实现不止有两种,团队合作实现项目很有必要,个人完成的情况下会有很大的思维限制。

PSP2.1 Personal Software Process Stages Time Senior Student(h) Time(h)
Planning 计划 3 2
· Estimate 估计这个任务需要多少时间 10 20
Development 开发 8 10
· Analysis 需求分析 (包括学习新技术) 2 1
· Design Spec 生成设计文档 2 1
· Design Review 设计复审 1 1
· Coding Standard 代码规范 0.5 1.5
· Design 具体设计 4 4.5
· Coding 具体编码 12 13
· Code Review 代码复审 1 2
· Test 测试(自我测试,修改代码,提交修改) 1 1.5
Reporting 1 3
· 测试 告 0 0
· 计算工作量 1 1
· 并提出过程改进计划 0 1

  

 

文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览91383 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2018年9月24日
下一篇 2018年9月25日

相关推荐