今天给各位分享c语言航班查询系统的知识,其中也会对C语言航班查询系统进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
1、求C语言编程(航班信息查询与检索)2、请用c语言用结构体或者二维数组完成航班信息管理系统3、作业:设计航班信息的查询与检索 c语言4、c语言程序设计关于航班信息管理
求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!=NULLp-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(num0 || numcountit(head))
return NULL;
NODE* rn = head;
while(–num0)
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!=NULLstrcmp(head-start_station,v[0]);head=head-link);
return(head);
}
NODE *search2(NODE *head,char w[MAXN])//到达站顺序查找
{
for(;head!=NULLstrcmp(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语言用结构体或者二维数组完成航班信息管理系统
需要分析:
A.车寻航线:
1.根据旅客提出的起点站,终点站名输出下列信息:航班号,票价,折扣,最多载客量,是否满载,起飞时间,降落时间和飞行时间;
2.根据订票乘客的姓名可以查询所订航班的航班号,座位号,飞行日期等信息;
3.根据航班号查询航班的起点站,中转站,终点站名,票价,折扣,最多载客量,是否满载,起飞时间,降落时间和飞行时间;
B.承办客户提出的要求(航班号、订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号,需付款项信息;若已满员或余票额少于盯票额,则需重新询问客户要求。若需要,可登记排队候补;
C.根据客户提供的情况(日期、航班),为客户办理退票手续。(然后查询该航班是否有人排队候补,首先询问排第一的客户,若所退票额所能满足他的要求,则为他办理订票手续,否则依次询问其他排队候补客户);
E.内部人员对航班情况的控制:
可以录入航班信息,删除航班信息,修改航班信息,查看基本航班信息。
概要设计:
因为每个客户名单或查询名单都包括多个数据域,这样就需要有一个能存储多个数据域的数据类型来存储,因此采用单链表类型。由于航线的信息是固定的,可选用结构体数组,又因为订票与预约人数无法预计,可选用链表存储信息。
线性表的单链表存储结构:typedef struct LNode{
ElemType;
Struct Lnode*next;}LNode,*LinkList;
a.抽象数据类型顺序表的定义如下:
ADT SqList{
数据对象:D={ai|ai∈数据类型,i=1,2,3…,n}
数据关系:R1={ai-1,ai|ai-1,ai∈D,i=1,2,3…,n}
基本操作:
InitList_Sq(L)
操作结果:创建空的顺序表。
CreatList_Sq(L)
操作结果:建立顺序表。
}ADT SqList
b.抽象数据类型单链表的定义如下:
ADT LinkList{
数据对象:D={ai|ai∈结构类型,i=1,2,3…,n,n0}
数据关系:R1={ai-1,ai|ai-1,ai∈D,i=1,2,3…,n}
基本操作:
InitList_L(L)
操作结果:创建空的顺序表。
}ADT LinkList
在main()里调用各个函数
2.主程序
void main(){
初始化;
do{
接受命令;
处理命令;
}while(“命令”!=“退出”);
}
3.程序的模块调用:
三.详细设计:
1.所有数据类型:
struct plan /*航班数据*/
{
作业:设计航班信息的查询与检索 c语言
C语言的增删改查,还带输入判定,还不带数据库的,没有难点,但好烦,自己写比较好,好的程序员都是代码敲出来的,基数排序和二分查找都是很简单的算法,百度词条都有了各语言的直接实现
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语言航班查询系统的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于C语言航班查询系统、c语言航班查询系统的信息别忘了在本站进行查找喔。