校园导游系统界面超级棒.docx

上传人:b****1 文档编号:2016125 上传时间:2023-05-02 格式:DOCX 页数:18 大小:17.86KB
下载 相关 举报
校园导游系统界面超级棒.docx_第1页
第1页 / 共18页
校园导游系统界面超级棒.docx_第2页
第2页 / 共18页
校园导游系统界面超级棒.docx_第3页
第3页 / 共18页
校园导游系统界面超级棒.docx_第4页
第4页 / 共18页
校园导游系统界面超级棒.docx_第5页
第5页 / 共18页
校园导游系统界面超级棒.docx_第6页
第6页 / 共18页
校园导游系统界面超级棒.docx_第7页
第7页 / 共18页
校园导游系统界面超级棒.docx_第8页
第8页 / 共18页
校园导游系统界面超级棒.docx_第9页
第9页 / 共18页
校园导游系统界面超级棒.docx_第10页
第10页 / 共18页
校园导游系统界面超级棒.docx_第11页
第11页 / 共18页
校园导游系统界面超级棒.docx_第12页
第12页 / 共18页
校园导游系统界面超级棒.docx_第13页
第13页 / 共18页
校园导游系统界面超级棒.docx_第14页
第14页 / 共18页
校园导游系统界面超级棒.docx_第15页
第15页 / 共18页
校园导游系统界面超级棒.docx_第16页
第16页 / 共18页
校园导游系统界面超级棒.docx_第17页
第17页 / 共18页
校园导游系统界面超级棒.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

校园导游系统界面超级棒.docx

《校园导游系统界面超级棒.docx》由会员分享,可在线阅读,更多相关《校园导游系统界面超级棒.docx(18页珍藏版)》请在冰点文库上搜索。

校园导游系统界面超级棒.docx

校园导游系统界面超级棒

一、课程设计的目的

本实习突出了数据结构加操作的程序设计观点,希望达到熟悉各种存储机构结构的特性,以及如何应用树和图机构解决具体问题的目的。

二、课程设计内容

设计目的:

了解数据结构,熟悉图的应用,并利用迪杰斯特拉算法求得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;k

if((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;i

if(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_1

for(i_2=0;i_2

g.edges[i_1][i_2]=maxdist;

}

}

/*********************************************************/

/*读取文件map.dat(园地图的景点)&&描绘校园地图的路径*/

if((map_f=fopen("map.dat","r"))==0){

printf("Cannotopenthefileofmap.dat.\n");

exit

(1);

}

fscanf(map_f,"%d",&n);

for(i=0;i

fscanf(map_f,"%d",&nu);

fscanf(map_f,"%d",&nu);

fscanf(map_f,"%d",&nu);

fscanf(map_f,"%c",&a[i]);

fscanf(map_f,"%d",&x[i]);

fscanf(map_f,"%d",&y[i]);

}

fclose(map_f);

/*********************************************************/

/*在屏幕上描绘校园地图的景点*/

loop:

driver=VGA,mode=VGAHI;

initgraph(&driver,&mode,"");

setbkcolor(BLUE);

for(i=0;i

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("%c",a[i]);

/*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;i

for(j=0;j

g.edges[i][j]=maxdist;

if((road_f=fopen("road.dat","r"))==0){

printf("Cannotopenthefileofroad.dat.\n");

exit

(1);

}

fscanf(road_f,"%c",&b);

for(i=0;i

/*printf("\n%c",b);*/

if(b==’@’){

fscanf(road_f,"%c",&b);

/*printf("\n%c",b);*/

ab[i][0]=b;

for(i_1=0;i_1

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;i_2

fscanf(road_f,"%c",&b);

for(i_3=0;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==’@’){

break;

}

}

if(b==’@’){

break;

}

}

}else{

for(i_2=0;i_2

if(b==’@’){

break;

}

}

}

}

fclose(road_f);

/*********************************************************/

/*clrscr();*/

/*

for(i_1=0;i_1

printf("\n");

for(i_2=0;i_2

printf("%3f",g.edges[i_1][i_2]);

}

}

*/

/*

for(i_1=0;i_1

printf("\t");

printf("%d,%d",x[i_1],y[i_1]);

}

*/

/*********************************************************/

/*循环等待用户输入*/

do{

switch(toupper(getchar())){

case’Q’:

exit(0);

case’F’:

{

getchar();

gotoxy(100,n);

/*

for(i_1=0;i_1

printf("a[%d]=%c\n",i_1,a[i_1]);

}

*/

gotoxy(5,21);

showmsg("WhereareyouNOW?

:

");

/*scanf("%d",&m);*/

scanf("%c",&m_str);

getchar();

for(i_1=0;i_1

if(toupper(m_str)==a[i_1]){

m=i_1;

}

}

/**********************************/

/**闪烁源点的颜色*/

for(i_1=0;i_1<10;i_1++)

{

setcolor(GREEN);

circle(x[m]*30,y[m]*30,3);

delay(90000);

setcolor(RED);

circle(x[m]*30,y[m]*30,3);

delay(90000);

}

/*********************************/

gotoxy(5,22);

showmsg("WhereareyouGO?

:

");

/*scanf("%d",&i);*/

scanf("%c",&i_str);

getchar();

for(i_1=0;i_1

if(toupper(i_str)==a[i_1]){

i=i_1;

}

}

/**********************************/

/**闪烁终点的颜色*/

for(i_1=0;i_1<10;i_1++)

{

setcolor(GREEN);

circle(x[i]*30,y[i]*30,3);

delay(90000);

setcolor(RED);

circle(x[i]*30,y[i]*30,3);

delay(90000);

}

/*********************************/

gotoxy(5,23);

printf("TheshortestpathFROM%cTO%cis:

",a[i],a[m]);

dijkstra(g,n,i,d,p);

opdijk(m,i,n,d,p);

printf("\n\n\n");

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文件的解释

11

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博客,转载请标明出处:

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2