校园导航系统课程设计报告样本_第1页
校园导航系统课程设计报告样本_第2页
校园导航系统课程设计报告样本_第3页
校园导航系统课程设计报告样本_第4页
校园导航系统课程设计报告样本_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

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

文档简介

《校园导航系统》课程设计报告姓名:郭璇学号:班级:10网络专业:网络工程指引教师:唐轶媛蒋荣萍时间:/6/25-/7/6信息科学与工程学院

目录摘要……………….……………….1题目…………….……………….1概要设计……………………….1调试分析……………………….15参照文献……………………….15

题目校园导航系统设计一种校园导游程序,后台操作:1、操作员信息管理如修改密码等2、能依照学校规模进行添加景点信息、修改景点信息等功能,3、若暂时有交通管制,能进行交通管制设立和撤销(如某某时间段那条路进行那个方向交通管制等)前台为来访客人提供各种信息查询服务:1、设计学校校园平面图,所含景点不少于10个。以图中顶点表达校内各景点,存储景点名称、代号、简介等信息;以边表达途径,存储途径长度等有关信息。2、为来访客人提供图中任意景点有关信息查询。3、提供途中任意景点问路查询,即求任意两个景点间一条最短简朴途径。1.1需求分析设计一种校园导航系统,导航系统又分为游客和管理员。要进行管理操作还是游客操作由顾客自己选取管理员操作:修改景点信息、增长景点信息、交通管制等。游客操作:查看景点信息和查最短途径。概要设计景点信息由一维数组存储,景点关系由二维数据来存储景点信息和关系从文献读取,进而初始化typedefstruct//保存单个景点信息构造体{ charcode[10];//存储景点代码 charname[20];//存储景点名称 charinstruction[100];//存储景点简介}ViewPoint;typedefstruct//存储景点关系二维数组{ intedges[MAXV][MAXV];//两景点间距离 intnumber;//景点数量 ViewPointV[MAXV];//保存景点信息构造体数组}MGraph;2.1流程图函数开始↓接受功能祈求↓接受信息输入↓判断与否对的↓读取文献↓进行相相应操作↓写回文献↓函数结束详细设计voidMainMenu();主菜单,写界面操作函数。voidUserMenu();游客菜单,判断与否非法输入,不会死循环。voidMap();输出民大地图,由于时间关系,没有画出。voidViewAsk();游客查询景点函数,让游客选取要查询景点,判断与否非法输入,不会死循环。voidPathAsk();问路函数,依照游客起点和终点给出最短途径,判断与否非法输入,不会死循环。voidDijkstra(MGraphG,intv,inti);迪杰斯特拉函数求最短途径voidPpath(MGraphG,intpath[],inti,intv);输出最短途径中景点voidDispath(MGraphG,intdist[],intpath[],ints[],intn,intv,inti);查找最短途径。voidAdminMenu();管理员菜单,判断与否非法输入,不会死循环。voidPassword();密码函数,管理员需输入密码才干进入后台,输入一次后无需再输入。voidAdminAlter();修改密码,需要再次输入密码。voidViewAdd();增长景点,列出已有景点,判断新景点信息是和与已有景点冲突,如冲突需重新输入,判断与否非法输入,不会死循环。voidViewAlter();修改景点信息,由于时间关系,没有判断新修改景点信息与否与已有景点信息冲突。若要做次判断,应与增长景点判断算法一致。voidControlMenu();交通管制菜单,判断与否非法输入,不会死循环。voidPathControl();途径管理,可增长途径和修改途径,列出已有途径,依照顾客输入进行管理,判断与否非法输入,不会死循环。但途径长度为整型,没有判断,若输入非整型,则进入死循环,一种大大BUG,能力有限。voidPathDel();删除途径,列出已有途径,顾客依照提示进行删除。判断与否非法输入,不会死循环。voidRead(MGraph&G);读取文献。voidWhite(MGraph&G);保存文献。操作界面程序一开始登录主界面:游客菜单:管理员界面管理员界面管理员操作界面查询景点查询最短途径修改密码增长景点修改景点信息交通管制界面删除途径管理途径3调试分析:当进入操作界面进行功能选取,但非法输入时,应当提示错误并可以让顾客重新选取,我使用接受选取是字符串,判断字符串长度与否等于1,如果不等于则是错误,等于1后用switch判断第一种字符,与case比较,调用相应函数。用whlie(1),使之始终循环,直到与case中相似,使用标志和break;让她跳出相应循环层。在这里经常会出错,因此要很小心判断每个标志跳出相应循环,使她不会跳出不该跳出循环。另一种问题是最短途径。在新增一种景点后,我选取不添加相邻途径时(矩阵行等于列始终为0,表达同一种景点到同一种景点途径为0),再次查询最短途径时,起点为新增途径,终点为任何一种景点都无法运营;但是起点为除新增景点外景点,而终点为新增景点时,可对的输出:没有途径。由于时间因素来不及调试了。参照文献[1]严蔚敏、吴为民.数据构造(C语言版).北京:清华大学出版社.[2]林小茶.C语言程序设计(第二版).中华人民共和国铁道出版社.[3]杜茂康、李昌兵等.C++面向对象程序设计(第2版).北京:电子工业出版社.

