校园导游系统(界面超级棒)Word格式文档下载.doc
《校园导游系统(界面超级棒)Word格式文档下载.doc》由会员分享,可在线阅读,更多相关《校园导游系统(界面超级棒)Word格式文档下载.doc(12页珍藏版)》请在冰点文库上搜索。
![校园导游系统(界面超级棒)Word格式文档下载.doc](https://file1.bingdoc.com/fileroot1/2023-4/28/a762a438-8650-477e-8a72-8eea8cfa2d3b/a762a438-8650-477e-8a72-8eea8cfa2d3b1.gif)
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<
n;
j++)
{d[j]=g.edges[i][j];
s[j]=0;
if((d[j]<
maxdist)&
&
(d[j]!
=0))
p[j]=i;
/*可到达的路径*/
else
p[j]=-1;
/*设空路径*/
}
s[i]=1;
n-1;
{mindist=maxdist;
u=i;
for(k=0;
k<
k++)
if((s[k]==0)&
(d[k]<
mindist))
{u=k;
mindist=d[k];
s[u]=1;
for(k=0;
{if(s[k]==0)
{dist=d[u]+g.edges[u][k];
if(dist<
d[k])
{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;
i<
i++)
if(i!
=v0&
i==v1){
gotoxy(5,24);
printf("
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);
line(point_x*30,point_y*30,x[pre]*30,y[pre]*30);
}
point_x=x[pre];
point_y=y[pre];
printf("
-->
a[pre]);
/****************************/
pre=p[pre];
if(d[i]==maxdist)
/*line(point_x*30,point_y*30,x[v0]*30,y[v0]*30);
*/
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]);
\n\n\n"
);
textcolor(GREEN);
gotoxy(5,18);
showmsg("
Welcometouseschool_wizard."
gotoxy(5,20);
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;
num;
i_1++){
for(i_2=0;
i_2<
i_2++){
g.edges[i_1][i_2]=maxdist;
}
/*********************************************************/
/*读取文件map.dat(园地图的景点)&
描绘校园地图的路径*/
if((map_f=fopen("
map.dat"
"
r"
))==0){
Cannotopenthefileofmap.dat.\n"
exit
(1);
fscanf(map_f,"
%d"
&
n);
for(i=0;
i++){
fscanf(map_f,"
nu);
a[i]);
x[i]);
y[i]);
fclose(map_f);
/*在屏幕上描绘校园地图的景点*/
loop:
driver=VGA,mode=VGAHI;
initgraph(&
driver,&
mode,"
setbkcolor(BLUE);
setfillstyle(1,62);
circle(x[i]*30,y[i]*30,3);
floodfill(x[i]*30,y[i]*30,WHITE);
gotoxy(x[i]*4+2,y[i]*2);
/*printf("
a[%d]=%c\nx[%d]=%d\ty[%d]=%d\n"
i,a[i],i,x[i],i,y[i]);
/*调试校园地图的景点*/
setcolor(BROWN);
rectangle(3,3,n*30+100,(n-2)*30);
rectangle(n*30+100,3,getmaxx()-3,(n-2)*30);
/*printf("
n=%d\n"
n);
/*调用其他函数*/
info_welcome();
/***********************************************************/
/*读取文件road.dat(园地图的路径)*/
for(i=0;
g.edges[i][j]=maxdist;
if((road_f=fopen("
road.dat"
Cannotopenthefileofroad.dat.\n"
fscanf(road_f,"
b);
\n%c"
b);
if(b==’@’){
fscanf(road_f,"
/*printf("
ab[i][0]=b;
for(i_1=0;
if(b==a[i_1]){
/*road_x=x[i_1];
road_y=y[i_1];
break;
/*printf("
\n1%c,%d,%d"
a[i_1],road_x,road_y);
}
if(b==’@’){
break;
}
}
for(i_2=0;
for(i_3=0;
i_3<
i_3++){
if(b==a[i_3]){
ab[i][i_2+1]=b;
setcolor(WHITE);
line(x[i_1]*30,y[i_1]*30,x[i_3]*30,y[i_3]*30);
/**********************************************************/
g.edges[i_1][i_3]=hypot((double)(x[i_1]-x[i_3]),(double)(y[i_1]-y[i_3]));
/*printf("
\n2%d,%d%c,%d,%d"
road_x,road_y,a[i_3],x[i_3],y[i_3]);
}
if(b==’@’){
}else{
for(i_2=0;
if(b==’@’){
break;
fclose(road_f);
/*clrscr();
/*
\n"
%3f"
g.edges[i_1][i_2]);
\t"
%d,%d"
x[i_1],y[i_1]);
/*循环等待用户输入*/
do{
switch(toupper(getchar())){
case’Q’:
exit(0);
case’F’:
{
getchar();
gotoxy(100,n);
a[%d]=%c\n"
i_1,a[i_1]);
gotoxy(5,21);
showmsg("
WhereareyouNOW?
:
/*scanf("
m);
scanf("
m_str);
if(toupper(m_str)==a[i_1]){
m=i_1;
/**********************************/
/**闪烁源点的颜色*/
{
setcolor(GREEN);
circle(x[m]*30,y[m]*30,3);
delay(90000);
setcolor(RED);
/*********************************/
gotoxy(5,22);
WhereareyouGO?
i);
i_str);
if(toupper(i_str)==a[i_1]){
i=i_1;
/**闪烁终点的颜色*/
circle(x[i]*30,y[i]*30,3);
gotoxy(5,23);
printf("
TheshortestpathFROM%cTO%cis:
a[i],a[m]);
dijkstra(g,n,i,d,p);
opdijk(m,i,n,d,p);
system("
pause"
clrscr();
gotoloop;
break;
;
}while
(1);
附件:
文件名:
map.dat(用TAB键隔开)
11
A106
B84
C51
D53
E55
F56
G57
H46
I24
J14
K18
map.dat文件数据
map.dat文件的解释
A106
B84
C51
D53
E55
F56
G57
H46
I24
J14
K18
总共有多少个景点
AX坐标Y坐标
BX坐标Y坐标
CX坐标Y坐标
DX坐标Y坐标
EX坐标Y坐标
FX坐标Y坐标
GX坐标Y坐标
HX坐标Y坐标
IX坐标Y坐标
JX坐标Y坐标
KX坐标Y坐标
road.dat
@AEBFG
@BCDEA
@CDB
@DCEB
@EDIHFAB
@FEHGA
@GFHKA
@HIKGFE
@IJHDC
@JKI
@KJGH
本文来自CSDN博客,转载请标明出处: