c語言實現(xiàn)機票管理系統(tǒng)源代碼教學(xué)內(nèi)容_第1頁
c語言實現(xiàn)機票管理系統(tǒng)源代碼教學(xué)內(nèi)容_第2頁
c語言實現(xiàn)機票管理系統(tǒng)源代碼教學(xué)內(nèi)容_第3頁
c語言實現(xiàn)機票管理系統(tǒng)源代碼教學(xué)內(nèi)容_第4頁
c語言實現(xiàn)機票管理系統(tǒng)源代碼教學(xué)內(nèi)容_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、/*1 、用戶和管理員及航班信息請以英文字母或數(shù)字輸入 */*2、管理員賬戶為:boss,密碼為:123。保存在txt文件中,需要修改請于程序中修改*/*3 、部分文件讀寫為二進制讀寫,所以打開文件時會看到亂碼*/#include #include #include #include#define N 1000 void zhujiemian();/ 主界面函數(shù) void verify();/ 用戶及管理員登錄選擇void loginmanager();/ 管理員登錄 void loginuser();/ 用戶登錄 void loginflightm();/ 管理員登錄機票系統(tǒng) void lo

2、ginflightu();/ 用戶登錄機票系統(tǒng) void creatfile();/ 創(chuàng)建用戶信息模塊 void saveuser();/ 用戶信息保存模塊程序 void input(); / 輸入航班信息 void print(); / 輸出航班信息 void save(); / 保存航班信息void read(); / 讀取航班信息 void paixu(); / 對所有航班按航班號排序 void search(); / 查找航班信息 void dingpiao(); / 訂票信息struct users / 管理員 /用戶信息結(jié)構(gòu)體,管理員可以修改航班信息 char Name20; /

3、管理員 / 用戶姓名char sexual10;/ 用戶性別char ps8;int age;long Number;int power;userN,up,mg;/up 體/ 用戶密碼/ 用戶年齡/ 用戶身份證號碼/power 為 1 是管理員登錄,為 0 是用戶登錄為鍵盤輸入用戶信息,userN為文件保存的用戶信息,mg為管理員結(jié)構(gòu)int n;/ 所有用戶個數(shù),初始化為 0 struct air / 航班信息結(jié)構(gòu)體int num;航班號char start20; 11 出發(fā)地char over20;/ 目的地char time10;時間int count; / 票數(shù)int prize; /

4、票價 sN,fnew;int i;int m=0; /所有航班個數(shù)PRINT定義#define%-d%12s%12s%10s%12d%1 Odn,si.num,si.start,si.over,si.time,si.count,si.prize 輸出格式void main()/ 主函數(shù) (zhujiemian();)void zhujiemian()/ 主界面函數(shù)intj;printf(#=#n);printf(#歡迎進入機票管理系統(tǒng)#n);printf(#1、登錄系統(tǒng)#n);printf(#2、新用戶注冊#n);printf(#0、退出#n);printf(#=#n);printf(請在1-

