在临近国庆的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();
}
}
}