#公交车类
class Bus:
def __init__(self, number):
# 线路列表,存放站点信息
self.stops = []
self.number = number
from bus import Bus
# 公交中心类
class BusStations:
def __init__(self):
self.bus_list = []
# 添加公交车
def add_bus(self):
bus_number = input("请输入公交车路数")
bus = Bus(bus_number)
print("请添加该公交车站点,退出请输入0")
while True:
stop_name = input("请输入站点名称:")
if stop_name == "0":
break
else:
bus.stops.append(stop_name)
self.bus_list.append(bus)
pass
# 查询公交车的线路信息
def querycar(self):
for bus in self.bus_list:
print(f"{bus.number}路公交车的线路信息为:{','.join(bus.stops)}")
pass
# 根据站点查询公交车信息
# stop:传入的站点
# 返回包含经过该站点的所有公交车列表
def querystop(self, stop):
tmp = []
for bus in self.bus_list:
if stop in bus.stops:
tmp.append(bus)
return tmp
# 公交车换乘
# fromadd:始发站,toadd:目的地
def change(self, fromadd, toadd):
# 检测出发地和目的地是否在线路中
# 查询包含所有始发站的公交车列表
from_bus_list = self.querystop(fromadd)
# 查询包含所有终点站的公交车列表
to_bus_list = self.querystop(toadd)
if not from_bus_list:
print("出发地并非公交站点,请输入正确的出发点")
return
if not to_bus_list:
print("目的地并非公交站点,请输入正确的目的地")
return
# 查询是否有直达公交
tmp = []
for formbus in from_bus_list:
for tobus in to_bus_list:
if formbus.number == tobus.number:
tmp.append(formbus.number)
if tmp:
print(f"您可以乘坐{','.join(tmp)}公交车直达")
# 直接退出,不用再查询换乘
return
# 查询是否可以换乘 (站点1-站点8)
for formbus in from_bus_list: # [1路,2路,3路]
for tobus in to_bus_list: # [4路,5路,6路]
from_bus_stops = formbus.stops # 1路:[站点1,站点2,站点3,站点4,站点5,站点6,站点7]
to_bus_stops = tobus.stops # 4路:[站点3,站点4,站点5,站点6,站点7,站点8,站点9]
for f_index, f_stop in enumerate(from_bus_stops):
for t_index, t_stop in enumerate(to_bus_stops):
if f_stop == t_stop:
from_add_index = from_bus_stops.index(fromadd)
print(
f"您可以乘坐{formbus.number}号公交车在{fromadd}站上车,经过{f_index - from_add_index}站到达{from_bus_stops[f_index]}",
end="")
# 终点站
to_add_index = to_bus_stops.index(toadd)
print(f"站后转乘{tobus.number}号公交车经过{to_add_index - t_index}站到达目的地")
pass
pass
pass
from busstation import BusStations
def tip():
print("-------------欢迎来到公交车换乘查询系统---------")
print("-------请选择操作-------")
print("【1】:添加公交车")
print("【2】:查询公交车的线路")
print("【3】:查询公交车信息")
print("【4】:换乘查询")
print("【5】:退出")
pass
bus_station=BusStations()
while True:
tip()
choice = int(input("请选则需要的功能:"))
print("********************************************")
# 添加公交车
if choice == 1:
bus_station.add_bus()
# 查询公交车的线路
elif choice == 2:
# bus_number = input("请输入公交车号:")
bus_station.querycar()
# 查询公交车信息
elif choice == 3:
stop = input("请输入车站:")
bus_list = bus_station.querystop(stop)
print(f"经过{stop}的公交车有:{','.join(bus.number for bus in bus_list)}")
# 换乘查询
elif choice == 4:
from_stop = input("请输入出发地:")
to_stop = input("请输入目的地:")
BusStations.change(from_stop,to_stop)
# 退出系统
else:
print("感谢您的使用,再见")
break