数据结构——飞机订票系统

/**************************************************
*版权所有 (c)2014,Li Jiajun                          
*                     
*文件名称:ticket.c                           
*文件标识:无
*内容摘要:该代码用于购买飞机票的文件系统
*其他说明:无 
*当前版本:V1.0
*作者:李佳骏                         
*完成日期:2017年12月22日
***************************************************                           

ljj.h

#ifndef LJJ_H_INCLUDED
#define LJJ_H_INCLUDED


#define MaxSize 200
typedef struct plane   //飞机结构体
{
    char plane_number[10];
    char plane_start[20];
    char plane_finish[20];
    int seat;
    int left_seat;
    struct plane *next;
}plane;

typedef struct individual   //人的结构体
{
    char in_name[30];
    char in_id[10];
    char plane_number[20];//航班号
    int in_seat;//座位号
    struct individual *next;
}individual;

typedef struct plane_head    //定义飞机的头结点
{
    int count;
    plane *next;
}plane_head;

typedef struct in_head     //定义人的头结点
{
    int count;
    individual *next;
}in_head;

//飞机的各个函数
plane_head *import(int n,plane_head *phead_line);//录入航班
plane *query(plane_head *phead);//查询航班的情况
void display_plane(plane *node);//打印一个航班的信息到屏幕上
void all_display_plane(plane_head *headline);//打印所有的信息
int change_plane(plane_head *headline); //修改航班信息

//客户的各个函数
void display_in(individual *node);//打印一个客户信息到屏幕上
void all_display_in(in_head *headline);//打印所有客户信息到屏幕上
int buyticket(plane_head *pheadline,in_head *headline);//买票
int returnticket(plane_head *headline,in_head *client);//退票

//客户和航班保存
int savemessage(plane_head *pheadline,in_head *headline);//信息到txt文件中
void main_menu();//菜单
#endif // LJJ_H_INCLUDED

ljj.cpp

#include 
#include 
#include 
#include 
#include 
#include
#include
#include "ljj.h"

using namespace std;

/**************************************************
*功能描述:录入航班
*输入参数:航班号plane_number
           起飞地plane_start
           目的地plane_finish
*输出参数:无
*返回值:头结点pheadline
*其他说明:消息字段之间用分号(;)分隔
***************************************************   

plane_head *import(int n,plane_head *pheadline)//录入航班
{
	plane *temp= new plane;
	temp->next=NULL;
	pheadline->next=temp;
	pheadline->count=n;
	for(int i=0;i>temp->plane_number;
		cout<<"请输入第"<>temp->plane_start;
		cout<<"请输入第"<>temp->plane_finish;
		temp->left_seat=temp->seat=200;

		cout<<"第"<next=new plane;
			while(i>1)
			{
			    if(temp->plane_number==temp->next->plane_number)
			 {
				cout<<"分配失败。"<next->next=NULL;
			temp=temp->next;
		}
	}
	return pheadline;
}




/**************************************************
*功能描述:查询航班
*输入参数:选项s
           所选航班号plane_number
           所选起飞地plane_start
           所选目的地plane_finish
*输出参数:无
*返回值:没找到返回NULL   找到返回找到的节点find
*其他说明:用一个指针find赋值为找到的那个节点
***************************************************   

plane *query(plane_head *phead)//查询航班的情况
{
	int s;
	plane *find=NULL;
	plane *temp;

	cout<<"*******************************"<>s;
	cout<>plane_number;
			temp=phead->next;
			while(temp)
			{
				if(strcmp(temp->plane_number,plane_number)==0)
				{
					find=temp;
					return temp;
					break;
				}
				else
				{
					temp=temp->next;
				}
			}
			if(!temp)
			{
				cout<<"没有找到该航班的信息。"<>plane_start;
			cout<<"请输入目的地: ";
			cin>>plane_finish;
			temp=phead->next;
			while(temp)
			{
				if(strcmp(temp->plane_start,plane_start)==0&&strcmp(temp->plane_finish,plane_finish)==0)
				{
					find =temp;
					break;
				}
				temp=temp->next;
			}
			if(!temp)
			{
				cout<<"没有找到该航班的信息。"<plane_number<<"\t\t"<plane_start<<"\t\t"<plane_finish<<"\t\t"<seat<<"\t"<left_seat<<"\t"<next;
 if(!node)
 {
  cout<<"当前没有航班信息"<count<next;
 }
}



void display_in(individual *node)//打印一个客户节点的信息到屏幕。
{
 if(node==NULL)
 {
  cout<<"参数为空输出失败。"<in_name<<"\t\t"
  <in_id<<"\t\t"
  <in_seat<<"\t\t"
  <plane_number<<"\t\t"
  <next;
 if(!node)
 {
  cout<<"当前没有客户信息。"<next;
 }

}


/**************************************************
*功能描述:买票
*输入参数: 所选航班号plane_number[10]
           证件号码in_id
           姓名in_name
*输出参数:无
*返回值:失败返回0   成功返回1
*其他说明:注意剩余的余票
***************************************************   

int buyticket(plane_head *headline,in_head *headclient)//买票
{
 //headline->count=0;

 cout<<"请输入航班号  ";
 char plane_number[10] ;
 cin>>plane_number;
 plane *temp;
 temp=headline->next;
 while(temp)
 {
  if(strcmp(temp->plane_number,plane_number)==0)
  {
   break;
  }
  temp=temp->next;
 }
 if(!temp)
 {
cout<<"未找到该航班"<left_seat==0)
 {
  cout<<"对不起该航班票已经售完。"<>n;
 }
 individual *custom=new individual;

 cout<<"请输入你的证件号码  ";
cin>>custom->in_id;
 cout<<"请输入你的姓名";
 cin>>custom->in_name;
 cout<in_seat=temp->seat - temp->left_seat + 1;
 custom->next=NULL;
 strcpy(custom->plane_number,plane_number);
 temp->left_seat--;
 headclient->count++;
 custom->next = headclient->next;
 headclient->next = custom;


 cout<<"订票成功祝您旅途愉快。"<>name;
cout<<"请输入顾客的证件号码:  "<>in_id;
cout<<"请输入顾客的航班号 :  "<>number;
 plane *airlinetemp= headline->next;
 individual *clienttemp= headclient->next;
 if(NULL==airlinetemp)
 {
  cout<<"当前没有航班信息。"<in_id,in_id)==0)//要删除的节点为第一个时。。。
 {
  strcpy(plane_number,clienttemp->plane_number);
  headclient->next=clienttemp->next;
  delete clienttemp;

  while(airlinetemp)//修改对票客户所对应的航班的售票信息。
  {
   if(strcmp(plane_number,airlinetemp->plane_number)== 0 )
   {
    airlinetemp->left_seat++;
    break;
   }
   airlinetemp = airlinetemp->next;
  }
  cout<<"退票成功。"<next)//要删除 的节点不是第一个时。。。
 {

  if(strcmp(clienttemp->next->in_id,in_id)==0)
  {

   strcpy(plane_number,clienttemp->next->plane_number);

   delnext = clienttemp->next->next;
   delete clienttemp->next;
clienttemp->next=delnext;

   while(airlinetemp)//修改对票客户所对应的航班的售票信息。
   {
    if(strcpy(plane_number,airlinetemp->plane_number)== 0 )
    {
     airlinetemp->left_seat++;
     break;
    }
    airlinetemp = airlinetemp->next;
   }
   cout<<"退票成功."<next;
 }


 cout<<"未找到该客户的信息。"<count<next;
 while(linetemp)
 {

  outline<plane_number<<" "
   <plane_start<<" "
   <plane_finish<<" "
   <seat<<" "
   <left_seat<<" "<next;
 }
 outline.close();
 cout<<"航班信息保存成功..."<count<next;
 while(clienttemp)
 {

  outclient<in_name<<" "
   <in_id<<" "
   <plane_number<<" "
   <in_seat<<" "<next;
 }

 outclient.close();
 cout<<"客户信息保存成功。"<plane_number
           增加的起飞地tem->plane_start
           增加的目的地tem->plane_finish
           删除的航班号plane_number
           修改的座位余数a
           修改的起始地s[20]
           修改的目的地d[20]
*输出参数:增加成功
           删除成功
           修改成功
*返回值:没找到返回NULL   找到返回找到的节点find
*其他说明:增加用一个指针find赋值为找到的那个节点
           删除的该节点,头结点的next指向删除节点的下一个节点
***************************************************              


int change_plane(plane_head *headline)//修改航班信息
{
 cout<<"当前所有航班的信息为"<next;
 plane * t = headline->next;
 while(t)
 {
  display_plane(t);
  t=t->next;
 }
 cout<>select;
 cout<3 || select<1)
 {
  cout<<"输入错误。"<next = (plane*)malloc(sizeof(plane));
   plane *tem= new plane;

   cout<<"请输入要增加的航班号   ";
   cin>>tem->plane_number;
   cout<<"请输入航班的起飞地   ";
   cin>>tem->plane_start;
   cout<<"请航班的目的地   ";
   cin>>tem->plane_finish;
   cout<<"请航班的座位总数   ";
   cin>>tem->seat;
   tem->left_seat = tem->seat;
   tem->next=NULL;
   headline->count++;
   cout<<"增加成功。"<next;
   else
   {
       tem->next=temp->next;
        temp->next=tem;
   }
   break;
  }
 case 2:
  {
   cout<<"请输入您要删除的航班的航班号  ";
   char plane_number[10];
   cin>>plane_number;
   plane *delline=new plane;
   delline = headline->next;
   while(delline)
   {
    if(strcmp(delline->plane_number, plane_number)==0)
    {
     plane *plink;
     plink = delline->next;
     delete delline;
     headline->next=plink;
     headline->count--;
     cout<<"删除成功!"<next;
   }
   break;
  }
 case 3:
  {
   cout<<"请输入您要修改的航班的航班号";
   char plane_number3[10];

   cin>>plane_number3;
   temp = headline->next;
   while(temp)
   {
    if(strcmp(temp->plane_number, plane_number3)==0)
    {
     cout<<"请选择要修改的内容"<>p;
      switch(p)
      {
    case(1):
       {

       cout<<"请输入您要修改的座位余数为: ";
        int a;cin>>a;
        temp->left_seat=a;
        cout<<"修改成功!"<>s;
        strcpy(temp->plane_start,s);
         cout<<"修改成功!"<plane_finish,d);
             cout<<"修改成功!"<next;
   break;
   }
 }
 return 1;
}
}

void main_menu()
{
 cout<<"********************欢迎使用飞机售票系统******************"<

main.cpp

#include 
#include 
#include 
#include 
#include
#include
#include "ljj.h"
using namespace std;


int main()
{
 plane_head *headline = new plane_head;
 headline->count=0;
 headline->next=NULL;
 in_head *headclient = new in_head;
 headclient->count=0;
 headclient->next=NULL;
 while(1)
 {
  main_menu();
  int n;
  cout<<"请选择您要进行的操作:  ";
  cin>>n;
  cout<>num;
   cout<




你可能感兴趣的:(数据结构——飞机订票系统)