C++数据结构 大作业课程设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C++/数据结构大作业/课程设计——【校园导游咨询】【停车场管理】娃娃们可以收着以后用绝对纯手工打造内含类模块/一维指针数组(谨以此程序供大家参考。运行结果后面有贴图)

目录

【1】校园导游咨询程序设计源代码及截图

【2】停车场管理——方案一程序设计源代码及截图

【3】停车场管理——方案二程序设计源代码及截图

##############【1】【【校园导游咨询】】####################

(ps:该校园导游咨询系统没有输入值,所有信息是都在class MGraph的构造函数中传输的,且校园景点信息皆为【【上海电力学院】】景点信息。请大家注意,直接从文章copy到visual stutio中会出现中文字符,注意

删除,推荐大家在一行语句的分号后面,点出光标,按一下delete键,然后按一下enter键,完成visual stutio的自动对齐,这样程序看起来一目了然,更易于操作和更改)

【问题描述】

设计一个校园导游程序,为来访的客人提供各种信息查询服务。

【基本要求】

(1)设计你所在学校的校园平面图,所含景点不少于10个。以图中顶点表示校内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。

(2)为来访客人提供图中任意景点相关信息的查询。

(3)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一个最短的简单路径。

【选作内容】

(6)扩充每个景点的邻接景点的方向等信息,使得路径查询结果能提供详尽的导向信息。

**************************【以下为类的定义】********************************

#include

#include

using namespace std;

const int MaxSize=18;

const int INFINITY=65535;//最大值无穷

class direction;

template class MGraph;

template

class VertexNode//定义头结点

{

friend class MGraph;

public:

int vex;//顶点名称

T vexname;//顶点名称

T vexinf;//顶点信息

direction dir;//存放顶点方位信息的direction类的dir。

};

class direction

{

public:

int ln;//存放在方向图中的横坐标,表示东西

int col;//存放在方向图中的纵坐标,表示南北

};

template

class MGraph//定义无向图的邻接矩阵

{

public:

MGraph();

//构造函数,初始化具有n个顶点的图

void printvexname();//显示所有景点及景点代号

void printvexinf(int i);//显示代号为i景点的名称及信息

void printroad(int i,int j);//显示景点i~j的最短路径方案信息

void printdir(int i,int j);//显示景点i到j的方向信息,如“向东100m,向南200m”

VertexNode adjlist[MaxSize]; //存放景点全部信息的景点类数组

int vertexNum,arcNum; //图的顶点数和边数

void Root(int p,int q);//递归寻找pq间的最短路径

int Path[MaxSize][MaxSize],Dist[MaxSize][MaxSize];//创建Path和Dist分别存放两点间最短路径的前驱节点,两点间最短路径长度

int Line[MaxSize];//Line存放路径

int kkk;//Line[]数组的标记

private:

T vertex[MaxSize]; //存放图中顶点的数组

int arc[MaxSize][MaxSize];//存放图中边的数组

};

*************************【以下为类的实现即类函数的定义】*********************************** template

MGraph::MGraph()//a[]为景点代号,b[]为景点名称,c[]为景点信息,d[]为景点方位信息的横坐标,e[]为景点方位信息的纵坐标

//s[]为存放景点邻接矩阵信息的一维数组,根据其对称性可以用公式赋值给二维数组arc[][]

{

int s[]={0,

1,0,

0,2,0,

0,0,2,0,

0,0,2,3,0,

0,0,0,4,2,0,

0,0,0,0,2,3,0,

0,0,0,0,2,3,1,0,

0,0,2,0,2,0,0,2,0,

4,0,2,0,0,0,0,0,1,0,

0,0,0,0,0,0,0,0,0,2,0,

1,0,0,0,0,0,0,0,0,0,2,0,

0,0,0,0,0,0,0,0,0,3,0,0,0,

0,0,0,0,0,0,0,0,0,0,0,0,2,0,

0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,

0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,

0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,2,0,

0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,0,2,0};

int a[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17};

char* b[]={"南门","实验楼","南图","大活","睿思楼","大礼堂",

"南4教","知行楼","国交楼","南3教","南2教","南1教",

"北图","北3教","北4教","北2教","北1教","北门"};

char* c[]={"南校区正门","物理实验楼","南校区图书馆","大学生活动中心",

"教师办公楼、医务室及留学生公寓","大礼堂,用于举办各种文艺演出","南校区第4教学楼","实习基地,计算机房等", "国际交流中心,教职工餐厅","南校区第3教学楼","南校区第2教学楼","南校区第1教学楼",

"北校区图书馆","北校区第3教学楼","北校区第4教学楼","北校区第2教学楼",

"北校区第1教学楼","北校区正门"};

int d[]={8,6,4,4,1,0,0,1,3,4,6,8,4,3,2,3,5,8};

int e[]={8,8,8,10,8,10,7,6,6,6,6,6,3,1,0,0,0,2};

int i,j;

vertexNum=18;

arcNum=30;

for(i=0;i

{

adjlist[i].vex=a[i];

adjlist[i].vexname=b[i];

adjlist[i].vexinf=c[i];

adjlist[i].dir.ln=d[i];

adjlist[i].dir.col=e[i];

}

for (i=0; i

for (j=0; j

arc[i][j]=arc[j][i]=s[(i*(i+1))/2+j]; //根据s[]的对称性,将一维数组中的数据赋给二维数组arc[][]

}

template

void MGraph::printvexname()

{

int i;

for(i=0;i

cout<

}

相关文档
最新文档