您的位置:

航班管理c语言,航班管理系统C语言程序

本文目录一览:

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