校园导游系统界面超级棒Word文档下载推荐.docx
《校园导游系统界面超级棒Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《校园导游系统界面超级棒Word文档下载推荐.docx(18页珍藏版)》请在冰点文库上搜索。
/*定义数据结构*/
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<
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;
{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);
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];
-->
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);
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[][]*/
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);
i++){
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);
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);
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==’@’){
ab[i][0]=b;
if(b==a[i_1]){
/*road_x=x[i_1];
road_y=y[i_1];
break;
\n1%c,%d,%d"
a[i_1],road_x,road_y);
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]));
\n2%d,%d%c,%d,%d"
road_x,road_y,a[i_3],x[i_3],y[i_3]);
}else{
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);
WhereareyouNOW?
:
/*scanf("
m);
scanf("
m_str);
if(toupper(m_str)==a[i_1]){
m=i_1;
/**闪烁源点的颜色*/
circle(x[m]*30,y[m]*30,3);
/*********************************/
gotoxy(5,22);
WhereareyouGO?
i);
i_str);
if(toupper(i_str)==a[i_1]){
i=i_1;
gotoxy(5,23);
TheshortestpathFROM%cTO%cis:
a[i],a[m]);
dijkstra(g,n,i,d,p);
opdijk(m,i,n,d,p);
system("
pause"
clrscr();
gotoloop;
;
}while
(1);
附件:
文件名:
map.dat(用TAB键隔开)
11
A106
B84
C51
D53
E55
F56
G57
H46
I24
J14
K18
map.dat文件数据
map.dat文件的解释
总共有多少个景点
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博客,转载请标明出处: