校园导游系统(界面超级棒).doc
《校园导游系统(界面超级棒).doc》由会员分享,可在线阅读,更多相关《校园导游系统(界面超级棒).doc(12页珍藏版)》请在冰豆网上搜索。
一、课程设计的目的
本实习突出了数据结构加操作的程序设计观点,希望达到熟悉各种存储机构结构的特性,以及如何应用树和图机构解决具体问题的目的。
二、课程设计内容
设计目的:
了解数据结构,熟悉图的应用,并利用迪杰斯特拉算法求得2点之间的最短路径。
设计技术参数:
(1)设计你的学校的校园平面图,所含景点不小于10个。
以图中的顶点表示学校的各个景点,存放景点名称,代号,简介等信息;以边表示路径,存放路径,存放路径的长度等相关信息。
(2)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的最短的简单路径。
(3)为来访客人提供图中任意景点的相关信息的查询。
/*********************************************************
*设计题目:
校园导游咨询系统
*设计人:
中南林业科技大学杨海波
*制导老师:
杨卫民,陈超云
*时间:
2005年7月20日
*********************************************************/
/*程序中用到的库函数所在头文件应用#include命令包含进来*/
#include"stdio.h"
#include"math.h"
#include"graphics.h"
#include"conio.h"/*gotoxy*/
#include"bios.h"
/**********************************************************/
/*定义符号常量*/
#defineNULL0
#definenum20
#definemaxdist10000
/**********************************************************/
/*定义数据结构*/
typedefstruct{
chardata[num];
doubleedges[num][num];
}graph;
/**********************************************************/
/*定义全局变量*/
intx[num],y[num];
chara[num],ab[num][num];
/**********************************************************/
/*自定义函数原型说明*/
voidshowmsg(charmsg[]);/*逐步显示文字*/
voiddijkstra(graphg,intn,inti,intd[num],intp[num]);
voidopdijk(intv1,intv0,intn,intd[],intp[]);
voidinfo_welcome();
/**********************************************************/
/*功能:
逐步显示文字*/
voidshowmsg(charmsg[]){
inti=0;
while(msg[i]!
=’\0’){
printf("%c",msg[i]);
i++;
delay(30000);
}
}
/**********************************************************/
/*功能:
用迪杰思特拉算法求图的最短路径*/
voiddijkstra(graphg,intn,inti,intd[num],intp[num]){
ints[num];
doublemindist,dist;
intj,k,u,w;
for(j=0;j{d[j]=g.edges[i][j];
s[j]=0;
if((d[j]=0))
p[j]=i;/*可到达的路径*/
else
p[j]=-1;/*设空路径*/
}
s[i]=1;
for(j=0;j{mindist=maxdist;
u=i;
for(k=0;kif((s[k]==0)&&(d[k]{u=k;
mindist=d[k];
}
s[u]=1;
for(k=0;k{if(s[k]==0)
{dist=d[u]+g.edges[u][k];
if(dist{d[k]=dist;
p[k]=u;
}
}
}
}
}
/**********************************************************/
/*功能:
打印出图的最短路径*/
voidopdijk(intv1,intv0,intn,intd[],intp[]){
inti,i_1,j,k,pre;
intpoint_x,point_y;
for(i=0;iif(i!
=v0&&i==v1){
gotoxy(5,24);
printf("%c",a[i]);
point_x=x[i];
point_y=y[i];
pre=p[i];
while(pre!
=-1){
setcolor(RED);
/**********************************/
/**闪烁终点的颜色*/
for(i_1=0;i_1<10;i_1++)
{
setcolor(GREEN);
circle(x[pre]*30,y[pre]*30,3);
delay(90000);
setcolor(RED);
circle(x[pre]*30,y[pre]*30,3);
delay(90000);
setcolor(GREEN);
line(point_x*30,point_y*30,x[pre]*30,y[pre]*30);
delay(90000);
setcolor(RED);
line(point_x*30,point_y*30,x[pre]*30,y[pre]*30);
delay(90000);
}
/**********************************/
point_x=x[pre];
point_y=y[pre];
printf("-->%c",a[pre]);/****************************/
pre=p[pre];
}
if(d[i]==maxdist)
/*line(point_x*30,point_y*30,x[v0]*30,y[v0]*30);*/
printf("-->%c",a[v0]);
/*printf("\tshortestway:
%5f",d[i]);*/
}
}
/******************************************************/
/*功能:
打印出程序的帮助和欢迎信息*/
voidinfo_welcome(){
inti,j;
char*Msg[]=
{
"WelcometoCSFU!
",
"",
"ADDRESS:
CentralSouth",
"ForestryUniversity",
"Changsha,Hunan,China",
"",
"TEL:
+86-731-5623172",
"",
"",
"[HELP]",
"FindOUTTHESHORTEST",
"PATH:
Forf",
"",
"EXIT:
Qorq",
NULL,
};
/*显示操作键说明*/
i=0;
textcolor(WHITE);
delay(90000);
while(Msg[i]!
=NULL)
{
gotoxy(56,3+i);
printf(Msg[i]);
i++;
}
printf("\n\n\n");
textcolor(GREEN);
gotoxy(5,18);
i=0;
showmsg("Welcometouseschool_wizard.");
gotoxy(5,20);
showmsg("Youcanchoose’F’or’Q’:
");
}
/***************************************************/
/*功能:
*/
main(){
graphg;
inti,j,k,n,m,i_1,i_2,i_3;
intdriver,mode;
introad_x,road_y;
charnu,b,i_str,m_str;
intd[num],p[num],sd[num][num],sp[num][num];
FILE*map_f,*road_f;
clrscr();
/*初始化变量g.edges[][]*/
for(i_1=0;i_1for(i_2=0;i_2g.edges[i_1][i_2]=maxdist;
}
}
/*********************************************************/
/*读取文件map.dat(园地图的景