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公交查询系统相关推荐

  1. Python课设实验 之 公交查询系统.(文本导入 字典树 储存.)

    要求: 目录 要求: 第1题  编写一个公交查询系统 随着公交系统的庞大,人们很难得到准确的公交信息,这样给人们的出行就带来了不便.因此,急需一个方便.快捷的公交信息查询方式,本系统提供换乘询功能.路 ...

  2. 基于B/S的城市公交查询系统的设计与实现(附:源码+论文+答辩PPT))

    摘  要 近年来, Internet推动了以互联网技术为核心的各项工作蓬勃展开,互联网的强大也大大的促进了社会的发展,整个社会信息化进程逐步加快,网络也变成了我们日常活动中越来越重要的组成成分.为了使 ...

  3. php 公交 查询系统,php定做单城市公交路线查询系统

    本人通过调查乌鲁木齐市的公交状况,发现使用公交路线查询系统的人群主要是两大人群:城市居民和公交管理员.而城市居民想要的功能是:可以查找车次,可以查找经过改站点的公交车,两站的换乘以及对公交车站提意见. ...

  4. MYSQL交通系统查询,城市公交查询系统的设计与实现(SSH,MySQL)(含录像)

    城市公交查询系统的设计与实现(SSH,MySQL)(含录像)(开题报告,毕业论文15000字,程序代码,MySQL数据库,答辩PPT) 本文针对公交站的查询实际情况(百度地图),按照软件工程的结构化设 ...

  5. java城市公交查询系统案例_013JAVA.JSP城市公交查询系统.zip

    [实例简介] 本人上传的资源大多是工作学习时的积累, 大部分上传的资源具有 源码+论文+答辩PPT+运行视频 四部分组成. 仅供学习参考,不得用于商业途径,希望能够帮助到大家,谢谢. [实例截图] [ ...

  6. php公交查询系统源代码,基于Smarty公交查询系统的设计与实现(PHP,MySQL)

    基于Smarty公交查询系统的设计与实现(,MySQL)(任务书,开题报告,中期报告,毕业论文11000字,程序代码,MySQL数据库,答辩PPT) 本系统主要分为前台页面.后台逻辑及数据库三大部分. ...

  7. 基于javaweb的公交查询系统的设计与实现(含源文件)

    欢迎添加微信互相交流学习哦! 项目源码:https://gitee.com/oklongmm/biye 基于J2EE的公交查询系统的设计与实现 摘  要 公交查询系统是城市道路交通的重要组成部分,是城 ...

  8. 【毕设】ASP.NET基于.NET的城市公交查询系统的设计与实现(源代码+论文)

    文章目录 目录 系统设计 系统实现 源文件 目录 系统设计 近十几年来,我国汽车工业蓬勃发展,特别是家用轿车的增长.发展中国家用轿车市场,其规模与速度必须与城市基础建设同步,如果一味追求发展速度,势必 ...

  9. 基于Java+Dubbo设计的智能公交查询系统

    一.项目背景 随着经济的飞速发展,人们的生活质量有了较大的提高,城市居民的出行变得越来越频繁,城市交通也面临越来越多的挑战.城市公共交通具有客流量大.成本低.效率高.节约资源等优势,因此,如何大力发展 ...

最新文章

  1. 玩转 JavaScript 面试:何为函数式编程?
  2. MIT机器学习种菜项目永久关停
  3. 咖友:打个雷啊 | 今日头条VS腾讯新闻:让马化腾也坐不住的新闻资讯行业未来之争...
  4. BeanPostProcessor使用心得
  5. HotSpot的-XshowSettings标志的简单性和价值
  6. python中的多线程的优点_Python中多线程编程的优点是什么?
  7. elasticsearch集群部署
  8. java中的命令行参数_Java中的命令行参数
  9. 深入理解Java8 Lambda表达式
  10. OC 计算幂集 - 递归法
  11. linux命令大全dfs,Linux常用的dfs命令
  12. 小米的过去、现在和未来
  13. linux开启防火墙教程,linux系统开启防火墙及开放端口操作步骤
  14. python统计pdf字数代码_Python基本数据统计.pdf
  15. iOS证书的种类和其作用
  16. Angular 个人深究(一)【Angular中的Typescript 装饰器】
  17. Windows 下有什么软件能够极大地提高工作效率
  18. Nexus简介及小白使用IDEA打包上传到Nexus3私服详细教程
  19. App Store Server API 实践总结
  20. H5和webview跳转小程序

热门文章

  1. stata软件不出图_绘制回归分析结果的森林图,R和Stata软件学起来!
  2. C语言--确定到底谁是凶手
  3. word 多级列表的标题操作
  4. cmdy5(cmdy5庆余年)
  5. 使用Feed43为网页生成RSS订阅源
  6. 父亲的暧昧行迹该告诉母亲吗?
  7. 学生成绩分等级 --if形式
  8. 线性回归—求解介绍及回归扩展
  9. 技术分享 | Goby食用指南之红蓝对抗
  10. 客客威客短信接口修改(kppw) 配置