當前位置:首頁 » 中學校園 » 數據結構校園導游系統

數據結構校園導游系統

發布時間: 2021-05-24 21:05:18

❶ 數據結構校園導遊程序

具體的問題說出來這樣不好說~

❷ +100====c語言編寫的簡單校園導游系統=====>>跪求,正確答案

都忘光了呀

❸ 校園導游系統

校園導游系統的建議:1.計算機畢業設計可不能馬虎,最好還是自己動動腦筋,好好的寫一寫。 2.網上那種免費的畢業設計千萬不能採用,要麼是論文不完整,要麼是程序運行不了,最重要的是到處都是,老師隨時都可以知道你是在網上隨便下載的一套3.如果沒有時間寫,可以在網上找找付費的,我們畢業的時候也是為這個頭疼了很長時間,最後在網上找了很久,終於購買了一套畢業設計,還算不錯,開題報告+論文+程序+答辯演示都有,主要的都是他們技術做好的成品,保證論文的完整和程序的獨立運行,可以先看了作品滿意以後再付款,而且同一學校不重復,不存在欺騙的性質,那個網站的名字我記的不是太清楚了,你可以在網路或者GOOGLE上搜索------七七論文網,希望您可以找到

❹ 數據結構 校園導游系統的設計與實現(用c++實現)

#include <iostream.h>
#include<string.h>
#include <stdlib.h>
#include <fstream.h>
typedef struct Infor
{
char name[10];
char infor[100];
}Infor;
typedef struct
{ //圖的定義
Infor vexs [20] ; //頂點表,用一維向量即可
int arcs[50][50]; //鄰接矩陣
int vexnum, arcnum; //頂點總數,弧(邊)總數

}Mgraph;

typedef struct
{
char password[6];
char n_password[6];

}PassWord;//密碼結構體定義

int LocateVex(Mgraph &G,char a[10])//
{
for(int i=0;i<G.vexnum;i++)
{
if(strcmp(G.vexs[i].name,a)==0)
{
return i;
}
}
cout<<"輸入有誤!"<<endl;
return -1;
}

//////////////////////以上是頭文件

#include "net.h"
#include <conio.h>//密碼功能所需要調用的頭文件

void Creategraph(Mgraph &G,PassWord &pw) //構造無向網
{
ifstream inFile("graph.txt");
char v1[10],v2[10];
int i,j,k,w;
inFile>>G.vexnum>>G.arcnum;
for(i=0;i<G.vexnum;i++)
{
inFile>>G.vexs[i].name;
inFile>>G.vexs[i].infor;
}
for(i=0;i<50;i++)
{
for(int j=0;j<50;j++)
{
G.arcs[i][j]=10000;
}
}
for(k=0;k<G.arcnum;k++)
{
inFile>>v1>>v2>>w;
i=LocateVex(G,v1);
j=LocateVex(G,v2);
if(i==j)
{
G.arcs[i][j]=0;
}
else
{
G.arcs[i][j]=w;
G.arcs[j][i]=G.arcs[i][j];
}
}
for(int m=0;m<6;m++)
{
inFile>>pw.password[m];
}
}

/////////////////////////////前台調用的函數/////////////////////////////////////

void infor(Mgraph &G)
{
char a[10];
int b=1;
while(b)
{
for(int i=0;i<G.vexnum;i++)
{
cout<<G.vexs[i].name<<endl;
}
cout<<"請輸入要查找的景點信息"<<endl;
cin>>a;
for(i=0;i<G.vexnum;i++)
{
if(strcmp(G.vexs[i].name,a)==0)
{
cout<<G.vexs[i].infor<<endl;
b=0;
}

}
if(b!=0)
{
cout<<"輸入錯誤請重新輸入!!"<<endl;
}
cout<<"返回前台系統按0,繼續查找按1"<<endl;
cin>>b;
}
}

