基于C语言数据结构的航班查询系统
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
printf("*** ------------------------------
***\n");
printf("*** * Flight inquires the system *
***\n");
printf("*** ------------------------------ ***\n");
printf("****************************************************\n");
printf("*** Please chioce the way to inquires : ***\n");
printf("*** -----------------------------------
/**************************************** ***简易航班查询系统 ****By liaoye928 1、 功能:
实现以下功能: 1) 信息录入 2) 信息显示(按照起飞时间先后顺序显示) 3) 信息查询(可根据不同的关键字进行查询) 2、 说明: 1) 使用链表对录入的信息进行存储 2) 对录入的信息进行排序(可按起飞时间进行排序) *******************************************/ #include"include.h"
}
void inquire_by_staddress(Node_list *L,char s[])//根据起飞地点查找并显示 {
int flag=0; L=L->next; while(L != NULL) {
int main(void) {
Node_list *L; //定义存储链表 init_N(&L); //初始化链表 char ch; Data_type *E; //定义航班信息结构体
FILE *fp;//文件指针 fp=fopen("flight_input.txt","r");
E=(Data_type *)malloc(sizeof(Data_type));
while(8 ==fscanf(fp,"%d %s %s %s %s %s %s %d",&E->number, E->staddress,E->arraddress,E->DATE,E->TYPE, E->stime,E->atime,&E->value))//读取文件内容,对应结构体各元素
{ save_insert(L,E);//将其放入链表存储 E=(Data_type *)malloc(sizeof(Data_type));//开辟结构体指针
#include<stdio.h> #include<stdbool.h> #include<stdlib.h> #include<string.h>
typedef struct flight //定义航班信息结构体类型
{ int number; char staddress[10]; char arraddress[10]; char DATE[10]; char TYPE[4]; char stime[10]; char atime[10]; int value;
else {
printf("malloc failed!\n"); return false; } }
bool init_D(Data_type **E)//航班信息结构体初始化 {
(*E)=(Data_type *)malloc(sizeof(Data_type)); if(NULL != (*E))
return true; else
{ printf("malloc failed!\n"); return false; }
}
bool save_insert(Node_list *L,Data_type *E)//插入链表存储 {
Node_list *new_node; init_N(&new_node); new_node->info=E;
p->info=q->info;
q->info=tmp;
}
}
}
void show_one(Node_list *L) //封转打印函数,固定打印格式
{
printf("%-9d%-10s--> %-11s%-10s%-6s%-9s%-9s%-8d\n",
L->info->number,L->info->staddress,L->info->arraddress,
printf("TYPE statime arr_time value\n");
while(L->next != NULL)
{
L=L->next;
show_one(L);
}
}
void inquire_by_number(Node_list *L, int num )//查找航班号为用户所需,并显示到屏幕 {
L->info->DATE,L->info->TYPE,L->info->stime,L->info->atime,
L->info->value);
}
void show_info(Node_list *L)//显示当前链表的所有信息
{
char a[80];
printf("f_number
path
DATE ");
{ show_info(L);//浏览所有航班信息 printf("****Please input your choice here: "); continue; } if('B' == choice) { printf("please input the flight numble:"); scanf("%d",&num);
void show_info(Node_list *); void inquire_by_number(Node_list *,int); void inquire_by_staddress(Node_list *,char *); void inquire_by_araddress(Node_list *,char *); void inquire_by_data(Node_list *,char *);
inquire_by_staddress(L,s_addr);//根据起飞地点查找 printf("****Please input your choice here: "); continue; }
if('D' == choice)
{ printf("please input the flight arrived address:"); scanf(" %s",a_addr);
***\n");
printf("*** A:Scan all flight information
***\n");
printf("*** B:By flight numble
***\n");
printf("*** C:By start address
***\n");
printf("*** D:By arrive address
inquire_by_araddress(L,a_addr);//根据降落地点查找并显示 printf("****Please input your choice here: "); continue; }
if('E' == choice) { printf("please input the flight take off date:"); scanf(" %s",date);
char choice; //读取用户选择 int num; char s_addr[10]; char a_addr[10]; char date[10];
printf("****Please input your choice here: "); while(1 == scanf(" %c",&choice)) { if('A' == choice)
inquire_by_number(L,num);//根据航班号查找 printf("****Please input your choice here: "); continue; } if('C' == choice) { printf("please input the flight take off address:"); scanf(" %s",s_addr);
#endif
#include"include.h"
bool init_N(Node_list **L)//用于存储的链表初始化 {
(*L)=(Node_list *)malloc(sizeof(Node_list)); if(NULL != (*L)) {
(*L)->next=NULL; return true; }
***\n");
printf("*** E:By data
***\nBiblioteka Baidu);
printf("*** F:Exit system
***\n");
printf("****************************************************\n");
printf("****************************************************\n");
L=L->next; int flag=0; while(L != NULL) {
if(num == L->info->number) { show_one(L); flag=1; break; } L=L->next; } if( flag == 0)
printf("sorry! Not found this flight!\n");
inquire_by_data(L,date);//根据航班日期浏览,并根据起飞时间排序 printf("****Please input your choice here: "); continue; }
if('F' == choice) { printf("goodbye!!\n"); exit(1);//退出系统 }
while(L->next != NULL) L=L->next;
L->next=new_node; return true; }
bool Bubsort_number(Node_list *L)//根据航班号排序 {
Node_list *p,*q; Data_type *tmp;
for(p=L->next;p != NULL; p=p->next) for(q=p->next;q != NULL; q=q->next ) { if(p->info->number > q->info->number) { tmp=p->info;
else { printf("Don't have this option.\n****Please input your choice here:\n"); goto Welcome;//输入错误提示并返回 欢迎界面 }
} return 0; }
/*定义头文件*/ #ifndef __INCLUDE_H__ #define __INCLUDE_H__
} Bubsort_number(L);
Welcome://goto 语句标签
printf("****************************************************\n");
printf("****************************************************\n");
}Data_type;
typedef struct node //定义存储航班信息结构体链表 {
Data_type *info; struct node *next; }Node_list; /*各函数的定义*/ bool init_N(Node_list **); bool init_D(Data_type **); bool save_insert(Node_list *,Data_type *); bool Bubsort_number(Node_list *); bool Bubsort_statime(Node_list *);