600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > C语言课程设计:简易的航班信息查询系统

C语言课程设计:简易的航班信息查询系统

时间:2022-04-02 03:38:22

相关推荐

C语言课程设计:简易的航班信息查询系统

航班管理系统:

航班信息录入显示所有航班信息按照要求查询(根据日期、地点等),列出相关的航班信息根据航班号删除航班信息

结构体定义:

// 航班信息结构体typedef struct flight{char flight_number[16]; //航班号char departure[32];//出发地char destination[32]; //目的地char take_off_time[16]; //起飞时间float price; //价格struct flight *prev;//记录直接前驱的地址struct flight *next;//记录直接后继的地址}Flight_t,F_List;//信息结构体,用于函数之间传递参数,减少参数数量typedef struct flightInfo{char flight_number[16]; //航班号char departure[32];//出发地char destination[32]; //目的地char take_off_time[16]; //起飞时间float price; //价格}Info_t;

函数预定义:

//创建航班信息表(头结点)Manager_t * Flight_Create(void);//创建新的航班信息结点Flight_t * Flight_NewInfo(Info_t info);//判断双向链表是否为空bool Flight_IsEmpty(F_List *manager);// 将新的航班信息插入双向链表中(从链表尾部插入)bool Flight_TailInsert(F_List *manager,Info_t info);//删除指定航班号的航班信息bool Flight_FlightNumberDel(F_List *manager,char *flight_number);//查找并显示指定航班号的航班信息bool Flight_FlightNumberFind(F_List *manager,char *flight_number);//修改指定航班号的票价bool Flight_PriceRevise(F_List *manager,char *flight_number,float newPrice);//打印所有航班信息bool Flight_print(F_List *manager);//系统界面设置void Flight_Interface(void);

各函数具体实现:

flight.c文件:

#include "flight.h"//创建航班信息表(头结点)F_List Flight_Create(void){F_List list =(F_node *)calloc(1,sizeof(F_node));list->prev = list->next = NULL;return list;}//创建新的航班信息结点F_node * Flight_NewInfo(Info_t info){// 向堆内存申请空间F_node* node = (F_node *)malloc(sizeof(F_node));if(!node){printf("节点申请内存失败!请重新尝试\n");}// 为节点赋值strcpy(node->flight_number,info.flight_number);strcpy(node->departure,info.departure);strcpy(node->destination,info.destination);strcpy(node->take_off_time,info.take_off_time);node->price = info.price;node->prev = node->next = NULL;// 将节点返回return node;}//判断双向链表是否为空bool Flight_IsEmpty(F_List manager){// 链表为空返回真return (manager->next == NULL) ? true : false;}// 将新的航班信息插入双向链表中(从链表尾部插入)bool Flight_TailInsert(F_List manager,Info_t info){// 1.创建节点录入信息F_node *node = Flight_NewInfo(info);// 2.判断链表是否为空if(Flight_IsEmpty(manager)){// 链表为空manager->next = node;manager->prev = node;node->prev = manager;node->next = manager;return true;}// 如果不为空node->next = manager->prev;manager->prev->next = node;manager->prev = node;node->next = manager;return true;}//删除指定航班号的航班信息bool Flight_FlightNumberDel(F_List manager,char *flight_number){// 循环遍历整个链表,如果遇到相同则进行删除F_node *q = manager;F_node *p = manager->next; // 定义工作指针进行遍历while(p != manager){// strcmp函数:如果两字符串相等则返回0if(!strcmp(p->flight_number,flight_number)){// 找到了删除的元素if(p->next == manager){// 如果删除的元素是在最后一位q->next = manager;manager->next = q;p->next = p->prev = NULL;free(p);return true;}// 不是最后一个元素q->next = p->next;q->next->prev = q;p->next = p->prev = NULL;return true;}q = p;p = p->next;}return false;}//查找并显示指定航班号的航班信息bool Flight_FlightNumberFind(F_List manager,char *flight_number){F_node *p = manager->next;while (p!=manager){// 链表还没遍历完if(!strcmp(p->flight_number,flight_number)){// 成功找到航班信息printf("航班号\t出发地\t目的地\t起飞时间\t价格\n");printf("%s\t%s\t%s\t%s\t%f\n",p->flight_number,p->departure,p->destination,p->take_off_time,p->price);return true;}p = p->next;}if(p == manager){printf("没有%s该航班信息。\n",flight_number);}return false;}//修改指定航班号的票价bool Flight_PriceRevise(F_List manager,char *flight_number,float newPrice){F_node *p = manager->next;while (p!=manager){// 链表还没遍历完if(!strcmp(p->flight_number,flight_number)){// 成功找到航班信息p->price = newPrice;return true;}p = p->next;}if(p == manager){printf("没有%s该航班信息。",flight_number);}return false;}//打印所有航班信息bool Flight_print(F_List manager){F_node *p = manager->next;printf("航班号\t出发地\t目的地\t起飞时间\t价格\n");while (p!=manager){// 链表还没遍历完printf("%s\t%s\t%s\t%s\t\t%.2f\n",p->flight_number,p->departure,p->destination,p->take_off_time,p->price);p = p->next;}return false;}//系统界面设置void Flight_Interface(void){printf("===================航班信息查询系统===================\n");printf("*******\t\t创建今日航班信息:1\t\t*******\n");printf("*******\t\t 查询航班信息:2 \t\t*******\n");printf("*******\t\t 删除航班信息:3 \t\t*******\n");printf("*******\t\t 展示所有信息:4 \t\t*******\n");printf("*******\t\t 修改航班票价:5 \t\t*******\n");printf("*******\t\t 添加航班信息:6 \t\t*******\n");printf("*******\t\t 退出系统:0 \t\t\t*******\n");printf("======================================================\n");}

