《校园导游》课程设计报告Word文档格式.docx
- 文档编号:21707112
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:43
- 大小:249.87KB
《校园导游》课程设计报告Word文档格式.docx
《《校园导游》课程设计报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《《校园导游》课程设计报告Word文档格式.docx(43页珍藏版)》请在冰豆网上搜索。
测试数据及结果:
上图中,共有10个景点,16条道路。
其中圆圈为各个景点(编号、名称、介绍),边为道路(长度)。
进入程序,选择是否使用默认数据:
创建图成功:
选择主操作1:
选择主操作2:
选择主操作3:
选择主操作4:
选择副操作1:
选择副操作2:
选择副操作3:
选择副操作4:
选择副操作5:
选择副操作6:
选择隐藏菜单Print:
选择隐藏菜单PrintMatrix:
设计体会:
本程序从设计到实现一共花了一个星期,感觉不是很难,但是要用心去做。
在这次课程设计中,我再次感觉到自己做程序要站在顾客角度上,让程序更加合理,更加人性化。
对于本次课程设计所用到的算法,我都想了很长时间,其中怎么输出所有路径,我还参考了网上的一些资料,最后用了广度优先搜索完成。
做完了课程设计,感觉自己一下轻松起来,程序出来了,我也该继续下了一个设计。
附录(源程序清单):
#include<
iostream>
usingnamespacestd;
cstring>
vector>
#defineMAX_VERTEX_NUM50
typedefstructScenery
{
charsno[4];
//景点编号
charsname[21];
//景点名称
charstext[201];
//景点介绍
}Scenery;
//景点结构
typedefstructArcNode
intlength;
//道路长度
structArcNode*next;
}ArcNode;
//表结构
typedefstructVNode
Scenerysc;
structVNode*nextV;
ArcNode*nextArc;
}VNode;
//顶点结构
//图结构
typedefstruct
VNode*V;
//指向第一个顶点的指针
intvexnum,arcnum;
}Graph;
//矩阵结构
charvexs[MAX_VERTEX_NUM][4];
//景点编号数组
intarcs[MAX_VERTEX_NUM][MAX_VERTEX_NUM];
//道路长度矩阵
}Matrix;
//一行星号
voidStart(intn)
cout<
<
'
\t'
;
for(inti=0;
i<
n;
++i)
cout<
"
*"
endl;
}
//主菜单
voidFMenu()
Start(60);
\t\t\t1)查询各景点的相关信息"
\t\t\t2)查询图中任意两个景点间的最短路径"
\t\t\t3)查询图中任意两个景点间的所有路径"
\t\t\t4)增加、删除、更新景点和道路的信息"
\t\t\t0)退出程序"
//副菜单
voidSMenu()
\t\t\t1)增加景点信息"
\t\t\t2)删除景点信息"
\t\t\t3)更新景点信息"
\t\t\t4)增加道路信息"
\t\t\t5)删除道路信息"
\t\t\t6)更新道路信息"
\t\t\t0)返回主菜单"
//获得ArcNode地址
VNode*GetAddress(char*sno,Graph&
G)
VNode*p;
p=G.V;
G.vexnum;
{
if(!
strcmp(sno,p->
sc.sno))
returnp;
else
p=p->
nextV;
}
returnNULL;
//系统默认建图
voidDirectCreate(Graph&
G.arcnum=16;
G.vexnum=10;
VNode*p1;
VNode*p2;
ArcNode*q1;
ArcNode*q2;
G.V=p1=(VNode*)malloc(sizeof(VNode));
strcpy(p1->
sc.sno,"
001"
);
sc.sname,"
艺术楼"
sc.stext,"
艺术"
q1=(ArcNode*)malloc(sizeof(ArcNode));
p1->
nextArc=q1;
q1->
length=60;
strcpy(q1->
sno,"
009"
q2=(ArcNode*)malloc(sizeof(ArcNode));
q2->
length=30;
strcpy(q2->
008"
next=NULL;
next=q2;
p2=(VNode*)malloc(sizeof(VNode));
strcpy(p2->
002"
实验楼"
实验"
nextV=p2;
length=40;
p2->
length=150;
006"
p1=(VNode*)malloc(sizeof(VNode));
003"
男生宿舍"
住宿"
nextV=p1;
010"
length=75;
005"
004"
女生宿舍"
length=100;
007"
小湖"
风景"
length=70;
next=q1;
length=120;
食堂"
吃饭"
图书馆"
借书"
篮球场"
运动"
length=20;
教学楼"
教学"
足球场"
nextV=NULL;
//创建图
boolCreate(Graph&
VNode*last;
请输入景点个数以及道路条数"
cin>
>
G.vexnum>
G.arcnum;
if((G.vexnum<
=0)||(G.arcnum<
=0))
returnfalse;
G.V=(VNode*)malloc(sizeof(VNode));
last=G.V;
请输入第1个景点的编号、名称、介绍"
last->
sc.sno>
sc.sname>
sc.stext;
last->
nextArc=NULL;
for(inti=1;
p=(VNode*)malloc(sizeof(VNode));
请输入第"
i+1<
个景点的编号、名称、介绍"
cin>
p->
p->
last->
nextV=p;
last=last->
charstartSno[4];
charendSno[4];
ArcNode*q=NULL;
VNode*address=NULL;
for(i=0;
条道路的起始景点编号和终点景点编号以及长度"
startSno>
endSno>
length;
address=GetAddress(startSno,G);
q=(ArcNode*)malloc(sizeof(ArcNode));
strcpy(q->
sno,endSno);
q->
length=length;
next=address->
nextArc;
address->
nextArc=q;
/*----------------无向网需正反两次-------------------*/
address=GetAddress(endSno,G);
sno,startSno);
returntrue;
//查询相关景点信息
voidSearchScenery(Graph&
intcount=0;
VNode*p=G.V;
charnoOrName[21];
请输入你想要查询的景点的编号或名称"
noOrName;
(strcmp(noOrName,p->
sc.sno)&
&
strcmp(noOrName,p->
sc.sname)))
{
cout<
景点编号:
sc.sno<
景点名称:
sc.sname<
景点介绍:
sc.stext<
count++;
break;
}
if(!
count)
查找失败!
//增加景点信息
voidAddScenery(Graph&
intflag=0;
VNode*g=NULL;
请输入景点的编号:
sno;
g=G.V;
while(g)
strcmp(g->
sc.sno,sno))
flag++;
g=g->
if(flag)
输入的景点编号重复,请重新插入!
return;
请输入景点的名称:
sname;
请输入景点的介绍:
stext;
VNode*parent=NULL;
while(p)
strcmp(p->
parent=p;
VNode*q;
q=(VNode*)malloc(sizeof(VNode));
sc.sno,sno);
sc.sname,sname);
sc.stext,stext);
parent->
nextV=q;
G.vexnum++;
增加景点信息成功!
else
增加景点编号重复,请重新增加!
//删除景点信息2
voidDelete(char*sno1,char*sno2,Graph&
VNode*address=NULL
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 校园导游 校园 导游 课程设计 报告