Java_地铁购票系统

定义了两个类,在Subway类中定义三个私有数据变量,线路号,经过站点,换乘站。以及4个方法分别实现从txt文件中导入线路信息;输出线路信息;查询两个站点经过站点数,并输出经过站点以及在某站换乘几号线;计算票价。在SubwayManger中打印界面并根据用户选择调用相关的函数。

Subway:

  1 package subway;
  2 import java.util.*;
  3 import java.io.*;
  4 import java.math.*;
  5  class Subway {
  6      private String num;//存放线路号
  7      private String[] str=new String[21];//存放站点名称
  8      private String str1;//存放换乘站点信息
  9      public Subway() {
 10          num="0";
 11          for(int j=0;j<21;j++) {
 12              str[j]=" ";
 13          }
 14          str1="新百广场";
 15      }
 16      public void get() {//输出线路信息
 17          System.out.print(num+"号线:");
 18          for(int i=0;str[i]!=" ";i++) {
 19              System.out.print("站点"+(i+1)+":"+str[i]+";");
 20          }
 21          System.out.println();
 22      }
 23      public int chaxun(String t1,String t2,Subway s1,Subway s2) {//查询两个站点间的经过站点
 24          int k,k1=0,k2=0;
 25          boolean bo1=false;
 26          boolean bo2=false;
 27          List<String> list1=Arrays.asList(s1.str);
 28          List<String> list2=Arrays.asList(s2.str);
 29          if(list1.contains(t1)&&list1.contains(t2)) {
 30              k1=list1.indexOf(t1);
 31              k2=list1.indexOf(t2);
 32              k=Math.abs(k1-k2);
 33              System.out.println("经过"+k+"站");
 34              if(k1<k2) {
 35                  while(k1<=k2) {
 36                      System.out.println(s1.str[k1]);
 37                      ++k1;
 38                  }
 39              }
 40              if(k1>k2) {
 41                  while(k1>=k2) {
 42                      System.out.println(s1.str[k1]);
 43                      --k1;
 44                  }
 45              }
 46              return k;
 47          }//end if1
 48          if(list2.contains(t1)&&list2.contains(t2)) {
 49              k1=list2.indexOf(t1);
 50              k2=list2.indexOf(t2);
 51              k=Math.abs(k1-k2);
 52              System.out.println("经过"+k+"站");
 53              if(k1<k2) {
 54                  while(k1<=k2) {
 55                      System.out.println(s2.str[k1]);
 56                      ++k1;
 57                  }
 58              }
 59              if(k1>k2) {
 60                  while(k1>=k2) {
 61                      System.out.println(s2.str[k1]);
 62                      --k1;
 63                  }
 64              }
 65              return k;
 66          }//end if2
 67          else {
 68              int k3=0,k4=0;
 69              if(list1.contains(t1)) {
 70                  k1=list1.indexOf(t1);
 71                  k3=Math.abs(k1-14);
 72                  bo1=true;
 73              }
 74              if(list1.contains(t2)) {
 75                  k2=list1.indexOf(t2);
 76                  k4=Math.abs(k2-14);
 77                  
 78              }
 79              if(list2.contains(t1)) {
 80                  k1=list2.indexOf(t1);
 81                  k3=Math.abs(k1-1);
 82                  bo2=true;
 83              }
 84              if(list2.contains(t2)) {
 85                  k2=list1.indexOf(t2);
 86                  k4=Math.abs(k1-1);
 87              }
 88              k=k3+k4;
 89              System.out.println("经过"+k+"站");
 90              if(bo1==true) {
 91                  if(k1>14) {
 92                      while(k1>=14) {
 93                          System.out.println(s1.str[k1]);
 94                          --k1;
 95                      }
 96                      System.out.println("转乘3号线");
 97                  }
 98                  else if(k1<14) {
 99                      while(k1<=14) {
100                          System.out.println(s1.str[k1]);
101                          ++k1;
102                      }
103                      System.out.println("转乘3号线");
104                  }
105                  int i=1;
106                  if(k2>i) {
107                      while(i<k2) {
108                          System.out.println(s2.str[i+1]);
109                          ++i;
110                      }
111                  }
112                  else if(k2<i) {
113                      while(i>k2) {
114                          System.out.println(s2.str[i-1]);
115                          --i;
116                      }
117                  }
118                  
119              }//end if1
120              else if(bo2==true) {
121                  if(k1>1) {
122                      while(k1>=1) {
123                          System.out.println(s2.str[k1]);
124                          --k1;
125                      }
126                      System.out.println("转乘1号线");
127                  }
128                  else if(k1<1) {
129                      while(k1<=1) {
130                          System.out.println(s2.str[k1]);
131                          ++k1;
132                      }
133                      System.out.println("转乘1号线");
134                  }
135                  int i=14;
136                  if(k2>i) {
137                      while(i<k2) {
138                          System.out.println(s1.str[i+1]);
139                          ++i;
140                      }
141                  }
142                  else if(k2<i) {
143                      while(i>k2) {
144                          System.out.println(s1.str[i-1]);
145                          --i;
146                      }
147                  }
148              }//end if2
149              
150         
151              
152              return k;
153          }//end else
154      }
155      public void goupiao(int k,int q) {//计算票价
156          int x=1,k3=1,k4=1;
157          k3=k/3;
158          k4=k-k3*3;
159          if(k4==0) {
160              x=k3;
161          }
162          else {
163              x=(k3+1);
164          }
165         
166          System.out.println("购票单价:"+x);
167          System.out.println("购票总价:"+x*q);
168      }
169      public void readFile(Subway s1,Subway s2) {
170             
171             try {
172                 BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("shijiazhuang-subway.txt"),"UTF-8"));
173                 s1.num=br.readLine();
174                 String line;
175                  while ((line = br.readLine()) != null) {
176                      int i=0;
177                      String [] arr = line.split("\\s+");
178                      for(String ss : arr){
179                          s1.str[i]=ss;
180                          i++;
181                      }
182                      break;
183                  }//end while
184                  while ((line = br.readLine()) != null) {
185                      s1.str1=line;
186                      break;
187                  }
188                  while ((line = br.readLine()) != null) {
189                      s2.num=line;
190                      break;
191                  }
192                 
193                 
194                  while ((line = br.readLine()) != null) {
195                      int i=0;
196                      String [] arr = line.split("\\s+");
197                      for(String ss : arr){
198                          s2.str[i]=ss;
199                          i++;
200                      }
201                      break;
202                  }//end while
203                  while ((line = br.readLine()) != null) {
204                      s2.str1=br.readLine();
205                      break;
206                  }
207                 
208                 
209                 
210             }//end try
211             catch (IOException e){
212                 e.printStackTrace();
213             }
214        
215         }//end readFile
216     
217     
218      
219      
220 
221 }