void ShortestPath (Mgraph G)//最短路徑
{
char a[10],d[10];
int b=1,i,j,v,v0,w;
int Dist[100],S[100],Path[100];
int n=G.vexnum;
while(b)
{
for(i=0;i<G.vexnum;i++)
{
cout<<G.vexs[i].name<<endl;
}
for(i=0;i<100;i++)
{
Dist[i]=9999;
S[i]=0;
Path[i]=-1;
}
cout<<"請輸入要查詢路徑的兩個景點"<<endl;
cin>>a;
cin>>d;
v0=LocateVex(G,a);
j=LocateVex(G,d);
for(v=0;v<n;v++)
{
S[v]=0;
Dist[v]=G.arcs[v0][v];
if(Dist[v]<9999)
Path[v]=v0;//v1是v的前趨
else
Path[v]=-1;//v無前趨
}//
Dist[v0]=0;
S[v0]=1;
for(i=1;i<n;i++)
{
int min=9999;
for(w=0;w<n;w++)
if(!S[w]&&Dist[w]<min)
{
v=w;
min=Dist[w];
}//w頂點離v1頂點更近
S[v]=1;
for(w=0;w<n;w++)//更新當前最短路徑及距離
if(!S[w]&&(Dist[v]+G.arcs[v][w]<Dist[w]))
{
Dist[w]=Dist[v]+G.arcs[v][w];
Path[w]=v;
}//end if
}//end for
cout<<"距離為:"<<endl;
cout<<Dist[j]<<endl;
cout<<"要經過"<<endl;
int f=Path[j],e[100];
i=0;
while(f!=-1)
{
e[i]=f;
f=Path[f];
i++;
}
for(v=i-1;v>=0;v--)
{
cout<<G.vexs[e[v]].name<<"---->";
}
cout<<G.vexs[j].name<<endl;
cout<<"返回後台系統按0,繼續刪除按1"<<endl;
cin>>b;
}
}

void reception(Mgraph &G)//前台
{

int n;
while(1)
{
system("cls");//清屏
cout<<"*********************歡迎使用前台系統************************"<<endl;
cout<<"(1)景點信息查詢"<<endl;
cout<<"(2)問路查詢"<<endl;
cout<<"(0)返回上一級菜單"<<endl;
cin>>n;
switch(n)
{
case 1:
infor(G);
break;
case 2:
ShortestPath (G);
break;
case 0:
return;
break;
default:
cout<<"您的輸入有誤,任意鍵繼續..."<<endl;
getch();

}
}
}

////////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////後台調用的函數///////////////////////////////////
void WriteTXT(Mgraph G,PassWord pw)//將更改後的信息寫如graph.txt
{
int i,j;
ofstream outFile("graph.txt");
if(!outFile)
{
cerr<<"cannot open my.txt"<<endl;
exit(1);
}
outFile<<G.vexnum<<" "<<G.arcnum<<endl;
for(i=0;i<G.vexnum;i++)
{
outFile<<G.vexs[i].name<<" "<<G.vexs[i].infor<<endl;
}

for(i=0;i<G.vexnum;i++)
{
for(j=0;j<G.vexnum;j++)
{
if(G.arcs[i][j]!=10000)
{
outFile<<G.vexs[i].name<<" "<<G.vexs[j].name<<" "<<G.arcs[i][j]<<endl;
G.arcs[j][i]=10000;
}
}
}
Creategraph(G,pw);
}
void ChangeP(Mgraph &G,PassWord pw)//修改一個已有景點的相關信息
{
char a[10];
int b=1,i;
while(b)
{
for(i=0;i<G.vexnum;i++)
{
cout<<G.vexs[i].name<<endl;
}
cout<<"請輸入要修改的景點的信息"<<endl;
cin>>a;
for(i=0;i<G.vexnum;i++)
{
if(strcmp(a,G.vexs[i].name)==0)
{
cout<<G.vexs[i].infor<<endl;
cout<<"請輸入該景點的修改後的信息"<<endl;
cin>>G.vexs[i].infor;
cout<<"修改成功!!!!"<<endl;
b=0;
}
}
if(b!=0)
{
cout<<"error!輸入有誤!"<<endl;
}
cout<<"保存請按1,不保存請按2"<<endl;
int c;
cin>>c;
if(c==1)
{
WriteTXT(G,pw);
}
cout<<"返回後台系統按0,繼續修改按1"<<endl;
cin>>b;
}
}
void deleteP(Mgraph &G,PassWord pw)//刪除景點信息
{
char a[10];
int b=1,i,j,k;
while(b)
{
for(i=0;i<G.vexnum;i++)
{
cout<<G.vexs[i].name<<endl;
}
cout<<"請輸入要刪除的景點的信息"<<endl;
cin>>a;
for(i=0;i<G.vexnum;i++)
{
if(strcmp(a,G.vexs[i].name)==0)
{
for(j=i;j<G.vexnum-1;j++)
{
G.vexs[j]=G.vexs[j+1];
for(k=0;k<G.vexnum-1;k++)
G.arcs[k][j]=G.arcs[k][j+1];
}
for(j=i;j<G.vexnum-1;j++)
{
for(k=0;k<G.vexnum-1;k++)
G.arcs[j][k]=G.arcs[j+1][k];
}
G.vexnum--;
G.arcnum=0;
for(i=0;i<G.vexnum;i++)
{
for(j=0;j<G.vexnum;j++)
{
if(G.arcs[i][j]!=10000)
G.arcnum++;
}
}
G.arcnum=G.arcnum/2;
b=0;
cout<<"刪除成功!!!!"<<endl;
}
}
if(b!=0)
{
cout<<"輸入有誤!請看清楚!"<<endl;
}
cout<<"是否要保存?保存按1,不保存按2"<<endl;
int c;
cin>>c;
if(c==1)
{
WriteTXT(G,pw);
}
cout<<"返回後台系統按0,繼續刪除按1"<<endl;
cin>>b;
}
}

