地铁计费
计应192第五组古倩南
PSP阶段 |
预算花费时间 |
实际花费时间 |
计划 |
3 |
2 |
明确开发方向,使用功能 |
2 |
2 |
开发 |
9 |
12 |
需求分析 |
1 |
2 |
代码编码 |
1 |
0.5 |
代码复审 |
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();
}
}
代码复审和测试
代码复审过程错误出现,第一次出现编译无法通过,通过排查,发现添加数据库的过程无法完成,再者计算最终结果的过程出现无法获取的情况,问题排查是因为数据库无法正常建立链接导致,此处无法建立链接的原因是因为驱动和数据库所需要的版本不兼容的问题,Mysql不同版本一定要安装合适的数据库驱动,通过代码复审发现最后计算公式过于复杂,于是乎改变了计算公式,将两种最后合并成为一种,通过测试获取到正确的费用额度,