基于Python制作的公交车站查询系统

- 编辑:admin - 点击数:385

基于Python制作的公交车站查询系统

这篇文章主要介绍了如何利用Python制作一个简单的公交车站查询系统。文中的示例代码讲解详细,对我们学习Python有一定的帮助,需要的可以参考一下

一、设计目的1、教学目的

本课程设计是学生学习完《Python程序设计》课程后,进行的一次全面的综合训练,通过课程设计,更好地掌握使用Python语言进行程序设计的方法,加深对Python语言特点和使用Python语言进行程序设计开发过程的理解,加强动手能力。其主要目的是:

(1)进一步培养学生Python程序设计的思想,加深对高级语言基本语言要素和控制结构的理解;

(2)针对Python语言中的重点和难点内容进行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。

(3)掌握Python语言的编程技巧和上机调试程序的方法。

(4)掌握程序设计的常用算法。

2、教学要求

(1)要求从所给题目中任选若干个,每个学生必须独立完成课程设计,不能互相抄袭。

(2)设计完成后,对所完成的工作进行答辩。

(3)要求写出一份详细的课程设计报告。

(4)程序设计题目,须提交相应的程序,并需提供加注释的源程序,才能正常运行。

二、需求分析1、问题

根据需求,该系统所应包含的信息有以下一些:

后台用户管理员的基本信息:

账号、密码

各路公交车的基本信息:

每路公交车对应的线路信息

2、系统

采用Python语言实现,开发环境为PythonCharm,可以运行在操作系统windows98及以上皆可。

3、运行要求

界面友好,操作方便,容错性强。

三、系统模块设计

主界面模块:完成系统菜单的显示。

功能选择模块:根据用户的选择,完成其相应的功能。

线路查询模块:根据用户提供的线路,查询该线路所经过的站点。

站点查询的模块:根据用户提供的站点,查询经过该站点的所有线路。

后台管理员的模块:后台管理员可以进行一些操作,例如:删除所有线路、添加线路等

后台管理员的账号系统管理的模块:注册后台管理员的账号和密码。

换乘信息的模块:根据用户提供的起点和终点,帮助用户找到最便捷的路线。

四、详细设计

五、需要设计的函数

主函数。

管理员账号管理界面的函数。

用户登录的函数。

后台管理员界面的函数。

定义修改线路的函数。

判断是否存在线路的函数。

线路查询的函数。

判断站点是否存在的函数。

站点查询的函数。

检查添加线路是否存在的函数。

基于Python制作的公交车站查询系统

添加线路的函数。

清楚所有线路的函数。

展示所有线路的函数。

删除线路的函数。

判断是否存在线路的函数。

展示特定线路中的站点的函数。

换乘信息的函数。

判断线路直达的函数。

存储数据的函数。

断站点所在的线路的函数。

六、Python源码
importosimportpickledefmain():管理员账号管理界面的函数defnew_():file_path='D:\公交查询系统\'a=input('请设置你的账号:')b=input('请设置入你的密码:')w=input('请再次输入你的的密码:')d={'user':a,'password':b}ifb==w:(file_path)(file_path):o=open('','rb')m=(o)withopen('','ab')asfp:(d,fp)print('您已经注册成功!!')else:withopen('','wb')asfp:(d,fp)print('您已经注册成功!!')else:print('对不起,你两次输入的密码不一致,请您重新输入!!')defxiaohui():h=open('','w+')用户登录的函数withopen('','rb')asfp:q=input('请输入你的的账号:')w=input('请输入你的的密码:')whileTrue:try:data=(fp)ifq==data['user']andw==data['password']:print('您已经登录成功!!!')returnTrueexcept:breakdefmanager():定义修改线路的函数num=input('请输入您要修改的线路:').strip()ifcheck_add_line(num):show_line_all()tag=input('请确认是否继续修改线路:(1为是,0为否)\n')iftag=='1':file_path='D:\公交查询系统\line_'a=input('请再次输入要修改的线路:').strip()clear_line(a)b=input('请输入经过的站点:')d={a:{b}}(file_path)(file_path):withopen('line_','ab')asf:(d,f)print('您已经修改线路成功!!')else:withopen('line_','wb')asfp:(d,fp)print("您已经修改线路成功了!!!!")else:print('您要修改的线路不存在,需要创建一个新的线路。。。')add_line()defline_check(num):线路查询的函数num=input('请输入你要查询的线路:\n').strip()ifline_check(num):passelse:print('您要查找的线路不存在.')defsite_check():遍历字典forkey,():ls=str(value)ifnuminls:(f'经过{num}站点的线路为{key}号线')continueexcept:breakifres:print(res)returnTrueelse:returnFalsedefsite_find():检查添加线路是否存在的函数withopen('line_','rb')asfp:whileTrue:try:data=(fp)添加线路的函数file_path='D:\公交查询系统\line_'a=input('请输入添加的线路:').strip()b=input('请输入经过的站点:')d={a:{b}}(file_path)(file_path):ifcheck_add_line(a):print('您要添加的线路已经存在了')else:withopen('line_','ab')asf:(d,f)print('您已经添加线路成功!!')else:withopen('line_','wb')asfp:(d,fp)print('您已经添加线路成功了!!')defclear_line_all():清空文件里的内容。。。()print('你已经销毁成功。。。')defshow_line_all():遍历字典forkey,():print(f'{key}线路经过的站点是{value}')except:breakdefclear_line(num):遍历字典forkey,():ifnuminkey:print(f'{num}线路已经删除成功!!')passelse:(data)except:breaksave_data(ls)defline_check(num):展示特定线路中的站点的函数withopen('line_','rb')asfp:whileTrue:try:data=(fp)ifnumindata:returndata[num]except:breakdefchange_line():存储经过起点的线路的全部站点ls_=[]print(type(data[0]),type(data[1]))print(f'经过{begin}站点的线路为:{data[0]},经过{}站点的线路为{data[1]}')i为集合的形式forainlist(i):forbinstr(a).split():判断是否存在相同的站点tag=Falseprint(f"您可以通过从{data[0]}号线的{b}站转到{data[1]}号线来到达目的地!!")breakbreakiftag:print('对不起,无法通过换乘来到达目的地')defdirect_line(begin,):遍历字典forkey,():ls=str(value)ifbegininlsandinls:print(f'您可以通过{key}号线路直接到达')returnTrueexcept:breakdefsave_data(ls):判断站点所在的线路的函数。withopen('line_','rb')asfp:ls=[]ls_=[]whileTrue:try:data=(fp)defhelp_change_line_info(i,j):ls=[]whileTrue:data=(fp)遍历字典ls1=str(key)(value)ls_.app(value)break#returnls,ls_if__name__=='main':main()main()