void deleteL(Mgraph &G,PassWord pw)//刪除路徑
{
char a[10],d[10];
int b=1,i,j;
while(b)
{
for(i=0;i<G.vexnum;i++)
{
for(j=0;j<G.vexnum;j++)
{
if(G.arcs[i][j]!=10000)
{
cout<<G.vexs[i].name<<" "<<G.vexs[j].name<<" "<<G.arcs[i][j]<<endl;
}
}
}
cout<<"請輸入要刪除的路徑連接的兩個景點名"<<endl;
cin>>a;
cin>>d;
i=LocateVex(G,a);
j=LocateVex(G,d);
if(G.arcs[i][j]!=10000)
{
G.arcs[i][j]=10000;
G.arcs[j][i]=10000;
b=0;
cout<<"刪除成功!!"<<endl;
G.arcnum--;
}
if(b!=0)
{
cout<<"輸入有誤!!"<<endl;
}
cout<<"保存請按1,不保存請按2"<<endl;
int c;
cin>>c;
if(c==1)
{
WriteTXT(G,pw);
}
cout<<"返回後台系統按0,繼續刪除按1"<<endl;
cin>>b;
}
}
///////////////////////////////////選作//////////////////////////

void Add(Mgraph &G,PassWord &pw)//增加景點
{

cout<<"請輸入景點名稱:"<<endl;
cin>>G.vexs[G.vexnum].name;
cout<<"請輸入景點信息:"<<endl;
cin>>G.vexs[G.vexnum].infor;

for(int i=0;i<G.vexnum;i++)
G.arcs[G.vexnum][i]=10000;
for(i=0;i<G.vexnum;i++)
G.arcs[i][G.vexnum]=10000;

G.arcs[G.vexnum][G.vexnum]=0;

G.vexnum++;

cout<<"增加成功!"<<endl;
cout<<endl;
WriteTXT(G,pw);
system("pause");system("cls");
}

////////////////////////////////////////////////
bool password(PassWord &pw)//判斷密碼
{
char p[6];
cout<<"請輸入6位密碼:"<<endl;
for(int e=0;e<6;e++)
{
p[e]=getch();
cout<<"*";
cout.flush();
}
cout<<endl;
for(e=0;e<6;e++)
{

if(p[e]!=pw.password[e])return false;
}
cout<<endl;
return true;
}