附录源程序<All.h>:头文献详细代码#include<iostream.h>#include<iomanip.h>#include<fstream.h>#include<string.h>#include<conio.h>#include<stdlib.h>#include<stdio.h>#defineMAXV100#defineINF10000typedefstruct{ charcode[10]; charname[20]; charinstruction[100];}ViewPoint;typedefstruct{ intedges[MAXV][MAXV]; intnumber; ViewPointV[MAXV];}MGraph;voidMainMenu();voidUserMenu();voidMap();voidViewAsk();voidPathAsk();voidDijkstra(MGraphG,intv,inti);voidPpath(MGraphG,intpath[],inti,intv);voidDispath(MGraphG,intdist[],intpath[],ints[],intn,intv,inti);voidAdminMenu();voidPassword();voidAdminAlter();voidViewAdd();voidViewAlter();voidControlMenu();voidPathControl();voidPathDel();voidRead(MGraph&G);voidWhite(MGraph&G);<Main.cpp>:主函数#include"All.h"main(){ intpass; charname[10],password[10]; ifstreamindata("Password.txt"); indata>>pass>>name>>password; indata.close(); pass=0; ofstreamoutdata("Password.txt"); outdata<<pass<<endl<<name<<endl<<password; outdata.close(); MainMenu(); }<Menu.cpp>:菜单功能#include"All.h"voidMainMenu(){ system("cls"); charchoose[1]; cout<<"\n\n\n"<<setw(56)<<"欢迎光临广西民族大学,祝您旅途高兴!"<<endl; cout<<setw(55)<<"广西民族大学校园导航系统为您服务!"<<endl; cout<<endl<<setw(45)<<"1.进入导航系统"<<endl; cout<<setw(45)<<"───────"<<endl; cout<<setw(45)<<"2.登录操作系统"<<endl; cout<<setw(45)<<"───────"<<endl; cout<<setw(37)<<"3.退出"<<endl; cout<<setw(45)<<"───────"<<endl; cout<<endl<<setw(46)<<"请输入您选取:"; cin>>choose; if(strlen(choose)==1) { switch(choose[0]) { case'1': UserMenu();break; case'2': Password();break; case'3': exit(0); default: system("cls"); cout<<"\n\n\n"<<endl<<setw(43)<<"选取错误!"<<endl; cout<<endl<<setw(52)<<"按任意键返回主菜单重新选取!"; cout<<endl; getch(); MainMenu(); break; } } else { system("cls"); cout<<"\n\n\n"<<endl<<setw(43)<<"选取错误!"<<endl; cout<<endl<<setw(52)<<"按任意键返回主菜单重新选取!"; cout<<endl; getch(); MainMenu(); }}voidUserMenu(){ system("cls"); charchoose[1]; intflag=0; cout<<"\n\n\n"<<setw(45)<<"校园导航系统!"<<endl; cout<<endl<<setw(45)<<"1.查看校园地图"<<endl; cout<<setw(45)<<"───────"<<endl; cout<<setw(45)<<"2.景点信息查询"<<endl; cout<<setw(45)<<"───────"<<endl; cout<<setw(45)<<"3.景点问路查询"<<endl; cout<<setw(45)<<"───────"<<endl; cout<<setw(43)<<"4.返回主菜单"<<endl; cout<<setw(45)<<"───────"<<endl; cout<<setw(37)<<"5.退出"<<endl; cout<<setw(45)<<"───────"<<endl; cout<<endl<<setw(46)<<"请输入您选取:"; cin>>choose; if(strlen(choose)==1) { switch(choose[0]) { case'1': Map();break; case'2': ViewAsk();break; case'3': PathAsk();break; case'4': MainMenu();break; case'5': exit(0); default: system("cls"); cout<<"\n\n\n"<<setw(43)<<"选取错误!"<<endl; cout<<endl<<setw(49)<<"按任意键返回重新选取!"; cout<<endl; getch(); UserMenu(); } } else { system("cls"); cout<<"\n\n\n"<<setw(43)<<"选取错误!"<<endl; cout<<endl<<setw(49)<<"按任意键返回重新选取!"; cout<<endl; getch(); UserMenu(); }}voidPassword(){ system("cls"); charname[10],password[10]; charentername[10],enterpassword[10]; charchoose[1]; intpass,flag=0,flag1=0; ifstreamindata("Password.txt"); indata>>pass>>name>>password; indata.close(); if(pass) AdminMenu(); else { cout<<"\n\n\n"<<setw(40)<<"顾客名:"; cin>>entername; cout<<endl<<setw(40)<<"密码:"; cin>>enterpassword; if(strcmp(name,entername)==0&&strcmp(password,enterpassword)==0) { pass=1; ofstreamoutdata("Password.txt"); outdata<<pass<<endl<<name<<endl<<password; outdata.close(); AdminMenu(); } else { system("cls"); cout<<"\n\n\n"; cout<<setw(47)<<"顾客名或密码错误!"<<endl; while(1) { if(flag1) { system("cls"); cout<<"\n\n\n"; } cout<<endl<<setw(45)<<"1.重新输入密码"<<endl; cout<<setw(45)<<"───────"<<endl; cout<<setw(43)<<"2.返回主菜单"<<endl; cout<<setw(45)<<"───────"<<endl; cout<<setw(37)<<"3.退出"<<endl; cout<<setw(45)<<"───────"<<endl; cout<<endl<<setw(46)<<"请输入您选取:"; cin>>choose; if(strlen(choose)==1) { switch(choose[0]) { case'1': flag=1;Password();break; case'2': flag=1;MainMenu();break; case'3': exit(0); default: flag1=1; system("cls"); cout<<"\n\n\n"<<setw(43)<<"选取错误!"<<endl; cout<<endl<<setw(49)<<"按任意键返回重新选取!"; cout<<endl; getch(); } if(flag) break; } else { flag1=1; system("cls"); cout<<"\n\n\n"<<setw(43)<<"选取错误!"<<endl; cout<<endl<<setw(49)<<"按任意键返回重新选取!"; cout<<endl; getch(); } } } }}voidAdminMenu(){ system("cls"); charchoose[1]; intflag=0; cout<<"\n\n\n"<<setw(45)<<"后台操作系统!"<<endl; cout<<endl<<setw(46)<<"1.操作员信息管理"<<endl; cout<<setw(46)<<"────────"<<endl; cout<<setw(44)<<"2.增长景点信息"<<endl; cout<<setw(46)<<"────────"<<endl; cout<<setw(44)<<"3.修改景点信息"<<endl; cout<<setw(46)<<"────────"<<endl; cout<<setw(44)<<"4.道路交通管制"<<endl; cout<<setw(46)<<"────────"<<endl; cout<<setw(42)<<"5.返回主菜单"<<endl; cout<<setw(46)<<"────────"<<endl; cout<<setw(36)<<"6.退出"<<endl; cout<<setw(46)<<"────────"<<endl; cout<<endl<<setw(46)<<"请输入您选取:"; cin>>choose; if(strlen(choose)==1) { switch(choose[0]) { case'1': AdminAlter();break; case'2': ViewAdd();break; case'3':ViewAlter();break; case'4': ControlMenu();break; case'5': MainMenu();break; case'6': exit(0); default: system("cls"); cout<<"\n\n\n"<<setw(43)<<"选取错误!"<<endl; cout<<endl<<setw(49)<<"按任意键返回重新选取!"; cout<<endl; getch(); AdminMenu(); } } else { system("cls"); cout<<"\n\n\n"<<setw(43)<<"选取错误!"<<endl; cout<<endl<<setw(49)<<"按任意键返回重新选取!"; cout<<endl; getch(); AdminMenu(); }}voidControlMenu(){ system("cls"); charchoose[1]; cout<<"\n\n\n"<<setw(45)<<"道路交通管制!"<<endl; cout<<endl<<setw(41)<<"1.管理途径"<<endl; cout<<setw(45)<<"───────"<<endl; cout<<setw(41)<<"2.删除途径"<<endl; cout<<setw(45)<<"───────"<<endl; cout<<setw(45)<<"3.返回上级菜单"<<endl; cout<<setw(45)<<"───────"<<endl; cout<<setw(37)<<"4.退出"<<endl; cout<<setw(45)<<"───────"<<endl; cout<<endl<<setw(46)<<"请输入您选取:"; cin>>choose; if(strlen(choose)==1) { switch(choose[0]) { case'1': PathControl();break; case'2': PathDel();break; case'3':AdminMenu();break; case'4': exit(0); default: system("cls"); cout<<"\n\n\n"<<setw(43)<<"选取错误!"<<endl; cout<<endl<<setw(49)<<"按任意键返回重新选取!"; cout<<endl; getch(); ControlMenu(); } } else { system("cls"); cout<<"\n\n\n"<<setw(43)<<"选取错误!"<<endl; cout<<endl<<setw(49)<<"按任意键返回重新选取!"; cout<<endl; getch(); ControlMenu(); }}<User.cpp>:包涵游客用函数#include"All.h"voidMap(){ system("cls"); cout<<"\n\n\n"<<setw(42)<<"map!"<<endl; cout<<endl<<setw(47)<<"按任意键继续..."; cout<<endl; getch(); UserMenu();}voidViewAsk(){ system("cls"); MGraphG; charviewpoint[20]; charchoose[1]; inti,flag=0,flag1=1,flag2=0; Read(G); cout<<"\n\n\n"<<setw(44)<<"民大景点:"<<endl<<endl; for(i=0;i<G.number;i++) cout<<setw(34)<<"("<<G.V[i].code<<")"<<G.V[i].name<<endl; while(1) { cout<<endl<<setw(55)<<"请输入要查询景点代码或名称:"; cin>>viewpoint; for(i=0;i<G.number;i++) { flag1=1;flag2=0; if(strcmp(G.V[i].code,viewpoint)==0||strcmp(G.V[i].name,viewpoint)==0) { flag1=0; cout<<"\n\n"<<setw(37)<<"代码"<<":"<<G.V[i].code<<endl; cout<<setw(37)<<"名称"<<":"<<G.V[i].name<<endl; cout<<setw(37)<<"简介"<<":"<<G.V[i].instruction<<endl<<endl; while(1) { cout<<setw(48)<<"与否继续查询(Y/N):"; cin>>choose; if(strcmp(choose,"Y")==0||strcmp(choose,"y")==0) { flag2=1;break;} elseif(strcmp(choose,"N")==0||strcmp(choose,"n")==0) { flag=1;UserMenu();break; } else cout<<endl<<setw(43)<<"选取错误!"<<endl; }//while }//if if(flag2||flag) break; }//for if(flag1) { cout<<endl<<setw(46)<<"没有要查询景点!"<<endl; while(1) { cout<<setw(48)<<"与否继续查询(Y/N):"; cin>>choose; if(strcmp(choose,"Y")==0||strcmp(choose,"y")==0) { break;} elseif(strcmp(choose,"N")==0||strcmp(choose,"n")==0) { UserMenu();break; } else cout<<endl<<setw(43)<<"选取错误!"<<endl; }//while } }}voidPathAsk(){ system("cls"); MGraphG; charchoose[1]; charstart[10],end[10]; inti,j,flag=0,flag1=1,flag2=0,flag3=1; Read(G); cout<<"\n\n\n"<<setw(43)<<"民大景点:"<<endl<<endl; for(i=0;i<G.number;i++) cout<<setw(34)<<"("<<G.V[i].code<<")"<<G.V[i].name<<endl; cout<<endl<<setw(45)<<"请输入景点代码!"<<endl; while(1) { flag=0,flag1=1,flag2=0,flag3=1; cout<<endl<<setw(40)<<"起点:"; cin>>start; for(i=0;i<G.number;i++) { if(strcmp(G.V[i].code,start)==0) { flag1=0; cout<<setw(40)<<"终点:"; cin>>end; for(j=0;j<G.number;j++) { if(strcmp(G.V[j].code,end)==0) { flag3=0; Dijkstra(G,i,j); while(1) { cout<<setw(48)<<"与否继续查询(Y/N):"; cin>>choose; if(strcmp(choose,"Y")==0||strcmp(choose,"y")==0) { flag2=1;break;} elseif(strcmp(choose,"N")==0||strcmp(choose,"n")==0) { flag=1;UserMenu();break; } else cout<<endl<<setw(43)<<"选取错误!"<<endl; }//while if(flag||flag2) break; } if(flag||flag2) break; }//for if(flag3) { cout<<endl<<setw(44)<<"没有该终点!"<<endl; while(1) { cout<<setw(48)<<"与否继续查询(Y/N):"; cin>>choose; if(strcmp(choose,"Y")==0||strcmp(choose,"y")==0) { flag2=1;break;} elseif(strcmp(choose,"N")==0||strcmp(choose,"n")==0) { flag=1;UserMenu();break; } else cout<<endl<<setw(43)<<"选取错误!"<<endl; }//while } if(flag2||flag) break; } if(flag||flag2) break; }//for if(flag1) { cout<<endl<<setw(44)<<"没有该起点!"<<endl; while(1) { cout<<setw(48)<<"与否继续查询(Y/N):"; cin>>choose; if(strcmp(choose,"Y")==0||strcmp(choose,"y")==0) { flag2=1;break;} elseif(strcmp(choose,"N")==0||strcmp(choose,"n")==0) { flag=1;UserMenu();break; } else cout<<endl<<setw(43)<<"选取错误!"<<endl; }//while }//if }//while}voidDijkstra(MGraphG,intv,inti2)//v为出发顶点{ intdist[MAXV],path[MAXV]; ints[MAXV]; intmindis,i,j,u; for(i=0;i<G.number;i++) { dist[i]=G.edges[v][i];//赋值 s[i]=0; if(G.edges[v][i]<INF) path[i]=v; else path[i]=-1; } s[v]=1; path[v]=0; for(i=0;i<G.number;i++) { mindis=INF; for(j=0;j<G.number;j++) if(s[j]==0&&dist[j]<mindis) { u=j; mindis=dist[j]; } s[u]=1; for(j=0;j<G.number;j++) if(s[j]==0) if(G.edges[u][j]<INF&&dist[u]+G.edges[u][j]<dist[j]) { dist[j]=dist[u]+G.edges[u][j]; path[j]=u; } } Dispath(G,dist,path,s,G.number,v,i2);}voidPpath(MGraphG,intpath[],inti,intv){ intk; k=path[i]; if(k==v) return; Ppath(G,path,k,v); cout<<G.V[k].name<<"→";}voidDispath(MGraphG,intdist[],intpath[],ints[],intn,intv,inti){ if(dist[i]!=0) { if(s[i]==1) { cout<<endl<<setw(24)<<"从"<<G.V[v].name<<"到"<<G.V[i].name<<"最短途径长度为:"<<dist[i]<<endl; cout<<setw(30)<<"途径为:"<<G.V[v].name<<"→"; Ppath(G,path,i,v); cout<<G.V[i].name<<"\n\n"; }else cout<<endl<<setw(29)<<"从"<<G.V[v].name<<"到"<<G.V[i].name<<"不存在途径!\n"; } else { cout<<endl<<setw(24)<<"从"<<G.V[v].name<<"到"<<G.V[i].name<<"最短途径长度为:"<<dist[i]<<endl; cout<<setw(30)<<"途径为:"<<G.V[v].name<<"→"<<G.V[i].name<<"\n\n"; } }<Admin.cpp>:包涵操作员使用到函数#include"All.h"voidAdminAlter(){ system("cls"); charnewname[10]; charenterpassword[10],newpassword[10],repassword[10]; charname[10],password[10]; charchoose[1]; intpass,flag=0,flag1;ifstreamindata("Password.txt"); indata>>pass>>name>>password; indata.close(); cout<<"\n\n\n"<<setw(45)<<"请输入密码:"; cin>>enterpassword; if(strcmp(password,enterpassword)==0) { while(1) { system("cls"); cout<<"\n\n\n"<<setw(45)<<"设立新顾客名:"; cin>>newname; cout<<endl<<setw(45)<<"设立新密码:"; cin>>newpassword; cout<<endl<<setw(45)<<"重复新密码:"; cin>>repassword; if(strcmp(newpassword,repassword)==0) { ofstreamoutdata("Password.txt"); outdata<<pass<<endl<<newname<<endl<<newpassword; outdata.close(); system("cls"); cout<<"\n\n\n"<<setw(45)<<"修改成功!"<<endl; cout<<endl<<setw(48)<<"按任意键继续..."; cout<<endl; getch(); AdminMenu(); break; } else { system("cls"); cout<<"\n\n\n"<<setw(49)<<"两次输入密码不一致!"<<endl; flag1=0; while(1) { if(flag1) { system("cls"); cout<<"\n\n"; } cout<<endl<<setw(41)<<"1.重新设立"<<endl; cout<<setw(45)<<"───────"<<endl; cout<<setw(45)<<"2.返回上级菜单"<<endl; cout<<setw(45)<<"───────"<<endl; cout<<setw(37)<<"3.退出"<<endl; cout<<setw(45)<<"───────"<<endl; cout<<endl<<setw(46)<<"请输入您选取:"; cin>>choose; if(strlen(choose)==1) { switch(choose[0]) { case'1': flag=1;break; case'2': flag=1;AdminMenu();break; case'3': exit(0); default: flag1=1; system("cls"); cout<<"\n\n\n"<<setw(43)<<"选取错误!"<<endl; cout<<endl<<setw(49)<<"按任意键返回重新选取!"; cout<<endl; getch(); } if(flag) break; } else { flag1=1; system("cls"); cout<<"\n\n\n"<<setw(43)<<"选取错误!"<<endl; cout<<endl<<setw(49)<<"按任意键返回重新选取!"; cout<<endl; getch(); } } } } } else { system("cls"); cout<<"\n\n\n"<<setw(44)<<"密码不对的!"<<endl<<endl; flag1=0; while(1) { if(flag1) { system("cls"); cout<<"\n\n\n"; } cout<<setw(45)<<"1.重新输入密码"<<endl; cout<<setw(45)<<"───────"<<endl; cout<<setw(45)<<"2.返回上级菜单"<<endl; cout<<setw(45)<<"───────"<<endl; cout<<setw(37)<<"3.退出"<<endl; cout<<setw(45)<<"───────"<<endl; cout<<endl<<setw(46)<<"请输入您选取:"; cin>>choose; if(strlen(choose)==1) { switch(choose[0]) { case'1': flag=1;AdminAlter();break; case'2': flag=1;AdminMenu();break; case'3': exit(0); default: flag1=1; system("cls"); cout<<"\n\n\n"<<setw(43)<<"选取错误!"<<endl; cout<<endl<<setw(49)<<"按任意键返回重新选取!"; cout<<endl; getch(); } if(flag) break; } else { flag1=1; system("cls"); cout<<"\n\n\n"<<setw(43)<<"选取错误!"<<endl; cout<<endl<<setw(49)<<"按任意键返回重新选取!"; cout<<endl; getch(); } } }}voidViewAdd(){ system("cls"); MGraphG; charadjcode[10]; charchoose[1]; inti,k=0,flag=0,flag1=1,flag2=0,flag3=1,length;Read(G); cout<<"\n\n\n"<<setw(43)<<"已有景点:"<<endl<<endl;for(i=0;i<G.number;i++) cout<<setw(34)<<"("<<G.V[i].code<<")"<<G.V[i].name<<endl; cout<<endl; while(1){ flag1=1;flag2=0; cout<<endl<<setw(46)<<"新增景点代码:"; cin>>G.V[G.number].code; for(i=0;i<G.number;i++) { if(strcmp(G.V[i].code,G.V[G.number].code)==0) { flag1=0; cout<<endl<<setw(52)<<"新景点代码与已有代码冲突!"<<endl; cout<<setw(44)<<"请重新输入!"<<endl<<endl;break; } } if(flag1) { cout<<setw(46)<<"新增景点名称:"; cin>>G.V[G.number].name; for(i=0;i<G.number;i++) { flag1=1; if(strcmp(G.V[i].name,G.V[G.number].name)==0) { flag1=0; cout<<endl<<setw(52)<<"新景点名称与已有名称冲突!"<<endl; cout<<setw(44)<<"请重新输入!"<<endl<<endl;break; } } if(flag1) { cout<<setw(46)<<"新增景点简介:"; cin>>G.V[G.number].instruction; cout<<endl; for(k=0;k<=G.number;k++) { if(k==G.number) G.edges[G.number][k]=0; else G.edges[G.number][k]=G.edges[k][G.number]=10000; } while(1) { cout<<setw(49)<<"与否增长途径(Y/N):"; cin>>choose; if(strcmp(choose,"Y")==0||strcmp(choose,"y")==0) { cout<<endl; while(1) { cout<<setw(46)<<"相邻景点代码:"; cin>>adjcode; for(k=0;k<G.number;k++) { if(strcmp(G.V[k].code,adjcode)==0) { flag3=0; cout<<setw(46)<<"两景点间距离:"; cin>>length; G.edges[G.number][k]=G.edges[k][G.number]=length; } } if(flag3) cout<<endl<<setw(44)<<"没有该景点!"; while(1) { cout<<endl<<setw(50)<<"与否继续增长途径(Y/N):"; cin>>choose; cout<<endl; if(strcmp(choose,"Y")==0||strcmp(choose,"y")==0) break; elseif(strcmp(choose,"N")==0||strcmp(choose,"n")==0) { flag2=1;break;} else cout<<endl<<setw(43)<<"选取错误!"<<endl; } if(flag2) break; } break; } elseif(strcmp(choose,"N")==0||strcmp(choose,"n")==0) break; else cout<<endl<<setw(43)<<"选取错误!"<<endl; } G.number++; cout<<endl; while(1) { cout<<setw(45)<<"增长景点成功!"<<endl; White(G); cout<<setw(50)<<"与否继续增长景点(Y/N):"; cin>>choose; if(strcmp(choose,"Y")==0||strcmp(choose,"y")==0) { ViewAdd();break;} elseif(strcmp(choose,"N")==0||strcmp(choose,"n")==0) { flag=1; cout<<"\n\n\n"<<setw(44)<<"保存成功!"<<endl; cout<<endl<<setw(47)<<"按任意键继续..."; cout<<endl; getch(); break; } else cout<<endl<<setw(43)<<"选取错误!"<<endl; }//while if(flag) break; } }//if }//while AdminMenu();}voidViewAlter(){ system("cls"); MGraphG; charviewpoint[20]; charnewcode[10],newname[20],newinstruction[100]; charchoose[1]; inti,k=0,flag=0,flag1=1,flag2=0; Read(G); cout<<"\n\n\n"<<setw(44)<<"已有景点:"<<endl<<endl;for(i=0;i<G.number;i++) cout<<setw(34)<<"("<<G.V[i].code<<")"<<G.V[i].name<<endl; while(1) { cout<<endl<<setw(55)<<"请输入要修改景点代码或名称:"; cin>>viewpoint; for(i=0;i<G.number;i++) { flag1=1;flag2=0; if(strcmp(G.V[i].code,viewpoint)==0||strcmp(G.V[i].name,viewpoint)==0) { flag1=0; cout<<"\n\n"<<setw(37)<<"代码"<<":"<<G.V[i].code<<endl; cout<<setw(37)<<"名称"<<":"<<G.V[i].name<<endl; cout<<setw(37)<<"简介"<<":"<<G.V[i].instruction<<endl<<endl; cout<<setw(48)<<"无需修改按回n跳过"<<endl;cout<<setw(39)<<"新代码:"; cin>>newcode; if(strcmp(newcode,"n")!=0&&strcmp(newcode,"N")!=0) strcpy(G.V[i].code,newcode); cout<<setw(39)<<"新名称:"; cin>>newname; if(strcmp(newname,"n")!=0&&strcmp(newname,"N")!=0) strcpy(G.V[i].name,newname); cout<<setw(39)<<"新简介:"; cin>>newinstruction; cout<<endl; if(strcmp(newinstruction,"n")!=0&&strcmp(newinstruction,"N")!=0) strcpy(G.V[i].instruction,newinstruction); White(G); while(1) { cout<<setw(50)<<"与否继续修改(Y/N):"; cin>>choose; if(strcmp(choose,"Y")==0||strcmp(choose,"y")==0) { flag2=1;break;} elseif(strcmp(choose,"N")==0||strcmp(choose,"n")==0) { flag=1; cout<<"\n\n\n"<<setw(44)<<"修改成功!"<<endl; cout<<endl<<setw(47)<<"按任意键继续..."; cout<<endl; getch(); break; } else cout<<endl<<setw(43)<<"选取错误!"<<endl; }//while }//if if(flag2||flag) break; }//for if(flag1) { cout<<endl<<setw(46)<<"没有要修改景点!"<<endl; while(1) { cout<<setw(48)<<"与否继续修改(Y/N):"; cin>>choose; if(strcmp(choose,"Y")==0||strcmp(choose,"y")==0) break; elseif(strcmp(choose,"N")==0||strcmp(choose,"n")==0) { flag=1;UserMenu();break; } else cout<<endl<<setw(43)<<"选取错误!"<<endl; }//while } if(flag) break; }//while AdminMenu(); }voidPathControl(){ system("cls"); MGraphG; Read(G); inti,j,length;intflag=1,flag1=1,flag2=0,flag3=0,flag4=0,flag5=0;charchoose[1],view1[10],view2[10]; cout<<setw(43)<<"已有景点:"<<endl<<endl;for(i=0;i<G.number;i++) cout<<setw(34)<<"("<<G.V[i].code<<")"<<G.V[i].name<<endl; cout<<endl<<setw(43)<<"已有途径:"<<endl<<endl; for(i=0;i<G.number;i++) for(j=i;j<G.number-i;j++) if(G.edges[i][j]!=0&&G.edges[i][j]!=INF) cout<<setw(25)<<"("<<G.V[i].code<<")"<<G.V[i].name<<"--"<<"("<<G.V[j].code<<")"<<G.V[j].name<<"距离:"<<G.edges[i][j]<<"km"<<endl; cout<<endl; while(1) { flag=1,flag1=1,flag2=0,flag3=0,flag4=0,flag5=0; cout<<endl<<setw(48)<<"途径第一种景点代码:"; cin>>view1; for(i=0;i<G.number;i++) { if(strcmp(G.V[i].code,view1)==0) { flag=0; cout<<setw(48)<<"途径第二个景点代码:"; cin>>view2; for(j=0;j<G.number;j++) { if(strcmp(G.V[j].code,view2)==0&&G.V[i].code!=G.V[j].code) { flag1=0; cout<<setw(48)<<"途径长度:"; cin>>length; G.edges[i][j]=G.edges[j][i]=length; }//if }//for if(flag1) { cout<<endl<<setw(50)<<"没有景点二或两景点相似!"; while(1) { cout<<endl<<setw(50)<<"与否继续管理途径(Y/N):"; cin>>choose; if(strcmp(choose,"Y")==0||strcmp(choose,"y")==0) { flag3=1;break;} elseif(strcmp(choose,"N")==0||strcmp(choose,"n")==0) { flag4=1; //ControlMenu(); break; } else cout<<endl<<setw(43)<<"选取错误!"; }//while }//if }//if if(flag3||flag4) break; }//for if(flag) { cout<<endl<<setw(43)<<"没有景点一!"; while(1) { cout<<endl<<setw(50)<<"与否继续管理途径(Y/N):"; cin>>choose; if(strcmp(choose,"Y")==0||strcmp(choose,

温馨提示

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

评论

0/150

提交评论