该程序主要是在JAVAES的基础上创建一个简易的公交线路管理系统。
主要功能:
1.建立公交路线信息(主要是车号和站点的添加)
2.修改公交路线信息(修改指定车号中的站点信息)
3.删除公交路线信息(删除指定车号的路线信息)
4.查询公交路线信息(查询指定车号的路线信息和指定站点的所有路线信息)
5.所有公交路线信息(展示所有路线信息)
6.退出程序
代码思想:
将管理系统拆分为5大部分,分别为:
Model(模块区),用于建立模型
Service(服务区),用于实现增删改查等修改工作
Tools(工具区),用于创建一些能增强代码复用性和代码规范化的静态方法
View(菜单区),用于创建主菜单
App(主方法区),程序的入口
代码实现
App(主方法区)
public class App {
public static void main(String[] args) {
new BusView().mainView();
}
}
View(菜单区)
public class BusView {//主菜单
Scanner scanner = new Scanner(System.in);
boolean loop = true;//循环需要
int put;//输入操作
public void mainView() {
BusService buses = new BusService(10);//设置容量
do {
System.out.println("==========公交线路管理系统==========");
System.out.println(
"\t\t1.建立公交线路信息" + "\n" +
"\t\t2.修改公交线路信息" + "\n" +
"\t\t3.删除公交线路信息" + "\n" +
"\t\t4.查询公交线路信息" + "\n" +
"\t\t5.所有公交线路信息" + "\n" +
"\t\t6.退出程序");
System.out.println("请输入你的操作: ");
put = scanner.nextInt();
switch (put) {
case 1:
buses.BusAdd();
break;
case 2:
buses.BusAlter();
break;
case 3:
buses.BusDelete();
break;
case 4:
buses.InfoBus();
break;
case 5:
buses.InfoBusAll();
break;
case 6:
loop = BusExit.exit();
break;
default:
}
} while (loop);
}
}
Tools(工具区)
public class BusTools {
/**
* 限定车号格式,对返回真,错返回假
* 长度必须为3,并且全是数字
*/
public static boolean formatID(String id) {
char[] chars = id.toCharArray();
if (chars.length == 3) {
for (int i = 0; i < chars.length; i++) {
if (!(chars[i] >= '0' && chars[i] <= '9')) {
return false;
}
}
return true;
}
return false;
}
/**
* 查询车号是否存在,存在返回真,不存在返回假
*/
public static boolean seeID(Bus[] buses, int busSum, String id) {
for (int i = 0; i < busSum; i++) {
if (buses[i].getID().equals(id)) {
return true;
}
}
return false;
}
/**
* 返回指定车号索引
*/
public static int indexID(Bus[] buses, int busSum, String id) {
for (int i = 0; i < busSum; i++) {
if (buses[i].getID().equals(id)) {
return i;
}
}
return -1;
}
/**
* 限定车站格式,对返回真,错返回假
* 不允许有数字
*/
public static boolean formatPlatform(String p) {
if (p.equals("-1")) {
return true;
}
char[] chars = p.toCharArray();
for (int i = 0; i < chars.length; i++) {
if (chars[i] >= '0' && chars[i] <= '9') {
return false;
}
}
return true;
}
/**
* 返回指定站点索引
*/
public static int indexPlatform(Bus[] buses, int indexID, String platform) {
return buses[indexID].getPlatform().indexOf(platform);
}
}
Service(服务区)
public class BusExit {
public static boolean exit() {
System.out.println("\n------------------------------\n");
Scanner scanner = new Scanner(System.in);
for (; ; ) {
System.out.println("你确定要退出程序吗?");
System.out.println("Y/y 是 N/n否");
String loop = scanner.next();
switch (loop) {
case "Y":
case "y":
System.out.println("输入成功,退出程序");
System.out.println("\n------------------------------\n");
return false;
case "N":
case "n":
System.out.println("输入成功, 返回主菜单");
System.out.println("\n------------------------------\n");
return true;
default:
System.out.println("输入错误,请重新输入");
}
}
}
}
//@SuppressWarnings({"all"})
public class BusService {
Bus[] buses;
int busSum = 0;
public BusService() {
}
/**
* 设置容量大小
*
* @param size
*/
public BusService(int size) {
buses = new Bus[size];
}
/**
* 添加公交信息
*/
public void BusAdd() {
System.out.println("\n------------------------------\n");
Scanner scanner = new Scanner(System.in);
String id;
String platform;
List list = new ArrayList();
boolean loop;
System.out.println("请输入车号(格式:000)");
id = scanner.next();
while (!(BusTools.formatID(id))) {
System.out.println("车号格式输入错误,重新输入");
id = scanner.next();
}
if (!(BusTools.seeID(buses, busSum, id))) {
System.out.println("车号已添加,请输入车站信息");
loop = true;
do {
platform = scanner.next();
while (!(BusTools.formatPlatform(platform))) {
System.out.println("车站格式输入错误,请重新输入");
platform = scanner.next();
}
System.out.println("输入成功,若退出则输入-1");
if (platform.equals("-1")) {
loop = false;
System.out.println("成功退出");
} else {
list.add(platform);
}
} while (loop);
buses[busSum] = new Bus(id, list);
busSum++;
System.out.println("\n------------------------------\n");
} else {
System.out.println("车站已存在");
System.out.println("\n------------------------------\n");
}
}
/**
* 修改公交信息
*/
public void BusAlter() {
System.out.println("\n------------------------------\n");
Scanner scanner = new Scanner(System.in);
String id;//车号
int indexId;
String platform;
String NewPlatform;
int indexPlatform;
System.out.println("请输入你要修改的车号");
id = scanner.next();
if (BusTools.seeID(buses, busSum, id)) {
indexId = BusTools.indexID(buses, busSum, id);
System.out.println("车号存在,该车号信息为:");
System.out.println(buses[indexId]);
System.out.println("输入你要修改的站点");
platform = scanner.next();
System.out.println("输入修改后的站点");
NewPlatform = scanner.next();
indexPlatform = BusTools.indexPlatform(buses, indexId, platform);
buses[indexId].getPlatform().set(indexPlatform, NewPlatform);
System.out.println("\n------------------------------\n");
} else {
System.out.println("车号不存在,无法进行修改操作");
System.out.println("\n------------------------------\n");
}
}
/**
* 删除公交信息
*/
public void BusDelete() {
System.out.println("\n------------------------------\n");
Scanner scanner = new Scanner(System.in);
String id;
String loopID;
int indexID;
boolean loop = true;
System.out.println("请输入你要删除的车号");
id = scanner.next();
if (BusTools.seeID(buses, busSum, id)) {
System.out.println("车号存在,确定要删除吗?(Y/y N/n)");
loopID = scanner.next();
do {
switch (loopID) {
case "Y":
case "y":
indexID = BusTools.indexID(buses, busSum, id);
if (busSum >= 2) {
for (int i = indexID; i < busSum - 1; i++) {
buses[i] = buses[i + 1];
}
System.out.println("删除成功");
System.out.println("\n------------------------------\n");
loop = false;
busSum--;
} else {
buses[indexID] = null;
System.out.println("删除成功");
System.out.println("\n------------------------------\n");
loop = false;
busSum--;
}
break;
case "N":
case "n":
System.out.println("删除失败,返回主菜单");
System.out.println("\n------------------------------\n");
loop = false;
break;
default:
System.out.println("输入错误,重新输入");
System.out.println("\n------------------------------\n");
break;
}
}while (loop);
} else {
System.out.println("车号不存在,返回主菜单");
System.out.println("\n------------------------------\n");
}
}
/**
* 查询公交指定信息
*/
public void InfoBus() {
System.out.println("\n------------------------------\n");
String id;//车号
String platform;//站点
String loopInfo;//选择
int platformSum = 0;//存在站点的车号总数
Scanner scanner = new Scanner(System.in);
System.out.println("要查询车号还是站点?(1 or 2)");
loopInfo = scanner.next();
switch (loopInfo) {
case "1":
System.out.println("请输入你要查询的车号");
id = scanner.next();
if (BusTools.seeID(buses, busSum, id)) {
System.out.println("已查询到你查询的车号信息:");
for (int i = 0; i < busSum; i++) {
if (buses[i].getID().equals(id)) {
System.out.println(buses[i]);
}
}
} else {
System.out.println("未查询到你查询的车号信息");
}
break;
case "2":
System.out.println("请输入你要查询的站点");
platform = scanner.next();
for (int i = 0; i < busSum; i++) {
if (buses[i].getPlatform().contains(platform)) {
platformSum++;
}
}
if (platformSum != 0) {
System.out.println("已查询到你查询的站点信息");
for (int i = 0; i < busSum; i++) {
if (buses[i].getPlatform().contains(platform)) {
System.out.println(buses[i]);
System.out.println("总计 " + platformSum + " 个路线");
}
}
} else {
System.out.println("未查询到你查询的站点信息");
}
break;
default:
System.out.println("输入错误,返回主菜单");
break;
}
System.out.println("\n------------------------------\n");
}
/**
* 列出公交所有信息
*/
public void InfoBusAll() {
System.out.println("\n------------------------------\n");
if (busSum == 0){
System.out.println("目前暂无公交线路");
} else {
for (int i = 0; i < busSum; i++) {
System.out.println(buses[i]);
}
}
System.out.println("\n------------------------------\n");
}
}
Model(模块区)
public class Bus {
private String ID;
private List Platform;
public Bus() { }
public Bus(String ID, List platform) {
this.ID = ID;
Platform = platform;
}
public String getID() {
return ID;
}
public void setID(String ID) {
this.ID = ID;
}
public List getPlatform() {
return Platform;
}
public void setPlatform(List platform) {
Platform = platform;
}
@Override
public String toString() {
return "车号: " + getID() + "\n" + "路线:" + getPlatform();
}
}