void backstage(Mgraph &G,PassWord pw)//後台函數
{
int n;
while(1)
{
system("cls");
cout<<"*********************歡迎使用後台系統************************"<<endl;
cout<<"(1)修改一個已有景點的相關信息"<<endl;
cout<<"(2)刪除一個景點及其相關信息"<<endl;
cout<<"(3)刪除一條路徑"<<endl;
cout<<"(4)增加景點"<<endl;
cout<<"(0)返回上一級菜單"<<endl;
cin>>n;
switch(n)
{
case 1:
ChangeP(G,pw);
break;
case 2:
deleteP(G,pw);
break;
case 3:
deleteL(G,pw);
break;
case 4:
Add(G,pw);
break;
case 0:
return;
break;
default:
cout<<"您的輸入有誤,任意鍵繼續..."<<endl;
getch();

}
}
}

////////////////////////////////////////////////////////////////////////////////////////////////

void main()//主函數
{
Mgraph G;
PassWord pw;
Creategraph(G,pw);
int n,m=1;
while(m)
{
system("cls");
cout<<"*********************歡迎使用北林游覽系統************************"<<endl;
cout<<"(1)前台服務(遊客身份登陸)"<<endl;
cout<<"(2)後台服務(管理員身份登陸)"<<endl;
cout<<"(0)退出"<<endl;
cin>>n;
switch(n)
{
case 1:
reception(G);
break;
case 2:
if(password(pw)==true)
{
backstage(G,pw);//後台函數,並調用
}
else
cout<<"密碼輸入錯誤!!";
break;
case 0:
m=0;
break;
default:
cout<<"您的輸入有誤,任意鍵繼續..."<<endl;
getch();
}
}
}

❺ c語言版的數據結構課設-校園導游咨詢!!!急急急!!

我只有C++的~~

#include<iostream>
#include<string>
using namespace std;
#define MaxVertexNum 50 /*景點個數最大50*/
#define MAXCOST 1000 /*定義路徑的無窮大*/
#define T 8 /*目前景點個數*/

typedef struct
{
char name[20]; /*景點名稱*/
char number[15]; /*景點代號*/
char introce[100]; /*景點簡介*/
}Elemtype;
typedef struct
{
int num; /*頂點編號*/
Elemtype date; /*頂點信息*/
}Vertex; /*定義頂點*/

typedef struct
{
Vertex vexs[MaxVertexNum]; /*存放頂點的一維數組,數組第零個單元沒有用上*/
unsigned int edges[MaxVertexNum][MaxVertexNum]; /*存放路徑的長度*/
int n,e;
}MGraph;

MGraph MGr; /*全局變數,定義MGr為MGraph類型*/
int shortest[MaxVertexNum][MaxVertexNum]; /*定義全局變數存貯最小路徑*/
int path[MaxVertexNum][MaxVertexNum]; /*定義存貯路徑*/

