生活随笔
收集整理的這篇文章主要介紹了
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']}
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
=[]for b
,r
in bus
.items
():if addr
in r
:tmp
.append
(b
)if( not tmp
):print("對不起,此站點沒有公交車經過")return tmp
return 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
-i
else: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 tmp
return 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
)f
.close
()print("信息已加載")else:print("沒有信息加載失敗")
def checkrouds():if not bus
:print("對不起,當前無線路信息")return False print("所有線路信息如下:")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公交查询系统的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。