#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<stdlib.h>
#include<conio.h>
#include <string.h>
#include<time.h>
#define HEAD1 "******************************************************************\n"
#define HEAD2 "|航班号|出发地|目的地| 起飞时间 | 到达时间 | 价格 | 折扣 | 剩余票数 |\n"
#define HEAD3 "|------|------|------|---------------|------------------|---------|-------------|--------------|\n"
#define FORMAT "%4s%-14s%-14s%-14s%-19s%-16f%-8s%6d\n"
#define DATA pst->stData.acFlight,pst->stData.acOrigin,pst->stData.acDest,pst->stData.acTakeOffTime,pst->stData.acReverveTime,pst->stData.fPrice,pst->stData.acDiscount,pst->stData.iNum
struct AirPlane
{
char acFlight[10];//航班号
char acOrigin[10];//出发地
char acDest[10];//目的地
char acTakeOffTime[10];//起飞时间
char acReverveTime[10];//降落时间
float fPrice;//票价
char acDiscount[4];//折扣
int iNum;//剩余票数
};
struct Man
{
char acName[20];//姓名
char acID[20];//身份证号
char acSex[10];//性别
int iBookNum;//购票数量
char acBookFlight[10];//订购航班号
};
//定义机票信息节点的结构体
struct PlaneNode
{
struct AirPlane stData;//数据域
struct PlaneNode* pstNext;//指针域
};
struct ManNode
{
struct Man stData;//数据域
struct ManNode* pstNext;//指针域
};
int iSave = 0;//作为数据是否改动的标志
int Init(struct PlaneNode* pstPlaneNodeHead, struct ManNode* pstManNodeHead)//整个系统只读取一次
{
//第一步:先加载飞机机票信息
FILE* pfPlane;//定义飞机机票信息文件指针
struct PlaneNode* pstPlaneNodeTemp, * pstPlaneNodeCur;
pstPlaneNodeCur = pstPlaneNodeHead;
pstPlaneNodeTemp = NULL;
pfPlane = fopen("plane.txt", "ab+");//打开以进行读取和追加,如果文件不存在则创建
if (pfPlane == NULL)
{
printf("cant'topen plane.txt!\n");
return -1;
}
else
{
//把文件数据读入链表中
while (!feof(pfPlane))//只要没有到文件末尾 就一直读取
{
pstPlaneNodeTemp = (struct PlaneNode*)malloc(sizeof(struct PlaneNode));
if (fread(pstPlaneNodeTemp, sizeof(struct PlaneNode), 1, pfPlane) == 1)//将文件数据读取到链表中
{
pstPlaneNodeTemp->pstNext = NULL;//尾巴置为空
pstPlaneNodeCur->pstNext = pstPlaneNodeTemp;//链起来
pstPlaneNodeCur = pstPlaneNodeTemp;//pstPlaneNodeCur向后走一步
}
}
free(pstPlaneNodeTemp);
fclose(pfPlane);
}
//第二步:加载订购人的信息
FILE* pfMan;
struct ManNode* pstManNodeTemp, * pstManNodeCur;
pstManNodeCur = pstManNodeHead;
pstManNodeTemp = NULL;
pfMan = fopen("man.txt", "ab+");//打开以进行读取和追加,如果文件不存在则创建
if (pfMan == NULL)
{
printf("cant'topen man.txt!\n");
return -1;
}
else
{
//将文件读取到链表中
while (!feof(pfMan))//只要没有到文件末尾 就一直读取
{
pstManNodeTemp = (struct ManNode*)malloc(sizeof(struct ManNode));
if (fread(pstManNodeTemp, sizeof(struct ManNode), 1, pfMan) == 1)//将文件数据读取到链表中
{
pstManNodeTemp->pstNext = NULL;//尾巴置为空
pstManNodeCur->pstNext = pstManNodeTemp;//链起来
pstManNodeCur = pstManNodeTemp;//pstManNodeCur向后走一步
}
}
free(pstManNodeTemp);
fclose(pfMan);
}
return 0;
}
void Menu()
{
puts("*******************************************************");
puts("* 欢迎进入机票信息系统 *");
puts("--------------------------------------------------- --");
puts("* 选择以下操作(0-9) *");
puts("* 1.添加机票 2.查询机票 *");
puts("* 3.预定机票 4.修改机票 *");
puts("* 5.显示机票 6.推荐机票 *");
puts("* 7.退订机票
项目:用链表实现飞机订票系统
最新推荐文章于 2023-04-05 17:23:19 发布
本文介绍了一个项目,通过链表数据结构实现了一个飞机订票系统。详细阐述了如何利用链表的特性来管理航班、座位和预订信息,实现高效的查找、预订和取消操作。通过该项目,读者可以深入理解链表在实际问题中的应用。
摘要由CSDN通过智能技术生成