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

    1、实验目的与要求

    (1)掌握软件项目个人开发流程。

    (2)掌握Github上发布软件项目的操作方法。

    2、实验内容和步骤
     
    任务1:
    尝试按照《构建之法》第2章中2.3所述PSP流程,使用JAVA编程语言,独立完成一个包含3到5个数字的四则运算练习的命令行软件开发题目参考:http://www.cnblogs.com/xinz/p/7417960.html
    软件基本功能要求如下:
    • 程序可接收一个输入参数n,然后随机产生n道加减乘除练习题,每个数字在 0 和 100 之间,运算符在3个到5个之间。
    • 为了让小学生得到充分锻炼,每个练习题至少要包含2种运算符。同时,由于小学生没有分数与负数的概念,你所出的练习题在运算过程中不得出现负数与非整数,比如不能出 3/5+2=2.6,2-5+10=7等算式。
    • 练习题生成好后,将你的学号与生成的n道练习题及其对应的正确答案输出到文件“result.txt中,不要输出额外信息,文件目录与程序目录一致。
    • 当程序接收的参数为4时,以下为输出文件示例。

    3.软件附加功能要求如下:(请有余力的同学完成)
    • 支持有括号的运算式,包括出题与求解正确答案。注意,算式中存在的括号必须大于2个,且不得超过运算符的个数。(5分)
    • 扩展程序功能支持真分数的出题与运算,例如:1/6 + 1/8 + 2/323/24。注意在实现本功能时,需支持运算时分数的自动化简,比如 1/2+1/6=2/3,而非4/6。(5分)

    4.需求分析:

            (1)程序可接收一个输入参数n,然后随机产生n道加减乘除练习题,每个数字在 0 和 100 之间,运算符在3个到5个之间;(2)每个练习题至少要包含2种运算符(3)同时,由于小学生没有分数与负数的概念,你所出的练习题在运算过程中不得出现负数与非整数,比如不能出 3/5+2=2.6,2-5+10=7等算式。

    5.功能设计:

        基本功能:小学四则运算加减乘除。

        扩展功能:实现了带括号的加减乘除,真分数的加减乘除正在完善中。

    6.设计实现:

        我设计了两个类,一个是Main()类,主要是进行运行程序,另一个类是calchyt()类主要是四则运算的解决过程。还实现了一个附加功能带括号的运算式。由于我是一个模块一个模块来的,我在另一个类中已经写好了真分数的出题与运算,但是我可能能力还不够,没办法把它们整合到一起。

    7.测试运行:下面是我的测试结果截图:

             

    8.核心代码:我觉得最主要核心就是用逆波兰思想进行压栈和出栈的过程。这个我一开始的时候想过几种方法,但就是有点繁琐,就上网借鉴大神的思想,下面给出参考链接   http://tianyami.iteye.com/blog/1462498;http://leon-a.iteye.com/blog/186104;https://bbs.csdn.net/topics/390049006

    if (youxianji(symbols.peek())<=youxianji(s)&&!s.equals(")")) 
                    {
                          symbols.push(s);
                    }
                    else if(!s.equals(")")&&youxianji(symbols.peek())>youxianji(s))
                    {
                           while (symbols.size()!=0&&youxianji(symbols.peek())>=youxianji(s)&&!symbols.peek().equals("(")) 
                           {
                               if (!symbols.peek().equals("(")) 
                                            {
                                                           String operator=symbols.pop();
                                                           houzhui.append(operator).append(" ");
                                                shuchus.push(operator);
                                            }
                                        }
                                        symbols.push(s);
                                    }
                                    
                          else if (s.equals(")")) 
                          {
                                while (!symbols.peek().equals("(")) 
                                  {
                                       String operator=symbols.pop();
                                        houzhui.append(operator).append(" ");
                                        shuchus.push(operator);
                                              }
                                       
                         symbols.pop();
                                      }
                                     }

    9.总结:模块化的设计是先给出具体实现的方法如,随机产生计算式的方法,转化成为逆波兰式的方法,还有怎么计算逆波兰式的方法,然后调用这些方法就可一了。

    10.展示PSP,这个环节重要的是让自己看到自己的估计和实际消耗时间如下表:

    PSP2.1

    任务内容

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

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

    Planning

    计划

    10

    20

    ·       Estimate

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

    8

    6

    Development

    开发

    200

    300

    ··       Analysis

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

    30

    60

    ·       Design Spec

    ·  生成设计文档

    5

    30

    ·       Design Review

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

    4

    20

    ·       Coding Standard

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

    3

    20

    ·       Design

      具体设计

    10

    20

    ·       Coding

      具体编码

    36

    120

    ·       Code Review

    ·  代码复审

    7

    5

    ·       Test

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

    13

    21

    Reporting

    报告

    30

    40

    ··       Test Report

    ·  测试报告

    3

    2

    ·       Size Measurement

      计算工作量

    2

    5

    ·       Postmortem & Process Improvement Plan

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

    3

    3

    11.个人感想:做软件的确是需要静下心来做的一件事,需要完善好前面包括需求分析,具体设计等每一步,如果需求分析和具体设计那一部分想的不够完善,那么当你具体写代码的时候会手忙脚乱,面对满篇的BUG;还有就是要注重代码的规范,这会让人在复查代码时节省很多时间;最重要的是要平时多联系写代码,这样敲代码的手速会快很多。

    GitHub地址:https://github.com/hyt6233/calculate

  • 相关阅读:
    Martix工作室考核题 —— 打印一个菱形
    Martix工作室考核题 —— 打印一个菱形
    Martix工作室考核题 —— 打印九九乘法表
    Martix工作室考核题 —— 打印九九乘法表
    Martix工作室考核题 —— 打印九九乘法表
    Martix工作室考核题 —— 201938 第三题
    Martix工作室考核题 —— 201938 第三题
    Martix工作室考核题 —— 201938 第三题
    Martix工作室考核题 —— 201938 第一题
    fiddler模拟发送post请求
  • 原文地址:https://www.cnblogs.com/haoytlearnblog/p/8613020.html
Copyright © 2011-2022 走看看