




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
《校園導航系統(tǒng)》課程設計報告姓名:郭璇學號:班級:10網絡專業(yè):網絡工程指導教師:唐軼媛蔣榮萍時間:信息學與程學word文可自由復制編輯
目
錄摘….……目………要計………….1試析………….15考獻………….15word文可自由復制編輯
題目校園導系統(tǒng)設計一個校園導游程序,后臺操作:1、操作員息管理如修改密碼等2、能根據校的規(guī)模進行添加景點信息、修改景點信息等功能,3、若臨時交通管制,能進行交通管制的設置和撤銷(如某某時間段那條路進行那個方向的交通管制等)前臺為來訪的客人提供各種信息查詢服務:1、設計學的校園平面圖,所含景點不少10。以圖中頂點表示校內各景點,存放景點名稱、代號、簡介等信息;以邊表示路徑,存放路徑長度等相關信息。2、為來訪人提供圖中任意景點相關信息的查詢。3、提供途任意景點問路查詢,即求任意兩個景點間的一條最短的簡單路徑。1.1需求分析設計一個校園導航系統(tǒng)導航系統(tǒng)又分為游客和管理員進行管理操作還是游客操作由用戶自己選擇管理員的操作:修改景點信息、增加景點信息、交通管制等。游客的操作:查看景點信息和查最短路徑。
概要設計景點的信息由一維數組存放,景點關系由二維數據來存放景點的信息和關系從文件讀取,進而初始化typedefstruct//存單個景點信息的結構體{charcode[10];//存放景點代碼charname[20];//存放景點名稱charinstruction[100];//存放景點簡介}ViewPoint;typedefstruct//放景點關系的二維數組{intedges[MAXV][MAXV];//兩景點間的距離intnumber;//景點的數量ViewPointV[MAXV];//保存景點信息的結構體數組word文可自由復制編輯
}MGraph;2.1流程圖函數開始接收功能的請求接受信息輸入判斷是否正確讀取文件進行相對應操作寫回文件函數結束2.2
詳細設計MainMenu();主菜單,寫界面操作的函數。UserMenu();游客菜單,判斷是否非法輸入,不會死循環(huán)。Map();輸出民大地圖,由于時間關系,沒有畫出。ViewAsk();游客查詢景點函數,讓游客選擇要查詢的景點判斷是否非法輸入,不會死循環(huán)。問路函數,根據游客的起點和終點給出最短路徑,判斷是否非法輸入,不會死循環(huán)。Dijkstra(MGraphG,intv,inti);迪杰斯特拉函數求最短路徑Ppath(MGraphG,intpath[],intv);輸出最短路徑中的景點path[],inti);查找最短路徑。AdminMenu();管理員菜單,判斷是否非法輸入,不會死循環(huán)。Password();密碼函數,管理員需輸入密碼才能進入后臺,輸入一次后無需再輸入。AdminAlter();修改密碼,需要再次輸入密碼。ViewAdd();增加景點,列出已有景點,判斷新景點信息是和與已有景點的沖突,如沖突需重word文可自由復制編輯
新輸入,判斷是否非法輸入,不會死循環(huán)。ViewAlter();修改景點信息由于時間關系沒有判斷新修改的景點信息是否與已有景點信息沖突。若要做次判斷,應與增加景點的判斷算法一致。ControlMenu();交通管制菜單,判斷是否非法輸入,不會死循環(huán)。PathControl();路徑管理增加路徑和修改路徑列出已有路徑據用戶的輸入進行管理,判斷是否非法輸入,不會死循環(huán)。但路徑長度為整型,沒有判斷,若輸入非整型,則進入死循環(huán),一個大大的,能力有限。PathDel();刪除路徑,列出已有路徑,用戶根據提示進行刪除。判斷是否非法輸入,不會死循環(huán)。Read(MGraph&G);讀取文件。White(MGraph&G);保存文件。2.3
操作界面程序一開始登錄主界面:游客菜單:管理員界面管理員界面word文可自由復制編輯
管理員操作界面word文可自由復制編輯
查詢景點word文可自由復制編輯
查詢最短路徑word文可自由復制編輯
修改密碼word文可自由復制編輯
增加景點word文可自由復制編輯
修改景點信息word文可自由復制編輯
交通管制界面word文可自由復制編輯
刪除路徑word文可自由復制編輯
管理路徑word文可自由復制編輯
3
調試分析當進入操作界面進行功能的選擇但非法輸入時應該提示錯誤并可以讓用戶重新選擇我使用的接收選擇的是字符串判斷字符串長度是否等于1如果不等于則是錯誤的等于1后用switch判斷第一個字符與case比較調用相應的函數用whlie(1)使之一直循環(huán)直到與case中相同,使用標志和break;讓他跳出相應的循環(huán)層。在這里經常會出錯,所以要很小心的判斷每個標志跳出的相應的循環(huán),使他不會跳出不該跳出的循環(huán)。另一個問題是最短路徑在新增一個景點后我選擇不添加相鄰的路徑(矩陣的行等于列始終為0,表示同一個景點到同一個景點的路徑0),再次查詢最短路徑時,起點為新增的路徑,終點為任何一個景點都無法運行但是起點為除新增景點外的景點而終點為新增景點時可正確輸出:沒有路徑。由于時間原因來不及調試了。[1]嚴蔚敏、吳為.數據結構(語版.京清華大學出版社.[2]林小茶C語程序設計(第二版中國鐵道出版.2010[3]杜茂康、李昌兵等.C++面向象程序設計(第2版)北京電子工業(yè)出版社2011word文可自由復制編輯
附
錄源序頭件細碼#include<fstream.h>#include<string.h>#include<stdlib.h>#include<stdio.h>MAXVINF{}ViewPoint;{intedges[MAXV][MAXV];intViewPointV[MAXV];}MGraph;voidMainMenu();voidUserMenu();voidvoidViewAsk();voidPathAsk();voidG,intv,inti);voidpath[],intv);voidDispath(MGraphG,intpath[],ints[],intn,inti);voidvoidvoidAdminAlter();word文可自由復制編輯
voidViewAdd();voidViewAlter();voidControlMenu();voidvoidPathDel();voidvoid主函#include"All.h"main(){intifstreamindata>>pass>>name>>password;indata.close();ofstreamoutdata<<pass<<endl<<name<<endl<<password;outdata.close();MainMenu();}菜功#include"All.h"voidMainMenu(){cout<<"\n\n\n"<<setw(56)<<"歡迎光臨廣西民大學,祝您旅途愉!"<<endl;cout<<setw(55)<<"廣民族大學校園導航系統(tǒng)為服!"<<endl;cout<<endl<<setw(45)<<"1.入導航系"<<endl;cout<<setw(45)<<"──────登操作系統(tǒng)"word文可自由復制編輯
cout<<setw(45)<<"──────退"<<endl;cout<<setw(45)<<"───────"<<endl;請輸入您的選擇:";if(strlen(choose)==1){switch(choose[0]){'1':UserMenu();break;'2':'3':cout<<"\n\n\n"<<endl<<setw(43)<<"選錯!按意鍵返回主菜單重新選擇!";cout<<endl;MainMenu();break;}}{cout<<"\n\n\n"<<endl<<setw(43)<<"選錯!按意鍵返回主菜單重新選擇!";cout<<endl;MainMenu();}}voidUserMenu(){word文可自由復制編輯
intcout<<"\n\n\n"<<setw(45)<<"校園導航系統(tǒng)!"<<endl;cout<<endl<<setw(45)<<"1.看校園地"<<endl;cout<<setw(45)<<"────"<<endl;景信息查詢"cout<<setw(45)<<"──────景問路查詢"cout<<setw(45)<<"──────返主菜單"<<endl;cout<<setw(45)<<"───退"<<endl;cout<<setw(45)<<"──────請輸入您的選擇:";if(strlen(choose)==1){switch(choose[0]){'1':'2':ViewAsk();break;'3':PathAsk();break;'4':MainMenu();break;'5':cout<<"\n\n\n"<<setw(43)<<"選擇錯誤!按意鍵返回重新選!";cout<<endl;UserMenu();word文可自由復制編輯
}}{cout<<"\n\n\n"<<setw(43)<<"選擇錯誤!按意鍵返回重新選!";cout<<endl;UserMenu();}}voidPassword(){intifstreamindata>>pass>>name>>password;indata.close();if(pass){cout<<"\n\n\n"<<setw(40)<<"用戶名:cin>>entername;密碼:";cin>>enterpassword;{ofstreamoutdata<<pass<<endl<<name<<endl<<password;outdata.close();word文可自由復制編輯
}{cout<<"\n\n\n";cout<<setw(47)<<"用名或密碼錯誤!"<<endl;{if(flag1){cout<<"\n\n\n";}cout<<endl<<setw(45)<<"1.重輸入密"cout<<setw(45)<<"───"<<endl;cout<<setw(43)<<"2.回主菜"<<endl;cout<<setw(45)<<"────"<<endl;cout<<setw(37)<<"3.出"cout<<setw(45)<<"────"<<endl;請入您的選擇";if(strlen(choose)==1){switch(choose[0]){'1':flag=1;Password();break;'2':'3':flag1=1;cout<<"\n\n\n"<<setw(43)<<"選擇錯誤!按意鍵返回重新選!";cout<<endl;word文可自由復制編輯
}if(flag)break;}{flag1=1;cout<<"\n\n\n"<<setw(43)<<"選擇錯誤!按意鍵返回重新選!";cout<<endl;}}}}}void{intcout<<"\n\n\n"<<setw(45)<<"后臺操作系統(tǒng)!"<<endl;cout<<endl<<setw(46)<<"1.作員信息管"<<endl;cout<<setw(46)<<"────────增景點信息"cout<<setw(46)<<"─────修景點信息"cout<<setw(46)<<"───────"<<endl;道交通管制"cout<<setw(46)<<"───────返主菜單"<<endl;cout<<setw(46)<<"───────退"<<endl;cout<<setw(46)<<"───────word文可自由復制編輯
請輸入您的選擇:";if(strlen(choose)==1){switch(choose[0]){'1':AdminAlter();break;'2':ViewAdd();break;'3':ViewAlter();break;'4':ControlMenu();break;'5':MainMenu();break;'6':cout<<"\n\n\n"<<setw(43)<<"選擇錯誤!按意鍵返回重新選!";cout<<endl;}}{cout<<"\n\n\n"<<setw(43)<<"選擇錯誤!按意鍵返回重新選!";cout<<endl;}}word文可自由復制編輯
void{cout<<"\n\n\n"<<setw(45)<<"道路交通管制!"<<endl;cout<<endl<<setw(41)<<"1.理路"<<endl;cout<<setw(45)<<"────"<<endl;刪路徑"cout<<setw(45)<<"──────返上級菜單"cout<<setw(45)<<"──────退"<<endl;cout<<setw(45)<<"──────請輸入您的選擇:";if(strlen(choose)==1){switch(choose[0]){'1':PathControl();break;'2':'3':AdminMenu();break;'4':cout<<"\n\n\n"<<setw(43)<<"選擇錯誤!按意鍵返回重新選!";cout<<endl;}}word文可自由復制編輯
{cout<<"\n\n\n"<<setw(43)<<"選擇錯誤!按意鍵返回重新選!";cout<<endl;}}包涵客的數#include"All.h"void{cout<<"\n\n\n"<<setw(42)<<"map!"<<endl;按意鍵繼續(xù)...";cout<<endl;UserMenu();}voidViewAsk(){viewpoint[20];inti,flag=0,flag1=1,flag2=0;Read(G);cout<<"\n\n\n"<<setw(44)<<"民大景點:"<<endl<<endl;for(i=0;i<G.number;i++){請輸入要查詢的景點代碼或名稱";word文可自由復制編輯
{flag1=1;flag2=0;if(strcmp(G.V[i].code,viewpoint)==0||strcmp(G.V[i].name,viewpoint)==0){flag1=0;代"<<""<<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)<<"是繼續(xù)查:";{if(strcmp(choose,"N")==0||strcmp(choose,"n")==0){flag=1;UserMenu();break;}選錯!"<<endl;}//while}//ifif(flag2||flag)break;}//forif(flag1){沒要查詢的景點!{cout<<setw(48)<<"是繼續(xù)查:";{word文可自由復制編輯
break;}if(strcmp(choose,"N")==0||strcmp(choose,"n")==0){UserMenu();break;}選錯誤!}//while}}}void{start[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++)請入景點代碼!"<<endl;{起點:";{{flag1=0;cout<<setw(40)<<"終:";for(j=0;j<G.number;j++){word文可自由復制編輯
{flag3=0;{cout<<setw(48)<<"是繼續(xù)查詢:";{if(strcmp(choose,"N")==0||strcmp(choose,"n")==0){flag=1;UserMenu();break;}選錯誤!}//whileif(flag||flag2)break;}if(flag||flag2)break;}//forif(flag3){沒該終點!"<<endl;{cout<<setw(48)<<"是繼續(xù)查:";{if(strcmp(choose,"N")==0||strcmp(choose,"n")==0){flag=1;UserMenu();break;word文可自由復制編輯
}選錯!"<<endl;}//while}if(flag2||flag)break;}if(flag||flag2)break;}//forif(flag1){沒該起點!"<<endl;{cout<<setw(48)<<"是繼續(xù)查:";{if(strcmp(choose,"N")==0||strcmp(choose,"n")==0){flag=1;UserMenu();break;}選錯誤!}//while}//if}//while}voidG,intv,inti2)//v為發(fā)頂點{intints[MAXV];word文可自由復制編輯
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;path[i]=-1;}s[v]=1;for(i=0;i<G.number;i++){mindis=INF;{u=j;mindis=dist[j];}s[u]=1;.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);}voidpath[],int{intk;k=path[i];word文可自由復制編輯
return;Ppath(G,path,k,v);cout<<G.V[k].name<<"";}voidDispath(MGraphG,intpath[],ints[],intn,inti){if(dist[i]!=0){{cout<<endl<<setw(24)<<"從"<<G.V[v].name<<"到"<<G.V[i].name<<"的最短路徑長度為:cout<<setw(30)<<"路為:"<<G.V[v].name<<"→";Ppath(G,path,i,v);cout<<G.V[i].name<<"\n\n";}從"<<G.V[i].name<<"存在路徑\n";}{從""的短路徑長度為"<<dist[i]<<endl;cout<<setw(30)<<"路為:→}}<Admin.cpp>:包操員用的函#include"All.h"void{enterpassword[10],newpassword[10],repassword[10];word文可自由復制編輯
intifstreamindata>>pass>>name>>password;indata.close();cout<<"\n\n\n"<<setw(45)<<"請輸入密碼:cin>>enterpassword;{{cout<<"\n\n\n"<<setw(45)<<"設置新的用戶名:";cin>>newname;設新的密碼:";cin>>newpassword;重新的密碼:";if(strcmp(newpassword,repassword)==0){ofstreamoutdata.close();cout<<"\n\n\n"<<setw(45)<<"修改成功!按意鍵繼cout<<endl;break;}{cout<<"\n\n\n"<<setw(49)<<"兩次輸入的密碼一!"<<endl;flag1=0;word文可自由復制編輯
{if(flag1){}cout<<endl<<setw(41)<<"1.重設置"cout<<setw(45)<<"──────返回上級菜"<<endl;cout<<setw(45)<<"────"<<endl;cout<<setw(37)<<"3.退出"cout<<setw(45)<<"──────請入您的選擇";if(strlen(choose)==1){switch(choose[0]){'1':flag=1;break;'2':'3':flag1=1;cout<<"\n\n\n"<<setw(43)<<"選擇錯誤!"<<endl;按意鍵返回重新選!";cout<<endl;}if(flag)break;}{word文可自由復制編輯
flag1=1;cout<<"\n\n\n"<<setw(43)<<"選擇錯誤!按意鍵返回重新選!";cout<<endl;}}}}}{cout<<"\n\n\n"<<setw(44)<<"密碼不正確!"<<endl<<endl;flag1=0;{if(flag1){cout<<"\n\n\n";}cout<<setw(45)<<"1.新輸入密"<<endl;──────cout<<setw(45)<<"2.回上級菜"<<endl;cout<<setw(45)<<"──────cout<<setw(37)<<"3.出"────"<<endl;請入您的選擇:";if(strlen(choose)==1){switch(choose[0]){'1':word文可自由復制編輯
flag=1;AdminAlter();break;'2':'3':flag1=1;cout<<"\n\n\n"<<setw(43)<<"選擇錯誤!按意鍵返回重新選!";cout<<endl;}if(flag)break;}{flag1=1;cout<<"\n\n\n"<<setw(43)<<"選擇錯誤!按意鍵返回重新選!";cout<<endl;}}}}voidViewAdd(){intRead(G);cout<<"\n\n\n"<<setw(43)<<"已有景點:"<<endl<<endl;word文可自由復制編輯
for(i=0;i<G.number;i++)cout<<endl;{flag1=1;flag2=0;新增景點代碼:{{flag1=0;新點代碼與已有代碼沖!"<<endl;cout<<setw(44)<<"請新輸入!"<<endl<<endl;break;}}if(flag1){cout<<setw(46)<<"新景點名稱:";{flag1=1;if(strcmp(G.V[i].name,G.V[G.number].name)==0){flag1=0;新點名稱與已有名稱沖!"<<endl;cout<<setw(44)<<"請新輸入!"<<endl<<endl;break;}}if(flag1){cout<<setw(46)<<"新景點簡介:";.number].instruction;cout<<endl;word文可自由復制編輯
{if(k==G.number)G.edges[G.number][k]=0;.number]=10000;}{cout<<setw(49)<<"是增加路:";{cout<<endl;{cout<<setw(46)<<"相的景點代碼";cin>>adjcode;{{flag3=0;cout<<setw(46)<<"兩點間的距離";}}if(flag3)沒該景點!";{是繼續(xù)增加路(Y/N)";cout<<endl;word文可自由復制編輯
break;if(strcmp(choose,"N")==0||strcmp(choose,"n")==0){選錯誤!}if(flag2)break;}break;}if(strcmp(choose,"N")==0||strcmp(choose,"n")==0)break;選錯誤!}G.number++;cout<<endl;{cout<<setw(45)<<"增景點成!"<<endl;cout<<setw(50)<<"是繼續(xù)增加景(:{ViewAdd();break;}if(strcmp(choose,"N")==0||strcmp(choose,"n")==0){flag=1;cout<<"\n\n\n"<<setw(44)<<"保存成功!按意鍵繼續(xù)...";cout<<endl;word文可自由復制編輯
break;}選錯!"<<endl;}//whileif(flag)break;}}//if}//while}voidViewAlter(){viewpoint[20];newcode[10],newname[20],newinstruction[100];intRead(G);cout<<"\n\n\n"<<setw(44)<<"已有景點:"<<endl<<endl;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;代"<<""<<G.V[i].code<<endl;cout<<setw(37)<<"名"<<""<<G.V[i].name<<endl;word文可自由復制編輯
cout<<setw(37)<<"簡"<<""<<G.V[i].instruction<<endl<<endl;cout<<setw(48)<<"無修改按過"cout<<setw(39)<<"新碼:";cin>>newcode;if(strcmp(newcode,"n")!=0&&strcmp(newcode,"N")!=0)cout<<setw(39)<<"新稱";cin>>newname;cout<<setw(39)<<"新介";cin>>newinstruction;cout<<endl;if(strcmp(newinstruction,"n")!=0&&strcmp(newinstruction,"N")!=0){cout<<setw(50)<<"是繼續(xù)修:";{if(strcmp(choose,"N")==0||strcmp(choose,"n")==0){flag=1;cout<<"\n\n\n"<<setw(44)<<"修改成功!按意鍵繼續(xù)...";cout<<endl;break;}選錯!"<<endl;}//while}//ifif(flag2||flag)word文可自由復制編輯
break;}//forif(flag1){沒要修改的景點!{cout<<setw(48)<<"是繼續(xù)修:";break;if(strcmp(choose,"N")==0||strcmp(choose,"n")==0){flag=1;UserMenu();break;}選錯!"<<endl;}//while}if(flag)break;}//while}voidPathControl(){Read(G);inti,j,length;intflag=1,flag1=1,flag2=0,flag3=0,flag4=0,flag5=0;choose[1],view1[10],view2[10];cout<<setw(43)<<"已景點:"<<endl<<endl;for(i=0;i<G.number;i++)已路徑:"<<endl<<endl;for(i=0;i<G.number;i++)word文可自由復制編輯
for(j=i;j<G.number-i;j++)if(G.edges[i][j]!=0&&G.edges[i][j]!=INF).V[j].name<<"離cout<<endl;{flag=1,flag1=1,flag2=0,flag3=0,flag4=0,flag5=0;路徑第一個景點代碼";{if(strcmp(G.V[i].code,view1)==0){flag=0;cout<<setw(48)<<"路第二個景點代碼";for(j=0;j<G.number;j++){{flag1=0;cout<<setw(48)<<"路長度:";}//if}//forif(flag1){沒景點二或兩景點相同";{是繼續(xù)管理路(Y/N)";{word文可自由復制編輯
距
if(strcmp(choose,"N")==0||strcmp(choose,"n")==0){flag4=1;//ControlMenu();break;}選錯!";}
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年北京市商業(yè)店鋪裝修設計施工合同
- 2025工程設計合同范本
- 小班心理健康教育的必要性計劃
- 行政單位安全管理工作回顧計劃
- 學生心理輔導的實施方案計劃
- 學生競爭與合作活動方案計劃
- 教師與學生之間的有效溝通計劃
- 2025分公司轉讓合同范本
- 電子商務平臺品牌推廣策略規(guī)劃書
- 網絡游戲行業(yè)產品策劃與開發(fā)流程優(yōu)化研究
- 檔案開發(fā)與利用案例的深度分析試題及答案
- GB 21258-2024燃煤發(fā)電機組單位產品能源消耗限額
- 口腔醫(yī)學數字技術
- 全國高中語文優(yōu)質課一等獎《雷雨》 課件
- 高中生社會實踐證明
- 常用平面軸規(guī)格表
- “三會一課”記錄表
- 分部分項工程驗收記錄表(共19頁)
- 大學物理實驗坐標紙(共1頁)
- 2020-2021學年(2019)高一英語一精品教學設計:UnitSports and fitness Reading and Thinking
- 畢業(yè)設計(論文)平面關節(jié)型機械手設計
評論
0/150
提交評論