目录
1 系统功能及要求
2 系统功能框架
3 详细设计
3.1 录入航班信息模块
3.2 客户订票模块
3.3 客户退票模块
3.4 航班查询模块
3.5 订单查询模块
3.6 航班修改模块
参考文献
1 系统功能及要求
(1)录入信息。可以录入航班信息情况,数据存储在一个数据文件中;可以 录入客户资料:姓名、证件号、订票数量及航班情况,订单有编号。
(2)查询信息。可以查询某个航线的情况:输入航班号,查询起降时间, 起飞抵达城市,航班票价,票价折扣,确定航班是否满仓;输入起飞抵达城市, 查询飞机航班情况。查询某个订单的情况,按输入订单号、客户姓名、证件号的 不同方式查找。
(3)订购机票。可以订票,订票情况存在一个数据文件中(如果该航班以 及无票,提供相关可选航班)。
(4)退订机票。可退票并且退票后修改相关数据文件。
(5)修改信息。可增加、删除、修改航班信息,当航班信息改变可修改航 班数据文件。
2 系统功能框架
系统功能总体上分为六大功能模块,其中,查询航班、查询订单和修改航班 信息又各分三个小模块。
3 详细设计
3.1 录入航班信息模块
typedef struct flightnode{
char flight_num[10];
char start_time[10];
char end_time[10];
char start_place[20];
char end_place[20]
int left;
float price;
float price_discount;
int isFull;
struct flightnode *next;
}flightnode;
void init_flight(flightnode*&h)
{
h=(flightnode *)malloc(sizeof(flightnode));
if(h==NULL) exit(0);
h->next=NULL;
}
void save_flight(flightnode*h)
{
FILE*fp=fopen("flightList.dat","wb");
if(fp==NULL)
return;
flightnode*temp=h->next;
while(temp!=NULL)
{
fwrite(temp,sizeof(flightnode),1,fp);
temp=temp->next;
};
fclose(fp);
}
void load_flight(flightnode*&h)
{
flightnode *pt=h;
FILE*fp=fopen("flightList.dat","rb");
if(fp==NULL)
return;
flightnode *q;
int n;
while(!feof(fp))
{
q=(flightnode *)malloc(sizeof(flightnode));
n=fread(q,sizeof(flightnode),1,fp);
if(n!=1)
break;
pt->next=q;
pt=q;
}
pt->next=NULL;
fclose(fp);
}
Void insert_flight(flightnode*&h,char*flight_num,char*start_place,
char*end_place,char*start_time,char*end_time,int left,float price,
float price_discount,int isFull)
{
flightnode *q;
flightnode *p=h;
q=(flightnode *)malloc(sizeof(flightnode));
strcpy(q->flight_num,flight_num);
strcpy(q->start_place,start_place);
strcpy(q->end_place,end_place);
strcpy(q->start_time,start_time);
strcpy(q->end_time,end_time);
q->left=left;
q->price=price;
q->price_discount=price_discount;
q->isFull=isFull;
q->next=p->next;
p->next=q;
p=p->next;
}
void add_flight(flightnode*&h)
{
flightnode *p=h;
char
flight_num[10],start_time[10],end_time[10],start_place[20],end_place[
20];
int left,isFull,mark=1;
float price,price_discount;
for(;p->next!=NULL;p=p->next){}
while(mark==1)
{
printf("\t\t 请输入你要增加的航班号:");
scanf("%s",flight_num);
printf("\t\t 请输入出发地:");
scanf("%s",start_place);
printf("\t\t 请输入目的地:");
scanf("%s",end_place);
printf("\t\t 请输入起飞时间:");
scanf("%s",start_time);
printf("\t\t 请输入抵达时间:");
scanf("%s",end_time);
printf("\t\t 请输入票价:");
scanf("%f",&price);
printf("\t\t 请输入折扣:");
scanf("%f",&price_discount);
printf("\t\t 请输入剩余座位数:");
scanf("%d",&left);
printf("\t\t 请输入是否满仓(0 表示没有满仓 1 已满仓):");
scanf("%d",&isFull);
insert_flight(p,flight_num,start_place,end_place,start_time,e
nd_time,left,price,price_discount,isFull);
printf("\t\t 增加航班成功!\n",flight_num);
printf("\t\t 是否继续录入航班信息(1 表示继续录入;0 表示停止录
入).\n");
printf("\t\t 请输入:");
scanf("%d",&mark);
}
}
实现界面: