iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > Python >基于Python如何制作公交车站查询系统
  • 675
分享到

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

2023-06-26 06:06:11 675人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章给大家介绍基于python如何制作公交车站查询系统,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、设计目的1、教学目的本课程设计是学生学习完《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源码

    import osimport pickledef main():  # 主函数    while True:        print('-' * 30)        print('------菜单------')        print('1.线路查询')        print('2.站点查询')        print('3.换乘信息')        print('4.后台管理员界面')        print('5.管理员的账号管理界面')        print('6.退出程序')        print('-' * 30)        num = int(input('请选择你的操作:\n'))        if num == 1:            line_find()            continue        if num == 2:            site_find()            continue        if num == 3:            change_line()            continue        if num == 5:            manager_account()            continue        if num == 6:            break        if num == 4:            manager()            continue        else:            print('请重新做出你的选择!!')def manager_account():  # 管理员账号管理界面的函数    def new_():        file_path = 'D:\公交查询系统\info.pkl'        a = input('请设置你的账号:')        b = input('请设置入你的密码:')        w = input('请再次输入你的的密码:')        d = {            'user': a,            'passWord': b        }        if b == w:            if os.path.exists(file_path) and os.path.getsize(file_path):                o = open('info.pkl', 'rb')                m = pickle.load(o)                with open('info.pkl', 'ab') as fp:                    pickle.dump(d, fp)                print('您已经注册成功!!')            else:                with open('info.pkl', 'wb') as fp:                    pickle.dump(d, fp)                print('您已经注册成功!!')        else:            print('对不起,你两次输入的密码不一致,请您重新输入!!')    def xiaohui():        h = open('info.pkl', 'w+')  # 清空文件里的内容。。。        h.truncate()        print('你已经销毁成功。。。')    while True:        print('-----管理员的账号管理界面------\n'              '1.注册\n'              '2.注销原有的所有账户\n'              '3.退出管理员的账号管理界面')        choice = input('请做出你的选择:\n')        if choice == '1':            new_()        if choice == '2':            xiaohui()        elif choice == '3':            print('-' * 35)            print('------菜单------')            print('1.线路查询')            print('2.站点查询')            print('3.换乘信息')            print('4.后台管理员界面')            print('5.管理员的账号管理界面')            print('6.退出程序')            print('-' * 35)            break        else:            print('请重新做出你的选择')def login():  # 用户登录的函数    with open('info.pkl', 'rb') as fp:        q = input('请输入你的的账号:')        w = input('请输入你的的密码:')        while True:            try:                data = pickle.load(fp)                if q == data['user'] and w == data['password']:                    print('您已经登录成功!!!')                    return True            except:                breakdef manager():  # 后台管理员界面的函数    if login():        while True:            print('-' * 30)            print('-----后台管理员界面-----')            print('1.添加线路')            print('2.删除线路')            print('3.修改线路')            print('4.查看所有线路')            print('5.删除所有线路')            print('6.退出')            print('-' * 30)            num = input('请做出你的选择:\n')            if num == '3':                revise_line()                continue            if num == '1':                add_line()                continue            if num == '6':                print('-' * 25)                print('------菜单------')                print('1.线路查询')                print('2.站点查询')                print('3.换乘信息')                print('4.后台管理员界面')                print('5.管理员的账号管理界面')                print('6.退出程序')                print('-' * 25)                break            if num == '5':                clear_line_all()                continue            if num == '4':                show_line_all()                continue            if num == '2':                num = input('请输入你要删除的线路:\n').strip()                clear_line(num)                continue            else:                print('请重新做出你的选择...')    else:        print('对不起,你登录失败,不可以让您进入后台管理员界面')def revise_line():  # 定义修改线路的函数    num = input('请输入您要修改的线路:').strip()    if check_add_line(num):        show_line_all()        tag = input('请确认是否继续修改线路:(1为是,0为否)\n')        if tag == '1':            file_path = 'D:\公交查询系统\line_info.pkl'            a = input('请再次输入要修改的线路:').strip()            clear_line(a)            b = input('请输入经过的站点:')            d = {                a: {b}            }            if os.path.exists(file_path) and os.path.getsize(file_path):                with open('line_info.pkl', 'ab') as f:                    pickle.dump(d, f)                print('您已经修改线路成功!!')            else:                with open('line_info.pkl', 'wb') as fp:                    pickle.dump(d, fp)                print("您已经修改线路成功了!!!!")    else:        print('您要修改的线路不存在,需要创建一个新的线路。。。')        add_line()def line_check(num):  # 判断是否存在线路的函数    with open('line_info.pkl', 'rb') as fp:        while True:            try:                data = pickle.load(fp)                if num in data:                    print(f'{num}号线的路线经过的站点为{data[num]}')                    return True            except:                breakdef line_find():  # 线路查询的函数    num = input('请输入你要查询的线路:\n').strip()    if line_check(num):        pass    else:        print('您要查找的线路不存在....')def site_check():  # 判断站点是否存在的函数    res = []    with open('line_info.pkl', 'rb') as fp:        num = input('请输入你要查询的站点名:\n').strip()        while True:            try:                data = pickle.load(fp)                # 遍历字典                for key, value in data.items():                    ls = str(value)                    if num in ls:                        res.append(f'经过{num}站点的线路为{key}号线')                        continue            except:                break    if res:        print(res)        return True    else:        return Falsedef site_find():  # 站点查询的函数    if site_check():        pass    else:        print('您要查询的站点不存在.....')def check_add_line(num):  # 检查添加线路是否存在的函数    with open('line_info.pkl', 'rb') as fp:        while True:            try:                data = pickle.load(fp)                # 遍历字典                for key, value in data.items():                    if num in key:                        return True            except:                breakdef add_line():  # 添加线路的函数    file_path = 'D:\公交查询系统\line_info.pkl'    a = input('请输入添加的线路:').strip()    b = input('请输入经过的站点:')    d = {        a: {b}    }    if os.path.exists(file_path) and os.path.getsize(file_path):        if check_add_line(a):            print('您要添加的线路已经存在了......')        else:            with open('line_info.pkl', 'ab') as f:                pickle.dump(d, f)            print('您已经添加线路成功!!')    else:        with open('line_info.pkl', 'wb') as fp:            pickle.dump(d, fp)        print('您已经添加线路成功了!!')def clear_line_all():  # 清除所有线路的函数    h = open('line_info.pkl', 'w+')  # 清空文件里的内容。。。    h.truncate()    print('你已经销毁成功。。。')def show_line_all():  # 展示所有线路的函数    with open('line_info.pkl', 'rb') as fp:        while True:            try:                data = pickle.load(fp)                # 遍历字典                for key, value in data.items():                    print(f'{key}线路经过的站点是{value}')            except:                breakdef clear_line(num):  # 删除线路的函数    with open('line_info.pkl', 'rb') as fp:        ls = []        while True:            try:                data = pickle.load(fp)                # 遍历字典                for key, value in data.items():                    if num in key:                        print(f'{num}线路已经删除成功!!')                        pass                    else:                        ls.append(data)            except:                break        save_data(ls)def line_check(num):  # 判断是否存在线路的函数    with open('line_info.pkl', 'rb') as fp:        while True:            try:                data = pickle.load(fp)                if num in data:                    print(f'{num}号线的路线经过的站点为{data[num]}')                    return True            except:                breakdef show_site(num):  # 展示特定线路中的站点的函数    with open('line_info.pkl', 'rb') as fp:        while True:            try:                data = pickle.load(fp)                if num in data:                    return data[num]            except:                breakdef change_line():  # 换乘信息的函数    begin = input('请输入你的起点站点:\n').strip()    end = input('请输入你的终点站点:\n').strip()    if direct_line(begin, end):        pass    else:        ls = []  # 存储经过起点的线路的全部站点        ls_ = []  # 存储经过终点的线路的全部站点        tag = True        data = check_site(begin, end)        # print(type(data[0]),type(data[1]))        print(f'经过{begin}站点的线路为:{data[0]},经过{end}站点的线路为{data[1]}')  # 判断经过起始点和终点的对应线路        for i in range(len(list(data)[0])):            ls.append(show_site(data[0][i]))            print(f"{line_check(str(data[0][i]))}")        for j in range(len(list(data)[1])):            ls_.append(show_site(data[1][j]))            print(f"{line_check(str(data[1][j]))}")        for i in ls:  # i为集合的形式            for a in list(i):                for b in str(a).split():  # 切割字符串                    if b in str(ls_):  # 判断是否存在相同的站点                        tag = False                        print(f"您可以通过从{data[0]}号线的{b}站转到{data[1]}号线来到达目的地!!")            #             break            #         break            #     break            # break        if tag:            print('对不起,无法通过换乘来到达目的地')def direct_line(begin, end):  # 判断线路直达的函数    with open('line_info.pkl', 'rb') as fp:        while True:            try:                data = pickle.load(fp)                # 遍历字典                for key, value in data.items():                    ls = str(value)                    if begin in ls and end in ls:                        print(f'您可以通过{key}号线路直接到达')                        return True            except:                breakdef save_data(ls):  # 存储数据的函数    with open('line_info.pkl', 'wb') as fp:        for data in ls:            pickle.dump(data, fp)def check_site(begin, end):  # 判断站点所在的线路的函数。    with open('line_info.pkl', 'rb') as fp:        ls = []        ls_ = []        while True:            try:                data = pickle.load(fp)                # 遍历字典                for key, value in data.items():                    ls1 = str(value)                    if begin in ls1:                        ls.append(key)                    if end in ls1:                        ls_.append(key)            except:                break        return ls, ls_# def help_change_line_info(i, j):#     with open('line_info.pkl', 'rb') as fp:#         ls = []#         ls_ = []#         while True:#             try:#                 data = pickle.load(fp)#                 # 遍历字典#                 for key, value in data.items():#                     ls1 = str(key)#                     if i in ls1:#                         ls.append(value)#                     if j in ls1:#                         ls_.append(value)#             except:#                 break#         return ls, ls_if __name__ == 'main':    main()main()

    python的五大特点是什么

    python的五大特点:1.简单易学,开发程序时,专注的是解决问题,而不是搞明白语言本身。2.面向对象,与其他主要的语言如c++和Java相比, Python以一种非常强大又简单的方式实现面向对象编程。3.可移植性,Python程序无需修改就可以在各种平台上运行。4.解释性,Python语言写的程序不需要编译成二进制代码,可以直接从源代码运行程序。5.开源,Python是 FLOSS(自由/开放源码软件)之一。

    关于基于Python如何制作公交车站查询系统就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

    --结束END--

    本文标题: 基于Python如何制作公交车站查询系统

    本文链接: https://www.lsjlt.com/news/307419.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • 基于Python制作公交车站查询系统
      目录一、设计目的1、教学目的2、教学要求二、需求分析1、问题2、系统3、运行要求三、系统模块设计四、详细设计五、需要设计的函数六、Python源码七、运行效果一、设计目的 1、教学目...
      99+
      2024-04-02
    • 基于Python如何制作公交车站查询系统
      这篇文章给大家介绍基于Python如何制作公交车站查询系统,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、设计目的1、教学目的本课程设计是学生学习完《Python程序设计》课程后,进行的一次全面的综合训练,通过课程设...
      99+
      2023-06-26
    • python基于pyppeteer如何制作PDF文件
      这篇文章主要讲解了“python基于pyppeteer如何制作PDF文件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python基于pyppeteer如何制作PDF文件”吧!Pyppete...
      99+
      2023-06-13
    • 基于javaweb+jsp如何实现企业车辆管理系统
      今天就跟大家聊聊有关基于javaweb+jsp如何实现企业车辆管理系统,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。运行环境Java≥6、Tomcat≥7.0、MySQL≥5.5开发...
      99+
      2023-06-21
    • 基于python制作简易版学生信息管理系统
      目录一、前言二、需求分析三、主函数四、功能菜单五、录入信息六、保存信息七、查找信息八、删除信息九、修改信息十、显示信息十一、按成绩排序十二、统计人数十三、最后记得运行主函数十四、将程...
      99+
      2024-04-02
    • 基于Python+OpenCV如何制作屏幕录制工具
      这篇文章跟大家分析一下“基于Python+OpenCV如何制作屏幕录制工具”。内容详细易懂,对“基于Python+OpenCV如何制作屏幕录制工具”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有所帮助。下面跟着小编...
      99+
      2023-06-26
    • 基于Python如何制作AI聊天软件
      这篇文章主要介绍“基于Python如何制作AI聊天软件”,在日常操作中,相信很多人在基于Python如何制作AI聊天软件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”基于Python如何制作AI聊天软件”的疑...
      99+
      2023-07-02
    • 如何基于python实现银行管理系统
      这篇文章将为大家详细讲解有关如何基于python实现银行管理系统,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;3、网络爬...
      99+
      2023-06-14
    • 基于Python如何实现电影售票系统
      基于Python如何实现电影售票系统,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、系统要求电影售票系统程序,应具备以下几点功能:用户认证系统用户分为用户、管...
      99+
      2023-06-22
    • 基于Python如何实现植物识别小系统
      这篇文章主要介绍了基于Python如何实现植物识别小系统,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。正文1)环境安装本文用到的环境:Python3.7  Pych...
      99+
      2023-06-22
    • 如何在Windows系统中快速查询PHP数组操作?
      在Windows系统中,查询PHP数组操作是一项非常重要的技能。PHP是一种广泛使用的编程语言,其数组操作非常方便,但有时候我们需要快速查询数组操作相关的信息,以便更高效地使用PHP编程。在本文中,我们将介绍如何在Windows系统中快速查...
      99+
      2023-10-29
      数组 bash windows
    • 如何查询windows操作系统数据库的安装目录ORACLE_HOME
      这篇文章主要为大家展示了“如何查询windows操作系统数据库的安装目录ORACLE_HOME”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何查询window...
      99+
      2024-04-02
    • 基金业绩查询系统如何利用科技提升投资效率
      在日益激烈的金融市场中,投资者如何在众多的基金产品中选择合适的投资标的,已成为困扰他们的一个大问题。为了解决这一问题,越来越多的金融机构开始使用基金业绩查询系统,帮助投资者在众多基金中筛选出业绩表现优秀的基金。本文将详细介绍基金业绩查询系统...
      99+
      2023-11-17
      查询系统 业绩 效率
    • 基于微信公司企业小程序系统毕业设计作品成品(8)中期检查报告表模版
      博主介绍:《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,免费 项目配有对应开发文档、开题报告...
      99+
      2023-09-20
      微信 小程序 课程设计 企业公司小程序毕设作品
    • 如何做一个基于微信在线教育学习小程序系统毕业设计毕设作品
      分析架构 我们开发系统,常规有两个架构,一个BS架构(浏览器/服务器模式),一个CS(客户端/服务器端模式);我们微信小程序项目属于CS架构,C客户端是我们要开发的小程序,S端是我们要开发的后台管理系统;CS架构如图 分析系统功能  ...
      99+
      2023-09-15
      在线教育学习小程序
    • 你知道如何将ASP应用程序部署到基于Unix操作系统的Apache服务器上吗?
      在现今的网络时代,应用程序的开发已经成为了一项必不可少的技能。然而,不同的操作系统和服务器可能会对应不同的应用程序开发方式和部署方式,因此,学习如何将ASP应用程序部署到基于Unix操作系统的Apache服务器上是一个非常有用的技能。 AS...
      99+
      2023-10-03
      bash apache unix
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作