zoukankan      html  css  js  c++  java
  • 2019/9/30 极限测试(1)

    测试内容: 

    石家庄地铁一号线站点信息如下:

    洨河大道、南村、石家庄东站、火炬广场、留村、白佛、朝晖桥、

    谈固、北宋、体育场、博物院、北国商城、平安大街、解放广场、新百广场、烈士陵园、和平医院、长城桥、时光街、西王。

    石家庄地铁三号线站点信息如下:

    市二中、新百广场、东里、槐安桥、西三教、石家庄站。

     

    1、把石家庄地铁图的各个线路,各个站点,换乘信息等用文本文件  shijiazhuang-subway.txt的形式保存起来,应该保存的信息有 {线路号,线路的各个站名,车站的换乘信息}

    2、定义Subway数据

    其中包括

    个私有变量:线路号、线路的各个站名,换乘车站的信息。

    三个方法

    1)遍历线路信息:输出线路号,显示所有改线路站点信息。

    2)查询站点信息:输入起始站、终点站,返回经历的站名的个数,和路径,如果有换乘,请列出换乘的线路, 例如:

    起始站:北国商城

    终点站:石家庄站

    返回结果显示:

    7

    北国商城

    平安大街

    解放广场

    新百广场  换乘3号线

    东里

    槐安桥

    西三教

    石家庄站

    3)购票统计起始站和终点站之间经过站点之和包括终点站,不包括起始站)以每三站1钱标准计算,超出部分不足三站的按照最低票价1元计算例如北国商城到石家庄站共有7,票价为3元

    4定义SubwayManager类实现地铁运行功能,显示下列界面。

    1)欢迎界面

    ***************************************************************

             欢迎乘坐石家庄地铁

    ****************************************************************

    1、 显示具体线路信息;

    2、 购票

    ****************************************************************

    2)显示具体线路信息(需要标注换乘站信息

    提示用户输入线路号,显示该线路的全部站点信息,换乘车站应标注换乘信息,如果用户 输入0则显示全部线路信息。

    ***************************************************************

    石家庄地铁线路

    ****************************************************************

    1号线:站点1…………………….

    3号线:站点1…………………….

    ****************************************************************

    (3)购票界面

    ***************************************************************

    欢迎乘坐石家庄地铁

    ****************************************************************

    起始站

    终点站

    购票数量

    ****************************************************************

    返回结果界面

    返回经历的站名的个数,和路径,如果有换乘,请列出换乘的线路,购票金额

    显示结果如下所示:

    ***************************************************************

    欢迎乘坐石家庄地铁

    ****************************************************************

    7

    北国商城

    平安大街

    解放广场

    新百广场  换乘3号线

    东里

    槐安桥

    西三教

    石家庄站

    购票单价:3

    购票金额6

    ****************************************************************

     思路:把所有站名通过文件读取按照线路的顺序读入到字符串数组。麻烦在于购票,需要考虑换线,这里以新百广场作为换成路线,起点和终点所在的线路。

    代码:

    这是subwayManager类

    package subwayTest;
    
    import java.util.Scanner;
    
    public class subwayManager {
    	static int z;
    	subway sb = new subway();
    	Scanner scanner = new Scanner(System.in);
    	void show() {
    		System.out.println("***************************************************************");
    		System.out.println("                  欢迎乘坐石家庄地铁");
    		System.out.println("****************************************************************");
    		System.out.println("                  1、显示具体线路信息;");
    		System.out.println("                  2、购票;");
    		System.out.println("                  0、退出;");
    		System.out.println("****************************************************************");
    	}
    	void show1() {
    			sb.showAll();
    		}
    	void showBuy() {
    		System.out.println("***************************************************************");
    		System.out.println("                  欢迎乘坐石家庄地铁");
    		System.out.println("****************************************************************");
    		System.out.println("起点站:");
    		System.out.println("终点站:");
    		System.out.println("购票数量:");
    		System.out.println("****************************************************************");
    		System.out.println("请输入购票数量:");
    		int x=scanner.nextInt();
    		int price;
    		sb.lookfor();
    		if(sb.num1%3==0) {
    			price=((sb.num1)/3);
    		}else {
    			price=((sb.num1)/3+1);
    		}
    		System.out.println("购票单价:"+price+"元");
    		System.out.println("购票金额:"+price*x+"元");
    	}
    		
    	public static void main(String args[]) {
    		subwayManager sm = new subwayManager();
    		Scanner scanner = new Scanner(System.in);
    		do {
    		sm.show();
    		System.out.print("请输入你要选择的项目:");
    		int n=scanner.nextInt();
    		switch(n) {
    		case 1:sm.show1();break;
    		case 2:sm.showBuy();break;
    		case 0:break;
    		}
    		z=n;
    		}while(z!=0);
    	}
    
    }
    

      这是subway类:

    package subwayTest;
    import java.math.*;
    import java.io.File;  
    import java.io.InputStreamReader;
    import java.util.Scanner;
    import java.util.StringTokenizer;
    import java.io.BufferedReader;  
    import java.io.BufferedWriter;  
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.FileWriter; 
    
    /**
     * 
     * @author 201835456 信1805-2 杨晓
     *
     */
    public class subway {
    	private int num;
    	private int length[]= new int[2];
    	private String subwayname[] = new String[100];
    	private String changename;
    	static int num1=0;
    	Scanner scanner = new Scanner(System.in);
    	subway() {
    		try {int i=0,j=0;
    			String path="C:/Users/MACHENIKE/Desktop/石家庄地图.txt";
    			File file = new File(path);
    			InputStreamReader reader = new InputStreamReader(new FileInputStream(file));
    		    BufferedReader br = new BufferedReader(new FileReader(file));
    		    String s="";
    		    s=br.readLine();
    		    while(s!=null) {
    		    	StringTokenizer st = new StringTokenizer(s," ");
    				   while(st.hasMoreElements()) {
    				   String str =(String)st.nextElement();
    			       subwayname[i++]=str;	
    				   }
    				   
    		    }
    		}catch(Exception e){
    	    	e.printStackTrace();
    	    	}
    	}
    	void showAll() {
    		System.out.print("请输入你要查找的路线号码:");
    		int n=scanner.nextInt();
    		System.out.println("***************************************************************");
    		System.out.println("                  石家庄地铁线路图");
    		System.out.println("****************************************************************");
    		if(n==1) {
    			System.out.println("1号线:");
    			for(int i=0;i<19;i++) {
    				System.out.print(subwayname[i]);
    				if(i==14) {System.out.print(" 换乘3号线");}
    				System.out.println();
    			}
    			System.out.println(subwayname[19]);
    		}else if(n==3) {
    			System.out.println("3号线:");
    			for(int i=20;i<25;i++) {
    				System.out.print(subwayname[i]);
    				if(i==21) {System.out.print(" 换成1号线");}
    				System.out.println();
    			}
    			System.out.println(subwayname[25]);
    		}else if(n==0) {
    			System.out.print("一号线:");
    			for(int i=0;i<20;i++) {
    				System.out.print(subwayname[i]+" ");
    			}
    			System.out.println();
    			System.out.print("二号线:");
    			for(int i=20;i<26;i++) {
    				System.out.print(subwayname[i]+" ");
    			}
    			System.out.println();
    		}
    		System.out.println("****************************************************************");
    	}
    	void lookfor() {
    		System.out.println("请输入起点站和终点站");
    		String s1 = scanner.next();
    		String s2 = scanner.next();
    		int i=0,j=0;
    		System.out.println("***************************************************************");
    		System.out.println("                  石家庄地铁线路图");
    		System.out.println("****************************************************************");
    		while(!(s1.equals(subwayname[i]))){
    			i++;
    		}
    		while(!(s2.equals(subwayname[j]))) {
    			j++;
    		}	
    		if(j>19&&i<=19) { // 起点在1号线,终点在3号线
    			num1=Math.abs(j-21)+Math.abs(i-14);
    		
    		}else if(i>19&&j<=19){// 起点在3号线,终点在1号线
    			num1=Math.abs(i-21)+Math.abs(j-14);
    		}else {num1=Math.abs(j-i);} //起点终点在同一条线
    		System.out.println(num1+"站");
    		// 起点在新百广场右或新百广场 终点在三号线
    		if(i<14&&j>19) {
    			for(;i<14;i++) {
    				System.out.println(subwayname[i]);
    			}
    	      if(j>=21) {
    			for(int x=21;x<j+1;x++) {
    				System.out.print(subwayname[x]);
    				if(x==21)
    				System.out.print(" 换乘三号线");
    				System.out.println();
    			}
    	      }else {
    	    	  for(int x=21;x>j-1;x--) {
    					System.out.print(subwayname[x]);
    					if(x==21)
    					System.out.print(" 换乘三号线");
    					System.out.println();
    				}
    	    	  
    	      }
    		}
    		//起点在新百广场左或新百广场 终点在三号线
    		else if(i<20&&i>=14&&j>19) {
    			for(;i>14;i--) {
    				System.out.println(subwayname[i]);
    			}
    			if(j>21) {
    				for(int x=21;x<j+1;x++) {
    					System.out.print(subwayname[x]);
    					if(x==21)
    					System.out.print(" 换乘三号线");
    					System.out.println();
    				}
    		      }else {
    		    	  for(int x=21;x>j-1;x--) {
    						System.out.print(subwayname[x]);
    						if(x==21)
    						System.out.print(" 换乘三号线");
    						System.out.println();
    					}
    		    	  
    		      }
    		}
    		 //起点在三号线,终点在1号线
    		else if(i>19&&j<20) {
    			for(;i>21;i--) {
    				System.out.print(subwayname[i]);
    				System.out.println();
    			}
    			if(j>=14) {
    			for(int x=14;x<j+1;x++) {
    				System.out.print(subwayname[x]);
    				if(x==14)
    					System.out.print(" 换乘1号线");
    				System.out.println();
    			}
    			}else{
    				for(int x=14;x>j-1;x--) {
    					System.out.print(subwayname[x]);
    					if(x==14)
    						System.out.print(" 换乘1号线");
    					System.out.println();
    				}
    			}
    		}
    		else {
    			for(;i<j+1;i++) {
    				System.out.println(subwayname[i]);
    			}
    		}
    
    		
    	}
    			
    		
    } 

    如果发现错误,请大佬留言指出,感谢。

  • 相关阅读:
    【总结】设备树语法及常用API函数【转】
    【转】ios蓝牙开发学习笔记(四)ios蓝牙应用的后台处理 -- 不错
    SQL存储过程相关信息查看
    DBCC CHECKIDENT
    SQL CAST与CONVERT区别
    SQl查询数据库库名,表名、表的列名
    SQL语句资料
    SQL中rownum和order by的执行顺序的问题
    完整的ASP.NET存储过程分页,排序,鼠标移至变色
    最简单删除SQL Server中所有数据的方法(不用考虑表之间的约束条件,即主表与子表的关系)
  • 原文地址:https://www.cnblogs.com/yangxiao-/p/11615311.html
Copyright © 2011-2022 走看看