数据结构课程设计 校园导游系统 c++
元旦前后利用幾天時(shí)間完成了數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì),學(xué)期初計(jì)劃搞一個(gè)*精美* 些的課程設(shè)計(jì),最后還是一拖再拖,到最后只來得及實(shí)現(xiàn)些基本功能。
團(tuán)隊(duì)協(xié)作完成,所以代碼風(fēng)格不盡相同。
另外才疏學(xué)淺,若有錯(cuò)誤懇請(qǐng)不吝賜教!
程序打包,提取碼:1a01
基本要求如下:
① 賬戶登陸設(shè)計(jì),用戶可以自行選擇是否登錄,根據(jù)是否登錄以及登陸的賬戶類型系統(tǒng)提供不同的功能。
② 對(duì)于賬戶信息應(yīng)保存在文件中,并利用MD5加密算法將用戶密碼以密文形式存儲(chǔ)。
③ 從文件中讀取校園平面圖并展示,所含內(nèi)容應(yīng)包括景點(diǎn)名稱以及距離。
④ 能夠從文件中讀取地圖信息,利用鄰接表存儲(chǔ)圖的信息。
⑤ 利用BFS提供游覽路線。
⑥ 利用KMP算法對(duì)于用戶所給關(guān)鍵詞進(jìn)行匹配,為用戶推薦適宜的地點(diǎn)并進(jìn)行詳細(xì)的介紹。例如:對(duì)于用戶的“美食”需求,系統(tǒng)將會(huì)推薦前往餐廳并給出詳細(xì)的介紹。
⑦ 利用Kruskal算法為用戶預(yù)估游覽所有景點(diǎn)所需的最短時(shí)間。
⑧ 對(duì)于用戶給出的兩地點(diǎn),能夠給出最短路徑。
⑨ 對(duì)于管理員賬戶,提供更改圖的信息的功能。
模塊劃分如圖
main:
#include<iostream> #include"UI.h" #include"Function.h" using namespace std;int main() {Agreement();//啟動(dòng)界面 int Status;while (1){system("cls");Start();//登陸界面 int choose;cin>>choose;Status = -1;//0 未登錄;1 用戶 1;2 管理員; switch(choose) {case 0: exit(0);case 1: Status = Login();break; case 2: Status = Register();break;case 3: Status = 0;break;default:color(4);printf("\t\t\t\t\t命令無效,2秒后自動(dòng)返回\n");color(7); Sleep(2000);}if (Status != -1)//命令有效跳出循環(huán) {break;}}if (Status == 0)//未登錄 {while (1){ system("cls");Menu_none();int choose;cin>>choose;switch(choose){case 0: exit(0);//退出 case 1: Show();break;//顯示 地圖 case 2: Search();break;//景點(diǎn)推薦 default:color(4);printf("\t\t\t\t\t命令無效,2秒后自動(dòng)返回\n");color(7); Sleep(2000); }}}else if (Status == 1)//普通賬戶 {ifstream infile(".\\Data\\Data_dij.dat");int n,m;//n is the sum of nodesinfile>>n>>m;//m is the sum of edges map mp(n,m);//聲明并實(shí)例化mp; infile.close();mp.mapset();//讀圖 while (1){ system("cls");Menu_guest(); int choose;cin>>choose;switch(choose){case 0: exit(0);//退出 case 1: Show();break;//顯示 地圖 case 2: Search();break;//景點(diǎn)推薦 case 3: Visit();break;//游覽全部景點(diǎn)所需最短時(shí)間 // case 4:{string st;cout<<"請(qǐng)輸入您的起點(diǎn):";cin>>st;mp.DFS(st); //從st開始進(jìn)行深度優(yōu)先搜索 break;}// case 5: {string st;string ed;cout<<"請(qǐng)輸入您的起點(diǎn):";cin>>st;cout<<"請(qǐng)輸入您的終點(diǎn):";cin>>ed;mp.dijkstra(st, ed);//求兩點(diǎn)之間最短路 break;}// case 6: {string s;cout<<"請(qǐng)輸入您當(dāng)前所在的位置"<<endl;//從st開始進(jìn)行廣度優(yōu)先搜索 cin>>s;mp.BFS(s);system("pause");break;}default:color(4);printf("\t\t\t\t\t命令無效,2秒后自動(dòng)返回\n");color(7); Sleep(2000); }}}else if (Status == 2)//管理員賬戶 {ifstream infile(".\\Data\\Data_dij.dat");int n,m;//n is the sum of nodesinfile>>n>>m;//m is the sum of edges map mp(n,m);//聲明并實(shí)例化mp;infile.close();mp.mapset();//讀圖 while (1){ system("cls");Menu_admin(); int choose;cin>>choose;switch(choose){case 0: exit(0);//退出 case 1: Show();break;//顯示 地圖 case 2: Search();break;//景點(diǎn)推薦 case 3: Visit();break;//游覽全部景點(diǎn)所需最短時(shí)間 // case 4:{string st;cout<<"請(qǐng)輸入您的起點(diǎn):";//從st開始進(jìn)行深度優(yōu)先搜索 cin>>st;mp.DFS(st); break;}// case 5: {string st;string ed;cout<<"請(qǐng)輸入您的起點(diǎn):";cin>>st;cout<<"請(qǐng)輸入您的終點(diǎn):";cin>>ed;mp.dijkstra(st, ed);//求兩點(diǎn)之間最短路 ,st為起點(diǎn),ed為終點(diǎn) break;}// case 6: {string s;cout<<"請(qǐng)輸入您當(dāng)前所在的位置"<<endl; cin>>s;mp.BFS(s);從st開始進(jìn)行廣度優(yōu)先搜索system("pause");break;}// case 7: {cout<<"請(qǐng)輸入需要?jiǎng)h除的地點(diǎn)"<<endl;string s;cin>>s;mp.DeleteNode(s);//刪除某一結(jié)點(diǎn) break;}// case 8: Register_privilege();break;//新建管理員賬戶 default:color(4);printf("\t\t\t\t\t命令無效,2秒后自動(dòng)返回\n");color(7); Sleep(2000); }}}return 0; }總結(jié)
以上是生活随笔為你收集整理的数据结构课程设计 校园导游系统 c++的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 风控建模之外部数据评估
- 下一篇: C/C++校园导游系统