SubwayManger:

 1 package subway;
 2 import java.io.BufferedReader;
 3 import java.io.FileInputStream;
 4 import java.io.IOException;
 5 import java.io.InputStreamReader;
 6 import java.util.Scanner;
 7 public class SubwayManger {
 8     
 9     public static void main(String[] args) {
10         Subway s1=new Subway();
11         Subway s2=new Subway();
12         Scanner sca=new Scanner(System.in);
13         int n;
14         s1.readFile(s1, s2);
15         System.out.println("***************************************************************");
16         System.out.println("                    欢迎乘坐石家庄地铁");
17         System.out.println("***************************************************************");
18         System.out.println("                    1、显示具体线路信息");
19         System.out.println("                    2、购票");
20         System.out.println("***************************************************************");
21         n=sca.nextInt();
22         if(n==1) {
23             System.out.print("请输入需要查询的线路(1:一号线,3:三号线,0:全部线路)");
24             int n1=sca.nextInt();
25             if(n1==1) {
26                 System.out.println("***************************************************************");
27                 System.out.println("                     石家庄地铁线路图");
28                 System.out.println("***************************************************************");
29                 s1.get();
30                 System.out.println("***************************************************************");
31             }
32             if(n1==3) {
33                 System.out.println("***************************************************************");
34                 System.out.println("                     石家庄地铁线路图");
35                 System.out.println("***************************************************************");
36                 s2.get();
37                 System.out.println("***************************************************************");
38             }
39             if(n1==0) {
40                 System.out.println("***************************************************************");
41                 System.out.println("                     石家庄地铁线路图");
42                 System.out.println("***************************************************************");
43                 s1.get();
44                 s2.get();
45                 System.out.println("***************************************************************");
46             }
47         }//end n=1
48         if(n==2) {
49             String t1,t2;
50             int q=1,q1=0,k=0;
51             System.out.println("***************************************************************");
52             System.out.println("                     欢迎乘坐石家庄地铁");
53             System.out.println("***************************************************************");
54             System.out.println("请输入起始地:");
55             t1=sca.next();
56             System.out.println("请输入目的地:");
57             t2=sca.next();
58             System.out.println("请输入购票数:");
59             q=sca.nextInt();
60             k=s1.chaxun(t1, t2, s1, s2);
61             s1.goupiao(k, q);
62         }//end n=2
63     }//end main
64     
65 }//end SubwayManger

 

posted @ 2019-10-01 09:42  dululudululu  阅读(1483)  评论(0编辑  收藏  举报