该系统具备如下的功能:
(1)定义一个主菜单,方便用户实现下述操作。要求菜单简洁、易操作、界面美观。
(2)可以录入航班信息:要求数据存储在一个数据文件中,其数据构成以及具体的数据信息请结合实际情况进行自定义。
(3)修改航班信息:当航班信息改变时,可以修改航班信息。
(4)存盘和导入:所有航班信息可保存到磁盘文件,也可在需要的时候从磁盘文件导入到内存。
(5)可以查询某条航线的情况:例如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓。
(6)提供各种查询功能:例如按起飞(抵达)城市查询、按航空公司查询、按票价折扣查询等。
(7)可以订票。如果该航班已经无票,可以提供相关可选择航班。
(8)可以退票。退票后修改相关数据文件。
(9)客户资料包括:姓名、证件号、订票数量及航班情况,客户资料需以文件保存,并可实现文件导入文字。
(10)订单要有编号,订单需以文件保存,并可实现文件导入。
(11)提供客户资料查询功能,提供订单查询功能。
头文件:
typedef struct Day//日期结构体
{
int month;
int day;
}Day;
typedef struct plane//航班结构体
{
int num;//航班号
Day d;//航班日期
char company[3];//航空公司
char start_time[10];//起飞时间
char end_time[10];//到达时间
char start_place[10];//起飞地点
char end_place[10];//目的地
int price;//票价
float discount;//折扣
int count;//票的数量
struct plane *next;
}plane;
typedef struct passenger//乘客信息
{
int bh;
char name[10];//乘客姓名
int id;//乘客id
int amount;//所订票的数量
int num_d;//所定的航班号
struct passenger *next;
}passenger;
plane *loadin();//头插法创建plane
void prn1(plane *a);//输出plane
void prn(plane *p);//显示航班信息
void save(plane *p);//保存航班信息到文件
void search_full(plane *a);//判断是否满仓
void search_plane(plane *a);//航班查询
plane *search_num(plane *a);//航班号查找
void search_place(plane *a);//起飞地点,到达地点查找
void search_price(plane *a);//票价查找
void search_discount(plane *a);//折扣查找
void search_company(plane *a);//航空公司名查找
void search_time(plane *a);//起飞时间查找
void search_menu();
void order(plane *a);//订票
void tuipiao(plane *a);//退票
void change(plane *a);//修改代码
void changemenu();
void changenum(plane *a);//修改航班号
void changecompany(plane *a);//修改公司名字
void changeplace(plane *a);//修改起飞地点
void changetime(plane *a);//修改起飞时间
//乘客
//乘客代码
passenger *creat_passenger();//头插法建立乘客链表
void prn_passenger1(passenger *a);
void prn_passenger(passenger *p);
void search_passengermenu();
void search_passenger(passenger *a);//乘客查询
void search_name(passenger *a);//乘客姓名查询
void search_id(passenger *a);//乘客id查询
passenger *creat_order();//订单导入
void prn_order(passenger *p);//输出订单
void menu();//总菜单
代码主体:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include"head.h"
void init(plane *a)
{
a=(plane *)malloc(sizeof(plane));
a->next=NULL;
}
//航班代码
plane *loadin()//头插法建立航班单链表
{
plane *h,*a;
FILE *fp;
h=(plane *)malloc(sizeof(plane));
h->next=NULL;
if((fp=fopen("航班信息.txt","r"))==NULL)
{
printf("没有文件\n");
exit(0);
}
while(!feof(fp))
{
a=(plane *)malloc(sizeof(plane));
fscanf(fp,"%d",&a->num);
fscanf(fp,"%d",&a->d.month);
fscanf(fp,"%d",&a->d.day);
fscanf(fp,"%s",&a->company);
fscanf(fp,"%s",&a->start_time);
fscanf(fp,"%s",&a->end_time );
fscanf(fp,"%s",&a->start_place);
fscanf(fp,"%s",&