IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 交通咨询系统(数据结构课设) -> 正文阅读

[数据结构与算法]交通咨询系统(数据结构课设)

目录

前言

选题题目

系统展示

写代码过程中出现的bug

我认为的存在的无关紧要的bug

源代码

参考文献

结语

前言

????????这学期做了一个数据结构的课设, 我的选题是交通咨询系统。硬性要求是组队完成,但是其实整个系统基本都是我写的,为了队友,把算法部分的分给他了。

????????然后呢,因为老师发的课设模板比较正规,所以我课设报告写了很多废话(选题分析、数据结构设计、算法分析),所以就不能直接复制课设报告给大家了。我就单独把系统展示的部分复制出来,详细的解释都在源代码里面了。

最后,其实界面部分我基本是直接沿用我之前写C语言课设的时候的模板,就是进行了一些优化吧。

选题题目

交通咨询系统设计(最短路径问题)

【问题描述】在交通网络非常发达、交通工具和交通方式不断更新的今天,人们在出差、旅游或做其他出行时,不仅关心节省交通费用,而且对里程所需时间等问题也感兴趣。对于这样一个人们关心的问题,可用一个图结构来表示交通网络系统,利用计算机建立一个交通咨询系统。图中顶点表示城市,边表示城市之间的交通关系。这个交通系统可以回答旅客提出的各种问题。例如,一位旅客要从A城到B城,他希望选择一条途中中转次数最少的路线。假设图中每一站都需要换车,那么这个问题反映到图上就是要找一条从顶点A到B所含边的数目最少的路径。我们只需要从顶点A出发对图作广度优先搜索,一旦遇到顶点B就终止。由此所得广度优先生成树上,从根顶点A到顶点B的路径就是中转次数最少的路径。路径上A与B之间的顶点就是路径的中转站数,但只是一类最简单的图的最短路径问题。

设计要求

??? 设计一个交通咨询系统,能让旅客咨询从任一个城市顶点到另一城市顶点之间的最短路径(里程)或最低花费或最少时间等问题。对于不同咨询要求,可输入城市间的路程或所需时间或所需费用。

??? 该设计共分三个部分,一是建立交通网络图的存储结构;二是解决单源最短路径问题;最后再实现两个城市顶点之间的最短路径问题。

【我的分析】:
? ? ? ? 使用图的邻接表来实现就好,算法用Floyd算法就好,一举解决单源和任意两城市的距离,权重又三个。

系统展示

执行代码后,会直接进入主菜单界面,不需要进行登录。

测试功能1,查询城市路线:

如果路线不存在会进行显示:

测试功能二,查看所有路线:

因为我们找的路线数据比较多,且没有实现换页数的功能,所以显示比较满。

测试功能3,查询可到达城市:

测试功能四,进入管理员界面:

在第一次进入管理员界面的时候,因为文件中没有保存有管理员账号,所以我们需要先进行注册才能进入管理员界面,而且,注册好了账号之后还是需要进行登录而不是直接就可以进入管理员界面了。当然,文件中有了管理员账号之后,就不会再让你注册了,而是直接登录。

(注册密码后还需要登录)成功进入管理员界面:

测试管理员功能1,修改密码:

先输入7查看管理员账号。

在文件中:

一般来说,任意一名管理员是不能查看管理员的用户名和账号密码的,但是为了系统方便进行测试和更加友好,我们就设置了查看管理员的功能。

然后我们进行密码修改:

再次进行查看:

在文件中的数据也已经被修改了:

可以看到,密码已经成功进行修改了。

然后测试管理员功能二,修改/更新路线:

先输入4查看路线中的数据:

然后我们修改第一条路线的数据:

进行查看:

可以看到,第一条路线已经被成功修改了。

但是,如果输入的城市名称在文件里找不到,系统就会阻止进行路线的修改:

测试管理员功能三,添加路线:

对路线进行查看:

可以看到,路线的第六行已经显示路新添加的路线,说明路线添加成功。

测试管理员功能六,注册管理员账号:

再进行查看,说明注册成功。

我们对管理员的人数有限制,不能超过十个人,当管理员已经满十个人时,无法进行管理员账号注册:

测试管理员功能八,注册管理员账号:

进行查看:

说明账号已经成功的注销了。

测试管理员功能九,修改管理员用户名:

查看:
?

测试管理员功能五,退出管理员界面:

退出管理员界面时会直接return出管理员界面函数,然后重新进入管理员界面(就像递归返回上一层一样)。

最后测试主菜单界面的功能0,退出咨询系统:

写代码过程中出现的bug

? ? ? ? 1、因为插入邻接表的时候使用头插法,导致每次保存文件路线会倒置,改为尾插法插入后解决。

? ? ? ? 2、其它都是一些调试过程中出现的bug。(竟然找不到可以说的bug了,确实,写的过程感觉挺顺的,可能是因为有经验了)

我认为的存在的无关紧要的bug

? ? ? ? 1、没有对管理员用户名、账号、密码进行具体的限制。

? ? ? ? 2、没有对图中的城市名称、三个权重进行具体的限制。(爆int)

? ? ? ? 显然,这些bug基本没必要去解决,我也是比较懒啦,一般哪有路线的路费、里程和时间会爆int的。

源代码

????????点击这里获取源代码(实际就是另一篇博客,免费的)

参考文献

[1]陈越主编;何钦铭等编著.数据结构[M].高等教育出版社(第二版),2016.6

[2]放码过来呀!!!.C语言文件读写操作(详解).

C语言文件读写操作(详解)_放码过来呀!!!的博客-CSDN博客_c语言文件读写.2022.5.4.

[3]HawaiiHello.C语言隐藏密码效果实现.

C语言隐藏密码效果实现_HawaiiHello的博客-CSDN博客_c语言如何实现密码的隐藏.2022.5.4

[4]Milo Yip.如何用C语言画如何用 C 语言画「心形」?.

如何用 C 语言画「心形」? - 知乎 (zhihu.com).2022.5.4

[5]Coder802.C语言获取当前日期及时间.

C语言获取当前的日期及时间_Coder802的博客-CSDN博客_c获取当前日期时间.2022.5.4

(参考了自己写的博客算不算呢。。。。。)

结语

? ? ? ? 嗯,因为没多少时间,现在已经是期末了,为了不挂科我只能快速的写完,然后去复习了。源代码是免费提供的哦,所以能不能求一个点赞呢[可怜.jpg]

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-06-08 19:12:49  更:2022-06-08 19:13:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/22 6:02:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码