void init()
{
int i,j;
MGr.vexs[1].num=1;
strcpy(MGr.vexs[1].date.name,"學校東門");
strcpy(MGr.vexs[1].date.number,"001");
strcpy(MGr.vexs[1].date.introce,"挨著三好街,購物很方便。");

MGr.vexs[2].num=2;
strcpy(MGr.vexs[2].date.name,"綜合樓");
strcpy(MGr.vexs[2].date.number,"002");
strcpy(MGr.vexs[2].date.introce,"學校最新的大樓。");

MGr.vexs[3].num=3;
strcpy(MGr.vexs[3].date.name,"逸夫樓");
strcpy(MGr.vexs[3].date.number,"003");
strcpy(MGr.vexs[3].date.introce,"上課的地方。");

MGr.vexs[4].num=4;
strcpy(MGr.vexs[4].date.name,"教學館");
strcpy(MGr.vexs[4].date.number,"004");
strcpy(MGr.vexs[4].date.introce,"上課的地方。");

MGr.vexs[5].num=5;
strcpy(MGr.vexs[5].date.name,"籃球場");
strcpy(MGr.vexs[5].date.number,"005");
strcpy(MGr.vexs[5].date.introce,"打籃球的地方。");

MGr.vexs[6].num=6;
strcpy(MGr.vexs[6].date.name,"大活");
strcpy(MGr.vexs[6].date.number,"006");
strcpy(MGr.vexs[6].date.introce,"開晚會搞活動的地方。");

MGr.vexs[7].num=7;
strcpy(MGr.vexs[7].date.name,"漢卿會堂");
strcpy(MGr.vexs[7].date.number,"007");
strcpy(MGr.vexs[7].date.introce,"開講座的地方。");

MGr.vexs[8].num=8;
strcpy(MGr.vexs[8].date.name,"主樓");
strcpy(MGr.vexs[8].date.number,"008");
strcpy(MGr.vexs[8].date.introce,"做實驗的地方。");

for(i=1;i<=T;i++)
{
for(j=1;j<=T;j++)
{
MGr.edges[i][j]=MAXCOST;
}
}
for(i=1;i<=T;i++)
{
shortest[i][i]=0;
} /*初始化*/
MGr.edges[1][2]=MGr.edges[2][1]=25;
MGr.edges[1][5]=MGr.edges[5][1]=15;
MGr.edges[1][3]=MGr.edges[3][1]=10;
MGr.edges[2][8]=MGr.edges[8][2]=30;
MGr.edges[5][7]=MGr.edges[7][5]=32;
MGr.edges[7][8]=MGr.edges[8][7]=12;
MGr.edges[6][7]=MGr.edges[7][6]=6;
MGr.edges[3][4]=MGr.edges[4][3]=24;
MGr.edges[4][6]=MGr.edges[6][4]=50;
MGr.edges[1][1]=MGr.edges[2][2]=MGr.edges[3][3]=MGr.edges[4][4]=0;
MGr.edges[5][5]=MGr.edges[6][6]=MGr.edges[7][7]=MGr.edges[8][8]=0;
}

