本文目錄一覽:
c語言編程:航班信息管理程序
編譯無錯!
#includestdio.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;is;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;is;i++)
for(j=i;js;j++)
if(a[i].hangbanha[j].hangbanh)
{t=a[i];a[i]=a[j];a[j]=t;}
for(i=0;is;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語言程序設計關於航班信息管理
void distribute(slnode *sl,int i,arrtype_n f,arrtype_n e)
{
int j,p;
for(j=0;jradix_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(jradix_n-1)
{
for(j=j+1;jradix_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;jradix_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(jradix_c-1)
{
for(j=j+1;jradix_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;il.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;il.length;i++)
{
while(pi)
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=1i=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);
}
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(iMAXSIZE)
{
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(iMAXSIZE)
{
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(iMAXSIZE)
{
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(amountinfo-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;iamount;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(“
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/302798.html