日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python公交查询系统

發布時間:2023/12/15 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python公交查询系统 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

python公交查詢系統

公交查詢系統實驗可以實現一個方便、快捷的公交信息查詢方式。要求實現以下功能:1.線路查詢:可以獲得要查詢公交所通過的各個站點;2.站點查詢:通過輸入的指定站點查詢經過該站點的公交;3.換乘查詢:分為公交直達、公交一次換乘,主要體現那些不可直達需要轉車的路線的所有換乘方法;4.后臺管理:用于管理員登入,添加、修改、刪除公交線路等功能。

  • 本系統用字典實現,key對應公交車號,value對應路線列表
  • 換乘功能只能找到直達和換乘一次的情況
  • 不是很完美,望大佬評論指出意見
''' 管理員密碼:1 注意點: 1.公交車號唯一 修改key dict={'a':1, 'b':2} dict["c"] = dict.pop("a") 判斷key是否存在 num in dict.key() 2.添加完成保存到文件''' import os path=[]#存儲站點 bus={'001':['a','b','e'],'002':['b','c','g'],'003':['h','c','d']}#存儲公交路線,初始化3條路線#線路查詢功能 def linefind():num=input("請輸入要查詢的公交車號:")if num not in bus.keys():print("沒有該線路信息,查詢失敗")return Falsefor b,r in bus.items():if(num==b):print("該公交車的線路為:",r)return True #站點查詢功能 def addrfind(addr):tmp=[]#addr=input("請輸入要查詢的站點名稱")for b,r in bus.items():if addr in r:tmp.append(b)if( not tmp):print("對不起,此站點沒有公交車經過")return tmpreturn tmp #換乘查詢 def change():startaddr=input("請輸入出發地:")slist=addrfind(startaddr)#經過出發地的公交車if( not slist):print("請您移步到有站點的出發地再進行查詢")return Falsedesaddr=input("請輸入目的地:")if( not desaddr):print("請您選擇離您目的地最近的公交車站點")dlist=addrfind(desaddr)#經過目的地的公交車x=len(slist)y=len(dlist)#直達查詢tmp=listlis(slist,dlist)if tmp:print("您可以乘坐",slist[tmp[0]],"號公交車直達")return Truefor i in range(0,x):for j in range(0,y):index=listlis(bus[slist[i]],bus[dlist[j]])#判斷是否存在相交路徑if index:ls=lenrouds(slist[i],startaddr,index[0])ld=lenrouds(dlist[j],desaddr,index[1])print("您可以乘坐",slist[i],"號公交車經過",ls,"站到達",bus[slist[i]][index[0]],end="")print("站后轉乘",dlist[j],"號公交車經過",ld,"站到達目的地")return Trueprint("對不起,沒有直達和一次轉乘到達的車")return False #返回線路長度 def lenrouds(busnum,startaddr,end):tmp=bus[busnum]for i in range(0,len(tmp)):if tmp[i]==startaddr:if i<end:return end-ielse:return i-end#返回兩個列表中相同元素的位置 def listlis(slist,dlist):x=len(slist)y=len(dlist)tmp=[]for i in range(0,x):for j in range(0,y):if(slist[i]==dlist[j]):tmp.append(i)tmp.append(j)return tmpreturn tmp#后臺管理顯示界面 def backstage():print("溫馨提示:密碼可在源碼第一行查看")pwd=input("請輸入管理員密碼:") if pwd!="1":print("密碼輸入有誤,已退出!")return Falseprint("登錄成功,歡迎進入公交系統后臺管理")checkrouds()while True: print("-"*10,"菜單","-"*10)print("1.增加線路")print("2.刪除線路")print("3.修改線路")print("4.退出管理")num=input("請輸入你的選擇:")if num=='1':addline()elif num=='2':delrouds()elif num=='3':changerouds()elif num=='4':print("已退出")breakelse:print("輸入有誤,重新輸入")#添加線路信息 def addline():i=1busnum=input("請輸入添加的公交車號:")if busnum in bus.keys():print("此公交車已存在,無法添加!")return Falseprint("請輸入此公交經過的站點(拼'stop'結束輸入):")while True:print("請輸入此公交車經過的第",i,"個站點:")addr=input()i+=1if addr=='stop':breakpath.append(addr) bus[busnum]=pathwritebus()print("保存成功")#刪除線路 def delrouds():print("全部刪除或輸入公交號刪除?(y/n):")while True:r=input()if r=='y'or r=='Y':bus.clear()writebus()print("刪除成功")return Trueelif r=='n' or r=='N':breakelse:print("請輸入y或n") busnum=input("請輸入刪除的公交車號:")if busnum not in bus.keys():print("此公交車不存在,無法刪除!")return Falsedel bus[busnum]print("刪除成功")writebus()print("保存成功")#修改線路 def changerouds():busnum=input("請輸入添加的公交車號:")if busnum not in bus.keys():print("此公交車不存在,無法修改!")return Falseprint("請重新輸入此公交經過的站點(拼'stop'結束輸入):")while True:addr=input()if addr=='stop':print("修改成功!")breakpath.append(addr) bus[busnum]=pathwritebus()print("保存成功")#保存到文件 def writebus():with open('bus.txt','w') as f:f.write(str(bus))f.close() #讀出文件 def readbus():if os.path.exists('bus.txt'):with open('bus.txt','r+') as f:busa=eval(f.read())#注意此處為深復制相當于又新開辟了一個空間bus.update(busa)#以busa為準進行更新f.close()print("信息已加載")else:print("沒有信息加載失敗")#查看所有線路 def checkrouds():if not bus:print("對不起,當前無線路信息")return False print("所有線路信息如下:")#print("*"*60)print("公交車號\t經過車站")print("*"*60)for i,j in bus.items():print(i,"\t\t",j)print("*"*60)def main():print("歡迎來到公交查詢系統")while True:print("-"*10,"菜單","-"*10)print("1.線路查詢")print("2.站點查詢")print("3.換乘查詢")print("4.后臺管理")print("5.查看所有線路")print("6.退出程序")print("*"*22)readbus()writebus()num=input("請輸入你的選擇:")if num=='1':linefind()elif num=='2':addr=input("請輸入要查詢的站點名稱")tmp=addrfind(addr)if(tmp):print("該站點經過的公交車有:",tmp)elif num=='3':change()elif num=='4':backstage()elif num=='5':checkrouds()elif num=='6':print("已退出")breakelse:print("輸入有誤,請重新輸入")main()

總結

以上是生活随笔為你收集整理的python公交查询系统的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。