定义了两个类,在Subway类中定义三个私有数据变量,线路号,经过站点,换乘站。以及4个方法分别实现从txt文件中导入线路信息;输出线路信息;查询两个站点经过站点数,并输出经过站点以及在某站换乘几号线;计算票价。在SubwayManger中打印界面并根据用户选择调用相关的函数。

Subway:

 package subway;
import java.util.*;
import java.io.*;
import java.math.*;
class Subway {
private String num;//存放线路号
private String[] str=new String[21];//存放站点名称
private String str1;//存放换乘站点信息
public Subway() {
num="0";
for(int j=0;j<21;j++) {
str[j]=" ";
}
str1="新百广场";
}
public void get() {//输出线路信息
System.out.print(num+"号线:");
for(int i=0;str[i]!=" ";i++) {
System.out.print("站点"+(i+1)+":"+str[i]+";");
}
System.out.println();
}
public int chaxun(String t1,String t2,Subway s1,Subway s2) {//查询两个站点间的经过站点
int k,k1=0,k2=0;
boolean bo1=false;
boolean bo2=false;
List<String> list1=Arrays.asList(s1.str);
List<String> list2=Arrays.asList(s2.str);
if(list1.contains(t1)&&list1.contains(t2)) {
k1=list1.indexOf(t1);
k2=list1.indexOf(t2);
k=Math.abs(k1-k2);
System.out.println("经过"+k+"站");
if(k1<k2) {
while(k1<=k2) {
System.out.println(s1.str[k1]);
++k1;
}
}
if(k1>k2) {
while(k1>=k2) {
System.out.println(s1.str[k1]);
--k1;
}
}
return k;
}//end if1
if(list2.contains(t1)&&list2.contains(t2)) {
k1=list2.indexOf(t1);
k2=list2.indexOf(t2);
k=Math.abs(k1-k2);
System.out.println("经过"+k+"站");
if(k1<k2) {
while(k1<=k2) {
System.out.println(s2.str[k1]);
++k1;
}
}
if(k1>k2) {
while(k1>=k2) {
System.out.println(s2.str[k1]);
--k1;
}
}
return k;
}//end if2
else {
int k3=0,k4=0;
if(list1.contains(t1)) {
k1=list1.indexOf(t1);
k3=Math.abs(k1-14);
bo1=true;
}
if(list1.contains(t2)) {
k2=list1.indexOf(t2);
k4=Math.abs(k2-14); }
if(list2.contains(t1)) {
k1=list2.indexOf(t1);
k3=Math.abs(k1-1);
bo2=true;
}
if(list2.contains(t2)) {
k2=list1.indexOf(t2);
k4=Math.abs(k1-1);
}
k=k3+k4;
System.out.println("经过"+k+"站");
if(bo1==true) {
if(k1>14) {
while(k1>=14) {
System.out.println(s1.str[k1]);
--k1;
}
System.out.println("转乘3号线");
}
else if(k1<14) {
while(k1<=14) {
System.out.println(s1.str[k1]);
++k1;
}
System.out.println("转乘3号线");
}
int i=1;
if(k2>i) {
while(i<k2) {
System.out.println(s2.str[i+1]);
++i;
}
}
else if(k2<i) {
while(i>k2) {
System.out.println(s2.str[i-1]);
--i;
}
} }//end if1
else if(bo2==true) {
if(k1>1) {
while(k1>=1) {
System.out.println(s2.str[k1]);
--k1;
}
System.out.println("转乘1号线");
}
else if(k1<1) {
while(k1<=1) {
System.out.println(s2.str[k1]);
++k1;
}
System.out.println("转乘1号线");
}
int i=14;
if(k2>i) {
while(i<k2) {
System.out.println(s1.str[i+1]);
++i;
}
}
else if(k2<i) {
while(i>k2) {
System.out.println(s1.str[i-1]);
--i;
}
}
}//end if2 return k;
}//end else
}
public void goupiao(int k,int q) {//计算票价
int x=1,k3=1,k4=1;
k3=k/3;
k4=k-k3*3;
if(k4==0) {
x=k3;
}
else {
x=(k3+1);
} System.out.println("购票单价:"+x);
System.out.println("购票总价:"+x*q);
}
public void readFile(Subway s1,Subway s2) { try {
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("shijiazhuang-subway.txt"),"UTF-8"));
s1.num=br.readLine();
String line;
while ((line = br.readLine()) != null) {
int i=0;
String [] arr = line.split("\\s+");
for(String ss : arr){
s1.str[i]=ss;
i++;
}
break;
}//end while
while ((line = br.readLine()) != null) {
s1.str1=line;
break;
}
while ((line = br.readLine()) != null) {
s2.num=line;
break;
} while ((line = br.readLine()) != null) {
int i=0;
String [] arr = line.split("\\s+");
for(String ss : arr){
s2.str[i]=ss;
i++;
}
break;
}//end while
while ((line = br.readLine()) != null) {
s2.str1=br.readLine();
break;
} }//end try
catch (IOException e){
e.printStackTrace();
} }//end readFile }

