数据结构课程设计,链表的增删改查,航空订票系统,c++程序

直接就上源码了,就一个程序很简单,vc++创建的成.cpp类型就可以。代码注释也有,祝大家期末课设愉快。

 

 (最近电脑硬盘坏了,后悔很多资料没有备份,以后尽量把写过的代码上传,也算给自己做个备份吧)

 

​
#include
using namespace std;
#include
#include
#include

typedef struct Node
{
	int hangbanhao;
    char jixing[10];
    char qifeichengshi[10];
	char jiangluochengshi[10];
	char qifeishijian[10];
	char jiangluoshijian[10];
    int zuoweishu;
	int piaojia;
    struct Node *next;
}LNode,*LinkList;

typedef struct CK
{
  char name[10];
  char id[18];

  struct CK *next;
}ck,*cke;

void import(int n,LinkList &L)//录入航班函数: n为所要录入航班的数量:
{
    L=(LinkList)malloc(sizeof(LNode));
	L->next=NULL;
	LNode * tail=L;//等价LinkList tail=L;
    for(int i=0; i>p->hangbanhao;
		cout<<"请输入第"<>p->jixing;
		cout<<"请输入第"<>p->qifeichengshi;
		cout<<"请输入第"<>p->jiangluochengshi;
		cout<<"请输入第"<>p->qifeishijian;
		cout<<"请输入第"<>p->jiangluoshijian;
	    cout<<"请输入第"<>p->zuoweishu;
		cout<<"请输入第"<>p->piaojia;
		
		p->next=NULL;
		tail->next=p;
		tail=p;//尾插法,根据循环画图可知,tail指针始终在最后p31
	}
}
//写入本地文件,并读取输出显示
void show_L(LinkList &L)
{
  ofstream out("out.txt");//实例化一个对象  
   if (out.is_open()) 
   {
      LinkList p=L->next;
      while(p){
		out<<"航班号:";
	    out<hangbanhao;
	    out<<" 机型:";
		out<jixing;
        out<<" 起飞城市:";
	    out <qifeichengshi;
		out<<" 降落城市:";
		out <jiangluochengshi;
		out<<" 起飞时间:";
		out <qifeishijian;
        out<<" 降落时间:";
		out <jiangluoshijian;
		out<<" 座位数:";
		out<zuoweishu;
		out<<" 票价:";
		out<piaojia;
		
		out<< "\n";//用于换行,是下面in.getline的关键
	    p=p->next;
	  }
   
   }
   out.close(); //写完

    char buffer[256]; 
    ifstream in("out.txt");  
	if (! in.is_open())  
       { cout << "Error opening file"; exit (1); }  
       while (!in.eof() )  
       {  
           in.getline (buffer,100);  
           cout << buffer << endl;  
       }  
}
//按航班号查找
LinkList GetElem_L(LinkList &L,int e)
{
      LinkList p=L->next;
      while(p)
	  {
		if(p->hangbanhao!=e)
			p=p->next;
		else return p;
	  }
     return 0;
}
//按航班起降城市查找
LinkList GetElem_Lc(LinkList &L,char qi[10],char ji[10])
{
      LinkList p=L->next;
      while(p)
	  {
		if(strcmp(p->qifeichengshi,qi)!=0||strcmp(p->jiangluochengshi,ji)!=0)
			p=p->next;
		else return p;
	  }
      return 0;
}

