资源描述
课程设计论文(附有代码!)
题 目: 校园导游咨询
学 院: 计算机科学与工程学院
专 业: 计算机科学与技术
姓 名:
学 号:
指导教师:
2014年9月22日
摘 要
桂林众山环绕,风景优美,加之近年来校园环境也得到不断地改善,来访校园的游客逐渐增加,为了方便众多游客对校园景点的参观,需要给来访人士提供校园导游咨询服务,利用计算机建立一个便利的咨询系统可以很好地解决这个问题。
在本设计实验中,我所采用的是邻接矩阵作为数据的存储结构,用不同的功能模块对两地距离和校园道路信息进行编辑。当游客来访时,系统能根据用户输入的景点代号查询景点信息,提供任意两个景点间的最短路径查询,并能查询校园内的交通信息,方便游客访问。工作人员还可以为校园更新景点以及路径信息。
本文将简单介绍该系统的开发背景,详细介绍系统的主要设计思路,函数的建立和使用过程,该系统功能的实现方式和实现结果,以及对所遇到问题的分析解决,最后对该系统进行总结描述。
关键词:校园导游咨询;C++;数据结构;最短路径;查询;
目 录
引言 ………………………………………………………………………1
1系统概述…………………………………………………………………………1
2需求分析…………………………………………………………………………1
2.1 系统需求………………………………………………………………………1
2.2 开发环境………………………………………………………………………2
3详细设计…………………………………………………………………………3
3.1 系统结构………………………………………………………………………3
3.2 数据结构设计以及数据的初始化……………………………………………4
3.2.1 图结构设计…………………………………………………………………4
3.2.2 数据的初始化………………………………………………………………4
3.3 查询模块的详细设计…………………………………………………………5
3.3.1 查询模块功能子函数设计…………………………………………………5
3.4 更新功能模块详细设计………………………………………………………7
3.4.1 更新模块功能子函数设计…………………………………………………8
4所遇到的问题和分析解决…………………………………………………10
5系统特色及关键………………………………………………………………11
6结论…………………………………………………………………………12
参考文献 ………………………………………………………………13
引言
随着计算机科学技术的不断提高,计算机依靠其强大的功能已经成为人们生活中不可缺少的一部分,计算机能解决人类生活中的大部分问题,为人类文明和社会进步做出了巨大贡献。
桂林是一个全世界著名的旅游城市,近几年来旅游业得到了飞速的发展,来自各个国家各个城市的游客给城市带来了巨大的经济效益。地处尧山地带的桂林电子科技大学风景非常优美,随着我们大学知名度的提高,来访游客数量大大增加,这就需要我们建立一个校园导游咨询系统来解决游客的来访咨询,为游客提供所需要了解的景点信息,或者统观所有景点信息后再选择需要参观的景点;校园里有公车巴士等交通工具,价格合理,乘坐方便,可以为游客们提供代步工具,系统可以为游客提供所有的交通方式由游客自行选择。当游客们参观完某景点需要参观下一个景点时,系统可以为其提供两景点间的最短路径,减少游客的步行量。
最终的目的是给各位游客们提供参观校园的便利,让游客更好地了解我们的大学。使校园旅游实现管理信息化,智能化。
1 系统概述
从选定题目之后,本人在校园内做了实地调查,画出了大致的校园平面图;并查找相关资料,熟悉了开发环境以及图结构的知识。参考了资料书上的其他类似案例,对系统的开发做了较好的准备。
该系统是由用户、管理员、计算机组成的用以进行校园咨询校园更新的系统。可实现通过认为输入查询各类景点信息,交通信息;当校园景点更新时,工作人员可以及时地通过系统更新景点信息,为游客提供任意两景点之间的最短路径。
2 需求分析
2.1 系统需求
校园导游咨询系统的基本要求:
(1)设计你所在学校的校园平面图,所含景点不少于10个。
(2)以图中顶点表示校内各景点,存放有景点名称、编号、简介等信息;以边表示路径,存放路径长度等相关信息。
(3)为来访客人提供图中任意景点相关信息的查询。
(4)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。
(5)必须具有校园平面图的修改和扩充功能,即某些景点坐标的修改和景点个数的增加。 (6)需要有5条以上的文件记录。
(7)为游客提供校园交通方案的查询。
(8)能够根据景点实际变化进行景点信息的更新。
(9)能够将更新后景点信息传入到文本文件里保存。
程序设计分析:
(1)构造一个无向带权网G并用邻接矩阵来存储;
(2)利用Dijkstra算法来计算出起点到各个顶点之间的最短路径并进行存储,弗洛伊德算法将找出每一对顶点之间的最短路径;
系统的输入与输出:
(1) 键盘输入。
(2) 磁盘输入输出。
该系统需要具备下面几个使用要求:
(1)需要有友好的系统界面,易于理解,操作简单,中文菜单。
(2)数据处理要保证精确度,能给予用户实际有效的信息。
(3)当用户输入错误,需要有友好的提醒界面,并能再次输入。
(4)将用户需要的信息完整地输出到系统界面,不能输出无用信息和不完整的信息。
(5)系统易于读懂,易于维护和扩充。
2.2 开发环境
校园导游咨询系统在联想计算机上进行开发配置为:
CPU:AMDTrinityAPUA8-4500M CPU @ 2.30GHz
操作系统为 windows 7 旗舰版(64)
开发平台是VC++6.0
开发语言:C++
C++是在C语言的基础上开发的一种集面向对象编程、泛型编程和过程化编程于一体的编程语言。应用较为广泛,是一种静态数据类型检查的,支持多重编程的通用程序设计语言。它支持过程化程序设计,数据抽象,面向对象设计,制作图标等多种程序设计风格。
3 详细设计
3.1 系统结构
从该系统整体结构上分析,该系统主要分为查询模块和更新模块,查询模块包括景点信息查询,任意两景点间的最短路径查询,校园交通方案的查询这三个基本查询功能,基本上满足来访游客的查询需求。更新模块包括校园景点信息更新,校园景点道路更新,车辆行驶路线更新等功能,可以对校园各个信息进行更改,以便于来访游客能了解到景点的最新信息。这两个模块之间通过这里已经具有了紧密的联系。
因为各种查询必须建立在各种数据的输入更新之上,当校园信息改变时,游客查询得到信息也应该是更新过后的信息。通过查询模块与更新模块之间的功能联系,就可以实现一个有机的循环。
系统基本运行界面如下所示,这里我用了一个while(1)将开始菜单放到一个初始大循环里,当用户操作完成一项基本功能后便会自动回到这个主菜单,方便下一个用户的使用。用一个switch(k)由用户输入的相应字符来执行相应的功能函数,最后可以按#号键退出。
3.2数据结构设计以及数据的初始化
3.2.1图结构设计
在本系统中,需要使用图结构来存储各个景点数据。图由若干边和若干顶点组成,在这里每个顶点对应的景点包含有景点编号,景点坐标,景点名称,景点简介这些信息。
图是一种非线性的数据结构,其中的数据元素之间是多对多的的关系。对于校园景点来说,其中每一个景点可以看做是一个顶点,若两个景点之间可以直接到达,那么他们有一条边相连,在边上附加一个权值,代表两个景点间的距离。若两景点间不能直接到达,我们可以使用一个给定的数值来代表距离的无穷大。
我们使用邻接矩阵来表示图,它由一个顺序存储顶点信息的顶点表和一个存储顶点间的相互关系的关系矩阵两部分组成。
如下所示,图结构包括当前顶点数目,当前边的数目。用一个一维数组来存放顶点,用一个二维数组来存放边。
typedef struct
{
int n,e; //顶点数目,边数目
Vertex vexs[MaxVertexNum]; //存放顶点
Vertex* pvexs; //顶点指针
int edges[MaxVertexNum][MaxVertexNum]; //存放边
}MGraph;
3.2.2数据的初始化
图结构定义好之后,就需要把图结构中的各个数据项初始化。方便后边程序的使用。
首先在程序中定义一个图的全局变量MGr,初始时默认顶点个数也就是景点个数为15,给每个景点按照校园地图附上景点信息,并用一个for循环暂时先给图中每一条边赋值为无穷大,顶点到自身的距离为0。
然后通过一个int mile(int a,int b)函数,通过给定的两个景点的编号来调用两个景点的x,y坐标进而求出它们间的距离。并将求出来的距离赋值到图结构的相应的边上。
在车辆结构中,也先定义一个车类型的全局变量,用数组来表示三种不同类
型的车辆,每种车型包含有车辆名称,车辆速度,车辆票价,车辆行驶路线等基本信息。
3.3 查询模块的详细设计
本模块主要用于实现游客对现有景点的信息的查询,通过这个模块的功能可以为游客提供需要查找的景点信息。
由于本系统需要使用文本文件来存储景点信息,所以我们在程序里要首先创建一个文本文件来存放所有的景点信息,当使用景点查询功能时,首先在文本文件中找到对应的景点信息,然后从文本文件里输出并显示。
考虑到如果用户需要一次性查询所有景点信息,则将文本文件里的所有景点信息输出显示。
在该模块中,程序还可以实现两个景点间最短路径的查询。图结构中已经存放有边的长度的数组,任意两个景点之间可以有多条路径到达,为了能使用户快速地到达,使用Dijstra算法和打印函数可以实现最短路距离的查询,并将该条路径顺序打印到屏幕上。
为了使功能丰富,这里还添加了校园交通方案的查询。提供给用户两个景点之间的多种交通方案供用户选择。给每一种类型的车辆规定一条路径,该种车辆在这条道路上往返,能够经过某些景点,但也有某些景点不能通过。反馈给用户包括车型、车辆从出发点到终点所用的时间、票价信息。
3.3.1查询模块功能子函数设计
(1) void writefile()函数
文本文件的读入函数。使用ofstream fout("ST3.txt")来实现建立打开一个文本文件,并用一个for循环来依次读入校园景点信息,每一个景点信息存放为一行,信息读入完成关闭ST3.
(2) void find(int i)与void allvexs()函数
这里的整型参数i代表着需要查询的校园景点的编号,使用ifstream fin("ST3.txt")来打开存放有所用景点信息的文本文件,用一个for循环来查找该编号是否存在。在void allvexs()中用一个for循环多次调用void find(int i)函数,实现对所有景点信息的查询。
(3) void Dijkstra(MGraph *G,int v,int path[],int dist[])函数
这里使用了著名的Dijkstra算法,它可以实现求出图中某个源点到其余各顶点的最短路径。按照路径长度递增的次序产生最短路径。首先在程序中定义两个个数组dist[MaxVertexNum]、path[MaxVertexNum],数组元素path[i]用来存放各个顶点的顶点信息,其中每个元素dist[i]表示起点V0到每个终点的最短路径长度。
假设S表示以求出的最短路径的终点集合,那么下一条最短路径即从顶点V0到达顶点Vx的路径,它们之间的最短路径长度要么为弧<V0,Vx>的权值,要么为dist[j]与Vj到Vx的权值之和。因此下一条路径可以用dist[x]=G->edges[v0][Vx]或者dist[x]=dist[j]+G->edges[Vj][Vx]来存放源点到该顶点的最短路径。
(4) int DispPath(MGraph *G,int path[],int dist[],int start,int end)函数
由于前面定义的一维数组dist[]和path[]已经在Dijstra函数中将最短路径上的顶点信息和源点到各顶点的距离保存了下来,这时就需要定义一个DispPath函数来输出最短路径上的顶点信息及总距离。系统通过调用用户输入的两个景点编号确定起始景点和目的景点,并使用一个while循环实现依次递
减将各景点信息输出。
查询1号景点到4号景点的最短路径:
(5) float Time(int a,int b,int c)和int li(int a,int b,int i)函数
在车辆类型的初始化中已经为各个车辆录入相关的车辆信息,使用一个一维数组Car.mycar[i].licheng来存放车辆运营的景点历程,规定它所能经过的景点。利用time()函数来求往返两景点需要的时间。在li()函数中首先需要用for遍历判断用户输入的两个景点是否在车辆规定的运营路径上,由于部分景点不通过,所以路程不能由最短路径求出,只能通过使运营路径上相邻的景点一一相加求出,除以车辆速度,返回一个时间值。最后用li()函数将各个信息输出,无法到达的景点给出相应提示。
3.4 更新功能模块详细设计
校园导游咨询系统的另一个功能模块就是对于整个系统的数据具有一定的更新功能,对于管理人员而言,当校园环境发生实时变化,他们就需要修改系统内部原本的旧信息,把变化后的新信息录入到系统当中。对于游客而言,他们需要的是当下最新的景点和路径等校园信息,以确定他们的校园旅游方案,不至于出现错误的访问方式。
由上面的叙述可知,最初的景点数据信息已经保存在文本文件中了,每个景点信息都占用一行。当某个景点暂停开放或施工,游客是不能访问的,这时就需要从文本文件中删去其中的一行景点信息,游客在访问时就无法得到这个景点的信息。
当校园中道路需要关闭通行时,除去路径首尾的两个景点之间的相邻关系,用无穷大替换掉原有的权值,使得他们无法直接到,这样就可以实现道路的删除。同样,当开放新的校园景点和开通新校园道路时,系统也就必须具有校园景点和校园路径的增加功能,管理员可以在不同的地理方位定义新的景点,录入新的景点信息,增加景点与景点之间的相邻关系,通过改变权值,使它们能够直接到达。
校园景点地理位置也可以根据实际规划进行修改,通过x,y坐标的调整可以改变整个校园平面图,合理使用可以达到良好的景点排版效果。对于校园的变化,以及乘客的需要,我们还要适当地调整校园车辆的运营线路,方便官大游客的访问。
在更新模块中,要特别注意错误处理和条件的判定问题,因为旧的校园信息可能与需要更新的校园信息所冲突,例如地理位置冲突,景点名称冲突等,输入重复以及不合法的输入都可能带给游客错误的信息,所以需要通过必要的提醒信息引导游客的使用。
3.4.1更新模块功能子函数设计
(1) void addvex()函数
景点的添加函数。首先判断景点个数是否达到约定的最大景点个数,否则继续添加新景点的各个景点信息,注意这里的X,Y坐标的输入。用一个for循环将邻接矩阵中新的行和列MGr.edges[i][j]、MGr.edges[j][i]初始化赋值为无穷大。用ofstream fout("ST3.txt",ios::app)打开原来存放景点信息的文本文件实现将新的景点信息添加到原文本文件的末行。图中顶点个数MGr.n++,添加结束。
增加景点编号为15的景点。
(2) void addedge()函数
校园道路添加函数。由用户输入需要添加路径的原有的两个景点的编号,判断输入是否有错,输入正确时,通过这两个景点的坐标给这条路径赋上相应的权值。
(3) void zuobiao() 函数
修改校园景点坐标函数。由用户输入需要修改的景点的编号,接着给景点输入新的坐标值,主要判断该新坐标是否已经存在,否者会影响最短路径函数的使用。修改完成后,使用writefile()函数将修改后的景点信息重新录入前面定义的文本文件ST3.TXT中。
修改景点编号为0的坐标信息。
(4) void delroad()函数
道路删除函数。由用户输入需要删除路径的两个景点的编号,判断该路径权值是否为无穷大,修改邻接矩阵中相应的矩阵元素,将路径长度权值赋值为无穷大。
(5)void del()函数
景点关闭函数。由管理员输入需要关闭的景点编号,用一个for循环将所有能直接到达该点的路径赋值为无穷大,把景点信息改为关闭。打开文本文件,fin.open("ST3.txt"),定义一个图类型的指针MGraph *p=NULL,并给它分配对应顶点大小的空间。为了将文本文件里的景点信息删除,用指针对其标上-1删除记号,ofstream fout("ST3.txt"),打开文件,再次读入文本,当有-1标号的不再读入,从而实现了在文本文件内将景点信息删除掉。
删除景点2和景点3
(6) void gaidao()函数
校园交通车辆的改道函数。首先定义一个一维数组d[MaxVertexNum]用来存放顶点信息,由管理员选择需要修改运营路径的车辆类型,用一个for循环实现依次输入车辆运营路径上所经过的景点,这样就完成了一条新的站点线。将数组中的元素存入 车辆类型的历程数组中,Car.mycar[a].licheng[i]=d[i]。并在屏幕上输出这条线路。
改变公交车的行驶路线。
4 所遇到的问题和分析解决
(1) 在进行文件读写时,只能读出最原始的数据,当对景点信息进行更新后,文件里的信息没有变化。
解决方法:在对景点信息进行更新的功能函数里添加写函数,将修改后的内容再次写入人本内保存。再次验证,结果正确。
(2) 当用户输入错误时,利用函数递归进行再一次调用使用户再一次输入,在退出子函数回到上一层函数时出现了其他无关功能干扰项或者又从该函数体中再次进入该函数继续执行,多次输入错误,就出现了多次函数重复输出,影响了函数功能的使用。
解决方法:在函数中只使用if 、else if条件判断来分隔函数调用,并使得函数回到主体函数时就结束。
(3)在使用删除功能的时候,不知道如何实现对文本中指定的某一行的删除。
解决方法:通过看书和百度等工具,查阅相关的资料,并向其他同学询问。在程序上慢慢调试,直到解决问题。
(4)在系统完成初期,对用户使用的考虑不周全,自己可以熟练使用此系统,但是他人却不能在没有提示的情况下使用此系统,说明了该系统此时并不具备太多人性化,还不适合用户使用。
解决方法:站在用户的角度,充分考虑用户的使用习惯,让其他同学时使用此系统,收集使用评价进一步改善用户使用情况。
(5)在算法的编写时有很多语法和逻辑错误,一直调试不成功,输出的数据不正确。
解决方法:重新复习该算法内容,在草稿纸上将程序上的算法步骤一一列出来,判断出错误出现的地方进行修改。
5 系统特色及关键技术
(1) 在文本文件中删除指定的一行信息。
(2) Dijstra算法。
6 结论
1、 通过暑假期间的学习准备以及这一段时间对课程设计的学习开发,校园导游咨询系统已经基本完成,能够实现系统所要求的基本功能。完成后的系统能够根据用户的输入实现一系列查询功能,根据管理人员的输入完成添加、删除、修改等更新功能。具体功能为(1)查询指定校园景点信息(2)查询所有校园景点信息(3)校园景点间的最短路径查询(4)校园景点交通方案查询(5)增加一个校园景点(6)增加一条校园道路(7)修改校园景点地理坐标(8)关闭校园景点(9)修改车辆的运营路段。完成后的系统对于设计阶段的功能要求有了一定的增加和完善,使得它更为人性化。
2、(1)由于未能做好充分的准备查找到先关资料以及个人能力还是有限,所以未能完成校园整体平面图的打印输出以及更新功能。
(2)在校园交通方案的制作中,由于设计的校园车型数量少和校园地图较为简单,没有对游客给出最佳的交通方案。
3、 经过本次对算法与数据结构的课程设计,我得到了很多收获以及经验体会。本次课设让我真正对图这种数据结构有了清晰的了解,能将上学期所学知识真正应用到了实践当中,能结合生活实际通过计算机解决生活中的问题。
4、 其次我要感谢我的指导老师。在课程设计上给予了我很多帮助,这是我能顺利完成这次报告的主要原因。课程设计的细节和每个数据,都离不开你们的细心指导。这一次的课程设计也让我明白自己对所学知识并不能熟练应用,常用的C语言语句掌握不好,有时也会犯语法错误,经常需要重新翻开课本重读它的概念用法。在设计过程中对于用户的需求分析夜了一定进步,能把用户的基本需求在计算机中总结并实现。本次课程设计也让我知道在今后的学习中,必须端正态度,打好基础,才能熟练地运用所学的知识。
参考文献
数据结构实用教材 (C语言版)电子工业出版社 丛书主编 郑阿奇 2011年4月 算法与数据结构 (第3版) 高等教育出版社 丛书主编 张乃孝 2012年1月 C语言程序设计 (第二版) 清华大学出版社 丛书主编:谭浩强 2009年10 月
代码;
#include<iostream>
#include <fstream>
#include <iomanip>
#include<cmath>
#include<string>
using namespace std;
#define MaxVertexNum 30 //景点个数最大30
#define MAXCOST 1000 //定义路径的无穷大
typedef struct
{
int number; //景点编号
int x,y; //景点坐标
char name[20]; //景点名称
char introduce[100]; //景点简介
}Elemtype;
typedef struct //定义顶点
{
int num; //顶点编号
Elemtype date; //顶点信息
}Vertex;
typedef struct
{
int n,e; //顶点数目,边数目
Vertex vexs[MaxVertexNum]; //存放顶点的一维数组
Vertex* pvexs;
int edges[MaxVertexNum][MaxVertexNum]; //存放边的长度
}MGraph;
typedef struct
{
char name[10]; //车型类别
int sudu; //车的行驶速度
int price; //车票票价
int licheng[20]; //车子所能经过的景点的景点编号
int Num; //所经过顶点的数目
}cartype;
typedef struct
{
cartype mycar[3];
}CAR;
CAR Car;
MGraph MGr; //全局变量,定义MGr为MGraph类型
int path[MaxVertexNum]; //最短路径上的顶点信息
int dist[MaxVertexNum]; //源点到各顶点的距离
int mile(int a,int b) //给定两个顶点,由景点坐标求其距离
{
int c,d;
c=MGr.vexs[a].date.x-MGr.vexs[b].date.x;
d=MGr.vexs[a].date.y-MGr.vexs[b].date.y;
return sqrt(c*c+d*d);
}
void initMGraph() //初始化图
{
int i,j;
MGr.n=15; //初始景点至少15个
MGr.e=16; //由16条道路连通
for(i=0;i<MGr.n;i++) //初始化存放边权值的数组
{
for(j=0;j<MGr.n;j++)
{
MGr.edges[i][j]=MAXCOST;
}
}
for(i=0;i<MGr.n;i++)
{
MGr.edges[i][i]=0; //顶点到自身距离为0
}
}
void howlong() //由顶点坐标求其间距离
{
MGr.edges[0][1]=MGr.edges[1][0]=mile(1,0);
MGr.edges[0][2]=MGr.edges[2][0]=mile(2,0);
MGr.edges[0][4]=MGr.edges[4][0]=mile(4,0);
MGr.edges[2][3]=MGr.edges[3][2]=mile(3,2);
MGr.edges[4][5]=MGr.edges[5][4]=mile(5,4);
MGr.edges[5][6]=MGr.edges[6][5]=mile(6,5);
MGr.edges[7][8]=MGr.edges[8][7]=mile(8,7);
MGr.edges[3][7]=MGr.edges[7][3]=mile(7,3);
MGr.edges[7][9]=MGr.edges[9][7]=mile(9,7);
MGr.edges[9][10]=MGr.edges[10][9]=mile(10,9);
MGr.edges[9][11]=MGr.edges[11][9]=mile(11,9);
MGr.edges[9][12]=MGr.edges[12][9]=mile(12,9);
MGr.edges[12][13]=MGr.edges[13][12]=mile(13,12);
MGr.edges[13][14]=MGr.edges[14][13]=mile(14,13);
MGr.edges[14][1]=MGr.edges[1][14]=mile(14,1);
MGr.edges[6][9]=MGr.edges[9][6]=mile(9,6);
}
void info()
{
MGr.vexs[0].num=0;
MGr.vexs[0].date.x=250;
MGr.vexs[0].date.y=0;
MGr.vexs[0].date.number=0;
strcpy(MGr.vexs[0].date.name,"信息科技学院");
strcpy(MGr.vexs[0].date.introduce,"桂电附属三本学院");
MGr.vexs[1].num=1;
MGr.vexs[1].date.x=200;
MGr.vexs[1].date.y=0;
MGr.vexs[1].date.number=1;
strcpy(MGr.vexs[1].date.name,"学校正门");
strcpy(MGr.vexs[1].date.introduce,"花江校区大门");
MGr.vexs[2].num=2;
MGr.vexs[2].date.x=250;
MGr.vexs[2].date.y=50;
MGr.vexs[2].date.number=2;
strcpy(MGr.vexs[2].date.name,"迎宾桥");
strcpy(MGr.vexs[2].date.introduce,"迎宾桥,意在迎接来客");
MGr.vexs[3].num=3;
MGr.vexs[3].date.x=250;
MGr.vexs[3].date.y=150;
MGr.vexs[3].date.number=3;
strcpy(MGr.vexs[3].date.name,"图书馆");
strcpy(MGr.vexs[3].date.introduce,"近年才建成的西南最大图书馆");
MGr.vexs[4].num=4;
MGr.vexs[4].date.x=300;
MGr.vexs[4].date.y=80;
MGr.vexs[4].date.number=4;
strcpy(MGr.vexs[4].date.name,"实训楼");
strcpy(MGr.vexs[4].date.introduce,"同学们学习的地方,国家级电子实验室");
MGr.vexs[5].num=5;
MGr.vexs[5].date.x=300;
MGr.vexs[5].date.y=130;
MGr.vexs[5].date.number=5;
strcpy(MGr.vexs[5].date.name,"游泳馆");
strcpy(MGr.vexs[5].date.introduce,"学校里唯一的泳场,共有两个泳池");
MGr.vexs[6].num=6;
MGr.vexs[6].date.x=300;
MGr.vexs[6].date.y=180;
MGr.vexs[6].date.number=6;
strcpy(MGr.vexs[6].date.name,"国防生训练场");
strcpy(MGr.vexs[6].date.introduce,"这里是国防生们进行各种军事训练的地方");
MGr.vexs[7].num=7;
MGr.vexs[7].date.x=250;
MGr.vexs[7].date.y=200;
MGr.vexs[7].date.number=7;
strcpy(MGr.vexs[7].date.name,"科技楼广场");
strcpy(MGr.vexs[7].date.introduce,"这里视野开阔,场地平整,紧挨着相思湖");
MGr.vexs[8].num=8;
MGr.vexs[8].date.x=200;
MGr.vexs[8].date.y=200;
MGr.vexs[8].date.number=8;
strcpy(MGr.vexs[8].date.name,"第五教学楼");
strcpy(MGr.vexs[8].date.introduce,"计算机科学与工程学院办公学习楼");
MGr.vexs[9].num=9;
MGr.vexs[9].date.x=250;
MGr.vexs[9].date.y=250;
MGr.vexs[9].date.number=9;
strcpy(MGr.vexs[9].date.name,"学校食堂");
strcpy(MGr.vexs[9].date.introduce,"这里有4个独立食堂以及3楼其他各色的美食铺");
MGr.vexs[10].num=10;
MGr.vexs[10].date.x=230;
MGr.vexs[10].date.y=280;
MGr.vexs[10].date.number=10;
strcpy(MGr.vexs[10].date.name,"田径场");
strcpy(MGr.vexs[10].date.introduce,"跑步锻炼身体的地方");
MGr.vexs[11].num=11;
MGr.vexs[11].date.x=280;
MGr.vexs[11].date.y=280;
MGr.vexs[11].date.number=11;
strcpy(MGr.vexs[11].date.name,"商业街");
strcpy(MGr.vexs[11].date.introduce,"学校的商业街,美食街,同学购物的地方");
MGr.vexs[12].num=12;
MGr.vexs[12].date.x=150;
MGr.vexs[12].date.y=300;
MGr.vexs[12].date.number=12;
strcpy(MGr.vexs[12].date.name,"风雨体育馆");
strcpy(MGr.vexs[12].date.introduce,"里面有健身房,羽毛球场,篮球场,舞蹈室等体育设施");
MGr.vexs[13].num=13;
MGr.vexs[13].date.x=100;
MGr.vexs[13].date.y=300;
MGr.vexs[13].date.number=13;
strcpy(MGr.vexs[13].date.name,"网球馆");
strcpy(MGr.vexs[13].date.introduce,"这里是校园里唯一的室内网球设施");
MGr.vexs[14].num=14;
MGr.vexs[14].date.x=50;
MGr.vexs[14].date.y=350;
MGr.vexs[14].date.numbe
展开阅读全文