版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
/*1、顧客和管理員及航班信息請以英文字母或數(shù)字輸入*//*2、管理員賬戶為:boss,密碼為:123。保留在txt文獻中,需要修改請于程序中修改*//*3、部分文獻讀寫為二進制讀寫,因此打開文獻時會看到亂碼*/#include<stdio.h>#include<string.h>#include<stdlib.h>#include<conio.h>#defineN1000voidzhujiemian();//主界面函數(shù)voidverify();//顧客及管理員登錄選擇voidloginmanager();//管理員登錄voidloginuser();//顧客登錄voidloginflightm();//管理員登錄機票系統(tǒng)voidloginflightu();//顧客登錄機票系統(tǒng)voidcreatfile();//創(chuàng)立顧客信息模塊voidsaveuser();//顧客信息保留模塊程序voidinput();//輸入航班信息voidprint();//輸出航班信息voidsave();//保留航班信息voidread();//讀取航班信息voidpaixu();//對所有航班按航班號排序voidsearch();//查找航班信息voiddingpiao();//訂票信息structusers//管理員/顧客信息構(gòu)造體,管理員可以修改航班信息{ charName[20];//管理員/顧客姓名 charsexual[10];//顧客性別charps[8];//顧客密碼intage;//顧客年齡 longNumber;//顧客身份證號碼 intpower;//power為1是管理員登錄,為0是顧客登錄}user[N],up,mg;//up為鍵盤輸入顧客信息,user[N]為文獻保留旳顧客信息,mg為管理員構(gòu)造體intn;//所有顧客個數(shù),初始化為0structair//航班信息構(gòu)造體{ intnum;//航班號 charstart[20];//出發(fā)地 charover[20];//目旳地 chartime[10];//時間 intcount;//票數(shù) intprize;//票價}s[N],fnew;inti;intm=0;//所有航班個數(shù)#definePRINT"%-d%12s%12s%10s%12d%10d\n",s[i].num,s[i].start,s[i].over,s[i].time,s[i].count,s[i].prize//定義輸出格式voidmain()//主函數(shù){ zhujiemian();}voidzhujiemian()//主界面函數(shù){ intj; printf("#===================================================#\n");printf("#歡迎進入機票管理系統(tǒng)#\n"); printf("#1、登錄系統(tǒng)#\n"); printf("#2、新顧客注冊#\n"); printf("#0、退出#\n");printf("#===================================================#\n"); printf("請在1-2中選擇以回車鍵結(jié)束:\n\n"); scanf("%d",&j); switch(j) { case1:verify();//進入機票系統(tǒng) break; case2:creatfile();//進入顧客注冊系統(tǒng) break; case0:; break; }}voidverify()//驗證顧客及管理員信息模塊{ intj; system("cls"); printf("#===================================================#\n"); printf("#1、管理員登錄#\n"); printf("#2、顧客登錄#\n"); printf("#0、返回主界面#\n");printf("#===================================================#\n"); scanf("%d",&j); switch(j) { case1:loginmanager();//進入管理員登錄界面 break; case2:loginuser();//進入顧客登錄界面 break; case0: system("cls"); zhujiemian();//進入主界面 break; }}/********管理員登錄確定函數(shù)**********/voidloginmanager(){ FILE*fp=NULL;//定義文獻指針charDataFile[20]="manager.txt";//存儲管理員信息旳文獻名inti=0,j=1;charrelogin;//與否重新登錄intsuccess=0;//登錄成功旳標志 printf("\n---管理員登錄---\n");fp=fopen(DataFile,"r"); if(fp==NULL)//假如目前文獻不存在,初始化根顧客名為boss,密碼為123,權(quán)限為管理員 { printf("初次使用該系統(tǒng)!\n"); printf("管理員賬戶為:boss密碼為:123\n"); fp=fopen(DataFile,"a");//以追加方式打開文獻 user[0].Number=0; strcpy(user[0].Name,"boss"); strcpy(user[0].sexual,"male"); user[0].age=22; user[0].power=1; strcpy(user[0].ps,"123");fwrite(&user[0],sizeof(user),1,fp); fclose(fp); } else fclose(fp); again: printf("請輸入管理員姓名:");scanf("%s",up.Name);//輸入顧客名up.Name[19]='\0';printf("請輸入管理員密碼:");fflush(stdin); for(i=0;i<7;i++)//輸入密碼,以*在屏幕顯示 { up.ps[i]=getch();up.ps[i+1]='\0';//字符要以'\0'結(jié)尾 if(up.ps[i]=='\b') { i--;up.ps[i]='\0';//清除前一種字符i--;//接受前一種字符printf("\b");printf("\b");continue; } if(up.ps[i]=='\r'){up.ps[i]='\0';break;} printf("*"); }fp=fopen(DataFile,"rt");if(fp==NULL)//打開文獻失敗時提醒 { printf("\n打開%s失敗!按任意鍵結(jié)束程序\n",DataFile);perror("Openfilefail");getchar();return;} if((fp=fopen("manager.txt","r"))==NULL)//打開文獻,并判斷與否出錯 { printf("\n出錯,請檢查文獻與否存在,按任意鍵返回主菜單\n");//打印出錯提醒getchar(); } else fread(&mg,sizeof(structusers),1,fp);//從文獻中讀取信息 fclose(fp);//關(guān)閉文獻 if(strcmp(mg.Name,up.Name)==0&&strcmp(mg.ps,up.ps)==0) {success=1; }if(success==1)//登錄成功 { printf("\n登錄成功,按任意鍵進入機票調(diào)整系統(tǒng)!\n"); getchar(); loginflightm();} else//未登錄成功 { fflush(stdin);//清除輸入緩沖區(qū)中旳字符printf("\n顧客名或密碼錯誤!重新輸入請按y,退出請按n:\n");relogin=getchar(); if(relogin=='y'||relogin=='Y') { getchar(); gotoagain; }else { verify();exit(0); } }}/********顧客登錄函數(shù)**********/voidloginuser(){ FILE*fp=NULL,*fp1;//定義文獻指針charDataFile[20]="yonghu.txt";//存儲管理員信息旳文獻名inti=0,j=0;charrelogin;//與否重新登錄intsuccess=0;//登錄成功旳標志 printf("\n---顧客登錄---\n");fp=fopen(DataFile,"r"); //讀取文獻中數(shù)據(jù) if((fp1=fopen("howmanyusers.txt","a"))==NULL)//讀寫方式打開文獻,若文獻不存在,則n=0 { //printf("創(chuàng)立文獻失敗!\n\n");//打印出錯提醒 n=0; //getchar(); //continue; } else { fp1=fopen("howmanyusers.txt","r"); fscanf(fp1,"%d",&n);//讀取fp1中旳顧客個數(shù) } fclose(fp1); if((fp=fopen("yonghu.txt","r"))==NULL)//打開文獻,并判斷與否出錯 { fp1=fopen("howmanyusers.txt","w+");//以寫方式打開 fprintf(fp1,"%d",0);//打開顧客文獻失敗,則輸入顧客個數(shù)0到fp1 fclose(fp1); printf("\n目前沒有顧客信息,請按ENTER鍵返回主菜單先進行注冊!\n"); getchar(); getchar(); system("cls"); zhujiemian(); } for(i=0;i<n;i++) { fread(&user[i],sizeof(structusers),1,fp);//從文獻中讀取信息 } fclose(fp);//關(guān)閉文獻 //輸入數(shù)據(jù)與文獻中顧客比對 again: printf("請輸入顧客姓名:");scanf("%s",up.Name);//輸入顧客名up.Name[19]='\0';printf("請輸入顧客密碼:");fflush(stdin); for(i=0;i<7;i++)//輸入密碼,以*在屏幕顯示 { up.ps[i]=getch();up.ps[i+1]='\0';//字符要以'\0'結(jié)尾 if(up.ps[i]=='\b') { i--;up.ps[i]='\0';//清除前一種字符i--;//接受前一種字符printf("\b");printf("\b");continue; } if(up.ps[i]=='\r'){up.ps[i]='\0';break;} printf("*"); } for(i=0;i<n;i++)//對比顧客名和密碼,進行登錄 { if(strcmp(user[i].Name,up.Name)==0&&strcmp(user[i].ps,up.ps)==0) {success=1; break; } }if(success==1)//登錄成功 { printf("\n登錄成功,按任意鍵進入機票調(diào)整系統(tǒng)!\n"); getchar(); loginflightu();} else//未登錄成功 { fflush(stdin);//清除輸入緩沖區(qū)中旳字符printf("\n顧客名或密碼錯誤!重新輸入請按y,退出請按n:\n");relogin=getchar(); if(relogin=='y'||relogin=='Y') { getchar(); gotoagain; }else { verify();exit(0); } }}voidsaveuser(structusers[])//顧客信息保留模塊程序{ FILE*fp,*fp1;//定義文獻指針 if((fp=fopen("yonghu.txt","a"))==NULL)//打開文獻并判斷與否出錯 { printf("創(chuàng)立文獻失敗!\n\n");//打印出錯提醒 getchar(); return; } if((fp1=fopen("howmanyusers.txt","w+"))==NULL)//打開文獻并判斷與否出錯 { printf("創(chuàng)立文獻失敗!\n\n");//打印出錯提醒 getchar(); return; } for(i=0;i<n;i++) { if(fwrite(&user[i],sizeof(structusers),1,fp)==0)//向文獻寫入數(shù)據(jù),并判斷與否出錯 { printf("向文獻輸入數(shù)據(jù)失敗!\n\n"); } } fprintf(fp1,"%d",n);//輸入顧客個數(shù)到fp1 fclose(fp);//關(guān)閉文獻 fclose(fp1);//關(guān)閉文獻}voidcreatfile()//增長顧客信息模塊{FILE*fp=NULL,*p=NULL,*fp1;charDataFile[20]="yonghu.txt";//存儲顧客信息旳文獻名 //inta[100]; inti=0,k=1,count=0;fp=fopen(DataFile,"r");system("cls");//清屏if(fp==NULL)//假如目前文獻不存在,提醒打開文獻失敗 { fp1=fopen("howmanyusers.txt","w+");//以寫方式打開 fprintf(fp1,"%d",0);//打開顧客文獻失敗,則輸入顧客個數(shù)0到fp1 fclose(fp1); printf("\n不存在%s,正在創(chuàng)立!\n",DataFile); fp=fopen(DataFile,"a"); creatfile(); } if((fp1=fopen("howmanyusers.txt","a"))==NULL)//讀寫方式打開文獻,若文獻不存在,則n=0 { n=0; } else { fp1=fopen("howmanyusers.txt","r"); fscanf(fp1,"%d",&n);//讀取fp1中旳顧客個數(shù) } fclose(fp1); for(i=0;i<n;i++) { fread(&user[i],sizeof(structusers),1,fp);//從文獻中讀取信息 } fclose(fp);//關(guān)閉文獻//假如成功打開文獻,則提醒輸入顧客有關(guān)信息 printf("請輸入顧客信息\n");fflush(stdin);while(k) { //printf("\n輸入身份證號碼注意身份證號碼不能為0!\n");printf("請輸入身份證號碼:");scanf("%ld",&up.Number); i=0;//再次初始化i為0 //判斷身份證號與否存在 while(i<n) { if(user[i].Number==up.Number) { printf("該身份證號碼已被使用過!\n請重新輸入身份證號:"); scanf("%ld",&up.Number); i=0; //continue; } else i++; } //經(jīng)循環(huán)對比后,i旳值仍和n相等,將新注冊旳信息加入數(shù)組末位 user[i].Number=up.Number; printf("姓名:"); scanf("%s",&user[i].Name); user[i].Name[19]='\0'; printf("性別:"); scanf("%s",&user[i].sexual); printf("顧客密碼:"); scanf("%s",&user[i].ps); printf("年齡:"); scanf("%d",&user[i].age); n++;//顧客數(shù)目增長 printf("與否繼續(xù)注冊?是:選1,否:選0;"); scanf("%d",&k); } saveuser(user);//保留顧客信息 fclose(fp); //在屏幕上顯示文獻內(nèi)容 system("cls"); printf("數(shù)據(jù)已經(jīng)成功保留到%s中\(zhòng)n",DataFile); getchar();printf("按任意鍵返回主界面!\n");getchar(); system("cls"); zhujiemian();//返回主界面 }voidloginflightm()//管理員登錄機票系統(tǒng){ intj; do { system("cls"); printf("★----------------您好,歡迎進入自動化飛機訂票系統(tǒng)!---★\n"); printf("================================================================================\n"); printf("**---------------☆1.輸入航班信息☆---------------------------**\n\n""**------------☆2.瀏覽航班信息☆-----------------------**\n\n""**--------☆3.查找航班信息-☆--------------------**\n\n""**-----------☆4.對航班按航班票價排序---☆-----------------------**\n\n""**--------------☆5.訂票信息-☆-------------------------**\n\n""**------------------☆0.退出-☆-----------------------------**\n\n""**-----------------------☆☆---------------------------------**\n\n""**-------------------------☆----------------------------------**\n\n""**-----------------------☆☆----------------------------------**\n\n"); printf("================================================================================\n"); printf("請在0-5中選擇以回車鍵結(jié)束:\n\n"); scanf("%d",&j); switch(j) { case1: input();//調(diào)用輸入模塊 break; case2: system("cls"); print();//調(diào)用打印模塊 break; case3: search();//調(diào)用查找模塊 break; case4: paixu();//調(diào)用排序模塊 break; case5: dingpiao();//調(diào)用訂票模塊 break; case0:; break; } }while(j!=0);//判斷結(jié)束 printf("按任意鍵返回主界面\n"); system("cls"); zhujiemian();}//登錄函數(shù)結(jié)束voidloginflightu()//顧客登錄機票系統(tǒng){ intj; do { system("cls"); printf("★----------------您好,歡迎進入自動化飛機訂票系統(tǒng)!---★\n"); printf("================================================================================\n"); printf("**------------☆1.瀏覽航班信息☆-----------------------**\n\n""**--------☆2.查找航班信息-☆--------------------**\n\n""**-----------☆3.對航班按航班票價排序---☆-----------------------**\n\n""**--------------☆4.訂票信息-☆-------------------------**\n\n""**------------------☆0.退出-☆-----------------------------**\n\n""**-----------------------☆☆---------------------------------**\n\n""**-------------------------☆----------------------------------**\n\n""**-----------------------☆☆----------------------------------**\n\n"); printf("================================================================================\n"); printf("請在0-5中選擇以回車鍵結(jié)束:\n\n"); scanf("%d",&j); switch(j) { case1: system("cls"); print();//調(diào)用打印模塊 break; case2: search();//調(diào)用查找模塊 break; case3: paixu();//調(diào)用排序模塊 break; case4: dingpiao();//調(diào)用訂票模塊 break; case0:; break; } }while(j!=0);//判斷結(jié)束 printf("按任意鍵返回主界面\n"); system("cls"); zhujiemian();}//登錄函數(shù)結(jié)束voidinput()//輸入航班信息模塊,管理員操作{ inti=0,k=1; read(); printf("請依次輸入航班信息(航班號,起始站,終點站,起飛時間,機票數(shù),票價):\n\n");//打印提醒信息 printf("--------------------------------------------------------------------------\n");//fflush(stdin);while(k) { printf("請輸入航班號:\n"); scanf("%d",&fnew.num);//讀取航班號 i=0;//再次初始化i為0 //判斷航班與否已經(jīng)存在 while(i<m) { if(s[i].num==fnew.num) { printf("該航班已經(jīng)存在!\n請重新輸入:"); scanf("%d",&fnew.num); i=0; //continue; } else i++; } //經(jīng)循環(huán)對比后,i旳值仍和n相等,將新注冊旳信息加入數(shù)組末位 s[i].num=fnew.num; printf("請輸入起始站:\n"); scanf("%s",s[i].start);//讀取起始站 printf("請輸入終點站:\n"); scanf("%s",s[i].over);//讀取終點站 printf("請輸入時間:\n"); scanf("%s",s[i].time);//讀取時間 printf("請輸入余票數(shù)(機票數(shù)為0結(jié)束輸入):\n",m); scanf("%d",&s[i].count);//讀取機票數(shù) printf("請輸入機票票價:\n",m); scanf("%d",&s[i].prize);//讀取機票票價 m++;//所有航班信息個數(shù) //printf("第%d個信息已經(jīng)輸完與否繼續(xù)?按1-9任意數(shù)字繼續(xù),按0結(jié)束",m); //scanf("%d",&y); printf("與否繼續(xù)添加航班?是:選1,否:選0;"); scanf("%d",&k); if(k==0) { save();//將構(gòu)造體信息存盤 system("cls"); print();//輸出輸入旳航班信息 break; } }}voidsave()//航班信息保留模塊程序{ FILE*fp,*fp1;//定義文獻指針 if((fp=fopen("flight.txt","wb"))==NULL)//打開文獻并判斷與否出錯 { printf("創(chuàng)立文獻失敗!\n\n");//打印出錯提醒 getchar(); return; } if((fp1=fopen("howmanyflights.txt","wb"))==NULL)//打開文獻并判斷與否出錯 { printf("創(chuàng)立文獻失敗!\n\n");//打印出錯提醒 getchar(); return; } for(i=0;i<m;i++) if(fwrite(&s[i],sizeof(structair),1,fp)==0)//向文獻寫入數(shù)據(jù),并判斷與否出錯 printf("向文獻輸入數(shù)據(jù)失敗!\n\n"); fprintf(fp1,"%d",m); fclose(fp);//關(guān)閉文獻 fclose(fp1);//關(guān)閉文獻}voidread()//從文獻讀取航班信息模塊{ FILE*fp,*fp1;//定義文獻指針 fp=fopen("flight.txt","r");//system("cls");//清屏if(fp==NULL)//假如目前文獻不存在,提醒打開文獻失敗 { fp1=fopen("howmanyflights.txt","w+");//以寫方式打開 fprintf(fp1,"%d",0);//打開顧客文獻失敗,則輸入顧客個數(shù)0到fp1 fclose(fp1); printf("\n不存在flight.txt,正在創(chuàng)立!\n"); fp=fopen("flight.txt","a"); printf("創(chuàng)立完畢!\n"); system("cls"); read();//perror("Openfilefail");//getch(); } if((fp1=fopen("howmanyflights.txt","rb"))==NULL)//讀寫方式打開文獻,若文獻不存在,則m=0 { //printf("創(chuàng)立文獻失敗!\n\n");//打印出錯提醒 m=0; } else { fp1=fopen("howmanyflights.txt","r"); fscanf(fp1,"%d",&m);//讀取fp1中旳顧客個數(shù) } fclose(fp1); for(i=0;i<m;i++) { fread(&s[i],sizeof(structair),1,fp);//從文獻中讀取信息 } fclose(fp);//關(guān)閉文獻}voidprint()//屏幕打印航班信息模塊{ read();//調(diào)用讀取文獻函數(shù) if(m==0) printf("\n\n目前沒有航班信息!\n"); else { printf("航班信息如下:\n"); printf("航班號起始站終點站時間余票數(shù)票價\n"); for(i=0;i<m;i++) { printf(PRINT);//打印信息 } } printf("\n請按任意鍵回車鍵結(jié)束返回主菜單"); getchar(); getchar();}voidpaixu()//對所有航班按航班價格排序{ intj; structpai { intno; charname1[20]; charname2[20]; chartime[20]; intcount; intprize; }p[1];//臨時定義構(gòu)造體,作為排序時旳第三變量 read();//調(diào)用讀取信息函數(shù) for(j=0;j<(m-1);j++) { for(i=0;i<(m-(1+j));i++) { if(s[i].prize>s[i+1].prize)//按價格升序排列,p[0]為中間變量 { p[0].no=s[i].num;//替代航班號 strcpy(p[0].name1,s[i].start);//替代其始站 st
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026-2032年中國石英掩模版行業(yè)市場全景分析及投資機會研判報告
- 水庫管理人員培訓(xùn)課件
- 水庫供水知識課件
- 創(chuàng)業(yè)板基礎(chǔ)知識課件
- 消防安全黨校培訓(xùn)計劃
- 體制內(nèi)離職溝通話術(shù)
- 2026年財務(wù)稅務(wù)培訓(xùn)合同協(xié)議
- 科研經(jīng)驗分享心得
- 移動應(yīng)用開發(fā)流程及關(guān)鍵環(huán)節(jié)解析
- 2025湖北省大學(xué)生鄉(xiāng)村醫(yī)生專項計劃招聘386人備考題庫及一套完整答案詳解
- 2026海南交通投資控股公司秋招面筆試題及答案
- 2025年安徽理工大學(xué)馬克思主義基本原理概論期末考試模擬試卷
- 2025年大學(xué)大一(法學(xué))法理學(xué)試題及答案
- 膽囊癌課件教學(xué)課件
- 廣西2025年高等職業(yè)教育考試全區(qū)模擬測試 能源動力與材料 大類試題及逐題答案解說
- 2026江蘇省公務(wù)員考試公安機關(guān)公務(wù)員(人民警察)歷年真題匯編附答案解析
- 孕婦貧血教學(xué)課件
- 超市冷庫應(yīng)急預(yù)案(3篇)
- 5年(2021-2025)山東高考生物真題分類匯編:專題17 基因工程(解析版)
- 2025年10月自考00610高級日語(二)試題及答案
- 新華資產(chǎn)招聘筆試題庫2025
評論
0/150
提交評論