校园导航系统源代码

合集下载

校园导航系统的两个代码

校园导航系统的两个代码

#1 数据结构实验之校园导游咨询#include<stdlib.h>#include<stdio.h>#include<iostream.h>#include<string.h>#include<math.h>#include "stdio.h"#define null 0#define num 20#define maxdist 10000typedef struct{char data[num];int edges[num][num];}graph;void dijkstra(graph g,int n,int i,int d[num],int p[num]) {int s[num];int mindist,dist;int j,k,u;for(j=0;j<n;j++){d[j]=g.edges[i][j];s[j]=0;if((d[j]<maxdist)&&(d[j]!=0)) p[j]=i;elsep[j]=-1;}s[i]=1;for(j=0;j<n-1;j++){mindist=maxdist;u=i;for(k=0;k<n;k++)if((s[k]==0)&&(d[k]<mindist)) {u=k;mindist=d[k];}s[u]=1;for(k=0;k<n;k++)if(s[k]==0){dist=d[u]+g.edges[u][k];if(dist<d[k]){d[k]=dist;p[k]=u;}}}void opdijk(int v0,int n,int d[],int p[]) {int i,pre;for(i=0;i<n;i++)if(i!=v0){printf("\n%d",i);pre=p[i];while(pre!=-1){printf("<--%d",pre);/****************************/ pre=p[pre]; }if(d[i]==maxdist)printf("<--%d",v0);printf("\tshortestway:%d",d[i]);}}void floyd(graph g,int n,int d[][num],int p[][num]){int i,j,k;for(i=0;i<n;i++)for(j=0;j<n;j++){d[i][j]=g.edges[i][j];if((d[i][j]<maxdist)&&(d[i][j]!=0))p[i][j]=j;elsep[i][j]=-1;}for(i=0;i<n;i++)d[i][i]=0;for(k=0;k<n;k++)for(i=0;i<n;i++)for(j=0;j<n;j++)if(d[i][j]>d[i][k]+d[k][j]){d[i][j]=d[i][k]+d[k][j] ;p[i][j]=p[i][k];}}void opfloy(int n,int d[][num],int path[][num]) {int i,j,next;for(i=0;i<n;i++){printf("\n\nyuandian is v%d:",i);for(j=0;j<n;j++){printf("\nthe shortest way from%dto%dis:\n",i,j);printf("%d",i);next=path[i][j];while(next!=-1){printf("->%d",next);next=path[next][j];}if(d[i][j]==maxdist)printf("<-%d",j);/***************************/ printf("\t%d",d[i][j]);}}}void main(){graph g;int i,j,k,n;int d[num],p[num],sd[num][num],sp[num][num];//clrscr();n=11;g.data[0]='a';g.data[1]='b';g.data[2]='c';g.data[3]='d';g.data[4]='e';g.data[5]='f';g.data[6]='g';g.data[7]='h';g.data[8]='i';g.data[9]='j';g.data[10]='k';for(i=0;i<n;i++)for(j=0;j<n;j++)g.edges[i][j]=maxdist; for(j=0;j<n;j++)g.edges[i][j]=0;g.edges[0][2]=30;g.edges[0][5]=40;g.edges[0][1]=20;g.edges[1][5]=60;g.edges[1][4]=40;g.edges[1][6]=30;g.edges[2][3]=35;g.edges[2][7]=40;g.edges[3][10]=20;g.edges[3][8]=15;g.edges[4][9]=30;g.edges[4][8]=35;g.edges[4][10]=10;g.edges[5][10]=10;g.edges[5][8]=45;g.edges[5][2]=20;g.edges[6][0]=70;g.edges[7][0]=50;g.edges[8][9]=20;g.edges[9][1]=55;g.edges[10][0]=125;//clrscr();printf("\t --WELCOME TOU USE GUIDE!!--\n");printf("\t*****************************************\n");printf("\t* *\n");printf("\t*\tINFOMATION-i\tVISIT-v\t\t*\n\t*\t ABOUT ME-a\tQUIT-q\t\t*\n");printf("\t*\t\t\t\t\t*\n\t*\t\t\t\t\t*\n\t*\t\t\t\t\t*\n\t*\t\t\t\t\t*\n \t*\t\t\t\t\t*\n");printf("\t*****************************************\n");printf("\t*PLEASE ENTER AN ORDER:i? v? m? q?\t*\n");printf("\t*CLEAR THE SCREEN:c\t\t3\t*\n");printf("\t*****************************************\n");do{/*gets(t);*/switch(getchar()){case'a':{printf("NAME:****** CLASS:02computer(3)\n"); printf("PRIVATE EMAIL:devo800@\n"); }break;/* case'g':{FILE *tp;*//* break; */case'i':{FILE *tp;char ch;if((tp=fopen("d:\\info.txt","rt"))==null) {printf("\ncan't open!");getchar();exit(1);}ch=fgetc(tp);while(ch!=EOF){putchar(ch);ch=fgetc(tp);}fclose(tp);}break;case'c':break;case'v':{do{printf("\nINPUT JIE DIAN(0-10):\n"); scanf("%d",&i);{dijkstra(g,n,i,d,p);printf("\n\nyuandian is v%d:",i); opdijk(i,n,d,p);}}while(1);}break;default: exit(1);}}while(getchar());getchar();}*--------------------校园导游系统------------------*/#include<stdio.h>#include<process.h>#define INT_MAX 1000000#define n 10int cost[n][n];//边的值int shortest[n][n];//两点间的最短距离int path[n][n];//经过的景点的;void floyed();int display(int i,int j);void introduce()//introduce of the palce{ int a;printf("Place 1:凯旋门\n"); printf("Place 2:图书馆\n");printf("Place 3:行政楼\n"); printf("Place 4:飞翔门\n"); printf("Place 5:大广场\n");printf("Place 6:ABC教学楼\n"); printf("Place 7:体育场\n"); printf("Place 8:月亮湾\n"); printf("Place 9:English Coner\n"); printf("Place 10:树人广场\n");do{printf("您想查询哪个景点的详细信息?请输入景点编号:");scanf("%d",&a);getchar();switch(a){case 1:。

校园导游图源代码

校园导游图源代码

#include<stdio.h>#include<stdlib.h>#include<dos.h>#include<windows.h>#include<malloc.h>#define Max 100#define N 9//景点个数。

typedef int AdjMatrix[Max][Max];typedef struct{int vexs[Max];AdjMatrix arcs;}Matrix_Graph;//图的矩阵表示法。

void menu();//景点名、操作提示。

void creat(Matrix_Graph *G);//图的建立。

void path(Matrix_Graph G,int s,int e);//两景点之间最短的路径,s表示起始景点,e //最终到达景点。

#define Max 100#define N 9void menu(){printf("1---南大门\n");printf("2---老师办公室\n");printf("3---图书馆\n");printf("4---一号教学楼\n");printf("5---宿舍\n");printf("6---食堂\n");printf("7---北大门\n");printf("8---44号教学楼\n");printf("9---学校广场\n");printf("\n菜单:\n");printf("请选择位置对应数字项目:\n");printf("1----介绍\n");printf("2----路径\n");printf("0----退出\n");}void creat(Matrix_Graph *G){int i,j;for(i=1;i<=N;i++) G->vexs[i]=i;//初始化,0号位不用。

校园导航系统--2012

校园导航系统--2012

一、问题描述及基本要求【问题描述】设计一个校园导游程序,为来访的客人提供各种信息查询服务。

【基本要求】(1)设计你的学校的校园平面图,所含景点不少于10个。

以图中顶点表示学校各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。

(2)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。

(3)为来访客人提供图中任意景点相关信息的查询。

【测试数据】由读者根据实际情况指定。

【实现提示】一般情况下,校园的道路是双向通行的,可设校园平面图是一个无向网。

顶点和边均含有相关信息。

二、数据结构(1)typedef struct VData{int num;char name[20];char jieshao[100];}VData;(2)typedef struct ANode{int adj;}ANode;(3)typedef struct{VData vertex[maxnum];ANode arcs[maxnum][maxnum];int vexnum,arcnum;}AdjM;三、重点设计及代码(1)两个景点之间的全部路径void DFS_path(AdjM g, int m,int n,int k){int s;if(pre[k]==n && k<11){for(s=0;s<k;s++)printf("% ->",g.vertex[pre[s]].name);printf("%s",g.vertex[pre[s]].name); ,此时s==k)printf("\n\n");}else{s=0;while(s<g.vexnum) {if((g.arcs[pre[k]][s].adj<INFINITY) && (visited[s]==0)){visited[s]=1;pre[k+1]=s;DFS_path(g,m,n,k+1);visited[s]=0;}s++;}}}void all_path(AdjM g){int i,m,n;printf("\n\n请输入你要查询的两个景点编号:\n\n");scanf("%d %d",&m,&n);printf("\n\n");pre[0]=m;for(i=0;i<g.vexnum;i++)visited[i]=0;visited[m]=1;DFS_path(g,m,n,0);}(2)任意两个地点之间最短路径算法ShortestPath_Floyd(AdjM *g) {int i,k,j,l,flag=1,path[maxnum][maxnum][maxnum],dist[maxnum][maxnum]; printf("景点编号如下:\n");for(i=0;i<g->vexnum;i++)printf(" %-4d %-15s\n",i,g->vertex[i].name);for(i=0;i<g->vexnum;i++)for(j=0;j<g->vexnum;j++){dist[i][j]=g->arcs[i][j].adj;for(l=0;l<g->vexnum;l++)path[i][j][l]=0;if(dist[i][j]<INFINITY){path[i][j][i]=1;path[i][j][j]=1;}}for(i=0;i<g->vexnum;i++)for(j=0;j<g->vexnum;j++)for(l=0;l<g->vexnum;l++)if(dist[j][i]+dist[i][l]<dist[j][l]){dist[j][l]=dist[j][i]+dist[i][l];for(k=0;k<g->vexnum;k++)path[j][l][k]=path[j][i][k]+path[i][l][k];}while(flag==1){printf("请输入出发地和目的地:");scanf("%d %d",&k,&j);if(k>=0&&k<g->vexnum&&j>=0&&j<g->vexnum) flag=0;}printf("%s",g->vertex[k].name);for(l=0;l<g->vexnum;l++)if(path[k][j][l]&&k!=l&&j!=l)printf(">>>>>%s",g->vertex[l].name);printf(">>>>>%s",g->vertex[j].name);printf(" 总路线长%d米\n",dist[k][j]);}四、源代码#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<string.h>#define maxnum 15#define INFINITY 32768int pre[maxnum];int visited[maxnum];typedef struct VData{int num;char name[20];char jieshao[100];}VData;typedef struct ANode{int adj;}ANode;typedef struct{VData vertex[maxnum];ANode arcs[maxnum][maxnum];int vexnum,arcnum;}AdjM;AdjM CreatUDN(void){int i,j;AdjM g;g.vexnum=14;g.arcnum=30;g.vertex[0].num=0;strcpy(g.vertex[0].name,"学校主大门");strcpy(g.vertex[0].jieshao,"南京信息工程大学主大门气势恢宏,是进入大学的主要通道。

