C++校园导游系统课程设计
校园导游程序设计
《数据结构课程设计》报告课题名称:校园导游程序专业:班级:学号:姓名:2012 年12 月31 日目录目录 (1)1 前言 (2)2需求分析 (3)3概要设计 (3)4详细设计 (3)5源代码及调试 (3)6特殊问题解决方法 (8)7使用说明及测试结果 (9)8结论 (11)9总结与体会 (11)10参考文献 (11)1 前言1.1 课题简介课程设计题目名称:校园导游程序课程设计目的:通过《数据结构》课程的学习,将数据结构应用在具体的编程方面,更加了解课程所学习的内容及思维逻辑。
课程设计意义:利用数据结构课程设计,了解学生对《数据结构》的理解和加强学生对数据结构方面的应用知识。
希望今后学生好好利用数据结构的知识和思想,解决各方面的编程难题。
课程设计内容:实现存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。
为来访客人提供图中任意景点相关信息的查询。
为来访客人提供景点的问路查询,即已知一个景点,查询到某景点之间的一条最短路径及长度。
课程设计预期实现效果:(1)设计学校的校园平面图,所含景点不少于10个,以图中顶点表示校内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。
(2)为来访客人提供图中任意景点相关信息的查询。
(3)为来访客人提供景点的问路查询,即已知一个景点,查询到某景点之间的一条最短路径及长度。
1.2 方案及其论证语言:C++运行环境:Microsoft Visual C++ 6.0可行性分析:模拟一个小型的计算器界面,能够输入数学表达式并计算出表达式的结果。
2需求分析实现存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。
为来访客人提供图中任意景点相关信息的查询。
为来访客人提供景点的问路查询,即已知一个景点,查询到某景点之间的一条最短路径及长度3概要设计(特殊功能)3对于本次编程的概要设计,有如下内容:功能设计1:景点查询功能设计2: 查询最短路径。
校园导游系统课程设计
校园导游系统课程设计一、课程目标知识目标:1. 学生能理解校园导游系统的基本概念,掌握其功能结构与操作流程。
2. 学生能运用所学的信息技术知识,结合校园实际情况,设计出实用的校园导游系统。
3. 学生了解并掌握校园导游系统中的地理信息、历史文化等相关知识。
技能目标:1. 学生能够运用所学的编程语言或软件工具,独立或合作完成校园导游系统的设计与制作。
2. 学生通过实践操作,提高自己的信息收集、处理、分析及解决问题的能力。
3. 学生能够通过项目实践,提升自己的团队协作、沟通表达及组织协调能力。
情感态度价值观目标:1. 学生在学习过程中,培养对信息技术的兴趣和爱好,提高主动学习和探究的精神。
2. 学生通过了解校园的历史文化,增强对学校的热爱和自豪感,培养积极向上的情感态度。
3. 学生在团队协作中,学会尊重他人、关心同伴,形成良好的人际关系,树立正确的价值观。
本课程针对中学生设计,结合信息技术学科特点,注重实践操作和团队协作。
课程目标旨在帮助学生将所学知识运用到实际项目中,提高他们的综合能力和素养。
通过本课程的学习,使学生能够更好地了解校园,提升自我解决问题的能力,同时培养他们的团队精神和价值观。
二、教学内容1. 校园导游系统概述- 了解校园导游系统的定义、功能与意义。
- 分析现有校园导游系统的优缺点。
2. 校园地理信息与历史文化- 学习校园地理分布、建筑特点及历史文化背景。
- 收集并整理校园内重要景点的信息。
3. 信息技术应用- 掌握编程语言(如Python)或软件工具(如GIS软件)的基本使用方法。
- 学习数据库管理,整理并存储校园导游信息。
4. 系统设计与制作- 制定校园导游系统的设计方案,明确系统功能模块。
- 学习界面设计,掌握一定的UI设计原则。
- 编程实现校园导游系统的基本功能,如地图导航、景点介绍等。
5. 项目实践与团队协作- 分组进行项目实践,明确分工与协作。
- 定期进行项目进度汇报,交流问题与经验。
(校园导游系统)c语言
校园导游咨询一、目的1、对自己学过的知识进一步的加深理解,对数据构造的算法思想要有更深的理解。
2、通过课程设计,学会通过系统分析、系统设计、编程调试,写实验报告等环节,进一步掌握应用系统设计的方法和步骤,灵敏运用并深化理解典型数据构造在软件开发中的应用。
3、学会综合运用数据构造课程中学到的数据构造和算法,如图的存储构造,数组,迪杰斯特拉算法和Floyd算法等自行实现一个较为完好的应用系统的设计与开发。
二、需求分析1、功能需求〔1〕在菜单中显示校园景点地图。
〔2〕可以查找任意景点的途径。
〔3〕可以自动查找用户键入始点景点和终点景点的最短途径。
〔4〕用户可以查询任意景点的景点信息。
2、输入根据菜单提示键入相应的数字键已完成相应的操作。
例如:在菜单界面中键入数字3,再根据系统提示键入始点和终点对应的编号,系统便会输出相应的途径。
3、输出程序将根据用户键入的数字键,调用相应函数,完成查找过程,并将结果输出到屏幕。
三、概要设计1、变量定义typedef struct //图中顶点表示主要景点,存放景点的编号、名称、简介{char name[30];int num;char introduction[100];//简介}infotype;typedef struct ArCell //定义构造体变量来储存途径长度{int adj; //途径长度}ArCell,AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUMtypedef struct //景点信息的构造体定义:{infotype vexs[MAX_VERTEX_NUM];AdjMatrix arcs;int vexnum,arcnum;}MGraph;MGraph b;2.函数模块void cmd( );//菜单项选择择模块MGraph InitGraph( );//赋值函数void Menu(void);//菜单函数void Browser(MGraph *G);//阅读景点信息的函数void ShortestPath_DIJ(MGraph * G);//迪杰斯特拉算法void Floyd(MGraph *G);//Floyd 算法void Search(MGraph *G);//查找景点信息函()(MGraph *G);//初始化图形void print(MGraph *G);//校园全景显示函数3、流程图四、详细设计MGraph * CreatUDN(MGraph *G)//初始化图形,承受用户输入{int i,j,k,w;char v1[20],v2[20];printf("请输入图的顶点数,弧数:");scanf("%d %d",&G->vexnum,&G->arcnum);printf("请输入景点的编号:、名称、简介:\n");for(i=0;i<G->vexnum;i++){printf("景点编号:");scanf("%d",&G->vexs[i].num);printf("景点名称:");scanf("%s",G->vexs[i].name);printf("景点简介:");scanf("%s",G->vexs[i].introduction);}for(i=0;i<G->vexnum;i++)for(j=0;j<G->vexnum;j++)G->arcs[i][j].adj=INFINITY;printf("请输入途径长度:\n");for(k=0;k<G->arcnum;k++){printf("第%d条边:\n",k+1);printf("景点对(x,y):");scanf("%s",v1);scanf("%s",v2);printf("途径长度:");scanf("%d",&w);i=LocateVex(G,v1);j=LocateVex(G,v2);if(i>=0&&j>=0){G->arcs[i][j].adj=w;G->arcs[j][i]=G->arcs[i][j];}}return G;}void ShortestPath_DIJ(MGraph * G){int v,w,i,min,t=0,x,flag=1,v0;int final[20], D[20], p[20][20];while(flag){printf("请输入一个起始景点编号:");scanf("%d",&v0);if(v0<0||v0>G->vexnum){printf("景点编号不存在!请重新输入景点编号:"); scanf("%d",&v0);}if(v0>=0&&v0<G->vexnum)flag=0;}for(v=0;v<G->vexnum;v++){final[v]=0;D[v]=G->arcs[v0][v].adj;for(w=0;w<G->vexnum;w++)p[v][w]=0;if(D[v]<INFINITY){p[v][v0]=1;p[v][v]=1;}}D[v0]=0;final[v0]=1;for(i=1;i<G->vexnum;i++){min=INFINITY;for(w=0;w<G->vexnum;w++)if(!final[w])if(D[w]<min)final[v]=1;for(w=0;w<G->vexnum;w++)if(!final[w]&&(min+G->arcs[v][w].adj<D[w])) {D[w]=min+G->arcs[v][w].adj;for(x=0;x<G->vexnum;x++)p[w][x]=p[v][x];p[w][w]=1;}}for(v=0;v<G->vexnum;v++){if(v0!=v) printf("%s",G->vexs[v0].name);for(w=0;w<G->vexnum;w++){if(p[v][w]&&w!=v0) printf("-->%s",G->vexs[w].name);t++;}if(t>G->vexnum-1&&v0!=v)printf(" 总道路长%dm\n\n",D[v]); }}//迪杰斯特拉算法Floyd 算法:void Floyd(MGraph *G){int v,u,i,w,k,j,flag=1,p[10][10][10],D[10][10];for(v=0;v<G->vexnum;v++)for(w=0;w<G->vexnum;w++){D[v][w]=G->arcs[v][w].adj;for(u=0;u<G->vexnum;u++)p[v][w][u]=0;if(D[v][w]<INFINITY){p[v][w][v]=1;p[v][w][w]=1;}}for(u=0;u<G->vexnum;u++)for(v=0;v<G->vexnum;v++)for(w=0;w<G->vexnum;w++)if(D[v][u]+D[u][w]<D[v][w]){D[v][w]=D[v][u]+D[u][w];for(i=0;i<G->vexnum;i++)p[v][w][i]=p[v][u][i]||p[u][w][i];}while(flag){printf("请输入出发点和目的地的编号:");scanf("%d%d",&k,&j);if(k<0||k>G->vexnum||j<0||j>G->vexnum){printf("景点编号不存在!请重新输入出发点和目的地的编号:");scanf("%d%d",&k,&j);}if(k>=0&&k<G->vexnum&&j>=0&&j<G->vexnum)flag=0;}printf("%s",G->vexs[k].name);for(u=0;u<G->vexnum;u++)if(p[k][j][u]&&k!=u&&j!=u)printf("-->%s",G->vexs[u].name);printf("-->%s",G->vexs[j].name);printf(" 总道路长%dm\n",D[k][j]);}//Floyd end五、调试分析1、在设计校园全景图的时候,由于在main函数中加了清屏功能的system("cls");,造成地图总是一闪而过出如今界面中。
校园导游程序c课程设计
校园导游程序c课程设计一、课程目标知识目标:1. 学生能理解并掌握C语言中数组、函数、指针等基本概念及其应用;2. 学生能运用结构体、文件操作等知识模块,实现校园导游程序的基本功能;3. 学生了解并掌握程序设计中模块化、结构化的基本方法。
技能目标:1. 学生能运用C语言编写具有实用价值的程序,具备一定的编程能力;2. 学生通过校园导游程序的设计,培养解决实际问题的能力;3. 学生能够进行程序调试与优化,提高程序性能。
情感态度价值观目标:1. 学生在课程学习中,培养对编程的兴趣和热情,树立自信心;2. 学生通过团队合作,培养沟通、协作能力,增强团队意识;3. 学生能够关注校园文化,将课程与实际生活相结合,提高社会责任感。
课程性质分析:本课程为C语言编程实践课,旨在让学生通过实际项目的开发,巩固所学知识,提高编程能力。
学生特点分析:学生已具备C语言基础,具有一定的编程能力,但实际应用经验不足。
教学要求:结合学生特点,课程注重实践操作,引导学生运用所学知识解决实际问题,提高学生的编程素养。
将目标分解为具体的学习成果,以便后续的教学设计和评估。
1. C语言基础知识回顾:数组、函数、指针、结构体、文件操作等;2. 程序设计方法:模块化、结构化编程;3. 校园导游程序功能需求分析:地图展示、路径规划、景点介绍等;4. 校园导游程序设计与实现:- 数据结构设计:景点结构体定义、路径数组等;- 功能模块实现:地图展示、路径规划算法、景点信息查询等;- 界面设计:命令行界面设计、功能菜单编写等;5. 程序调试与优化:调试技巧、性能优化方法;6. 团队合作与项目展示:分组合作、项目汇报与评价。
教学大纲安排:1. 第一周:C语言基础知识回顾,理解并掌握基本概念;2. 第二周:程序设计方法学习,分析校园导游程序需求;3. 第三周:校园导游程序数据结构设计,功能模块划分;4. 第四周:实现各功能模块,编写界面代码;5. 第五周:进行程序调试与优化,确保程序稳定运行;6. 第六周:团队合作,完成项目展示与评价。
(完整word版)校园导游系统课程设计
西安邮电大学(计算机学院)数据结构课程设计报告题目:校园导游系统专业名称:班级:学生姓名:学号(8位):指导教师:设计起止时间:一. 设计目的1.数据结构课程设计是让学生综合运用数据结构课程中学到的几种典型数据结构,以及程序设计语言(C语言),自行实现一个较为完整的应用系统的设计与开发2.通过课程设计,使学生通过系统分析、系统设计、编程调试,写实验报告等环节,进一步掌握应用系统设计的方法和步骤,灵活运用并深刻理解典型数据结构在软件开发中的应用。
3.学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力。
二. 设计内容1.完成校园导游咨询系统。
2.校园平面图(景点、路径等信息)3.利用深度优先和广度优先搜索搜索所有景点4.查询图中任意景点的相关信息5.问路信息(查询任意两个景点之间的一条最短的简单路径,任意两景点之间的所有路径)校园图的关节点、多个景点的最佳访问路线6.校园导游图的界面仿真。
7.添加删除道路信息。
三.概要设计1.功能模块图;选择显示标识信息2.各个模块详细的功能描述。
1.登录模块进入后可添加删除道路信息。
2.路线选择模块选择路线,在右侧窗口显示最短路径3.其他查询景点信息,查看深度优先遍历查看广度优先遍历四.详细设计*重点设计及编码//结点function Node(vexdata){this.vexdata=vexdata;this.node=[];this.weight=[];}//类定义function AdjList(vexnum,arr){this.vexnum=vexnum;this.arcnum=0;this.vertex=[];=[];//名称r=[];//信息this.flag=[];//标记this.arr=[];//存储路径this.ar=[];//存储路径2for(var i=0;i<this.vexnum;i++){this.vertex[i]=new Node(arr[i]);this.flag.push(0);}//增加结点this.addarc=addarc;//增加边this.addvex=addvex;//深度优先搜索this.dfs=dfs;this.edfs=edfs;//广度优先搜索this.guangdu=guangdu;this.guang=guang;//输出存储结构this.printf=printf;//求最短路径this.getpath=getpath;//输出景点信息函数this.printinfor=printinfor;}function addarc(a1,a2,weight){this.vertex[a1].node.push(a2);this.vertex[a1].weight.push(weight);this.vertex[a2].node.push(a1);this.vertex[a2].weight.push(weight);this.arcnum++;}function addvex(v){var temp=new Node(v);this.vertex.push(temp);this.vexnum++;}function edfs(flag,v,g,arr){arr.push(v);flag[v]=1;for(var i=0;i<g.vertex[v].node.length;i++){if(1!=flag[g.vertex[v].node[i]]){edfs(flag,g.vertex[v].node[i],g,arr);}}}function dfs(){var temp=parseInt(document.getElementById('last').value);this.arr=[];for(var i=0;i<this.vexnum;i++)this.flag[i]=0;edfs(this.flag,temp,this,this.arr);for(var i=0;i<this.vexnum;i++){if(this.flag[i]!=1) edfs(this.flag,i,this,this.arr);}var showpath="<b>深度遍历路线:</b>";for(var i=0;i<this.arr.length;i++){showpath+="->";showpath+=[this.arr[i]];}document.getElementById('footer').innerHTML=showpath; }function guangdu(temp,g){var v,k,w=temp;var que=[];que.push(w);g.flag[w]=1;while(que.length!=0){w=que[0];g.ar.push(que[0]);que.splice(0,1);k=0;v=parseInt(g.vertex[w].node[k++])while(k<g.vertex[w].node.length){if(g.flag[v]!=1){g.flag[v]=1;que.push(v);}v=parseInt(g.vertex[w].node[k++]);}}}function guang(){var temp=parseInt(document.getElementById('last').value);this.ar=[];for(var i=0;i<this.vexnum;i++)this.flag[i]=0;guangdu(temp,this);for(var i=0;i<this.vexnum;i++)if(this.flag[i]!=1)guangdu(i,this);var showpath="<b>广度遍历路线:</b>";for(var i=0;i<this.ar.length;i++){showpath+="->";showpath+=[this.ar[i]];}document.getElementById('footer').innerHTML=showpath; }function printf(){for(var i=0;i<this.vexnum;i++){document.write('<br>'+this.vertex[i].vexdata+" :");for(var j=0;j<this.vertex[i].node.length;j++)document.write('->'+this.vertex[i].node[j]+":"+this.vertex[i].weight[j]);}}function getpath(/*start,end*/){var start=parseInt(document.getElementById('first').value);var end=parseInt(document.getElementById('last').value);var mindist;var k;var a=[];var path=new Array(this.vexnum);//初始化for(var i=0;i<this.vexnum;i++){document.getElementById('b'+i).style.color='#000';}for(var i=0;i<this.vexnum;i++){path[i]=[];}for(var i=0;i<this.vexnum;i++){a[i]=10000;path[i][0]=0;}path[start][0]=1;for(var i=0;i<this.vertex[start].node.length;i++){a[this.vertex[start].node[i]]=this.vertex[start].weight[i];path[this.vertex[start].node[i]].push(start);}//找各条最短路径for(var i=1;i<this.vexnum;i++){mindist=10000;//找最小权值路径for(var j=0;j<this.vexnum;j++){if(!path[j][0]&&a[j]<mindist){k=j;mindist=a[j];}}if(10000==mindist) return;path[k][0]=1;//改变记录for(var j=0;j<this.vertex[k].node.length;j++){if(!path[this.vertex[k].node[j]][0]&&a[this.vertex[k].node[j]]>a[k]+this.vertex[k].weight[j]){a[this.vertex[k].node[j]]=a[k]+this.vertex[k].weight[j];path[this.vertex[k].node[j]]=[0];for(var t=1;t<path[k].length;t++){path[this.vertex[k].node[j]].push(path[k][t]);}path[this.vertex[k].node[j]].push(k);}}}//返回最短路径var showpath="路线:";for(var i=1;i<path[end].length;i++){document.getElementById('b'+path[end][i]).style.color='#fff';showpath+=[path[end][i]];showpath+="->";}document.getElementById('b'+end).style.color='#fff';showpath+="<b>"+[end]+"</b>";document.getElementById('path').innerHTML=showpath;}function printinfor(){var last=document.getElementById('last').value;document.getElementById('footer').innerHTML=r[parseInt(last)]; }五.测试数据及运行结果六.调试情况,设计技巧及体会每当写完一个函数的时候,都会出现很多错误,就这样坚持着改错误,慢慢的发现其实很多是由于自己粗心造成的,别的错误改多了就习惯了。
c语言校园导游课程设计
c语言校园导游课程设计一、教学目标本课程旨在通过C语言编程,使学生掌握基本的编程技能,并应用于校园导游系统的开发。
具体目标如下:1.理解C语言的基本语法和数据结构。
2.掌握函数的定义和调用。
3.了解面向对象编程的基本概念。
4.能够使用C语言编写简单的程序。
5.能够利用面向对象编程设计校园导游系统。
6.能够进行程序调试和优化。
情感态度价值观目标:1.培养学生的创新意识和解决问题的能力。
2.培养学生团队合作和沟通的能力。
3.培养学生对编程和计算机科学的兴趣。
二、教学内容教学内容将按照以下大纲进行:1.C语言基础:介绍C语言的基本语法和数据结构,包括变量、运算符、控制语句等。
2.函数:讲解函数的定义、声明和调用,包括递归函数和作用域规则。
3.面向对象编程:介绍类和对象的概念,讲解构造函数、析构函数和继承等。
4.校园导游系统设计:引导学生利用C语言编程实现校园导游系统的基本功能,如景点介绍、路径规划等。
三、教学方法将采用多种教学方法相结合,以激发学生的学习兴趣和主动性:1.讲授法:讲解C语言基础知识和编程技巧。
2.案例分析法:分析典型的校园导游系统案例,引导学生思考和解决问题。
3.实验法:安排实验课,让学生动手编写代码和调试程序。
4.讨论法:学生进行小组讨论,促进团队合作和沟通。
四、教学资源将提供以下教学资源,以支持教学内容和教学方法的实施:1.教材:《C语言程序设计教程》2.参考书:《C Primer Plus》、《C++ Primer》3.多媒体资料:PPT课件、编程实例视频教程4.实验设备:计算机、编程环境(如Visual Studio、Code::Blocks)5.在线资源:编程论坛、开源校园导游系统项目五、教学评估教学评估将采用多元化的方式,全面客观地评价学生的学习成果。
评估方式包括:1.平时表现:通过课堂参与、提问和小组讨论等环节,评估学生的学习态度和参与度。
2.作业:布置编程作业,评估学生的编程能力和解决问题的能力。
c语言校园导游系统课程设计
c语言校园导游系统课程设计一、课程目标知识目标:1. 理解C语言基础语法,掌握结构体、数组、指针等基本概念;2. 学会使用C语言进行基本的输入输出操作;3. 了解文件操作,掌握文件读写方法;4. 掌握C语言中的模块化编程,理解函数的定义与调用。
技能目标:1. 能够运用C语言编写简单的校园导游系统程序;2. 能够设计合理的程序结构,实现模块化编程;3. 能够使用结构体、数组等数据结构存储和处理信息;4. 能够利用文件操作保存和读取导游系统的数据。
情感态度价值观目标:1. 培养学生对编程的兴趣,激发学习C语言的积极性;2. 培养学生团队合作精神,学会在团队中分享和交流;3. 培养学生解决问题的能力,增强面对困难的信心;4. 培养学生的创新意识,鼓励提出独特见解。
课程性质:本课程为实践性较强的学科,旨在让学生通过实际项目开发,掌握C语言编程技能。
学生特点:学生已具备一定的C语言基础,对编程有一定了解,但实际操作能力有待提高。
教学要求:结合学生特点,注重实践操作,以项目为导向,引导学生主动探究,培养编程兴趣和团队协作能力。
将课程目标分解为具体的学习成果,以便在教学设计和评估中逐一落实。
二、教学内容1. C语言基础语法复习:包括变量定义、数据类型、运算符、表达式、控制语句等;相关教材章节:第一章至第四章。
2. 结构体、数组与指针:理解结构体的定义和使用,掌握一维数组和二维数组的应用,了解指针的概念和操作;相关教材章节:第五章、第六章。
3. 函数与模块化编程:掌握函数的定义、调用、参数传递,了解模块化编程的原理;相关教材章节:第七章。
4. 文件操作:学习文件读写方法,掌握文件打开、关闭、读写等基本操作;相关教材章节:第十章。
5. 校园导游系统设计与实现:结合实际项目,运用所学知识设计并编写校园导游系统,包括景点信息展示、路径查询等功能;相关教材章节:综合应用。
教学进度安排:1. 第一周:C语言基础语法复习;2. 第二周:结构体、数组与指针;3. 第三周:函数与模块化编程;4. 第四周:文件操作;5. 第五周至第七周:校园导游系统设计与实现,分阶段完成项目。
校园导游系统课程设计报告
目录1、需求分析2、总体设计2.1 抽象数据类型图的定义 .................................................................................2.2 程序中包含的模块 .........................................................................................2.3模块间的调用关系 ..........................................................................................3、详细设计3.1 代码设计 .........................................................................................................3.1.1 定义结构体和全局变量 ....................................................................3.1.2 平面图的初始化 ................................................................................3.1.3 最短路径查询 ....................................................................................3.1.4 景点信息查询 ....................................................................................3.1.5景点信息更新 .....................................................................................3.2 界面分析 .........................................................................................................3.2.1 主程序界面 ........................................................................................3.2.2 景点信息的查询 ................................................................................3.2.3 最短路径查询 ....................................................................................3.2.4 管理校园查询系统 ............................................................................4、总结报告参考文献1、需求分析设计一个校园导游系统程序,为来访的客人提供各种服务的信息查询。
C语言课程设计-校园导游咨询系统
大连科技学院C语言课程设计题目校园导游咨询系统学生姓名专业班级计算机(Z) 13-1 指导教师职称助教所在单位信息科学系计算机教研室教学部主任完成日期 2014年12月13日课程设计成绩考核表综合评定:(优、良、中、及格、不及格)指导教师签字:2014年12月13 日课程设计任务书1.设计(研究)内容和要求研究内容:设计并编写一个完善的C语言程序,并要求达到以下几点:(1)系统功能要求:系统功能完善,具有简洁的操作流程。
(2)以软件工程理论为指导,按照进度计划,完成系统需求分析、系统的概要设计与系统的详细设计等。
要求能够对系统进行全面测试和调试,及时更正错误,直至系统运行稳定可靠,要求报告中具有系统测试内容。
(3)完成课程设计报告的编辑工作,报告要求在3000字以上,包括综述、系统总体设计、系统实现、运行调试、结论等,参考文献数量至少2篇,论文书写格式按学校规定来写。
(4)工作量要饱满,具备两周课程设计的基本要求,代码行达到300行左右。
原始依据:对学过的C语言程序设计课程进行巩固和加深印象。
了解C语言的基础知识,有一定的语言编程基础,能够熟练运用C语言进行程序设计。
通过用C语言完成的题目的编写与设计,以提高用C语言解决实际问题的能力。
2.系统环境硬件环境:CPU的主频在500MHZ以上,内存在128MB以上软件环境:编程语言及工具:C语言;操作系统:Windows 操作系统3.参考文献[1] 李瑞. 徐克圣. 刘月凡. 戚海英. C程序设计基础[M]. 北京:清华大学出版社.2009.7[2] 布鲁志著.吴丹等译.面向对象的软件工程—构建复杂且多变的系统.清华大学出版社.2002.10[3] 霍顿(美).杨杰(译). 北京:清华大学出版社. 2008[4] 薛圆圆.C语言开发手册. 北京:电子工业出版社. 2011.4[5] 肯奈斯.艾.瑞克(美).徐波(译).C和指针.北京:人民邮电出版社[6] 宋旭.黄明.C语言课程设计.北京:电子工业出版社[7] 宋丽芳.C语言程序设计.北京:现代教育出版社目录1 需求分析 (1)1.1 系统概述 (1)1.2 系统运行环境 (1)1.3 功能需求描述 (1)2 总体设计 (1)2.1 开发与设计的总体思想 (1)2.2 系统模块结构 (2)2.3 模块设计 (2)2.4 系统流程描述 (3)2.5 界面设计 (3)3 详细设计 (6)3.1 应用部署图 (6)3.2 查询功能模块 (7)3.3 删除功能模块 (9)3.4 系统维护模块 (12)4 系统测试 (16)总结 (16)参考文献 (17)1 需求分析1.1 系统概述随着现代社会生活节奏的加快,人们外出旅行以寻求放松的时间越来越多。
c++数据结构课程设计校园导游设计代码
C++数据结构课程设计——校园导游设计代码1. 引言在现代高校教育中,数据结构课程的重要性不言而喻。
而在C++语言中,有关数据结构的课程设计更是相当重要。
本文将探讨如何利用C++语言设计校园导游系统的代码,并给出详细的设计方案和代码实现。
2.设计思路校园导游系统主要包括地图信息的输入、导游路线的规划、用户信息的管理和景点信息的展示。
我们将采用图的数据结构和Dijkstra算法来实现导游路线的规划,采用链表和栈的数据结构来实现用户信息的管理,采用数组和哈希表的数据结构来实现景点信息的展示。
3.系统架构3.1 地图信息的输入为了实现地图信息的输入,我们将采用图的数据结构来描述校园内的各个景点之间的相互关系。
每个景点将作为图的一个节点,而景点之间的路径将作为图的一条边。
我们将设计一个函数来输入景点之间的相互关系,并将其存储在图的邻接矩阵中。
3.2 导游路线的规划为了实现导游路线的规划,我们将采用Dijkstra算法来求解最短路线。
我们将设计一个函数来实现Dijkstra算法,并根据用户的起始点和终点来输出最短路线。
3.3 用户信息的管理为了实现用户信息的管理,我们将采用链表和栈的数据结构来存储用户的历史操作信息。
我们将设计一个函数来实现用户信息的录入和查询,并将其存储在链表和栈中进行管理。
3.4 景点信息的展示为了实现景点信息的展示,我们将采用数组和哈希表的数据结构来存储校园内各个景点的相关信息。
我们将设计一个函数来实现各个景点信息的录入和展示,并将其存储在数组和哈希表中进行管理。
4. 代码实现以下是校园导游系统的C++代码实现:```// TO DO```5. 结语通过以上的设计方案和代码实现,我们成功利用C++语言设计了一个校园导游系统。
该系统能够实现地图信息的输入、导游路线的规划、用户信息的管理和景点信息的展示。
希望本文能够给读者在学习C++数据结构课程设计时提供一定的帮助。
除了以上提到的功能,校园导游系统还可以增加更多的特色功能,比如语音导览、虚拟现实导览、导游路线的可视化展示等。
c语言校园导游课程设计
c语言校园导游课程设计一、课程目标知识目标:1. 学生能理解并掌握C语言中数组、函数、指针等基本概念及其在程序设计中的应用。
2. 学生能够运用C语言编写具有实际意义的程序,如校园导游系统,实现对校园景点信息的存储、查询和展示。
3. 学生了解结构体和文件操作在C语言中的应用,能够实现对校园导游系统中数据的组织、存储和读取。
技能目标:1. 学生掌握C语言编程的基本技巧,具备分析问题、设计算法和编写程序的能力。
2. 学生能够运用所学知识,独立设计并实现一个简单的校园导游系统,提高实际编程能力。
3. 学生通过课程学习,培养解决实际问题的能力,提高逻辑思维和团队协作能力。
情感态度价值观目标:1. 学生对C语言编程产生兴趣,树立学习信心,形成积极的学习态度。
2. 学生在学习过程中,培养良好的编程习惯,注重程序的可读性和可维护性。
3. 学生通过课程学习,认识到编程在解决实际问题中的重要性,激发对计算机科学技术的热爱。
课程性质:本课程为C语言程序设计实践课程,结合实际应用场景,培养学生的编程能力和解决实际问题的能力。
学生特点:学生具备一定的C语言基础,对编程感兴趣,但实际编程经验不足。
教学要求:教师应注重理论与实践相结合,引导学生运用所学知识解决实际问题,关注学生的个体差异,提高学生的编程能力和综合素质。
教学过程中,将课程目标分解为具体的学习成果,以便进行有效的教学设计和评估。
二、教学内容1. 数组与函数:回顾数组的使用,强调其在存储大量数据时的优势;讲解函数的定义、调用和参数传递,强调模块化编程的重要性。
- 教材章节:数组、函数- 内容列举:一维数组、二维数组、函数定义、函数调用、局部变量、全局变量2. 指针与结构体:介绍指针的概念,讲解指针的使用方法;引入结构体,展示如何利用结构体组织相关数据。
- 教材章节:指针、结构体与联合- 内容列举:指针变量、指针运算、结构体定义、结构体变量、结构体数组3. 文件操作:讲解文件的基本概念,介绍文件读写操作,为校园导游系统数据存储提供支持。
校园导游咨询系统数据结构课程设计c语言
校园导游咨询系统数据结构课程设计c语言校园导游咨询系统数据结构课程设计c语言一、课程设计的目的本次课程设计旨在通过C语言程序设计实现校园导游咨询系统,学生能够了解并掌握数据结构的基本概念、算法和编程技术,培养学生的编程能力和解决实际问题的能力。
二、系统需求分析(1)用户管理系统需要实现学生、教师、管理员三种用户的管理,分别具有不同的权限等级。
要实现用户注册、登录、退出等基本功能。
(2)地图导航系统需要实现校内地图的导航功能,包括校门、教学楼、图书馆、宿舍等位置的标注,提供校园内部的导航和查找服务。
(3)建筑信息系统需要提供校内建筑的信息查询功能,包括建筑名称、位置、使用情况等,方便师生查询。
(4)在线咨询系统需要提供在线咨询功能,方便学生、教师等用户在线咨询学校相关事宜,并实现客服人员的消息处理。
三、数据结构设计(1)用户信息表采用哈希表作为用户信息表的数据结构,将用户信息存储在表中,方便用户登录和信息的管理。
哈希表的键值是用户名,值是用户信息(包括用户名、密码、权限等级等)。
(2)建筑信息采用结构体数组作为建筑信息的数据结构,将建筑信息存储在数组中,方便查询和展示。
结构体包含建筑名称、位置、使用情况等信息。
(3)校内地图为方便地图导航,采用邻接矩阵作为校内地图的数据结构,将校内各个建筑之间的距离存储在矩阵中。
矩阵的行和列分别表示建筑的编号,矩阵元素表示建筑之间的距离。
(4)消息队列为实现在线咨询功能,采用队列作为消息队列的数据结构,将用户发送的消息存储在队列中。
消息队列的队首指针和队尾指针分别表示最早和最晚的消息,方便客服人员的处理。
四、代码实现(1)用户管理用户管理实现了注册、登录和退出等功能。
用户密码使用MD5加密,保证用户信息的安全性。
管理员可以添加、删除学生和教师用户。
(2)地图导航地图导航实现了最短路径算法和深度优先搜索算法,方便用户查询和展示校内地图。
用户可以查找建筑的详细信息,包括位置、使用情况等。
C语言课设(校园导游)
校园导游目录摘要 ......................................................................................... 错误!未指定书签。
1绪论 .......................................................................................... 错误!未指定书签。
2系统分析 .................................................................................. 错误!未指定书签。
2.1功能需求 ........................................................................... 错误!未指定书签。
2.2数据需求............................................................................ 错误!未指定书签。
2.3性能需求 ........................................................................... 错误!未指定书签。
3总体设计 .................................................................................. 错误!未指定书签。
3.1系统设计方案.................................................................... 错误!未指定书签。
3.2功能模块设计.................................................................... 错误!未指定书签。
校园导游系统
课程设计说明书课程名称:数据结构与算法设计题目:校园导游系统院系:计算机科学与信息工程学院学生姓名:学号:专业班级:计算机科学与技术信息技术方向11-1 指导教师:2013年6月21日课程设计任务书摘要:随着社会经济的发展,人们接近自然的机会就越多,因此外出旅游现在被越来越多的都市人所看中,所以如何快速方便的找到我们想要的旅游景点的信息和最短路径,如何简单的修改相关的信息,就成了很重要的问题。
本设计基于图的结构,用数组表示法创建一个无向图,针对游客的实际需求,将安阳工学院的景点编号、名称、介绍等信息放入到图的顶点当中,将路径长度的信息存放在弧当中。
利用弗洛伊德算法求出两个景点之间的最短路径,利用迪杰斯特拉算法来求从一个景点到其他剩余的所有景点的最短距离;用相应的函数来查找景点,并显示出它的编号,信息,简介。
并进行一定的界面美化,更贴近用户,相应的提示使用户操作起来更容易。
关键词:最短路径、查找景点信息、无向图目录1. 设计背景 (2)1.1程序设计内容 (2)1.2程序设计要求 (2)2.设计方案 (3)2.1 校园景点图 (3)2.2 程序模块图 (3)2.3 主函数设计简要 (3)2.4 各函数模块的功能 (4)3. 方案实施 (4)3.1 程序执行流程图 (4)3.2 主函数设计思想 (4)4. 结果测试 (5)4.1 主函数功能模块测试 (5)4.2 主函数功能测试 (5)4.3 各功能所执行的操作 (6)5. 结论 (6)6. 收获与致谢 (7)7. 参考文献 (7)8. 附件 (7)1. 设计背景1.1程序设计内容根据设计要求,利用无向图将学校的景点作为图的顶点,顶点的边作为景点之间的距离进行存储,根据游客的需求,查找各个景点的信息,找出两个景点的最短路径,实现校园的导游目的。
1.2程序设计要求用无向网表示你所在学校的校园景点平面图,图中顶点表示主要景点,存放景点的编号、名称、简介等信息,图中的边表示景点间的道路,存放路径长度等信息。
C++数据结构课程设计-校园导游咨询系统
数据结构(C++)课程设计题目: 校园导游咨询*姓名:学号:院系:专业年级:2014年7月8日目录一、设计题目 (2)二、需求分析 (2)三、概要设计 (6)四、详细设计 (11)五、调试分析 (14)六、测试结果 (14)七、附录:程序设计源代码 (21)一、设计题目校园导游咨询*二、需求分析1)运行环境(软、硬件环境)电脑型号X64 兼容台式电脑处理器英特尔第二代酷睿***************四核主板华硕P8H61-M LX (英特尔H61 芯片组)内存8 GB ( 威刚DDR3 1333MHz )主硬盘西数WDC WD10EALX-009BA0 ( 1 TB / 7200 转/分)显卡ATI Radeon HD 6700 Series ( 512 MB / ATI )显示器SGW5600 PL2208HD ( 21.7 英寸)光驱华硕DRW-24D1ST a DVD刻录机声卡瑞昱ALC887 @ 英特尔 6 Series Chipset 高保真音频网卡瑞昱RTL8168E PCI-E Gigabit Ethernet NIC / 华硕操作系统:Windows 7 Ultimate (x86) sp1编程环境:Microsoft Visual Studio 20122)输入的形式和输入值的范围内容形式范围景点代号int 自然数景点名称string 所有字符景点简介string 所有字符X坐标int 正整数Y坐标int 正整数3)输出的形式描述内容形式范围景点代号int 自然数景点名称string 所有字符景点简介string 所有字符X坐标int 正整数Y坐标int 正整数最短路径图像jpg4)功能描述以我校南汇校区部分景点、进行抽象化,生成了具有15个顶点、18条边的图,以邻接表与邻接矩阵复合形式储存在内存中,主要有以下功能:a.查询景点的信息,包括基本信息和拓展的周围节点信息;b.景点导航,给出起点、终点,规划出最短路径和风景最佳路径;c.修改景点,道路信息,包括添加景点、添加道路、修改景点功能;d.开发人员工具,包括邻接表、邻接矩阵的查看DFS深度优先遍历、BFS广度优先遍历e.显示地图,打开预制的地图文件查看5)测试数据初始地图信息:景点景点名称景点介绍X坐标Y坐标编号0 北校门学校的北入口 2 141 北图书馆学校北侧图书馆12 142 崇德楼经管学院楼26 143 奋进楼公共机房12 2826 284 北运动场具有足球场、篮球场、健身房等12 325 行政楼计算机学院楼及其他行政办公12 396 教师活动中心又称H楼,具有桌球、乒乓球、会议室、舞厅等7 雕塑校园雕塑26 398 南校门学校南入口 2 509 至诚楼办理学生事务处12 5026 5010 大礼堂学校大型文艺演出、讲座场所11 南图书馆学校南侧的图书馆12 52团委、学生会、社联所在处12 1212 大学生文化活动中心13 风帆广场绿地广场,景色优美26 5812 7014 南运动场具有足球场、篮球场、羽毛球场等距离邻接矩阵:三、概要设计1)抽象数据类型定义描述(对各类的成员及成员函数进行抽象描述,参见书或ppt及实验)Site类Data:编号Code景点名称SiteName景点介绍Introduction景点X坐标景点Y坐标Operation:构造函数输入:编号,名称,介绍,X坐标,Y坐标前置条件:无动作:初始化Site类元素输出:无后置条件:无SetSite输入:编号,名称,介绍,X坐标,Y坐标前置条件:无动作:赋值Site类元素输出:无后置条件:无ArcNode类Data :邻接点下标值Adjvx指向下一个边结点的指针*nextarc;风景等级sceneLevel;距离distance;Operation:构造函数输入:Adjvx, *nextarc, sceneLevel;前置条件:无动作:初始化ArcNode类输出:无后置条件:无VertexNode类Data :节点内容vex节点首指针*firstarcOperation:无Road类Data :Site型节点1,节点2距离Distance风景等级Bool型是否是机动车道carAviliable;Operation:SetRoad构造函数输入:节点1,节点2,风景等级前置条件:存在Site对象动作:初始化Road类输出:无后置条件:无BGraph 类Data :邻接表adjlist[]Int 距离矩阵Int 风景值矩阵Operation:构造函数输入:前置条件:动作:输出:后置条件:无addSite函数输入:景点名称,景点信息,景点X坐标,景点Y坐标前置条件:顶点表已建立动作:添加邻接表顶点、修改邻接矩阵输出:无后置条件:无addRoad函数输入:景点1名称,景点2名称,风景等级前置条件:顶点表已建立动作:添加邻接表的边表,修改邻接矩阵输出:无后置条件:无ShowInfo函数输入:无前置条件:函数已初始化动作:输出当前图信息输出:顶点数、边数后置条件:无pGraph函数输入:无前置条件:函数已初始化动作:输出邻接表输出:邻接表后置条件:无pMatrix输入:无前置条件:函数已初始化动作:输出邻接矩阵输出:邻接矩阵后置条件:无searchByName输入:景点名称前置条件:图已初始化动作:搜索符合名称的节点输出:节点site型后置条件:无DFSTraverse函数输入:无前置条件:图已初始化动作:深度优先遍历输出:遍历路径后置条件:无BFSTraverse函数输入:无前置条件:图已初始化动作:广度优先遍历输出:遍历路径后置条件:无FindPath函数输入:节点1,节点2前置条件:图已初始化动作:计算最短路径输出:路径经过点、路径产长度、每一步的方向后置条件:无2)功能模块设计(如主程序模块设计)1.主程序模块:连接各种功能子模块,使用循环等待用户操作,完成程序的基本操作实现功能。
C语言校园导游系统课程设计
海南大学课程名称数据结构(基于C语言)课程设计题目校园导游程序的设计及实现院系_信息科学技术学院____班级__通信工程B班_学生姓名___史兵全________指导教师吴泽辉日期_2014.12.15.-2015.1.7__软件专题训练任务书校园导游程序一、简介1.设计目的:通过校园导游程序的设计及实现,熟练掌握图型结构在实际问题中的应用。
2.问题的描述:设计一个校园模拟导游程序,为新生或来访的客人通过及机器的“对话“提供最短路径的信息查询服务。
1.任意选取n个场所,构成一个无向带权图,图中顶点表示场所,边上的权值表示两点间的距离,图的存储结构可采用带权的邻接矩阵。
2.咨询以用户和计算机的对话方式进行,由用户输入起始点和终点,输出信息:最短路径是多少?并指出所经过的场所。
3、计算并记录从校门口到各个场所的最短路径,即求单源点到其它各个场所的最短路径。
4、提供校园中任意场所的问路查询,即求任意两点之间的最短路径。
二、数据结构的设计:由于各个场所通过校园中的道路相连,各个场所和连接它们的道路构成了整个校园的地理环境,所以使用图这种数据结构对他们去进行描述。
以图中的顶点表示校园内各个场所,应包含场所名称、代号、简介等信息;以边表示连接各个场所的道路,应包含路径的长度等信息;顶点和边均使用结构体定义,整个图的数据结构采用教材中介绍的带权的邻接矩阵方法。
二、数据结构的设计:typedef struct ArCell{int adj; //路径长度}ArCell,AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM] ;typedef struct //图中顶点表示主要景点,存放景点的序号、名称、介绍等信息,{char name[30];int num;char introduction[100];//简介}infotype;typedef struct{infotype vexs[MAX_VERTEX_NUM];AdjMatrix arcs;int vexnum,arcnum;}MGraph;MGraph b;void cmd(void){int i;b=InitGraph();Menu();scanf("%d",&i);while(i!=4){switch(i){case 1:Browser(&b);Menu();break;case 2:ShortestPath_DIJ(&b);Menu();break; case 3:Floyd(&b);Menu();break;case 4:exit(1);break;default: printf("输入序号不存在,请重新输入");break; }scanf("%d",&i);}MGraph InitGraph(void){MGraph G;int i,j;G.vexnum=10;G.arcnum=14;for(i=0;i<G.vexnum;i++)G.vexs[i].num=i;strcpy(G.vexs[0].name,"海南大学北门");strcpy(G.vexs[0].introduction,"高大威武");strcpy(G.vexs[1].name,"文化柱");strcpy(G.vexs[1].introduction,"海大学子健康成长,激情飞扬的地方");strcpy(G.vexs[2].name,"图书楼");strcpy(G.vexs[2].introduction,"藏书丰富,设施良好,知识的摇篮");strcpy(G.vexs[3].name,"3号教学楼");strcpy(G.vexs[3].introduction,"海大学子努力学习,坚持向上的场所");strcpy(G.vexs[4].name,"第一田径场");strcpy(G.vexs[4].introduction,"标准化跑道,适宜锻炼身体的场所");strcpy(G.vexs[5].name,"男生宿舍楼");strcpy(G.vexs[5].introduction,"房间设施良好,标准六人间"); strcpy(G.vexs[6].name,"海大餐厅");strcpy(G.vexs[6].introduction,"厅内卫生整洁,环境宜人"); strcpy(G.vexs[7].name,"联谊馆");strcpy(G.vexs[7].introduction,"内有乒乓球馆,排球馆,室内篮球馆等设施");strcpy(G.vexs[8].name,"女生宿舍楼");strcpy(G.vexs[8].introduction,"房间设施良好,标准六人间"); strcpy(G.vexs[9].name,"海大东门");strcpy(G.vexs[9].introduction,"外有建设银行");for(i=0;i<G.vexnum;i++)for(j=0;j<G.vexnum;j++)G.arcs[i][j].adj=INFINITY;G.arcs[0][1].adj=100;G.arcs[0][2].adj=80;G.arcs[0][6].adj=100;G.arcs[1][7].adj=120;G.arcs[2][3].adj=50;G.arcs[3][6].adj=110;G.arcs[3][4].adj=150;G.arcs[4][5].adj=60;G.arcs[4][9].adj=280;G.arcs[5][9].adj=250;G.arcs[6][7].adj=190;G.arcs[6][9].adj=180;G.arcs[7][8].adj=130;G.arcs[8][9].adj=100;for(i=0;i<G.vexnum;i++)for(j=0;j<G.vexnum;j++)G.arcs[j][i].adj=G.arcs[i][j].adj;return G;}//InitGraph end用的是一个switch语句实现输入不同的序号操作选项,调用不同的函数进入不同的操作板块// 迪杰斯特拉算法计,v0为始点void ShortestPath_DIJ(MGraph * G){int v,w,i,min,t=0,x,flag=1,v0;int final[20], D[20], p[20][20];while(flag){printf("请输入起始点序号:");scanf("%d",&v0);if(v0<0||v0>G->vexnum){printf("输入错误,景点序号不存在!请再次输入景点序号:");scanf("%d",&v0);}if(v0>=0&&v0<G->vexnum)flag=0;}for(v=0;v<G->vexnum;v++){final[v]=0;D[v]=G->arcs[v0][v].adj;for(w=0;w<G->vexnum;w++)p[v][w]=0;if(D[v]<INFINITY){p[v][v0]=1;p[v][v]=1;}}D[v0]=0;final[v0]=1;for(i=1;i<G->vexnum;i++){min=INFINITY;for(w=0;w<G->vexnum;w++)if(!final[w])if(D[w]<min){v=w;min=D[w];}final[v]=1;for(w=0;w<G->vexnum;w++)if(!final[w]&&(min+G->arcs[v][w].adj<D[w])){D[w]=min+G->arcs[v][w].adj;for(x=0;x<G->vexnum;x++)p[w][x]=p[v][x];p[w][w]=1;}}for(v=0;v<G->vexnum;v++){if(v0!=v) printf("%s",G->vexs[v0].name);for(w=0;w<G->vexnum;w++){if(p[v][w]&&w!=v0) printf("-->%s",G->vexs[w].name); t++;}if(t>G->vexnum-1&&v0!=v)printf(" 总路线长%dm\n\n",D[v]);}}//ShortestPath_DIJ endvoid Floyd(MGraph *G){int v,u,i,w,k,j,flag=1,p[10][10][10],D[10][10];for(v=0;v<G->vexnum;v++)for(w=0;w<G->vexnum;w++){D[v][w]=G->arcs[v][w].adj;for(u=0;u<G->vexnum;u++)p[v][w][u]=0;if(D[v][w]<INFINITY){p[v][w][v]=1;p[v][w][w]=1;}}for(u=0;u<G->vexnum;u++)for(v=0;v<G->vexnum;v++)for(w=0;w<G->vexnum;w++)if(D[v][u]+D[u][w]<D[v][w]){D[v][w]=D[v][u]+D[u][w];for(i=0;i<G->vexnum;i++)p[v][w][i]=p[v][u][i]||p[u][w][i];}while(flag){printf("请输入始点和终点的序号:");scanf("%d%d",&k,&j);if(k<0||k>G->vexnum||j<0||j>G->vexnum){printf("景点序号错误!请再次输入始点和终点的序号:");scanf("%d%d",&k,&j);}if(k>=0&&k<G->vexnum&&j>=0&&j<G->vexnum) flag=0;}printf("%s",G->vexs[k].name);for(u=0;u<G->vexnum;u++)if(p[k][j][u]&&k!=u&&j!=u)printf("-->%s",G->vexs[u].name);printf("-->%s",G->vexs[j].name);printf(" 总路线长%dm\n",D[k][j]);}//Floyd endint LocateVex(MGraph *G,char* v){int c=-1,i;for(i=0;i<G->vexnum;i++)if(strcmp(v,G->vexs[i].name)==0){c=i;break;}return c;}MGraph * CreatUDN(MGraph *G){int i,j,k,w;char v1[20],v2[20];printf("输入图的顶点数,弧数:");scanf("%d%d",&G->vexnum,&G->arcnum); printf("输入景点的编号:、名称、介绍:\n"); for(i=0;i<G->vexnum;i++){printf("景点序号:");scanf("%d",&G->vexs->num); printf("景点名称:");scanf("%s",G->vexs[i].name);printf("景点介绍:");scanf("%s",G->vexs->introduction); }for(i=0;i<G->vexnum;i++)for(j=0;j<G->vexnum;j++)G->arcs[i][j].adj=INFINITY;printf("请输入路径长度:\n");for(k=0;k<G->arcnum;k++){printf("第%d条边:\n",k+1);printf("景点对(x,y):");scanf("%s",v1);scanf("%s",v2);printf("路径长度:");scanf("%d",&w);i=LocateVex(G,v1);j=LocateVex(G,v2);if(i>=0&&j>=0){G->arcs[i][j].adj=w;G->arcs[j][i]=G->arcs[i][j];}}return G;}void print(MGraph *G){int v,w,t=0;for(v=0;v<G->vexnum;v++)for(w=0;w<G->vexnum;w++){ if(G->arcs[v][w].adj==INFINITY) printf("∞");else printf("%-7d",G->arcs[v][w].adj);t++;if(t%G->vexnum==0)printf("\n");}}旅客进行查询:1. 查看校园各景点2. 查看所有游览线路;3. 选择始点和终点4. 退出程序三、功能(函数)设计:一.本程序从总体上分为四个功能模块,分别为:(1)查看校园各景点,这一功能主要为来客提供要查的信息。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.选择菜单:1.地点介绍2.最短路径3.结束“请选择功能”
3.地点介绍:出现景点选择:A.操场B.偏门C.图书馆D.大
门E.食堂F.诚智楼G博学楼H.创新楼I.海天楼J.明
德楼 请选择地点(选择加回车即能查询景点信息)
4.最短路径:出现“输入起点位置” ,输入后即出现“输入终点 位置”(输入加回车即显示两景点的最短路径)
{return Vertices.ListEmpty();}
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(const int v1,const int v2);
}
int AdjMWGraph::GetWeight(const int v1,const int v2)
{if(v1<0||v1>Vertices.ListSize()||v2<0||v2>Vertices.ListSize()){
cerr<<"参数v1或v2越界出错!"<<endl;
exit(1);
福建泉林女曇东方摩院
DONGFANG COLLEGE,FUJIAN AGRICULTURE AND FORESTRY UNIVERSITY
C++
课程设计:校园导游系统
系 别:计算机系年 级:10级
专 业:计算机科学与技术
班 级:1班学 号:
姓 名:
成 绩:
任课教师:
2012年8月20日
1•需求分析3
else Edge[i][j]=MaxWeight;
}numOfEdges=0;
}
VerT AdjMWGraph::GetValue(const int i)
{
if(i<0||i>Vertices.ListSize())
{
cerr<<"参数i越界出错!"<<endl;
exit(1);
}
return Vertices.GetData(i);
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));
东方学院实景图"<<endl;
A操场
/
/
C图书馆D大门
/
/
\\
\\
B偏门"<<endl;
\\"<<endl;
\\"<<endl;
E食堂\\"<<endl;
\\"<<endl;
F诚智楼---G博学楼-H创新楼
2.
/
I海天楼
\\/"<<endl; J明德楼"<<endl;
#include"SeqList.h" #include"SeqQueue.h" const int MaxVertices=10; const int MaxWeight=10000; class AdjMWGraph
5.测试结果
1.运行界面
2.地点介绍
3.
6.附录
1.
void viewshow()
{
cout<<"
cout<<""<<endl;
cout<<" cout<<" cout<<" cout<<" cout<<" cout<<" "<<endl;
cout<<" cout<<" cout<<""<<endl;}
(2)为来访客人提供图中任意景点相关信息的查询。
(3)为来访客人提供图中任意景点的问路查询,即查询任意两个景
点之间的一条最短的简单路径。
3•详细设计
1.以输出流显示校园的界面
2.以图的形式存储校园景点
3.以循环算法运行操作界面
4.以函数调用实现导游功能
4.使用说明
1.运行时显示校园景观图,同时显示选择菜单
void BroadFirstSearch(void visit(VerT item);
};
AdjMWGraph::AdjMWGraph(const int sz)
{
for(int i=0; i<sz; i++)
for(int j=0; j<sz; j++)
{
if(i==j) Edge[i][j]=0;
}
return Edge[v1][v2];
}
void AdjMWGraph::InsertVertex(const VerT &vertex)
{Vertices.Insert(vertex,Vertices.ListSize());
}
void AdjMWGraph::InsertEdge(const int v1,const int v2,int weight)
{
private:
SeqList Vertices;//顶点信息的线性表
int Edge[MaxVertices][MaxVertices];
int numOfEdges;
public:
AdjMWGraph(const int sz=MaxVertices);
int GraphEmpty( )const
2•概要设计:3
3•详细设计.3
4.使用说明.3
5.测试结果.…4
6.附录5
7.参考文献14
1.需求分析
设计一个校园导游程序,为来访的客人提供各种信息查询服务。
2•概要设计
(1)设计你所在学校的校园平面图,所含景点不少于10个。以图中 顶点表示校内各景点,存放景点名称、代号、简介等信息;以边表示路 径,存放路径长度等相关信息。