定义了两个类,在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. dnspython

    dnspython 一个Python实现的一个DNS工具包,利用其查询功能来实现dns的服务监控及解析结果的校验. 安装 pip install dnspython 解析域名为IP from dns ...

  2. @uoj - 435@ 【集训队作业2018】Simple Tree

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 有一棵有根树,根为 1,点有点权. 现在有 m 次操作,操作有 ...

  3. @NOIP2018 - D1T2@ 货币系统

    目录 @题目描述@ @题解@ @代码@ @题目描述@ 在网友的国度中共有 n 种不同面额的货币,第 i 种货币的面额为 a[i],你可以假设每一种货币都有无穷多张.为了方便,我们把货币种数为 n.面额 ...

  4. 最长公共子序列(LCS)、最长递增子序列(LIS)、最长递增公共子序列(LICS)

    最长公共子序列(LCS) [问题] 求两字符序列的最长公共字符子序列 问题描述:字符序列的子序列是指从给定字符序列中随意地(不一定连续)去掉若干个字符(可能一个也不去掉)后所形成的字符序列.令给定的字 ...

  5. Error While Loading Shared Libraries, Cannot Open Shared Object File

    In the "I wish the Internet had an actual correct answer" category comes a question from a ...

  6. ng-model 将时间戳转换为标准时间

      html部分 <div class="form-group loginCon1"> <label class="col-sm-2 control-l ...

  7. angular安装应用

    首先你要有node 和npm 全局安装angular    npm install -g @angular/cli 安装一个angular项目     ng new 项目名称 cd进入新建的项目 跑页 ...

  8. 通过Ajax提交form表单来提交上传文件

    Ajax 提交form方式可以将form表单序列化 然后将数据通过data提交至后台,例如: $.ajax({      url : "http://localhost:8080/" ...

  9. js判断时间格式是否有效

    js判断时间格式是否有效 1 短时间,形如 (13:04:06)function isTime(str){var a = str.match(/^(\d{1,2})(:)?(\d{1,2})\2(\d ...

  10. idea各种中文显示乱码解决大全

    本文链接:https://blog.csdn.net/liqimo1799/article/details/81811153中文乱码问题分类: 编码普通中文乱码properties文件中文乱码cons ...