校园导游系统的设计与实现_第1页
校园导游系统的设计与实现_第2页
校园导游系统的设计与实现_第3页
校园导游系统的设计与实现_第4页
校园导游系统的设计与实现_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据构造课程设计报告校园导游系统的设计与实现目录TOC\o"1-5"\h\z\u1设计规定 12概要设计 12.1主界面设计 12.2存储构造设计 22.3系统功效设计 23模块设计 23.1模块设计 23.3函数重要调用关系图 44具体设计 44.1数据类型定义 44.2系统重要子程序具体设计 55测试分析 116源程序清单 137顾客手册 278设计心得体会 27校园导游系统的设计与实现1设计规定1.问题描述设计一种校园导游程序,为来访的客人提供信息查询服务。2.需求分析(1)设计学校的校园平面图。选用若干个有代表性的景点抽象成一种无向带权图(无向网),以图中顶点表达校内各景点,边上的权值表达两景点之间的距离。(2)寄存景点代号、名称、介绍等信息供顾客查询。(3)为来访客人提供图中任意景点有关信息的查询。(4)为来访客人提供图中任意景点之间的问路查询。(5)可觉得校园平面图增加或删除景点或边,修改边上的权值等。2概要设计为了实现以上功效能够从三个方面着手设计。2.1主界面设计为了实现校园导游系统各功效的管理。首先设计一种含有多个菜单选项的主控菜单子程序以链接系统的各项子功效,方便顾客使用本系统主控菜单运行界面如图1-1。图1-1校园导游系统主界面2.2存储构造设计本系统采用图构造类型(mgraph)存储抽象校园图的信息。其中,各景点间的邻接关系用图的邻接矩阵类型(adjmatrix)存储;景点(顶点)信息用构造数组(vexs)存储,其中每个数组元素是一种构造变量,包含景点编号、景点名称及景点介绍三个分量;图的顶点个数及边的个数由分量vexnum、arcnum表达,它们是整型数据。另外,本系统还设立了三个全局变量:visited[]数组用于存储顶点与否被访问标志;d[]数组用于寄存边上权值或存储查找途径顶点的编号;c是一种图构造的全局变量。2.3系统功效设计本系统除了要完毕图的初始化功效外还设立了4个子功效菜单。图的初始化右函数Chushihua()实现。根据读入的图的顶点个数和边的个数,分别初始化图构造中图的顶点向量数组和图的邻接矩阵。4个子功效的设计描述以下。景点列表景点列表由函数Viewlist()实现。当顾客选择该功效,系统即能输入学校全部景点的信息:涉及景点编号、景点名称及景点介绍。路线导航路线导航由函数Guide()实现,该功效采用弗洛伊德(Floyd)和迪杰斯特拉(Dijkstra)算法实现。当顾客选择该功效,系统能根据顾客输入的起始景点编号和目的景点编号,求出从该景点到其它景点的最短途径线路及距离,和其它包含7个景点以内的可行途径。更改地图更改图的信息功效由主调函数Changegraph()及若干子函数完毕,能够实现图的若干基本操作。如增加新的景点、删除边、修改景点介绍等。退出即退出校园导游系统,由函数Exit()实现。3模块设计3.1模块设计本程序包含3个模块:主程序模块、工作区模块和无向网操作模块。其调用关系如图1-2所示。图1-2抽象的盐城工学院南校区无向带权图3.2系统子程序及功效设计本系统共设立17个子程序,各子程序的函数名及功效阐明以下。(1)voidChushihua();//图的初始化(2)voidWaitting(long);//被(3)调用,拟定等待时间(3)voidLoading(char);//页面间的加载界面(4)voidViewlist();//景点列表(5)voidIndex();//主界面(6)voidExit();//推出(7)voidGuide();//景点导航(8)voidShortestPath(inta,intb);//用Dijktra算法,求最短途径(9)voidAllpath(inta,intb);//查询全部可行途径(10)voidpath(inta,intb,intk);被(9)调用,打印两景点间的景点个数不大于6的全部途径(11)intChangegraph();//图操作的主调函数(12)voiddelvex();//删除景点(13)intdelarc();//删除途径(14)intenvex();//增加景点(15)intenarc();//增加途径(16)intnewgraph();//更新介绍(17)voidmain();//主函数3.3函数重要调用关系图校园导游系统17个子程序之间的重要调用关系如图1-3所示。图1-3系统函数调用关系图4具体设计各部分功效的实当代码。4.1数据类型定义(1)无向带权图(无向网)的定义typedefstructside//边的信息{intadj;//边的权值,adjmatrix[MaxVertexNum][MaxVertexNum]}side,adjmatrix[MaxVertexNum][MaxVertexNum];//邻接矩阵typedefstructvertex//顶点信息{intnumber;//景点编号charname[32];//景点名称charintroduction[256];//景点介绍}vertex;typedefstructpicture//图{vertexvexs[MaxVertexNum];//顶点向量(数组)adjmatrixarcs;//邻接矩阵intvexnum,arcnum;//顶点个数边的个输}picture;(2)全局变量定义picturec;//图(大学校园)intvisited[15],d[15];//判断顶点与否被访问过4.2系统重要子程序具体设计(1)主函数模块设计intmain(){Chushihua();Index();return0;}(2)顾客工作区模块设计voidIndex(){intchoice;printf("\n\n\n\t\t\t****************************欢迎使用校园导游程序****************************\n");printf("\t\t\t**\n");printf("\t\t\t*盐城工学院欢迎您!*\n");printf("\t\t\t**\n");printf("\t\t\t**\n");printf("\t\t\t*服务列表:*\n");printf("\t\t\t**\n");printf("\t\t\t*1.景点列表2.路线导航*\n");printf("\t\t\t**\n");printf("\t\t\t*3.更改地图4.退出系统*\n");printf("\t\t\t**\n");printf("\t\t\t**\n");printf("\t\t\t**\n");printf("\t\t\t****************************************************************************\n");printf("\n\n\t\t\t请选择服务:");scanf("%d",&choice);while(!(choice==1||choice==2||choice==3||choice==4)){printf("\n\t\t\t输入信息错误,请重新输入:");scanf("%d",&choice);}while(1){switch(choice){case1:Viewlist();break;case2:Guide();break;case3:Changegraph();break;case4:Exit();break;default:break;}}}(3)无向网操作主调模块设计intChangegraph(){ Loading("更改地图界面"); intyourchoice; printf("\n\n\n\t\t\t****************************************************************************\n");printf("\t\t\t**\n");printf("\t\t\t*服务选项:*\n");printf("\t\t\t**\n");printf("\t\t\t*1.删除景点2.增加景点*\n");printf("\t\t\t**\n");printf("\t\t\t*3.删除途径4.增加途径*\n");printf("\t\t\t**\n");printf("\t\t\t*5.更新信息6.返回主页*\n");printf("\t\t\t**\n");printf("\t\t\t**\n");printf("\t\t\t**\n");printf("\t\t\t****************************************************************************\n");printf("\n\n\t\t\t请选择服务:"); scanf("%d",&yourchoice);printf("\n\n"); while(!(yourchoice==1||yourchoice==2||yourchoice==3||yourchoice==4||yourchoice==5||yourchoice==6)) { printf("\n\t\t\t输入信息错误,请重新输入:");scanf("%d",&yourchoice); } while(1) { switch(yourchoice) { case1:delvex(); break; case3: delarc(); break; case2: envex(); break; case4: enarc(); break; case5:newgraph(); break; case6: Loading("主页");Index(); } }}(4)求两景点间途径voidGuide(){inta,b;Loading("导航界面");printf("\n\n\t\t\t****************************************************************************\n");printf("\n\t\t\t请输入您现在位置的代号:");scanf("%d",&a);while(!(a>=0&&a<c.vexnum)){printf("\n\t\t\t输入信息错误,请重新输入:");scanf("%d",&a);}printf("\n\t\t\t请输入您目的位置的代号:");scanf("%d",&b);while(!(b>=0&&b<c.vexnum)){printf("\n\t\t\t输入信息错误,请重新输入:");scanf("%d",&b);}printf("\n\n\n\t\t\t\t\t正在查询路线\t");for(inti=0;i<5;i++){Waitting(60000000);printf(".");}system("cls");ShortestPath(a,b);Allpath(a,b);printf("\t\t\t****************************************************************************\n");printf("\n\n\t\t\t回车键键返回主菜单...");getchar();getchar();Loading("主页");Index();}(5)用Dijkstra算法,求一种景点到其它景点间的最短途径并打印voidShortestPath(inta,intb){inti,v,u,w,d[15][15],p[15][15][15];//v0为起始点for(v=0;v<c.vexnum;v++){for(w=0;w<c.vexnum;w++){d[v][w]=c.arcs[v][w].adj;for(u=0;u<c.vexnum;u++)p[v][w][u]=0;if(d[v][w]<Null){p[v][w][v]=1;p[v][w][w]=1;}}}for(u=0;u<c.vexnum;u++){for(v=0;v<c.vexnum;v++)for(w=0;w<c.vexnum;w++)if(d[v][u]+d[u][v]<d[v][w]){d[v][w]=d[v][u]+d[u][w];for(i=0;i<c.vexnum;i++)p[v][w][i]=p[v][u][i]||p[u][w][i];}}printf("\n\n\t\t\t****************************************************************************\n");printf("\n\t\t\t最短途径为:");printf("%s",c.vexs[a].name);for(u=0;u<c.vexnum;u++)if(p[a][b][u]&&a!=u&&b!=u){printf(">%s",c.vexs[u].name);}printf(">%s",c.vexs[b].name);printf("\n\t\t\t路程总长为%d米\n\n",d[a][b]);printf("\t\t\t****************************************************************************\n");printf("\n\t\t\t其它可供选择途径为:\n\n");}(6)求两景点间的全部全部途径voidAllpath(inta,intb){intk,i,j,m,n;d[0]=a;//存储途径起点m(intd[]数组是全局变量)for(k=0;k<c.vexnum;k++)//全部顶点访问标志初值设为0visited[k]=0;visited[a]=1;//第m个顶点访问标志设立为1path(a,b,0);//调用(3)。k=0,对应起点d[0]==a。k为d[]数组下标}voidpath(inta,intb,intk){ints,x=0; intt=k+1;//t记载途径上下一种中间顶点在d[]数组中的下标 if(d[k]==b&&k<6)//d[k]存储途径顶点。若d[k]是终点n且景点个数<=8,则输出该途径 { printf("\t\t\t");//递归出口,找到一条途径for(s=0;s<k;s++) printf("%s>",c.vexs[d[s]].name);//输出该途径。s=0时为起点mprintf("%s",c.vexs[d[s]].name);//输出最后一种景点名(即顶点n的名字,此时s==k)printf("\n\n");}else { s=0;while(s<c.vexnum)//从第m个顶点,试探至全部顶点与否有途径 { if((c.arcs[d[k]][s].adj<Null)&&(visited[s]==0))//初态:顶点m到顶点s有边,且未被访问 { visited[s]=1; d[k+1]=s;//存储顶点编号s至d[k+1]中 path(a,b,t);//求从下标为t=k+1的第d[t]个顶点开始的途径(递归调用),同时打印出一条m至n的途径 visited[s]=0;//将找到的途径上顶点的访问标志重新设立为0,以用于试探新的途径 } s++;//试探从下一种顶点s开始与否有到终点的途径 } }}5测试分析系统运行主界面如图1-1所示,各子功效测试运行成果以下。1.景点列表在主菜单下,顾客输入1并回车,运行成果如图1-4所示。图1-4盐城工学院南校区景点名称及介绍2.路线导航在主菜单下,顾客输入2并回车,按提示输入地点代码如1和6,运行成果如图1-5所示。图1-5输入界面等待动态加载结束,页面跳转,运行成果如图1-6所示。图1-6任意两个景点之间的最短浏览途径和全部可行途径3.更改地图在主菜单下,顾客输入3并回车后出现二级菜单界面,运行成果如图1-7所示,再进一步做出选择,能够实现图的有关基本操作。图1-8更改地图4.退出系统在主菜单下,顾客输入4并回车,即可退出校园导游系统,运行成果如图1-9所示。图1-8退出界面6源程序清单#include<stdio.h>#include<stdlib.h>#include<string.h>#include<cstring>#defineNull1000#defineMaxVertexNum20#defineMax40voidChushihua();voidWaitting(long);voidLoading(char);voidViewlist();voidIndex();voidExit();voidGuide();voidShortestPath(inta,intb);voidAllpath(inta,intb);voidpath(inta,intb,intk);intChangegraph();voiddelvex();intdelarc();intenvex();intenarc();intnewgraph();typedefstructside//边的信息{intadj;//边的权值,adjmatrix[MaxVertexNum][MaxVertexNum]}side,adjmatrix[MaxVertexNum][MaxVertexNum];//邻接矩阵typedefstructvertex//顶点信息{intnumber;//景点编号charname[32];//景点名称charintroduction[256];//景点介绍}vertex;typedefstructpicture//图{vertexvexs[MaxVertexNum];//顶点向量(数组)adjmatrixarcs;//邻接矩阵intvexnum,arcnum;//顶点个数边的个输}picture;picturec;intvisited[15],d[15];voidChushihua()//初始化图{inti=0,j=0;//picturec;c.vexnum=15;//顶点个数c.arcnum=23;//边的个数for(i=0;i<c.vexnum;i++)c.vexs[i].number=i;strcpy(c.vexs[0].name,"北门");strcpy(c.vexs[0].introduction,"位于青年路");strcpy(c.vexs[1].name,"一期食堂");strcpy(c.vexs[1].introduction,"一期餐厅,共三层,食品种类丰富");strcpy(c.vexs[2].name,"活动中心");strcpy(c.vexs[2].introduction,"卫生所、大学生活动中心所在地");strcpy(c.vexs[3].name,"一期宿舍");strcpy(c.vexs[3].introduction,"1—20栋宿舍楼,共五个大院");strcpy(c.vexs[4].name,"东操场");strcpy(c.vexs[4].introduction,"涉及篮球场、足球场、网球场,为主操场");strcpy(c.vexs[5].name,"二期食堂");strcpy(c.vexs[5].introduction,"共两层,二楼另设名族餐厅");strcpy(c.vexs[6].name,"博学楼");strcpy(c.vexs[6].introduction,"重要教学楼,涉及教室、实验机房");strcpy(c.vexs[7].name,"二期宿舍");strcpy(c.vexs[7].introduction,"21-30栋宿舍楼,共三个大院");strcpy(c.vexs[8].name,"仁和楼");strcpy(c.vexs[8].introduction,"经管学院学院楼");strcpy(c.vexs[9].name,"润美楼");strcpy(c.vexs[9].introduction,"设艺学院学院楼");strcpy(c.vexs[10].name,"土木馆");strcpy(c.vexs[10].introduction,"土木学院学院楼");strcpy(c.vexs[11].name,"机械管");strcpy(c.vexs[11].introduction,"机械学院学院楼");strcpy(c.vexs[12].name,"图书馆");strcpy(c.vexs[12].introduction,"学校图书馆,馆藏丰富");strcpy(c.vexs[13].name,"怀德楼");strcpy(c.vexs[13].introduction,"重要教师办公楼");strcpy(c.vexs[14].name,"东门");strcpy(c.vexs[14].introduction,"位于但愿大道");for(i=0;i<c.vexnum;i++) for(j=0;j<c.vexnum;j++) c.arcs[i][j].adj=Null;//初始化各个边为1000,表达两个景点之间不可达 c.arcs[0][1].adj=c.arcs[1][0].adj=100; c.arcs[0][2].adj=c.arcs[2][0].adj=140; c.arcs[1][2].adj=c.arcs[2][1].adj=80; c.arcs[2][5].adj=c.arcs[5][2].adj=190; c.arcs[1][3].adj=c.arcs[3][1].adj=100; c.arcs[3][4].adj=c.arcs[4][3].adj=130; c.arcs[3][6].adj=c.arcs[6][3].adj=80; c.arcs[4][9].adj=c.arcs[9][4].adj=120; c.arcs[5][6].adj=c.arcs[6][5].adj=160; c.arcs[5][7].adj=c.arcs[7][5].adj=60; c.arcs[6][10].adj=c.arcs[10][6].adj=140; c.arcs[6][12].adj=c.arcs[12][6].adj=100; c.arcs[6][8].adj=c.arcs[8][6].adj=90; c.arcs[7][10].adj=c.arcs[10][7].adj=120; c.arcs[8][9].adj=c.arcs[9][8].adj=50; c.arcs[8][12].adj=c.arcs[12][8].adj=110; c.arcs[9][13].adj=c.arcs[13][9].adj=100; c.arcs[9][14].adj=c.arcs[14][9].adj=120; c.arcs[10][12].adj=c.arcs[12][10].adj=70; c.arcs[10][11].adj=c.arcs[11][10].adj=50; c.arcs[11][12].adj=c.arcs[12][11].adj=70; c.arcs[12][13].adj=c.arcs[13][12].adj=130; c.arcs[13][14].adj=c.arcs[14][13].adj=90;}intmain(){Chushihua();Index();return0;}voidIndex(){intchoice;printf("\n\n\n\t\t\t****************************欢迎使用校园导游程序****************************\n");printf("\t\t\t**\n");printf("\t\t\t*盐城工学院欢迎您!*\n");printf("\t\t\t**\n");printf("\t\t\t**\n");printf("\t\t\t*服务列表:*\n");printf("\t\t\t**\n");printf("\t\t\t*1.景点列表2.路线导航*\n");printf("\t\t\t**\n");printf("\t\t\t*3.更改地图4.退出系统*\n");printf("\t\t\t**\n");printf("\t\t\t**\n");printf("\t\t\t**\n");printf("\t\t\t****************************************************************************\n");printf("\n\n\t\t\t请选择服务:");scanf("%d",&choice);while(!(choice==1||choice==2||choice==3||choice==4)){printf("\n\t\t\t输入信息错误,请重新输入:");scanf("%d",&choice);}while(1){switch(choice){case1:Viewlist();break;case2:Guide();break;case3:Changegraph();break;case4:Exit();break;default:break;}}}voidWaitting(longtime){inti,j;for(i=0;i<2;i++)for(j=0;j<time;j++);}voidLoading(charweizhi[10]){system("cls");printf("\n\n\n\t\t\t\t\t%s正在加载\t",weizhi);for(inti=0;i<5;i++){Waitting(30000000);printf(".");}system("cls");}voidViewlist(){Loading("景点列表");inti;printf("\n\n\t\t\t****************************************************************************\n");printf("\t\t\t*编号景点名称介绍*\n");printf("\t\t\t****************************************************************************\n");printf("\t\t\t**\n");for(i=0;i<c.vexnum;i++)printf("\t\t\t*%-10d%-20s%-42s*\n",c.vexs[i].number,c.vexs[i].name,c.vexs[i].introduction);printf("\t\t\t**\n");printf("\t\t\t****************************************************************************\n");printf("\n\n\t\t\t回车键返回主菜单...");getchar();getchar();Loading("主页");Index();}voidExit(){system("cls");printf("\n\n\n\t\t\t\t\t正在退出\t");for(inti=0;i<5;i++){Waitting(30000000);printf(".");}system("cls");printf("\n\n\n\t\t\t\t\t************************************\n");printf("\t\t\t\t\t**\n");printf("\t\t\t\t\t*感谢您的使用!再会!*\n");printf("\t\t\t\t\t**\n");printf("\t\t\t\t\t************************************\n\n\n");exit(0);}voidGuide(){inta,b;Loading("导航界面");printf("\n\n\t\t\t****************************************************************************\n");printf("\n\t\t\t请输入您现在位置的代号:");scanf("%d",&a);while(!(a>=0&&a<c.vexnum)){printf("\n\t\t\t输入信息错误,请重新输入:");scanf("%d",&a);}printf("\n\t\t\t请输入您目的位置的代号:");scanf("%d",&b);while(!(b>=0&&b<c.vexnum)){printf("\n\t\t\t输入信息错误,请重新输入:");scanf("%d",&b);}printf("\n\n\n\t\t\t\t\t正在查询路线\t");for(inti=0;i<5;i++){Waitting(60000000);printf(".");}system("cls");ShortestPath(a,b);Allpath(a,b);printf("\t\t\t****************************************************************************\n");printf("\n\n\t\t\t回车键键返回主菜单...");getchar();getchar();Loading("主页");Index();}voidShortestPath(inta,intb){inti,v,u,w,d[15][15],p[15][15][15];//v0为起始点for(v=0;v<c.vexnum;v++){for(w=0;w<c.vexnum;w++){d[v][w]=c.arcs[v][w].adj;for(u=0;u<c.vexnum;u++)p[v][w][u]=0;if(d[v][w]<Null){p[v][w][v]=1;p[v][w][w]=1;}}}for(u=0;u<c.vexnum;u++){for(v=0;v<c.vexnum;v++)for(w=0;w<c.vexnum;w++)if(d[v][u]+d[u][v]<d[v][w]){d[v][w]=d[v][u]+d[u][w];for(i=0;i<c.vexnum;i++)p[v][w][i]=p[v][u][i]||p[u][w][i];}}printf("\n\n\t\t\t****************************************************************************\n");printf("\n\t\t\t最短途径为:");printf("%s",c.vexs[a].name);for(u=0;u<c.vexnum;u++)if(p[a][b][u]&&a!=u&&b!=u){printf(">%s",c.vexs[u].name);}printf(">%s",c.vexs[b].name);printf("\n\t\t\t路程总长为%d米\n\n",d[a][b]);printf("\t\t\t****************************************************************************\n");printf("\n\t\t\t其它可供选择途径为:\n\n");}voidAllpath(inta,intb){intk,i,j,m,n;d[0]=a;//存储途径起点m(intd[]数组是全局变量)for(k=0;k<c.vexnum;k++)//全部顶点访问标志初值设为0visited[k]=0;visited[a]=1;//第m个顶点访问标志设立为1path(a,b,0);//调用(3)。k=0,对应起点d[0]==a。k为d[]数组下标}voidpath(inta,intb,intk){ints,x=0; intt=k+1;//t记载途径上下一种中间顶点在d[]数组中的下标 if(d[k]==b&&k<6)//d[k]存储途径顶点。若d[k]是终点n且景点个数<=8,则输出该途径 { printf("\t\t\t");//递归出口,找到一条途径for(s=0;s<k;s++) printf("%s>",c.vexs[d[s]].name);//输出该途径。s=0时为起点mprintf("%s",c.vexs[d[s]].name);//输出最后一种景点名(即顶点n的名字,此时s==k)printf("\n\n");}else { s=0;while(s<c.vexnum)//从第m个顶点,试探至全部顶点与否有途径 { if((c.arcs[d[k]][s].adj<Null)&&(visited[s]==0))//初态:顶点m到顶点s有边,且未被访问 { visited[s]=1; d[k+1]=s;//存储顶点编号s至d[k+1]中 path(a,b,t);//求从下标为t=k+1的第d[t]个顶点开始的途径(递归调用),同时打印出一条m至n的途径 visited[s]=0;//将找到的途径上顶点的访问标志重新设立为0,以用于试探新的途径 } s++;//试探从下一种顶点s开始与否有到终点的途径 } }}intChangegraph(){ Loading("更改地图界面"); intyourchoice; printf("\n\n\n\t\t\t****************************************************************************\n");printf("\t\t\t**\n");printf("\t\t\t*服务选项:*\n");printf("\t\t\t**\n");printf("\t\t\t*1.删除景点2.增加景点*\n");printf("\t\t\t**\n");printf("\t\t\t*3.删除途径4.增加途径*\n");printf("\t\t\t**\n");printf("\t\t\t*5.更新信息6.返回主页*\n");printf("\t\t\t**\n");printf("\t\t\t**\n");printf("\t\t\t**\n");printf("\t\t\t****************************************************************************\n");printf("\n\n\t\t\t请选择服务:"); scanf("%d",&yourchoice);printf("\n\n"); while(!(yourchoice==1||yourchoice==2||yourchoice==3||yourchoice==4||yourchoice==5||yourchoice==6)) { printf("\n\t\t\t输入信息错误,请重新输入:");scanf("%d",&yourchoice); } while(1) { switch(yourchoice) { case1:delvex(); break; case3: delarc(); break; case2: envex(); break; case4: enarc(); break; case5:newgraph(); break; case6: Loading("主页");Index(); } }}voiddelvex(){inti=0,j;intm;intv;system("cls");printf("\n\n\t\t\t****************************************************************************\n");if(c.vexnum<=0){printf("\n\t\t\t\t图中已无顶点\n");}printf("\n\t\t\t\t请输入你要删除的景点编号:");scanf("%d",&v);while(v<0||v>c.vexnum){printf("\n\t\t\t\t输入错误!请重新输入:");scanf("%d",&v);}printf("\n\t\t\t\t顶点%d已删除\n\n\n",v);for(i=v;i<c.vexnum-1;i++)//对顶点信息所在次序表进行删除m点的操作{strcpy(c.vexs[i].name,c.vexs[i+1].name);strcpy(c.vexs[i].introduction,c.vexs[i+1].introduction);}//对原邻接矩阵,删除该顶点到其它顶点的邻接关系。分别删除对应的行和列for(i=m;i<c.vexnum-1;i++)//行for(j=0;j<c.vexnum;j++)//列c.arcs[i][j]=c.arcs[i+1][j];//二维数组,从第m+1行开始依次往前移一行。即删除第m行for(i=m;i<c.vexnum-1;i++)for(j=0;j<c.vexnum;j++)c.arcs[j][i]=c.arcs[j][i+1];//二维数组,从第m+1列开始依次往前移一列。即删除第m列c.vexnum--;printf("\n\n\t\t\t回车键返回主菜单...");getchar();getchar();Loading("主页");Index();}intdelarc(){ intm,n; intv0,v1; system("cls");printf("\n\n\t\t\t****************************************************************************\n"); if(c.arcnum<=0) { printf("\n\t\t\t\t图中已无边,无法删除。"); return1; } printf("\n\t\t\t\t请输入你要删除的边的起点和终点编号:"); scanf("%d%d",&v0,&v1); while(v0<0||v0>c.vexnum||v1<0||v1>c.vexnum){printf("\n\t\t\t\t

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论