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

目录

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

实现界面:

目 录 摘 要 1 前 言 2 基本算法的实现 3 采用类C语言定义相关的数据类型 3 各模块的伪码算法 4 函数的调用关系 6 调试分析 7 测试结果 8 源程序(带注释) 11 总 结 22 参考文献 23 致 谢 24 附件Ⅰ 部分源程序代码 25 摘 要 该设计要求对飞机航班信息进行排序和查找。可按航班的班号、起点站、到达站、起飞时间以及到达时间等信息时行查询。对于本设计,主要是通过线性表的逻辑结构、存储结构,线性表队列上基本运算实现的。可以让我们学会如何把学到的知识用于解决实际问题。 关键词: 航班信息;客户信息;链式存储结构; 前 言 飞机在现今的社会中已是越来越重要了,人们在旅游、工作、学习等生活中对飞机几乎是不可缺少了。而由乘坐飞机所引起的问题也深入到了计算机领域,飞机订票系统就是解决这种问题的一种途径。如人们常常在订票前要对问很多信息(飞机的起落时间,机票的价格,乘坐的人数以及是否有票等等)。这个系统主要是由线性表的链式存储结构以及队列的存储结构来存储航班信息客户信息的。它的主要功能:1、是录入航班信息,其调用函数为—insert_airline;2、查询航线(航班号,飞机号,日期,航班容量,余票数),其调用函数为:search_air;3、订票(根据客户提供的情况,办理订票手续),其调用函数为:book_air;4、承办退票业务(根据客户提供的情况,办理退票手续),其调用函数为:del_cus;5、删除已有航班信息 ,其调用函数为:del_airline . 设计这样的一个系统可以很快的查出人们所需要的信息,能省去很多的步骤,而且还非常的准确。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

茜茜西西CeCe

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

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

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

打赏作者

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

抵扣说明:

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

余额充值