王昊 1 year ago
parent 176564b9f6
commit 1e67d94fdd

@ -5,7 +5,7 @@
##项目简介 ##项目简介
这段代码实现了一个简单的上海地铁路线查询系统包括初始化地铁站点信息、创建邻接表和邻接矩阵、使用Dijkstra算法查询最短路径等功能。 这段代码是一个模拟上海地铁交通服务平台的程序,提供了最佳出行线路推荐和出行费用预估的功能。程序首先初始化地铁站点的数据,然后根据用户的输入,计算出最佳的出行线路和预估的费用。
下载地址https://bdgit.educoder.net/mac76tib2/ddd.git 下载地址https://bdgit.educoder.net/mac76tib2/ddd.git
项目开发过程中采用 Kanban看板进行任务管理和分工协作并使用 Git 对程序代码和文档进行版本管理。任务分工情况如下: 项目开发过程中采用 Kanban看板进行任务管理和分工协作并使用 Git 对程序代码和文档进行版本管理。任务分工情况如下:
@ -29,53 +29,73 @@
(3)通过人机交互的方式输入起点和终点站名称,系统给出路径长度最短的导航路径,并给出换乘方案。 (3)通过人机交互的方式输入起点和终点站名称,系统给出路径长度最短的导航路径,并给出换乘方案。
(4)能够读取不同的地铁导航地图进行功能测试。 (4)能够读取不同的地铁导航地图进行功能测试。
##C1定义结构体 ##C1定义结构体、创建文件
``` ```
代码:#include <stdio.h> 代码:#include <stdio.h>
#include <string.h> #include <string.h>
#include <stdlib.h> #include <stdlib.h>
#include <windows.h>
#define MAX 1000 #define MAX 1000
typedef struct node { typedef struct node {
char a[100]; char a[100];
struct node* next; struct node* next;
}edgenode; }edgenode;
typedef struct {
struct vexnode {
char name[100]; char name[100];
struct node* firstnode; edgenode* firstnode;
}; }vexnode;
typedef struct {
struct list { vexnode adjust[7];
struct vexnode adjust[6];
int e, n; 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包含了地铁站点信息和邻接表。 1.首先定义了几个结构体包括表示地铁线路的节点edgenode、地铁站点vexnode和线路列表list。然后定义了一个全局变量nm它是一个线路列表。
2. 使用creatnode()函数对节点进行初始化,包括边数、站点数和站点名称。 2. createfile()函数是用于创建一个名为"address.txt"的文件,并向其中输入地铁站点的名称。
3. 使用createlist()函数创建邻接表,包括每个站点的邻接表信息。 3. creatnode()函数是用于初始化地铁站点的数据,它从"address.txt"文件中读取地铁站点的名称并将这些数据存储在nm.adjust数组中。
4. 使用aaa()函数初始化邻接矩阵,将所有元素赋值为最大值。 4. printff()函数是用于打印地铁站点的名称。
5. 使用createjz()函数创建邻接矩阵将有边相连的站点间的距离赋值为1。 5. createlist()函数是用于创建地铁线路的邻接表,描述了每个地铁站点与其相邻站点的关系。
6. 使用print()函数打印出每个站点的邻接表信息。 6. aaa()函数和createjz()函数是用于创建邻接矩阵,描述了地铁站点之间的连接关系。
7. 使用Dijkstra()函数查询最短路径,输入起点和终点站点编号,输出最短路径和路径长度。 7. print()函数是用于打印地铁线路的邻接表。
8. 主函数中实现了一个简单的用户交互界面,让用户选择查询最短路径或退出系统。 8. Dijkstra()函数是用于计算最佳出行线路和预估费用它使用了Dijkstra算法。
9. main()函数是程序的入口点,它首先初始化地铁站点的数据,然后进入一个循环,等待用户的输入。用户可以选择最佳出行线路推荐或出行费用预估,或者退出系统。
##详细设计 ##详细设计

@ -0,0 +1,40 @@
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#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);
}
Loading…
Cancel
Save