• 个人开发流程 --计应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);

        }

    }

    代码复审和测试

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

  • 相关阅读:
    AtCoder ABC154 F
    题解 LA4390
    题解 LA4064
    题解 UVa11529
    【题解】洛谷 P6295 有标号 DAG 计数【生成函数 多项式】
    NOIP 2020 自闭记 暨 后期计划
    【CF246E】Blood Cousins Return【dsu on tree】
    【CF208E】Blood Cousins【dsu on tree】
    【CF570D】Tree Requests【dsu on tree】
    dsu on tree 学习笔记
  • 原文地址:https://www.cnblogs.com/jinpai/p/14645778.html
Copyright © 2020-2023  润新知