Java公交系统模拟:车站管理、车辆和乘客
{"title":"模拟 公交系统 用java写","description":"使用Java编写一个公交系统模拟,包含车站管理、不同类型的车辆(电车、有轨电车、新能源车、柴油车)和乘客(老人、中年人、小孩),模拟公交运行过程,计算票价和收入,并输出统计信息。","keywords":"Java, 公交系统模拟, 车站管理, 车辆, 乘客, 票价, 收入, 统计","content":""里面由哪几个角色"\n"\n"车站管理类: 管理 发什么车, 几点发车,几点收车"\n"\n"车类: 电车,有轨电车, 新能源车, 柴油车 这四种公交车"\n"\n"人类: 老人,中年人, 小孩子 "\n"\n"规则: "\n"\n"1: 所有车的 站数 由车站管理来定 随机 (20-30之间)"\n"2: 不同车的基础票价不同"\n" 1) 电车 基础票价2快"\n" 2) 有轨电车 基础票价 1.8 ( 无论什么人,多少站,统一1.8,小孩不要钱)"\n" 3) 新能源车 基础票价 1.6"\n" 4) 柴油车 基础票价 1快"\n" "\n"3: 某个人的票价 = 基础票价 + 站数 * 人价格"\n"\n"4: 人价 : 老人 的人价格: 0.2元 中年人的人价格: 1.1元 小孩的人价格是 0 "\n"\n"5: 车子最多的载人数 是 20-30之间随机, 由 车辆管理决定 , 但是 座位 只有16个,多的可以站"\n"\n"6: 老人不能站 ,,, *************** 上车的时候 3种人的 上车人数 随机出来 0-10 个 "\n"\n"7: 下车 由 当前的 人数 自己随机, 比如 坐的由10个, 站的由5个, 那下车的总人数 就是 坐的随机,站的随机 各自下各自"\n"\n"8: 记录 每一站下的人数,下的人的种类, 上的人数,上的人的种类, 坐的人的数量,站的人的数量, 当前站收的钱 , "\n"\n"9: 当车子开完了后,由车辆管理来统计所有的钱 输出出来"\n"\n"10: 这些输出的,要求是每一辆车都要输出"\n"最终的测试。要求每一种车都有 , 内容:以下是使用Java编写的公交系统模拟:"\n"java\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Random;\n\n// 车站管理类\nclass StationManager {\n private int startTime; // 发车时间\n private int endTime; // 收车时间\n private List<Bus> buses; // 车辆列表\n\n public StationManager(int startTime, int endTime) {\n this.startTime = startTime;\n this.endTime = endTime;\n this.buses = new ArrayList<>();\n }\n\n public void addBus(Bus bus) {\n buses.add(bus);\n }\n\n public void start() {\n for (int i = startTime; i <= endTime; i++) {\n System.out.println("-------- 第" + i + "站 --------");\n for (Bus bus : buses) {\n bus.arriveAtStation();\n bus.departFromStation();\n }\n }\n\n // 统计收入\n System.out.println("\n-------- 收车统计 --------");\n for (Bus bus : buses) {\n bus.printStatistics();\n }\n }\n}\n\n// 车类\nabstract class Bus {\n private static final int MIN_STATIONS = 20; // 最小站数\n private static final int MAX_STATIONS = 30; // 最大站数\n private static final int MIN_PASSENGERS = 0; // 最小上车人数\n private static final int MAX_PASSENGERS = 10; // 最大上车人数\n private static final int MAX_CAPACITY = 30; // 最大载客量\n private static final int SEAT_CAPACITY = 16; // 座位数\n\n private static final double BASE_FARE = 1.0; // 基础票价\n private static final double ELECTRIC_FARE = 2.0; // 电车票价\n private static final double TRAM_FARE = 1.8; // 有轨电车票价\n private static final double NEW_ENERGY_FARE = 1.6; // 新能源车票价\n\n private static final double ELDER_PRICE = 0.2; // 老人价格\n private static final double ADULT_PRICE = 1.1; // 中年人价格\n\n private String type; // 车型\n private int stationCount; // 站数\n private int passengerCount; // 乘客数\n private int seatedCount; // 坐着的乘客数\n private int standingCount; // 站着的乘客数\n private double totalRevenue; // 总收入\n\n public Bus(String type) {\n this.type = type;\n this.stationCount = new Random().nextInt(MAX_STATIONS - MIN_STATIONS + 1) + MIN_STATIONS;\n this.passengerCount = 0;\n this.seatedCount = 0;\n this.standingCount = 0;\n this.totalRevenue = 0.0;\n }\n\n public abstract double calculateFare(int stationCount, int passengerCount);\n\n public void arriveAtStation() {\n int newPassengers = new Random().nextInt(MAX_PASSENGERS - MIN_PASSENGERS + 1) + MIN_PASSENGERS;\n passengerCount += newPassengers;\n\n System.out.println(type + "到达第" + stationCount + "站,上车" + newPassengers + "人");\n\n int seated = Math.min(newPassengers, SEAT_CAPACITY - seatedCount);\n int standing = newPassengers - seated;\n\n seatedCount += seated;\n standingCount += standing;\n\n totalRevenue += calculateFare(stationCount, newPassengers);\n\n System.out.println("坐着的乘客数:" + seatedCount);\n System.out.println("站着的乘客数:" + standingCount);\n System.out.println("当前站收入:" + calculateFare(stationCount, newPassengers));\n }\n\n public void departFromStation() {\n int leavePassengers = new Random().nextInt(passengerCount + 1);\n passengerCount -= leavePassengers;\n\n System.out.println(type + "离开第" + stationCount + "站,下车" + leavePassengers + "人");\n\n seatedCount -= Math.min(leavePassengers, seatedCount);\n standingCount -= Math.min(leavePassengers - seatedCount, standingCount);\n\n System.out.println("坐着的乘客数:" + seatedCount);\n System.out.println("站着的乘客数:" + standingCount);\n\n stationCount--;\n }\n\n public void printStatistics() {\n System.out.println("车型:" + type);\n System.out.println("总收入:" + totalRevenue);\n System.out.println();\n }\n}\n\n// 电车类\nclass ElectricBus extends Bus {\n public ElectricBus() {\n super("电车");\n }\n\n @Override\n public double calculateFare(int stationCount, int passengerCount) {\n return ELECTRIC_FARE + stationCount * (ADULT_PRICE + passengerCount * 0);\n }\n}\n\n// 有轨电车类\nclass Tram extends Bus {\n public Tram() {\n super("有轨电车");\n }\n\n @Override\n public double calculateFare(int stationCount, int passengerCount) {\n return TRAM_FARE;\n }\n}\n\n// 新能源车类\nclass NewEnergyBus extends Bus {\n public NewEnergyBus() {\n super("新能源车");\n }\n\n @Override\n public double calculateFare(int stationCount, int passengerCount) {\n return NEW_ENERGY_FARE + stationCount * (ADULT_PRICE + passengerCount * 0);\n }\n}\n\n// 柴油车类\nclass DieselBus extends Bus {\n public DieselBus() {\n super("柴油车");\n }\n\n @Override\n public double calculateFare(int stationCount, int passengerCount) {\n return BASE_FARE + stationCount * (ADULT_PRICE + passengerCount * 0);\n }\n}\n\n// 人类\nclass Person {\n private static final int ELDER_AGE = 60; // 老人年龄\n private static final int ADULT_AGE = 18; // 成年人年龄\n\n private String type; // 人类型\n private int age; // 年龄\n\n public Person(int age) {\n this.age = age;\n\n if (age >= ELDER_AGE) {\n this.type = "老人";\n } else if (age >= ADULT_AGE) {\n this.type = "中年人";\n } else {\n this.type = "小孩";\n }\n }\n\n public String getType() {\n return type;\n }\n}\n\npublic class BusSystemSimulation {\n public static void main(String[] args) {\n StationManager stationManager = new StationManager(1, 10);\n\n Bus electricBus = new ElectricBus();\n Bus tram = new Tram();\n Bus newEnergyBus = new NewEnergyBus();\n Bus dieselBus = new DieselBus();\n\n stationManager.addBus(electricBus);\n stationManager.addBus(tram);\n stationManager.addBus(newEnergyBus);\n stationManager.addBus(dieselBus);\n\n stationManager.start();\n }\n}\n\n"这个公交系统模拟中包含了车站管理类、车类和人类。车站管理类负责管理发车时间、收车时间和车辆列表。车类包括电车、有轨电车、新能源车和柴油车,每种车都有不同的票价和计算收入的方式。人类根据年龄划分为老人、中年人和小孩,并根据车辆类型和站数计算票价。模拟过程中,每一站车辆都会到达和离开,并统计收入。最后由车辆管理类输出每辆车的统计信息。"\n
原文地址: https://www.cveoy.top/t/topic/pUnA 著作权归作者所有。请勿转载和采集!