# include & ltiostream & gt
使用命名空間std
# include & ltwindows.h & gt
#define cls() ( system( "cls "))
const int MaxNum = 101;
const int num = 50
typedef結構席位
{
int Seat _ ID
bool isBook
char Book _ Name[num];
char Booker _ ID[num];
};
Typedef結構FlightInfo //航班信息
{
char Start _ pos[num];
char End _ pos[num];
char Flight _ ID[num];
char Flight _ Time[num];
seat seat info[MaxNum];
int Seat _ Sum
int Remain _ Num
int Leave _ Num
} ;
const int PlaneNum = 12;//總計***12架;
//int seat num;
Flight info Flight[MaxNum];
int Flight _ Num = 0;
void _ 1 _ flight info();
void Load _ Flight();
void Add _ Flight();
void Del _ Flight();
void _ 1 _ flight info _ Enter();
void _ 6 _ Exit _ System();
void Flight _ Print();
void Add _ Book();
void Del _ Book();
void搜索_菜單();
void commnd _ Deal(int);
void Init(整數)
{
for(int j = 1;j & lt=航班[編號]。Seat _ Sumj ++)
{
航班[編號]。sea info[j]。seat _ ID = j;
航班[編號]。sea info[j]。isBook = false
Strcpy(航班號)。sea info[j]。book _ name,“無”);
Strcpy(航班號)。sea info[j]。Booker _ ID,"無");
}
}
void Enter_Error()
{
cls();
printf(" \ n \ n \ t命令是錯誤!\ n \ n \ t \ t \ t ");
系統(“暫停”);
}
無效菜單( )
{
int commond
load _ Flight();
printf(" \ n \ n \ t \ t \ tair craft booking system \ n \ n ");
printf(" \ n \ t \ t * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n \ n ");
Printf("\t\t1。輸入航班信息2。輸出航班信息\ n \ n ");
Printf("\t\t3。查找航班信息。預訂\ n \ n ");
Printf("\t\t5。刪除預訂保留6。退出系統\ n \ n ");
printf(" \ t \ t * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n \ n ");
printf(" \ t \ t輸入所需的命令:");
scanf( "%d ",& ampcommond);
commond _ Deal(commond);
}
void Commond_Deal( int commond)
{
cls();
開關(普通)
{
案例1:_ 1 _ flight info();打破;
案例二:Flight _ Print();打破;
案例三:Search _ Menu();打破;
案例四:Add _ Book();打破;
案例五:Del _ Book();打破;
案例6:_ 6 _ Exit _ System();打破;
}
}
void _1_FlightInfo()
{
char cmd[10];
cls();
printf(" \ n \ n \ t \ t = = = = = = = =航班信息= = = = = = = = = = = = = \ n ");
printf(" \ t \ t \ t input(back)returns \ n \ n ");
Printf ("\ t \ t \ tEnter (go)輸入信息輸入\ n \ n \ t \ tEnter命令:");
scanf( "%s ",cmd);
如果(!strcmp( cmd," back "){ cls();menu();}
else if(!strcmp( cmd," go "){ cls();_ 1 _ flight info _ Enter();}
其他
{
enter _ Error();
_ 1 _ flight info();
}
}
void _1_FlightInfo_Enter()
{
int cmd
Printf ("\ n \ n \ n \ t \ t = = 1。添加航班= = \ n \ n ");
Printf ("\ n \ t \ t = = 2。刪除航班= = = \ n \ n ");
Printf ("\ n \ t \ t = = 3。主菜單= = = \ n \ n \ n \ n \ t \輸入命令:");
scanf( "%d ",& ampcmd);
cls();
開關(cmd)
{
案例1:Add _ Flight();打破;
案例二:Del _ Flight();打破;
案例三:Menu();打破;
默認值:Enter _ Error();_ 1 _ flight info _ Enter();打破;
}
}
void Save_Flight()
{
FILE * fp
fp = fopen( "Flight.txt "," w ");
if( fp == NULL)
{
printf("文件打開錯誤!\ n ");
系統(“暫停”);
退出(1);
}
fprintf( fp," %d ",Flight _ Num);
int I = 0;
while(我& lt=航班編號)
{
fprintf( fp," % s % s % s % d % d % d \ n ",Flight[ i ]。航班ID,航班[ i ]。Start_pos,Flight[ i ]。End_pos,航班[ i ]。航班時間,
航班[ i ]。Seat_Sum,航班[ i ]。保持數量,航班[ i ]。leave _ Num);
for(int j = 1;j & lt= Flight[ i ]。Seat _ Sumj ++)
{
fprintf(fp," %d %d %s %s\n ",Flight[ i ]。sea info[j]。Seat_ID,航班[ i ]。sea info[j]。isBook,Flight[ i ]。sea info[j]。Book_Name
航班[ i ]。sea info[j]。Booker _ ID);
}
i++;
}
fclose(FP);
}
void Add_Flight()
{
FlightInfo信息;
char cmd
Printf ("\ n \ t \ t = =航班信息= = = \ n \ n ");
Printf("現有航班ID:\ n ");
for(int k = 0;k & lt航班號;k ++)
{
printf(" % s % s-& gt;%s %s \n ",航班[ k ]。航班ID,航班[ k ]。Start_pos,航班[ k ]。End_pos,航班[ k ]。航班_時間);
}
printf(" \ t \ t \ t輸入出發地:");
scanf( "%s ",信息。start _ pos);
printf(" \ n \ t \ t \ t輸入目標:");
scanf( "%s ",信息。end _ pos);
printf(" \ n \ t \ t \ t輸入航班號:");
scanf( "%s ",信息。flight _ ID);
printf(" \ n \ t \ t \ t輸入飛機座位數:");
scanf( "%d ",& amp信息。seat _ Sum);
信息。Remain_Num = info。Seat _ Sum信息。leave _ Num = 0;
printf(" \ n \ t \ t \ t輸入出發時間:");
scanf( "%s ",信息。航班_時間);
printf(" \ N \ t \ t \ t是否要保存該航班(Y/N)?") ;
getchar();
scanf( "%c ",& ampcmd);
if(cmd = = ' N ' | | cmd = = ' N ')_ 1 _ flight info _ Enter();
else if ( cmd == 'Y'|| cmd == 'y ')
{
Flight[Flight _ num++]= info;
init(Flight _ Num-1);
save _ Flight();
printf(" \ N \ N \ t \ t \ t是否要添加更多航班(Y|N)?") ;
getchar();
scanf( "%c ",& ampcmd);
cls();
if(cmd = = ' Y ' | | cmd = = ' Y ')Add _ Flight();
else if(cmd = = ' N ' | | cmd = = ' N ')Menu();
其他
{
enter _ Error();
add _ Flight();
}
}
其他
{
enter _ Error();
add _ Flight();
}
}
void Flight_Print()
{
if(飛行次數== 0)
{
Printf("沒有航班信息!\ n ");
系統(“暫停”);
cls();
menu();
}
for(int I = 0;我& lt航班號;i ++)
{
Printf("航班號:%s(起點)% s-->(終點)% s出發時間:% s \ n ",航班號[i]。航班ID,航班[i]。start _ POS,flight [i]。end _ POS,航班[i]。航班_時間);
Printf("航班%s的座位總數:% d \ n ",航班[i]。航班ID,航班[i]。seat _ sum);
for(int j = 1;j & lt= Flight[ i ]。Seat _ Sumj ++)
{
printf("-& gt;座位ID: %d是否出售%s預訂者姓名%s預訂者ID% s \ n ",航班[i]。sea info[j]。Seat _ ID
(航班[ i ]。sea info[j]。isBook == true)?“已預訂”:“未預訂”,
航班[ i ]。sea info[j]。Book_Name,Flight[ i ]。sea info[j]。Booker _ ID);
如果(j!= Flight[ i ]。seat _ Sum)printf(" | \ n ");
}
printf(" \ n剩余票數:%d剩余票數:% d \ n ",航班[i]。離開編號,航班[i]。剩余_數量);
}
char cmd[num];
Printf("回車返回:");
scanf( "%s ",cmd);
if( strcmp ( cmd," back ")= = 0){ cls();menu();}
}
void Del_Flight()
{
字符id[數字];
char cmd
printf(" \ n \ t \ t = = Delete flight = = \ n \ n ");;
Printf("現有航班ID:\ n ");
for(int k = 0;k & lt航班號;k ++)
{
printf(" % s % s-& gt;%s %s \n ",航班[ k ]。航班ID,航班[ k ]。Start_pos,航班[ k ]。End_pos,航班[ k ]。航班_時間);
}
printf(" \ n \ n輸入要刪除的航班號(回車):");
scanf( "%s ",id);
if( strcmp( id," back ")= = 0){ cls();_ 1 _ flight info _ Enter();} ;
for(int I = 0;我& lt航班號;i ++)
{
if( strcmp( id,Flight[ i ])。航班ID ) == 0)
{
cls();
Printf ("\ n \ n \ n \ t \ t您確定要刪除嗎(Y/N)?") ;
getchar();
scanf( "%c ",& ampcmd);
if ( cmd == 'y' || 'Y ')
{
for(int j = I+1;j & lt航班號;j ++)
航班[ j - 1 ] =航班[j];
航班編號-;
save _ Flight();
printf(" \ n是否要繼續刪除?(Y | N)");
getchar();
scanf( "%c ",& ampcmd);
cls();
if(cmd = = ' Y ' | | cmd = = ' Y ')Del _ Flight();
else Menu();
}
else if(cmd = = ' N ' | | ' N '){ cls();del _ Flight();}
其他
{
cls();
enter _ Error();
del _ Flight();
}
}
}
}
void Add_Book()
{
char cmd[數字],name[數字],id[數字];
char ch
int I;
printf(" \ n \ n \ t \ t = = booking system = = = \ n \ n ");
Printf("現有航班ID:\ n ");
for(int k = 0;k & lt航班號;k ++)
{
printf(" % s % s-& gt;%s %s \n ",航班[ k ]。航班ID,航班[ k ]。Start_pos,航班[ k ]。End_pos,航班[ k ]。航班_時間);
}
Printf("輸入要預訂的航班(回車返回):");
scanf( "%s ",cmd);
if( strcmp( cmd," back ")= = 0){ cls();menu();}
for(I = 0;我& lt航班號;i ++)
{
if ( strcmp( cmd,Flight[ i ])。航班ID ) == 0)
{
cls();
Printf( "\n\n\t\t%s航班信息\n ",航班[ i ]。flight _ ID);
for(int j = 1;j & lt= Flight[ i ]。Seat _ Sumj ++)
{
printf("-& gt;座位ID: %d是否出售%s預訂者姓名%s預訂者ID% s \ n ",航班[i]。sea info[j]。Seat _ ID
(航班[ i ]。sea info[j]。isBook == true)?“已預訂”:“未預訂”,
航班[ i ]。sea info[j]。Book_Name,Flight[ i ]。sea info[j]。Booker _ ID);
如果(j!= Flight[ i ]。seat _ Sum)printf(" | \ n ");
}
printf(" \ n剩余票數:%d剩余票數:% d \ n ",航班[i]。離開編號,航班[i]。剩余_數量);
}
轉到結尾;
}
cls();
Printf("航班沒找到!\ n ");
cls();
add _ Book();
結束:;
Printf("要不要訂票(Y|N)?") ;
getchar();
scanf( "%c ",& ampch);
cls();
if ( ch == 'y' || ch =='Y ')
{
如果(航班[I]。remain _ num = = 0){ printf(" \ n \ ntic kets已售完!") ;系統(“暫停”);add _ Book();}
printf(" \ n \ n \ t \ t輸入預訂人的姓名:");
scanf( "%s ",名稱);
printf(" \ n \ n \ t \ t輸入持票人的身份證號碼:");
scanf( "%s ",id);
int j;
for(j = 1;j & lt= Flight[ i ]。Seat _ Sumj ++)
{
如果(!航班[ i ]。sea info[j]。isBook)
{
航班[ i ]。sea info[j]。isBook = true
航班[ i ]。leave _ num++;
航班[ i ]。remain _ Num-;
strcpy(航班[ i ])。sea info[j]。Book_Name,Name);
strcpy(航班[ i ])。sea info[j]。Booker_ID,ID);
打破;
}
}
save _ Flight();
Printf("已預訂!\n出發時間:%s航班%s座位%d預訂者姓名:%s預訂者身份證號:%s”,
航班[ i ]。航班時間,航班[ i ]。航班ID,航班[ i ]。sea info[j]。Seat_ID
航班[ i ]。sea info[j]。Book_Name,Flight[ i ]。sea info[j]。Booker _ ID);
printf(" \ t \ t是否要繼續(Y/N);") ;
系統(“暫停”);
cls();
menu();
}
else if(ch = = ' N ' | | ch = = ' N ')Add _ Book();
}
void Del_Book()
{
char cmd[數字],id[數字],ch;
cls();
Printf ("\ n \ n \ t \ t刪除預訂預約");
printf(" \ n現有航班ID:\ n ");
for(int k = 0;k & lt航班號;k ++)
{
printf(" % s % s-& gt;%s %s \n ",航班[ k ]。航班ID,航班[ k ]。Start_pos,航班[ k ]。End_pos,航班[ k ]。航班_時間);
}
Printf ("\ n \ n \ t \ t輸入已刪除的航班號:");
scanf( "%s ",cmd);
printf(" \ n \ n \ t \ t \ t輸入持票人的身份證號碼:");
scanf( "%s ",id);
for(int I = 0;我& lt航班號;i ++)
{
if ( strcmp( cmd,Flight[ i ])。航班ID ) == 0)
{
for(int j = 1;j & lt= Flight[ i ]。Seat _ Sumj ++)
if( strcmp( id,Flight[ i ])。sea info[j]。Book_Name ) == 0)
{
printf(" \ n出發時間:%s航班%s座位%d預訂者姓名:%s預訂者身份證號碼:%s ",
航班[ i ]。航班時間,航班[ i ]。航班ID,航班[ i ]。sea info[j]。Seat_ID
航班[ i ]。sea info[j]。Book_Name,Flight[ i ]。sea info[j]。Booker _ ID);
printf(" \ N是否要刪除預訂:(Y|N)?") ;
getchar();
scanf( "%c ",& ampch);
if( ch == 'y' || ch == 'Y ')
{
航班[ i ]。remain _ num++;
航班[ i ]。leave _ Num-;
航班[ i ]。sea info[j]。isBook = false
Strcpy(航班[i])。sea info[j]。book _ name,“無”);
Strcpy(航班[i])。sea info[j]。Booker _ id,"無");
save _ Flight();
Printf("刪除!\ n ");
cls();
menu();
}
}
Printf ("\ n \ n \ t \ t找不到ID號!\ n ");
系統(“暫停”);
del _ Book();
}
}
Printf ("\ n \ n \ t \ t沒有這樣的航班!\ n ");
系統(“暫停”);
del _ Book();
}
void Disp_Empty()
{
for(int I = 0;我& lt航班號;i ++)
{
printf(" \ n \ n \ t航班%s:% d \ n "上的可用座位數,航班[i]。航班ID,航班[i]。remain _ num);
}
}
void Disp_EmptyInfo()
{
for(int I = 0;我& lt航班號;i ++)
{
Printf ("\ n \ n \ tFlight %s \n ",Flight[ i ]。flight _ ID);
for(int j = 1;j & lt= Flight[ i ]。Seat _ Sumj ++)
{
如果(!航班[ i ]。sea info[j]。isBook)
Printf("座位% d \ n ",航班[i]。sea info[j]。seat _ id);
}
}
}
void Disp_Booked()
{
for(int I = 0;我& lt航班號;i ++)
{
Printf ("\ n \ n \ tFlight %s \n ",Flight[ i ]。flight _ ID);
for(int j = 1;j & lt= Flight[ i ]。Seat _ Sumj ++)
{
如果(航班[ i ]。sea info[j]。isBook)
Printf("座位%d預訂者姓名:%s預訂者身份證號:% s \ n ",航班號[i]。座位信息[j]。seat _ id
航班[ i ]。sea info[j]。Book_Name,Flight[ i ]。sea info[j]。Booker _ ID);
}
}
}
void Disp_Time()
{
for(int I = 0;我& lt航班號;i ++)
{
printf(" \ n \ n \ t航班%s出發時間:% s \ n ",航班[i]。航班ID,航班[i]。航班_時間);
}
}
void搜索_菜單( )
{
int cmd
Printf ("\ n \ n \ n \ t \ t = =查找航班信息= = ");
Printf( "\n\n\t\t\t1。顯示空座位數2。顯示空座信息”);
Printf( "\n\n\t\t\t3。顯示預訂信息4。出發時間”);
Printf( "\n\n\t\t\t0。主菜單”);
Printf ("\ n \ n \ t \ t輸入所需的命令:");
scanf( "%d ",& ampcmd);
cls();
開關(cmd)
{
case 1:Disp _ Empty();打破;
案例二:Disp _ empty info();打破;
案例三:Disp _ Booked();打破;
情況四:Disp _ Time();打破;
案例0:Menu();打破;
}
char ch
Printf("是否要繼續搜索(Y/N)?") ;
getchar();
scanf( "%c ",& ampch);
cls();
if(ch = = ' Y ' | | ' Y ')Search _ Menu();
else Menu();
}
void Load_Flight()
{
FILE * fp
fp = fopen( "Flight.txt "," r ");
if ( fp == NULL)
{
fp = fopen( "Flight.txt "," w ");
menu();
}
fscanf( fp," %d ",& ampflight _ Num);
int I = 0;
while(我& lt=航班編號)
{
fscanf( fp," %s %s %s %s %d %d %d\n ",Flight[ i ]。航班ID,航班[ i ]。Start_pos,Flight[ i ]。End_pos,航班[ i ]。航班時間,
& amp航班[ i ]。座位總數& amp航班[ i ]。保持數量。航班[ i ]。leave _ Num);
for(int j = 1;j & lt= Flight[ i ]。Seat _ Sumj ++)
{
fscanf(fp," %d %d %s %s\n ",& amp航班[ i ]。sea info[j]。座位號& amp航班[ i ]。sea info[j]。isBook,Flight[ i ]。sea info[j]。Book_Name
航班[ i ]。sea info[j]。Booker _ ID);
}
i++;
}
fclose(FP);
}
void _6_Exit_System()
{
char cmd
cls();
printf(" \ N \ N \ N \ N \ N \ N \ N \ t \ t確認退出(Y/N)?") ;
getchar();
scanf( "%c ",& ampcmd);
if( cmd == 'Y' || cmd == 'y ')
{
退出(1);
}
else if(cmd = = ' N ' | | cmd = = ' N '){ cls();menu();}
其他
{
enter _ Error();
_ 6 _出口_系統();
}
}
void Begin_Disp()
{
char ch = ' >;';
//睡眠(1000);
printf(" \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n ";
printf(" \ t-_ _ @ _ _ @ _ _ @ _ _ @ _ _ ~ @ \ n ");
printf(" \ t-_ `\ \ & lt;,_ _ `\ \ & lt;,_ _ `\ \ & lt;,_ _ `\ \ & lt;,_ _ `\ \ & lt;,_ \ n ");
printf(" \ t-(*)/(*)/(*)(*)/(*)/(*)/(*)/(*)\ n \ n \ t \ t \ t \ t \ t \ t \ t \ t \ t \ t \ t \ t \ t \ t \ t
int n = 0;
while(n & lt;= 80 )
{
睡眠(15);
putchar(ch);
n++;
}
cls();
}
int main()
{
begin _ Disp();
menu();
}
嗯!!讓我們壹起努力!!!玩的有點累!不要填寫評論!怎麽了?自己改!記得給高分。
有些功能是錯誤的。查路線,自己加!