From 1e67d94fddfb5feacbbccbbc8929cd83e7856007 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E6=98=8A?= <956269333@qq.com> Date: Sat, 8 Jul 2023 19:46:45 +0800 Subject: [PATCH] =?UTF-8?q?=E7=8E=8B=E6=98=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 72 +++++++++++++++++++++++++++++++++++-------------------- xitong.c | 40 +++++++++++++++++++++++++++++++ 2 files changed, 86 insertions(+), 26 deletions(-) create mode 100644 xitong.c diff --git a/README.md b/README.md index 14354ab..4d86dd3 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ ##项目简介 -这段代码实现了一个简单的上海地铁路线查询系统,包括初始化地铁站点信息、创建邻接表和邻接矩阵、使用Dijkstra算法查询最短路径等功能。 +这段代码是一个模拟上海地铁交通服务平台的程序,提供了最佳出行线路推荐和出行费用预估的功能。程序首先初始化地铁站点的数据,然后根据用户的输入,计算出最佳的出行线路和预估的费用。 下载地址:https://bdgit.educoder.net/mac76tib2/ddd.git 项目开发过程中采用 Kanban(看板)进行任务管理和分工协作,并使用 Git 对程序代码和文档进行版本管理。任务分工情况如下: @@ -29,53 +29,73 @@ (3)通过人机交互的方式输入起点和终点站名称,系统给出路径长度最短的导航路径,并给出换乘方案。 (4)能够读取不同的地铁导航地图进行功能测试。 -##C1:定义结构体 +##C1:定义结构体、创建文件 ``` 代码:#include #include #include -#include - -#define MAX 1000 - -typedef struct node { + #define MAX 1000 + typedef struct node { char a[100]; struct node* next; }edgenode; - -struct vexnode { + typedef struct { char name[100]; - struct node* firstnode; -}; - -struct list { - struct vexnode adjust[6]; + edgenode* firstnode; +}vexnode; + typedef struct { + vexnode adjust[7]; int e, n; -}; +}list; + list nm; + + char position[100]="address.txt"; + + typedef struct { + char s[100]; + }filed; + filed fi[100]; + void createfile(){ + int i; + FILE* op; + op=fopen(position,"ab"); + if(op==NULL){ + printf("该文件未找到"); + return ; + } + char strs[100]; + for(i=0;i<7;i++){ + printf("请输入:\n"); + scanf("%s",strs); + fprintf(op,"%s\n",strs); + } + fclose(op); + } ``` -##C2:地铁网络的构建 +##C2:初始化节点以及打印节点名称并通过邻接表和邻接矩阵来表示图的结构{41-151} ``` 代码: ``` -##C3:邻接表和邻接矩阵之间的转换 +##C3:创建邻接矩阵、打印邻接矩阵和执行Dijkstra算法{152-230} ``` 代码: ``` -##C4:计算并输出最短路径 +##C4:打印菜单,实现功能{231-312} ``` 代码: ``` ##概要设计 - 1. 定义了一个结构体list,包含了地铁站点信息和邻接表。 - 2. 使用creatnode()函数对节点进行初始化,包括边数、站点数和站点名称。 - 3. 使用createlist()函数创建邻接表,包括每个站点的邻接表信息。 - 4. 使用aaa()函数初始化邻接矩阵,将所有元素赋值为最大值。 - 5. 使用createjz()函数创建邻接矩阵,将有边相连的站点间的距离赋值为1。 - 6. 使用print()函数打印出每个站点的邻接表信息。 - 7. 使用Dijkstra()函数查询最短路径,输入起点和终点站点编号,输出最短路径和路径长度。 - 8. 主函数中实现了一个简单的用户交互界面,让用户选择查询最短路径或退出系统。 + 1.首先定义了几个结构体,包括表示地铁线路的节点(edgenode)、地铁站点(vexnode)和线路列表(list)。然后定义了一个全局变量nm,它是一个线路列表。 + 2. createfile()函数是用于创建一个名为"address.txt"的文件,并向其中输入地铁站点的名称。 + 3. creatnode()函数是用于初始化地铁站点的数据,它从"address.txt"文件中读取地铁站点的名称,并将这些数据存储在nm.adjust数组中。 + 4. printff()函数是用于打印地铁站点的名称。 + 5. createlist()函数是用于创建地铁线路的邻接表,描述了每个地铁站点与其相邻站点的关系。 + 6. aaa()函数和createjz()函数是用于创建邻接矩阵,描述了地铁站点之间的连接关系。 + 7. print()函数是用于打印地铁线路的邻接表。 + 8. Dijkstra()函数是用于计算最佳出行线路和预估费用,它使用了Dijkstra算法。 + 9. main()函数是程序的入口点,它首先初始化地铁站点的数据,然后进入一个循环,等待用户的输入。用户可以选择最佳出行线路推荐或出行费用预估,或者退出系统。 ##详细设计 diff --git a/xitong.c b/xitong.c new file mode 100644 index 0000000..8011a5f --- /dev/null +++ b/xitong.c @@ -0,0 +1,40 @@ +#include +#include +#include + #define MAX 1000 + typedef struct node { + char a[100]; + struct node* next; +}edgenode; + typedef struct { + char name[100]; + edgenode* firstnode; +}vexnode; + typedef struct { + vexnode adjust[7]; + int e, n; +}list; + list nm; + + char position[100]="address.txt"; + + typedef struct { + char s[100]; + }filed; + filed fi[100]; + void createfile(){ + int i; + FILE* op; + op=fopen(position,"ab"); + if(op==NULL){ + printf("该文件未找到"); + return ; + } + char strs[100]; + for(i=0;i<7;i++){ + printf("请输入:\n"); + scanf("%s",strs); + fprintf(op,"%s\n",strs); + } + fclose(op); + } \ No newline at end of file