Java_地铁购票系统
定义了两个类,在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_地铁购票系统的更多相关文章
- OC-《购票系统》
来个命令行的购票系统 --1-- 需求分析 1.1 分析 1.2 功能分析 1.3 流程分析 --2-- 原型展示 2.1 界面原型 --3-- 系统设计 3.1 类设计 3.2 框架模块设计 --4 ...
- java开发JSP+Servlet+bootstrap开发电影院购票系统 源码
基于JSP+Servlet+bootstrap开发电影院购票系统:开发环境: Windows操作系统开发工具: MyEclipse+Jdk+Tomcat+Mysql数据库 程序要求:电影院订票系统 用 ...
- 两人团队项目-石家庄地铁查询系统(web版)
大二上学期做过只有两号线的地铁查询系统,但是只能在控制台操作.这一次将线路加到了六条,并且要求web实现,下面简述一下设计思路和具体代码实现: 1.数据库建表 于我自己习惯而言,我写javaweb项目 ...
- Objective-C 【完整OC项目-购票系统-系统分析-代码实现】
电影院买票系统/演唱会买票系统 需求分析: 首先我们进入系统,然后会选择买电影票还是买演唱会票,所以这牵扯两个系统的合成.但是我们知道都是买票系统,所以我们可以先创建一个类,属于购买电影票和演唱会的票 ...
- 拒绝LOW ---青鸟影院购票系统
1.首先我们需要了解这个软件的功能: 1).影院每天更新放映列表,系统支持实时查看,包括电影放映场次的时间: 2).影院提供三类影票:普通票,学生票和赠票: 3).允许用户查看某场次座位的售出情况: ...
- [JAVA] java_实例 获得系统字体
这个代码可以帮助理解java是如何获取系统字体并设置文字字体: import java.awt.*; import java.awt.event.*; import javax.swing.JComb ...
- 两人团队项目-石家庄地铁查询系统(web版)psp表
结对开发_石家庄地铁查询_博客地址:https://www.cnblogs.com/Aduorisk/p/10652917.html 队友:冯利伟 PSP: PSP0 Personal Softwar ...
- 结对开发_石家庄地铁查询web系统
结对开发:队友田昕可 大二上学期做过只有两号线的地铁查询系统,但是只能在控制台操作.这一次将线路加到了六条,并且要求web实现,下面简述一下设计思路和具体代码实现: 1.数据库建表 于我们自己习惯而言 ...
- 【刷题笔记】火车购票-----java方案
问题描述请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配. 假设一节车厢有20排.每一排5个座位.为方便起见,我们用1到100来给所有的座位编号,第一排是1到5号,第二排是6到10号 ...
随机推荐
- Vue组件跨层级通信
正常组件间通信 父->子组件 是通过属性传递 子->父组件 是通过this.$emit()传递 this.$emit()返回的是this,如果需要一些值 可使用callback方式传递 p ...
- ansible基础☞第一条命令
我的两个测试机: 系统: ubuntu 16.04.2 ansible-master: 192.168.0.107 ansible-slave: 192.168.0.108 ansible版本: ro ...
- AcWing95. 费解的开关 枚举+位运算
这道题的确比较难想,首先我们知道图比较小,有可能是枚举,那么该如何枚举呢??? 你可以发现,我们只要把第一排定了,并且保证第一排不准动,那么答案就定了 也就是说,我们首先用二进制枚举,枚举第一行需要翻 ...
- APP UI设计趋势:为好设计而动
http://www.cocoachina.com/design/20150703/12029.html 作者:bone9 善心悦目的动效已然成为一个app的必备,作为设计师自然要跟随趋势学习.APP ...
- Part17—触摸屏显身手—Part17.1—原理简介
- day3_python之函数返回值、语句形式、表达式形式
一. 函数对象 1. 函数是第一类对象,即函数可以当作数据传递 #1 可以被引用 #2 可以当作参数传递 #3 返回值可以是函数 #3 可以当作容器类型的元素 二.返回值 return的返回值没有类型 ...
- Java排序算法总结
1.冒泡排序 冒泡排序是排序算法中最基本的一种排序方法,该方法逐次比较两个相邻数据的大小并交换位置来完成对数据排序,每次比较的结果都找出了这次比较中数据的最大项,因为是逐次比较,所以效率是O(N^2) ...
- H3C 分组交换连接模型
- 手把手教你用Python实现自动特征工程
任何参与过机器学习比赛的人,都能深深体会特征工程在构建机器学习模型中的重要性,它决定了你在比赛排行榜中的位置. 特征工程具有强大的潜力,但是手动操作是个缓慢且艰巨的过程.Prateek Joshi,是 ...
- 命名实体识别视频51cto
https://edu.51cto.com/center/course/lesson/index?id=402918 https://edu.51cto.com/course/18466.html