在临近国庆的9月30号补课日 碰到了惨绝人寰的java课极限测试 我从下午两点半做到晚上九点 不得不说人在烦躁的时候是真的没办法写代码的 根本不想思考也不想学习。最后的几个小时基本就是在叹息和坐着。也告诉我要好好的利用好有限的精力时间,毕竟人的精力确实是有限的。
言归正传 题的内容是让写一个石家庄地铁的管理系统 说是管理系统,其实就是能显示线路和自动计算票价。需求看似简单,但实施起来属实超出了我的技能范围。在课下借助了某位学长的代码后(不得不说我现在的水平只有基本看懂别人代码的水平了。)
以下附上代码,其实功能实现的十分粗暴,并且只是机械的使用了一些知识点,这个软件十分不完美。
首先是subway
public class Subway { private String routenumber; private String routename; private String pd; public String getroutenumber(){ return routenumber; } public void setroutenumber(String n){ routenumber=n; } public String getroutename(){ return routename; } public void setroutename(String m){ routename=m; } public String getpd(){ return pd; } public void setpd(String x){ pd=x; } public static void main(String [] args){ WriteFile(); } public static void WriteFile(){ try{ File writeName = new File("shijiazhuang-subway.txt");//相对路径,如果没有则要建立一个新的output.txt文件 writeName.createNewFile();//创建文件,有同名的文件直接覆盖。 try(FileWriter writer = new FileWriter(writeName); BufferedWriter out = new BufferedWriter(writer) ){ out.write("一号 洨河大道 无\r\n" + "一号 南村 无\r\n"+ "一号 石家庄东站 无\r\n"+ "一号 火炬广场 无\r\n"+ "一号 留村 无\r\n"+ "一号 白佛 无\r\n"+ "一号 朝晖桥 无\r\n"+ "一号 谈固 无\r\n"+ "一号 北宋 无\r\n"+ "一号 体育场 无\r\n"+ "一号 博物院 无\r\n"+ "一号 北国商城 无\r\n"+ "一号 平安大街 无\r\n"+ "一号 解放广场 无\r\n"+ "一号 新百广场 换乘3号线\r\n"+ "一号 烈士陵园 无\r\n"+ "一号 和平医院 无\r\n"+ "一号 长城桥 无\r\n"+ "一号 时光街 无\r\n"+ "一号 西王 无\r\n"+ "三号 市二中 无\r\n"+ "三号 新百广场 换乘1号线\r\n"+ "三号 东里 无\r\n"+ "三号 槐安桥 无\r\n"+ "三号 西三教 无\r\n"+ "三号 石家庄站 无\r\n" );//\r\n即为换行 out.flush();//把缓存区内容压入文件 } }catch(IOException e){ e.printStackTrace(); } } public static void subwayinformation(int routename1){} public static void returnroutenumber(String str1,String str2){} }
接下来是主界面管理系统
public class SubwayManager { static int i=0,j=0; static int num; static Scanner scan = new Scanner(System.in); static Subway []f1 = new Subway[21]; static Subway []f2 = new Subway[7]; public static void Welcome(){ System.out.println("***************************************************************"); System.out.println("\t" + "欢迎乘坐石家庄地铁"); System.out.println("***************************************************************"); System.out.println("\t" + "1、显示具体线路信息;"); System.out.println("\t" + "2、购票;"); System.out.println("*******************************************************" + "********"); } public static void read1(){ for (int i= 0;i<21;i++) f1[i] = new Subway(); f1[0].setroutenumber("1"); f1[1].setroutename("洨河大道"); f1[2].setroutename("南村"); f1[3].setroutename("石家庄东站"); f1[4].setroutename("火炬广场"); f1[5].setroutename("留村"); f1[6].setroutename("白佛"); f1[7].setroutename("朝晖桥"); f1[8].setroutename("谈固"); f1[9].setroutename("北宋"); f1[10].setroutename("体育场"); f1[11].setroutename("博物院"); f1[12].setroutename("北国商城"); f1[13].setroutename("平安大街"); f1[14].setroutename("解放广场"); f1[15].setroutename("新百广场"); f1[15].setpd("换乘3号线"); f1[16].setroutename("烈士陵园"); f1[17].setroutename("和平医院"); f1[18].setroutename("长城桥"); f1[19].setroutename("时光街"); f1[20].setroutename("西王"); } public static void read2(){ for (int i= 0;i<7;i++) f2[i] = new Subway(); f2[0].setroutenumber("3"); f2[1].setroutename("市二中"); f2[2].setroutename("新百广场"); f2[2].setpd("换乘一号线"); f2[3].setroutename("东里"); f2[4].setroutename("槐安桥"); f2[5].setroutename("西三教"); f2[6].setroutename("石家庄站"); } public static void show(){ System.out.println("输入线路的序号,输入0显示所有路线"); int in = scan.nextInt(); switch(in){ case 1:subwayinformation(1);break; case 3:subwayinformation(3);break; case 0:subwayinformation(0);break; default:System.out.println("请按照提示输入正确的数字!");break; } show(); } public static void main(String [] args){ read1(); read2(); Welcome(); int c = scan.nextInt(); switch(c){ case 1:show();break; case 2:buy();break; } } public static void buy(){ String begin,end; int count=0,n=0,m=0; System.out.println("***************************************************************"); System.out.println("\t" + "欢迎乘坐石家庄地铁"); System.out.println("***************************************************************"); System.out.println("起始站:"); begin = scan.next(); System.out.println("终点站:"); end = scan.next(); System.out.println("购票数量:"); num= scan.nextInt(); System.out.println("***************************************************************"); System.out.println("\t" + "欢迎乘坐石家庄地铁"); System.out.println("***************************************************************"); //只走一号线 int routea1=0,routeb1=0; for(int i=1;i<21;i++){ if(begin.equals(f1[i].getroutename())){ routea1=i; } if(end.equals(f1[i].getroutename())){ routeb1=i; } } if(routea1!=0&&routeb1!=0){ count=Math.abs(routeb1-routea1); System.out.println(count+"站地"); for(i=routea1;i<=routeb1;i++){ System.out.println(f1[i].getroutename()); } if(count%3==0){ System.out.println("购票单价:"+count/3); System.out.println("购票金额:"+num*count/3); } else{ System.out.println("购票单价:"+(count/3+1)); System.out.println("购票金额:"+num*(count/3+1)); } } //只走三号线 int routea2=0,routeb2=0; for(i=1;i<7;i++){ if(begin.equals(f2[i].getroutename())){ routea2=i; } if(end.equals(f2[i].getroutename())){ routeb2=i; } } if(routea2!=0&&routeb2!=0){ count=Math.abs(routeb2-routea2); System.out.println(count+"站地"); for(i=routea2;i<=routeb2;i++){ System.out.println(f2[i].getroutename()); } if(count%3 == 0) { System.out.println("购票单价:" + count/3); System.out.println("购票金额:" + num*count/3); } else { System.out.println("购票单价:" + (count/3+1)); System.out.println("购票金额:" + num*(count/3+1)); } } //需要换乘的情况 if((routea1==0||routeb1==0)&&(routea2==0||routeb2==0)){ for(i=0;i<21;i++){ if(begin.equals(f1[i].getroutename())){ n=i;count=Math.abs(15-n); break; } else if(end.equals(f1[i].getroutename())){ n=i;count=Math.abs(15-n); break; } } } for(i=0;i<7;i++){ if(end.equals(f2[i].getroutename())){ m=i;count=count+Math.abs(m-2); break; } else if(begin.equals(f2[i].getroutename())){ m=i;count=count+Math.abs(m-2); break; } } System.out.println(count+"站地"); if(n>15){ for(i=n;i>15;i--) System.out.println(f1[i].getroutename()); System.out.println(f1[15].getroutename()+" "+f1[15].getpd()); if(m<2){ System.out.println(f2[1].getroutename()); } else{ for(i=3;i<7;i++){ System.out.println(f2[i].getroutename()); } } } if(n>0&&n<=15){ for(i=n;i<15;i++){ System.out.println(f1[i].getroutename()); } System.out.println(f1[15].getroutename()+" "+f1[15].getpd()); if(m>=2&&m<7){ for(i=3;i<7;i++) System.out.println(f2[i].getroutename()); } } if(count % 3 == 0) { System.out.println("购票单价:" + count/3); System.out.println("购票金额:" + num*count/3); } else { System.out.println("购票单价:" + (count/3+1)); System.out.println("购票金额:" + num*(count/3+1)); } System.out.println("***************************************************************"); } public static void subwayinformation(int routename1){ String pathname = "shijiazhuang-subway.txt"; try(FileReader reader = new FileReader(pathname); BufferedReader br = new BufferedReader(reader) ){ String line; if(routename1==1){ while((line = br.readLine()).contains("一号")){ System.out.println(line);//一次读入一行数据 } } if(routename1==3){ while((line=br.readLine())!=null){ if(line.contains("三号")){ System.out.println(line); } } } if(routename1==0){ while((line=br.readLine())!=null){ System.out.println(line); } } }catch(IOException e){ e.printStackTrace(); } } }