c语言航班查询系统(C语言航班查询系统)

今天给各位分享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语言航班查询系统的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于C语言航班查询系统、c语言航班查询系统的信息别忘了在本站进行查找喔。

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年3月29日 14:31:26
下一篇 2024年3月29日 14:39:40

相关推荐

  • c语言改写模式,c语言实现修改功能

    c语言程序修改? 1、这个程序有4个错误,我都加粗了,第一个是m没有赋初值,第二个是while表达式中的ch=getchar()需要括号括起来,第三个是m=m*10+ch-0中的0也需要用单引号括起来,第四个是第2个while中为m!=0。 2、define容易造成误会,因为不符合一般的编程习惯,false 0, true 1;scanf放在你的那个地方是达…

    2024年5月23日
    3900
  • c语言控制代码的换码序列,c语言交换代码

    求C语言编程大神解答一下下面这个编程代码? k==5,用5去除125余0,所以r=125%5中r为0。由于!0为1,所以执行while循环体:先打印出5(k的值),再n=n/k==125/5=25;由于251则再打印出*号。这一循环结果输出是5*。 下面是我的代码,三个函数分别对应三个问题。 在实现基本要求的前提下,拓展了可以从键盘输入的功能,以下为各题代码…

    2024年5月23日
    5600
  • c语言扫描io脚状态,c语言端口扫描

    求51单片机的上升沿和下降沿C语言检测程序列子,端口就是普通IO口。 上升沿触发是当信号有上升沿时的开关动作,当电位由低变高而触发输出变化的就叫上升沿触发。也就是当测到的信号电位是从低到高也就是上升时就触发,叫做上升沿触发。 单片机怎么计算1s内下降沿的个数的C语言程序或者计算两个下降沿的时间(检测脉冲频率)计算1s内下降沿的个数方法是,一个定时器设置定时1…

    2024年5月23日
    4400
  • c语言mallloc使用的简单介绍

    C语言中使用malloc必须加#includemallo.h? 1、在C语言中使用malloc函数进行动态内存分配。malloc的全称是memory allocation,中文叫动态内存分配。原型:extern void malloc(unsigned int num_bytes);功能:分配长度为num_bytes字节的内存块。 2、你可以看一下C语言那本…

    2024年5月23日
    4400
  • c语言三位小数,C语言三位小数

    怎样用C++语言输出精确到小数点后三位的数? 1、用C++语言输出精确到小数点后三位的数,可以参考下面给出的代码:coutsetiosflags(ios:fixed)setprecision(3)。其中 setiosflags中set是设置的意思。ios是iostream的缩写,即输入输出流。flags是标志的意思。 2、要精确到小数点后若干位,则数据类型为…

    2024年5月23日
    7300
  • c语言21点游戏,二十一点游戏代码c语言

    如何使用C语言编写简单小游戏? 1、数学知识:长方形的面积S=a*b 长方形周长L=2*(a+b)其中a b分别为长方形的宽和高。算法分析:长方形面积及周长均依赖于宽和高,所以先要输入宽高值,然后根据公式计算,输出结果即可。 2、/*也不知道你是什么级别的,我是一个新手,刚接触编程语言,以下是我自己变得一个小程序,在所有c语言的编译器(vc++0、turbo…

    2024年5月23日
    6400
  • c语言当中的null,C语言当中的符号

    C/C++中,NULL和null的区别是什么? nul 和 null要看编译器,不同的编译器有所区别。 所以C或者C++中都使用一个特殊定义NULL表示无效值,其本质就是未定义具体数据类型的0值。 null是是什么都没有的意思。在java中表示空对象。 本意是“空的;元素只有零的”意思。计算机中通常表示空值,无结果,或是空集合。\x0d\x0a在ASCII码…

    2024年5月23日
    4500
  • 包含c语言对txt文件命名的词条

    如何在C语言编程里面修改源文件名字 如果你是在WINDOWS的话,简单了,随便用个编辑器,比如记事本,然后写c源程序,保存到你想要保存的位置。如果你在DOS下,可以用edit,写好以后,按alt键,选择文件菜单,然后保存。 用open打开文件,注意操作模式使用“修改”或者“添加” 用write或者fprintf向文件中写入你的内容。 用close关闭文件。 …

    2024年5月23日
    4900
  • 学c语言编程,学c语言编程用什么软件

    编程开发必须要学C语言吗? 1、要学习。编程开发的学习内容主要包括c语言、python和c+语言。C语言作为一种简单灵活的高级编程语言,它是一个面向过程的语言,一般是作为计算机专业的基础入门语言课程。 2、C语言。对于刚接触编程的人来说,先学习C语言是非常重要的。C语言可以说是是计算机编程语言的鼻祖,其他的编程语言几乎全是由C语言变化衍生出来的。 3、不需要…

    2024年5月23日
    3500
  • c语言用string定义字符串,c语言中用string类型来处理字符串类型

    C++怎样定义定义字符串 1、第一是字符数组来表示字符串。用下面的语句声明:char a[10];C语言中字符数组与字符串的唯一区别是字符串末尾有一个结束符\0,而字符数组不需要。 2、在C中定义字符串有下列几种形式:字符串常量,char数组,char指针 字符串常量 即:位于一对双括号中的任何字符。双引号里的字符加上编译器自动提供的结束标志\0字符,作为 …

    2024年5月23日
    4300

发表回复

登录后才能评论



关注微信