假设有一条线路,这条线路上面有5个站点,分别为A,B,C,D,E ? 那我们要做一个查询,购票系统的话,用什么算法?如何设计表?基础功能比较容易实现:(1)录入站点信息;(2)录入线路信息,勾选线路途经的站点 以下是模拟购票的过程。
第一步:我定义一个数组,表示一条线路上的站点
String [] sites = new String [] {"A", "B", "C", "D", "E"};
第二步:我首先要初始化车票的信息,将可能的(出发地~达到地)都罗列出来,从第一个站点开始依次迭代,代码如下所示!

/ 生成全部可能的(出发地~到达地)车次信息 @param sites /public static void generateTicket(String [] sites) { int length = sites.length; for (int m = 0; m < length ; m++) { for (int n = m + 1; n < length; n ++) { System.out.print(sites[m] + "~" + sites[n] + " "); } }}
输出的结果:A~B A~C A~D A~E B~C B~D B~E C~D C~E D~E
先简单设计一张表 t_ticket,有3个字段 from, to, quantity 分别表示 出发地,达到地,剩余数量。
假设座位总数为10个,那么存入数据,初始化表如下
第三步:我要开始输入 出发地,到达地,买票!
这里面的难点是要把相关站点之间的数量都扣减,比如购买B到D的车票,那么 A~C A~D A~E B~C B~D B~E C~D C~E 之间的剩余数量都要扣减,所以先要有一个算法,把关联的站点都计算出来,思考一下,逻辑如下:
假设我要购买from到to的车票,那么受影响的站点信息如下(end表示末站)1. from之前的所有元素(不包含from),到from(不包含)后面所有的元素2. from(包含)到to(不包含)之间的元素,到end之间的所有元素
/ 购买从from到to的车票,生成受到关联的路段信息 1. from之前的所有元素(不包含from),到from(不包含)后面所有的元素 2. from(包含)到to(不包含)之间的元素,到end之间的所有元素 @param from 索引值 @param to 索引值 /public static void relevant(int from, int to) { String [] sites = new String [] {"A", "B", "C", "D", "E"}; int total = sites.length - 1 ; // 处理情况1 for (int start = 0; start < from; start++) { for (int end = from + 1; end <= total; end++) { System.out.print(sites[start] + "~" + sites[end] + " "); } } // 处理情况2 for (int start = from; start < to; start++) { for (int end = start + 1; end <= total; end++) { System.out.print(sites[start] + "~" + sites[end] + " "); } }}
获取到所有的关联的路段信息,再把数据库中相应的记录数量扣减!