数据结构专周报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“数据结构图实验报告”。
成都工业学院
专 周 报 告
课程名称 专周题目 姓 名 班 级 学 号 指导教师 设计时间
数据结构 校园导游系统
2016-12-12至2016-12-16
成都工业学院计算机工程学院
一、专周目的1.训练学生灵活应用所学数据结构知识,独立完成问题分析,结合数据结构理论知识,编写程序求解指定问题。
2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;
3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力;
4.训练用系统的观点和软件开发一般规范进行软件开发,巩固、深化学生的理论知识,提高编程水平,并在此过程中培养他们严谨的科学态度和良好的工作作风。
二、专周内容与要求
1、内容描述
1.设计一个校园导游系统,为来访的客人提供导游信息查询服务。根据学校的实际情况设计出学校的平面图并画出图形,要求图中至少包括12个以上的顶点。图中每两个顶点之间可以有不同的路,且路的长度也可能不相同。
2.以图中顶点表示校园内各景点或场所,存放景点或场所的名称、代号、简介等相关信息;以边表示路径,存放路径长度等相关信息。
3.系统能为来访客人提供图中任意景点或场所的相关信息查询。
4.系统能根据来访客人的要求找出从任意顶点到达另一顶点之间的最佳路径(最短路径)
5.系统能提供对图的编辑修改功能:(1)能进行增、删景点操作;(2)能进行增、删道路操作;(3)能对修改已有景点的信息。
2、设计要求
1.在处理题目时,要求从分析题目的需求入手,按设计抽象数据类型、构思算法、通过设计实现抽象数据类型、编制上机程序和上机调试等若干步骤完成题目,最终写出完整的课程设计报告。前期准备工作完备与否直接影响到后序上机调试工作的效率。在程序设计阶段应尽量利用已有的标准函数,加大代码的重用率。2.程序设计语言必须使用C++完成,程序书写规范,源程序需要加必要的注释;3.每个小组必须提交可独立运行的程序,并进行演示; 4.每个小组的每位同学都需要独立提交课程设计报告书(每人一份),报告中要明确自己所负责部分的具体功能和分析设计情况,要求编排格式统一规范、内容充实。
三、设计说明书
1、需求分析
1.功能需求:
用无向网表示成都工业学院的校园景点平面图,选取若干个成都 工业学院有代表性的景点抽象成无向带权图,图中顶点表示校内各顶点,边上权值表示路径长度。
2.性能需求:
(1)为来访客人查询各景点的相关信息;
(2)为来访客人查询图中任意两个景点间的最短路径;
(3)为来访客人输出对应编号查询景点的信息。
3.数据需求:
建立无向图G,图中顶点ver表示主要景点,存放景点编号position、名称name、简介introduction等信息,图中边arc表示景点间的道路,存放路径长度信息distance。
2、系统设计(流程图)
系统对应的校园平面图:
3、模块设计
4、系统测试
1.学校景点介绍
2.打印校园导游图的邻接矩阵:
3.查询最短路径
4.景点信息查询
5.1修改景点信息---删除景点
5.2修改景点信息---增加景点
5、程序源代码
#include #include #include #include using namespace std;#define max_ver_num 20 #define OK 1 #define FALSE 0 #define Error-1 #define A 1000 #define TRUE 1 typedef struct arcnode//设置边的权值信息 { int adj;//路径权值
}arcnode,adjarcs[max_ver_num][max_ver_num];typedef struct verdata//设置景点信息 { int position;char name[60];char introduction[1000];}verdata;typedef struct mgraph { verdata vexs[max_ver_num];adjarcs arcs;int vernum,arcnum;}mgraph;int visited[20];//全局变量 int d[35];mgraph g;
int initgraph(mgraph& G)//校园导游图的初始化 { int i,j;G.vernum=12;G.arcnum=24;
for(i=0;i
G.vexs[i].position=i;strcpy(G.vexs[0].name,“学校大门”);strcpy(G.vexs[1].name,“长虹会堂”);strcpy(G.vexs[2].name,“教师公寓”);strcpy(G.vexs[3].name,“允明楼”);strcpy(G.vexs[4].name,“文澄楼”);strcpy(G.vexs[5].name,“六舍”);strcpy(G.vexs[6].name,“图书馆”);strcpy(G.vexs[7].name,“体育馆”);strcpy(G.vexs[8].name,“陈毅纪念馆”);strcpy(G.vexs[9].name,“德五楼”);strcpy(G.vexs[10].name,“红楼”);strcpy(G.vexs[11].name,“实训工厂”);
strcpy(G.vexs[0].introduction,“校园正大门,宽阔雄伟。”);strcpy(G.vexs[1].introduction,“全校举行各种活动或者讲座的场所。”);strcpy(G.vexs[2].introduction,“全校教师居住的宿舍。”);strcpy(G.vexs[3].introduction,“学校主要的教学楼,楼高4层。”);strcpy(G.vexs[4].introduction,“计算机、电子、通信等专业实验室。”);strcpy(G.vexs[5].introduction,“男生寝室,楼高6层。”);strcpy(G.vexs[6].introduction,“学校的标志性建筑,楼高八层,藏书丰富。”);strcpy(G.vexs[7].introduction,“全校师生锻炼身体的地方”);strcpy(G.vexs[8].introduction,“成都工业学院的精神支柱”);strcpy(G.vexs[9].introduction,“学生专业实训楼”);strcpy(G.vexs[10].introduction,“校级领导工作的地方”);strcpy(G.vexs[11].introduction,“学生专周实践的地方”);
for(i=0;i
for(j=0;j
for(i=0;i
G.arcs[i][j].adj=G.arcs[j][i].adj;return 1;}
int locatevex(mgraph c,int v)//景点的定位 { int i;for(i=0;i
if(v==c.vexs[i].position)
return i;
return-1;}
void printmatrix(mgraph G)//打印图的邻接矩阵; { int i,j;cout
for(j=0;j
{
if(G.arcs[i][j].adj
cout
else
cout
}
cout
void shortestpath_Floyd(mgraph *G)//求最短路径,弗洛伊德算法 { int v,u,i,w,k,j,flag=1,p[12][12][12],D[12][12];//D路径
for(v=0;vvernum;v++)
for(w=0;wvernum;w++)
{
D[v][w]=G->arcs[v][w].adj;
for(u=0;uvernum;u++)
p[v][w][u]=0;
if(D[v][w]
{
p[v][w][v]=1;p[v][w][w]=1;
}
} for(u=0;uvernum;u++)for(v=0;vvernum;v++)for(w=0;wvernum;w++)if(D[v][u]+D[u][w]vernum;i++)p[v][w][i]=p[v][u][i]||p[u][w][i];
} while(flag){ cout>k;cout>j;if(kG->vernum||jG->vernum){ cout>k;cout>j;} if(k>=0&&kvernum&&j>=0&&jvernum)flag=0;} printf(“%s”,G->vexs[k].name);for(u=0;uvernum;u++)if(p[k][j][u]&&k!=u&&j!=u)printf(“-->%s”,G->vexs[u].name);printf(“-->%s”,G->vexs[j].name);printf(“ 总路线长%dmn”,D[k][j]);}
void displaycampus(mgraph G)//显示景点信息,显示景点信息平面图; { int i;cout
“
”
cout
cout
cout
“
int DeleteVertex(mgraph &G)//删除景点信息 { int i,j,v,m;cout>v;m=locatevex(G,v);int flag=1;while(flag){
if(m
{
cout
cin>>v;
}
m=locatevex(G,v);
if(m>0)
{
for(i=m;i
{
strcpy(G.vexs[i].name,G.vexs [i+1].name);
strcpy(G.vexs[i].introduction,G.vexs[i+1].introduction);
}
flag=0;
} } for(i=m;i
for(j=0;j
G.arcs[i][j]=G.arcs[i+1][j];for(i=m;i
for(j=0;j
int enverx(mgraph &G)//增加景点 { int i;cout>G.vexs[G.vernum].position;cout>G.vexs[G.vernum].name;cout>G.vexs[G.vernum].introduction;cout
G.arcs[i][G.vernum-1].adj=G.arcs[i][G.vernum-1].adj=A;displaycampus(G);printmatrix(G);return 1;}
void seaabout(mgraph G)//景点信息查询; { int n,flag=1;cout>n;while(flag){
if(nG.vernum)
{
cout>n;
}
else
{
cout
cout
cout
cout
flag=0;
} } }
int changegraph(mgraph G)//修改景点的的信息 { int i;cout
1、删除景点
2、打印邻接矩阵 cout 3、增加景点 4、返回上层菜单 while(1){ cout>i; switch(i) { case 1: cout DeleteVertex(g);break; case 2: cout printmatrix(g);break; case 3: cout enverx(g);break; case 4: cout return 1; } cout 1、删除景点 2、打印邻接矩阵 cout 3、增加景点 4、返回上层菜单 ” void main(){ initgraph(g); cout cout cout cout 1、学校景点介绍 2、打印邻接矩阵 “ cout 3、查询最短路径 4、景点信息查询 ” cout 5、修改景点信息 6、退出导游系统 “ cout int k;cin>>k; switch(k) { case 1: cout displaycampus(g);break;case 2: cout printmatrix(g);break; case 3: cout shortestpath_Floyd(&g);break; case 4: cout seaabout(g);break;case 5: cout changegraph(g);break; case 6: cout flag=0;exit(0);break; default:break; } cout cout cout cout 1、学校景点介绍 2、打印邻接矩阵 ” cout 3、查询最短路径 4、景点信息查询 “ cout 5、修改景点信息 6、退出导游系统 ” } } 四、专周心得体会 通过本次课程设计实验,使我更能熟练地掌握c语言、c++以及数据结构等知识的综合运用。对数据结构中定义无向图和创建无向图的理解更加深刻。完全理解了Floyd算法的原理,但对于其算法的程序编写还是不太明白;学会了在编写几百行程序时如何查找错误,如何改错误,了解了vs中的debug功能;数据结构是一门基础课,今后很多的学科都要用到它,通过这次课程设计,我发现它又对我们的编程能力要求很高,因此我认为要真正的学好它,就要经常地上机,不断地练习,只有这样,才有可能完全掌握它。现在,我才发现老师这一学期为什么对我们这么的严格,每次实验要求按时上交,并独立完成,我想就是因为老师给了我们这么多机会和作业,我们在做课程设计时才没感到束手无策。希望我在以后的学习中要发现自己的不足,找出自己的薄弱环节,以便能够更好的去巩固所学的知识。 《机电一体化技术》课程设计专周指导书题目:CNC二维绘图仪的设计专业:机电一体化姓名:班级:11412班学号:17号...... 公 共 关 系 专 周 实习报 告姓名:XXX班级:10381 学号:01时间:2012.6.5 前言:近年来,中国高校毕业生数量逐渐增多,大学生面临严峻的就业形势。毕业生就业受到前所未有的挑战。大...... 工程实训专周实践报告张豪市场营销又称为市场学、市场行销或行销学。简称“营销”,是指个人或集体通过交易其创造的产品或价值,以获得所需之物,实现双赢或多赢的过程。它包含两...... 《数据结构》 课程设计报告课程名称: 课程设计题目:姓名:院系: 专业: 年级: 学号: 指导教师: 《数据结构》课程设计 约瑟夫环俞晓沁 计算机学院计算机科学与技术大二09051204王立波2...... 《数据结构》 课程设计报告1 目录《数据结构》 ..........................................................................................................................