数据结构课程设计:航班订票系统的设计与实现

目录

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);
}
}

实现界面:

  • 19
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

茜茜西西CeCe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值