基于QT的校园导航系统的设计与实现

基于QT的校园导航系统的设计与实现

基于QT的校园导航系统的设计与实现摘要本文主要是介绍利用Linux系统和QT制作校园导航系统的设计方法。

使用的操作系统是Linux系统,但是在windows系统下也是可以使用的,所使用的语言是c++,开发工具是QT。

设计的主要目的是能够简单地观看整个校园的风景,使不熟悉校园的人能够知道每个景点的位置、介绍,查看学校的建筑物,包括建筑物的图片以及建筑物的描述。

尤其,这个系统可以找出两个建筑物之间最短的距离,从而迅速地帮助不熟悉校园的人了解整个校园环境,然后找到最好的方法去参观整个校园,除此之外,该系统还可以查询两个景点之间的所有路径,有助于来往者跟好的选择路径。

导航系统是在Linux系统(Linux 下开发,windows下也可以运行)下,先利用QT制作出用户界面,再利用C++编程语言设计出基本功能并与界面相结合。

本文设计的导航系统能够实现以下三大功能:第一,它可以测量两个建筑物之间的距离,同时在查询两个景点之间的路径信息的同时,提供起始点与终点建筑物的图片信息,便于更好的确认;第二,它可以帮助来访者从众多的路线中选出最短的一条,同时会提供两点之间的所有路径;第三,它可以在标志性建筑添加一些描述信息和图片,还可以查看从该建筑物到所有其他建筑物的路径信息。

关键词路径规划;最短路径算法;校园导航;qtThe school navigate system based on Linuxand Qt CreatorAbstractMainly introduced in this paper using the Linux system and QT campus navigation system design method. Use of the operating system is Linux system, but also can use under Windows system, the language is used by c + +, development tools is QT.The main purpose of design is to be able to simply watch the scenery of the whole campus, who is familiar with the campus can know the location of each scenic spot, introduction, see the school buildings, including the structure of the pictures and the description of the building. Especially, the system can find out the shortest distance between two buildings, so as to help people who are not familiar with the campus rapidly understand the campus environment, and find the best way to visit the whole campus, in addition, the system can also query all paths between two spots, help going back and forth with good choice path. Navigation system is in the Linux system (under Linux development, also can run under Windows), the first user produced using QT, using c + + programming language basic design. Function and combining with the interface.The navigation system is designed in this paper can achieve the following three functions: first, it can measure the distance between the two buildings, at the same time the query path information between two sites at the same time, provide the picture of the starting point and end point building information, to facilitate better confirmation; Second, it can help visitors from many choose the shortest route, at the same time will provide all the path between two points; Third, it can add some description in landmark information and pictures, you can also view from the building to all the other path information of the building.Key words path planning; ant algorithm; the campus navigation; qt目录摘要 (i)Abstract .................................................................................................................................... i i 1 绪论 .. (1)1.1概述 (1)1.2研究背景 (1)1.3研究目标 (1)1.4本章小结 (1)2 QT简介 (2)2.1 QT的背景介绍 (2)2.2 QT实现的结构原理 (2)2.3 QT QWidget简介 (3)2.3.1 详细描述 (3)2.3.2 QWidget 事件简介 (4)2.4 QT应用程序的实现 (6)2.5 本章小结 (7)3 需求分析 (8)3.1 需求分析概述 (8)3.2 需求分析的特点 (8)3.3 需求分析需要完成的任务 (8)3.4 实际需求分析 (9)3.4.1 用户需求分析 (9)3.4.2 功能需求分析 (9)3.4.3 实际需求分析 (9)3.4.4 系统性能需求分析 (9)3.5 本章小结 (10)4 总体设计 (11)4.1 总体设计概述 (11)4.2 系统总体设计描述 (11)4.3 系统总体设计模块划分 (11)4.3.1 主要模块划分图 (12)4.3.2 显示系统主界面模块设计 (12)4.3.3 查询导航有关人员模块设计 (13)4.3.4 导航主界面的模块的设计 (13)4.4 本章总结 (14)5 详细设计 (15)5.1 详细设计概述 (15)5.2 校园导航系统主程序流程图 (15)5.3 单源最短路径算法介绍 (16)5.3.1 Dijkstra(迪杰斯特拉)算法 (16)5.3.2 floyed(弗洛耶德)算法 (17)5.4 图中节点与路径的存储 (19)5.4.1 节点的存储 (19)5.4.2 节点间路径长度的存储 (19)5.4.3 整个图的存储 (20)5.5本章总结 (20)6 系统实现及运行结果 (21)6.1 界面设计 (21)6.1.1 主窗体设计 (21)6.1.2 子页面布局设计 (24)6.1.3 更换起始点的实现 (27)6.1.4 点击主页面中的查询路径具体实现 (29)6.1.5 点击查看景点信息描述的实现 (29)6.2 图的创建 (31)6.3 路径查询的具体实现 (31)6.3.1 单源最短路径算法具体实现 (32)6.3.2 所有可达路径的查询的具体实现 (33)6.3.3 每一个点到它可达的所有点的查询的具体实现 (33)6.4 选择系统是否退出的具体实现 (34)6.5 本章小结 (35)7 测试 (36)7.1 测试目标 (36)7.2 测试预期结果 (36)7.3 测试用例的设计 (36)7.4 本章小结 (38)结论 (39)参考文献 (40)致谢 (41)外文原文 (42)中文翻译 (47)1 绪论1.1概述现在科技越来越发达,手机上的软件,电脑上的软件越来越多,所以开发小的程序也越来越有必要。

校园导航-南阳理工学院

