zoukankan      html  css  js  c++  java
  • 2016012066+小学四则运算练习软件项目报告

    代码: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型的时候马虎大意出了问题。然后进行了修改。并且将有除号和没有除号的算式分版块进行计算。

     

     

     

  • 相关阅读:
    AcWing 1027. 方格取数 dp
    AcWing 1014. 登山 dp
    acwing 482. 合唱队形 dp
    LeetCode 1463. 摘樱桃II dp
    LeetCode 100. 相同的树 树的遍历
    LeetCode 336. 回文对 哈希
    LeetCode 815. 公交路线 最短路 哈希
    算法问题实战策略 DARPA大挑战 二分
    算法问题实战策略 LUNCHBOX 贪心
    AcWing 1100. 抓住那头牛 BFS
  • 原文地址:https://www.cnblogs.com/thomaskang/p/8642437.html
Copyright © 2011-2022 走看看