//删除
int ListDelete_L(LinkList &L,int e){
	LinkList p=L;
	while(p->next&&p->next->hangbanhao!=e){
		p=p->next;//直到查找到要删除的结点
	}
	if(!p->next)
		return 0;
	LinkList q=p->next;
	p->next=q->next;//课本p29,p->next=p->next->next;
	free(q);//本题q是需要删除的结点
	return 1;
}
//插入
int ListInsert_L(LinkList &L,int i){

	LinkList p=L;//i为插入的位置
	int j=0;
	while(p&&jnext;
		++j;
	}
	if(!p||j>i-1)
		return 0;
	LNode *s=(LinkList)malloc(sizeof(LNode));
	cout<<"输入航班号:";
	cin>>s->hangbanhao;
	cout<<"输入机型:";
	cin>>s->jixing;
	cout<<"输入起飞城市:";
	cin>>s->qifeichengshi;
	cout<<"输入降落城市:";
	cin>>s->jiangluochengshi;
	cout<<"输入起飞时间:";
	cin>>s->qifeishijian;
	cout<<"输入降落时间:";
	cin>>s->jiangluoshijian;
	cout<<"输入座位数:";
	cin>>s->zuoweishu;
	cout<<"输入票价:";
	cin>>s->piaojia;
	
	s->next=p->next;
	p->next=s;//课本p29,s->next=p->next;p->next=s;
	return 1;
}
//修改
LinkList xiugai(LinkList &L,int yxg)
{
  LinkList q=L->next;
      while(q)
	  {
		if(q->hangbanhao!=yxg)
			q=q->next;
		else return q;
	  }
  return 0;
}
//乘客信息录入
void importren(int n,cke &C)//录入航班函数: n为所要录入航班的数量:
{
    C=(cke)malloc(sizeof(ck));
	C->next=NULL;
	ck*ta=C;
    for(int i=0; i>p->name;
		cout<<"请输入第"<>p->id;
		
	    p->next=NULL;
		ta->next=p;
		ta=p;//尾插法,根据循环画图可知,tail指针始终在最后p31
	}
}
//订票乘客信息和航班信息写入本地和读取
void show_dp(cke &C,LinkList &R)
{
  ofstream out("dinpiao.txt");//实例化一个对象  
   if (out.is_open()) 
   {
      cke p=C->next;
      while(p){
		out<<"姓名 ";
	    out<name;
	
	    out<<"  身份证ID ";
		out<id;
		out<< "\n";//用于换行,是下面in.getline的关键
	    p=p->next;
	  }
	  if(R->zuoweishu-1>=0)
	  {
	   out<<"航班号:"<hangbanhao;
	   out<<" 机型:"<jixing;
	   out<<" 起飞城市:"<qifeichengshi;
	   out<<" 降落城市:"<jiangluochengshi;
	   out<<" 起飞时间:"<qifeishijian;
	   out<<" 降落时间:"<jiangluoshijian;
	   out<<" 座位数:"<zuoweishu-1;//订票之后座位数减一
	   out<<" 票价:"<piaojia;
	   out<< "\n";//用于换行,是下面in.getline的关键
	   out<<"订票成功";
	   out<< "\n";//用于换行,是下面in.getline的关键
	  }
	  else 
	  {
		out<<"航班号:"<hangbanhao;
	    out<<" 机型:"<jixing;
	    out<<" 起飞城市:"<qifeichengshi;
	    out<<" 降落城市:"<jiangluochengshi;
	    out<<" 起飞时间:"<qifeishijian;
	    out<<" 降落时间:"<jiangluoshijian;
	    out<<" 座位数:"<zuoweishu;
	    out<<" 票价:"<piaojia;
	    out<< "\n";//用于换行,是下面in.getline的关键
        out<<"该航班暂无票,请选择其他航班";
		out<< "\n";//用于换行,是下面in.getline的关键
	  }
   }
   out.close(); //写完
    char buffer[256]; 
    ifstream in("dinpiao.txt");  
	if (! in.is_open())  
       { cout << "Error opening file"; exit (1); }  
       while (!in.eof() )  
       {  
           in.getline (buffer,100);  
           cout << buffer << endl;  
       }  
}
//退票乘客信息和航班信息写入本地和读取
void show_tp(cke &C,LinkList &R)
{
  ofstream out("dinpiao.txt");//实例化一个对象  
   if (out.is_open()) 
   {
      cke p=C->next;
      while(p){
		out<<"姓名 ";
	    out<name;
	
	    out<<"身份证ID ";
		out<id;
		out<< "\n";//用于换行,是下面in.getline的关键
	    p=p->next;
	  }
	  out<<"航班号 "<hangbanhao;
	  out<<" 机型:"<jixing;
	  out<<" 起飞城市:"<qifeichengshi;
	  out<<" 降落城市:"<jiangluochengshi;
	  out<<" 起飞时间:"<qifeishijian;
	  out<<" 降落时间:"<jiangluoshijian;
	  out<<" 座位数:"<zuoweishu;//退票之后不需要加1,用最初的座位数;
	  out<<" 票价:"<piaojia;
	  out<< "\n";//用于换行,是下面in.getline的关键
	  out<<"退票成功";
	  out<< "\n";//用于换行,是下面in.getline的关键
   }
   out.close(); //写完
    char buffer[256]; 
    ifstream in("dinpiao.txt");  
	if (! in.is_open())  
       { cout << "Error opening file"; exit (1); }  
       while (!in.eof() )  
       {  
           in.getline (buffer,100);  
           cout << buffer << endl;  
       }  
}
void menu()
{
    cout<<"欢迎使用航空订票系统"<>caozuo;

      switch(caozuo)
	  {
	case 1:
//创建
	  int num;
      cout<<"请输入要录入的航班数:";
      cin>>num;
      cout<>dchbh;
	  LinkList p;
	  p=GetElem_L(L,dchbh);//查找
	  cout<<"待查航班为:";
	  cout<<"航班号:"<hangbanhao;
	  cout<<" 机型:"<jixing;
	  cout<<" 起飞城市:"<qifeichengshi;
	  cout<<" 降落城市:"<jiangluochengshi;
	  cout<<" 起飞时间:"<qifeishijian;
	  cout<<" 降落时间:"<jiangluoshijian;
	  cout<<" 座位数:"<zuoweishu;
	  cout<<" 票价:"<piaojia;
      cout<>qi;
	   cout<<"输入降落城市:";
	   cin>>ji;
	   LinkList J;
	   J=GetElem_Lc(L,qi,ji);//查找
	   cout<<"待查航班为:";
	   cout<<"航班号:"<hangbanhao;
	   cout<<" 机型:"<jixing;
	   cout<<" 起飞城市:"<qifeichengshi;
	   cout<<" 降落城市:"<jiangluochengshi;
	   cout<<" 起飞时间:"<qifeishijian;
	   cout<<" 降落时间:"<jiangluoshijian;
	   cout<<" 座位数:"<zuoweishu;
	   cout<<" 票价:"<piaojia;
       cout<>yxg;
      LinkList q;
	  q=xiugai(L,yxg);//修改
	  cout<<"航班号修改为:";
	  cin>>q->hangbanhao;
	  cout<<"航班机型修改为:";
	  cin>>q->jixing;
	  cout<<"航班起飞城市修改为:";
	  cin>>q->qifeichengshi;
	  cout<<"航班降落城市修改为:";
	  cin>>q->jiangluochengshi;
	  cout<<"航班起飞时间修改为:";
	  cin>>q->qifeishijian;
	  cout<<"航班降落时间修改为:";
	  cin>>q->jiangluoshijian;
	  cout<<"航班座位数修改为:";
      cin>>q->zuoweishu;
	  cout<<"航班票价修改为:";
      cin>>q->piaojia;
      show_L(L);
	  cout<>renshu;
      cout<>m;
	  cout<>yt;
	 cout<

 

你可能感兴趣的:(大学时写的课设,课设,链表,数据结构)