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

下載本文檔

版權(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>

#defineN1000

voidzhujiemian();//主界面函數(shù)

voidverify();//用戶及管理員登錄選擇

voidloginmanager();//管理員登錄

voidloginuser();//用戶登錄

voidloginflightm();//管理員登錄機票系統(tǒng)

voidloginflightu();//用戶登錄機票系統(tǒng)

voidcreatfile();//創(chuàng)建用戶信息模塊

voidsaveuser();//用戶信息保存模塊程序

voidinput();//輸入航班信息

voidprint();//輸出航班信息

voidsave();//保存航班信息

voidread();//讀取航班信息

voidpaixu();//對所有航班按航班號排序

voidsearch();//查找航班信息

voiddingpiao();//訂票信息

structusers//管理員/用戶信息結(jié)構(gòu)體,管理員可以修改航班信息

{

charName[20];//管理員/用戶姓名

charsexual[10];//用戶性別

charps[8];

intage;

longNumber;

intpower;

//用戶密碼

//用戶年齡

//用戶身份證號碼

//power為1是管理員登錄,為

0是用戶登錄

}user[N],up,mg;//up為鍵盤輸入用戶信息,

mg為管理員結(jié)構(gòu)體

intn;//所有用戶個數(shù),初始化為0

structair//航班信息結(jié)構(gòu)體

{

user[N]為文件保存的用戶信息,

intnum;

charstart[20];

charover[20];

chartime[10];

intcount;

intprize;

}s[N],fnew;

//航班號

//出發(fā)地

//目的地

//時間

//票數(shù)

//票價

inti;

#\n");

#\n");

#\n");

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("#

#\n");

printf("#

printf("#

printf("#

歡迎進入機票管理系統(tǒng)

1、登錄系統(tǒng)

2、新用戶注冊

0、退出

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("#

printf("#

printf("#

1、管理員登錄

2、用戶登錄

0、返回主界面

#\n");

#\n");

#\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)

printf("管理員賬戶為:

!\n");

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';//字符要以

if(up.ps[i]=='\b')

*在屏幕顯示

'\0'結(jié)尾

{

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=0;

//getchar();

//continue;

}

!\n\n");//打印出錯提示

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';//字符要以

if(up.ps[i]=='\b')

*在屏幕顯示

'\0'結(jié)尾

{

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)建文件失敗

getchar();

return;

}

!\n\n");//打印出錯提示

for(i=0;i<n;i++)

{

if(fwrite(&user[i],sizeof(structusers),1,fp)==0)//向文件寫入

數(shù)據(jù),并判斷是否出錯

{

printf("向文件輸入數(shù)據(jù)失敗

}

}

fprintf(fp1,"%d",n);//輸入用戶個數(shù)到fclose(fp);//關(guān)閉文件fclose(fp1);//關(guān)閉文件

}

voidcreatfile()//增加用戶信息模塊

!\n\n");

fp1

{

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)成功保存到

getchar();

printf("按任意鍵返回主界面!

getchar();system("cls");zhujiemian();//返回主界面

}

%s中\(zhòng)n",DataFile);

\n");

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("按任意鍵返回主界面

system("cls");

zhujiemian();

\n");

}//登錄函數(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ù)

0

//printf("第%d個信息已經(jīng)輸完是否繼續(xù)?按1-9任意數(shù)字繼續(xù),按

結(jié)束",m);

//scanf("%d",&y);

printf("是否繼續(xù)添加航班?是:選1,否:選0;");

scanf("%d",&k);

if(k==0)

{

save();//將結(jié)構(gòu)體信息存盤

system("cls");

print();//輸出輸入的航班信息

break;

}

}

}

voidsave()//航班信息保存模塊程序

{

FILE*fp,*fp1;//定義文件指針

if((fp=fopen("flight.txt","wb"))==NULL)//打開文件并判斷是否出錯

{

printf("創(chuàng)建文件失敗

getchar();

return;

}

!\n\n");//打印出錯提示

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)建文件失敗

m=0;

}

!\n\n");//打印出錯提示

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目前沒有航班信息!

else

{

printf("航班信息如下:

\n");

起始站

printf("航班號

票價\n");

for(i=0;i<m;i++)

{

printf(PRINT);//打印信息}

}

\n");

終點站

時間

余票數(shù)

printf("\n請按任意鍵回車鍵結(jié)束返回主菜單

getchar();

getchar();

}

voidpaixu()//對所有航班按航班價格排序

{

intj;

structpai

{

intno;

charname1[20];

charname2[20];

chartime[20];

intcount;

intprize;

}p[1];//臨時定義結(jié)構(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);//替換其始站

strcpy(p[0].name2,s[i].over);//替換終點站

strcpy(p[0]

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論