Ⅰ C語言編程民航管理系統
#include "stdio.h"
#include "conio.h"
#define N 3
typedef struct hb{
int hbh;
char qsd[100],zdz[100];
char days[10];
int member;
} P;
P t[N];
main()
{FILE *wj;
int i,at,s=0;
char a,t[100];
if(wj=fopen("ss.txt","at+")==NULL)
{printf("文件沒有打開,請從新確認!!");
exit(1);}
/*錄入N個成員的數據*/
for(i=0;i<N;i++)
{printf("請輸入航班號:");
scanf("%d",t[i].hbh);
printf("\n航線起點:");
puts(t[i].qsd);
printf("\n航線終點:");
puts(t[i].zdz);
printf("\n日期");
puts(t[i].days);
printf("\n輸入成員定額");
fprintf(wj,"航班號:%d\t",t[i].hbh);
fprintf(wj,"航線起點:%s\t",t[i].qsd);
fprintf(wj,"航線終點:%s\t",t[i].zdz);
fprintf(wj,"日期:%s\t",t[i].days);
fprintf(wj,"成員定額:%s",t[i].member);
fprintf(wj,"\n"); }
rewind(wj);
printf("是否瀏覽文件:y/n");
a=getchar();
if(a=='y')
at=fgetc(wj);
while((at=fgetc(wj))!=EOF)
printf("%c",at);
fclose(wj);
if(wj=fopen("ss.txt","b+")==NULL)
{printf("文件沒有打開,請從新確認!!");
exit(1);}
/*按航班號查詢!!!*/
printf("輸入你要查詢的號碼!!");
scanf("%d",&at);
i=0;
t[i]=gets(wj);
while((t[i++]=fgetc(wj))!=EOF)
{if(t[i++]=='\n')
{s++;i=0; }
if(s==at)
puts(t);}
getch();
}
Ⅱ C程序編程之機票座位預定系統 求解
#include<conio.h>
#include<stdio.h>
void main()
{
int i=0,j=0,count=0,hang=0;
char lie;
char a[7][4]={ {'A','B','C','D'},
{'A','B','C','D'},
{'A','B','C','D'},
{'A','B','C','D'},
{'A','B','C','D'},
{'A','B','C','D'},
{'A','B','C','D'} };
while(count<=28)
{
printf("\n\n請訂票,X為已經訂出的座位,請選擇其他座位。\n");
for(i=0;i<7;i++)
{
for(j=0;j<4;j++)
{
printf("%c ",a[i][j]);
}
printf("\n");
}
printf("\n請輸入你所定座位的行號(1~7行):\n");
fflush(stdin);
scanf("%d",&hang);
if((hang<1)||(hang>7))
{
printf("無效輸入!\n");
continue;
}
printf("請輸入你所定座位的列號(A,B,C,D):\n");
fflush(stdin);
scanf("%c",&lie);
if((lie<'A')||(lie>'D'))
{
printf("無效輸入!\n");
continue;
}
if(a[hang-1][lie-'A']=='X')
{
printf("對不起,該座位已經被訂了。\n");
continue;
}
else
{
printf("您的座位是:%d行%c座,祝您旅途愉快!。\n",hang,lie);
a[hang-1][lie-'A']='X';
}
}
printf("本航班的所有座位已經訂出。\n");
getch();
}
Ⅲ c語言程序設計飛機訂票系統
呵呵 這個也是我在網上搜的 挺不錯 沒有錯誤
#include<stdio.h> //標准輸入、輸出頭文件
#include<string.h> //包含字元串函數處理頭文件
#include<stdlib.h> //包含動態存儲與釋放函數頭文件
#define N 10000
struct air //定義結構體數組
{
int num;
char start[20];
char over[20];
char time[10];
int count;
}s[N];
int i;
int m=0;
#define PRINT "%-d%12s%12s%10s%12d\n",s[i].num,s[i].start,s[i].over,s[i].time,s[i].count //定義輸出格式
void input(); //輸入航班信息
void print(); //輸出航班信息
void save(); //保存航班信息
void read(); //讀取航班信息
void search(); //查找航班信息
void shanchu(); //刪除航班信息
void dingpiao(); //訂票信息
void tuipiao(); //退票信息
void xiugai(); //修改信息
void main()
{
int j;
printf(" ★---您好,歡迎進入中國民航管理系統!---★\n");
printf("================================================================================\n");
do
{
printf(" -------- ☆ 1.輸入航班信息 ☆-------- \n\n"
" -------- ☆ 2.瀏覽航班信息 ☆-------- \n\n"
" -------- ☆ 3.修改航班信息 ☆-------- \n\n"
" -------- ☆ 4.查找航班信息 ☆-------- \n\n"
" -------- ☆ 5.刪除航班信息 ☆-------- \n\n"
" -------- ☆ 6.訂票信息 ☆-------- \n\n"
" -------- ☆ 7.退票信息 ☆-------- \n\n"
" -------- ☆ 0.退出 ☆-------- \n\n");
printf("================================================================================\n");
printf("請在0-7中選擇以回車鍵結束:\n\n");
scanf("%d",&j);
switch(j)
{
case 1: input();//調用輸入模塊
break;
case 2:print();//調用列印模塊
break;
case 3:xiugai();//調用修改模塊
break;
case 4:search();//調用查找模塊
break;
case 5:shanchu(); //調用刪除模塊
break;
case 6:dingpiao();//調用訂票模塊
break;
case 7:tuipiao();//調用退票模塊
break;
case 0:;
break;
}
}while(j!=0); //判斷結束
printf("謝謝使用,再見!\n");
}//主函數結束
void input()//列印模塊程序
{
char f[]="2008china"; //設置密碼
int y;
printf("請輸入密碼並以回車鍵結束:\n\n");
scanf("%s",f); //讀取密碼
if(strcmp(f,"2008china")==0)
{
printf("請依次輸入航班信息(機票數位0結束輸入):\n\n"
"完成輸入信息請鍵入w以回車鍵結束\n\n"); //列印提示信息
printf("--------------------------------------------------------------------------\n");
for(i=0;i<N;i++)
{
printf("請輸入航班號:\n");
scanf("%d",&s[i].num); //讀取航班號
printf("請輸入起始站:\n");
scanf("%s",s[i].start);//讀取起始站
printf("請輸入終點站:\n");
scanf("%s",s[i].over);//讀取終點站
printf("請輸入時間:\n");
scanf("%s",s[i].time);//讀取時間
printf("請輸入機票數(機票數為0結束輸入):\n",m);
scanf("%d",&s[i].count);//讀取機票數
m++;
printf("第%d個信息已經輸完是否繼續?按任意鍵繼續,按 0結束",m);
scanf("%d",&y);
if(y==0)
{
save();//將結構體信息存檔
print();//輸出輸入的航班信息
break;
}
}
}
else
printf("輸入密碼錯誤!請檢查您的密碼是否正確!謝謝!再見!\n\n");
}
void save()//保存模塊程序
{
FILE *fp,*fp1;//定義文件指針
if((fp=fopen("chen.dat","wb"))==NULL)//打開文件並判斷是否出錯
{
printf("創建文件失敗!\n\n");//列印出錯提示
getchar();
return;
}
if((fp1=fopen("hao.dat","wb"))==NULL)//打開文件並判斷是否出錯
{
printf("創建文件失敗!\n\n");//列印出錯提示
getchar();
return;
}
for(i=0;i<m;i++)
if(fwrite(&s[i],sizeof(struct air),1,fp)==0)//向文件寫入數據,並判斷是否出錯
printf("向文件輸入數據失敗!\n\n");
fprintf(fp1,"%d",m);
fclose(fp);//關閉文件
fclose(fp1);//關閉文件
}
void read()//從文件讀取信息模塊
{
FILE *fp,*fp1;//定義文件指針
if((fp=fopen("chen.dat","rb"))==NULL)//打開文件,並判斷是否出錯
{
printf("出錯,請檢查文件是否存在,按任意鍵返回住菜單");//列印出錯提示
getchar();
}
if((fp1=fopen("hao.dat","rb"))==NULL)//打開文件並判斷是否出錯
{
printf("創建文件失敗!\n\n");//列印出錯提示
getchar();
return;
}
fscanf(fp1,"%d",&m);
fclose(fp1);//關閉文件
for(i=0;i<m;i++)
{
fread(&s[i],sizeof(air),1,fp);//從文件中讀取信息
}
fclose(fp);//關閉文件
}
void print()//列印模塊
{
char w[10];
read();//調用讀取文件函數
printf("航班號 起始站 終點站 時間 機票數\n");
for(i=0;i<m;i++)
{
printf(PRINT);//列印信息
}
printf("請按任意鍵回車鍵結束返回上層菜單以:\n");
scanf("%s",w);
}
void search()//查詢模塊
{
char name1[20];
char name2[20];
char ii[10];
int n,no;
do
{
printf("請選擇查找方式:\n\n");//列印查詢方式菜單
printf("1.按航班號查找\n\n"
"2.按終點站查找\n\n"
"3.按航線查找\n\n"
"0.返回\n\n");
printf("請在0-3中選擇:\n\n"
"按其他鍵以回車鍵結束返回主菜單:\n\n");
scanf("%d",&n);//讀取查找方式
if(n==0)
break;
switch(n)
{
case 1:
printf("請輸入航班號:\n");
scanf("%d",&no);//航班號
break;
case 2:
printf("請輸入終點站名稱:\n");
scanf("%s",name2);//讀取終點站
break;
case 3:
printf("請輸入起始站名稱:\n");
scanf("%s",name1);//讀取起始站
printf("請輸入終點站名稱:\n");
scanf("%s",name2);//終點站
break;
}
read();//調用讀取函數
for(i=0;i<m;i++)
{
if(strcmp(s[i].over,name1)==0||strcmp(s[i].over,name2)==0)//按終點站起始站判斷輸出條件
{
printf("\n查找航班信息成功!\n");
printf("航班號 起始站 終點站 時間 機票數\n");
printf(PRINT);//列印信息
break;
}
if(s[i].num==no)//按航班號判斷輸出條件
{
printf("\n查找航班信息成功!\n");
printf("航班號 起始站 終點站 時間 機票數\n");
printf(PRINT);//列印信息
break;
}
}
no=0;//將航班號賦值為0
printf("沒有您需要的信息或查找完畢:\n\n"
"是否繼續查找?請鍵入yes或no以回車鍵結束\n");
scanf("%s",ii);
}while(strcmp(ii,"yes")==0);//判斷結束
}
void shanchu()//刪除模塊
{
char name1[20];
char name2[20];
char ii[10];
char f[]="2008china";//設置密碼
int no,n;
printf("請輸入密碼並以回車鍵結束:\n\n");
scanf("%s",f);//讀取密碼
if(strcmp(f,"2008china")==0) //判斷密碼是否正確
{
do
{
printf("請選擇刪除以方式回車鍵結束:\n\n");//列印刪除方式菜單
printf("*1.按航班號刪除\n\n"
"*2.按航線刪除\n\n"
"*0.返回\n\n");
printf("請在0-2中選擇以回車鍵結束:\n");
scanf("%d",&n);//讀取刪除方式
if(n==0)
break; //跳出循環
switch(n)
{
case 1:
printf("請輸入航班號:\n");
scanf("%d",&no);//讀取航班號
read();//調用讀取函數
break;//跳出循環
case 2:
printf("請輸入起始站 名稱:\n");
scanf("%s",name1);//讀取起始站
printf("請輸入終點站名稱:\n");
scanf("%s",name2);//讀取終點站
read();//調用讀取函數
break;//跳出循環
}
for(i=0;i<m;i++)
{
if(s[i].num==no||strcmp(s[i].start,name1)==0&&strcmp(s[i].over,name2)==0)//判斷輸入信息是否存在
{
s[i]=s[m-1];
m--;
}
}
printf("查找完畢或沒有這個信息\n\n");
printf("是否繼續刪除\n");
printf("請鍵入yes或no以回車鍵結束\n");
scanf("%s",ii); //讀取是否繼續信息
save(); //調用讀取函數
if(!strcmp(ii,"yes")) //判斷是否繼續刪除
printf("請按任意鍵以回車鍵結束返回上層菜單:\n");
break;
}while(n!=1&&n!=2&&n!=3&&n!=4&&n!=0); //判斷結束
}
else
printf("對不起密碼錯誤!您不是管理員,不能使用此項功能!謝謝!再見!\n\n");
}
void dingpiao()//訂票模塊
{
int n;
char a[10];
do
{
search();//調用查詢模塊
printf("請輸入您要訂的機票數以回車鍵結束:\n");
scanf("%d",&n);//讀取所訂機票數
if(n<0)
{
printf("請輸入有效的機票數!\n");//判斷機票數是否出錯
break;
}
if(s[i].count!=0&&s[i].count>=n)//判斷是否出錯
{
s[i].count=s[i].count-n;
save();//調用保存函數
printf("訂票成功!\n\n");
break;
}
if(s[i].count<n)//判斷是否出錯
{
printf("請輸入有效的機票數:\n");
break;
}
printf("是否繼續? 請輸入yes或no以回車鍵結束:\n");//判斷是否繼續訂票
scanf("%s",a);
}while(!strcmp(a,"yes"));//判斷結束
}
void tuipiao()//退票模塊
{
int n;
char a[10];
do
{
search();//調用查詢模塊
printf("請輸入您要退的機票數目:\n");
scanf("%d",&n);//輸入所退票數
if(n<0) //判斷票數是否有效
printf("請輸入有效的機票數!\n");
s[i].count=s[i].count+n;
save(); //調用保存模塊
printf("退票成功!\n\n");
printf("是否繼續? 請鍵入yes或no以回車鍵結束:\n\n");//判斷是否繼續退票
scanf("%s",a);
}while(!strcmp(a,"yes"));//判斷並跳出循環
getchar();
}
void xiugai() //修改模塊
{
struct xiu //定義結構體
{
int no;
char name1[20];
char name2[20];
char time[20];
int count;
}x[1];
char j[10];
char f[]="2008china";//設置密碼
int n;
printf("請輸入密碼並以回車鍵結束:\n\n");
scanf("%s",f);//讀取密碼
if(strcmp(f,"2008china")==0)//判斷是否出錯
{
read();//調用讀取模塊
do
{
printf( "請選擇修改方式:\n\n"
"*1,按航班號修改:\n\n"
"*2,按航線修改: \n\n");
printf("請在1---2中修改以回車鍵結束:\n\n");
scanf("%d",&n);//讀取修改方式
switch(n)
{
case 1:printf("請輸入航班號:\n");
scanf("%d",&x[0].no);//讀取航班號
break;
case 2:printf("請輸入起始站:\n");
scanf("%s",x[0].name1);//讀取起始站
printf("請輸入終點站:\n");
scanf("%s",x[0].name2);//讀取終點站
break;
}
for(i=0;i<m;i++)
{
if(strcmp(s[i].over,x[0].name1)==0&&strcmp(s[i].over,x[0].name2)==0)//判斷輸出條件
{
printf("航班號 起始站 終點站 時間 機票數\n");
printf(PRINT);
break;
}
if(s[i].num==x[0].no)//判斷輸出條件
{
printf("航班號 起始站 終點站 時間 機票數\n");
printf(PRINT);
break;
}
}
x[0].no=0; //將結構體中的號為零
printf("請輸入新航班號、起始站、終點站、時間(星期幾)、機票數:\n");
scanf("%d%s%s%s%d",&x[0].no,x[0].name1,x[0].name2,x[0].time,&x[0].count);//定義輸入格式
s[i].num=x[0].no;//替換航班號
strcpy(s[i].start,x[0].name1);//替換其始站
strcpy(s[i].over,x[0].name2);//替換終點站
strcpy(s[i].time,x[0].time);//替換時間
s[i].count=x[0].count;//替換機票數
save();//調用保存模塊
printf("是否繼續?請鍵入yes或no以回車鍵結束:\n\n");
scanf("%s",j);
}while(strcmp(j,"yes")==0); //判斷結束
}
else
printf("對不起密碼錯誤!您不是管理員,不能使用此項功能!謝謝!再見!\n\n");
}
Ⅳ c語言程序設計 航班信息管理
#include
#include
#include
#include
(conio.h不是C標准庫中的頭文件。conio是Console Input/Output(控制台輸入輸出)的簡寫,其中定義了通過控制台進行數據輸入和數據輸出的函數,主要是一些用戶通過按鍵盤產生的對應操作,比如getch()函數等等。)
#define MAXSIZE 4/*定義航線量的最大值*/
typedef struct wat_ros
{ char name[10];/*姓名*/
int req_amt;/*訂票量*/
struct wat_ros *next;
}qnode,*qptr;
typedef struct pqueue
{ qptr front;/*等候替補客戶名單域的頭指針*/
qptr rear;/*等候替補客戶名單域的屬指針*/
}linkqueue;
typedef struct ord_ros
{ char name[10];/*客戶姓名*/
int ord_amt;/*訂票量*/
int grade;/*艙位等級*/
struct ord_ros *next;
}linklist;
struct airline
{ char ter_name[10];/*終點站名*/
char air_num[10];/*航班號*/
char plane_num[10];/*飛機號*/
char date[7];/*飛行日期(星期幾)*/
int tkt_amt;/*乘員定額*/
int tkt_sur;/*余票量*/
linklist *order;/*乘員名單域,指向乘員名單鏈表的頭指針*/
linkqueue wait;/*等候替補的客戶名單域,分別指向排隊等候名單隊頭隊尾的指針*/
}lineinfo;
struct airline *start;
struct airline air[MAXSIZE]={{"北京","1","001","SUN",30,15},
{"上海","2","002","MON",40,10},
{"武漢","3","003","FRI",50,14},
{"天津","4","004","TUE",60,20}};
void display(struct airline *info)
/*列印每條航線的基本信息*/
{printf("%8s\t%3s\t%s\t%4s\t\t%3d\t%10d\n",info->ter_name,info->air_num,info->plane_num,info->date,info->tkt_amt,info->tkt_sur);
}
void list()/*列印全部航線信息*/
{ struct airline *info;
int i=0;
info=start;
printf("終點站名\t航班號\t飛機號\t飛行日期\t乘員定額\t余票量\n");
while(i<MAXSIZE)
{
display(info);
info++;
i++;
}
printf("\n\n");
}
void search()
/*根據客戶提出的終點站名輸出航線信息*/
{ struct airline *info,*find();
char name[10];
int i=0;
info=start;
printf("請輸入終點站名:");
scanf("%s",name);
while(i<MAXSIZE)
{
if(!strcmp(name,info->ter_name)) break;
info++;
i++;
}
if(i>=MAXSIZE)
printf("對不起,該航線未找到!\n");
else
{
printf("終點站名\t航班號\t飛機號\t飛行日期\t乘員定額\t余票量\n");
display(info);
}
}
struct airline *find()
/*根據系統提出的航班號查詢並以指針形式返回*/
{ struct airline *info;
char number[10];
int i=0;
info=start;
printf("請輸入航班號:");
scanf("%s",number);
while(i<MAXSIZE)
{
if(!strcmp(number,info->air_num)) return info;
info++;
i++;
}
printf("對不起,該航線末找到!\n");
return NULL;
}
void prtlink()
/*列印訂票乘員名單域的客戶名單信息*/
{ linklist *p;
struct airline *info;
info=find();
p=info->order;
if(p!=NULL){
printf("客戶姓名 訂票數額 艙位等級\n");
while(p){
printf("%s\t\t%d\t%d\n",p->name,p->ord_amt,p->grade);
p=p->next;
}
}
else
printf("該航線沒有客戶信息!!\n");
}
linklist *insertlink(linklist *head,int amount,char name[],int grade)
/*增加訂票乘員名單域的客戶信息*/
{ linklist *p1,*new1;
p1=head;
new1=(linklist *)malloc(sizeof(linklist));
if(!new1) {printf("\nOut of memory!!\n");return NULL;}
strcpy(new1->name,name);
new1->ord_amt=amount;
new1->grade=grade;
new1->next=NULL;
if(head==NULL)/*若原無訂票客戶信息*/
{head=new1;new1->next=NULL;}
else
head=new1;
new1->next=p1;
return head;
}
linkqueue appendqueue(linkqueue q,char name[],int amount)
/*增加排隊等候的客戶名單域*/
{ qptr new1;
new1=(qptr)malloc(sizeof(qnode));
strcpy(new1->name,name);
new1->req_amt=amount;
new1->next=NULL;
if(q.front==NULL)/*若原排隊等候客戶名單域為空*/
q.front=new1;
else
q.rear->next=new1;
q.rear=new1;
return q;
}
void order()
/*辦理訂票業務*/
{ struct airline *info;
int amount,grade;
char name[10];
info=start;
if(!(info=find())) return;/*根據客戶提供的航班號進行查詢,如為空,退出該模塊*/
printf("請輸入你訂票所需要的數量:");
scanf("%d",&amount);
if(amount>info->tkt_amt)/*若客戶訂票額超過乘員定票總額,退出*/
{ printf("\n對不起,您輸入的票的數量已經超過乘員定額!");
return;
}
if(amounttkt_sur)/*若客戶訂票額末超過余票量,訂票成功並等記信息*/
{
int i;
printf("請輸入您的姓名(訂票客戶):");
scanf("%s",name);
printf("請輸入%s票的艙位等級:",name);
scanf("%d",&grade);
info->order=insertlink(info->order,amount,name,grade);/*在訂票乘員名單域中添加客戶信息*/
for(i=0;i<amount;i++)/*依次輸出該訂票客戶的座位號*/
printf("%s的座位號是:%d\n",name,info->tkt_amt-info->tkt_sur+i+1);
info->tkt_sur-=amount;/*該航線的余票量應減掉該客戶的訂票量*/
printf("\n祝您乘坐愉快!\n");
}
else /*若滿員或余票額少於訂票額,詢問客戶是否需要進行排隊等候*/
{ char r;
printf("\n已經沒有更多的票,您需要排隊等候嗎?(Y/N)");
r=getch();
printf("%c",r);
if(r=='Y'||r=='y')
{ printf("\n請輸入您的姓名(排隊訂票客戶):");
scanf("%s",name);
info->wait=appendqueue(info->wait,name,amount);/*在排隊等候乘員名單域中添加客戶信息*/
printf("\n注冊成功!\n");
}
else printf("\n歡迎您下次再次訂購!\n");
}
}
void return_tkt()
/*退票模塊*/
{ struct airline *info;
qnode *t,*back,*f,*r;
int grade;
linklist *p1,*p2,*head;
char cusname[10];
if(!(info=find())) return;/*調用查詢函數,根據客戶提供的航線進行搜索*/
head=info->order;
p1=head;
printf("請輸入你的姓名(退票客戶):");
scanf("%s",cusname);
while(p1!=NULL) {/*根據客戶提供的姓名到訂票客戶名單域進行查詢*/
if(!strcmp(cusname,p1->name)) break;
p2=p1;p1=p1->next;
}
if(p1==NULL){ printf("對不起,你沒有訂過票!\n");return;}/*若未找到,退出本模塊*/
else
{/*若信息查詢成功,刪除訂票客戶名單域中的信息*/
if(p1==head) head=p1->next;
else p2->next=p1->next;
info->tkt_sur+=p1->ord_amt;
grade=p1->grade;
printf("%s成功退票!\n",p1->name);
free(p1);
}
info->order=head;/*重新將航線名單域指向訂票單鏈表的頭指針*/
f=(info->wait).front;/*f指向排隊等候名單隊列的頭結點*/
r=(info->wait).rear;/*r指向排隊等候名單隊列的尾結點*/
t=f;/*t為當前滿點條件的排隊候補名單域*/
while(t)
{
if(info->tkt_sur=info->wait.front->req_amt)
{/*若滿足條件者為頭結點*/
int i;
info->wait.front=t->next;
printf("%s訂票成功!\n",t->name);
for(i=0;ireq_amt;i++)/*輸出座位號*/
printf("%s的座位號是:%d\n",t->name,(info->tkt_sur)-i);
info->tkt_sur-=t->req_amt;
info->order=insertlink(info->order,t->req_amt,t->name,grade);/*插入到訂票客戶名單鏈表中*/
free(t);
break;
}
back=t;t=t->next;
if((info->tkt_sur)>=(t->req_amt)&&t!=NULL)/*若滿足條件者不為頭結點*/
{ int i;
back->next=t->next;
printf("%s訂票成功!\n",t->name);
for(i=0;ireq_amt;i++)/*輸出座位號*/
printf("
Ⅳ c語言編程:航班信息管理程序
編譯無錯!
#include<stdio.h>
struct Art
{
long int hangbanh;
char qdcity[10];
char zdcity[10];
char qftime[20];
char gettime[20];
char jx[10];
char banqi[15];
}a[100];
int s;
void cunqu()
{ int i=0;
long int k;
printf("請輸入航班號,輸入-1結束:");
scanf("%ld",&k);
while(k!=-1)
{a[i].hangbanh=k;
printf("\n請輸入終點站:");
scanf("%s",a[i].zdcity);
printf("\n請輸入起飛時間:");
scanf("%s",a[i].qftime);
printf("\n請輸入到達時間:");
scanf("%s",a[i].gettime);
printf("\n請輸入機型:");
scanf("%s",a[i].jx);
printf("\n請輸入班期:");
scanf("%s",a[i].banqi);
i++;
printf("\n\n請輸入航班號,輸入-1結束:");
scanf("%ld",&k);
}
s=i;
}
void caxun()
{ long int k;
printf("請輸入航班號\n");
scanf("%ld",&k);
for(int i=0;i<s;i++)
if(k==a[i].hangbanh)
{
printf("航班號%ld\n",a[i].hangbanh);
printf("起點站%s\n",a[i].qdcity);
printf("終點站%s\n",a[i].zdcity);
printf("起飛時間%s\n",a[i].qftime);
printf("到達時間%s\n",a[i].gettime);
printf("機型%s\n",a[i].jx);
printf("班期%s\n",a[i].banqi);
}
}
void paixu()
{ int i,j;
struct Art t;
for(i=0;i<s;i++)
for(j=i;j<s;j++)
if(a[i].hangbanh>a[j].hangbanh)
{t=a[i];a[i]=a[j];a[j]=t;}
for(i=0;i<s;i++)
{printf("航班號%ld\n",a[i].hangbanh);
printf("起點站%s\n",a[i].qdcity);
printf("終點站%s\n",a[i].zdcity);
printf("起飛時間%s\n",a[i].qftime);
printf("到達時間%s\n",a[i].gettime);
printf("機型%s\n",a[i].jx);
printf("班期%s\n\n",a[i].banqi);
}
}
void prit()
{printf("\t1.存取\n");
printf("\t2.查詢\n");
printf("\t3.排序\n");
}
void main()
{int k;
prit();
do{
printf("請選擇:");
scanf("%d",&k);
switch(k)
{case 1: cunqu();break;
case 2:caxun();break;
case 3:paixu();break;
case 0:break;
default :break;
}
}while(k!=0);
}
Ⅵ 求C語言編程(航班信息查詢與檢索)
#include "stdio.h"
#include "malloc.h"
#include "string.h"
#define MAXN 100
typedef struct{
char hour[MAXN];
char minute[MAXN];
} time;
typedef struct node
{
char number[MAXN]; //航班號
time start; //起飛時間
time end; //到達時間
char start_station[MAXN]; //起點站
char end_station[MAXN]; //終點站
char type[MAXN]; //飛機型號
char price[MAXN]; //票價
struct node*link;
}NODE;
NODE *create_link_list(int n)
{
int i;
NODE *head,*p,*q;
if(n==0)return(NULL);
head=(NODE*)malloc(sizeof(NODE));
for(i=0;i <MAXN;i++)
{
head->number[i]='\0';
head->start.hour[i]='\0';
head->start.minute[i]='\0';
head->end.hour[i]='\0';
head->end.minute[i]='\0';
head->start_station[i]='\0';
head->end_station[i]='\0';
head->type[i]='\0';
head->price[i]='\0';
}
p=head;
for(i=1;i <n;i++)
{
printf("請輸入航班號:");
scanf("%s",&(p->number));
printf("請輸入起飛時間(時 分):");
scanf("%s %s",&(p->start.hour),&(p->start.minute));
printf("請輸入達到時間(時 分):");
scanf("%s %s",&(p->end.hour),&(p->end.minute));
printf("請輸入起點站 終點站:");
scanf("%s %s",&(p->start_station),&(p->end_station));
printf("請輸入飛機型號:");
scanf("%s",&(p->type));
printf("請輸入票價:");
scanf("%s",&(p->price));
printf("\n");
q=(NODE*)malloc(sizeof(NODE));
p->link=q;
p=q;
}
printf("請輸入航班號:");
scanf("%s",&(p->number));
printf("請輸入起飛時間(時 分):");
scanf("%s %s",&(p->start.hour),&(p->start.minute));
printf("請輸入達到時間(時 分):");
scanf("%s %s",&(p->end.hour),&(p->end.minute));
printf("請輸入起點站 終點站:");
scanf("%s %s",&(p->start_station),&(p->end_station));
printf("請輸入飛機型號:");
scanf("%s",&(p->type));
printf("請輸入票價:");
scanf("%s",&(p->price));
printf("\n");
getchar();
p->link=NULL;
return(head);
}
void insert(NODE **p_head,NODE *q)
{
NODE *p;
if(*p_head==NULL)
*p_head=q;
else
{
p=*p_head;
while(p!=NULL&&p->link!=NULL)
p=p->link;
p->link=q;
}
}
unsigned int countit(NODE* n)//計算鏈表長度
{
unsigned int counti = 0;
while(n!=NULL)
counti++,n=n->link;
return counti;
}
NODE* getindex(NODE* head, int num);
NODE* getindex(NODE* head, int num)//取得index為num 的節點!
{
if(num<0 || num>countit(head))
return NULL;
NODE* rn = head;
while(--num>0)
rn = rn->link;
return rn;
}
int binSearch(NODE* n,char *strinput,int low, int high)// 二分查找
{
int i;
int middle = (high+low)/2;
if (high < low)
return 0;
if ((i=strcmp(strinput, n->number)) <0)
high= middle;
else if (i > 0)
low = middle;
else
{
i = middle;
return i;
}
binSearch(getindex(n,middle),strinput,low,high);
}
int bisect(char a[],int n,char s[MAXN])//二分查找
{
int i,j,m;
i=0;
j=n-1;
while(i <=j)
{
m=(i+j)/2;
}
return(-1);
}
NODE *search1(NODE *head,char v[MAXN])//起點站順序查找
{
for(;head!=NULL&&strcmp(head->start_station,&v[0]);head=head->link);
return(head);
}
NODE *search2(NODE *head,char w[MAXN])//到達站順序查找
{
for(;head!=NULL&&strcmp(head->end_station,&w[0]);head=head->link);
return(head);
}
NODE *search3(NODE *head,char x[MAXN],char y[MAXN])//起飛時間順序查找
{
for(;head!=NULL&&(strcmp(head->start.hour,&x[0]) || strcmp(head->start.minute,&y[0]));head=head->link);
return(head);
}
NODE *search4(NODE *head,char t[MAXN],char u[MAXN])//到達時間順序查找
{
for(;head!=NULL&&(strcmp(head->end.hour,&t[0]) || strcmp(head->end.minute,&u[0]));head=head->link);
return(head);
}
void output(NODE *p)
{
while(p!=NULL)
{
printf("航班信息:\n");
printf("航班號:%s\n",p->number);
printf("起飛時間:%s點%s分,",p->start.hour,p->start.minute);
printf("到達時間:%s點%s分\n",p->end.hour,p->end.minute);
printf("起點站:%s,",p->start_station);
printf("到達站:%s\n",p->end_station);
printf("飛機型號:%s ",p->type);
printf("票價:%s元\n\n",p->price);
p=p->link;
}
}
NODE *rank( NODE *head)
{
NODE *q=0,*p=0,*t,*h1;
h1=head->link;
head->link=NULL;
while(h1!=NULL)
{
t=h1;
h1=h1->link;
p=head;
q=head;
while( p!=NULL && strcmp(t->number, p->number)>0 )
{
q=p;
p=p->link;
}
if(q == p)
{
t->link=p;
head=t;
}
else
{
t->link=p;
q->link=t;
}
}
return head;
}
int main(int argc, char* argv[])
{
NODE *p,*q,*r;
int a,b,i,j,n;
int count=0;
char o[MAXN];
char s[MAXN];
char v[MAXN];
char w[MAXN];
char x[MAXN];
char y[MAXN];
char t[MAXN];
char u[MAXN];
for(i=0;i <MAXN;i++)
{
o[i]='\0';
s[i]='\0';
v[i]='\0';
w[i]='\0';
x[i]='\0';
y[i]='\0';
t[i]='\0';
u[i]='\0';
}
while(true)
{
printf("【航班信息的查詢與檢索】\n");
printf("★*******************************★\n");
printf(" 1.建立航班信息\n");
printf(" 2.插入航班信息\n");
printf(" 3.按航班號進行排序 \n");
printf(" 4.航班信息查詢\n");
printf(" 5.顯示航班信息\n");
printf(" 6.退出本系統\n");
printf("★*******************************★\n");
scanf("%d",&a);
getchar();
switch(a)
{
case 1:
printf("請輸入你所要建立的航班信息個數:");
scanf("%d",&n);
p=create_link_list(n);
break;
case 2:
q=create_link_list(1);
insert(&p,q);
break;
case 3:
p = rank(p);
break;
case 4:
printf("\n1、按照航班號查詢.\n");
printf("2、按照起點站查詢.\n");
printf("3、按照到達站查詢.\n");
printf("4、按照起飛時間查詢.\n");
printf("5、按照到達時間查詢.\n");
scanf("%d",&b);
getchar();
switch(b)
{
case 1:
p=rank(p);
printf("請輸入您所要找的航班號:");
scanf("%s",s);
if( binSearch(p,s,1, countit(p)) )
printf("scuess!\n");
break;
case 2:
printf("請輸入起點站");
scanf("%s",&v[MAXN]);
if(search1(p,&v[MAXN])!=NULL)
{
printf("查詢成功!\n");
r=search1(p,&v[MAXN]);
output(r);
}
else
printf("查詢失敗,該信息錄中沒有該起點站!\n");
break;
case 3:
printf("請輸入到達站");
scanf("%s",&w[MAXN]);
if(search2(p,&w[MAXN])!=NULL)
{
printf("查詢成功!\n");
r=search2(p,&w[MAXN]);
output(r);
}
else
printf("查詢失敗,該信息錄中沒有該到達站!\n");
break;
case 4:
printf("請輸入起飛時間(時 分)");
scanf("%s %s",&x[MAXN],&y[MAXN]);
if(search3(p,&x[MAXN],&y[MAXN])!=NULL)
{
printf("查詢成功!\n");
r=search3(p,&x[MAXN],&y[MAXN]);
output(r);
}
else
printf("查詢失敗,該信息錄中沒有該到達站!\n");
break;
case 5:
printf("請輸入到達時間");
scanf("%s %s",&t[MAXN],&u[MAXN]);
if(search4(p,&t[MAXN],&u[MAXN])!=NULL)
{
printf("查詢成功!\n");
r=search4(p,&t[MAXN],&u[MAXN]);
output(r);
}
else
printf("查詢失敗,該信息錄中沒有該到達站!\n");
break;
}
break;
case 5:
output(p);
printf("\n");
break;
case 6:
return(0);
}
}
return(0);
}
Ⅶ C語言程序設計 飛機訂票管理系統
編制一個航班訂票系統。應具備如下功能:該航班僅有一架100座飛機;該飛機座位分為吸煙區(30個座位)和無煙區(70個);訂票系統界面是選擇菜單:1.選吸煙區座位號;2.選無煙區座位號;用戶輸入自己的選擇後,該區若有空位,則順序地分配一個座號;否則致歉;若吸煙區已滿而無煙區有空位,則徵求顧客意見,是否願意得到無煙區的空位,若願意,則在無煙區分配一個座號,否則致歉退出;顧客不得自主挑選座位號;
#include<cstdio>
#include<stdlib.h>
#include<string.h>
#include<memory.h>
#define LIN 31
#define LIE 71
static int smok[LIN];//吸煙區票
static int nosmoke[LIE];//無煙區票
void Initnosmoke();//初始化
void ASK();void Initsmok();
void nosmok();
void smoke();
int search(int *array,int size);
void show();
int main()
{
Initnosmoke();
Initsmok();show();return 0;}void Initnosmoke()//初始化無煙區票{int sun=0;for(int j=0;j<LIE;j++){sun+=1;nosmoke[j]=sun;}}void Initsmok()//初始化吸煙區票{int k=0;for(int i=0;i<LIN;i++){k+=1;smok[i]=k;}}int search(int *array,int size)/*該函數的作用是用來查看系統中某類票是否賣完,入股賣完了返回1,反之返回的是0*/{int i;for(i=0;i<size;i++){if(array[i]!=0){return 0;}else{;}}return 1;}void nosmok()//購買無煙區票{for(int i=0;i<LIE;i++){if(i<LIE-1){if(nosmoke[i]!=0){printf("你票是:NOSMOKE_%d\n",nosmoke[i]);nosmoke[i]=0;break;}else{;}}else{printf("對不起!NOSMOKE票已售完!");}}}void ASK()/*該函數用來詢問客戶是否需要買NOSMOKE票當SMOKE票賣完的情況下*/{char ask;printf("NOSMOKE票你要嗎?(y/n)\n");ask=getchar();if(ask =='y' || ask=='Y' ){nosmok();}else if(ask=='n' || ask=='N'){printf("謝謝!再見\n");}else{printf("輸入錯誤!\n");}}void smoke()//購買吸煙區票{for(int j=0;j<LIN;j++){if(j<LIN-1){if(smok[j]!=0){printf("你票是: SMOKE_%d\n",smok[j]);smok[j]=0;break;}else{;}}else{printf("對不起!SMOKE票已售完!");{fflush(stdin);int rec=search(nosmoke,LIE);if(rec==0){ASK();}else{printf("謝謝!\n");}}}}}void window(){printf("\t\t歡迎使用航班訂票系統\n");printf("\t\t1.吸煙區座位\n");printf("\t\t2.無煙區座位\n");printf("\t\t3.退出系統\n");printf("\t\t請選擇(1~3)進行操作:\n");}void show(){system("color 4a");char ch=' ';window();while(ch!='3'){fflush(stdin);ch=getchar();switch(ch){case '1':{smoke();break;}case '2':{nosmok();break;}case '3':{break;}default:break;}window();ch=getchar();}}
Ⅷ c語言編程:飛機訂票系統,c++運行
#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;//已訂票數量
struct Yidingkehu *next1;//
}Yidingkehu,*Link;
typedef struct Weidingkehu
{//單鏈隊
char name[15];//預訂票的客戶姓名
int yudingpiao;// 要訂票數量
struct Weidingkehu *next2;//下一個鏈隊結點指針
}Weidingkehu,*Qptr;
typedef struct Hangxian
{//創建一個含有六個信息的結構體
char hangbanhao[15];//航班號-
char feijihao[15];//飛機號
int feixingriqi;//起飛時間
int chenkerenshu;//座位數
int yupiao;//余票
char zhongdianzhai[15];//降落城市
struct Hangxian *next;//指向下一個鏈結點的指針
struct Yidingkehu *yiding;//定義一個指向已訂票客戶的頭結點指針
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 歡迎使用航空客運訂票系統\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\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("乘客總數\n");
scanf("%d",&p->chenkerenshu);
printf("余票數\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請輸入你要訂的票數:"); 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 預訂請輸入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("沒有人預訂票,是否要預訂?\n");
else if(q.front!=q.rear) printf("已有人預訂票,是否要預訂?\n");
printf("預訂請輸入1 否則輸入2 : ");
scanf("%d",&n);
printf("\n");
if(n==1)
{
printf("請輸入你的姓名"); gets(q3->name); gets(q3->name);//q3不能指向name???
printf("請輸入訂票數"); scanf("%d",&q3->yudingpiao);
q3->next2=NULL;
q.rear->next2=q3;
q.rear=q3;
printf(" 你已經預訂了 !\n");
}
}
loop1:;
}
void tuipiaogongnen()//***************************************************************退票功能
{
}
///////////以下是人家的要求//////////
1、本系統採用一個包含N個數據的結構體數組,每個數據的結構應當包括:起飛地、目的地 航班號、座次號碼、座次訂出與否標記、訂座者的姓名和訂座者的身份證號碼。
2、本系統顯示這樣的菜單:
(1) 輸入航班信息
(2) 輸出航班信息
(3) 查找航班信息
a.顯示空座的數量
b.顯示空座的信息
c.顯示已訂座的信息
d.起飛時間
(4)訂票預約
(5)刪除定票預約
(6)退出系統
1、 本系統成功執行菜單的每個信息,選項4)和5)將要求額外的輸入,並且它們都允許用戶收回其輸入。
2、 查找航班信息既可按線路查,也可按目的地查。
4、在兩次運行之間,數據被保存於一個文件里,當本程序重新開
始的時候,它首先從該文件讀入數據
Ⅸ 請高手幫忙啊!C語言編程~飛機訂票系統
昨天有個人在網上也問了《飛機訂票系統》。不過他是要把程序改的更完善些。程序編繹通過!運行良好。
我幫他修改了一點。他剛剛結貼~
你可以到這里去看一下。希望能幫到你!
http://..com/question/42468468.html
Ⅹ c語言程序設計關於航班信息管理
void distribute(slnode *sl,int i,arrtype_n f,arrtype_n e)
{
int j,p;
for(j=0;j<radix_n;j++)
{
f[j]=e[j]=0;
}
for(p=sl[0].next;p;p=sl[p].next)
{
j=sl[p].keys[i]%48;
if(!f[j])
f[j]=p;
else
sl[e[j]].next=p;
e[j]=p;
}
}
void collect(slnode *sl,int i,arrtype_n f,arrtype_n e)
{
int j,t;
for(j=0;!f[j];j++);
sl[0].next=f[j];
t=e[j];
while(j<radix_n-1)
{
for(j=j+1;j<radix_n-1&&!f[j];j++);
if(f[j])
{
sl[t].next=f[j];
t=e[j];
}
}
sl[t].next=0;
}
void distribute_c(slnode *sl,int i,arrtype_c f,arrtype_c e)
{
int j,p;
for(j=0;j<radix_c;j++)
{
f[j]=e[j]=0;
}
for(p=sl[0].next;p;p=sl[p].next)
{
j=sl[p].keys[i]%65;
if(!f[j])
f[j]=p;
else
sl[e[j]].next=p;
e[j]=p;
}
}
void collect_c(slnode *sl,int i,arrtype_c f,arrtype_c e)
{
int j,t;
for(j=0;!f[j];j++);
sl[0].next=f[j];
t=e[j];
while(j<radix_c-1)
{
for(j=j+1;j<radix_c-1&&!f[j];j++);
if(f[j])
{
sl[t].next=f[j];
t=e[j];
}
}
sl[t].next=0;
}
void radixsort(sllist &l)//鏈式
{
int i;
arrtype_n fn,en;
arrtype_c fc,ec;
for(i=0;i<l.length;i++)
l.sl[i].next=i+1;
l.sl[l.length].next=0;
for(i=l.keynum-1;i>=2;i--)
{
distribute(l.sl,i,fn,en);
collect(l.sl,i,fn,en);
}
for(i=1;i>=0;i--)
{
distribute_c(l.sl,i,fc,ec);
collect_c(l.sl,i,fc,ec);
}
}
void arrange(sllist &l)//重新整理
{
int p,q,i;
slnode temp;
p=l.sl[0].next;
for(i=1;i<l.length;i++)
{
while(p<i)
p=l.sl[p].next;
q=l.sl[p].next;
if(p!=i)
{
temp=l.sl[p];
l.sl[p]=l.sl[i];
l.sl[i]=temp;
l.sl[i].next=p;
}
p=q;
}
}
int binsearch(sllist l,keytype key[])
{
int low,high,mid;
low=1;
high=l.length;
while(low<=high)
{
mid=(low+high)/2;
if(strcmp(key,l.sl[mid].keys)==0)
return mid;
else if(strcmp(key,l.sl[mid].keys)<0)
high=mid-1;
else
low=mid+1;
}
return 0;
}
void seqsearch(sllist l,keytype key[],int i)
{
int j,k,m=0;
printf("*************************************************************\n");
printf("* 航班號 起始站 終點站 航班期 起飛時間 到達時間 機型 票價*\n");
for(j=1;j<=l.length;j++)
{
switch(i)
{
case 2:k=strcmp(key,l.sl[j].others.start);break;
case 3:k=strcmp(key,l.sl[j].others.end);break;
case 4:k=strcmp(key,l.sl[j].others.time1);break;
case 5:k=strcmp(key,l.sl[j].others.time2);break;
}
if(k==0)
{
m=1;
printf("* %-8s%-7s%-6s%-11s%-9s%-7s%-5s%4d *\n",l.sl[j].keys,l.sl[j].others.start,l.sl[j].others.end,l.sl[j].others.sche,l.sl[j].others.time1,l.sl[j].others.time2,l.sl[j].others.model,l.sl[j].others.price);
}
}
if(m==0)
printf("* 無此航班信息,可能是輸入錯誤*\n");
printf("*************************************************************\n");
}
void searchcon(sllist l)
{
keytype key[keylen];
int i=1,k;
while(i>=1&&i<=5)
{printf("\n ********************\n");
printf(" * 航班信息查詢系統 *\n");
printf(" ********************\n");
printf(" * 1.航班號*\n");
printf(" * 2.起點站*\n");
printf(" * 3.終點站*\n");
printf(" * 4.起飛時間*\n");
printf(" * 5.到達時間*\n");
printf(" * 0.退出系統*\n");
printf(" ********************\n");
printf(" 請選擇(0-5):");
scanf("%d",&i);
printf("\n");
switch(i)
{case 1:printf("輸入要查詢的航班號(字母要大寫):");
scanf("%s",key);
k=binsearch(l,key);
printf("*************************************************************\n");
if(k==0)
printf("* 無此航班信息,可能是輸入錯誤!*\n");
else
{
printf("* 航班號 起點站 終點站 航班期 起飛時間 到達時間 機型 票價*\n");
printf("* %-8s%-7s%-6s%-11s%-9s%-7s%-5s%4d *\n",l.sl[k].keys,l.sl[k].others.start,l.sl[k].others.end,l.sl[k].others.sche,l.sl[k].others.time1,l.sl[k].others.time2,l.sl[k].others.model,l.sl[k].others.price);
}
printf("*************************************************************\n");
break;
case 2:printf("輸入要查詢的航班起點站名:");
scanf("%s",key);
seqsearch(l,key,i);
break;
case 3:printf("輸入要查詢的航班起點站名:");
scanf("%s",key);
seqsearch(l,key,i);
break;
case 4:printf("輸入要查詢的航班起點站名:");
scanf("%s",key);
seqsearch(l,key,i);
break;
case 5:printf("輸入要查詢的航班起點站名:");
scanf("%s",key);
seqsearch(l,key,i);
break;
case 0:printf("\n\n\n 再 見n\n\n");
}
}
}
void inputdata(sllist &l)
{
int i=++l.length;
char yn='y';
while(yn=='y'||yn=='Y')
{
printf("航班號 起點站 終點站 航班期 起飛時間 到達時間 機型 票價\n");
scanf("%s%s%s%s%s%s%s%d",l.sl[i].keys,l.sl[i].others.start,l.sl[i].others.end,l.sl[i].others.sche,l.sl[i].others.time1,l.sl[i].others.time2,l.sl[i].others.model,&l.sl[i].others.price);
++i; getchar();
radixsort(l);
arrange(l);
printf("繼續輸入嗎?y/n:");
scanf("%c",&yn);
}
l.length=i-1;
}
void main()
{
sllist l;
l.keynum=6;
l.length=0;
inputdata(l);
searchcon(l);
}