数据结构课程设计——源代码

飞机订票系统源代码

问题及代码:

 

/**************************************************** 
*版权所有(C)2016,孙丽玮
*文件名称:飞机订票系统 
*文件标识:无 
*内容摘要:实现录入航班信息、订票、退票、预约、
*          查询航班、查询订单、查看预约、修改航班功能。
*其他内容:无 
*当前版本:VC++6.0 
*作    者:孙丽玮 
*完成日期:2016.12.28 
*修改记录:无 
****************************************************/  

 

1、plane.h的代码

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>

typedef struct flightnode
{
	char flight_num[10];//航班号
	char start_time[15];//起飞时间
    char end_time[15];//抵达时间
	char start_place[20];//起飞城市
	char end_place[20];//降落城市
	int left;//空座数
	float price;//票价
	int ifull;//航班是否满仓
	struct flightnode *next;//指向下一节点
}flightnode;

typedef struct passengernode
{
	char name[20];//姓名
	char ID_num[20];//证件号
	char flight_num[10];//航班号
	int order_num;//订单号
	int ticket_num;//订票数量
	struct passengernode *next;//指向下一节点
}passengernode;

typedef struct passengerList
{
	passengernode *head;
	passengernode *rear;
}passengerList;

typedef struct waitnode
{
	char name[20];//姓名
	char phone[20];//手机号
	char flight_num[10];//航班号
	int ticket_num;//订票数量
	int order_num;//预约排队号
	struct waitnode *next;//指向下一节点

}waitnode;

typedef struct waitList
{
	waitnode *front;
	waitnode *rear;
}waitList;

void init_flight(flightnode *&h);//建立以h为头结点的空链表,录入航班信息和增加航班后将航班结点插入该链表
void init_passengerList(passengerList *&pList);//建立一个带有头尾指针的空链表,存储带有顾客信息的节点
void init_waitList(waitList *&wList);//建立一个带有头尾指针的空链表,存储带有预约客户信息的节点

void save_flight(flightnode *h);//保存航班信息到指定的数据文件中
void load_flight(flightnode *&h);//从存储航班信息的文件导入航班信息到航班链表中

void save_passenger(passengerList *PList);//保存客户信息到指定数据文件中
void load_passenger(passengerList *&PList);//从存储客户信息的文件导入客户信息到客户链表中

void save_wait(waitList *WList);//保存预约客户信息到指定数据文件中
void load_wait(waitList *&WList);//从存储预约客户信息的文件导入预约客户信息到预约客户链表中

void add_flight(flightnode *&h);//录入航班信息后调用insert_flight函数增加航班
//录入航班情况或增加新的航班后,将新的航班结点插入到航线链表中
void insert_flight(flightnode *&h, char *flight_num, char *start_place, char *end_place, char *start_time, char *end_time, int left, float price, int ifull);

//完成客户订票,将客户结点插入客户链表,并修改相应的航班信息
int book(flightnode *&h,passengerList *&PList,waitList *WList);
//客户订票时输入的航班号对应航班已满,提供其他可选航班并输出显示
int find_same_flight(flightnode *h,char *flight_num);
//在客户订票后,将该客户结点插入到客户链表,并修改相应航班信息
void insert_passengerList(flightnode *&h, passengerList *&PList, char *name, char *ID_num, char *flight_num, int ticket_num);

//在客户预约票后,将该预约客户结点插入到预约客户链表
void insert_waitList(waitList *&WList, char *name, char *phone, char *flight_num, int ticket_num,int order_num);

//完成退票,将订单从客户链表删除并修改相应航班信息
void cancel(passengerList *&PList,flightnode *&h);
//按照要退票的客户姓名和证件号查找该客户结点,进行删除操作
int delete_passenger(passengerList *&PList,flightnode *&h, char *name, char *ID_num);

void flight_check(flightnode *h);//选择使用何种方式对航班信息进行查询
void check_all_flight(flightnode *h);//浏览所有航班信息
int place_check(flightnode *h, char *start_place, char *end_place);//按照起飞抵达城市查询航班信息
int flight_num_check(flightnode *h, char *flight_num);//按照航班号查询航班信息

void passenger_check(passengerList *PList);//选择使用何种方式查询订单信息
void check_all_passenger(passengerList *PList);//浏览所有订单信息
int ID_name_check(passengerList *PList, char *name, char *ID_num);//按客户姓名和证件号查询订单信息

void check_all_wait(waitList *WList);//浏览所有预约客户信息

void modify_flight(flightnode *&h, passengerList *&PList);//修改航班信息
void delete_flight(flightnode *&h, passengerList *&PList);//按照某个航班号删除航班结点
void modify_flight_time(flightnode *&h, passengerList *&PList);//修改航班时间

 

2、plane.cpp的代码

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include "plane.h"

//建立以h为头结点的空链表,录入航班信息和增加航班后将航班结点插入该链表
void init_flight(flightnode *&h)
{
	h=(flightnode *)malloc(sizeof(flightnode));//申请头结点空间
	if(h==NULL)
		exit(0);
	h->next=NULL;//将头结点h的指针域置为空
}
//建立一个带有头尾指针的空链表,存储带有客户信息的节点
void init_passengerList(passengerList *&pList)
{
	pList=(passengerList *)malloc(sizeof(passengerList));
	pList->head=(passengernode *)malloc(sizeof(passengernode));//创建头结点
	pList->rear=pList->head;
	pList->rear->order_num=0;//订单号从0开始计数
	pList->head->next=NULL;
}
//建立一个带有头尾指针的空队,存储带有预约客户信息的节点
void init_waitList(waitList *&wList)
{
	wList=(waitList *)malloc(sizeof(waitList));
	wList->front=(waitnode *)malloc(sizeof(waitnode));//创建头结点
	wList->rear=wList->front;
	wList->rear->order_num=0;//预约排队号从0开始计数
	wList->front->next=NULL;
}

//保存航班信息到指定的数据文件中
void save_flight(flightnode *h)
{
	FILE *fp=fopen("flightList.dat","wb");//以只写('wb')的方式打开名为'flightList.dat'的文件
	if(fp==NULL)
		return;
	flightnode *temp=h->next;
	while(temp!=NULL)
	{
		fwrite(temp,sizeof(flightnode),1,fp);//向其中写入temp(temp是指针)地址的l个flightnode类型的数据
		temp=temp->next;
	}
	fclose(fp);//关闭fp指向的文件
}
//从存储航班信息的文件导入航班信息到航班链表中
void load_flight(flightnode *&h)
{
	flightnode *pt=h;
    FILE *fp=fopen("flight.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 save_passenger(passenge
  • 5
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值