【簡介:】本篇文章給大家談?wù)劇讹w機票預(yù)訂系統(tǒng)程序》對應(yīng)的知識點,希望對各位有所幫助。本文目錄一覽:
1、Java,飛機訂票系統(tǒng)
2、飛機訂票系統(tǒng)設(shè)計
3、請教大神,數(shù)據(jù)庫飛機票預(yù)定系統(tǒng)
本篇文章給大家談?wù)劇讹w機票預(yù)訂系統(tǒng)程序》對應(yīng)的知識點,希望對各位有所幫助。
本文目錄一覽:
- 1、Java,飛機訂票系統(tǒng)
- 2、飛機訂票系統(tǒng)設(shè)計
- 3、請教大神,數(shù)據(jù)庫飛機票預(yù)定系統(tǒng)界面具體怎么做
- 4、C語言程序?qū)戯w機訂票系統(tǒng)
- 5、飛機票訂票系統(tǒng) C++
Java,飛機訂票系統(tǒng)
鏈接:v(括號里不是鏈接)iew-so(括號里不是鏈接)(括號里不是鏈接)urce:ht(括號里不是鏈接)tp://(括號里不是鏈接)ww(括號里不是鏈接)w.a(括號里不是鏈接)irch(括號里不是鏈接)ina(括號里不是鏈接).co(括號里不是鏈接)m.cn(括號里不是鏈接)/?ci(括號里不是鏈接)d=(括號里不是鏈接)GN-buy(括號里不是鏈接):20130221:SEM:Baidu:CHN:00(括號里不是鏈接)0120|fc=(括號里不是鏈接)k91(括號里不是鏈接)8988499.a151793471.u933021.pb
飛機訂票系統(tǒng)設(shè)計
#include stdio.h
#include string.h
#include conio.h
#include ctype.h
#include stdlib.h
#include malloc.h
#include math.h//overflow
#define ok 1
typedef struct Yidingkehu
{//單鏈表
char name[15];//已訂票的客戶姓名
int dingpiaoshu;//已訂票數(shù)量
struct Yidingkehu *next1;//
}Yidingkehu,*Link;
typedef struct Weidingkehu
{//單鏈隊
char name[15];//預(yù)訂票的客戶姓名
int yudingpiao;// 要訂票數(shù)量
struct Weidingkehu *next2;//下一個鏈隊結(jié)點指針
}Weidingkehu,*Qptr;
typedef struct Hangxian
{//創(chuàng)建一個含有六個信息的結(jié)構(gòu)體
char hangbanhao[15];//航班號-
char feijihao[15];//飛機號
int feixingriqi;//起飛時間
int chenkerenshu;//座位數(shù)
int yupiao;//余票
char zhongdianzhai[15];//降落城市
struct Hangxian *next;//指向下一個鏈結(jié)點的指針
struct Yidingkehu *yiding;//定義一個指向已訂票客戶的頭結(jié)點指針
struct Weidingkehu *yudingqueue;
}Hangxian,*Linklist;
Linklist InitLinklist();//01
int InsertLinklist(Linklist head1);//02
void hbhchaxun();//通過航班號查詢
void mddchaxun();//通過目的地查詢
void lurugongneng();//初始化錄入功能
void chaxungongnen();//查詢功能
void dingpiaogongnen();//訂票功能
void tuipiaogongnen();//退票功能
void main()
{
int n;
do{ //打印主界面
printf("\t 歡迎使用航空客運訂票系統(tǒng)\n");
printf("\t+++++++++++++++++++++++++++++\n");
printf("\t==1. 錄入功能 ==\n");
printf("\t==2. 查詢功能 ==\n");
printf("\t==3. 訂票功能 ==\n");
printf("\t==4. 退票功能 ==\n");
printf("\t==5. 退出 ==\n");
printf("\t+++++++++++++++++++++++++++++\n");
printf("\t請選擇:");
scanf("%d",n);printf("\n");
switch(n)
{
case 1: lurugongneng();//錄入功能
break;
case 2: chaxungongnen();//查詢功能
break;
case 3: dingpiaogongnen();//訂票功能
break;
case 4:tuipiaogongnen();//退票功能
break;
default :exit(0);//退出
}
}while(n==1||n==2||n==3||n==4);
}
void lurugongneng()//初始化的單鏈表*********************************************************錄入功能
{
Linklist p;
//int m,n;
if(!p) exit(OVERFLOW);
printf("\t請依次輸入下面幾項內(nèi)容:\n\n");//這里的輸入采用一個個單獨輸入,避免了亂賦值的現(xiàn)象
printf("航班號\n");
gets(p-hangbanhao);//這里的二個gets主要是因為在回車鍵的輸入,其中的第一個是來接收上次的回車
gets(p-hangbanhao);
printf("飛機號\n");
gets(p-feijihao);
printf("終點站\n");
gets(p-zhongdianzhai);
printf("飛行日期\n");
scanf("%d",p-feixingriqi);
printf("乘客總數(shù)\n");
scanf("%d",p-chenkerenshu);
printf("余票數(shù)\n");
scanf("%d",p-yupiao);
}
void chaxungongnen()//******************************************************************查詢功能
{
int n;
printf("\t 查 找 航 線 信 息 \n");
printf("\t+++++++++++++++++++++++++++++\n");
printf("\t==1. 通過目的地查詢 ==\n");
printf("\t==2. 通過航班號查詢 ==\n");
printf("\t+++++++++++++++++++++++++++++\n");
printf("\t請選擇:");
scanf("%d",n);
printf("\n");//格式化
switch(n)
{
case 1:mddchaxun();
break;
case 2:hbhchaxun();
break;
default :break;
}
}
void mddchaxun()//通過目的地查詢
{
char c[15];
int m;
Linklist p=L;
printf("\t請輸入要查詢的目的地:");
gets(c);
gets(c);//原因同上
do{
p=p-next;
if(p)
{
m=strcmpi((*p).zhongdianzhai,c);//如果==的話則m=0;
if(m==0)
{
printf("\t航班信息:\n");
printf("\t航班號:%s\n",p-hangbanhao);
printf("\t飛機號:%s\n",p-feijihao);
printf("\t飛行時間:周%d\n",p-feixingriqi);
printf("\t余票量:%d\n",p-yupiao);
}
}
else
{//如果不匹配的話就做
printf("\t對不起沒有你要找的目的地:\n\n"); m=0;
}
}while(m!=0);
}
void hbhchaxun()//通過目的地查詢
{
char c[15];
int m;
Linklist p=L;
printf("\t請輸入要查詢的航班號:");
gets(c); gets(c);printf("\n");
do{
p=p-next;
if(p)
{
m=strcmpi((*p).hangbanhao,c);//如果==的話則m=0;這里的(*p).與p-的作用是一樣的
if(m==0)
{
printf("\t航班信息:\n");
printf("\t航班號:%s\n",p-hangbanhao);
printf("\t飛機號:%s\n",p-feijihao);
printf("\t飛行時間:周%d\n",p-feixingriqi);
printf("\t余票量:%d\n\n",p-yupiao);
}
}
else
{//如果不匹配的話就做
printf("\t對不起沒有你要找的航班號:\n"); m=0;
}
}while(m!=0);
}
void dingpiaogongnen()//***************************************************************訂票功能
{
char c[15];
int m=1,piao,ydpiao=0,yd=0,n;//
gets(c);
printf("請輸入終點站名:"); gets(c); printf("\n");
p=L-next;
if(p) {
do{//查找一下,是否有這個航班
if(!p)
{
printf("對不起,沒有你要找的航班:\n\n");
goto loop1;
}
m=strcmpi(p-zhongdianzhai,c);
if(m==0)
{
printf("航班信息:\n");
printf("航班號:%s\n",p-hangbanhao);
printf("飛機號:%s\n",p-feijihao);
printf("飛行時間:周%d\n",p-feixingriqi);
printf("余票量:%d\n",p-yupiao);}
else p=p-next;
}while(m!=0);
if(m==0)
{
do{
printf("\n請輸入你要訂的票數(shù):"); scanf("%d",piao);
if(piao=p-yupiao)
{
h=p-yiding;
if(h)
{
h1=h;
h=h-next1;
h=(struct Yidingkehu*)malloc(sizeof(Yidingkehu));
printf("請輸入你的名字:");
gets(h-name);gets(h-name);
h-dingpiaoshu=piao;
h-next1=h1-next1;
h1-next1=h;
p-yupiao=p-yupiao-piao;
printf("訂票成功:\n"); m=2;
}
}
else
{
printf("余票量:%d\n",p-yupiao);
printf("對不起,余票 %d 張不足,不能完成訂票\n\n",p-yupiao);
printf(" 是否要重新訂票?\n");
printf("需要請輸入1 否則請按2 預(yù)訂請輸入3 : ");
scanf("%d",m);
printf("\n");
if(m==3) goto loop3;
}
}while(m==1);
}
}
else if(!p)
{
loop3: struct Weidingkehu *q3;
printf("對不起,該航班的票已售完\n");
q.front=p-yudingqueue;
if(q.front==q.rear) printf("沒有人預(yù)訂票,是否要預(yù)訂?\n");
else if(q.front!=q.rear) printf("已有人預(yù)訂票,是否要預(yù)訂?\n");
printf("預(yù)訂請輸入1 否則輸入2 : ");
scanf("%d",n);
printf("\n");
if(n==1)
{
printf("請輸入你的姓名"); gets(q3-name); gets(q3-name);//q3不能指向name???
printf("請輸入訂票數(shù)"); scanf("%d",q3-yudingpiao);
q3-next2=NULL;
q.rear-next2=q3;
q.rear=q3;
printf(" 你已經(jīng)預(yù)訂了 !\n");
}
}
loop1:;
}
void tuipiaogongnen()//***************************************************************退票功能
{
}
以上回答你滿意么?
請教大神,數(shù)據(jù)庫飛機票預(yù)定系統(tǒng)界面具體怎么做
1、每個航班信息的輸入。
2、每個航班的坐位信息的輸入;
3、當(dāng)旅客進行機票預(yù)定時,輸入旅客基本信息,系統(tǒng)為旅客安排航班,打印取票通知和帳單;
4、旅客在飛機起飛前一天憑取票通知交款取票;
5、旅客能夠退訂機票;
6、能夠查詢每個航班的預(yù)定情況、計算航班的滿座率。
C語言程序?qū)戯w機訂票系統(tǒng)
#include stdio.h
#include string.h
#include conio.h
#include ctype.h
#include stdlib.h
#include malloc.h
#include math.h//overflow
#define ok 1
typedef struct Yidingkehu
{//單鏈表
char name[15];//已訂票的客戶姓名
int dingpiaoshu;//已訂票數(shù)量
struct Yidingkehu *next1;//
}Yidingkehu,*Link;
typedef struct Weidingkehu
{//單鏈隊
char name[15];//預(yù)訂票的客戶姓名
int yudingpiao;// 要訂票數(shù)量
struct Weidingkehu *next2;//下一個鏈隊結(jié)點指針
}Weidingkehu,*Qptr;
typedef struct Hangxian
{//創(chuàng)建一個含有六個信息的結(jié)構(gòu)體
char hangbanhao[15];//航班號-
char feijihao[15];//飛機號
int feixingriqi;//起飛時間
int chenkerenshu;//座位數(shù)
int yupiao;//余票
char zhongdianzhai[15];//降落城市
struct Hangxian *next;//指向下一個鏈結(jié)點的指針
struct Yidingkehu *yiding;//定義一個指向已訂票客戶的頭結(jié)點指針
struct Weidingkehu *yudingqueue;
}Hangxian,*Linklist;
Linklist InitLinklist();//01
int InsertLinklist(Linklist head1);//02
void hbhchaxun();//通過航班號查詢
void mddchaxun();//通過目的地查詢
void lurugongneng();//初始化錄入功能
void chaxungongnen();//查詢功能
void dingpiaogongnen();//訂票功能
void tuipiaogongnen();//退票功能
void main()
{
int n;
do{ //打印主界面
printf("\t 歡迎使用航空客運訂票系統(tǒng)\n");
printf("\t+++++++++++++++++++++++++++++\n");
printf("\t==1. 錄入功能 ==\n");
printf("\t==2. 查詢功能 ==\n");
printf("\t==3. 訂票功能 ==\n");
printf("\t==4. 退票功能 ==\n");
printf("\t==5. 退出 ==\n");
printf("\t+++++++++++++++++++++++++++++\n");
printf("\t請選擇:");
scanf("%d",n);printf("\n");
switch(n)
{
case 1: lurugongneng();//錄入功能
break;
case 2: chaxungongnen();//查詢功能
break;
case 3: dingpiaogongnen();//訂票功能
break;
case 4:tuipiaogongnen();//退票功能
break;
default :exit(0);//退出
}
}while(n==1||n==2||n==3||n==4);
}
void lurugongneng()//初始化的單鏈表*********************************************************錄入功能
{
Linklist p;
//int m,n;
if(!p) exit(OVERFLOW);
printf("\t請依次輸入下面幾項內(nèi)容:\n\n");//這里的輸入采用一個個單獨輸入,避免了亂賦值的現(xiàn)象
printf("航班號\n");
gets(p-hangbanhao);//這里的二個gets主要是因為在回車鍵的輸入,其中的第一個是來接收上次的回車
gets(p-hangbanhao);
printf("飛機號\n");
gets(p-feijihao);
printf("終點站\n");
gets(p-zhongdianzhai);
printf("飛行日期\n");
scanf("%d",p-feixingriqi);
printf("乘客總數(shù)\n");
scanf("%d",p-chenkerenshu);
printf("余票數(shù)\n");
scanf("%d",p-yupiao);
}
void chaxungongnen()//******************************************************************查詢功能
{
int n;
printf("\t 查 找 航 線 信 息 \n");
printf("\t+++++++++++++++++++++++++++++\n");
printf("\t==1. 通過目的地查詢 ==\n");
printf("\t==2. 通過航班號查詢 ==\n");
printf("\t+++++++++++++++++++++++++++++\n");
printf("\t請選擇:");
scanf("%d",n);
printf("\n");//格式化
switch(n)
{
case 1:mddchaxun();
break;
case 2:hbhchaxun();
break;
default :break;
}
}
void mddchaxun()//通過目的地查詢
{
char c[15];
int m;
Linklist p=L;
printf("\t請輸入要查詢的目的地:");
gets(c);
gets(c);//原因同上
do{
p=p-next;
if(p)
{
m=strcmpi((*p).zhongdianzhai,c);//如果==的話則m=0;
if(m==0)
{
printf("\t航班信息:\n");
printf("\t航班號:%s\n",p-hangbanhao);
printf("\t飛機號:%s\n",p-feijihao);
printf("\t飛行時間:周%d\n",p-feixingriqi);
printf("\t余票量:%d\n",p-yupiao);
}
}
else
{//如果不匹配的話就做
printf("\t對不起沒有你要找的目的地:\n\n"); m=0;
}
}while(m!=0);
}
void hbhchaxun()//通過目的地查詢
{
char c[15];
int m;
Linklist p=L;
printf("\t請輸入要查詢的航班號:");
gets(c); gets(c);printf("\n");
do{
p=p-next;
if(p)
{
m=strcmpi((*p).hangbanhao,c);//如果==的話則m=0;這里的(*p).與p-的作用是一樣的
if(m==0)
{
printf("\t航班信息:\n");
printf("\t航班號:%s\n",p-hangbanhao);
printf("\t飛機號:%s\n",p-feijihao);
printf("\t飛行時間:周%d\n",p-feixingriqi);
printf("\t余票量:%d\n\n",p-yupiao);
}
}
else
{//如果不匹配的話就做
printf("\t對不起沒有你要找的航班號:\n"); m=0;
}
}while(m!=0);
}
void dingpiaogongnen()//***************************************************************訂票功能
{
char c[15];
int m=1,piao,ydpiao=0,yd=0,n;//
gets(c);
printf("請輸入終點站名:"); gets(c); printf("\n");
p=L-next;
if(p) {
do{//查找一下,是否有這個航班
if(!p)
{
printf("對不起,沒有你要找的航班:\n\n");
goto loop1;
}
m=strcmpi(p-zhongdianzhai,c);
if(m==0)
{
printf("航班信息:\n");
printf("航班號:%s\n",p-hangbanhao);
printf("飛機號:%s\n",p-feijihao);
printf("飛行時間:周%d\n",p-feixingriqi);
printf("余票量:%d\n",p-yupiao);}
else p=p-next;
}while(m!=0);
if(m==0)
{
do{
printf("\n請輸入你要訂的票數(shù):"); scanf("%d",piao);
if(piao=p-yupiao)
{
h=p-yiding;
if(h)
{
h1=h;
h=h-next1;
h=(struct Yidingkehu*)malloc(sizeof(Yidingkehu));
printf("請輸入你的名字:");
gets(h-name);gets(h-name);
h-dingpiaoshu=piao;
h-next1=h1-next1;
h1-next1=h;
p-yupiao=p-yupiao-piao;
printf("訂票成功:\n"); m=2;
}
}
else
{
printf("余票量:%d\n",p-yupiao);
printf("對不起,余票 %d 張不足,不能完成訂票\n\n",p-yupiao);
printf(" 是否要重新訂票?\n");
printf("需要請輸入1 否則請按2 預(yù)訂請輸入3 : ");
scanf("%d",m);
printf("\n");
if(m==3) goto loop3;
}
}while(m==1);
}
}
else if(!p)
{
loop3: struct Weidingkehu *q3;
printf("對不起,該航班的票已售完\n");
q.front=p-yudingqueue;
if(q.front==q.rear) printf("沒有人預(yù)訂票,是否要預(yù)訂?\n");
else if(q.front!=q.rear) printf("已有人預(yù)訂票,是否要預(yù)訂?\n");
printf("預(yù)訂請輸入1 否則輸入2 : ");
scanf("%d",n);
printf("\n");
if(n==1)
{
printf("請輸入你的姓名"); gets(q3-name); gets(q3-name);//q3不能指向name???
printf("請輸入訂票數(shù)"); scanf("%d",q3-yudingpiao);
q3-next2=NULL;
q.rear-next2=q3;
q.rear=q3;
printf(" 你已經(jīng)預(yù)訂了 !\n");
}
}
loop1:;
}
void tuipiaogongnen()//***************************************************************退票功能
{
}
請采納答案,支持我一下。
飛機票訂票系統(tǒng) C++
這是以前的課程設(shè)計題目,希望你再接再厲 好好學(xué)習(xí)
#include iostream.h
#include stdio.h
#include string.h
#include conio.h
#define m 4 //3架飛機
#define n 5 //每架飛機5張票
struct node
{
char name[21];
char id[21];
int seat,plane,date;
node *next,*pre;
};
struct wait
{
char name[21];
char id[21];
char phone[8];
int seat,plane,date,count;
wait *next,*pre;
};
struct piao
{
int seat[n+1];
};
void makenull();
void makenull_piao();
void makenull_information();
void list_menu();
void list_piao();
void makenull_wait();
void list_information();
void plane_information(node *head);
void book();
void add_information(node *head,int x,int y);
void add_wait(int x,int y);
void search_delete(int x);
void write_to_file();
void show_wait();
bool comp(node *x,node*y);
node *head1,*head2,*head3,*q;
wait *wait_head,*wait_end;
char c;
piao a[m];
void main()
{
makenull();
do
{ list_menu();
coutendl"choose an operation: ";
cinc;
if (c!='6')
switch(c)
{
case '0' : show_wait();break;
case '1' : {list_piao();book();}break;
case '2' : search_delete(1);break;
case '3' : list_piao();break;
case '4' : list_information();break;
case '5' : search_delete(0);break;
default : break;
}
}while(c!='6');
cout"Exit System ";
}
void makenull()
{
makenull_piao();
makenull_information();
makenull_wait();
}
void list_menu()
{ coutendl"";
coutendl" 菜單";
coutendl" ************************";
coutendl" * 0 . 查看排隊情況 *";
coutendl" * 1 . 訂票 *";
coutendl" * 2 . 退票 *";
coutendl" * 3 . 查看剩余票 *";
coutendl" * 4 . 查看飛機信息 *";
coutendl" * 5 . 查看乘客信息 *";
coutendl" * 6 . 退出 *";
coutendl" ************************";
coutendl"";
}
void makenull_piao()
{
FILE *fp;
int i;
if((fp=fopen("piao.dat","r")) == NULL )
{
fp=fopen("piao.dat","w");
for (i=1;i=m-1;i++)
fwrite(a[i],sizeof(piao),1,fp);
fclose(fp);
fp=fopen("piao.dat","r");
}
for(i=1;i=m-1;i++)
fread(a[i],sizeof(piao),1,fp);
fclose(fp);
}
void makenull_information()
{
node *r;
FILE *fp;
int i,j,sum;
sum=a[1].seat[0]+a[2].seat[0]+a[3].seat[0];
fp=fopen("information.dat","r");
head1=new node;
head2=new node;
head3=new node;
head1-pre=NULL;
head1-next=NULL;
head2-pre=NULL;
head2-next=NULL;
head3-pre=NULL;
head3-next=NULL;
q=head1;
for(i=1;i=sum;i++)
{
j=0;
r=new node;
fread(r,sizeof(node),1,fp);
q-next=r;
r-pre=q;
r-next=NULL;
q=q-next;
fclose(fp);
if(i==a[1].seat[0]+1) {
head2-next=q;
q-pre-next=NULL;
q-pre=head2;
}
if(i==a[1].seat[0]+a[2].seat[0]+1) {
head3-next=q;
q-pre-next=NULL;
q-pre=head3;
}
}
}
void makenull_wait()
{
wait *tempw;
FILE *fp;
tempw=new wait;
int i;
if((fp=fopen("wait.txt","r")) ==NULL )
{
fp=fopen("wait.txt","w");
fclose(fp);
}
wait_end=new wait;
wait_head=new wait;
wait_end-next=NULL;
wait_end-pre=NULL;
wait_head=wait_end;
wait_head-count=0;
fp=fopen("wait.txt","r");
fread(wait_head,sizeof(wait),1,fp);
for(i=1;i=wait_head-count;i++)
{
fread(tempw,sizeof(wait),1,fp);
wait_end-next=tempw;
tempw-pre=wait_end;
tempw-next=NULL;
wait_end=tempw;
}
}
void list_piao()
{
int i,j;
for(i=1;i=m-1;i++)
{
if(a[i].seat[0]!=n)
{
coutendl"第 "i" 架飛機剩余的票 :"endl;
for(j=1;j=n;j++)
if (a[i].seat[j]==0) cout" "j;
coutendl;
}
else coutendl"The "i" plane is full !"endlendl;
}
}
void list_information()
{
int x;
do {coutendl"顯示哪架飛機的信息 ? "; cinx;coutendl;}while(x1 || x=m);
coutendl"第 "x" 架飛機的信息如下 "endl;
if(x==1) plane_information(head1);
if(x==2) plane_information(head2);
if(x==3) plane_information(head3);
}
void plane_information(node *head)
{
node *q;
char ch;
int x=0;
if(head!=NULL head-next!=NULL)
q=head-next;
else {
q=NULL;
cout"飛機空,無預(yù)訂票 !"endl;
}
while(q!=NULL)
{
coutendl"*******************"endl;
q-date=q-plane;
cout"日期 :"q-dateendl;
cout"座位號 : "q-seatendl;
cout"姓名 : "q-name;
coutendl"ID 號 : "q-id;
q=q-next;x++;
if (x % 3 ==0) ch=getch();
}
coutendl;
}
void book()
{
int i,j,p;
coutendl"請選擇地點:(1、2、3) ";
do {
cini;
if (i1 || i=m) {
coutendl"**** 超出范圍!****"endl"請重新輸入:";
}
else
{coutendl"你要訂的是到"i"地的飛機"endl;
coutendl"第 "i" 架飛機剩余的票 :"endl;
for(p=1;p=n;p++)
if (a[i].seat[p]==0) cout" "p;
coutendl;
break;}
}while(1);
coutendl"請選擇座位號 : ";
do {
cinj;
if (j1 || jn) {
coutendl"**** 超出范圍!****"endl"請重新輸入:";
}
else
{
q-date=i;
coutendl"您的訂票日期 : "q-dateendl;
break;
}
}while(1);
if (a[i].seat[j]==0) {
a[i].seat[j]=1;
coutendl;
a[i].seat[0]++;
if(i==1) add_information(head1,1,j);
if(i==2) add_information(head2,2,j);
if(i==3) add_information(head3,3,j);
}
else
{
coutendl"**** 對不起,該座位已被預(yù)訂,您被安排到訂票等候隊列 ****"endl;
add_wait(i,j);
}
}
void add_wait(int x,int y)
{
wait *tempw;
tempw=new wait;
tempw-next=NULL;
cout"請輸入個人信息"endl;
coutendl"*************"endl;
cout"姓名 : ";cintempw-name;
cout"ID號 : ";cintempw-id;
cout"電話 :";cintempw-phone;
tempw-seat=y;
tempw-plane=x;
wait_end-next=tempw;
tempw-pre=wait_end;
wait_end=wait_end-next;
coutendl"**** 正在排隊等候 ****"endl;
wait_head-count++;
write_to_file();
}
void show_wait()
{
wait *tempw;
tempw=wait_head-next;
if (tempw==NULL) coutendl"排隊中沒有人!"endl;
while(tempw!=NULL)
{
couttempw-name" - ";
tempw=tempw-next;
}
}
void add_information(node *head,int x,int y)
{
node *temp;
temp=new node;
temp-pre=NULL;
temp-next=NULL;
cout"請輸入個人信息"endl;
coutendl"*************"endl;
cout"姓名 : ";cintemp-name;
cout"ID號 : ";cintemp-id;
temp-seat=y;
temp-plane=x;
temp-next=head-next;
temp-pre=head;
if (head-next!=NULL) head-next-pre=temp;
head-next=temp;
write_to_file();
coutendl"**** 訂票成功 ****"endl;
}
void search_delete(int x)
{
node *p,*q,*r;
wait *tempw,*tempw2,*tempw3;
int step=1,t1,t2,i;
char ch;
p=new node;
tempw=new wait;
tempw2=new wait;
tempw3=new wait;
q=head1;
coutendl"請輸入個人信息"endl;
cout"*************"endl;
coutendl"姓名 : ";cinp-name;
do{
q=q-next;
if ( (q!=NULL)
(comp(q,p)) )
{
coutendl;
q-date=q-plane;
cout"Located!"endl;
cout"****************";
coutendl"姓名 : "q-name;
coutendl"ID號 : "q-id;
coutendl"座位號 : "q-seat;
coutendl"班機號 : "q-plane;
coutendl"日期 : "q-dateendl;
if (x==1) {
cout"刪除該紀錄 ? [Y/N] ";
cinch;
if (ch=='Y' || ch=='y') {
t1=q-plane;
t2=q-seat;
a[t1].seat[t2]=0;
a[t1].seat[0]--;
r=q;q=q-pre;
r-pre-next=r-next;
if(r-next!=NULL) r-next-pre=r-pre;
delete(r);
cout"**** 記錄刪除成功 ! ****";
write_to_file();
tempw=wait_head;
for(i=0;iwait_head-count;i++)
{
tempw=tempw-next;
if(tempw==NULL) break;
if((tempw-plane==t1) (tempw-seat==t2))
{
strcpy(tempw3-name,tempw-name);
strcpy(tempw3-phone,tempw-phone);
coutendl"等候的人中有可以訂票的了:"endl;
coutendl"姓名 : "tempw-name;
coutendl"ID號 : "tempw-idendl;
a[t1].seat[0]++;
a[t1].seat[t2]=1;
if(tempw-plane==1) add_information(head1,1,tempw-seat);
if(tempw-plane==2) add_information(head2,2,tempw-seat);
if(tempw-plane==3) add_information(head3,3,tempw-seat);
tempw2=tempw-pre;
tempw2-next=tempw-next;
if(tempw-next==NULL) wait_end=tempw2;
else tempw-next-pre=tempw2;
delete(tempw);
wait_head-count--;
write_to_file();
coutendl"等候的"tempw3-name"已經(jīng)成功訂票,已經(jīng)由電話"tempw3-phone"通知了"endl;
break;
}
}
}
}continue;
}
else
{
if (q==NULL)
{
step++;
if(step==2) q=head2;
if(step==3) q=head3;
if(step==4) {coutendl"**** 信息檢索完畢 ****";break;}
}
}
}while(1);
}
bool comp(node *x,node *y)
{
node *p,*q;
int i,j,k;
p=x;
q=y;
i=j=0;
do
{
while ( (p-name[i] != q-name[j]) (p-name[i] != '\0') ) i++;
if (p-name[i] == '\0') {return(false);break;}
else
{
k=i;
while ( (p-name[k] == q-name[j]) (q-name[j]!='\0') ) {k++;j++;}
if (q-name[j]=='\0') return(true);
else
{
j=0;
i++;
}
}
}while( (q-name[j]!='\0') (p-name[i] != '\0') );
return(false);
}
void write_to_file()
{
FILE *fp;
int i,j;
int x[m];
node *p;
wait *tempw;
tempw=new wait;
tempw=wait_head;
fp=fopen("piao.dat","w");
for (i=1;i=m-1;i++)
{
fwrite(a[i],sizeof(piao),1,fp);
}
fclose(fp);
fp=fopen("information.dat","w");
x[0]=0;x[1]=a[1].seat[0];
for(i=0,j=1;j=m-1;j++) {i=i+a[j].seat[0];x[j]=a[j].seat[0]+x[j-1];}
j=1;p=head1-next;
for(j=1;j=i;j++)
{
if(j==x[1]+1) p=head2-next;
if(j==x[2]+1) p=head3-next;
if(p==NULL)break;
fwrite(p,sizeof(node),1,fp);
p=p-next;
}
fclose(fp);
fp=fopen("wait.txt","w");
for(j=0;j=wait_head-count;j++)
{
if(tempw==NULL)break;
fwrite(tempw,sizeof(wait),1,fp);
tempw=tempw-next;
}
fclose(fp);
}
關(guān)于《飛機票預(yù)訂系統(tǒng)程序》的介紹到此就結(jié)束了。