zoukankan      html  css  js  c++  java
  • 个人开发流程 --计应191第二小组国际强

    zPSP阶段

    预算花费时间

    实际花费时间

    计划

    3

    3

    明确开发方向,使用功能

    2

    2.5

    开发

    9

    15

    需求分析

    1

    2

    代码编码

    1

    3

    代码复审

    1

    1.5

    测试(修改错误,完善功能)

    1

    2

    郑州地铁计费系统

    计划过程 

    在进行编写之前,要对编码方向,实现功能有个大概的构思,再将功能进行细分,规划各个阶段使用的时间。

    需求分析

    对此次软件功能进行分析,需要什么按钮,需要什么功能,完成什么任务,都需要进行必要的分析。

    起点和终点是无法获取乘客的行驶路径,于是乎简化计算过程,只计算两站之间的站数,而不进行公里数的计算。

           根据百度后得到每站计算费用的计费方式,对程序计算方法进行编程

          

    具体实现

    使用Eclipse对编码进行编程,根据以往学习经验,首先就是需要把数据库设计妥当,用来记录乘客起始和终止位置,计算乘客用时和路程以及费用,需要从数据库中去获取。

           其实在之前想过几种方法,觉得太过于简单,或者存在一定的误区,但是运用到算法的话又过于复杂,并且也没有接触过算法,所以要避开使用算法进行计算,细分各个计算过程,再对各个功能进行分析,要实现购票,出票,结算,进站和出战,分析这些问题后就可以开始进行编码了。

           再着就是要解决换乘的事情,例如一号线换为三号线,再怎么去解决计费问题,首先用第一站上站的位置开始计数,计算换乘的时候的位置,如果从一号线转到三号线,则计算上车位置到转站位置的站数,再从转站位置重新计数,计算到下车位置的站数,将这进行相加,则可以解决换站计费问题。

    开发

    简单进行一个系统的模拟,此处只演示两条线路

    由于代码测试过程出现几处错误,此处只贴出一篇正确代码

    package dt;

    import java.util.ArrayList;

    import java.util.HashSet;

    import java.util.List;

    import java.util.Set;

    public class Line {

        public static List<Station> l1 = new ArrayList();//1号线

        public static List<Station> l2 = new ArrayList();//2号线

      

        static {

           init();

        }

        /**

         * 初始化方法

         */

        private static void init(){

            String line1Str = "河南工业大学 郑大科技园 郑州大学 梧桐街 兰寨 铁炉 市民中心 西流湖 西三环 秦岭路区";

            String line2Str = "贾河 惠济区政府 毛庄 黄河迎宾馆 金洼 金达路 刘庄 柳林 沙门 北三环 东风路 关虎屯

         

            initArr(l1,l1Str);

            initArr(l2,l2Str);

           

        }

        /**

         * 初始化列表,将字符串按空格分割添加到列表中

         * @param stationList 要初始化的列表

         * @param lineStr 存放数据的字符串

         */

        private static void initArr(List<Station> stationList, String lineStr) {

            String[] lineArr = lineStr.split(" ");

            for (String s : lineArr) {

                stationList.add(new Station(s));

            }

            for (int i = 0; i < stationList.size(); i++) {

                if (i < stationList.size() - 1) {

                    stationList.get(i).next = stationList.get(i + 1);

                    stationList.get(i + 1).prev = stationList.get(i);

                }

            }

            lineSet.add(stationList);

            stationCount += stationList.size();

        }

    }

    public class Station {

        private String name; //地铁站名称

        public Station prev; //前一个站

        public Station next; //后一个站

        //本站到某一个目标站(key)所经过的所有站集合(value),保持前后顺序

        private Map<Station,LinkedHashSet<Station>> orderSetMap = new HashMap();

        public Station() {

        }

        public Station (String name){

            this.name = name;

        }

        public String getName() {

            return name;

        }

        public LinkedHashSet<Station> getAllPassedStations(Station station) {

            if(orderSetMap.get(station) == null){

                LinkedHashSet<Station> set = new LinkedHashSet();

                set.add(this);

                orderSetMap.put(station, set);

            }

            return orderSetMap.get(station);

        }

        public Map<Station, LinkedHashSet<Station>> getOrderSetMap() {

            return orderSetMap;

        }

        @Override

        public boolean equals(Object o) {

            if (this == o){

                return true;

            }

            if (o == null || getClass() != o.getClass()) {

                return false;

            }

            Station station = (Station) o;

            return name.equals(station.name);

        }

        @Override

        public int hashCode() {

            return Objects.hash(name);

        }

    }

    代码复审和测试

    代发复审并没有发现错误,因为单单在代码上无法看出有什么出入,在代码测试的过程,出现有换站过程计算费错误的出现,后面对代码就行优化,把车站计费重新进行修改,把起始站和换乘站的站数加上换乘位置到下车位置的站数,再通过站数进行费用的计算,这样经过几轮测试,发现原本的错误解决掉,在多次测试后,发现并无代码可以进行优化,也无代码错误的出现后,此处测试完成。

  • 相关阅读:
    ThinkPHP 3.2.2 实现持久登录 ( 记住我 )
    Java实现 LeetCode 20 有效的括号
    Java实现 LeetCode 20 有效的括号
    Java实现 LeetCode 19删除链表的倒数第N个节点
    Java实现 LeetCode 19删除链表的倒数第N个节点
    Java实现 LeetCode 19删除链表的倒数第N个节点
    Java实现 LeetCode 18 四数之和
    Java实现 LeetCode 18 四数之和
    Java实现 LeetCode 18 四数之和
    Java实现 LeetCode 17 电话号码的字母组合
  • 原文地址:https://www.cnblogs.com/jinpai/p/14645778.html
Copyright © 2011-2022 走看看