直接就上源码了,就一个程序很简单,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<