公交车换乘系统

#公交车类
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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值