SubwayManger:

 package subway;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
public class SubwayManger { public static void main(String[] args) {
Subway s1=new Subway();
Subway s2=new Subway();
Scanner sca=new Scanner(System.in);
int n;
s1.readFile(s1, s2);
System.out.println("***************************************************************");
System.out.println(" 欢迎乘坐石家庄地铁");
System.out.println("***************************************************************");
System.out.println(" 1、显示具体线路信息");
System.out.println(" 2、购票");
System.out.println("***************************************************************");
n=sca.nextInt();
if(n==1) {
System.out.print("请输入需要查询的线路(1:一号线,3:三号线,0:全部线路)");
int n1=sca.nextInt();
if(n1==1) {
System.out.println("***************************************************************");
System.out.println(" 石家庄地铁线路图");
System.out.println("***************************************************************");
s1.get();
System.out.println("***************************************************************");
}
if(n1==3) {
System.out.println("***************************************************************");
System.out.println(" 石家庄地铁线路图");
System.out.println("***************************************************************");
s2.get();
System.out.println("***************************************************************");
}
if(n1==0) {
System.out.println("***************************************************************");
System.out.println(" 石家庄地铁线路图");
System.out.println("***************************************************************");
s1.get();
s2.get();
System.out.println("***************************************************************");
}
}//end n=1
if(n==2) {
String t1,t2;
int q=1,q1=0,k=0;
System.out.println("***************************************************************");
System.out.println(" 欢迎乘坐石家庄地铁");
System.out.println("***************************************************************");
System.out.println("请输入起始地:");
t1=sca.next();
System.out.println("请输入目的地:");
t2=sca.next();
System.out.println("请输入购票数:");
q=sca.nextInt();
k=s1.chaxun(t1, t2, s1, s2);
s1.goupiao(k, q);
}//end n=2
}//end main }//end SubwayManger

Java_地铁购票系统的更多相关文章

  1. OC-《购票系统》

    来个命令行的购票系统 --1-- 需求分析 1.1 分析 1.2 功能分析 1.3 流程分析 --2-- 原型展示 2.1 界面原型 --3-- 系统设计 3.1 类设计 3.2 框架模块设计 --4 ...

  2. java开发JSP+Servlet+bootstrap开发电影院购票系统 源码

    基于JSP+Servlet+bootstrap开发电影院购票系统:开发环境: Windows操作系统开发工具: MyEclipse+Jdk+Tomcat+Mysql数据库 程序要求:电影院订票系统 用 ...

  3. 两人团队项目-石家庄地铁查询系统(web版)

    大二上学期做过只有两号线的地铁查询系统,但是只能在控制台操作.这一次将线路加到了六条,并且要求web实现,下面简述一下设计思路和具体代码实现: 1.数据库建表 于我自己习惯而言,我写javaweb项目 ...

  4. Objective-C 【完整OC项目-购票系统-系统分析-代码实现】