flght.h文件

#define _FLIGHT_H #ifdef _FLIGHT_H#include <stdlib.h>#include <stdio.h>#include <string.h>#include <stdbool.h>// 航班信息结构体typedef struct flight{char flight_number[16]; //航班号char departure[32];//出发地char destination[32]; //目的地char take_off_time[16]; //起飞时间float price; //价格struct flight *prev;//记录直接前驱的地址struct flight *next;//记录直接后继的地址}F_node,* F_List;//信息结构体,用于函数之间传递参数,减少参数数量typedef struct flightInfo{char flight_number[16]; //航班号char departure[32];//出发地char destination[32]; //目的地char take_off_time[16]; //起飞时间float price; //价格}Info_t;//创建航班信息表(头结点)F_List Flight_Create(void);//创建新的航班信息结点F_node *Flight_NewInfo(Info_t info);//判断双向链表是否为空bool Flight_IsEmpty(F_List manager);// 将新的航班信息插入双向链表中(从链表尾部插入)bool Flight_TailInsert(F_List manager,Info_t info);//删除指定航班号的航班信息bool Flight_FlightNumberDel(F_List manager,char *flight_number);//查找并显示指定航班号的航班信息bool Flight_FlightNumberFind(F_List manager,char *flight_number);//修改指定航班号的票价bool Flight_PriceRevise(F_List manager,char *flight_number,float newPrice);//打印所有航班信息bool Flight_print(F_List manager);//系统界面设置void Flight_Interface(void);#endif

main.c文件:

#include "flight.h"Info_t setInfo(){Info_t info;printf("请输入航班号:\n");scanf("%s",info.flight_number);printf("请输入出发地:\n");scanf("%s",info.departure);printf("请输入目的地:\n");scanf("%s",info.destination);printf("请输入起飞时间:\n");scanf("%s",info.take_off_time);printf("请输入价格:\n");scanf("%f",&info.price);return info;}void main(){F_List list = NULL; //创建航班信息链表 int fun;char *f_num = (char *)malloc(sizeof(char)); Info_t info;float new_price;while (1){Flight_Interface();printf("请输入数字选择功能:");scanf("%d",&fun);switch (fun){case 1:list = Flight_Create();printf("初始化成功\n");break;case 2:printf("请输入航班编号:");scanf("%s",f_num);Flight_FlightNumberFind(list,f_num);break;case 3:printf("请输入需要删除的航班信息:");scanf("%s",f_num);if(Flight_FlightNumberDel(list,f_num))printf("删除成功\n");else printf("删除失败\n");break;case 4:Flight_print(list);break;case 5:printf("请输入需要修改的航班号:");scanf("%s",f_num);printf("请输入新的机票价格:");scanf("%f",&new_price);Flight_PriceRevise(list,f_num,new_price);break;case 6: info = setInfo();// 向链表中插入航班信息Flight_TailInsert(list,info);printf("插入成功!\n");break;default:break;}}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。