南 通 大 学
计算机科学与技术学院
数据结构课程设计报告
姓 名: |
** |
班 级: |
网工** |
学 号: |
****** |
指导老师: |
******* |
选 题: |
校园导游 |
日 期: |
2018.01.18 |
- 问题分析及功能设计
校园占地几千亩,生活设施分布较散;校园内景色优美,景点甚多。在校园内移动,因时间、交通工具和用户兴趣等原因,需要选择线路。本设计的主要任务是为在南通大学新校区内生活、购物、参观,学习的人们提供行走路线查询、选择、景点介绍的帮助。
以下是校园导游系统应具备的功能:
- 根据用户需求智能推荐相关地点。
- 粗略展示校园平面图。
- 罗列各个景点,实现对某个景点的详细查询。
(4)给出到某个景点的最佳路线。
(5)管理员可以修改景点信息。
struct VertexNode{ //创造一个存储景点及其该景点信息的顶点
- 数据结构设计
为了实现以上的功能,达到寻找最短路线的目的,我选择无向网的邻接矩阵存储方式。
景点信息有多个数据项,可分别设计结构体:
1.道路(弧)数据项表示:
struct ArcNode{
int adj; //该弧指向的顶点位置
char *info; //该弧相关信息的指针
};
2.景点(顶点)数据项表示:
int number;
char *view;
char *info;
};
3.整个图数据项表示:
struct MGraph{ //创建地图
VertexNode vex[NUM];
ArcNode arcs[NUM][NUM];
int vexnum,arcnum; //顶点数,边数
};
三、算法设计
3.1地图(无向网)的创建
MGraph g;
int P[NUM][NUM];
long int D[NUM];
int x[13]={0};
void CreateMap(int v,int a);
void CreateMap(int v,int a)
{
int i,j;
g.vexnum=v;
g.arcnum=a;
for(i=1;i<g.vexnum;++i)
g.vex[i].number=i;
g.vex[0].view="名称";
g.vex[0].info="景点简介";
g.vex[1].view="西门";
g.vex[1].info="西门外交通便利,外是南通市近几年来的新开发地段,有繁华的商业街,购物中心等";
g.vex[2].view="西操场";
g.vex[2].info="含一个大型体育场,一个小型足球场和排球场,及篮球场,是通大师生锻炼身体的最佳场所";
g.vex[3].view="一食堂";
g.vex[3].info="位于学校西部,面积不大但菜色齐全,种类繁多,口味偏重,三楼设有独立包厢";
g.vex[4].view="北门";
g.vex[4].info="位于学校北部,几年刚刚改造成为与外界往来的出入口,外方便乘坐公交,附近有妇幼保健院";
g.vex[5].view="一超市";
g.vex[5].info="位于学校中西部,与校内自助银行,邮政,眼睛店相连,主要出售学生日常生活学习用品";
g.vex[6].view="图书馆";
g.vex[6].info="坐落于学校中央,面朝内湖,建筑造型独特,藏书丰富,另含校史馆及张骞艺术馆";
g.vex[7].view="校园服务中心";
g.vex[7].info="位于二食堂西部,是于2017年新建成的,内设有移动联通服务店,自助银行取款机,奶茶店,深受大学生青睐";
g.vex[8].view="小北街";
g.vex[8].info="位于学校北门,以小饭店居多,是吃饭休息的绝佳选择";
g.vex[9].view="纺化楼";
g.vex[9].info="位于学校西南部,是南通大学纺织学院的主要教学楼,以及生命科学学院实验研究室,造型独特,是拍照及佳的好地方";
g.vex[10].view="二超市";
g.vex[10].info="与二食堂同属一栋建筑,面积大,商品全,且有打印复印点,出售复习资料";
g.vex[11].view="逸夫楼";
g.vex[11].info="由邵逸夫先生捐献的三栋教学楼,建筑简洁大方,其中7号楼为我校行政办公楼,该楼南边有张謇先生雕像";
g.vex[12].view="二食堂";
g.vex[12].info="二食堂是我校综合食堂,饮食类型丰富,满足了不同地域大学生需求;含清真食堂,教工食堂,三楼是大学生活动中心";
g.vex[13].view="范曾艺术馆";
g.vex[13].info="该馆外观造型独特,颇具风格,于2014年开馆,国内首家范曾艺术馆,收藏范曾先生画作";
g.vex[14].view="体育馆";
g.vex[14].info="主要供击剑、篮球及乒乓球用的运动场,举办过许多大型赛事及宣讲活动,设施齐全";
g.vex[15].view="东操场";
g.vex[15].info="位于学校东部,含篮球场、网球场及其他运动设施,是许多学生活动的举办地";
g.vex[16].view="医疗服务中心";
g.vex[16].info="位于二食堂附近,是为通大师生服务的小型医疗中心";
for(i=1;i<g.vexnum;++i)
{
for(j=1;j<g.vexnum;++j)
{
g.arcs[i][j].adj=Max;
g.arcs[i][j].info=NULL;
}
}
g.arcs[1][2].adj=g.arcs[2][1].adj=200;
g.arcs[1][3].adj=g.arcs[3][1].adj=400;
g.arcs[1][9].adj=g.arcs[9][1].adj=600;
g.arcs[2][4].adj=g.arcs[4][2].adj=300;
g.arcs[3][5].adj=g.arcs[5][3].adj=500;
g.arcs[3][6].adj=g.arcs[6][3].adj=200;
g.arcs[4][8].adj=g.arcs[8][4].adj=30;
g.arcs[4][5].adj=g.arcs[5][4].adj=100;
g.arcs[5][6].adj=g.arcs[6][5].adj=50;
g.arcs[5][7].adj=g.arcs[7][5].adj=200;
g.arcs[6][7].adj=g.arcs[7][6].adj=100;
g.arcs[7][10].adj=g.arcs[10][7].adj=30;
g.arcs[9][3].adj&