    电影院买票系统/演唱会买票系统 需求分析: 首先我们进入系统,然后会选择买电影票还是买演唱会票,所以这牵扯两个系统的合成.但是我们知道都是买票系统,所以我们可以先创建一个类,属于购买电影票和演唱会的票 ...

  5. 拒绝LOW ---青鸟影院购票系统

    1.首先我们需要了解这个软件的功能: 1).影院每天更新放映列表,系统支持实时查看,包括电影放映场次的时间: 2).影院提供三类影票:普通票,学生票和赠票: 3).允许用户查看某场次座位的售出情况: ...

  6. [JAVA] java_实例 获得系统字体

    这个代码可以帮助理解java是如何获取系统字体并设置文字字体: import java.awt.*; import java.awt.event.*; import javax.swing.JComb ...

  7. 两人团队项目-石家庄地铁查询系统(web版)psp表

    结对开发_石家庄地铁查询_博客地址:https://www.cnblogs.com/Aduorisk/p/10652917.html 队友:冯利伟 PSP: PSP0 Personal Softwar ...

  8. 结对开发_石家庄地铁查询web系统

    结对开发:队友田昕可 大二上学期做过只有两号线的地铁查询系统,但是只能在控制台操作.这一次将线路加到了六条,并且要求web实现,下面简述一下设计思路和具体代码实现: 1.数据库建表 于我们自己习惯而言 ...

  9. 【刷题笔记】火车购票-----java方案

    问题描述请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配. 假设一节车厢有20排.每一排5个座位.为方便起见,我们用1到100来给所有的座位编号,第一排是1到5号,第二排是6到10号 ...

随机推荐

  1. Kubernetes1.4新特性前瞻:设置JOB执行计划

    (一)  核心概念 Kubernetes在新版中会新增了一个设置JOB执行计划的功能,在1.3中已经可以初见端倪了,从进度上来看会在1.4版本中进行发布,下面我们先睹为快. Kubernetes通过这 ...

  2. icheck的使用

    一.什么是icheck 就是用来美化单选框.复选框的. 二.如何使用 1.下载 到 github 下载.https://github.com/fronteed/icheck 下载完毕.解压.目录结构如 ...

  3. ADT上跑java application

    Invalid layout of java.lang.String at value## A fatal error has been detected by the Java Runtime En ...

  4. 阿里云oss上传图片报错,The OSS Access Key Id you provided does not exist in our records.解决方法

    vue项目 1.安装OSS的Node SDK npm install ali-oss --save 2.参考官方提示https://help.aliyun.com/document_detail/11 ...

  5. dataframe添加元素指定为列表,不同for循环命名空间下的变量重复问题

    split=pd.DataFrame({'data':[0],'len':0,'count':0},index=[0])for i_t in range(over_128.shape[0]): ct= ...

  6. Java练习 SDUT-1184_拍皮球

    C语言实验--拍皮球 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 小瑜3岁了,很喜欢玩皮球,看来今后喜欢打篮球的^_ ...

  7. Android内核剖析读书笔记(1)—Framework概述

    一.Framework组成 1.服务端组成 a.WindowManagerService     决定各窗口的叠放次序.隐藏或者显示窗口 b.ActivityManagerService   管理应用 ...

  8. 13-2 jquery介绍

    1 什么是 jQuery jQuery 是 js 的一个库,封装了我们开发过程中常用的一些功能,方便我们调用,提高开发效率. js库是把我们常用的功能放到一个单独的文件中,我们用的时候,直接引用到页面 ...

  9. 实时计算轻松上手,阿里云DataWorks Stream Studio正式发布

    Stream Studio是DataWorks旗下重磅推出的全新子产品.已于2019年4月18日正式对外开放使用.Stream Studi是一站式流计算开发平台,基于阿里巴巴实时计算引擎Flink构建 ...

  10. css中background和 background-color 同时使用的优先级

    给背景图片设置一个默认背景颜色,有以下两种方法: <style> .bg1{ background:url(http://debug.itxst.com/img/logo.png) red ...