校园导航-南阳理工学院
{
int i = 1,flag = 1,len;
char ch;
printf("\t\t\t请输入您要查询的景点序号:\n\n");
printf("\t\t\t1.校门\n\t\t\t2.行政楼\n\t\t\t3.老校区田径场\n\t\t\t4.老图书馆\n\t\t\t5.老校区宿舍\n\t\t\t6.下沉广场\n\t\t\t7.荷花池\n\t\t\t8.梦溪湖\n\t\t\t9.图书馆大楼\n\t\t\t10.体育馆\n");
EdgeType e[MAXedg];
adjmax adj;
char choice = 'x';
while(1)
{
clrscr();
printf("\n\n\t\t\t ***南阳理工学院校园导航***");
printf("\n\t\t--------------------------------------\n\n");
{
case '1':
clrscr();
printf("\t\t ----南阳理工学院校园地图----\n\n");
printf(" \n");
printf(" <10.体育馆>......<9.图书馆大楼> \n");
printf(" . . \n");
printf(" . . \n");
{
int lengh;
int ivex, jvex;
struct Edge *next;
} EdgeType;
typedef struct

数据结构课程设计--校园导航图

数据结构课程设计--校园导航图
extern void Dispath(int dist[],int path[],int s[],int v,int i);
extern void Ppath(int path[],int i,int v);
void Point(MGraph p)
{
int x,y;
printf("请输入您所在的位置及目的地\n");
{8,32767,32767,8,32767,32767,6,32767,32767}};
p.n=M;p.e=N;
int i,j;
for(i=1;i<=M;i++)
for(j=1;j<=M;j++)
p.edges[i][j]=a[i][j];
for(i=1;i<=M;i++)
p.vexs[i].no=i;
typedef struct mgraph
{ int edges[MAXV][MAXV];
int n,e;//元素总个数边数
VertexType vexs[MAXV];
}MGraph;
extern void Check();
extern void Order(MGraph);
extern void Point(MGraph);
extern void Out(int x);
void Order(MGraph p)
{
int a[M+1][M+1];
a[M+1][M+1]={{0,1,2,3,4,5,6,7,8},
{1,0,5,32767,32767,32767,32767,32767,32767},
{2,5,0,10,8,32767,32767,32767,32767},

基于Floyd算法的校园导航系统(Python版)

基于Floyd算法的校园导航系统(Python版)

Tips:这个系统是学校《⼤数据应⽤开发语⾔》的⼤作业,本身想直接在⽹上copy⼀下,结果发现校园导航系统的c/java等版本很多很多,⽽python版本⾮常之少,于是只能⾃⼰写⼀个简单版本的了。

包含三个模块:查询学校地图模块、查询两点最短路径、查询多路径信息。

@TOC前⾔随着社会经济的发展,政府对教育建设的投资越来越⼤。

众多⾼校开始扩建⼯程,校园占地⾯积⼤,楼宇种类多。

体现出国家对教育的重视程度逐年上升,科教兴国战略时⾸当其冲。

⾯对越来越⼤的学校,“迷路”成为众多⾼校新⽣不得⾯临的话题,这便需要校园导航系统来解决师⽣如何查询楼宇、如何快速到达⽬的地问题。

本系统采取基于Floyd算法来完成查询两点最短路径、查询多路径信息等问题。

⼀、题⽬功能描述:设计你的学校的校园景点,所含景点不少于10个.有景点名称,代号,简介等信息; 为来访客⼈提供图中任意景点相关信息的查询.测试数据:由读者根据实际情况指定.⼆、需求分析1.要求(1)⽤Python语⾔实现程序设计;(2)进⾏相关信息处理;(3)画出查询模块的流程图;(4)系统的各个功能模块要求⽤函数的形式实现;(5)界⾯友好(良好的⼈机互交),程序要有注释。

2.运⾏环境(1)MacOS Big Sur 11.6.2系统(2)PyCharm CE 20213.开发语⾔⼤数据开发语⾔(Python)三、概要设计1.系统流程图2.函数流程图四、详细设计1.类的分析与设计定义⼀个Attractions 类来实现输⼊和存放景点编号、名称。

定义⼀个Campus 类来存放校园⽆向图的边和节点,并给各结点定义名称。

定义⼀个Passing 类来存放路径栈、路径数、栈顶数class Attractions : num = 0 #景点编号 name = '' #景点名称class Campus :att = ["","南⼤⻔","⾏政楼","三号楼","四号楼","图书馆","⻄⼤⻔","7号楼","⼋号楼","九号楼","操场","体育馆","⼤操场"] #景点 edges = [[INF ] * M ] * M #边 Nodes_Num = 0edges_Num = 0 #总结点数,总边数class passing():pathStack= [[0]*M] ##路径栈top=0count=0 #栈顶位置,路径数visited= [[False]*M] #判断是否已经经过定义⼀个DIS类来存放path路径和distence⽬的地。

校园导航系统源代码

校园导航系统源代码

校园导航系统源代码(总9页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--#define INFINITY 10000#define MAX_VERTEX_NUM 40#define MAX 40#include<>#include<>#include<>#include<>typedef struct ArCell{int adj; /*路径长度 */}ArCell,AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];typedef struct/*图中顶点表示主要景点,存放景点的编号、名称、简介等信息, */{char name[30];int num;char introduction[100];/*简介*/}infotype;typedef struct{infotype vexs[MAX_VERTEX_NUM];AdjMatrix arcs;int vexnum,arcnum;}MGraph;MGraph b;void cmd(void);MGraph InitGraph(void);void show1();void list();void Menu(void);void ShortestPath_DIJ(MGraph * G);void Search(MGraph *G);int LocateVex(MGraph *G,char* v);/**********主函数************************/void main(void){system("color 5f"); /*修改控制台的颜色信息,改为白字蓝底的模式*/ system("mode con: cols=140 lines=130"); /*设置批处理运行时窗口大小的*/cmd();}/********自定义函数***************//* cmd函数(根据目录选择要进行的项目)*/void cmd(void){char k;b=InitGraph();show1();Menu();while(1){scanf("\n%c",&k);switch(k){case'x':system("cls");show1();Menu();list();ShortestPath_DIJ(&b);printf("---------------------------------欢迎您的使用--------------------------------\n");printf("\n请您继续选择服务:");break;case'y':system("cls");Menu();list();Search(&b);printf("---------------------------------欢迎您的使用--------------------------------\n");printf("\n请您继续选择服务:");break;case'z':system("cls");printf(" ┏━━━━━━━━━━━━━━━━━━━━┓\n");printf(" ┃感谢使用┃\n");printf(" ┃安徽建筑术大学┃\n");printf(" ┃智能导航系统┃\n");printf(" ┗━━━━━━━━━━━━━━━━━━━━┛\n");exit(0);default:printf("输入信息错误!\n请输入x或y或z.\n");break;}}}/* 迪杰斯特拉算法来计算出起点到各个顶点之间的最短路径,v0为起点 */ void ShortestPath_DIJ(MGraph * G){int v,w,i,min,t=0,x,flag=1,v0,v1,have[100],k;int final[20], D[20], p[23][23];while(flag){printf("请输入起始景点编号:\n");scanf("%d",&v0);if(v0<0||v0>G->vexnum)printf("景点编号不存在!");printf("请输入终止景点编号:\n");scanf("%d",&v1);if(v1<0||v1>G->vexnum)printf("景点编号不存在!");if(v0>=0&&v0<G->vexnum&&v1>=0&&v1<G->vexnum)flag=0;}for(v=0;v<G->vexnum;++v){final[v]=0;D[v]=G->arcs[v0][v].adj;for(w=0;w<G->vexnum;++w)p[v][w]=INFINITY;if(D[v]<INFINITY){p[v][v0]=1;p[v][v]=1;}}D[v0]=0;final[v0]=1;have[0]=v0;for(i=1;i<G->vexnum;++i){min=INFINITY;for(w=0;w<G->vexnum;++w)if(!final[w])if(D[w]<min){v=w;min=D[w];}final[v]=1;have[k]=v;k++;for(w=0;w<G->vexnum;++w)if(!final[w]&&((min+(G->arcs[v][w].adj))<D[w])){D[w]=min+G->arcs[v][w].adj;for(x=0;x<G->vexnum;x++)p[w][x]=p[v][x];p[w][w]=1;}}for(i=0;i<G->vexnum;i++){if(p[v1][have[i]]==1){printf("-->%s",G->vexs[have[i]].name);}}if((v1-v0)==1)printf("\n路径长度:%d\n",G->arcs[v0][v1]);else printf("\n路径长度:%d\n",D[v1]);}um,G->vexs[k].name,G->vexs[k].introduction);printf("┗━━┻━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");}择出发点和目的地┃\n");printf(" ┃ y.查看景点信息┃\n");printf(" ┃ z.退出系统┃\n");printf(" ┗━━━━━━━━━━━━━━━━━━━━┛\n");printf("请选择服务");}/*MGraph函数(图的构建)*/MGraph InitGraph(void){MGraph G;int i,j;=17; um=i;strcpy[0].name,"学校北门");strcpy[0].introduction,"学校的正门,气势宏伟");strcpy[1].name,"宿舍楼1");strcpy[1].introduction,"睡觉的地方");strcpy[2].name,"宿舍楼2");strcpy[2].introduction,"睡觉的地方");strcpy[3].name,"宿舍楼15");strcpy[3].introduction,",,,,,,,,");strcpy[4].name,"九月桥");strcpy[4].introduction,"连接生活区和教学区的桥。

校园导航系统的设计与实现

校园导航系统的设计与实现
shu;j++)
for(a=1;a<=jingdiangeshu;a++)
for(b=1;b<=jingdiangeshu;b++)
{
if(changdu[a][c].weight!=10000&&changdu[c][b].weight!=100000)
if(changdu[a][c].weight+changdu[c][b].weight<changdu[a][b].weight)
for(i=1;i<=jingdiangeshu;i++)
fout<<"┃"<<jingdian[i].num<<"┃"<<jingdian[i].name<<" "<<jingdian[i].introduction<<endl;
}
Menu1();
}
/*文件1.in中的数据
1前门面南.对面有小超市
#include <iomanip>
int jingdiangeshu ; ///景点个数<=100,超过100会数组会越界
struct //图中顶点表示主要景点,存放景点的编号、名称、简介等信息,
{
int num; //景点的编号
char name[30]; //名称
char introduction[100] ; //简介
changdu[jingdiangeshu][bianhaos].k=1;
changdu[bianhaos][jingdiangeshu].k=1;

Java实现的具有GUI的校园导航系统

Java实现的具有GUI的校园导航系统

Java实现的具有GUI的校园导航系统0.写在前⾯2020-5-18 更新这个东西已经是两年前的了,现在问我具体细节我也不是很清楚了,⽽且现在review两年前的代码感觉写的好烂。

请⼤家有问题下⾯留⾔,不要加我的企鹅了,正在准备考研,⽐较忙。

⼀点建议:1.当时会的⽐较少,对象实例化对于单纯的数据查询来说效率极低⽽且很蠢,我现在更建议使⽤数据库,或者简单点⽤xml or json都可以,建议想写的好⼀点的同学把⾥⾯的数据读写逻辑改⼀改,⽤数据库不⾹吗2.这个是分客户端服务端的,服务端相当于⽤底层⼿撸了⼀个相当简单的tomcat,所有的界⾯都是要从Client进去的。

先开server再开Client,在注册时以邀请码判断是否为管理员。

以管理员⾝份进⼊client之后再去添加信息。

3.如果注册时报access is denied 在Flie的路径下加⼀层⽂件夹,如下⼩⼀个⽉没更新博客了,主要是临近期末,各科的⼤作业都下来了,今天把⾃⼰奋⽃了⼀个礼拜的校园导航系统贴在上⾯,也算满⾜下⾃⼰的⼩成就感('ᴗ' )و实验要求如下:以我校为例,设计⼀个校园导航系统,主要为来访的客⼈提供信息查询。

系统有两类登陆账号,⼀类是游客,使⽤该系统⽅便校内路线查询;⼀类是管理员,可以使⽤该系统查询校内路线,可对校园景点路线可编辑。

说简单点,就是给定⼀个地图数据,然后地图上有好⼏个点,每个点间有距离,这个程序提供了查询两点间最短路径的功能。

当然,你可以为他增加很多细节,⽐如查看景点信息啊,后台的管理啊等等,这些都是加分项。

⽼师推荐使⽤C,其实题⽬也是这么要求的。

但是使⽤C有⼏个⽐较⿇烦的问题:第⼀,要是只实现基本的功能⽤C的话肯定是没什么问题,但是要是想添枝加叶的话,C的代码就没法看了,写起来⿇烦读起来也难受。

第⼆,地图是有地图数据的,要是⽤C的话⼀般⼈都会直接printf N多⾏的地图吧,这也是⼀个⽐较⿇烦的事⼉。

校园导航系统课程设计

校园导航系统课程设计

好理爭院课程设计课程名称题目名称专业班级数据结构校园导航系统13软件工程二O—五年六月一日目录1弓I言 (5)1.1问题的提出 (5)1.2国内外研究的现状 (5)1.3任务与分析 (5)2程序的主要功能 (6)3程序运行平台 (6)4总体设计 (7)4.1数据结构类型定义 (7)4.2函数声明 (7)4.3创建导航图,即无向图 (8)4.4最短路径导航函数 (8)5程序方法的说明 (9)5.1主菜单 (9)5.2主函数 (10)5.3迪杰斯特拉算法实现 (13)6模块分析 (15)7系统测试 (15)7.1系统登录界面 (15)7.2 功能一:学校简介 (16)7.3功能二:两点最短距离导航 (16)7.4功能三:某点到其他所有点的最短距离 (17)7.5功能四:显示全校地图 (17)7.5退出导航系统 (18)8结论 (19)附录: (19)蚌埠学院计算机科学与技术系本科课程设计成绩评定表附件4分工协作说明(以列表形式具体说明每个人所做的工作);1.1问题的提出设计一个校园导航系统,为来访的客人提供各种信息查询服务。

1.2国内外研究的现状这个问题一直是国内外研究的热门话题。

1.3任务与分析设计你的学校的平面图,至少包括8个以上的场所,每两个场所间可以有不同的路,且路长也可能不同,找出从任意场所到达另一场所的最佳路径(最短路径)2程序的主要功能(1)设计校园平面图,在校园景点选8个左右景点。

以图中顶点表示校园内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等有关信息。

(2)为来访客人提供图中任意景点相关信息的查询。

(3)为来访客人提供任意景点的问路查询,即查询任意两个景点之间的一条最短路径。

3程序运行平台计算机wi ndows7 Virtual C++ 6.0最大顶点个数 最大值4总体设计4.1数据结构类型定义#i nclude<stdio.h> #include <stdlib.h> #i nclude <stri ng.h> #defi ne MAX_V 30 //#define INFINITY 32767 //typedef struct {char* vexs[MAX_V]; // 顶点向量 int arcs[MAX_V][MAX_V];〃 邻接矩阵in t vex nu m,arcnum;〃 图的当前顶点数和弧数}MGraph;4.2函数声明int CreateUDN(MGraph & G); // 创建导航图函数声明extern have[30];void ShortPath(MGraph & G,i nt vO,i nt p[MAX_V][MAX_V],i nt d[]);〃 短路径导航函数声明 int have[30]; void men u(); //导航菜单函数声明void show1(); // 显示全校面貌int jianjie();〃读取文件4.3创建导航图,即无向图int CreateUDN(MGraph &G)函数描述:主要将每个节点进行命名,每个定点到其他所有定点的路径值用邻接矩阵进行存储。

C语言实训—电子地图导航系统源代码

C语言实训—电子地图导航系统源代码

/****************************************************************************** ********* Filename:tagMap_tDo.cpp** Created:2012/6/24** Author:.. 吴昊王洋张伟王伟******************************************************************************** *******/#include<stdio.h>#include<stdlib.h>#include<string.h>#include<malloc.h>/*函数声明部分*/void ma_interf();int ReadFile();void ReadData(FILE *p);void WriteResult (int b[] , int j);void Search();/*宏定义*/#define MCGETCHAR(data) (*((char *)(data)))#define MCGETSHORT(data) ((unsigned short)(( ((unsigned short)(*((char *)(data))))<<8 )|( ((unsigned short)(*((char *)(data)+1)))&0x00ff )))#define MCGETLONG(data) ( ( ((unsigned long)MCGETSHORT((data)))<<16 )|( ((unsigned long)MCGETSHORT((char *)(data)+2))&0x0000ffff ) )#define MCGET3BN(data) ( ( ((unsigned long)MCGETCHAR((data)))<<16 )|( ((unsigned long)MCGETSHORT((char *)(data)+1))&0x0000ffff ) )#define Length 655350int nsizecount = 2 ;/*定义结构体类型及变量*/struct RoadRecord{short ussize;long ullinkId;short usroadnamesize;int usdispclass;int usbrunch;int usroadnameflag;char roadname[20];};struct tagMap_t{char sign_one[2];char linkid[14];char flag[7];char brunch[9];char dispclass[13];char Roadname[30];char sign_two[2];}*s , *ss;int mark_1=0,mark_2=0; //标记程序是否运行读取文件和排序操作void SortData(tagMap_t s[]);void Update (tagMap_t s[]);struct dataOut{ long linkId;int dispclass;int brunch;int roadnameflag;};struct RoadRecord road[Length];struct dataOut data[Length]; /*存储道路信息的数组*//****************************************************************************** ********* Functionname:ReadFile** Function Description:读取二进制文件,并将其解析在文本文档里** Date:2012/6/20******************************************************************************** *******/int ReadFile(){int m;char aclinkId[4] ; /*从二进制文件中读取道路编号*/char acroadnamesize[2] ; /*从二进制文件中读取道路名称数据长度*/char acNodeInfo[4];unsigned short ustotalsize;unsigned long ullinkId;unsigned short usroadnamesize;char actotalsize[2] ; /*从二进制文件中读取道路信息的总体数据长度*/FILE *pfp = fopen( "e:\\电子地图管理系统.dat " , "rb+");FILE *pf2 = fopen( "e:\\解析文件.txt " , "w+");if(pfp == NULL){printf("can not open the 电子地图管理系统.dat file or there is no the file!\n");return 0;}if(pf2 == NULL){printf("can not open the 解析文件.txt file or there is no the file\n");return 0;}printf("\n\n\t\t\t\t文件读取中.....\n");while(fread(actotalsize , sizeof(actotalsize) , 1 , pfp) == 1){fread( aclinkId , sizeof(aclinkId) , 1 , pfp ) ; /*读取占用4字节的linkId 字符*/fread( acroadnamesize , sizeof(acroadnamesize) , 1 , pfp ) ; /*读取占用2字节的roadnamesize字符串*/fread( acNodeInfo , sizeof(acNodeInfo) , 1 , pfp ) ;ustotalsize = MCGETSHORT(actotalsize) ; /*调用宏函数,将字符串信息转化为数值类型*/ullinkId = MCGETLONG(aclinkId) ;usroadnamesize = MCGETSHORT(acroadnamesize) ;/*赋值:将数值信息传到结构体中*/road[nsizecount].ussize = ustotalsize ;road[nsizecount].ullinkId = ullinkId ;road[nsizecount].usroadnamesize= usroadnamesize ;m=(int)acNodeInfo[3]&255;road[nsizecount].usdispclass=m&15;road[nsizecount].usbrunch=(m&112)/16;road[nsizecount].usroadnameflag=(m&128)/128;data[nsizecount].dispclass= road[nsizecount].usdispclass;data[nsizecount].brunch=road[nsizecount].usbrunch;data[nsizecount].roadnameflag=road[nsizecount].usroadnameflag;data[nsizecount].linkId= ullinkId;fread(road[nsizecount].roadname , sizeof(char) , ustotalsize - 12 , pfp ) ; /*从文件中读取道路名称*/fprintf(pf2 , "#\t");fprintf(pf2 , "LinkID=");fprintf(pf2 , "%d\t" , data[nsizecount].linkId);fprintf(pf2 , "flag=");fprintf(pf2 , "%d\t" , data[nsizecount].roadnameflag);fprintf(pf2 , "brunch=");fprintf(pf2 , "%d\t" , data[nsizecount].brunch);fprintf(pf2 , "dispclass=");fprintf(pf2 , "%d\t" , data[nsizecount].dispclass);fprintf(pf2 , "Roadname=1=");fprintf(pf2 , "%s\t" , road[nsizecount].roadname+4);fprintf(pf2 , "#");fprintf(pf2 , " \n");nsizecount++;}fclose(pfp);fclose(pf2);printf("\n\t\t\t\t 文件读取成功\n");return 0;}/****************************************************************************** ********* Functionname:Search** Function Description:检索信息部分,可按不同的类型进行检索** Date:2012/6/20******************************************************************************** *******/void Search(){int select , i=0 , j=0 , *b , c=0 , f; //select 标记选择需要运行的分支i 循环控制j标记检索到信息的条数//b 数组指针用来存放检索到的信息的下标c 用来存放数组b的下标 f 标记数组b 的值char sss[20];printf("\n\n\t请输入检索方式:\n\n\t\t1:指定linkID 检索\n\n\t\t2:指定交叉link列表示class番号检索\n\n\t\t3:指定查找岔路数检索\n\n\t\t4:指定道路名称检索\n\n\t\t0:返回\n\n\t\t请选择:");scanf("%d" , &select);system("cls");printf("\n\n*****--当检索到信息条数超过5条时, 会把检索到的信息存放在searchresult文件中--*****\n\n");printf("\n********--当检索到信息条数未超过5条时, 会把检索到的信息直接显示在屏幕上--********\n\n\n");if(select == 1){char ss_1[14]="LinkID=";printf("\t请输入link的ID:");scanf("%s" , sss);system("cls");strcat(ss_1 , sss); //连接字符串for(i=0; i<(nsizecount-2); i++){if(strcmp(ss_1 , ss[i].linkid) == 0) //比较字符串是否一致{printf("\n\n %s %s %s %s %s %s %s\n\n\n" , s[i].sign_one , ss[i].linkid , ss[i].flag , ss[i].brunch , \ss[i].dispclass , ss[i].Roadname , s[i].sign_two);j++;}}if(j == 0){printf("\n\n\t\t\t\t没有匹配结果\n\n\t\t\t 请重新选择检索方式\n");Search();}}else if(select == 2){char ss_1[14]="dispclass=";printf("\t请输入交叉link列表示class番号:");scanf("%s" , sss);system("cls");strcat(ss_1 , sss); //连接字符串for(i=0; i<(nsizecount-2); i++){if(strcmp(ss_1 , ss[i].dispclass) == 0) //比较字符串是否一致{j++;}}b=(int *)malloc(sizeof(int)*j); //动态申请数组b的存储空间for(i=0; i<(nsizecount-2); i++){if(strcmp(ss_1 , ss[i].dispclass) == 0) //比较字符串是否一致{b[c]=i;c++;}}if(j == 0){printf("\n\n\t\t\t\t没有匹配结果\n\n\t\t\t 请重新选择检索方式\n");Search();}else if(j>5){WriteResult(b , j);}else if (j<=5) //判断检索到得条数是否超过5条{printf("\n\n");for(i=0; i<j; i++){f=b[i];printf(" %s %s %s %s %s %s %s\n" , s[f].sign_one , ss[f].linkid , ss[f].flag , ss[f].brunch , \ss[f].dispclass , ss[f].Roadname , s[f].sign_two);}printf("\n\n");}free(b);}else if(select == 3){char ss_1[14]="brunch=";printf("\t请输入岔路数:");scanf("%s" , sss);system("cls");strcat(ss_1 , sss); //连接字符串for(i=0; i<(nsizecount-2); i++){if(strcmp(ss_1 , ss[i].brunch) == 0) //比较字符串是否一致{j++;}}b=(int *)malloc(sizeof(int)*j); //动态申请数组b 的存储空间for(i=0; i<(nsizecount-2); i++){if(strcmp(ss_1 , ss[i].brunch) == 0) //比较字符串是否一致{b[c]=i;c++;}}if(j == 0){printf("\n\n\t\t\t\t没有匹配结果\n\n\t\t\t 请重新选择检索方式\n");Search();}else if(j>5)WriteResult(b , j);}else if (j<=5) //判断检索到得条数是否超过5条{printf("\n\n");for(i=0; i<j; i++){f=b[i];printf(" %s %s %s %s %s %s %s\n" , s[f].sign_one , ss[f].linkid , ss[f].flag , ss[f].brunch , \ss[f].dispclass , ss[f].Roadname , s[f].sign_two);}printf("\n\n");}free(b);}else if(select == 4){char ss_1[14]="Roadname=1=";printf("\t请输入道路名称:");scanf("%s" , sss);system("cls");strcat(ss_1 , sss); //连接字符串for(i=0; i<(nsizecount-2); i++){if(strcmp(ss_1 , ss[i].Roadname) == 0) //比较字符串是否一致{j++;}}b=(int *)malloc(sizeof(int)*j); //动态申请数组b 的存储空间for(i=0; i<(nsizecount-2); i++){if(strcmp(ss_1 , ss[i].Roadname) == 0) //比较字符串是否一致{b[c]=i;c++;}if(j == 0){printf("\n\n\t\t\t\t没有匹配结果\n\n\t\t\t 请重新选择检索方式\n");Search();}else if(j>5) //判断检索到得条数是否超过5条{WriteResult(b , j);}else if (j<=5){printf("\n\n");for(i=0; i<j; i++){f=b[i];printf(" %s %s %s %s %s %s %s\n" , s[f].sign_one , ss[f].linkid , ss[f].flag , ss[f].brunch , \ss[f].dispclass , ss[f].Roadname , s[f].sign_two);}printf("\n\n");}free(b);}else if(select == 0){system("cls");ma_interf();}else // 输入不在0到4之间给出提示信息重新返回检索函数{system("cls");printf("\n\n\t\t输入信息错误,请重新选择检索方式\n\n");Search();}ma_interf(); // 执行结束返回主界面}/*************************************************************************************** Functionname: WriteResult** Function Description:检索信息,当超过5条时,就将信息写入一个文档中** Date:2012/6/21******************************************************************************** *******/void WriteResult (int b[] , int j){FILE *qq;if((qq=fopen("e:\\searchresult.txt" , "w")) == NULL) //判断文件是否创建成功{printf("创建文件失败\n");exit(0);}int i=0 , f; // i 为循环控制变量 f 记录传入数组在不同的i下b[i] 的值printf("\n\n\t\t\t检索到的信息超过--5--条\n\n\n\t\t检索到的信息写入searchresult文件中……\n");for(i=0; i<j; i++){f=b[i];fprintf(qq , "#\t");fprintf(qq , "%s\t" , ss[f].linkid); // 检索到的道路信息写入文件中fprintf(qq , "%s\t" , ss[f].flag); // 检索到的道路信息写入文件中fprintf(qq , "%s\t" , ss[f].brunch); // 检索到的道路信息写入文件中fprintf(qq , "%s\t" , ss[f].dispclass); // 检索到的道路信息写入文件中fprintf(qq , "%s\t" , ss[f].Roadname); // 检索到的道路信息写入文件中fprintf(qq , "#");fprintf(qq , "\n");}fclose(qq); //关闭指针qqprintf("\n\n\t\t检索到的信息写入searchresult文件中成功\n\n\n");}void ma_interf(){int select; //select 控制在主界面是选择需要执行的函数FILE *p; //创建解析文件的文件指针printf("/********************************--Welcome--************************** ********/\n");printf("/***\t\t\t\t\t\t\t\t\t ***/\n");printf("/***\t\t\t电子地图信息统计系统\t\t\t\t ***/\n");printf("/***\t\t\t\t\t\t\t\t\t ***/\n");printf("/***\t\t\t\t\t\t王伟.. 吴昊张伟王洋***/\n");printf("/***\t\t\t\t\t\t\t2012年6月18日\t ***/\n");printf("/******************************************************************** ***********/\n\n");printf("请选择服务的种类:\n");printf("\t1:读取文件(e:电子地图管理系统GTBL.dat)\n\t2:排序并输出结果\n\t3:检索\n\t4:更新\n\t0:退出\n\t请选择:");scanf("%d" , &select);system("cls");switch(select){case 1 :ReadFile();s=(struct tagMap_t *)malloc(sizeof(struct tagMap_t)*(nsizecount-2));//动态申请结构体s的内存空间ss=(struct tagMap_t *)malloc(sizeof(struct tagMap_t)*(nsizecount-2));//动态申请结构体ss的内存空间p=fopen("e:\\解析文件.txt" , "r");mark_1++; //标记是否执行读取文件ReadData(p);break;case 2 :if(mark_1!=1){printf("\n\n\t请在进行排序前先选择-1-进行读取文件,否则无数据进行排序\n\n");ma_interf();}else if(mark_1==1){mark_2++; //标记是否执行排序操作SortData(s);}break;case 3 :if(mark_1==0||mark_2==0) //判断是否执行读取文件和排序道路信息{printf("\n\n\t\t请在进行-检索-前先选择-1--2-进行读取文件和排序操作\n\n");printf("\t\t 否则无数据进行检索或检索到的数据未排序\n\n");ma_interf();}else{Search();}break;case 4 :if(mark_1==0||mark_2==0) //判断是否执行读取文件和排序道路信息{printf("\n\n\t\t请在进行-更新-前先选择-1--2-进行读取文件和排序操作\n\n");printf("\t\t 否则无数据进行更新或更新到得数据未排序\n\n");ma_interf();}else{Update(s);break;}case 0 :if(mark_1!=0) //判断是否打开申请s 和ss 的空间{free(s); //释放s内存free(ss); //释放ss内存}exit(0);break;default:system("cls");printf("\n\n\n\t\t\t输入信息出错,请重新选择服务种类:\n\n\n\n");ma_interf(); //执行结束返回主界面}}/****************************************************************************** ********* Functionname:Judge** Function Description:判断解析出来的文件是否存在** Date:2012/6/20******************************************************************************** *******/int Judge(){FILE *pp;if((pp=fopen("e:\\电子地图管理系统.dat" , "rb")) == NULL) //打开文件并返回pp文件指针判断文件是否存在{system("cls");printf("\n\n\t\t\t\tthe file not exist!\n\n\t\t\t\t 请重新选择服务:\n\n");printf("\n\t请将需要解析的--电子地图管理系统.dat--放入--e:\\根目录下--中\n\n");return 0;}else{return 1;}}/****************************************************************************** ********* Functionname:ReadData** Function Description:将文件信息读取到内存中** Date:2012/6/21******************************************************************************** *******/void ReadData(FILE *p){if((Judge()) == 1) //判断文件Judge 函数的返回值{int i=0; //i 为循环控制变量printf("\n\t\t\t文件信息--------写入内存中……\n");for(i=0;i<(nsizecount-2);i++){fscanf(p , "%s" , s[i].sign_one); //道路信息放入内存中fscanf(p , "%s" , s[i].linkid); //道路信息放入内存中fscanf(p , "%s" , s[i].flag); //道路信息放入内存中fscanf(p , "%s" , s[i].brunch); //道路信息放入内存中fscanf(p , "%s" , s[i].dispclass); //道路信息放入内存中fscanf(p , "%s" , s[i].Roadname); //道路信息放入内存中fscanf(p , "%s" , s[i].sign_two); //道路信息放入内存中}if(s[1].sign_one!="") //判断文件信息是否写入成功printf("\n\t\t\t 文件信息-------写入内存成功\n\n");ma_interf(); //返回主界面}else{ma_interf(); //返回主界面}}/****************************************************************************** ********* Functionname: SortData** Function Description:对读取出来的文件信息进行排序并将排序结果显示在屏幕上** Date:2012/6/21******************************************************************************** *******/void SortData(tagMap_t s[]){int i=0 , k=0 , j=0 , m=0 , n=7;//i k 为循环控制变量n 记录linkid的长度m 标记成功排序的个数char temp[50];printf("\n\n\t\t\t排序中…………请等待!…………\n\n\t\t排序完成后将自动按LinkID 编号由小到大显示所有道路信息\n\n");for(n=8; n<13; n++){for(i=0; i<(nsizecount-2); i++){if((int)strlen(s[i].linkid) == n) // 判断linkid的长度是否为n{k=i; //记录Linkid长度为n时数组s 的下标ij=i; //记录Linkid长度为n时数组s 的下标ifor(k=k+1; k<(nsizecount-2); k++) //继续进行下一次循环{if((int)strlen(s[k].linkid) == n) // 判断linkid的长度是否为n{if(strcmp(s[i].linkid , s[k].linkid)>0) //比较linkid的长度同为n时它们的大小{i=k; //记录下当前检索到最小linkid的s数组的下标}}}strcpy(ss[m].linkid , s[i].linkid); //此时最小linkid 把数组s的信息存放到ss数组中strcpy(ss[m].flag , s[i].flag); //此时最小linkid 把数组s的信息存放到ss数组中strcpy(ss[m].brunch , s[i].brunch); //此时最小linkid 把数组s的信息存放到ss数组中strcpy(ss[m].dispclass , s[i].dispclass); //此时最小linkid 把数组s的信息存放到ss数组中strcpy(ss[m].Roadname , s[i].Roadname); //此时最小linkid 把数组s的信息存放到ss数组中strcpy(temp , s[j].linkid); //交换s[i]和s[j]中linkid的信息strcpy(s[j].linkid , s[i].linkid);strcpy(s[i].linkid , temp);strcpy(temp , s[j].flag); //交换s[i]和s[j]中flag 的信息strcpy(s[j].flag , s[i].flag);strcpy(s[i].flag , temp);strcpy(temp , s[j].brunch); //交换s[i]和s[j]中brunch的信息strcpy(s[j].brunch , s[i].brunch);strcpy(s[i].brunch , temp);strcpy(temp , s[j].dispclass); //交换s[i]和s[j]中dispclass的信息strcpy(s[j].dispclass , s[i].dispclass);strcpy(s[i].dispclass , temp);strcpy(temp , s[j].Roadname); //交换s[i]和s[j]中Roadname的信息strcpy(s[j].Roadname , s[i].Roadname);strcpy(s[i].Roadname , temp);m++; //记录已排序成功道路信息的个数i=j;if(m%830 == 0) //排序进度提示符. 的输出控制830 时刚好输出1 行. 且进度刚好100%{printf(".");}if(m%100==0) // 控制百分数输出{if(((float)m/(nsizecount-2))*100<10){printf("%.1f%%%\b\b\b\b" , ((float)m/(nsizecount-2))*100);}else if (((float)m/(nsizecount-2))*100>=10){printf("%.1f%%%\b\b\b\b\b" , ((float)m/(nsizecount-2))*100);}}}}}system("cls");for(i=0;i<m;i++){printf(" %s %s %s %s %s \n" , ss[i].linkid , ss[i].flag , ss[i].brunch , ss[i].dispclass , ss[i].Roadname);}printf("\n\n\t\t排序成功-----按LinkID编号由小到大显示完成\n\n");ma_interf(); //排序完成返回主界面}/*************************************************************************************** Functionname:Update** Function Description:对数据进行更新,并将更新后的结果存入新的文件中** Date:2012/6/22******************************************************************************** *******/void Update (tagMap_t s[]){FILE *pp; //定义文件指针用来创建新的newfile 文件char pc[60];int i=0; //循环控制变量if((pp=fopen("e:\\newfile.txt " , "w")) == NULL) //判断穿件文件是否成功{printf("更新文件创建失败……");exit(0);}for(i=0; i<(nsizecount-2); i++){fprintf(pp , "#\t");fprintf(pp , "%s\t" , ss[i].linkid); //文件信息写入newfile 文件中fprintf(pp , "%s\t" , ss[i].flag); //文件信息写入newfile 文件中fprintf(pp , "%s\t" , ss[i].brunch); //文件信息写入newfile 文件中fprintf(pp , "%s\t" , ss[i].dispclass); //文件信息写入newfile 文件中fprintf(pp , "%s\t" , ss[i].Roadname); //文件信息写入newfile 文件中fprintf(pp , "#");fprintf(pp , "\n");}fclose(pp); //关闭文件指针ppif((pp=fopen("e:\\newfile.txt" , "r")) == NULL) //打开文件newfile 为更新文件提供数据{printf("the newfile open fail\n");exit(0);}FILE *ppp; //文件指针用来创建update文件if((ppp=fopen("e:\\update.dat" , "wb")) == NULL) //判断文件创建是否成功{printf("更新文件创建失败\n");exit(0);}system("cls");printf("\n\n\t\t\t\t文件更新中……\n"); //给出提示信息for(i=0; i<(nsizecount-2); i++){fread(pc , 56 , 1 , pp); //newfile 文件信息写入pc 数组中fwrite(pc , 56 , 1 , ppp); //数组pc的信息写入update二进制文件中}printf("\n\n\t\t\t\t文件更新成功\n\n\n\t\t\t更新文件存放在update.dat文件中\n\n\n");ma_interf(); //返回主界面}void main(){ma_interf(); //进入主界面}。

校园导游系统代码

校园导游系统代码
{
printf("请输入一个起始景点编号:");
scanf("%d",&v0);
if(v0<0||v0>G->vexnum)
{
printf("景点编号不存在!请重新输入景点编号:");
scanf("%d",&v0);
}
if(v0>=0&&v0<G->vexnum)
void cmd(void);
MGraph InitGraph(void);
void Menu(void);
void Browser(MGraph *G);
void ShortestPath_DIJ(MGraph * G);
void Floyd(MGraph *G);
void Search(MGraph *G);
for(v=0;v<G->vexnum;v++)
printf("┃%-4d┃%-16s┃%-56s┃\n",G->vexs[v].num,G->vexs[v].name,G->vexs[v].introduction);
printf("┗━━┻━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");
G.arcs[1][7].adj=300;
G.arcs[2][3].adj=120;
G.arcs[3][6].adj=220;
G.arcs[3][4].adj=100;
G.arcs[4][5].adj=300;

校园导航系统源代码

校园导航系统源代码

数据结构-校园导航系统简介:本系统采用C语言编写,运行环境为Dev-C++;内容以西安电子科技大学南校区为例;主要功能有:1.查询景点信息;2.查询两景点间最短距离;3.查询两景点间所有路线;4.查询西电校园地图;5.修改景点和路径信息.注意事项:在进行修改景点和路径信息操作前,请在可执行文件目录下用记事本创建”super User.CODE”文件来存放用户名与密码(中间以空格隔开),否则无法进入.源代码:#include <string.h>#include <stdio.h>#include <conio.h>#include <stdlib.h>#include <ctype.h>#define Max 20000typedef struct ArcCell{int adj; //两个景点间的距离}ArcCell;typedef struct VertexType{int number; //景点编号char sight[100]; //景点名称char description[1000]; //景点简介char particular1[1000];char particular2[1000];char particular3[1000]; //景点详情}VertexType;typedef struct{VertexType vex[20]; //最多存放20个景点信息ArcCell arcs[20][20]; //两个景点间的距离int vexnum,arcnum;}MGraph;MGraph G;char nameofschool[100]; //学校名称int NUM=9;int P[20][20];int p[20];int visited[20];int a=0;long int D[20];int x[20]={0};//函数声明void CreateUDN(int v,int a);void narrate();void ShortestPath(int num);void output(int sight1,int sight2);char Menu();void search();char SearchMenu();void HaMiTonian(int);void Searchpath1(MGraph g);void disppath(MGraph g,int i,int j);void path(MGraph g,int i,int j,int k);void NextValue(int);void display();int Addnewsight(int n);int Deletesight(int n);void Changesight();char Changemenu();char Sightmenu();int Maintain(void);int VerificatianIdentity(void);void map();//主函数int main(){int v0,v1;int MaintainFlag;char ck;system("color 0F");CreateUDN(NUM,11);do{ck=Menu();switch(ck){case '1':search();break;case '2':system("cls");narrate();printf("\n\n\t\t\t请选择起点景点(0~%d):",NUM-1);scanf("%d",&v0);printf("\t\t\t请选择终点景点(0~%d):",NUM-1);scanf("%d",&v1);ShortestPath(v0);output(v0,v1);printf("\n\n\t\t\t\t请按任意键继续...\n");getchar();getchar();break;case'3':system("cls");narrate();x[0]=1;Searchpath1(G);printf("\n\n\t\t\t\t请按任意键继续...\n");getchar();getchar();break;case'4':system("cls");map();printf("\n\n\t\t\t\t\t请按任意键继续...\n");getchar();getchar();break;case'5':system("cls");narrate();MaintainFlag = Maintain();switch(MaintainFlag){case'1':system("cls");narrate();NUM=Addnewsight(NUM);system("cls");narrate();break;case'2':NUM=Deletesight(NUM);break;case'3':Changesight();break;}break;};}while(ck!='e');return 0;}//主菜单char Menu(){char c;int flag;do{flag=1;system("cls");narrate();printf("\n\t\t\t┏━━━━━━━━━━━━━━━┑\n");printf("\t\t\t┃ ┃\n");printf("\t\t\t┃ 1、查询景点信息┃\n");printf("\t\t\t┃ 2、查询两景点间最短路径┃\n");printf("\t\t\t┃ 3、查询两景点间所有路线┃\n");printf("\t\t\t┃ 4、查看西电校园地图┃\n");printf("\t\t\t┃ 5、修改景点和路径信息┃\n");printf("\t\t\t┃ e、退出┃\n");printf("\t\t\t┃ ┃\n");printf("\t\t\t┗━━━━━━━━━━━━━━━┛\n");printf("\t\t\t\t请输入您的选择:");scanf("%c",&c);if(c=='1'||c=='2'||c=='3'||c=='4'||c=='5'||c=='e')flag=0;}while(flag);return c;}//查询菜单char SearchMenu(){char c;int flag;do{flag=1;system("cls");narrate();printf("\n\t\t\t┏━━━━━━━━━━━━━━━┑\n");printf("\t\t\t┃ ┃\n");printf("\t\t\t┃ 1、按照景点编号查询┃\n");printf("\t\t\t┃ 2、按照景点名称查询┃\n");printf("\t\t\t┃ e、返回┃\n");printf("\t\t\t┃ ┃\n");printf("\t\t\t┗━━━━━━━━━━━━━━━┛\n");printf("\t\t\t\t请输入您的选择:");scanf("%c",&c);if(c=='1'||c=='2'||c=='e')flag=0;}while(flag);return c;}//查询信息void search(){int num;int i;char c;char name[20];do{system("cls");c=SearchMenu();switch (c){case '1':system("cls");narrate();printf("\n\n\t\t请输入您要查找的景点编号:");scanf("%d",&num);for(i=0;i<NUM;i++){if(num==G.vex[i].number){printf("\n\t\t您要查找景点信息如下:");printf("\n\t\t(%d)%-5s:%-25s\n\n",i,G.vex[i].sight,G.vex[i].description);printf("\t\t\t\t\t详情介绍:\n\t\t%-s\n",G.vex[i].particular1);printf("\t\t%-s\n",G.vex[i].particular2);printf("\t\t%-s\n",G.vex[i].particular3);printf("\n\t\t按任意键返回...");getchar();getchar();break;}}if(i==NUM){printf("\n\n\t\t\t没有找到!");printf("\n\n\t\t\t按任意键返回...");getchar();getchar();}break;case '2':system("cls");narrate();printf("\n\n\t\t请输入您要查找的景点名称:");scanf("%s",name);for(i=0;i<NUM;i++){if(!strcmp(name,G.vex[i].sight)){printf("\n\t\t您要查找景点信息如下:");printf("\n\t\t(%d)%-5s:%-25s\n\n",i,G.vex[i].sight,G.vex[i].description);printf("\t\t\t\t\t详情介绍:\n\t\t%-s\n",G.vex[i].particular1);printf("\t\t%-s\n",G.vex[i].particular2);printf("\t\t%-s\n",G.vex[i].particular3);printf("\n\t\t按任意键返回...");getchar();getchar();break;}}if(i==NUM){printf("\n\n\t\t\t没有找到!");printf("\n\n\t\t\t按任意键返回...");getchar();getchar();}break;}}while(c!='e');}//构造图形void CreateUDN(int v,int a) {int i,j;strcpy(nameofschool,"西安电子科技大学");G.vexnum=v;G.arcnum=a;for(i=0;i<20;++i) G.vex[i].number=i;strcpy(G.vex[0].sight,"东门");strcpy(G.vex[0].description,"学校正门,可乘坐公交车,出租车等交通工具. ");strcpy(G.vex[0].particular1," 作为学校的正门,门外的交通系统非常发达,常年有出租车"); strcpy(G.vex[0].particular2,"经过,还有916路,173路等众多公交车线路在此设立站牌,所以"); strcpy(G.vex[0].particular3,"完全没必要担心坐不到车,出行非常方便!");strcpy(G.vex[1].sight,"图书馆");strcpy(G.vex[1].description,"馆藏文纸质献约270万余册,种类丰富,环境优美. ");strcpy(G.vex[1].particular1," 南校区图书馆2005年7月1日奠基,主要服务于新校区2万余"); strcpy(G.vex[1].particular2,"名本科生.地上建筑面积4万平方米,总框架五层,地下一层,地面"); strcpy(G.vex[1].particular3,"四层.拥有先进的设施、优雅温馨的阅读环境.");strcpy(G.vex[2].sight,"北门");strcpy(G.vex[2].description,"西电南校区的另外一个出入口,备有一个停车场. ");strcpy(G.vex[2].particular1," 北门日常的人流量不亚于东门,在这里有一个停车场,而且"); strcpy(G.vex[2].particular2,"这里还是西电的快递接收点,可以供广大师生在此寄取快递,非"); strcpy(G.vex[2].particular3,"常方便.而且临近综合楼,较为繁华.");strcpy(G.vex[3].sight,"海棠区");strcpy(G.vex[3].description,"2017级大一萌新即将入住的宿舍区. >o< ");strcpy(G.vex[3].particular1," 海棠宿舍位于学校西北面,所以距离北操,新综,北门较近,"); strcpy(G.vex[3].particular2,"准大一的学弟学妹们将会主要居住在5.6号楼(还有一部分会在"); strcpy(G.vex[3].particular3,"9.10号楼).海棠宿舍为两室一厅,每室各四人.");strcpy(G.vex[4].sight,"大活");strcpy(G.vex[4].description,"大学生活动中心的简称,小剧场就在这里. ");strcpy(G.vex[4].particular1," 大活建设在学校人工湖旁边,里面有实验室、舞蹈室等专用"); strcpy(G.vex[4].particular2,"教室,也是学校举办室内大型活动的常用地点,曾经陈一冰,周鸿"); strcpy(G.vex[4].particular3,"祎,黄晓明等人在此与同学们见面.");strcpy(G.vex[5].sight,"北操");strcpy(G.vex[5].description,"跑步踢球狼人杀...等等有趣的活动,超热闹. ");strcpy(G.vex[5].particular1," 北操基础设施齐全,有足球场跑道观众台羽毛球场等,是"); strcpy(G.vex[5].particular2,"学校举行大型体育赛事的场地,例如:运动会足球赛等.每天晚上"); strcpy(G.vex[5].particular3,"也会有许多同学在此运动玩耍,非常有趣.");strcpy(G.vex[6].sight,"观光塔");strcpy(G.vex[6].description,"南校区最显眼的建筑物,可以俯视整个校园. ");strcpy(G.vex[6].particular1," 观光塔是西电南校区最负盛名的建筑物,位处南校区最为中"); strcpy(G.vex[6].particular2,"间的位置,走在校园里,总是能够看到观光塔,到了晚上塔上的时"); strcpy(G.vex[6].particular3,"钟会亮起,很远都能看到,在月光下特别的漂亮.");strcpy(G.vex[7].sight,"体育馆");strcpy(G.vex[7].description,"今年刚刚建成,外观融合了\"天圆地方\"的思想. ");strcpy(G.vex[7].particular1," 考虑到学校的所在地西安是十三朝古都,亦应融入中国传统"); strcpy(G.vex[7].particular2,"文化的理念,以及体育馆主馆和训练馆的功能需求,最终决定以中"); strcpy(G.vex[7].particular3,"国传统文化的\"天圆地方\"为设计思路.美观大气.");strcpy(G.vex[8].sight,"行政楼");strcpy(G.vex[8].description,"可以进行盖章,补办一卡通等众多操作. ");strcpy(G.vex[8].particular1," 从东门进入学校,左手边的那栋楼就是行政楼,往后稍小一点"); strcpy(G.vex[8].particular2,"的就是行政辅楼.教务处、学工处、电院办公室在行政楼,一卡通"); strcpy(G.vex[8].particular3,"中心、户籍管理、财务处、一些学院的办公室在行政辅楼.");for(i=0;i<20;++i)for(j=0;j<20;++j)G.arcs[i][j].adj=Max;G.arcs[0][8].adj=G.arcs[8][0].adj=150;G.arcs[0][1].adj=G.arcs[1][0].adj=600;G.arcs[1][7].adj=G.arcs[7][1].adj=800;G.arcs[1][6].adj=G.arcs[6][1].adj=50;G.arcs[1][4].adj=G.arcs[4][1].adj=600;G.arcs[3][2].adj=G.arcs[2][3].adj=300;G.arcs[6][2].adj=G.arcs[2][6].adj=350;G.arcs[3][5].adj=G.arcs[5][3].adj=300;G.arcs[4][5].adj=G.arcs[5][4].adj=400;G.arcs[8][7].adj=G.arcs[7][8].adj=250;}//导图模块void narrate(){int i,k=0;printf("\n\t******************欢迎使用%s校园导游程序*****************\n\n",nameofschool);printf("\t━━━━━━━━━━|━━━━━━━━━━━━━━━━━━━━━━━━\n");printf("\t* 景点名称|\t\t\t景点描述\t\t *\n");printf("\t━━━━━━━━━━|━━━━━━━━━━━━━━━━━━━━━━━━\n");for(i=0;i<NUM;i++){printf("\t* (%d)%-15s|\t%-43s *\n",i,G.vex[i].sight,G.vex[i].description);k=k+1;}printf("\t━━━━━━━━━━|━━━━━━━━━━━━━━━━━━━━━━━━\n"); }//迪杰斯特拉算法void ShortestPath(int num){int v,w,i,t;int final[20];int min;for(v=0;v<NUM;v++){final[v]=0;D[v]=G.arcs[num][v].adj;for(w=0;w<NUM;w++)P[v][w]=0;if(D[v]<20000){P[v][num]=1;P[v][v]=1;}}D[num]=0;final[num]=1;for(i=0;i<NUM;++i){min=Max;for(w=0;w<NUM;++w)if(!final[w])if(D[w]<min){v=w;min=D[w];}final[v]=1;for(w=0;w<NUM;++w)if(!final[w]&&((min+G.arcs[v][w].adj)<D[w])){D[w]=min+G.arcs[v][w].adj;for(t=0;t<NUM;t++)P[w][t]=P[v][t];P[w][w]=1;}}}//输出函数void output(int sight1,int sight2){int a,b,c,d,q=0;a=sight2;if(a!=sight1){printf("\n\t\t从%s到%s的最短路径是",G.vex[sight1].sight,G.vex[sight2].sight);printf("(最短距离为%dm.)\n\n\t",D[a]);printf("\t\t%s",G.vex[sight1].sight);d=sight1;for(c=0;c<NUM;++c){gate:;P[a][sight1]=0;for(b=0;b<NUM;b++){if(G.arcs[d][b].adj<20000&&P[a][b]){printf("-->%s",G.vex[b].sight);q=q+1;P[a][b]=0;d=b;if(q%8==0) printf("\n");goto gate;}}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#define INFINITY 10000#define MAX_VERTEX_NUM 40#define MAX 40#include<stdlib.h>#include<stdio.h>#include<conio.h>#include<string.h>typedef struct ArCell{int adj; /*路径长度 */}ArCell,AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];typedef struct/*图中顶点表示主要景点,存放景点的编号、名称、简介等信息, */{char name[30];int num;char introduction[100];/*简介*/}infotype;typedef struct{infotype vexs[MAX_VERTEX_NUM];AdjMatrix arcs;int vexnum,arcnum;}MGraph;MGraph b;void cmd(void);MGraph InitGraph(void);void show1();void list();void Menu(void);void ShortestPath_DIJ(MGraph * G);void Search(MGraph *G);int LocateVex(MGraph *G,char* v);/**********主函数************************/void main(void){system("color 5f"); /*修改控制台的颜色信息,改为白字蓝底的模式*/ system("mode con: cols=140 lines=130"); /*设置批处理运行时窗口大小的*/ cmd();}/********自定义函数***************//* cmd函数(根据目录选择要进行的项目)*/void cmd(void){char k;b=InitGraph();show1();Menu();while(1){scanf("\n%c",&k);switch(k){case'x':system("cls");show1();Menu();list();ShortestPath_DIJ(&b);printf("---------------------------------欢迎您的使用--------------------------------\n");printf("\n请您继续选择服务:");break;case'y':system("cls");Menu();list();Search(&b);printf("---------------------------------欢迎您的使用--------------------------------\n");printf("\n请您继续选择服务:");break;case'z':system("cls");printf(" ┏━━━━━━━━━━━━━━━━━━━━┓\n");printf(" ┃感谢使用┃\n");printf(" ┃安徽建筑术大学┃\n");printf(" ┃智能导航系统┃\n");printf(" ┗━━━━━━━━━━━━━━━━━━━━┛\n");exit(0);default:printf("输入信息错误!\n请输入x或y或z.\n");break;}}}/* 迪杰斯特拉算法来计算出起点到各个顶点之间的最短路径,v0为起点 */void ShortestPath_DIJ(MGraph * G){int v,w,i,min,t=0,x,flag=1,v0,v1,have[100],k;int final[20], D[20], p[23][23];while(flag){printf("请输入起始景点编号:\n");scanf("%d",&v0);if(v0<0||v0>G->vexnum)printf("景点编号不存在!");printf("请输入终止景点编号:\n");scanf("%d",&v1);if(v1<0||v1>G->vexnum)printf("景点编号不存在!");if(v0>=0&&v0<G->vexnum&&v1>=0&&v1<G->vexnum) flag=0;}for(v=0;v<G->vexnum;++v){final[v]=0;D[v]=G->arcs[v0][v].adj;for(w=0;w<G->vexnum;++w)p[v][w]=INFINITY;if(D[v]<INFINITY){p[v][v0]=1;p[v][v]=1;}}D[v0]=0;final[v0]=1;have[0]=v0;for(i=1;i<G->vexnum;++i){min=INFINITY;for(w=0;w<G->vexnum;++w)if(!final[w])if(D[w]<min){v=w;min=D[w];}final[v]=1;have[k]=v;k++;for(w=0;w<G->vexnum;++w)if(!final[w]&&((min+(G->arcs[v][w].adj))<D[w])){D[w]=min+G->arcs[v][w].adj;for(x=0;x<G->vexnum;x++)p[w][x]=p[v][x];p[w][w]=1;}}for(i=0;i<G->vexnum;i++){if(p[v1][have[i]]==1){printf("-->%s",G->vexs[have[i]].name);} }if((v1-v0)==1)printf("\n路径长度:%d\n",G->arcs[v0][v1]);else printf("\n路径长度:%d\n",D[v1]);}//ShortestPath_DIJ end/*查找函数的建立 */void Search(MGraph *G){int k,flag=1;while(flag){printf("请输入要查询的景点编号:");scanf("%d",&k);if(k<0||k>G->vexnum){printf("景点编号不存在!请重新输入景点编号:");scanf("%d",&k);}if(k>=0&&k<G->vexnum)flag=0;}printf("┏━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");printf("┃编号┃景点名称┃简介┃\n");printf("┃%-4d┃%-16s┃%-58s┃\n",G->vexs[k].num,G->vexs[k].name,G->vexs[k].introduction);printf("┗━━┻━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");}//Search endvoid show1(){ printf("\t\t ★★欢迎使用安徽建筑大学智能导航系统★★\n");printf("\t\t\t安徽建筑大学南校区简略版平面图\n\n");printf("\t 学校北门\n");printf("\t ┃ \n");printf("\t ┏━━北食堂━━━━━━━━━宿舍楼1\n");printf("\t ┃┃\n");printf("\t ┃宿舍楼2\n");printf("\t ┃━━━━━━九月桥━━━━━┃\n");printf("\t ┃┃\n");printf("\t 主教楼┃ \n");printf("\t ┃┃\n");printf("\t 日月广场┃\n");printf("\t ┃┃\n");printf("\t 图书馆┃\n");printf("\t ┃┃\n");printf("\t 还在建┃\n");printf("\t ┃┃\n");printf("\t 南食堂━━━━━━━━━━━━宿舍楼15\n");printf("\t ┃┃\n");printf("\t ┃┃\n");printf("\t ━━━━━━━━━━━━━━南苑超市\n");}void list(){printf("学校景点列表:\n");printf("0:学校北门");printf("1:宿舍楼1 ");printf("2:宿舍楼2 ");printf("3:宿舍楼15 ");printf("4:九月桥\n");printf("5:主教楼 ");printf("6:图书馆 ");printf("7:日月广场 ");printf("8:体育场\n");printf("9:还在建");printf("10:南食堂 ");}/*目录函数的构建*/void Menu(){printf("\n 安徽建筑大学南校区导游图\n");printf(" ┏━━━━━━━━━━━━━━━━━━━━┓\n");printf(" ┃ x.选择出发点和目的地┃\n");printf(" ┃ y.查看景点信息┃\n");printf(" ┃ z.退出系统┃\n");printf(" ┗━━━━━━━━━━━━━━━━━━━━┛\n");printf("请选择服务");}/*MGraph函数(图的构建)*/MGraph InitGraph(void){MGraph G;int i,j;G.vexnum=17; //顶点是17个G.arcnum=25; //弧线有25个for(i=0;i<G.vexnum;i++)G.vexs[i].num=i;strcpy(G.vexs[0].name,"学校北门");strcpy(G.vexs[0].introduction,"学校的正门,气势宏伟");strcpy(G.vexs[1].name,"宿舍楼1");strcpy(G.vexs[1].introduction,"睡觉的地方");strcpy(G.vexs[2].name,"宿舍楼2");strcpy(G.vexs[2].introduction,"睡觉的地方");strcpy(G.vexs[3].name,"宿舍楼15");strcpy(G.vexs[3].introduction,",,,,,,,,");strcpy(G.vexs[4].name,"九月桥");strcpy(G.vexs[4].introduction,"连接生活区和教学区的桥。

相关文档
最新文档