《C++校园导游系统课程设计.doc》由会员分享,可在线阅读,更多相关《C++校园导游系统课程设计.doc(14页珍藏版)》请在金锄头文库上搜索。
1、DONGFANG COLLEGE,FUJIAN AGRICULTURE AND FORESTRY UNIVERSITYC+程序设计课程设计报告课程设计: 校园导游系统 系 别: 计算机系 年 级: 10级 专 业: 计算机科学与技术 班 级: 1班 学 号: 姓名: 成 绩: 任课教师: 2012 年 8 月 20 日目录1.需求分析 3.概要设计.33.详细设计.34.使用说明.35.测试结果.46.附录57.参考文献14 1. 需求分析设计一个校园导游程序,为来访的客人提供各种信息查询服务。2. 概要设计(1) 设计你所在学校的校园平面图,所含景点不少于10个。以图中顶点表示校内各景点,存
2、放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。(2)为来访客人提供图中任意景点相关信息的查询。(3)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。3. 详细设计1. 以输出流显示校园的界面2. 以图的形式存储校园景点3. 以循环算法运行操作界面4. 以函数调用实现导游功能界面显示函数图的存储主函数实现功能4. 使用说明1. 运行时显示校园景观图,同时显示选择菜单2. 选择菜单:1.地点介绍 2.最短路径 3.结束 “请选择功能”3. 地点介绍:出现景点选择:A.操场 B.偏门 C.图书馆 D.大门 E.食堂 F.诚智楼 G.博学楼 H.
3、创新楼 I.海天楼 J.明德楼 请选择地点(选择加回车即能查询景点信息)4. 最短路径:出现“输入起点位置”,输入后即出现“输入终点位置”(输入加回车即显示两景点的最短路径)5. 测试结果1. 运行界面2. 地点介绍3. 最短路径6. 附录1. 校园景观图实现函数:void viewshow()cout 东方学院实景图endl;coutendl;cout A操场-B偏门endl;cout / endl;cout / endl;cout C图书馆-D大门 E食堂-endl;cout / endl;cout / F诚智楼-G博学楼-H创新楼endl;cout / /endl;cout I海天楼-J
4、明德楼endl;coutendl;2. 建立图函数:#includeSeqList.h#includeSeqQueue.hconst int MaxVertices=10;const int MaxWeight=10000;class AdjMWGraphprivate:SeqList Vertices;/顶点信息的线性表int EdgeMaxVerticesMaxVertices;int numOfEdges;public:AdjMWGraph(const int sz=MaxVertices); int GraphEmpty( )constreturn Vertices.ListEmpty
5、( );int NumOfVertices(void)return Vertices.ListSize( );int NumOfEdges(void)return numOfEdges;VerT GetValue(const int i);int GetWeight(const int v1,const int v2);void InsertVertex(const VerT &vertex);void InsertEdge(const int v1,const int v2,int weight);void DeleteVertex(const int i);void DeleteEdge(
6、const int v1,const int v2);int GetFirstNeighbor(const int v);int GetNextNeighbor(const int v1,const int v2);void DepthFirstSearch(const int v,int visited,void visit(VerT item); void BroadFirstSearch(const int v,int visited,void visit(VerT item); void DepthFirstSearch(void visit(VerT item);void Broad
7、FirstSearch(void visit(VerT item); AdjMWGraph:AdjMWGraph(const int sz)for(int i=0; isz; i+)for(int j=0; jsz; j+)if(i = j) Edgeij=0;else Edgeij=MaxWeight;numOfEdges=0;VerT AdjMWGraph:GetValue(const int i)if(iVertices.ListSize()cerr参数i越界出错!endl;exit(1);return Vertices.GetData(i);int AdjMWGraph:GetWeig
8、ht(const int v1,const int v2)if(v1Vertices.ListSize()|v2Vertices.ListSize()cerr参数v1或v2越界出错!endl;exit(1);return Edgev1v2;void AdjMWGraph:InsertVertex(const VerT &vertex)Vertices.Insert(vertex,Vertices.ListSize();void AdjMWGraph:InsertEdge(const int v1,const int v2,int weight)if(v1Vertices.ListSize()|
9、v2 Vertices.ListSize()cerr参数v1或v2越界出错!endl;exit(1);Edgev1v2=weight;numOfEdges+;void AdjMWGraph:DeleteVertex(const int v)for(int i=0;iVertices.ListSize();i+)for(int j=0;j0 &EdgeijMaxWeight)Edgeij=MaxWeight;numOfEdges-;Vertices.Delete(v);void AdjMWGraph:DeleteEdge(const int v1,const int v2)if(v1Vertic
10、es.ListSize()|v2Vertices.ListSize()|v1=v2)cerr参数v1或v2出错!endl;exit(1);Edgev1v2=MaxWeight;numOfEdges-;int AdjMWGraph:GetFirstNeighbor(const int v)if(vVertices.ListSize( )cerr参数v1越界出错!endl;exit(1);for(int col=0;col0&EdgevcolMaxWeight) return col;return -1;int AdjMWGraph:GetNextNeighbor(const int v1,con
11、st int v2)if(v1Vertices.ListSize()|v2Vertices.ListSize()cerr参数v1或v2越界出错!endl;exit(1);for(int col=v2+1; col0&Edgev1colMaxWeight)return col;return -1; void AdjMWGraph:DepthFirstSearch(const int v,int visited,void visit(VerT item)visit(GetValue(v);visitedv=1;int w=GetFirstNeighbor(v);while(w!=-1)if(!visitedw)DepthFirstSearch(w,visited,visit);w=GetNextNeighbor(v,w);