本文目录一览:
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("