JAVA实现公交线路管理系统

该程序主要是在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();
    }
}

运行部分截图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

压马路的时间

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值