交通咨询系统(数据结构课设)

目录

前言

选题题目

系统展示

写代码过程中出现的bug

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

源代码

参考文献

结语

前言

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

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

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

选题题目

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

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

设计要求

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

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

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

系统展示

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

交通咨询系统(数据结构课设)_第1张图片

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

交通咨询系统(数据结构课设)_第2张图片

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

交通咨询系统(数据结构课设)_第3张图片

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

交通咨询系统(数据结构课设)_第4张图片

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

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

交通咨询系统(数据结构课设)_第5张图片

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

交通咨询系统(数据结构课设)_第6张图片

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

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

交通咨询系统(数据结构课设)_第7张图片

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

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

交通咨询系统(数据结构课设)_第8张图片

在文件中:

交通咨询系统(数据结构课设)_第9张图片

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

然后我们进行密码修改:

交通咨询系统(数据结构课设)_第10张图片

再次进行查看:

交通咨询系统(数据结构课设)_第11张图片

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

交通咨询系统(数据结构课设)_第12张图片

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

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

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

交通咨询系统(数据结构课设)_第13张图片

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

交通咨询系统(数据结构课设)_第14张图片

进行查看:

交通咨询系统(数据结构课设)_第15张图片

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

但是,如果输入的城市名称在文件里找不到,系统就会阻止进行路线的修改:交通咨询系统(数据结构课设)_第16张图片

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

交通咨询系统(数据结构课设)_第17张图片

对路线进行查看:

交通咨询系统(数据结构课设)_第18张图片

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

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

交通咨询系统(数据结构课设)_第19张图片

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

交通咨询系统(数据结构课设)_第20张图片

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

交通咨询系统(数据结构课设)_第21张图片

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

交通咨询系统(数据结构课设)_第22张图片

进行查看:

交通咨询系统(数据结构课设)_第23张图片

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

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

交通咨询系统(数据结构课设)_第24张图片

查看:
 交通咨询系统(数据结构课设)_第25张图片

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

交通咨询系统(数据结构课设)_第26张图片

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

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

交通咨询系统(数据结构课设)_第27张图片

写代码过程中出现的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]

你可能感兴趣的:(数据结构)