题目存储在上传的文件当中。

  • 代码实现

Subway 类:

 1 package ClassroomTest;
 2
 3 public class Subway {
 4
 5     private String railway;
 6     private String station[];
 7     private String information;
 8
 9     public String getRailway() {
10         return railway;
11     }
12
13     public void setRailway(String railway) {
14         this.railway = railway;
15     }
16
17     public String[] getStation() {
18         return station;
19     }
20
21
22
23     public Subway() {
24         super();
25         this.railway = railway;
26         this.station = station;
27         this.information = information;
28     }
29
30     public void setStation(String[] station) {
31         this.station = station;
32     }
33
34     public String getInformation() {
35         return information;
36     }
37
38     public void setInformation(String information) {
39         this.information = information;
40     }
41
42
43 }

SubwayManger 类

  1 package ClassroomTest;
  2 /*
  3  * 信1805-2
  4  * 20183547
  5  * 崔星宇
  6  */
  7 import java.io.File;
  8 import java.io.FileInputStream;
  9 import java.io.FileNotFoundException;
 10 import java.io.IOException;
 11 import java.io.InputStream;
 12 import java.util.Scanner;
 13
 14 public class SubwayManager {
 15    static Scanner sc=new Scanner(System.in);
 16
 17     public static void main(String[] args) throws IOException {
 18         Subway first=new Subway();
 19         Subway third=new Subway();
 20         String []b1=new String[30];
 21         String []b2=new String[10];
 22         File file=new File("D://百度网盘//shijiazhuang-subway.txt");
 23          InputStream in=new FileInputStream(file); //实例化FileInputStream
 24          byte b[]=new byte[1024];
 25          int len=in.read(b);
 26          in.read(b);
 27          in.close();  //关闭输入流
 28          String d=new String(b,0,len);
 29          String[] words = d.split(" ");
 30          first.setRailway(words[0]);
 31          first.setInformation(words[21]);
 32          int j=0;
 33          for(int i=1;i<21;i++) {
 34              b1[j++]=words[i];
 35          }
 36          third.setRailway(words[22]);
 37          third.setInformation(words[29]);
 38          j=0;
 39          for(int i=23;i<29;i++) {
 40              b2[j++]=words[i];
 41          }
 42          third.setStation(b2);
 43          System.out.println("***************************************************************");
 44         System.out.println("            欢迎乘坐石家庄地铁            ");
 45         System.out.println("****************************************************************");
 46         System.out.println("        1、    显示具体线路信息;        ");
 47         System.out.println("        2、    购票        ");
 48         System.out.println("****************************************************************");
 49         int a;
 50         sc=new Scanner(System.in);
 51         a=sc.nextInt();
 52         // 线路图
 53         if(a==1) {
 54             System.out.println("请选择需要查找的线路:");
 55             System.out.println("0 :全部 ");
 56             System.out.println("1:一号线 ");
 57             System.out.println("2:三号线 ");
 58             sc=new Scanner(System.in);
 59             int b11=sc.nextInt();
 60                 System.out.println("***************************************************************");
 61                 System.out.println("            石家庄地铁线路图        ");
 62                 System.out.println("***************************************************************");
 63                 int i=0;
 64                  j=0;
 65                 if(b11==1)
 66                 {  i=0;
 67                     System.out.print("1号线:");
 68                     while(b1[i]!=null) {
 69                         System.out.print(b1[i]+" ");
 70                         i++;
 71                     }
 72                 System.out.println();
 73                 }
 74                 /*else*/ if(b11==2) {
 75                 System.out.print("3号线:");
 76                     j=0;
 77                     while(b2[j]!=null) {
 78                         System.out.print(b2[j]+" ");
 79                         j++;
 80                     }
 81                     System.out.println();
 82                     }
 83                 if(b11!=1&&b11!=2){
 84                      System.out.println("1号线:");
 85                      i=0;
 86                         while(b1[i]!=null) {
 87                             System.out.print(b1[i]+" ");
 88                             i++;
 89                         }
 90                         System.out.println();
 91                      System.out.println("3号线:");
 92                      j=0;
 93                      while(b2[j]!=null) {
 94                             System.out.print(b2[j]+" ");
 95                             j++;
 96                         }
 97                      System.out.println();
 98                 }
 99                 System.out.println("***************************************************************");
100         }
101         //购票
102         else {
103             System.out.println("****************************************************************");
104                System.out.println("            欢迎乘坐石家庄地铁            ");
105                System.out.println("****************************************************************");
106                System.out.println("        起始站:");
107                System.out.println("        终点站:");
108                System.out.println("        购票数量:");
109                System.out.println("****************************************************************");
110                sc=new Scanner(System.in);
111                String a1=null;
112                String a2=null;
113                int number=0;
114                a1=sc.next();
115                a2=sc.next();
116                number=sc.nextInt();
117                int address1=0,address2=0;
118                int address3=0,address4=0;
119                int number1=0,number2=0;
120                int number3=0,number4=0;
121                int price=0;
122                int mail=0;
123                int i = 0;
124                int k1=0;
125                int k2=0;
126                while(b1[i]!=null) {
127                    if(b1[i].compareTo(a1)==0) {
128                        address1=i;
129                        k1++;
130                    }
131                if(b1[i].compareTo(a2)==0) {
132                    address2=i;
133                    k1++;
134                }
135                i++;
136              }
137                i=0;
138              while(b2[i]!=null) {
139                  if(b2[i].compareTo(a1)==0) {
140                      address3=i;
141                  }
142                  if(b2[i].compareTo(a2)==0) {
143                      address4=i;
144                  }
145                  i++;
146              }
147              //全在一号线
148              if(k1==2) {
149                  k2=Math.abs(address2-address1);
150                  if(k2<=3) {
151                      price=1;
152                  }
153                  else {
154                      int k=0;
155                      if(k2%3==0) {
156                          k=0;
157                      }else {
158                          k=1;
159                      }
160                      price=k2/3+k;
161                  }
162               if(address1>address2)
163               {
164                   int temp=address1;
165                   address1=address2;
166                   address2=temp;
167               }
168               System.out.println("***************************************************************");
169               System.out.println("            欢迎乘坐石家庄地铁            ");
170               System.out.println("****************************************************************");
171               System.out.println(k2+"站");
172               for(int i1=address1;i1<=address2;i1++) {
173                   System.out.println(b1[i1]);
174               }
175             System.out.println("购票单价:"+price+"元");
176             System.out.println("购票金额:"+price*number+"元");
177              }
178              String station="新百广场";
179              //全在三号线 或者 一个在新百广场 一个在三号线  k1=1 一个站点在三号线上 另一个在新百广场或者一号线其他位置
180              if(k1==0||(k1==1&&(a1.compareTo(station)==0||a2.compareTo(station)==0))) {
181                 k2=Math.abs(address3-address4);
182                 if(k2<=3) {
183                     price=1;
184                 }else {
185                      int k=0;
186                      if(k2%3==0) {
187                          k=0;
188                      }else {
189                          k=1;
190                      }
191                      price=k2/3+k;
192                 }
193                   if(address3>address4)
194                   {
195                       int temp=address3;
196                       address3=address2;
197                       address4=temp;
198                   }
199                 System.out.println("***************************************************************");
200                 System.out.println("            欢迎乘坐石家庄地铁            ");
201                 System.out.println("****************************************************************");
202                 System.out.println(k2+"站");
203                   for(int i1=address3;i1<=address4;i1++) {
204                       System.out.println(b2[i1]);
205                   }
206                 System.out.println("购票单价:"+price+"元");
207                 System.out.println("购票金额:"+price*number+"元");
208              }
209              //换乘 一个在三号线且另一个不在新百广场
210               if(k1==1&&a1.compareTo(station)!=0&&a2.compareTo(station)!=0) {
211                   if(address2!=0) {
212                       address1=address2;
213                   }
214                   if(address4!=0) {
215                       address3=address4;
216                   }
217                   int k21=0;
218                   int k22=0;
219                k21=Math.abs(address1-14);
220                k22=Math.abs(address3-1);
221                k2=k21+k22;
222                if(k2<=3) {
223                    price=1;
224                }else {
225                    int k=0;
226                    if(k2%3==0) {
227                        k=0;
228                    }else {
229                        k=1;
230                    }
231                    price=k2/3+k;
232                }
233                System.out.println("***************************************************************");
234                System.out.println("            欢迎乘坐石家庄地铁            ");
235                System.out.println("****************************************************************");
236                System.out.println(k2+"站");
237               if(address1<14) {
238                    for(int i1=address1;i1<15;i1++)
239                        System.out.println(b1[i1]);
240                }else {
241                    for(int i1=address1;i1>13;i1--) {
242                        System.out.println(b1[i1]);
243                    }
244                }
245               System.out.println("(换乘站)");
246               if(address3<1) {
247                    for(int i1=address3;i1<1;i1++) {
248                        System.out.println(b2[i1]);
249                    }
250                }else {
251                    for(int i1=address3;i1>1;i1--) {
252                        System.out.println(b2[i1]);
253                    }
254                }
255                System.out.println("购票单价:"+price+"元");
256                System.out.println("购票金额:"+price*number+"元");
257               }
258             }
259     }
260 }

测试结果当只在一号线或者旨在三号线的时候没有问题,对于换线的情况,从左到右没有任何问题,如果顺序不按照从左到右,输出结果会出现混乱(顺序不正确),除此之外,在录入信息的时候会出现错误,没有解决。

  • 设计思路

该系统主要分为查询线路与订购车票两个功能,两个功能不会同时运行,即可同时分为两组情况,每种情况分别输出,对于线路查询没有问题,对于订购车票(并输出线路与价格,还有站点的计算问题),首先把简单的一条线路的情况写出来,除此之外,我认为

对于其中的特殊点换乘站点要去去除特殊化,将其平凡化处理,对于换乘路线要避免换乘点的重复相加。站点的计算不计算起始站点,记录下车站点。

01-26 05:02