首页 > 技术文章 > 2016012066+小学四则运算练习软件项目报告

thomaskang 原文

代码:https://git.coding.net/Thomaskang/sizeyunsuan.git

先来一张图片缓解下鸭力。

1、需求分析

做一个小学生四则运算

(1)接受需要的题目数量

(2)0到100之间的整数

(3)每个题至少两种运算符

(4)不能出现负数和非整数

(5)输出到一个txt文件中

2、功能设计

  用户交互功能:用于用户输入题目数量和获得运行后的题目文件(包括答案)的文件下载按钮

  后台功能:实现各类实际的需求分析得用户需求

      接受需要的题目数量

      0到100之间的整数

      每个题至少两种运算符

      不能出现负数和非整数

前后台交互功能:怎样连接前后台

错误提示功能:在用户输入不规范等情况下提示错误信息

3、设计实现

用户交互功能:简单的前台页面html+css

后台功能:

(1)接受题目数量,前台jsp传递通过servlet跳转传递到后台,java类通过参数接收

(2)产生四个随机数类,得保证在0到100之间,不能有负数和非整数

(3)产生四个随机字符类,并且对个数和种类得有限制

(4)计算类,运用Java的String中的eval方法进行计算,避免优先级判断

(5)运用io流文件输出到一个txt文件中

前后台连接:jsp+servlet

错误提示功能:用前台js正则表达式进行限制提醒

4、算法详解:

对于优先级问题没必要去讨论,java提供了对于Sting里面的数字运算的方法,自动处理里面的优先级,eval()方法,把计算表达式转换成string进行计算出结果再输出。这是我原本的想法。接下来,想讲下我的辛酸历程。

有一句话是理想很丰满,现实很骨感。最后我没有实现这个功能的全部,仅仅实现了它的一部分,因为在我测试运行的时候出错了。

在这儿我纠结了将近半天,翻了各种博客,做各种测试,最后的结果是,在一到两条数据的时候是可以运算的,但当数据循环多了反而不行了,真的很懵。

简述下关于这点的想法,引入JavaScript的 各种包,然后用eval方法。

将每次拼接的表达式放在字符串里面。用ArrayList包容,然后遍历的去计算,计算后再用ArrayList去接收。

之后用io类进行输出。

5、测试运行

  1、接收题目数量和学号:通过servlet传递跳转,有点多次一举,原本是想要为了更好的用户体验。

  

  

   2、产生四个随机数;

   

   3、运算符,这点我觉得写得不错,我考虑到了每个运算符出现的概率应该相等。

    

  4.计算结果,虽然没有完全做完,但我认为我的想法是没错的。也贴一些我的运行结果。

  

5、出题:

    

7、io输出:

      

  

6、满意代码片段

敲了的代码都挺满意的。

最满意的可能就是考虑到了运算符的出现概率和用户体验那一块。

7、总结

  总得来说,整个敲代码的过程其实不是很难,有想法,而且做起来逻辑挺清晰的。

  但最后没有完成的原因,一是因为忙工作室和其他事情把作业拖到了最后时间不够,二是自己对于某些函数的了解程度和编码程度都还不够。

  也算是给自己一个警示吧,做一个东西得做好准备,而且得要对面临的问题又应对措施。

  在计算那一步花了很多时间还没弄出来的时候就应该换思路了,不能钻牛角尖下次。

  给自己留够时间。

8、展示PSP

 

任务内容

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

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

计划

30

60

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

800

900

开发

200

300

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

300

400

·         生成设计文档

30

30

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

0

0

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

0

20

·         具体设计

30

30

·         具体编码

100

150

·         代码复审

60

0

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

60

80

报告

30

60

·         测试报告

0

0

·         计算工作量

840

1200

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

0

 

 30

关于博客的修改和补充:

          在学姐的提醒下,我对我没有完成的功能进行了再次修改,最终完成了整个项目。

          原因在我考虑除号的时候没有过多的考虑它产生结果的类型。

  找了半天终于找到了自己的问题出在了哪里,原来是在对象转int型的时候马虎大意出了问题。然后进行了修改。并且将有除号和没有除号的算式分版块进行计算。

 

 

 

推荐阅读