![](/uploads/image/0230.jpg)
一. 课程设计目的
1. 数据结构课程设计是综合运用数据结构课程中学到的几种典型数据结构,以及程序设计语言,自行实现一个较为完整的应用系统的设计与开发。 2. 通过课程设计,自己通过系统分析、系统设计、编程调试,写实验报告等环节,进一步掌握应用系统设计的方法和步骤,灵活运用并深刻理解典型数据结构在软件开发中的应用 。
3. 学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力。
二.课程设计内容
1)、录入:
可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定) 2)、查询:
可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);
可以输入起飞抵达城市,查询飞机航班情况;
3)、订票:(订票情况可以存在一个数据文件中,结构自己设定) 可以订票,如果该航班已经无票,可以提供相关可选择航班;
4)、退票: 可退票,退票后修改相关数据文件;
客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
5)、修改航班信息:
当航班信息改变可以修改航班数据文件
本系统分为五个模块:录入新航班模块、浏览航班模块、查航班模块、订票模块、
退票模块。得到如图所示系统功能模块图。
四.程序源代码
#ifndef FLIGHTINFO_H
#define FLIGHTINFO_H
#include<iostream>
#include<string.h>
using namespace std;
//记录已订票的旅客及信息
class PsgOn
{
public:
兰蔻香港 char Name[20];
int Booknum;
int Rank;
PsgOn *next;
PsgOn(char N[20],const int B,const int R,PsgOn *Ne=NULL);
PsgOn(PsgOn *Ne=NULL);
};
//记录,处理每条航线信息的类
class FlightNode
广州荔湾发布{
public:
char Terminus[20];
int Flight;
int Plane;
int Day;
int Maxnum;
烧酒虾
int Left;
FlightNode(char T[20]="",const int F=0,const int P=0,const int D=0,const int M=0,const int L=0);
};
//对已订票的客户的信息的操作的类
class POList
{
private:
void init();
public:
PsgOn *head;
PsgOn *tail;
PsgOn *fence;
int leftcnt;
int rightcnt;
int Fli;
POList(int size=10);
void clear();
bool insert(char N[20],const int B,const int R);
bool append(char N[20],const int B,const int R);
bool remove(char *N,int &B);
void setStart();
void setEnd();
void prev();
void next();
int leftLength()const;
int rightLength()const;
bool gerValue(char *N,int &B,int &R)const;
};
int n=0;
void ShowAllFlight(FlightNode *F,POList *B);
void addFlight(FlightNode *F,POList *B);
void ShowOneFlight(FlightNode *F);
void BookTicket(FlightNode *F,POList *B) ;
void ReturnTicket(FlightNode *F,POList *B);
#endif
//PsgOn中的函数的实现
PsgOn::PsgOn(char N[20],const int B,const int R,PsgOn *Ne)
{ for(int i=0;i<=20;i++)
{
Name[i]=N[i];广州到重庆火车时刻表查询
}
Booknum=B;Rank=R;next=Ne;
}
PsgOn::PsgOn(PsgOn *Ne)
{ next=Ne; }
//POList中的函数的实现
void POList::init()
{
fence=tail=head=new PsgOn;
leftcnt=rightcnt=0;
}
POList::POList(int size){ init(); }
bool POList::insert(char N[20],const int B,const int R)
{
fence->next=new PsgOn(N,B,R,fence->next);
if(tail==fence)tail=fence->next;
rightcnt++;
return true;
}
bool POList::append(char N[20],const int B,const int R)
{
tail=tail->next=new PsgOn(N,B,R,NULL);
rightcnt++;
return true;
}
bool POList::remove(char *N,int &B)
{
if(fence->next==NULL)return false;
N=fence->next->Name;B=fence->next->Booknum;
PsgOn *ltemp=fence->next;
fence->next=ltemp->next;
if(tail==ltemp)tail=fence;
delete ltemp;
rightcnt--;
return true;
}
void POList::setStart()
{ fence=head;rightcnt+=leftcnt;leftcnt=0;}
void POList::setEnd()
{ fence=tail;leftcnt+=rightcnt;rightcnt=0;}
void POList::prev()
{
PsgOn *temp=head;
珠海桂山岛天气 if(fence==head)return;
while(temp->next!=fence)temp=temp->next;
fence=temp;
leftcnt--;rightcnt++;
}
2022年杭州亚运会场馆void POList::next()
{
if(fence!=tail)
{fence=fence->next;rightcnt--;leftcnt++;}
}
int POList::leftLength()const
{return leftcnt;}
int POList::rightLength()const
{return rightcnt;}
bool POList::gerValue(char *N,int &B,int &R)const
{
if(rightLength()==0)return false;