C語言實(shí)現(xiàn)導(dǎo)航功能
本文實(shí)例為大家分享了C語言實(shí)現(xiàn)導(dǎo)航功能的具體代碼,供大家參考,具體內(nèi)容如下
#include<stdio.h> #include<string.h> #define NUM 25 #define INFINITY 32767 #define False 0 #define True 1 typedef struct { ?? ?int number;//頂點(diǎn)的編號? ?? ?const char *sight;//頂點(diǎn)的信息? ?} VertexType;//頂點(diǎn)的類型? ? ?typedef struct ?{ ??? ?VertexType vex[NUM];//存放頂點(diǎn)信息 ?? ? int arcs[NUM][NUM];//鄰接矩陣數(shù)組 ?? ? int vexnum;//頂點(diǎn)個數(shù)? ?}MGraph; ? MGraph G; ? ?/** 由傳入的節(jié)點(diǎn)個數(shù)創(chuàng)建圖 ?**/? ?void GreateMGraph(int v)? ?{ ??? ?G.vexnum=v;//傳入節(jié)點(diǎn)個數(shù)? ?? ? for(int i=1;i<G.vexnum;i++){ ?? ? ?? ?G.vex[i].number=i; ?? ? }//配置頂點(diǎn)編號? ?? ?? ?? ? /** ?? ? 編輯頂點(diǎn)信息?? ? ?? ? **/? ?? ? G.vex[0].sight="各景點(diǎn)名字"; ?? ? G.vex[1].sight="大門口"; ?? ? G.vex[2].sight="行政辦公樓"; ?? ? G.vex[3].sight="北區(qū)教室實(shí)訓(xùn)中心"; ?? ? G.vex[4].sight="一號教學(xué)樓"; ?? ? G.vex[5].sight="二號教學(xué)樓"; ?? ? G.vex[6].sight="實(shí)驗(yàn)樓"; ?? ? G.vex[7].sight="三號教學(xué)樓"; ?? ? G.vex[8].sight="圖書館"; ?? ? G.vex[9].sight="開水房"; ?? ? G.vex[10].sight="超市"; ?? ? G.vex[11].sight="榴馨苑"; ?? ? G.vex[12].sight="洗浴中心"; ?? ? G.vex[13].sight="驪秀苑"; ?? ? G.vex[14].sight="綜合樓"; ?? ? G.vex[15].sight="游泳池"; ?? ? G.vex[16].sight="主田徑場"; ?? ? G.vex[17].sight="綜合文體館"; ?? ?? ?? ? /** ?? ? 先將所有頂點(diǎn)之間的距離設(shè)置為INFINITY? ?? ? **/ ?? ? for(int i=1;i<=G.vexnum;i++) ?? ? { ?? ? ?? ?for(int j=1;j<=G.vexnum;j++) ?? ? ?? ?{ ?? ? ?? ??? ?G.arcs[i][j]=INFINITY; ?? ??? ? } ?? ? } ?? ?? ?? ? /** ?? ? 設(shè)置各頂點(diǎn)之間的距離? ?? ? **/ ?? ? G.arcs[1][2]=G.arcs[2][1]=255; ?? ? G.arcs[1][4]=G.arcs[4][1]=501; ?? ? G.arcs[1][5]=G.arcs[5][1]=535; ?? ? G.arcs[1][6]=G.arcs[6][1]=705; ?? ? G.arcs[1][7]=G.arcs[7][1]=722; ?? ? G.arcs[1][8]=G.arcs[8][1]=790; ?? ? G.arcs[2][3]=G.arcs[3][2]=530; ?? ? G.arcs[2][4]=G.arcs[4][2]=450; ?? ? G.arcs[2][5]=G.arcs[5][2]=484; ?? ? G.arcs[2][6]=G.arcs[6][2]=654; ?? ? G.arcs[2][7]=G.arcs[7][2]=663; ?? ? G.arcs[2][8]=G.arcs[8][2]=748; ?? ? G.arcs[3][8]=G.arcs[8][3]=1054; ?? ? G.arcs[3][17]=G.arcs[17][3]=713; ?? ? G.arcs[4][5]=G.arcs[5][4]=436; ?? ? G.arcs[4][6]=G.arcs[6][4]=158; ?? ? G.arcs[4][7]=G.arcs[7][4]=527; ?? ? G.arcs[4][8]=G.arcs[8][4]=534; ?? ? G.arcs[5][6]=G.arcs[6][5]=688; ?? ? G.arcs[5][7]=G.arcs[7][5]=561; ?? ? G.arcs[5][8]=G.arcs[8][5]=603; ?? ? G.arcs[6][7]=G.arcs[7][6]=428; ?? ? G.arcs[6][8]=G.arcs[8][6]=329; ?? ? G.arcs[6][9]=G.arcs[9][6]=547; ?? ? G.arcs[7][8]=G.arcs[8][7]=254; ?? ? G.arcs[8][11]=G.arcs[11][8]=421; ?? ? G.arcs[8][17]=G.arcs[17][8]=879; ?? ? G.arcs[9][10]=G.arcs[10][9]=178; ?? ? G.arcs[10][11]=G.arcs[11][10]=213; ?? ? G.arcs[10][12]=G.arcs[12][10]=114; ?? ? G.arcs[12][13]=G.arcs[13][12]=415; ?? ? G.arcs[13][14]=G.arcs[14][13]=104; ?? ? G.arcs[13][16]=G.arcs[16][13]=427; ?? ? G.arcs[13][15]=G.arcs[15][13]=576; ?? ? G.arcs[14][17]=G.arcs[17][14]=688; ?? ? G.arcs[15][16]=G.arcs[16][15]=213; ?? ? G.arcs[16][17]=G.arcs[17][16]=214; ?} ? ?/** ?展示校園地圖? ?**/ ?void Map() ?{ ? printf("\n\n\n"); ? printf(" ?**************************河南財(cái)經(jīng)政法大學(xué)*******************************"); ? printf("\n\n\n"); ? printf(" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ------------------------15游泳池 ? ? ? ?\n"); ? printf(" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | ? ? ? ? ? ? ? ? ? ? ? ? ?| ? ? ? ? ? ?\n"); ? printf(" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | ? ? ? ? ? ? ? ? ? ? ? ? ?| ? ? ? ? ? ?\n"); ? printf(" ? 12洗浴中心----------------13驪繡苑---------------------16主田徑場 ? \n"); ? printf(" ? ? ? | ? ? ? ? ? ? ? ? ? ? ? | ? ? ? ? ? ? ? ? ? ? ? ? ?| ? ? ? ? ? ?\n"); ? printf(" ? 10超市----11榴馨苑 ? ? ? ? ?14綜合樓 ? ? ? ? ? ? ? ? ? | ? ? ? ? ? ?\n"); ? printf(" ? ?| ? ? ? ? ?| ? ? ? ? ? ? ? ?|----------------------17綜合文體館 ? ?\n"); ? printf(" ? 9開水房 ? ? | ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| ? ? ? ? ?\n"); ? printf(" ? ?| ? ? ? ? ?------------8圖書館--------------------------| ? ? ? ? ?\n"); ? printf(" ? ?| ? ? ? ? ? ? ? ? ? ? ? ? ?| ? ? ? ? ? ? ? ? ? ? ? ? ? ?| ? ? ? ? ?\n"); ? printf(" ? ?|-------------6實(shí)驗(yàn)樓------|--------7三號教學(xué)樓 ? ? ? ? | ? ? ? ? ?\n"); ? printf(" ? ? ? ? ? ? ? ? ? ? | ? ? ? ? | ? ? ? ? ? ? ?| ? ? ? ? ? ? | ? ? ? ? ?\n"); ? printf(" ? ? ? ? ? ? ? ? ? ? | ? ? ? ? | ? ? ? ? ? ? ?| ? ? ? ? ? ? | ? ? ? ? ?\n"); ? printf(" ? ? ? ? ? ? ?4一號教學(xué)樓------|--------5二號教學(xué)樓 ? ? ? ? | ? ? ? ? ?\n"); ? printf(" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | ? ? ? ? ? ? ? ? ? ? ? ? ? ?| ? ? ? ? ?\n"); ? printf(" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | ? ? ? ? ? ? ? ? ? ? ? ? ? ?| ? ? ? ? ?\n"); ? printf(" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |---2行政樓---------------3北區(qū) ? ? ? ? \n"); ? printf(" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? \n"); ? printf(" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? \n"); ? printf(" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?1大門口 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?\n");? } ?/** ?介紹校園各景點(diǎn)概況? ?**/ ?void Info(int sight_num,char data[][200]) { ?? ?if(sight_num==1) ?? ??? ?puts(data[1]); ?? ?if(sight_num==2) ?? ??? ?puts(data[2]); ?? ?if(sight_num==3) ?? ??? ?puts(data[3]); ?? ?if(sight_num==4) ?? ??? ?puts(data[4]); ?? ?if(sight_num==5) ?? ??? ?puts(data[5]); ?? ?if(sight_num==6) ?? ??? ?puts(data[6]); ?? ?if(sight_num==7) ?? ??? ?puts(data[7]); ?? ?if(sight_num==8) ?? ??? ?puts(data[8]); ?? ?if(sight_num==9) ?? ??? ?puts(data[9]); ?? ?if(sight_num==10) ?? ??? ?puts(data[10]); ?? ?if(sight_num==11) ?? ??? ?puts(data[11]); ?? ?if(sight_num==12) ?? ??? ?puts(data[12]); ?? ?if(sight_num==13) ?? ??? ?puts(data[13]); ?? ?if(sight_num==14) ?? ??? ?puts(data[14]); ?? ?if(sight_num==15) ?? ??? ?puts(data[15]); ?? ?if(sight_num==16) ?? ??? ?puts(data[16]); ?? ?if(sight_num==17) ?? ??? ?puts(data[17]); ?? ?if(sight_num==18) ?? ??? ?puts(data[18]); ?? ?if(sight_num==19) ?? ??? ?puts(data[19]); ?? ?if(sight_num==20) ?? ??? ?puts(data[20]); ?? ?if(sight_num==21) ?? ??? ?puts(data[21]); ?? ?if(sight_num==22) ?? ??? ?puts(data[22]); ?? ?if(sight_num==23) ?? ??? ?puts(data[23]); ?? ?if(sight_num==24) ?? ??? ?puts(data[24]); ?? ?if(sight_num==25) ?? ??? ?puts(data[25]); } /** 開始菜單? **/ int Menu() { ?? ?int c; ?? ?Map(); ?? ?printf("\t\t歡迎使用河南財(cái)經(jīng)政法大學(xué)導(dǎo)航圖系統(tǒng)\n"); ?? ?printf("\t\t 1.查詢地點(diǎn)路徑 \n"); ?? ?printf("\t\t 2.地點(diǎn)信息簡介 \n"); ?? ?printf("\t\t 3.退出 \n"); ?? ?printf(" ?**************************河南財(cái)經(jīng)政法大學(xué)*******************************\n"); ?? ?printf("請輸入您的選擇:"); ?? ?scanf("%d",&c); ?? ?return c; } /** 地圖的導(dǎo)航功能? **/ ?/** ?輸出任意兩點(diǎn)之間的最短路徑? ?**/ ?void guide_Dispath_two(MGraph g,int dist[],int path[],int S[],int v,int i)//v為起點(diǎn),i為終點(diǎn)? ?{ ??? ?int apath[NUM],d=0; ? ? ? ? ? ? //存放一條最短的路徑以及頂點(diǎn)個數(shù)(路徑中終點(diǎn)為首) ?? ?int j,k; ? ? ? ? ? ? ? ? ? ? ? ? ?//k用來存放終點(diǎn)的前面的節(jié)點(diǎn)? ?? ? ?? ?if(S[i]==1 && i!=v) ?? ?{ ?? ??? ?printf("從頂點(diǎn)%d到頂點(diǎn)%d的路徑長度為:%d\t路徑為:",v,i,dist[i]); ?? ??? ?apath[d]=i; ? ? ? ? ? ? ? ?//把終點(diǎn)放在數(shù)組中的首位 ?? ??? ?k=path[i]; ?? ??? ? ?? ??? ?if(k==-1) ?? ??? ??? ?printf("無路徑"); ?? ??? ??? ? ?? ??? ?/** ?? ??? ?利用循環(huán)將最短路徑中的各節(jié)點(diǎn)存入apath數(shù)組? ?? ??? ?**/ ?? ??? ?else ?? ??? ?{ ?? ??? ??? ?while(k!=v) ?? ??? ??? ?{ ?? ??? ??? ??? ?d++; ?? ??? ??? ??? ?apath[d]=k; ?? ??? ??? ??? ?k=path[k]; ?? ??? ??? ?} ?? ??? ?} ?? ??? ?d++; apath[d]=v; ? ? ? ? //將起點(diǎn)添加進(jìn)去 ?? ??? ?printf("%d",apath[d]); ? //輸出起點(diǎn) ?? ??? ?for(j=d-1;j>=0;j--) ?? ??? ?{ ?? ??? ??? ?printf("->%d",apath[j]); //循環(huán)輸出最短路徑中的各節(jié)點(diǎn)? ?? ??? ?} ? ? ? ? ? ? ?? ?}? ?} //以編號為v的頂點(diǎn)為起點(diǎn),w為終點(diǎn)? void guide_Dijkstra(MGraph g,int v,int w) { ?? ?int dist[NUM],path[NUM]; ?? ?int S[NUM]; ? ? ? ? ? ? ? ? ? ? ? ? //S[i]=1表示頂點(diǎn)i在S中,S[i]=0表示頂點(diǎn)i在U中 ?? ?int MINdis,i,j,u; ?? ?for(i=1;i<=g.vexnum;i++) ?? ?{ ?? ??? ?dist[i]=g.arcs[v][i]; ? ? ? ? ? //距離初始化(距頂點(diǎn)v的距離)? ?? ??? ?S[i]=0; ? ? ? ? ? ? ? ? ? ? ? ? //S[]置空 ?? ??? ?if(g.arcs[v][i]<INFINITY) ? ? ? //路徑初始化 ?? ??? ??? ?path[i]=v; ? ? ? ? ? ? ? ? ?//頂點(diǎn)v到頂點(diǎn)i有邊時,置頂點(diǎn)i的前一個頂點(diǎn)為頂點(diǎn)v? ?? ??? ?else ?? ??? ??? ?path[i]=-1; ? ? ? ? ? ? ? ? //頂點(diǎn)v到頂點(diǎn)i沒邊時,置頂點(diǎn)i的前一個頂點(diǎn)為-1? ?? ? } ?? ? S[v]=1;path[v]=0; ? ? ? ? ? ? ? ? ?//源點(diǎn)編號v放入S中 ?? ? for(i=1;i<=g.vexnum-1;i++) ? ? ? ? ?//循環(huán)直到所有頂點(diǎn)的最短路徑都求出? ?? ? { ?? ? ?? ?MINdis=INFINITY; ? ? ? ? ? ? ? ?//MINdis置最大長度初值 ?? ??? ? for(j=1;j<=g.vexnum;j++) ? ? ? //選取不在S中(即U中)且具有最小最短路徑長度的頂點(diǎn)u? ?? ??? ? { ?? ??? ? ?? ?if(S[j]==0 && dist[j]<MINdis) ?? ??? ? ?? ?{ ?? ??? ? ?? ??? ?u=j; ?? ??? ? ?? ??? ?MINdis=dist[j]; ?? ??? ??? ? } ?? ??? ? } ?? ??? ??? ? S[u]=1; ? ? ? ? ? ? ? ? ? //頂點(diǎn)u加入S中 ?? ??? ??? ? for(j=1;j<=g.vexnum;j++) ?//修改不在S中(即U中)的頂點(diǎn)的最短路徑? ?? ??? ??? ? { ?? ??? ??? ? ?? ?if(S[j]==0) ?? ??? ??? ? ?? ??? ?if(g.arcs[u][j]<INFINITY && dist[u]+g.arcs[u][j]<dist[j]) ?? ??? ??? ? ?? ??? ?{ ?? ??? ??? ? ?? ??? ??? ?dist[j]=dist[u]+g.arcs[u][j]; ?? ??? ??? ? ?? ??? ??? ?path[j]=u; ?? ??? ??? ??? ??? ? } ?? ??? ??? ? ?} ? ?? ? ?} ?? ? ? ?? ? ?guide_Dispath_two(g,dist,path,S,v,w); //輸出最短路徑? ?} ?/** ?將文件中的景點(diǎn)信息載入數(shù)組? ?**/ ?void load_sight_data(char data[][200],MGraph g) { ?? ?FILE *fp; ?? ?int i; ?? ? ?? ?if((fp=fopen("C:\\Users\\admin\\Desktop\\導(dǎo)航\\sight_data.txt","r"))==NULL){ ?? ??? ?printf("File can't open"); ?? ??? ?return; ?? ?} ?? ?for(i=1;i<=g.vexnum;i++) ?? ?{ ?? ??? ?fgets(data[i],200,fp); ?? ?} ?? ?fclose(fp); } /** 修改景點(diǎn)信息? **/ void change_sight_data(char user_change_data[200],MGraph g) { ?? ?FILE *fin,*ftp; ?? ?int i; ?? ?fin=fopen("C:\\Users\\admin\\Desktop\\導(dǎo)航\\sight_data.txt","r");//讀打開原文件? ?? ?ftp=fopen("C:\\Users\\admin\\Desktop\\導(dǎo)航\\temp.txt","w");//寫打開臨時文件 ?? ?if(fin==NULL || ftp==NULL) ?? ?{ ?? ??? ?printf("打開文件失敗"); ?? ??? ?return;? ?? ? } ?? ?? ?? ?for(i=1;i<=g.vexnum;i++) ?? ?{ ?? ??? ?char change_data[200]; ?? ??? ?fgets(change_data,200,fin); ?? ??? ?if(change_data[0]==user_change_data[0] && change_data[1]==user_change_data[1]) ?? ??? ?{ ?? ??? ??? ?fputs(user_change_data,ftp);//而用fputs直接將user_change_data直接寫入文件沒有換行符,需要添加換行符? ?? ??? ??? ?fprintf(ftp,"\n"); ?? ??? ?} ?? ??? ?else ?? ??? ?{ ?? ??? ??? ?fputs(change_data,ftp);//在使用fgets函數(shù)得到change_data數(shù)組時換行符會被保存,此處不需要加換行符? ?? ??? ?} ?? ?} ?? ?fclose(fin); ?? ?fclose(ftp); ?? ?remove("C:\\Users\\admin\\Desktop\\導(dǎo)航\\sight_data.txt"); ?? ?rename("C:\\Users\\admin\\Desktop\\導(dǎo)航\\temp.txt","C:\\Users\\admin\\Desktop\\導(dǎo)航\\sight_data.txt"); } /** 增添景點(diǎn)到文件內(nèi)? **/ void add_sight_data(char change_data[200],MGraph g) { ?? ?FILE *fp; ?? ?if((fp=fopen("C:\\Users\\admin\\Desktop\\導(dǎo)航\\sight_data.txt","a"))==NULL){ ?? ??? ?printf("File can't open"); ?? ??? ?return; ?? ?} ?? ?fprintf(fp,"\n"); ?? ?fputs(change_data,fp); ?? ?fprintf(fp,"\n"); ?? ?rewind(fp); ?? ? ?? ?fclose(fp); ?} ? ?/** ?修改密碼,保存到密碼文件中? ?**/ ?void change_password(char password[30]) ?{ ??? ?FILE *fp; ??? ?fp=fopen("C:\\Users\\admin\\Desktop\\導(dǎo)航\\password_temp.txt","w"); ?? ?if(fp==NULL) ?? ?{ ?? ??? ?printf("打開文件失敗"); ?? ??? ?return;? ?? ? } ?? ?? ?? ? fputs(password,fp); ?? ? fclose(fp); ?? ? remove("C:\\Users\\admin\\Desktop\\導(dǎo)航\\password.txt"); ?? ? rename("C:\\Users\\admin\\Desktop\\導(dǎo)航\\password_temp.txt","C:\\Users\\admin\\Desktop\\導(dǎo)航\\password.txt"); ? } ?? ? /** ? ?將密碼裝進(jìn)密碼數(shù)組中? ? **/ ?void load_password(char password[30]) ? { ? ?? ?FILE *fp; ? ?? ?if((fp=fopen("C:\\Users\\admin\\Desktop\\導(dǎo)航\\password.txt","r"))==NULL){ ?? ??? ?printf("File can't open"); ?? ??? ?return; ?? ?} ?? ? ?? ?fgets(password,30,fp); ?? ? ?? ?fclose(fp); ?}? ? ?int admin_Menu() ?{ ??? ?int c; ?? ?printf("**************管理系統(tǒng)****************\n");? ?? ?printf("\t\t歡迎使用管理員操作系統(tǒng)\n"); ??? ?printf("1.修改登錄密碼\n"); ?? ?printf("2.添加新景點(diǎn)\n"); ?? ?printf("3.修改景點(diǎn)信息\n"); ?? ?printf("4.新建景點(diǎn)路徑\n"); ?? ?printf("5.退出\n"); ?? ?printf("**************************************\n"); ?? ?printf("請輸入您的選擇:"); ?? ?scanf("%d",&c); ?? ?return c;? ?? ?? ?} ? int main() { ?? ?GreateMGraph(17); ?? ?char sight_data[NUM][200]; ?? ?char password[30]; ?? ?int choice; ?? ?int Menu_choice; ?? ?int start,end; ?? ?do ?? ?{ ?? ??? ?printf("歡迎使用河南財(cái)經(jīng)政法大學(xué)導(dǎo)航系統(tǒng)\n"); ?? ??? ?printf("請問您的身份是:1.管理員 ?2.游客 ?3.退出\n"); ?? ??? ?scanf("%d",&choice); ?? ??? ?if(choice==2) ?? ??? ?{ ?? ??? ??? ?do ?? ??? ??? ?{?? ? ?? ??? ??? ??? ?Menu_choice=Menu(); ?? ??? ??? ??? ?if(Menu_choice==1) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?printf("請輸入您現(xiàn)在的位置:"); ?? ??? ??? ??? ??? ?scanf("%d",&start); ?? ??? ??? ??? ??? ?printf("\n"); ?? ??? ??? ??? ??? ?printf("請輸入您想要到達(dá)的位置:"); ?? ??? ??? ??? ??? ?scanf("%d",&end); ?? ??? ??? ? ?? ??? ??? ??? ??? ?guide_Dijkstra(G,start,end);? ?? ??? ??? ??? ?} ?? ??? ??? ??? ?if(Menu_choice==2) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?int sight_num; ?? ??? ??? ??? ??? ?load_sight_data(sight_data,G); ?? ??? ??? ??? ??? ?printf("請輸入您要查詢的景點(diǎn)編號:"); ?? ??? ??? ??? ??? ?scanf("%d",&sight_num); ?? ??? ??? ??? ??? ?Info(sight_num,sight_data); ?? ??? ??? ??? ?} ?? ??? ??? ??? ?if(Menu_choice==3) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?break; ?? ??? ??? ??? ?} ?? ??? ??? ? ?? ??? ??? ?}while(1); ?? ??? ?} ?? ? ?? ??? ?if(choice==1) ?? ??? ?{? ?? ??? ??? ?getchar(); ?? ??? ??? ?load_password(password); ?? ??? ??? ?char user_input_psw[30]; ?? ??? ??? ?printf("請輸入管理員登錄密碼:"); ?? ??? ??? ?gets(user_input_psw); ?? ??? ??? ?if(strcmp(password,user_input_psw)==0) ?? ??? ??? ?{ ?? ??? ??? ? ?? ?printf("密碼正確!\n");? ?? ??? ??? ??? ?int admin_choice; ?? ??? ??? ? ?? ?do ?? ??? ??? ? ?? ?{ ?? ??? ??? ? ?? ??? ?admin_choice=admin_Menu(); ?? ??? ??? ? ?? ??? ? ?? ??? ??? ? ?? ??? ?if(admin_choice==1) ?? ??? ??? ? ?? ??? ?{ ?? ??? ??? ??? ??? ??? ?getchar(); ?? ??? ??? ??? ??? ??? ?char user_change_psw[30]; ?? ??? ??? ??? ??? ??? ?printf("請輸入新的密碼:\n");? ?? ??? ??? ? ?? ??? ??? ?gets(user_change_psw); ?? ??? ??? ??? ??? ??? ?change_password(user_change_psw); ?? ??? ??? ??? ??? ??? ?load_password(password); ?? ??? ??? ??? ??? ??? ?printf("密碼修改成功!\n");? ?? ??? ??? ??? ??? ? } ?? ??? ??? ??? ??? ? if(admin_choice==2) ?? ??? ??? ??? ??? ? { ?? ??? ??? ??? ??? ? ?? ?getchar(); ?? ??? ??? ??? ??? ? ?? ?char uadd_sight_data[200]; ?? ??? ??? ??? ??? ??? ?printf("請輸入您要添加的景點(diǎn)以及該景點(diǎn)信息:\n"); ?? ??? ??? ??? ??? ??? ?gets(uadd_sight_data); ?? ??? ??? ??? ??? ??? ?add_sight_data(uadd_sight_data,G); ?? ??? ??? ??? ??? ??? ?load_sight_data(sight_data,G); ?? ??? ??? ??? ??? ??? ?G.vexnum++; ?? ??? ??? ??? ??? ??? ? ?? ??? ??? ??? ??? ??? ?char *p; ?? ??? ??? ??? ??? ??? ?p=strtok(uadd_sight_data," "); ?? ??? ??? ??? ??? ??? ?p=strtok(NULL," "); ?? ??? ??? ??? ??? ??? ?G.vex[G.vexnum].number=G.vexnum; ?? ??? ??? ??? ??? ??? ?G.vex[G.vexnum].sight=p; ?? ??? ??? ??? ??? ??? ? ?? ??? ??? ??? ??? ??? ?printf("添加成功!\n");? ?? ??? ??? ??? ??? ? } ?? ??? ??? ??? ??? ? if(admin_choice==3) ?? ??? ??? ??? ??? ? { ?? ??? ??? ??? ??? ? ?? ?getchar(); ?? ??? ??? ??? ??? ? ?? ?char user_sight_data[200]; ?? ??? ??? ??? ??? ? ?? ?printf("請輸入您要修改的景點(diǎn)信息:\n"); ?? ??? ??? ??? ??? ? ?? ?gets(user_sight_data); ?? ??? ??? ??? ??? ? ?? ?change_sight_data(user_sight_data,G); ?? ??? ??? ??? ??? ? ?? ?load_sight_data(sight_data,G); ?? ??? ??? ??? ??? ? ?? ?printf("修改成功!\n"); ?? ??? ??? ??? ??? ? } ?? ??? ??? ??? ??? ? if(admin_choice==4) ?? ??? ??? ??? ??? ? { ?? ??? ??? ??? ??? ? ?? ?int new_start,new_end; ?? ??? ??? ??? ??? ? ?? ?int length; ?? ??? ??? ??? ??? ? ?? ?printf("請輸入您想要在哪兩點(diǎn)之間添加路線:\n"); ?? ??? ??? ??? ??? ? ?? ?printf("起點(diǎn):"); ?? ??? ??? ??? ??? ??? ?scanf("%d",&new_start); ?? ??? ??? ??? ??? ??? ?printf("\n"); ?? ??? ??? ??? ??? ??? ?printf("終點(diǎn):"); ?? ??? ??? ??? ??? ??? ?scanf("%d",&new_end); ?? ??? ??? ??? ??? ??? ?printf("請輸入兩頂點(diǎn)之間的距離:\n"); ?? ??? ??? ??? ??? ??? ?scanf("%d",&length); ?? ??? ??? ??? ??? ??? ?printf("\n"); ?? ??? ??? ??? ??? ??? ? ?? ??? ??? ??? ??? ??? ?G.arcs[new_start][new_end]=G.arcs[new_end][new_start]=length; ?? ??? ??? ??? ??? ??? ?printf("路線添加成功!\n");? ?? ??? ??? ??? ??? ? } ?? ??? ??? ??? ??? ? if(admin_choice==5) ?? ??? ??? ??? ??? ? { ?? ??? ??? ??? ??? ? ?? ?break; ?? ??? ??? ??? ??? ? } ?? ??? ??? ??? ? }while(1); ?? ??? ? ?? ?} ?? ??? ?? ?? ??? ? ?? ?if(strcmp(password,user_input_psw)!=0) ?? ??? ? ?? ?{ ?? ??? ? ?? ??? ?printf("密碼錯誤! \n");? ?? ??? ? ??? ?}? ?? ? ?? ?} ?? ? ?? ? ?? ? ?? ?if(choice==3) ?? ??? ? { ?? ??? ? ?? ?break; ?? ??? ? ?}? ?? ?}while(1); ?? ? ?? ?return 0;? ?}?
password.txt文件用來存放密碼
sight_data.txt文件用來存放景點(diǎn)信息:
1 大門口 出入學(xué)校的必經(jīng)之路
2 行政辦公樓 學(xué)校最氣派的建筑之一
3 北區(qū) 金工實(shí)訓(xùn)中心,還有幾排具有歷史滄桑感的教室
4 一號教學(xué)樓 主要有小教室,用來上英語課和專業(yè)課
5 二號教學(xué)樓 主要用來上專業(yè)課,五六樓有語音室
6 實(shí)驗(yàn)樓 學(xué)生上各種實(shí)驗(yàn)課的地點(diǎn)
7 三號教學(xué)樓 有大教室,一般安排用來上基礎(chǔ)課
8 圖書館 學(xué)校為同學(xué)們提供學(xué)習(xí)和自習(xí)的地方,也是學(xué)校的藏書最多的地方
9 開水房 學(xué)校唯一一個為同學(xué)提供熱水的地點(diǎn)
10 超市 學(xué)校唯一一個中型超市,在這里可以買到各種生活用品
11 榴馨苑 環(huán)境較好的學(xué)生食堂,這里因?yàn)殡x女生公寓較近,所以這個食堂女生較多
12 洗浴中心 環(huán)境還行就是規(guī)模太小,每天都是供不應(yīng)求
13 驪秀苑 主要經(jīng)營面食。我校的物美價廉的食堂,位于男生公寓區(qū),大部分男生在此就餐
14 綜合樓 歷史較為悠久的一棟教學(xué)樓,旁邊有學(xué)生第二俱樂部,學(xué)校的晚會都在這里舉行
15 游泳池 大一學(xué)生上游泳課的地點(diǎn)
16 主田徑場 標(biāo)準(zhǔn)的400m跑道,學(xué)生上室外體育課的地點(diǎn)
17 綜合文體館:上室內(nèi)體育課的地方,是新建成的較為氣派
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Qt利用QSortFilterProxyModel代理實(shí)現(xiàn)自定義排序與聯(lián)合過濾
QsortFilterProxyModel類用來為model和view之間提供強(qiáng)大的排序和過濾支持。這篇文章將利用QSortFilterProxyModel代理實(shí)現(xiàn)自定義排序與聯(lián)合過濾,需要的可以參考一下2022-11-11