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