数据结构习题集实习之航空客运订票系统(示意系统,全部数据放在内存)
航空客运订票系统
1、系统名称:航空客运订票系统
航空客运订票的业务活动包括:查询航线、客票预定和办理退票等。要求在TC或VC环境下设计一个航空客运订票系统,以使上述业务可以借助计算机来完成。
2、要求:
(1)每条航线所涉及的信息有:终点站名、航班号、飞机号、 飞行日期(星期几)、乘员定额、余票量、已经订票的客户名单(包括姓名、订票量)以及等候替补的客户名单(包括姓名、所需票量)。
(2)作为模拟系统,全部数据可以只存放在内存中。
(3)通过此系统可以实现如下功能:
①录入功能:可以录入航班情况
②查询功能:根据客户提供的终点站名进行查询,可以输出以下信息:航班号、飞机号、星期几飞行和余票量等。也可以根据航班号,查询飞机某个航线的情况。
③订票功能:根据客户提出的要求(姓名、终点站名、订票数量)查询该航班的余票量情况。如尚有足够的余票,则为客户办理订票手续;若已满员或余票量少于订票数量,则需要重新询问客户要求,如需要,可登记排队候补。
④退票功能:根据客户提供的情况(姓名、日期、航班号),为客户办理退票手续,然后查询该航班是否有人排队候补,若有人排队首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则询问其他排队候补的客户
体会心得:
- 写这个程序并自己的难点不在于程序语法和算法,而是在于对整个程序架构的把握,如何摆布函数
- 通过这个实验我主要学会了如何布置整个程序的头文件和c文件,更加模块化,之前的程序写的不规范,现在悔恨
- 这个课程设计考察的内容是线性表,线性链表,以及队列的综合应用,这几个知识点于我并没有难点
- 这个课程设计是用内存保存数据的,真正的运行应该保存在文件里面进行很多读取操作,这里根据题目要求只作为了示意
- 思路决定出路,一开始自己的思路并不正确,一边想要通过文件实现,另一边在进行内存操作
- 人需要人点拨开化,不然会跟我像独行侠一样跌跌撞撞,困苦挣扎,虽然也能最后实现目标,但时间花得相对要多,显得比较笨拙,但是记忆或许来得深刻,轻易得到的东西往往并不能深刻,这未尝不是一种办法
代码如下:
main.c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include "struct.h"
#include "Airline.h"
#include "Query.h"
#include "Booking.h"
#include "Refund.h"
int main()
{
system("Color 1e");//系统背景颜色变化
Today();
AirlineReady();
Head();
Home();
End();
system("pause");
return 0;
}
void Today()
{
int CurYear,CurMonth,CurDay,CurDate,CurHour,CurMin,CurSec;
time_t T;
time(&T);
struct tm *Now;
Now=localtime(&T);
CurYear=Now->tm_year+1900;
CurMonth=Now->tm_mon+1;
CurDay=Now->tm_mday;
CurDate=Now->tm_wday;
CurHour=Now->tm_hour;
CurMin=Now->tm_min;
CurSec=Now->tm_sec;
printf("\n当前时间是北京时间:");
printf("【%d年%d月%d日星期%d %d时%d分%d秒】\n",CurYear,CurMonth,CurDay,CurDate,CurHour,CurMin,CurSec);
return ;
}
void Head()
{
printf("<<<<<<<<<<---------------------------------------------------->>>>>>>>>>\n");
printf(" 欢迎使用中国航空客运订票系统 \n");
printf("<<<<<<<<<<---------------------------------------------------->>>>>>>>>>\n");
printf("\n\n<<<<<<<<<<<<----功能选择---->>>>>>>>>>>>>>>\n\n");
printf("-------------1.查询航线\n");
printf("-------------2.客户订票\n");
printf("-------------3.客户退票\n");
printf("-------------0.退出系统\n\n\n");
return;
}
void Home()
{
while(1)
{
printf("请输入选择的功能:");
int K;
scanf("%d",&K);
if(K!=0&&K!=1&&K!=2&&K!=3)//判读输入选择是否正确,只能是特定选择
{
printf("输入有误!!\n");
continue;//输入有误需要重新输入
}
if(K==0)//不断循环,直到t=0退出循环
break;
else
Run(K);//不退出的话就进入功能函数
}
return;
}
void Run(int K)//功能选择
{
switch(K)//switch语句根据传入的值选择功能函数
{
case 1: Query();break;//查询航线
case 2: Booking();break;//订票
case 3: Refund();break;//退票
}
return;
}
void End() //退出系统
{
printf("\n\t\t>>>>>>>>Welcome back!!<<<<<<<<<\n");
exit(0);
}
main.h头文件
#ifndef STRUCT_H_INCLUDED
#define STRUCT_H_INCLUDED
void Today();
void Head();
void Home();
void Run(int K);
void End();
#endif // STRUCT_H_INCLUDED
Query.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "Query.h"
#include "Airline.h"
void Query() //航线查询
{
printf("\n|1.抵达地|2.起飞地|3.航班号|4.起飞日期|5.有余票|\n");
while(1)
{
printf("选择查询航班的关键字:");
int Choose;
scanf("%d",&Choose);
switch(Choose)
{
case 1:SearchForDestination();break;
case 2:SearchForDepature();break;
case 3:SearchForFlightNumber();break;
case 4:SearchForDate();break;
case 5:SearchForTickets();break;
}
char Choice;
printf("是否继续查询(Y|N):");
scanf(" %c",&Choice);
if(Choice=='Y')
continue;
else
break;
}
return ;
}
void SearchForDestination()
{
char Place[15];
printf("请输入航班抵达点:");
scanf("%s",Place);
printf("出发\t\t抵达\t\t航班号\t飞机号\t日期\t时间\t头等舱\t商务舱\t经济舱\t起步价\t余票量\tDate\t\n");
int Count=0;
for(int i=0;i<10;i++)
{
if(strcmp(Place,A[i].Destination)==0)
{
PrintAirline(&A[i]);
Count++;
}
}
if(Count>0)
printf("最近一个月共有%d趟航班飞往%s\n\n",Count,Place);
else
printf("最近一个月没有飞往%s的航班",Place);
return ;
}
void SearchForDepature()
{
char Place[15];
printf("请输入航班起飞点:");
scanf("%s",Place);
printf("出发\t\t抵达\t\t航班号\t飞机号\t日期\t时间\t头等舱\t商务舱\t经济舱\t起步价\t余票量\tDate\t\n");
int Count=0;
for(int i=0;i<10;i++)
{
if(strcmp(Place,A[i].Departure)==0)
{
PrintAirline(&A[i]);
Count++;
}
}
if(Count>0)
printf("最近一个月共有%d趟航班从%s出发\n\n",Count,Place);
else
printf("最近一个月没有从%s出发的航班",Place);
return ;
}
void SearchForFlightNumber()
{
char Flight[10];
printf("请输入需要查询的航班号:");
scanf("%s",Flight);
printf("出发\t\t抵达\t\t航班号\t飞机号\t日期\t时间\t头等舱\t商务舱\t经济舱\t起步价\t余票量\tDate\t\n");
int Count=0;
for(int i=0;i<10;i++)
{
if(strcmp(Flight,A[i].FlightNum)==0)
{
PrintAirline(&A[i]);
Count++;
}
}
if(Count>0)
printf("最近一个月共有%d趟该航班\n\n",Count);
else
printf("最近一个月没有执飞的该航班");
return ;
}
void SearchForDate()
{
printf("请输入需要查询的日期:");
int M,N;
scanf("%d%d",&M,&N);
printf("出发\t\t抵达\t\t航班号\t飞机号\t日期\t时间\t头等舱\t商务舱\t经济舱\t起步价\t余票量\tDate\t\n");
int Count=0;
for(int i=0;i<10;i++)
{
if(M==A[i].Mon&&N==A[i].Day)
{
PrintAirline(&A[i]);
Count++;
}
}
if(Count>0)
printf("%d月%d日共有%d趟航班执飞\n\n",M,N,Count);
else
printf("当天没有执飞的航班");
return ;
}
void SearchForTickets()
{
printf("出发\t\t抵达\t\t航班号\t飞机号\t日期\t时间\t头等舱\t商务舱\t经济舱\t起步价\t余票量\tDate\t\n");
int Count=0;
for(int i=0;i<10;i++)
{
if(A[i].F>0||A[i].C>0||A[i].Y>0)
{
PrintAirline(&A[i]);
Count++;
}
}
if(Count>0)
printf("还有%d趟航班有余票\n\n",Count);
else
printf("所有航班机票售尽");
return;
}
Query.h
#ifndef QUERY_H_INCLUDED
#define QUERY_H_INCLUDED
void Query();
void SearchForDestination();
void SearchForDepature();
void SearchForFlightNumber();
void SearchForDate();
void SearchForTickets();
#endif // QUERY_H_INCLUDED
Booking.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "Booking.h"
void Booking()
{
printf("<<<<<<<<<<<<<<<您正在办理订票业务>>>>>>>>>>>");
Airline *B;
char Flight[10];
New:printf("\n输入航班号:");
scanf("%s",Flight);
printf("该航班余票情况:\n");
printf("出发\t\t抵达\t\t航班号\t飞机号\t日期\t时间\t头等舱\t商务舱\t经济舱\t起步价\t余票量\tDate\t\n");
int Count=0;
for(int i=0;i<10;i++)
{
if(strcmp(Flight,A[i].FlightNum)==0)
{
B=&A[i];
PrintAirline(B);
Count++;
}
}
if(Count>0)
{
if(Count==1)
{
if(One(B)==1);
return;
}
else
{
if(OnePlus(Count,Flight)==1)
return;
}
}
else
printf("最近没有该%s航班",Flight);
printf("是否退出订票(Y|N):");
char C;
scanf(" %c",&C);
if(C=='N')
goto New;
return;
}
int OnePlus(int Count,char Flight[])
{
char Choice;
printf("最近一个月有%d趟%s航班\n",Count,Flight);
Airline *B=NULL;
while(1)
{
int M,N;
printf("请输入选择的航班日期:");
scanf("%d%d",&M,&N);
for(int i=0;i<10;i++)
{
if(strcmp(Flight,A[i].FlightNum)==0)
{
if(A[i].Mon==M&&A[i].Day==N)
{
B=&A[i];
break;
}
}
}
printf("%d月%d日的该航班剩余:|头等舱%d席|商务舱%d席|经济舱%d席|\n",B->Mon,B->Day,B->F,B->C,B->Y);
printf("是否下单(Y|N):");
scanf(" %c",&Choice);
if(Choice=='Y')
{
if(PlaceOrder(B)==1)
return 1;
else
printf("未成功订票!\n");
}
printf("是否愿意选择其他日期的该航班(Y|N):");
scanf(" %c",&Choice);
if(Choice=='Y')
continue;
else
break;
}
return 0;
}
int One(Airline *B)
{
printf("最近一个月只有一趟%s航班\n",B->FlightNum);
printf("%d月%d日的该航班剩余:|头等舱%d席|商务舱%d席|经济舱%d席|\n",B->Mon,B->Day,B->F,B->C,B->Y);
printf("是否下单(Y|N):");
char Choice;
scanf(" %c",&Choice);
if(Choice=='Y')
{
if(PlaceOrder(B)==1)
return 1;
else
printf("未成功订票!\n");
}
return 0;
}
void FillBlank(Client *C)
{
printf("请输入您的姓名:");
scanf("%s",C->Name);
printf("请输入您的护照号码:");
scanf("%s",C->PassPort);
printf("请输入您的电话号码:");
scanf("%s",C->Phone);
printf("请输入您的性别:");
scanf("%d",&C->Sex);
return;
}
int PlaceOrder(Airline *B)
{
char Choice;
Client C;
while(1)
{
int flag=0;
printf("请输入你想预订的舱位等级:");
scanf(" %c",&C.SpaceClass);
switch(C.SpaceClass)
{
case 'F': if(B->F==0) printf("当前以及没有头等舱席位\n");else {B->F--;flag=1;}break;
case 'C': if(B->C==0) printf("当前以及没有商务舱席位\n");else {B->C--;flag=1;}break;
case 'Y': if(B->C==0) printf("当前以及没有经济舱席位\n");else {B->Y--;flag=1;}break;
}
if(flag==1)
{
printf("请填写个人信息:\n");
FillBlank(&C);
OrderInSert(B->L,C);
printf("您成功订票!\n");
return 1;
}
else
{
printf("是否继续愿意登记候补(Y|N):");
scanf(" %c",&Choice);
if(Choice=='Y')
{
printf("请填写登记信息:\n");
FillBlank(&C);
//EnQueue(&(B->Q),C);
printf("您目前在排队候补!\n");
return 1;
}
else
{
printf("是否重新选择席位(Y|N):");
scanf(" %c",&Choice);
if(Choice=='Y')
continue;
else
break;
}
}
}
return 0;
}
Booking.h
#ifndef BOOKING_H_INCLUDED
#define BOOKING_H_INCLUDED
#include "Airline.h"
void Booking();
int One(Airline *B);
int OnePlus(int Count,char Flight[]);
int PlaceOrder(Airline *B);
void FillBlank(Client *C);
#endif // BOOKING_H_INCLUDED
Refund.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "Refund.h"
#include "Airline.h"
#include "Booking.h"
#include "BookingList.h"
#include "WaitingQueue.h"
void Refund()
{
printf("<<<<<<<<<<<<<<<您正在办理退票业务>>>>>>>>>>>");
printf("\n请输入航班号:");
char Flight[10];
scanf("%s",Flight);
int M,N;
printf("请输入航班日期:");
scanf("%d%d",&M,&N);
Airline *B=NULL;
for(int i=0;i<10;i++)
{
if(strcmp(A[i].FlightNum,Flight)==0)
{
if(A[i].Mon==M&&A[i].Day==N)
{
B=&A[i];
break;
}
}
}
printf("请输入您的护照号码:");
char Pass[12];
Client C;
while(1)
{
scanf("%s",Pass);
if(Search(B->L,Pass,&C)==1)
break;
else
printf("请重新输入:");
}
printf("是否确认退票,请输入您的姓名确认:");
char YourName[12];
while(1)
{
scanf("%s",YourName);
if(strcmp(C.Name,YourName)==0)
{
printf("请您稍等!正在为您办理退票!\n");
Delete(B->L,C);
if(!QueueEmpty(&(B->Q)))
{
Client E;
if(Check(&(B->Q),C.SpaceClass,&E)==0)
AirlineBack(B,C.SpaceClass);
else
OrderInSert(B->L,E);
}
else
{
AirlineBack(B,C.SpaceClass);
return;
}
}
else
{
printf("输入错误,是否重新输入(Y\\N):");
char Choice;
scanf(" %c",&Choice);
if(Choice=='Y')
{
printf("请重新输入:");
continue;
}
else
break;
}
}
printf("未成功退票!\n");
return;
}
Refund.h
#ifndef REFUND_H_INCLUDED
#define REFUND_H_INCLUDED
void Refund();
#endif // REFUND_H_INCLUDED
Airline.c
#include <stdio.h>
#include <stdlib.h>
#include "Airline.h"
char *X[7]={"星期天","星期一","星期二","星期三","星期四","星期五","星期六"};//星期
Airline A[10]={
{ "Hangzhou","Sydney","MU711","B737",2000,8,2,13,30,2,20,3,7,10},
{ "Shanghai ","NewYork ","CA436","A321",2500,8,3,14,20,6,30,5,0,10},
{ "Beijing","London","HU7751","C929",3000,8,10,20,30,6,20,0,5,8},
{ "Nanjing","Tokyo","ZH9045","C919",2600,8,15,22,10,4,15,0,0,0},
{ "HongKong","Hawaii","CZ6083","B747",3500,8,20,15,40,2,20,1,4,10},
{ "Beijing","Washington","CA3767","B787",4000,8,1,8,30,4,30,10,2,15},
{ "Shanghai","Paris","AK1521","A380",4500,8,5,12,30,1,50,0,0,0},
{ "Hangzhou","LosAngeles","ZU760","A310",3800,8,10,23,30,6,30,0,0,0},
{ "Guangzhou","Singapore","AK1521","C929",2000,8,8,22,10,4,20,0,0,0},
{ "Guangzhou","Munich","CA3345","C919",4000,8,29,19,40,4,25,5,0,10}
};
Status PrintAirline(Airline *A)
{
printf("%-8s\t%-8s\t%-s\t%-s\t",A->Departure,A->Destination,A->FlightNum,A->PlaneNum);
printf("%-d月%-d号\t%-d:%02d\t",A->Mon,A->Day,A->Hour,A->Min);
printf("%-d\t%-d\t%-d\t",A->F,A->C,A->Y);
printf("%-d元\t%d\t",A->Price,A->F+A->C+A->Y);
int i=A->Date;
printf("%-s\t\n",X[i]);
return OK;
}
Status AirlineReady()
{
for(int i=0;i<10;i++)
{
Create(&(A[i].L));
InitQueue(&(A[i].Q));
}
return OK;
}
Status AirlineBack(Airline *B,char C)
{
switch(C)
{
case 'F':B->F++;break;
case 'C':B->C++;break;
case 'Y':B->Y++;break;
}
return OK;
}
Airline.h
#ifndef AIRLINE_H_INCLUDED
#define AIRLINE_H_INCLUDED
#define TURE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define OVERFLOW -1
#include "WaitingQueue.h"
#include "BookingList.h"
typedef int Status;
typedef struct Airline{
char Departure [15];//始发站
char Destination[15]; //目的地
char FlightNum[10];//航班号
char PlaneNum[10];//飞机号
int Price;//经济舱基础票价(头等舱价格为基础票价150%,商务舱价格为基础票价的130%)
int Mon;
int Day;
int Hour;
int Min;
int Date;//随机生成航班起飞日期(一般在只能提前30天售票)
int Capacity;//载客量
int F;
int C;
int Y;//各舱位的余票量
BookingList L;//乘客名单域
WaitingQueue Q;//等候替补队列
}Airline;//一条航线的舱位中有0.1的头等舱,0.2的商务舱,其余为经济舱
extern Airline A[10];
Status PrintAirline(Airline *A);
Status AirlineReady();
Status AirlineBack(Airline *B,char C);
#endif // AIRLINE_H_INCLUDED
Client.h
#ifndef CLIENT_H_INCLUDED
#define CLIENT_H_INCLUDED
typedef struct Passenger{
char Name [12]; //乘客姓名
char PassPort [12];//乘客护照号
char Phone [12];//乘客电话
char SpaceClass;//舱位等级 F头等舱 C商务舱 Y经济舱
int Sex;//性别 1表示男性 0表示女性
}Client;//乘客结构体
#endif // CLIENT_H_INCLUDED
BookingList.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "BookingList.h"
Status Create(BookingList *B)
{
(*B)=(BookingList)malloc(sizeof(PNode));
(*B)->next=NULL;
return OK;
}
Status OrderInSert(BookingList B,Client P)
{
BookingList L=B;
while(L->next!=NULL)
{
BookingList Q=L->next;
if(strcmp(Q->P.Name,P.Name)<0)
L=L->next;
else
break;
}
BookingList S=(BookingList)malloc(sizeof(PNode));
S->P=P;
S->next=L->next;
L->next=S;
return OK;
}
Status Search(BookingList H,char Pass[],Client *C)
{
BookingList L=H->next;
int flag=0;
while(L!=NULL)
{
if(strcmp(L->P.PassPort,Pass)==0)
{
*C=L->P;
flag=1;
break;
}
}
if(flag==0)
{
printf("该航班没有该护照的订票信息!");
return ERROR;
}
return OK;
}
Status Delete(BookingList H,Client C)
{
BookingList L=H;
while(L->next!=NULL)
{
BookingList Q=L->next;
Client P=Q->P;
if(strcmp(C.PassPort,P.PassPort)==0&&strcmp(C.Name,P.Name)==0)
{
L->next=Q->next;
free(Q);
printf("成功办理退票!\n");
break;
}
L=L->next;
}
return OK;
}
BookingList.h
#ifndef BOOKINGLIST_H_INCLUDED
#define BOOKINGLIST_H_INCLUDED
#define TURE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define OVERFLOW -1
#include "Client.h"
typedef int Status;
typedef struct PNode{
Client P;
struct PNode *next;
}PNode,*BookingList;
Status Create(BookingList *B);
Status OrderInSert(BookingList B,Client P);
Status Search(BookingList H,char Pass[],Client *C);
Status Delete(BookingList H,Client C);
#endif // BOOKINGLIST_H_INCLUDED
WaitingQueue.c
#include <stdio.h>
#include <stdlib.h>
#include "WaitingQueue.h"
#include "BookingList.h"
Status InitQueue(WaitingQueue *Q)
{
Q->front=(ClientPtr)malloc(1*sizeof(CNode));
if(!Q->front)
exit(OVERFLOW);
Q->rear=Q->front;
Q->front->next=NULL;
return OK;
}//客户进入队列
Status EnQueue(WaitingQueue*Q,Client E)
{
ClientPtr New=(ClientPtr)malloc(sizeof(CNode));
if(!New)
exit(OVERFLOW);
New->C=E;
New->next=NULL;
Q->rear->next=New;
Q->rear=New;
return OK;
}
//客户出队列
Status DeQueue(WaitingQueue *Q,Client *E)
{
if(Q->front==Q->rear)
return ERROR;
ClientPtr Head=Q->front->next;
*E=Head->C;
Q->front->next=Head->next;
if(Q->rear==Head)
Q->rear=Q->front;
free(Head);
return OK;
}
Status DestroyQueue(WaitingQueue *Q)
{
while(Q->front)
{
Q->rear=Q->front->next;
free(Q->front);
Q->front=Q->rear;
}
return OK;
}
Status QueueHead(WaitingQueue *Q,Client *D)
{
if(Q->front==Q->rear)
return ERROR;
ClientPtr Head=Q->front->next;
*D=Head->C;
return OK;
}
Status QueueEmpty(WaitingQueue *Q)
{
if(Q->front==Q->rear)
return TURE;
return FALSE;
}
Status Check(WaitingQueue *Q,char Space,Client *E)
{
WaitingQueue W;
InitQueue(&W);
int flag=0;
while(!QueueEmpty(Q))
{
Client C;
DeQueue(Q,&C);
if(C.SpaceClass==Space)
{
*E=C;
flag=1;
Space='\0';
}
else
EnQueue(&W,C);
}
*Q=W;
if(flag==0)
return ERROR;
return OK;
}
WaitingQueue.h
#ifndef WAITINGQUEUE_H_INCLUDED
#define WAITINGQUEUE_H_INCLUDED
#define TURE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define OVERFLOW -1
#include "Client.h"
typedef int Status;
typedef struct CNode{
Client C;
struct CNode *next;
}CNode,*ClientPtr;
//队列结构体
typedef struct{
ClientPtr front;
ClientPtr rear;
}WaitingQueue;
Status InitQueue(WaitingQueue *Q);
Status EnQueue(WaitingQueue*Q,Client E);
Status DeQueue(WaitingQueue *Q,Client *E);
Status DestroyQueue(WaitingQueue *Q);
Status QueueHead(WaitingQueue *Q,Client *D);
Status QueueEmpty(WaitingQueue *Q);
Status Check(WaitingQueue *Q,char Space,Client *E);
#endif // WAITINGQUEUE_H_INCLUDED
首先给大家看我的这个工程的文件布局:
- 由图可以看出每一个.C文件都有几乎对应同名的.h文件
- Client.h是一个需要公用的结构体
- 所有的头文件和源文件都应当包含在工程内
规范化的书写方式应当为:
- .h文件中主要是.C中所实现了的函数的声明,变量的声明,宏定义,结构体类型 .C文件中主要是函数和变量的定义
- 在.C文件中include 相应的同名的.h文件,避免.C中函数顺序带来的影响。因为C语言规定在甲函数调用乙函数时,乙函数必须在甲函数前有定义或者声明。
- 甲.C文件需要用到乙.C文件中的函数时需要 在甲.C中include "乙.h"文件才能调用
- .h文件就像是一个管子,在定义函数的.C文件中和调用这个函数的.C文件中都应该Include,这个include就像是连接出水口和管子以及 用水口和管子的接口,而函数调用的过程就像是引水,你在不同的.C文件中通过include "xxx.h"调用里面声明的函数就像是 从出水口引出不同的管子到数个用水口!够形象了吧!
- .c中如果要定义全局变量,则在其.h中声明中加关键字extern ,函数都是默认为extern全局的
看一下运行结果示意一下操作吧:可以看出在经过订票操作后航班余票减1,退票操作余票后加1。
写在最后的总结:
有大部分注释没有,现在是深夜我有点累!可能以后会更新,如果有困惑记得联系我!1594047159@qq.com
其实有没有人看并没有关系,重要的是这是我最近的努力的产出,知识的输出和总结,在于自己,而不在于他人,共勉!