5、2中選擇以回車鍵結(jié)束:nn); scanf(%d,&j);switch(j)(case 1:verify();/進入機票系統(tǒng)break;case 2:creatfile();/進入用戶注冊系統(tǒng) break;case 0:;break;)void verify()/驗證用戶及管理員信息模塊intj;system(cls);printf(#=#n);printf(#1、管理員登錄#n);printf(#2、用戶登錄#n);printf(#0、返回主界面#n);printf(#=#n);scanf(%d,&j);switch(j)case 1:loginmanager();/進入管理員登錄界面 br

6、eak;case 2:loginuser();/進入用戶登錄界面break;case 0:system(cls);zhujiemian(); 進入主界面 break; /* 管理員登錄確定函數(shù) */ void loginmanager()FILE * fp=NULL;/定義文件指針char DataFile20=manager.txt;/存儲管理員信息的文件名int i=0,j=1;char relogin;/是否重新登錄int success=0;登錄成功的標(biāo)志printf(n-管理員登錄-n);fp=fopen(DataFile,r);if(fp=NULL)如果當(dāng)前文件不存在,初始化根用戶

7、名為boss,密碼為123,權(quán)限為管理員printf(首次使用該系統(tǒng)!n);printf(管理員賬戶為:boss密碼為:123n);fp=fopen(DataFile,a);以追加方式打開文件user0.Number=0;strcpy(user0.Name,boss);strcpy(user0.sexual,male);user0.age=22;user0.power=1;strcpy(user0.ps,123);fwrite(&user0,sizeof(user),1,fp);fclose(fp);elsefclose(fp);again:printf( 請輸入管理員姓名 :);scanf(

8、%s,up.Name);/ 輸入用戶名up.Name19=0;printf( 請輸入管理員密碼:);fflush(stdin);for(i=0;i7;i+)/ 輸入密碼,以 *在屏幕顯示 up.psi=getch();up.psi+1=0;/ 字符要以 0 結(jié)尾if(up.psi=b) i-;up.psi=0;/ 清除前一個字符i-;/ 接收前一個字符 printf(b );printf(b);continue; if(up.psi=r)up.psi=0;break; printf(*);fp=fopen(DataFile,rt);if(fp=NULL) / 打開文件失敗時提示 printf(

9、n 打開 %s 失敗 ! 按任意鍵結(jié)束程序n,DataFile);perror(Open file fail);getchar(); return;if(fp=fopen(manager.txt,r)=NULL)/ 打開文件,并判斷是否出錯printf(n 出錯,請檢查文件是否存在,按任意鍵返回主菜單n);/ 打印出錯提示getchar(); elsefread(&mg,sizeof(struct users),1,fp);/ 從文件中讀取信息fclose(fp);/ 關(guān)閉文件if(strcmp(mg.Name,up.Name)=0&strcmp(mg.ps,up.ps)=0)success=

10、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();goto again;elseverify();exit(0); void loginuser() /*用戶登錄函數(shù)*/FILE *fp=NULL,*fp1;/ 定義文件指針char DataFile

11、20=yonghu.txt;/ 存儲管理員信息的文件名int i=0,j=0;char relogin;/是否重新登錄int success=0;/登錄成功的標(biāo)志printf(n- 用戶登錄-n);fp=fopen(DataFile,r);/ 讀取文件中數(shù)據(jù)if(fp1=fopen(howmanyusers.txt,a)=NULL)/ 讀寫方式打開文件,若文件不存在,則 n=0/printf( 創(chuàng)建文件失敗!nn);/ 打印出錯提示n=0;/getchar();/continue;elsefp1=fopen(howmanyusers.txt,r);fscanf(fp1, %d,&n);/ 讀取

12、 fp1 中的用戶個數(shù)fclose(fp1);if(fp=fopen(yonghu.txt,r)=NULL)/ 打開文件,并判斷是否出錯fp1=fopen(howmanyusers.txt,w+);/ 以寫方式打開fprintf(fp1,%d,0);/ 打開用戶文件失敗,則輸入用戶個數(shù) 0 到 fp1fclose(fp1);printf(n目前沒有用戶信息,請按ENTER返回主菜單先進行注冊!n);getchar();getchar();system(cls);zhujiemian();for(i=0;in;i+)fread(&useri,sizeof(struct users),1,fp);

13、/ 從文件中讀取信息fclose(fp);/ 關(guān)閉文件/ 輸入數(shù)據(jù)與文件中用戶比對again:printf( 請輸入用戶姓名 :);scanf(%s,up.Name);/ 輸入用戶名up.Name19=0;printf( 請輸入用戶密碼:);fflush(stdin);for(i=0;i7;i+)/ 輸入密碼,以 *在屏幕顯示up.psi=getch();up.psi+1=0;/ 字符要以 0 結(jié)尾if(up.psi=b)i-;up.psi=0;/ 清除前一個字符i-;/ 接收前一個字符printf(b );printf(b);continue;if(up.psi=r)up.psi=0;bre

14、ak;printf(*);for(i=0;in;i+) / 對比用戶名和密碼,進行登錄if(strcmp(useri.Name,up.Name)=0&strcmp(useri.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|relo

15、gin=Y)getchar();goto again;elseverify();exit(0);void saveuser(struct users)/ 用戶信息保存模塊程序FILE *fp,*fp1;/ 定義文件指針if(fp=fopen(yonghu.txt,a)=NULL)/ 打開文件并判斷是否出錯printf( 創(chuàng)建文件失敗!nn);/ 打印出錯提示getchar();return;if(fp1=fopen(howmanyusers.txt,w+)=NULL)/ 打開文件并判斷是否出錯printf( 創(chuàng)建文件失敗!nn);/ 打印出錯提示getchar();return;for(i=0

16、;in;i+)if(fwrite(&useri,sizeof(struct users),1,fp)=0)/ 向文件寫入數(shù)據(jù),并判斷是否出錯printf( 向文件輸入數(shù)據(jù)失敗!nn);fprintf(fp1,%d,n);/ 輸入用戶個數(shù)到 fp1fclose(fp);/ 關(guān)閉文件fclose(fp1);/ 關(guān)閉文件void creatfile()/ 增加用戶信息模塊FILE *fp=NULL,*p=NULL,*fp1;char DataFile20=yonghu.txt;/ 存儲用戶信息的文件名/int a100;int i=0,k=1,count=0;fp=fopen(DataFile,r)

17、;system(cls);/ 清屏if(fp=NULL)/ 如果當(dāng)前文件不存在,提示打開文件失敗fp1=fopen(howmanyusers.txt,w+);/ 以寫方式打開 fprintf(fp1,%d,0);/ 打開用戶文件失敗,則輸入用戶個數(shù)0 到 fp1fclose(fp1);printf(n 不存在 s,正在創(chuàng)建!n,DataFile);fp=fopen(DataFile,a);creatfile();if(fp1=fopen(howmanyusers.txt,a)=NULL)/ 讀寫方式打開文件,若文件不存在,則n=0n=0;elsefp1=fopen(howmanyusers.t

18、xt,r);fscanf(fp1, %d,&n);/ 讀取 fp1 中的用戶個數(shù)fclose(fp1);for(i=0;in;i+)fread(&useri,sizeof(struct users),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/ 判斷身份證號是否存在wh

19、ile(in)if(useri.Number=up.Number)printf( 該身份證號碼已被使用過!n 請重新輸入身份證號: );scanf(%ld,&up.Number);i=0;/continue;elsei+;/ 經(jīng)循環(huán)對比后, i 的值仍和 n 相等,將新注冊的信息加入數(shù)組末位useri.Number=up.Number;printf( 姓名 :);scanf(%s,&useri.Name);useri.Name19=0;printf( 性別 :);scanf(%s,&useri.sexual);printf( 用戶密碼 :);scanf(%s,&useri.ps);printf

20、( 年齡 :);scanf(%d,&useri.age);n+;/ 用戶數(shù)目增加printf( 是否繼續(xù)注冊?是:選 1,否:選 0 ; ); scanf(%d,&k);saveuser(user);/ 保存用戶信息fclose(fp);/ 在屏幕上顯示文件內(nèi)容system(cls);printf( 數(shù)據(jù)已經(jīng)成功保存到 %s 中 n,DataFile);getchar();printf( 按任意鍵返回主界面! n);getchar();system(cls);zhujiemian();/ 返回主界面 void loginflightm()/ 管理員登錄機票系統(tǒng)int j;dosystem(cl

21、s);printf( 您好,歡迎進入自動化飛機訂票系統(tǒng)! - n);printf(= =n);printf( * 1.輸入航班信息 *nn * 2. 瀏 覽 航 班 信 息 *nn * 3. 查 找 航班 信 息- *nn * - 4.對航班按航班票價排序-*nn” * 5.訂 票信 息-*nn* 0.退出-*nn*nn *nn*nn);printf(= =n);printf(請在0-5中選擇以回車鍵結(jié)束:nn);scanf(%d,&j);switch(j)(input();/調(diào)用輸入模塊break;system(cls);print();/調(diào)用打印模塊break;search();調(diào)用查找模

22、塊break;paixu();/調(diào)用排序模塊break;dingpiao();/調(diào)用訂票模塊break;case 0:;break;while(j!=0); / 判斷結(jié)束printf(按任意鍵返回主界面n);system(cls);zhujiemian();/登錄函數(shù)結(jié)束void loginflightu()/用戶登錄機票系統(tǒng)(int j;do(system(cls);printf( 您好,歡迎進入自動化飛機訂票系統(tǒng)!-n);printf(= =n);printf( * - 1.瀏覽航班信 息*nn* 2.查找航班信息-*nn * 3.對航班按航班票價排序 -*nn * - 4.訂票信息-*n

23、n * 0.退出- -*nn *nn*nn);*nn *printf(= =n);printf( 請在 0-5 中選擇以回車鍵結(jié)束: nn);scanf(%d,&j);switch(j)system(cls);print();/ 調(diào)用打印模塊break;search();/ 調(diào)用查找模塊break;paixu();/ 調(diào)用排序模塊break;dingpiao();/ 調(diào)用訂票模塊break;case 0:;break;while(j!=0); / 判斷結(jié)束printf( 按任意鍵返回主界面n);system(cls);zhujiemian();/ 登錄函數(shù)結(jié)束void input()/ 輸入航

24、班信息模塊,管理員操作int i=0,k=1;read();printf( 請依次輸入航班信息 (航班號, 起始站, 終點站, 起飛時間, 機票數(shù), 票價) :nn);/ 打印提示信息printf(n);/fflush(stdin);while(k)printf( 請輸入航班號:n);scanf(%d,&fnew.num); / 讀取航班號i=0;/ 再次初始化 i 為 0/ 判斷航班是否已經(jīng)存在while(im)if(si.num=fnew.num)printf( 該航班已經(jīng)存在!n 請重新輸入: );scanf(%d,&fnew.num);i=0;/continue;elsei+;/ 經(jīng)循

25、環(huán)對比后, i 的值仍和 n 相等,將新注冊的信息加入數(shù)組末位si.num=fnew.num;printf( 請輸入起始站:n);scanf(%s,si.start);/ 讀取起始站printf( 請輸入終點站:n);scanf(%s,si.over);/ 讀取終點站printf( 請輸入時間 :n);scanf(%s,si.time);/ 讀取時間printf( 請輸入余票數(shù)(機票數(shù)為 0 結(jié)束輸入) :n,m);scanf(%d,&si.count);/ 讀取機票數(shù)printf( 請輸入機票票價:n,m);scanf(%d,&si.prize);/ 讀取機票票價m+; / 所有航班信息個數(shù)

26、/ 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();/ 將結(jié)構(gòu)體信息存盤system(cls);print();/ 輸出輸入的航班信息break; void save()/ 航班信息保存模塊程序FILE *fp,*fp1;/ 定義文件指針if(fp=fopen(flight.txt,wb)=NULL)/ 打開文件并判斷是否出錯 printf( 創(chuàng)建文件失敗!nn);/ 打印出錯提示getchar();return;if

27、(fp1=fopen(howmanyflights.txt,wb)=NULL)/ 打開文件并判斷是否出錯 printf( 創(chuàng)建文件失敗!nn);/ 打印出錯提示getchar();return;for(i=0;im;i+)if(fwrite(&si,sizeof(struct air),1,fp)=0)/ 向文件寫入數(shù)據(jù),并判斷是否出錯printf( 向文件輸入數(shù)據(jù)失敗!nn);fprintf(fp1,%d,m);fclose(fp);/ 關(guān)閉文件fclose(fp1);/ 關(guān)閉文件 void read()/ 從文件讀取航班信息模塊FILE *fp,*fp1;/ 定義文件指針 fp=fopen

28、(flight.txt,r);/system(cls);/ 清屏 if(fp=NULL)/ 如果當(dāng)前文件不存在,提示打開文件失敗 fp1=fopen(howmanyflights.txt,w+);/ 以寫方式打開 fprintf(fp1,%d,0);/ 打開用戶文件失敗,則輸入用戶個數(shù)0 到 fp1fclose(fp1); printf(n 不存在flight.txt ,正在創(chuàng)建!n);fp=fopen(flight.txt,a); printf( 創(chuàng)建完成! n); system(cls); read(); /perror(Open file fail); /getch(); if(fp1=

29、fopen(howmanyflights.txt,rb)=NULL)/ 讀寫方式打開文件,若文件不存在,則 m=0/printf( 創(chuàng)建文件失敗!nn);/ 打印出錯提示m=0;elsefp1=fopen(howmanyflights.txt,r);fscanf(fp1, %d,&m);/ 讀取 fp1 中的用戶個數(shù)fclose(fp1);for(i=0;im;i+)fread(&si,sizeof(struct air),1,fp);/ 從文件中讀取信息fclose(fp);/ 關(guān)閉文件void print()/ 屏幕打印航班信息模塊read();/ 調(diào)用讀取文件函數(shù)if(m=0)print

30、f(nn 目前沒有航班信息! n);else票價 n);printf( 航班信息如下: n);printf( 航班號起始站終點站時間 余票數(shù)for(i=0;im;i+) printf(PRINT);/ 打印信息printf(n 請按任意鍵回車鍵結(jié)束返回主菜單);getchar();getchar(); void paixu()/ 對所有航班按航班價格排序int j;struct paiint no;char name120;char name220;char time20;int count;int prize;p1;/ 臨時定義結(jié)構(gòu)體,作為排序時的第三變量read();/ 調(diào)用讀取信息函數(shù)for(j=0;j(m-1);j+)for(i=0;isi+1.prize) / 按價格升序排列, p0 為中間變量 p0.no=si.num;/ 替換航班號strcpy(1,si.start);/ 替換其始站 strcpy(2,si.over);/ 替換終點站 strcpy(p0.time,si.time);/ 替換時間 p0.count=si.count;/ 替換

溫馨提示

  • 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. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論