数据结构课设城市公交查询系统(C语言) 您所在的位置:网站首页 571路公交车线路查询表 数据结构课设城市公交查询系统(C语言)

数据结构课设城市公交查询系统(C语言)

2024-07-09 12:18| 来源: 网络整理| 查看: 265

公交线路图 一. 设计要求:

1、需要用到多个文件,例如文本文件,文件名stations.txt,保存站点信息,格式可以自行设计,例如:编号 站名。等等

2、设计公交线路所需的存储结构,将文件中的数据读入内存。

3、提供用户操作的菜单和界面实现添加、删除、修改公交、站点、线路信息,注意数据间的关联性。

4、将修改后的信息保存回文件。

5、其他查询操作参见教程。

二. 设计内容:

1、 数据格式**:**

在这个课设中我设计的是两个文件,一个文件用来存放公交车站名的“stations.txt”,一个用来存放公交线路“bus.txt”。

(1)**“stations.txt”**文件的第一行,记录的为公交车站的数量,依次往下,为所存的公交车站名,其格式为:

① 公交车站数

② 公交车站名

③ 公交车站名

④ 公交车站名 在这里插入图片描述

(2)**“bus.txt****”**文件的第一行,记录的为公交车每个站之间有几条线路,就是一站算一条线路(例如:公交车从仙来广场到庆丰苑是走了一条线路,从仙来广场到金三角,就要先从仙来广场到庆丰苑,再从庆丰苑到金三角,这样看,是走了两条线路) 第二行开始记录公交名,公交车的一条线路的起点和终点,还有两站之间的距离,其格式为:

① 公交线路数量

② 公交车名 起始站 终点站 距离

③ 公交车名 起始站 终点站 距离

④ 公交车名 起始站 终点站 距离

………………………… 例如: 公交车名 起始站 终点站 距离 105 图书馆 人民政府 432 105 人民政府 万达广场 856 这就说明105路公交车,会经过图书馆–>人民广场–>万达广场。

2、 数据结构**:**

将文件中的数据读入内存,建立图的存储结构,,以下为存储结构的C语言定义:

typedef int StationsType;//StationsType 定义整形的变量

typedef struct TrafficNode

{

char name[MAX_STRING_NUM]; //公交号

int EndCity; //该有向边指向的顶点在数组中的位置,即该公交站编号

int Number ; //用于记录每站之间的距离

} TrafficNodeDat;

typedef struct VNode

{

StationsType stations;

int BusNum; // 标记下面 Bus 数组里元素个数

TrafficNodeDat Bus[MAX_TRAFFIC_NUM]; // 数组成员为结构体,记录了到达的终点站、距离、和公交号

} VNodeDat;

VNodeDat AdjList[MAX_VERTEX_NUM];

3、 查询公交线路:

当输入公交号后,就会输出公交线路的信息如下图: 在这里插入图片描述

4、 添加公交站:

输入公交站名存储成功后会输出Save OK [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jKpqZTno-1590671092779)(file:///C:/USERS~1/AppData/Local/Temp/msohtmlclip1/01/clip_image008.jpg)]

5、 删除公交站:

输入公交需要删除的公交站成功会提醒: 在这里插入图片描述

6、 添加公交线路:

输入所规定的起始,终点站,公交号和两站之间的距离: 在这里插入图片描述

7、 删除公交:

输入公交号删除成功则输出OK: 在这里插入图片描述

二. 系统子程序及功能设计**:**

int ShowMenu()

int SeekStations(char *name) // 寻找公交站

int SearchBus(char *name)// 查询公交站

int InsertStations(char *Name) // 添加公交站

int DelStations(char *Name) // 删除公交站

int SaveSysInfo() // 向程序输入数据

int InsertBus(char *bus, char *StartCity, char *EndStations, int number)//添加公交

int DelPath(char *name)// 删除公交

int InitSysData();

三.实验总结:

1. 在做课设的时候,起初我设计的是一个公交一次性输入许多路线,这样也十分的符合公交的特性,但是在做到最优路径的是吧,出现了大量的bug,于是我进行了查阅资料,于是我就改成了现在的这样,两站两站的输入信息和存储信息,只要起始站和终点站,这样设计。虽然这样麻烦许多,但是在设计的时候自己对于这种方法掌握的更快一点,于是终于设计出来了这个课设。

2. 这个课设还是有很大的完善空间,在继续最优路径搜索的时候,在某些情况下会出现无法输出的情况,在进行了测试后,发现对于一些不存在的公交站查询的时候,不会报错,同时在输出的时候,不是很人性化,同时该程序的一些地方写的代码十分的繁琐,从而影响了运行速度。这些都是在之后的学习中,需要改进和完善的地方。

四.程序代码** #include #include #include #define ERR 0 #define OK 1 #define Dij_MAXN 100 #define MAX_VERTEX_NUM 100 #define MAX_STRING_NUM 100 #define MAX_TRAFFIC_NUM 100 const char StationsFile[] = "stations.txt"; const char BusFile[] = "bus.txt"; typedef int StationsType;//StationsType 定义整形的变量 typedef struct TrafficNode { char name[MAX_STRING_NUM]; // 公交号 //MAX_STRING_NUM 最为 10 int EndStations; // 该有向边指向的顶点在数组中的位置,即该公交站编号 int Number ; // 用于记录每站之间的距离 } TrafficNodeDat; typedef struct VNode { StationsType stations; int BusNum; // 标记下面 Bus 数组里元素个数 TrafficNodeDat Bus[MAX_TRAFFIC_NUM]; // 数组成员为结构体,记录了到达的终点站、距离0、和公交号 } VNodeDat; VNodeDat AdjList[MAX_VERTEX_NUM]; char StationsName[MAX_VERTEX_NUM][MAX_STRING_NUM]; // 公交站名,采用第一下标为该城市在本程序中的编号 int StationsNum; // 公交站数目 int ShowMenu() { printf("\n|****************** 欢迎使用城市交通系统 *******|\n"); printf("\n|------------------1: 添加公交站 --------------|"); printf("\n|------------------2: 删除公交线路 ------------|"); printf("\n|------------------3: 添加交通路线 ------------|"); printf("\n|------------------4: 删除公交 ----------------|"); printf("\n|------------------5: 查询最短的路线 ----------|"); printf("\n|------------------6: 查询公交线路 ------------|"); printf("\n|------------------7: 清除屏幕 ----------------|"); printf("\n|------------------0: 退出 --------------------|"); printf("\n|***********************************************|\n"); printf("\n 请输入你的选择 :"); return 0; } int SeekStations(char *name) // 寻找公交站 { int i; for (i = 0; i


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有