void introce()
{
int n;
cout<<"請輸入查詢景點編號:"<<endl;
cin>>n;
switch(n)
{
case 1:
cout<<"景點編號:"<<MGr.vexs[1].date.number<<"景點名稱:"<<MGr.vexs[1].date.name;
cout<<"景點簡介:"<<MGr.vexs[1].date.introce<<endl;
break;
case 2:
cout<<"景點編號:"<<MGr.vexs[2].date.number<<"景點名稱:"<<MGr.vexs[2].date.name;
cout<<"景點簡介:"<<MGr.vexs[2].date.introce<<endl;
break;
case 3:
cout<<"景點編號:"<<MGr.vexs[3].date.number<<"景點名稱:"<<MGr.vexs[3].date.name;
cout<<"景點簡介:"<<MGr.vexs[3].date.introce<<endl;
break;
case 4:
cout<<"景點編號:"<<MGr.vexs[4].date.number<<"景點名稱:"<<MGr.vexs[4].date.name;
cout<<"景點簡介:"<<MGr.vexs[4].date.introce<<endl;
break;
case 5:
cout<<"景點編號:"<<MGr.vexs[5].date.number<<"景點名稱:"<<MGr.vexs[5].date.name;
cout<<"景點簡介:"<<MGr.vexs[5].date.introce<<endl;
break;
case 6:
cout<<"景點編號:"<<MGr.vexs[6].date.number<<"景點名稱:"<<MGr.vexs[6].date.name;
cout<<"景點簡介:"<<MGr.vexs[6].date.introce<<endl;
break;
case 7:
cout<<"景點編號:"<<MGr.vexs[7].date.number<<"景點名稱:"<<MGr.vexs[7].date.name;
cout<<"景點簡介:"<<MGr.vexs[7].date.introce<<endl;
break;
case 8:
cout<<"景點編號:"<<MGr.vexs[8].date.number<<"景點名稱:"<<MGr.vexs[8].date.name;
cout<<"景點簡介:"<<MGr.vexs[8].date.introce<<endl;
break;
default:
cout<<"輸入序號錯誤。";
break;
}
}
void floyd()
{
int i,j,k;
for(i=1;i<=T;i++)
{
for(j=1;j<=T;j++)
{
shortest[i][j]=MGr.edges[i][j];
path[i][j]=0;
}
} /*初始化數組*/
for(k=1;k<=T;k++)
{
for(i=1;i<=T;i++)
{
for(j=1;j<=T;j++)
{
if(shortest[i][j]>(shortest[i][k]+shortest[k][j]))
{
shortest[i][j]=shortest[i][k]+shortest[k][j];
path[i][j]=k;
path[j][i]=k;/*記錄經過的路徑*/
}//end_if
}
}
}//end_for
}
void display(int i,int j)
{/* 列印兩個景點的路徑及最短距離 */
int a,b;
a=i;
b=j;
cout<<"您要查詢的兩景點間最短路徑是:\n\n";
if(shortest[i][j]!=MaxVertexNum)
{
if(i<j)
{
cout<<b;
while(path[i][j]!=0)
{/* 把i到j的路徑上所有經過的景點按逆序列印出來*/
cout<<"<-"<<path[i][j];
if(i<j)
j=path[i][j];
else
i=path[j][i];
}
cout<<"<-"<<a;
cout<<"\n\n";
cout<<a<<"->"<<b<<"最短距離是"<<shortest[a][b]<<"米"<<"\n\n";
}
else
{
cout<<a;
while(path[i][j]!=0)
{/* 把i到j的路徑上所有經過的景點按順序列印出來*/
cout<<"->"<<path[i][j];
if(i<j)
j=path[i][j];
else
i=path[j][i];
}
cout<<"->"<<b;
cout<<"\n\n";
cout<<a<<"->"<<b<<"最短距離是:"<<shortest[a][b]<<"米\n\n"<<endl;
}
}
else
cout<<"輸入錯誤!不存在此路!\n\n";
}/*display*/
int shortestdistance()
{/*要查找的兩景點的最短距離*/
int i,j;
cout<<"請輸入要查詢的兩個景點的編號(1->8的數字編號並用' '間隔):";
cin>>i>>j;
if(i>T||i<=0||j>T||j<0)
{
cout<<"輸入信息錯誤!\n\n";
cout<<" 請輸入要查詢的兩個景點的編號(1->8的數字編號並用' '間隔):\n";
cin>>i>>j;
}
else
{
floyd();
display(i,j);
}
return 1;
}/*shortestdistance*/

void main()
{
char k;
init();
cout<<"*******************************************************************\n";
cout<<"* *\n";
cout<<"* *\n";
cout<<"* 歡迎使用校園導游咨詢 *\n";
cout<<"* *\n";
cout<<"******************************************************************\n";
while(1)
{
cout<<"1.景點信息查詢請按 i 鍵\n";
cout<<"2.景點最短路徑查詢請按 s 鍵\n";
cout<<"3.退出系統請按 e 鍵\n";
cout<<"請選擇服務:";
cin>>k;

switch(k)
{
case 'i':
cout<<"景點簡介查詢(請輸入1~8)。";
introce();
break;
case 's':
cout<<"景點最短路徑查詢。";
shortestdistance();
break;
case 'e':
exit(0);

}
}
system("pause");
}

❻ 數據結構課程設計問題:校園導游圖

這么麻煩的東西是要拿真錢做懸賞的

熱點內容
欲為良師必有師德有感 發布:2025-08-25 20:10:56 瀏覽:400
英語上 發布:2025-08-25 20:01:40 瀏覽:504
蘇牧老師 發布:2025-08-25 18:04:56 瀏覽:47
七年級上冊地理期中考試 發布:2025-08-25 16:56:51 瀏覽:228
南京教育咨詢公司 發布:2025-08-25 14:53:20 瀏覽:632
2017年陝西數學 發布:2025-08-25 11:13:28 瀏覽:808
千筆教學 發布:2025-08-25 10:13:14 瀏覽:178
最美鄉村教師馬劍霞 發布:2025-08-25 09:48:41 瀏覽:504
認識米的教學反思 發布:2025-08-25 08:32:43 瀏覽:788
游褒禪山記教學反思 發布:2025-08-25 03:51:39 瀏覽:894