本文實例為大家分享了C++實現(xiàn)景區(qū)信息管理系統(tǒng)的具體代碼,供大家參考,具體內容如下
成都創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務領域包括:網站制作、網站設計、企業(yè)官網、英文網站、手機端網站、網站推廣等服務,滿足客戶于互聯(lián)網時代的連城網站設計、移動媒體設計的需求,幫助企業(yè)找到有效的互聯(lián)網解決方案。努力成為您成熟可靠的網絡建設合作伙伴!
1.1 建立主程序應用菜單選項
主程序應用菜單選項包含所實現(xiàn)的所有功能,并且對選項采用數(shù)字標識進行選擇,對其他錯誤輸入可以進行判別,提示輸入錯誤。
1.2 導游線路圖的創(chuàng)建級景區(qū)分布圖的輸出
用鄰接鏈表存儲景點分布圖的信息,(帶權無向)圖的鄰接鏈表。輸出景區(qū)景點分布圖(鄰接矩陣)。圖中邊的權值∞用32767表示。
1.3 輸出導游線路圖
景區(qū)旅游信息管理系統(tǒng)中制訂旅游景點導游線路策略,首先通過遍歷景點,給出一個入口景點,建立一個導游線路圖,導游線路圖用有向圖表示。
1.4 輸出導游線路圖中是否有回路
景區(qū)旅游信息管理系統(tǒng)中,創(chuàng)建好導游路線圖后,判斷該圖中是否存在回路。
1.5 查找及排序
l 查找功能: 可以根據(jù)用戶輸入的關鍵字進行景點的查找,關鍵字可以在景點名稱也可以在景點介紹中。查找成功則返回景點的相關簡介,如果查找不成功請給予正確提示。
l 排序功能:按景點歡迎度,景點的岔路數(shù)對景點進行排序并打印出來排序順序。
1.6 輸出兩個景點之間最短路徑和最短距離
求出兩個景點間的最短路徑和最短距離,并且輸出道路修建規(guī)劃圖。 算法采用迪杰斯特拉算法。
1.7 輸出道路修建規(guī)劃圖
道路建設首先要保證能連通所有景點,但又要花最小的代價。
1.8 輸出車輛的進出信息
1.8.1 具體需求:
停車場是一個可以停放n輛汽車,且只有一個大門可供汽車進出。汽車在停車場內按車輛到達時間的先后順序,依次排列,若車場內已停滿n輛車,后來的車只能在門外的便道上等候,一旦有車開走,則排在便道上的第一輛車即可開入;當停車場內某輛車要離開時,在它之后進入的車輛必須先退出車場為它讓路,待該輛車開出大門外,其它車輛再按原次序進入車場,每輛停放在車場的車在它離開停車場時必須按它停留的時間長短交納費用。輸出每輛車到達后的停車位置(停車場或便道上),以及某輛車離開停車場時應繳納的費用和它在停車場內停留的時間。
1.8.2 停車場的管理流程如下:
A.當車輛要進入停車場時,檢查停車場是否已滿,如果未滿則車輛進入停車場;如果停車場已滿,則車輛進入便道等候。
B.當車輛要求出棧時,先讓在它之后進入停車場的車輛退出停車場為它讓路,再讓該車退出停車場,讓路的所有車輛再按其原來進入停車場的次序進入停車場。之后,再檢查在便道上是否有車等候,有車則讓最先等待的那輛車進入停車場。
1.8.3 車輛出入清單:
每一組輸入數(shù)據(jù)包括三個數(shù)據(jù)項:汽車“到達”或“離去”信息、汽車牌照號碼以及到達或離去的時刻。對每一組輸入數(shù)據(jù)進行操作后的輸出信息為:若是車輛到達,則輸出汽車在停車場內或便道上的停車位置;若是車輛離去,則輸出汽車在停車場內停留的時間和應交納的費用(在便道上停留的時間不收費)。
1.9
退出整個程序。
完整代碼如下(直接編譯可運行):
#include#include #include #include #include #include #include #include #define MAX 20 #define MAX2 2 #define INFINITY 32767 int arr1[MAX][MAX]; using namespace std; double arr[MAX][MAX]; class ArcNode { public: int adjvex; ArcNode *nextarc; double weight; }; class VNode { public: string data1; string data2; int wel; bool wc; bool rest; ArcNode *firstarc; }; class ALGraph { public: VNode *vertices; int vexnum, arcnum; ArcNode *arcNode; }; class zanlind { public: int number; int hour; int minute; }; int LocateVex(ALGraph G, string v) { int i; for(i = 0; v != G.vertices[i].data1 && i < G.vexnum; i++) ; if(i >= G.vexnum) return -1; return i; } int LocateW(ALGraph G, int wel) { int i; for(i = 0; wel != G.vertices[i].wel && i < G.vexnum; i++) ; if(i >= G.vexnum) return -1; return i; } void CreateUDN(ALGraph &G) { G.arcNode=new ArcNode[MAX]; G.vertices=new VNode[MAX]; fstream file("info.txt"); if(file.fail()) { cout << "error open!" << endl; } int j; ArcNode *s, *t; cout<<"請輸入頂點數(shù)和邊數(shù):"; cin>>G.vexnum>>G.arcnum; int i=0; cout< >G.vertices[i].data1>>G.vertices[i].data2 >> G.vertices[i].wel>> G.vertices[i].rest>>G.vertices[i].wc; G.vertices[i].firstarc = NULL; i++; } cout< >v1>>v2>>weight; int i = LocateVex(G, v1); int j = LocateVex(G, v2); s = new ArcNode(); t = new ArcNode(); s->adjvex = j; s->nextarc = G.vertices[i].firstarc; s->weight=weight; G.vertices[i].firstarc =s; t->adjvex = i; t->nextarc = G.vertices[j].firstarc; t->weight=weight; G.vertices[j].firstarc =t; } file1.close(); file.close(); } void PrintAdjList(ALGraph &G) { cout<<"下面是圖的鄰接鏈表輸出:" < nextarc) cout<<"--------->"< adjvex; cout< adjvex]=p->weight; p=p->nextarc; } } } cout<<" "; for(int n1=0; n1 *s=new stack (); bool isOver(ALGraph G,bool a[MAX]) { for(int i=0; i status; int n=0; int num = -1; int pk; ArcNode *e; cout << G.vertices[0].data1 << "->"; sta[0] =false; status.push(0); int aa, bb; aa = 0; while (n < G.vexnum-1){ e = NULL; num = status.top(); e = G.vertices[num].firstarc; while (e){ if (sta[e->adjvex] == false){ e = e->nextarc; } else{ status.push(e->adjvex); cout << G.vertices[e->adjvex].data1<<"->"; aa = e->adjvex; sta[e->adjvex] = false; n++; break; } } if (e == NULL){ pk = status.top(); bb = pk; if (aa != bb){ cout << G.vertices[pk].data1<<"->"; } status.pop(); } if (status.top() == 0){ cout << G.vertices[0].data1 << "->"; } } cout << endl; } bool IsEdge(ALGraph G) { string s1, s2; cin>>s1>>s2; int iA=LocateVex(G,s1); int jA=LocateVex(G,s2); ArcNode *p=G.vertices[iA].firstarc; while(p) { if(p->adjvex==jA) { return 1; } else { p=p->nextarc; } } return 0; } int adjlist[MAX]; void FindInDegree( ALGraph &g) { int i; ArcNode *p; for (i=0; i adjvex]++; p=p->nextarc; } } } void JudgeCir(ALGraph G) { FindInDegree(G); int count=0; int Q[MAX]; int front,rear,v; front=rear=-1; for(int i=0; i 0 && arr[v][j]<32767) { adjlist[j]--; if(adjlist[j]==1) { Q[++rear]=j; count++; } } } } else { adjlist[v]=-1; } } if(count i; j--) { if(tmp < ary[j]) { ary[i] = ary[j]; ary[j] = tmp; tmp = ary[i]; } } } for(int j=0; j i; j--) { if(tmp <= ary[j]) { a[i]=j; ary[i] = ary[j]; a[i]=j; ary[j] = tmp; tmp = ary[i]; } } } for(int j=0;j >s1>>s2; if(isInVe(G,s1) && isInVe(G,s2)) { iA=LocateVex(G,s1); jA=LocateVex(G,s2); ShortestPath_DIJ(G,iA, p, D); cout<<"到各頂點的最短路徑及長度為:"< -1) cout< parking; stack cars; queue waits; int z[MAX2]; bool isInZan(int zan[],int number) { for(int i=0;i >zan.number; cout< tm_hour;//得到當前時間的小時 int m = newtime->tm_min;//得到當前時間的分鐘 zan.hour=h; zan.minute=m; cout<<"進場時間為:"; if(zan.minute>=1 && zan.minute<10) { cout< >number; if(isInZan(z,number)) { while(parking.top().number!=number) { cars.push(parking.top()); parking.pop(); } int num=indexZ(z,parking.top().number); z[num]=0; /* time_t t = time(0); char tmp[64]; strftime(tmp,sizeof(tmp),"%X ",localtime(&t)); */ struct tm *newtime; time_t long_time; time( &long_time ); //Get time as long integer newtime = localtime( &long_time ); int h = newtime->tm_hour;//得到當前時間的小時 int m = newtime->tm_min;//得到當前時間的分鐘 cout<<"車牌號為:"< :"; char choose; cin>>choose; if(choose=='A' || choose=='D' || choose=='E') { switch(choose) { case 'A': goIn(); goto r2; case 'D': goOut(); goto r2; case 'E': break; } } else { cout<<"您的輸入有誤,請輸入 其中的一項。"; goto r2; } } int main() { int i, j; int iAA; ALGraph *G=new ALGraph(); int choose=0; cout< >choose; if(choose<=8 && choose>=0) { if(choose>1 && G->vexnum==0 &&choose!=8) { cout< >ch; string sA; switch(ch) { case 0: cout<<"請輸入您要查找的有關景點的關鍵字:" ; cin>>sA; Search(*G,sA); break; case 1: SortWel(*G); break; case 2: SortN(*G); break; case 3: goto r; default : cout<<"您的輸入有誤,請重新輸入:"<
所需要的兩個edge.txt和info.txt文件。(很重要、一定要有?。。。?/p>
更多學習資料請關注專題《管理系統(tǒng)開發(fā)》。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。