![胡鹏《数据结构》课程实施方案报告_第1页](http://file4.renrendoc.com/view/686b3a8831c5f91b49a9d9c7496bd00f/686b3a8831c5f91b49a9d9c7496bd00f1.gif)
![胡鹏《数据结构》课程实施方案报告_第2页](http://file4.renrendoc.com/view/686b3a8831c5f91b49a9d9c7496bd00f/686b3a8831c5f91b49a9d9c7496bd00f2.gif)
![胡鹏《数据结构》课程实施方案报告_第3页](http://file4.renrendoc.com/view/686b3a8831c5f91b49a9d9c7496bd00f/686b3a8831c5f91b49a9d9c7496bd00f3.gif)
![胡鹏《数据结构》课程实施方案报告_第4页](http://file4.renrendoc.com/view/686b3a8831c5f91b49a9d9c7496bd00f/686b3a8831c5f91b49a9d9c7496bd00f4.gif)
![胡鹏《数据结构》课程实施方案报告_第5页](http://file4.renrendoc.com/view/686b3a8831c5f91b49a9d9c7496bd00f/686b3a8831c5f91b49a9d9c7496bd00f5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
个人收集整理 仅供参考学习《数据结构》课程设计报告(2013--2014学年第1学期)题目:校园导航系统学号:111608020116姓名:胡鹏指导教师:方瑞英信息科学与工程系1/40个人收集整理 仅供参考学习目录1需求分析3b5E2RGbCAP1.1问题分析3p1EanqFDPw1.2基本要求 3DXDiTa9E3d2概要设计4RTCrpUDGiT2.1主界面设计,45PCzVD7HxA2.2存储结构设计4jLBHrnAILg2.3系统功能模块设计 5xHAQX74J0X3模块设计6LDAYtRyKfE3.1模块设计 6Zzz6ZB2Ltk3.2系统子程序及功能设计 6dvzfvkwMI14详细设计7rqyn14ZNXI4.1数据类型定义7EmxvxOtOco4.2各个模块地程序流程图 8SixE2yXPq54.3关键代码分析说明 106ewMyirQFL5调试分析和测试结果 12kavU42VRUs6心得体会 18y6v3ALoS892/401.2基本要求首先是对校园整个地平面图输出;存储景点信息采用结构体;对各个景点用字母代替,字母组成图,通过对图地操作,求出制定最短路径,并且对图地整个遍历地操作.eUts8ZQVRd3/40.M2ub6vSTnP个人收集整理 仅供参考学习需求分析河南理工大学万方科技学院紧跟龙子湖校园开发工程地历史机遇,践行“厚德、博学、笃行、创新”校训,建设出一座美丽地校园 .对河南理工大学万方科技学院校园导航系统地模拟,设计一个校园导航程序,为来访地客人提供各种信心查询服务网1.1问题分析为此通过对《数据结构》这一课程地应用,用图地模型对学校景点抽象.用邻接矩阵存储方法和狄克斯特拉算法及图地遍历实现对校园导游系统地模拟 .此系统七个功能:浏览学校景点、查看单个景点信息、查看校园地图、导游推荐、查两景点最短路线、查两景点所有景点、退出系统.0YujCfmUCw个人收集整理 仅供参考学习概要设计2.1主界面设计,图2-1 主控界面2.2存储结构设计图2-2 邻接矩阵 图2-3 校园平面图首先,由LOC-VERTEX(G,v)找到v在图G中地位置,即v在一维数4/40个人收集整理 仅供参考学习组vexs中地序号i,则二维数组arcs中第i行上第一个adj域地值为“1”地分量所在列号j,便为v地第一个临界点在图G中地位置.通知,下一个邻接点在图 G中地位置便为 j列之后第一个 adj地值为“1”地分量所在列号.sQsAEJkW5T2.3系统功能模块设计我设计有以下几个模块:1)身份验证(用户名和密码验证)2)校园导航系统地主界面输出;3)构造无向图采用数组表示法(邻接矩阵)存储;4)学校景点查询模块;5)学校景点平面图输出模块;6)计算最短路径算法地实现模块;5/40个人收集整理 仅供参考学习模块设计3.1模块设计登陆界面是否正确导航主界面学校简介 景点列表 查询景点 最短路径图3-1 校园导航系统流程图3.2系统子程序及功能设计(1)charMenu()// 主菜单(2)charSearchMenu()// 查询子菜单(3)voidsearch()// 查询景点信息(4)voidCreateUDN// 采用数组(邻接矩阵)表示法,构造无向图 G6/40个人收集整理 仅供参考学习(5)voidintroduce()// 介绍函数(6)voidpingmu()// 屏幕输出函数(7)voidShortestPath// 迪杰斯特拉算法最短路径函数(8)voidoutput// 输出函数3.3函数主要调用关系图MenuSearch introduc pingmu Shortest CreateUDsearch outputGMsIasNXkA图3-2 主要函数调用关系图详细设计4.1数据类型定义(1)整型类型: adj;n;P[NUM][NUM];D[NUM];i=0,a,j;i;v0,v1,i;flag;TIrRGchYzg7/40个人收集整理 仅供参考学习i,j;v,w,i,t;a,b,c,d,q=0;final[NUM];字符串类型:name[20];c;ck;secret[20];sight;description;info;7EqZcWLZNX4.2各个模块地程序流程图查询search否1-15 是否是查询编号 查询名称图4-1 查询模块流程图8/40个人收集整理 仅供参考学习开始数组edeges[MAXEDGE] 边集数组;数组parent[MAXVEX] 顶点数组;遍历顶点设置所有顶点parent[i]=0Int1=01<edges.Count设置n为edges[i].higen顶点地尾部下表设置m为edges[i].end顶点尾部下表I++;lzq7IGf02E
结束N<>m?Parent[n]=m输出开始顶点Edges[i].start,结束顶点Edges[i].end,边为Edges[i]9/40个人收集整理 仅供参考学习图4-2 迪杰斯特拉算法流程4.3关键代码分析说明voidCreateUDN(intv,inta)// 采用数组(邻接矩阵)表示法,构造无向图G.zvpgeqJ1hk{inti,j;G.vexnum=v;// 初始化结构中地景点数! !!G.arcnum=a;//初始化结构中地边数!!!for(i=1;i<G.vexnum;++i)G.vex[i].number=i;// 初始化每一个景点地编号初始化每一个景点名及其景点描述G.vex[0].sight="学校简介";G.vex[1].sight="校大门";G.vex[2].sight="三号楼学楼";G.vex[3].sight="一号教学楼";G.vex[4].sight="行政楼";G.vex[5].sight="实验楼";G.vex[6].sight="伯苓广场";G.vex[7].sight="秀英图书馆";G.vex[8].sight="艺术楼";G.vex[9].sight="一号食堂";G.vex[10].sight="操场";G.vex[11].sight="西区宿舍楼";G.vex[12].sight="二号食堂";G.vex[13].sight="篮球场";G.vex[14].sight="力功体育馆";G.vex[15].sight="东区宿舍楼";这里把所有地边假定为32767(2^32次方),含义是这两个景点之间是不可到达.for(i=1;i<G.vexnum;++i){for(j=1;j<G.vexnum;++j){10/40个人收集整理 仅供参考学习G.arcs[i][j].adj=Max;G.arcs[i][j].info=NULL;}}下边是可直接到达地景点间地距离,由于两个景点间距离是互相地,所以要对图中对称地边同时赋值.G.arcs[1][2].adj=G.arcs[2][1].adj=200;G.arcs[1][3].adj=G.arcs[3][1].adj=200;G.arcs[1][10].adj=G.arcs[10][1].adj=1000;G.arcs[1][13].adj=G.arcs[13][1].adj=1600;G.arcs[2][3].adj=G.arcs[3][2].adj=400;G.arcs[2][6].adj=G.arcs[6][2].adj=100;G.arcs[3][4].adj=G.arcs[4][3].adj=100;G.arcs[3][7].adj=G.arcs[7][3].adj=200;G.arcs[4][7].adj=G.arcs[7][4].adj=300;G.arcs[5][6].adj=G.arcs[6][5].adj=60;G.arcs[6][7].adj=G.arcs[7][6].adj=200;G.arcs[6][8].adj=G.arcs[8][6].adj=100;G.arcs[7][10].adj=G.arcs[10][7].adj=300;G.arcs[7][11].adj=G.arcs[11][7].adj=200;G.arcs[8][10].adj=G.arcs[10][8].adj=200;G.arcs[9][10].adj=G.arcs[10][9].adj=100;G.arcs[9][12].adj=G.arcs[12][9].adj=200;G.arcs[10][11].adj=G.arcs[11][10].adj=100;G.arcs[10][13].adj=G.arcs[13][10].adj=600;G.arcs[11][14].adj=G.arcs[14][11].adj=200;G.arcs[12][13].adj=G.arcs[13][12].adj=100;G.arcs[13][14].adj=G.arcs[14][13].adj=100;G.arcs[14][15].adj=G.arcs[15][14].adj=100;}该模块是对图地建立及使用邻接矩阵存储顶点信息以及权值,而邻接矩阵特点是:邻接矩阵来表示一个具有 n个顶点地有向图时需要 n^2个单元来存储邻接矩阵;对有 n个顶点地无向图则只存入上(下)三角阵中剔除了左上右下对角线上地 0 元素后剩余地元素,故只需1+2+...+(n-1)=n(n-1)/2 个单元.NrpoJac3v111/40个人收集整理 仅供参考学习调试分析和测试结果(1) 先是进入身份验证界面,如图所示 5-1图5-1 身份验证界面(2) 验证成功后进入副界面,如图所示 5-212/40个人收集整理 仅供参考学习图5-2身份验证成功界面3)输入数字2,进入万科大导航系统主界面,如图所示5-3图5-3万科大导航系统主界面4)输入数字1,进入万科大学校简介,如图所示5-413/40个人收集整理 仅供参考学习图5-4万科大学校简介界面5)退出(ENTER),输入数字2,进入学校平面展示,如图所示5-5图5-5学校平面展示界面6)退出(ENTER),输入数字3,进入景点展示界面,如图所示5-614/40个人收集整理 仅供参考学习图5-6景点展示界面7)退出(ENTER),输入数字4,进入景点查询界面,如图所示5-7图5-7景点查询界面8)输入数字1,进入按景点编号查询,如图所示5-815/40个人收集整理 仅供参考学习图5-8景点编号查询(9)输入1-15任何数字查看景点介绍,如图所示5-9图5-9查看景点介绍界面(数字)10)按回车键返回,输入数字2进入按景点名称进行查询,如图所示5-1016/40个人收集整理 仅供参考学习图5-10 景点名称进行查询界面(11)按回车键返回到主界面,输入数字5进入计算最短路径算法查询,如图所示5-11图5-11 最短路径算法查询界面17/40个人收集整理 仅供参考学习心得体会通过此次设计,明白了很多.首先要从设计地思路入手, 思路决定出路,一个好地算法可以使工作量简化达到事半功倍地目地 .平时生活更应该留心观察,多去想,多去做,好地程序是从历练中做出来地 .其次,应该多去交流,去查阅资料,一个程序地产生不是那么容易地,更应该知难而进,积极进取 .1nowfTG4KI参考文献(至少两个)《数据结构》(C语言版)严蔚敏吴伟民编《C语言程序设计教程》杨路明编[3]《java开发实战经典》李兴华编[4]《c语言程序设计》(第四版)谭浩强编附:源程序(可运行无误地代码)//--------------------------------------------------------------- fjnFLDa5Zo校园导航系统校园导航系统包括:学校简介,场所信息,计算路径所使用地文件:CampusNavigation.cpp,用户信息.text程序编写人员:胡鹏//编写程序时间:2013年10月30日20:56:51//修改程序时间:2013年11月30日14:38:32//代码规范时间:2013年12月10日16:38:55//---------------------------------------------------------------tfnNhnE6e5预处理命令#include<stdio.h>#include<stdlib.h>//使用system函数#include<conio.h>#include<string.h>voidinsert();18/40个人收集整理 仅供参考学习#defineN10intn;#defineMax32767#defineNUM16typedefstructArcCell{intadj;//相邻接地景点之间地路程char*info;}ArcCell;// 定义边地类型typedefstructVertexType{intnumber;// 景点编号char*sight;// 景点名称char*description;// 景点描述}VertexType;//定义顶点地类型typedefstruct{VertexTypevex[NUM];// 图中地顶点,即为景点ArcCellarcs[NUM][NUM];//图中地边,即为景点间地距离intvexnum,arcnum;//顶点数,边数}MGraph;// 定义图地类型MGraphG;// 把图定义为全局变量intP[NUM][NUM];//longintD[NUM];// 辅助变量存储最短路径长度voidCreateUDN(intv,inta);// 创建图地函数voidpingmu();//屏幕输出函数voidintroduce();//输入介绍内容,但不输出voidShortestPath(intnum);//最短路径函数voidoutput(intsight1,intsight2);// 输出函数charMenu();// 主菜单voidsearch();// 查询景点信息charSearchMenu();//查询子菜单voidNextValue(int);voiddisplay();// 显示遍历结果19/40个人收集整理 仅供参考学习voidshow();//显示校园平面图voidmainn();//--------------------- 初始系统------------------structstudent{charname[20];charsecret[20];};structstudentstu[N];voidpf(){printf("\n\n\t\t******信息工程与科学系数据结构课程设计******");printf("\n\n\n\t\t--------------------------------------");HbmVN777sLprintf("\n\t\t|\t名称:万科大校园导航系统\t|");printf("\n\t\t|\t姓名:胡鹏\t|");printf("\n\t\t|\t班级:1101网工\t|");printf("\n\t\t|\t指导老师:方瑞英\t|");printf("\n\t\t|\t 作者: 万科大校园 \t|");printf("\n\t\t --------------------------------------"); V7l4jRB8Hs}//\t表示地是向后空出 8个空格,可以使自己输出字符更规范 .//------------------------身份验证------------------------------83lcPA59W9voidmain()//主函数{chars2[10],s3[10],s4[10],s5[10],s6[10],s1[10],s7[10]="\0";mZkklkzaaPinti=0,a,j;FILE*fp;//定义地fp是指向FILE类型结构体地指针.可以使他指向某个文件地结构体变量/,从而通过该结构体变量中地文件信息能够访问该文件.AVktR43bpwif((fp=fopen("用户信息.txt","r"))==NULL)//“r”为输出打开一个文本文档ORjBnOwcEd20/40个人收集整理 仅供参考学习{printf("找不到 用户信息.txt文件!\n");system("pause");//从程序里调用“ pause”命令.exit(0);}else{fscanf(fp,"\t%d\n",&n);//fscanf( 文件指针,格式字符串,输入文件表列 )for(i=0;i<N;i++)fscanf(fp,"\t%s\t%s\n",stu[i].name,stu[i].secret);}//从一个流中执行格式化输入,fscanf遇到空格和换行时结束,注意空格时也结束.//fscanf(文件指针,格式字符串,输入列表 );fclose(fp);printf("\n\n\n\n\n\n\n\n\t\t 保存在用户信息 .txt文件中地所有信息已经读入程序中!\n\n\t\t\t");2MiJTy0dTTsystem("pause");system("cls");for(i=0;i<3;i++){pf();printf("\n\n\t\t 用户登陆");printf("请输入用户名,你还有 %d次机会.\n\t\t\t",3-i);gets(s3);if(!strcmp(s3,s7))//strcmp比较两个字符串地大小{printf("用户名不能空格,谢谢!!!");printf("用户名不正确,请从新输入.\n");system("pause");//从程序里调用“pause”命令.system("cls");//从程序里调用“ clear”命令.if(i==2){printf("\n\n\t\t\t用户名不正确,按任意键退出.\n\n\n\t\t\t");exit(0);}continue;}for(j=0;j<N;j++)21/40个人收集整理 仅供参考学习{if(!strcmp(stu[j].name,s3)){printf("用户名正确\n");strcpy(s1,stu[j].name);strcpy(s2,stu[j].secret);system("cls");//从程序里调用“ clear”命令.break;}}if(!strcmp(s1,s3))break;printf("用户名不正确,请从新输入 .\n");system("pause");//从程序里调用“ pause”命令.if(i==2){printf("用户名和密码不匹配,按任意键退出 .\n");system("pause");//从程序里调用“ pause”命令.exit(0);}system("cls");//从程序里调用“ clear”命令.}for(i=0;i<3;i++){pf();printf("\n\n\t 用户登陆");printf("\n\n用户名正确\n");printf("\n请输入用户密码,你还有 %d次机会.\n",3-i);printf("密码正确,登陆成功时,系统将自动跳转 \n");gets(s4);if(!strcmp(s2,s4)){system("cls");//从程序里调用“ clear”命令.break;22/40个人收集整理 仅供参考学习}Elseif(i==2){system("cls");//从程序里调用“ clear”命令.printf("\n\n\n\t\t\t 用户名和密码不匹配,按任意键退出.\n\n\n\t\t\t");gIiSpiue7Aexit(0);}else{system("cls");//从程序里调用“ clear”命令.printf("输入错误,请从新输入 :\n");}}for(i=0;;i++){pf();printf("\n\t\t***********************************\n"); uEh0U1Yfmhprintf("\t\t*1.退出系统*\n");printf("\t\t**\n");IAg9qLsgBXprintf("\t\t*2.进入万科大导航系统*\n");printf("\t\t**\n");WwghWvVhPEprintf("\t\t*3.新增用户信息*\n");printf("\t\t**\n");asfpsfpi4kprintf("\t\t*0.修改密码*\n");printf("\t\t********************************\n");ooeyYZTjj1printf("请选择功能\n");scanf("%d",&a);if(a==1){printf("按任意键退出\n");break;}getchar();if(a==2)23/40个人收集整理 仅供参考学习mainn();if(a==3)insert();if(a==0){for(i=0;i<3;i++){system("cls");//从程序里调用“ clear”命令.pf();printf("\n\n请输入原密码\n");printf("两次不正确,系统将自动返回,你还有%d次机会.\n",3-i-1);gets(s3);if(!strcmp(s2,s3)){for(i=0;;i++){printf("\n请输入新密码\n");gets(s6);printf("\n请在此输入新密码 \n");gets(s5);if(!strcmp(s5,s6)){system("cls");//从程序里调用“ clear”命令.printf("新密码为:%s\n",s5);strcpy(s2,s5);strcpy(stu[j].secret,s2);if((fp=fopen("用户信息.txt","w"))==NULL){printf("\n保存失败!");exit(0);}else{for(i=0;i<N;i++)fprintf(fp,"\t%s\t%s\n",stu[i].name,stu[i].secret); BkeGuInkxI}fclose(fp);24/40个人收集整理 仅供参考学习printf("新用户信息已保存在用户信息 .txt中!\n");system("pause");//从程序里调用“ pause”命令.system("cls");//从程序里调用“ clear”命令.break;}elsesystem("cls");//从程序里调用“ clear”命令.printf("\n\n两次输入密码不一样,密码修改失败 \n");break;}break;}else{printf("原密码输入错误 \n");printf("请珍惜机会,从新输入 .");system("pause");//从程序里调用“ pause”命令.system("cls");//从程序里调用“ clear”命令.}if(i==2){exit(0);//已经是第三次了,哈哈!}}}}}voidinsert(){inti;FILE*fp;n++;printf("\n\t\t输入新插入用户信息\n");printf("\n输入新用户名:");scanf("%s",stu[n].name);fflush(stdin);//清空输入缓冲区,通常是为了确保不影响后面地数据读取printf("\n输入新用户密码:");25/40个人收集整理 仅供参考学习scanf("%s",stu[n].secret);if((fp=fopen("用户信息 .txt","w"))==NULL)// “w”为输出打开一个文本文档PgdO0sRlMo{printf("\n保存失败!");exit(0);}else{fprintf(fp,"\t%d\n",n);//fprintf( 文件指针,格式字符串,输出文件表列)3cdXwckm15for(i=0;i<N;i++)fprintf(fp,"\t%s\t%s\n",stu[i].name,stu[i].secret); h8c52WOngM}fclose(fp);printf("新用户信息已保存在用户信息 .txt中!\n");system("pause");system("cls");}voidmainn()// 万科大导航系统地主函数{intv0,v1,i;charck;system("color1b");//修改控制台地颜色信息CreateUDN(NUM,16);do{ck=Menu();switch(ck){case'1':system("cls");introduce();printf("\n\n\t\t%-25s\n\n",G.vex[0].description);//进入学校简介 v4bdyGiousgetchar();getchar();26/40个人收集整理 仅供参考学习break;case'2':show();//学校平面图getchar();getchar();break;case'3':for(i=1;i<NUM;i++){printf("%c\t\t(%2d)%s%c\n",1,i,G .vex[i].sight,1); // 输出景点列表J0bm4qMpJ9}printf("\n\n\t\t\t\t 请按回车键继续 ...\n");getchar();getchar();break;case'4':search();break;case'5':system("cls");for(i=1;i<NUM;i++){printf("\t\t%c\t\t(%2d)%-20s%c\t\t\t",1,i,G .vex[i].sight,1); //输出景点列表XVauA9grYP}printf("\n\n\t\t\t请选择起点景点(1~15):");scanf("%d",&v0);printf("\t\t\t请选择终点景点(1~15):");scanf("%d",&v1);ShortestPath(v0);//计算两个景点之间地最短路径output(v0,v1);// 输出结果printf("\n\n\t\t\t\t 请按回车键继续 ...\n");getchar();getchar();break;27/40个人收集整理 仅供参考学习}}while(ck!='6');system("cls");}voidshow(){ printf("******************************* 万 科 大 大 学 平 面 图********************************\n"); bR9C6TJscwprintf(" 实 验 楼\n");pN9LBDdtrdprintf(" ┃\n");DJ8T7nHuGTprintf(" ┃\n");QF81D7bvUAprintf(" 三号教学楼 伯苓广场━━━艺术楼 一号食堂二号食堂 \n");4B7a9QFw9hprintf(" ┃┃┃┃ \n");printf(" ┃┃┃┃ \n");printf(" 校大门━━━━━━━━━━━━━━━━━ 西区宿舍楼━━━━━━━━东区宿舍楼 \n");ix6iFA8xoXprintf(" ┃┃┃┃ \n");printf(" 一号教学楼 秀英图 书馆 ┃┃\n");wt6qbkCyDEprintf(" ┃┃┃ \n");printf(" ┃ 操场篮球场 \n");Kp5zH46zRkprintf(" ┃┃ \n");printf(" 行 政 楼力功体育馆 \n");Yl4HdOAA61}charMenu()// 主菜单 //{charc;intflag;system("cls");28/40个人收集整理 仅供参考学习do{flag=1;pingmu();introduce();printf("\t\t*1.学校简介┃\n\n");printf("\t\t*2.万科大校园平面简图┃\n\n");printf("\t\t*3.显示场所地编号┃\n\n");printf("\t\t*4.查看场所地具体信息┃\n\n");printf("\t\t*5.计算路径长度及找出最短路径┃\n\n");printf("\t\t*6.退出┃\n\n");printf("\t\t****************************************************\n");BlIprintf("\t\t\t\t 请输入您地选择: ");scanf("%c",&c);if(c=='1'||c=='2'||c=='3'||c=='4'||c=='5'||c=='6')flag=0;}while(flag);returnc;}//--------------------------查询---------------------------------qd3YfhxCzocharSearchMenu()//查询子菜单{charc;intflag;do{flag=1;system("cls");pingmu();introduce();printf("\n\t\t*************************************\n");printf("\t\t*┃\n");printf("\t\t*1、按照景点编号查询┃\n");printf("\t\t*2、按照景点名称查询┃\n");printf("\t\t*0、返回┃\n");
ch4PJx4E836L11DO529/40个人收集整理 仅供参考学习printf("\t\t*┃\n");printf("\t\t*************************************\n");S42ehLvE3Mprintf("\t\t\t 请输入您地选择: ");scanf("%c",&c);if(c=='1'||c=='2'||c=='0')flag=0;}while(flag);returnc;}voidsearch()// 查询景点信息{intnum;inti;charc;charname[20];do{system("cls");c=SearchMenu();switch(c){case'1':system("cls");introduce();for(i=1;i<NUM;i++){printf("\t\t%c\t\t(%2d)%-20s%c\t\t\t",1,i,G .vex[i].sight,1); //输出景点列表501nNvZFis}printf("\n\n\t\t 请输入您要查找地景点编号: ");scanf("%d",&num);for(i=0;i<NUM;i++){if(num==G.vex[i].number)30/40个人收集整理 仅供参考学习{printf("\n\n\t\t\t您要查找景点信息如下:");printf("\n\n\t\t\t%-25s\n\n",G.vex[i].description);jW1viftGw9printf("\n\t\t\t 按任回车返回...");getchar();getchar();break;}}if(i==NUM)// 只要上面 FOR循环执行完毕,则 i就是NUM{printf("\n\n\t\t\t 没有找到!");printf("\n\n\t\t\t 按回车键返回...");getchar();getchar();}break;case'2':system("cls");introduce();printf("\n\n\t\t 请输入您要查找地景点名称: ");scanf("%s",name);for(i=1;i<NUM;i++){if(!strcmp(name,G.vex[i].sight)){printf("\n\n\t\t\t 您要查找景点信息如下 :");printf("\n\n\t\t\t%-25s\n\n",G .vex[i].description);xS0DOYWHLPprintf("\n\t\t\t 按回车键返回...");getchar();getchar();break;}}if(i==NUM)// 只要上面 FOR循环执行完毕,则 i就是NUM{printf("\n\n\t\t\t 没有找到!");31/40个人收集整理 仅供参考学习printf("\n\n\t\t\t 按回车键返回...");getchar();getchar();}break;}}while(c!='0');getchar();}//---------------------------- 构造无向图 G------------------------------- LOZMkIqI0wvoid CreateUDN(int v,inta)//采用数组(邻接矩阵)表示法,构造无向图 G.ZKZUQsUJed{inti,j;G.vexnum=v;// 初始化结构中地景点数!!!G.arcnum=a;//初始化结构中地边数!!!for(i=1;i<G.vexnum;++i)G.vex[i].number=i;// 初始化每一个景点地编号初始化每一个景点名及其景点描述G.vex[0].sight="学校简介";G.vex[1].sight="校大门";G.vex[2].sight="三号楼学楼";G.vex[3].sight="一号教学楼";G.vex[4].sight="行政楼";G.vex[5].sight="实验楼";G.vex[6].sight="伯苓广场";G.vex[7].sight="秀英图书馆";G.vex[8].sight="艺术楼";G.vex[9].sight="一号食堂";G.vex[10].sight="操场";G.vex[11].sight="西区宿舍楼";G.vex[12].sight="二号食堂";32/40个人收集整理 仅供参考学习G.vex[13].sight="篮球场";G.vex[14].sight="力功体育馆";G.vex[15].sight="东区宿舍楼";这里把所有地边假定为32767(2^32次方),含义是这两个景点之间是不可到达.for(i=1;i<G.vexnum;++i){for(j=1;j<G.vexnum;++j){G.arcs[i][j].adj=Max;G.arcs[i][j].info=NULL;}}下边是可直接到达地景点间地距离,由于两个景点间距离是互相地,所以要对图中对称地边同时赋值.G.arcs[1][2].adj=G.arcs[2][1].adj=200;G.arcs[1][3].adj=G.arcs[3][1].adj=200;G.arcs[1][10].adj=G.arcs[10][1].adj=1000;G.arcs[1][13].adj=G.arcs[13][1].adj=1600;G.arcs[2][3].adj=G.arcs[3][2].adj=400;G.arcs[2][6].adj=G.arcs[6][2].adj=100;G.arcs[3][4].adj=G.arcs[4][3].adj=100;G.arcs[3][7].adj=G.arcs[7][3].adj=200;G.arcs[4][7].adj=G.arcs[7][4].adj=300;G.arcs[5][6].adj=G.arcs[6][5].adj=60;G.arcs[6][7].adj=G.arcs[7][6].adj=200;G.arcs[6][8].adj=G.arcs[8][6].adj=100;G.arcs[7][10].adj=G.arcs[10][7].adj=300;G.arcs[7][11].adj=G.arcs[11][7].adj=200;G.arcs[8][10].adj=G.arcs[10][8].adj=200;G.arcs[9][10].adj=G.arcs[10][9].adj=100;G.arcs[9][12].adj=G.arcs[12][9].adj=200;G.arcs[10][11].adj=G.arcs[11][10].adj=100;G.arcs[10][13].adj=G.arcs[13][10].adj=600;G.arcs[11][14].adj=G.arcs[14][11].adj=200;33/40个人收集整理 仅供参考学习G.arcs[12][13].adj=G.arcs[13][12].adj=100;G.arcs[13][14].adj=G.arcs[14][13].adj=100;G.arcs[14][15].adj=G.arcs[15][14].adj=100;}//--------------------------------简介-----------------------------------------dGY2mcoKtTvoidintroduce()//介绍函数{inti;for(i=1;i<=NUM;i++){G.vex[0].description="\t▲\t河南理工大学具有百年办学历史,\n是河南省最早建立地高等学校,\n\n\t\t我省第三家具有博士学位授予权地重点建设骨干高校.\n\n\t\t郑州校区校园布局合理,环境优雅,功能齐全,\n\n\t\t能充分满足教学、实习、实验和课外活动需要.\n";rCYbSWRLIAG.vex[1].description="\t▲学校大门";G.vex[2].description="\t▲三号教学楼,\n\t是一座崭新地现代化大楼.\n\n\t\t";FyXjoFlMWhG.vex[3].description="\t▲ 一号教学楼, \n\t也是平时同学们上课主要地场所.\n\n\t\t";TuWrUpPObXG.vex[4].description="\t▲行政楼,\n\t教育交流中心,基本位于学校心脏位置,\n\t内部多为各科处室,会议室.\n\t指挥我校各项工作正常运行,其作用可想而知啦!\n\n\t\t";7qWAq9jPqEG.vex[5].description="\t▲实验楼,\n\t具有计算机网络实验室,宝石鉴定实验室等,\n\t是锻炼我们动手地好去处.\n\n\t\t";llVIWTNQFkG.vex[6].description="\t▲柏林广场,\n\t为学校举行大型活动地主要场所,\n\t位于实验楼地下面,\n\t学生作品会展中心,学习活动之地\n\n\t\t";yhUQsDgRT1G.vex[7].description="\t▲图书馆,\n\t为同学们阅读自习地不二之选,\n\t南MdUZYnKS8I楼设有自习室,北楼多为电子阅读室 \n\n\t\t";G.vex[8].description="\t▲艺术楼,\n\t我校校园舞蹈队排练场所及舞蹈兴趣班活动场所\n\n\t\t";09T7t6eTnoG.vex[9].description="\t ▲ 一号食堂,\n\t 学生用用餐地地方\n\n\t\t";e5TfZQIUB5G.vex[10].description="\t▲操场,\n\t供体育锻炼用地场地, \n\t多指学校进行34/40个人收集整理 仅供参考学习体育活动和教学活动地专置场地, \n\t是学校硬件设施不可缺少地一部分 .\n\n\t\t";s1SovAcVQMG.vex[11].description="\t▲ 西区宿舍楼,\n\t 是学生及老师住宿地地方.\n\n\t\t"; GXRw1kFW5sG.vex[12].description="\t ▲ 二号食堂,\n\t 是学生用餐地好地方.\n\n\t\t";UTREx49Xj9G.vex[13].description="\t▲篮球场,\n\t是热爱打篮球地运动员们必不可少地环境,\n\t一个长方形地坚实平面,无障碍物 .\n\n\t\t";8PQN3NDYyPG.vex[14].description="\t▲立功体育馆,\n\t是学校举行模特大赛,篮球比赛等重要活动举行地重要场所.";mLPVzx7ZNwG.vex[15].description="\t▲ 东区宿舍楼,\n\t 是学生及老师住宿地地方.\n\n\t\t";AHP35hB02d}}//--------------------------------主界面函数--------------------------NDOcB141gTvoidpingmu()//屏幕输出函数{printf("\t\t----------------------------------------------------\n");1zOk7Ly2vAprintf("\t\t*********************\n");fuNsDv23Khprintf("\t\t**************\n");tqMB9ew4YXprintf("\t\t********************\n");HmMJFY05dEprintf("\t\t**************\n");ViLRaIt6skprintf("\t\t************************\n");9eK0GsX7H1printf("\t\t----------------------------------------------------\n");naK8ccr8VIprintf("\t\t****************************************************\n"); B6JgIVV9aoprintf("\t\t\t\t 欢迎光临万科大大学 \n");printf("\t\t****************************************************\n"); P2IpeFp35/40个人收集整理 仅供参考学习ap5}//------------------------ 计 算最 短 路 径 Dijkstra( 迪 杰 斯 特 拉 )算 法----------------3YIxKpScDMvoid ShortestPath(intnum)//迪杰斯特拉算法最短路径函数 num为入口点地编号gUHFg9mdSs{intv,w,i,t;//i、w和v为计数变量intfinal[NUM];// 判断S,v-Sintmin;for(v=1;v<NUM;v++){final[v]=0;// 假设从顶点 num到顶点v没有最短路径D[v]=G.arcs[num][v].adj;// 将与之相关地权值放入 D中存放for(w=1;w<NUM;w++)// 设置为空路径P[v][w]=0;// 存在标志置为 0if(D[v]<32767)// 存在路径{P[v][num]=1;// 存在标志置为一P[v][v]=1;// 自身到自身}}D[num]=0;//自己到自己为 0final[num]=1;// 初始化num顶点属于 S集合//开始主循环,每一次求得 num到某个顶点地最短路径,并将其加入到 S集合for(i=1;i<NUM;++i)// 其余G.vexnum-1个顶点{min=Max;// 当前所知离顶点 num地最近距离for(w=1;w<NUM;++w)if(!final[w])//w 顶点在v-s中if(D[w]<min)//w 顶点离num顶点更近{36/40个人收集整理 仅供参考学习v=w;//将找到地最短路径赋值于 vmin=D[w];}final[v]=1;// 离num顶点更近地 v加入到s集合for(w=1;w<NUM;++w)// 更新当前最短路径极其距离if(!final[w]&&((min+G.arcs[v][w].adj)<D[w]))//不在s集合,并且比以前所找到地路径都短就更新当前路径uQHOMTQe79{//min地值就是 D[v]D[w]=min+G.arcs[v][w].adj;for(t=0;t<NUM;t++)P[w][t]=P[v][t];P[w][w]=1;}}}voidoutput(intsight1,intsight2)// 输出函数{inta,b,c,d,q=0;a=si
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 代办签证服务合同范例
- 2025年度建筑用五金配件购销合同模板
- 医用气体合同范本
- 公路维修封路合同范例
- 2025年度防水材料环保认证服务合同标准
- 2025年度湖北城市排水管道维护及清疏合同
- 冰柜采购合同范本
- 劳务公司签合同范本
- 中兴合同范本
- 医废清运合同范例
- 市政道路监理大纲34368
- 国际工程项目管理课件
- 珠海市政工程竣工档案验收指南(试行上)
- 2024年广东省广州市中考英语试卷附答案
- 良性前列腺增生症患者围手术期的护理
- DL∕T 1610-2016 变电站机器人巡检系统通 用技术条件
- GB/T 44143-2024科技人才评价规范
- 《混合动力汽车用变速器效率台架试验方法》
- 对医院领导的批评意见怎么写更合适范文(6篇)
- 裕龙岛炼化一体化项目(一期)环境影响报告
- 2024年北京卷英语真题
评论
0/150
提交评论