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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM