火车订票管理系统.docx
《火车订票管理系统.docx》由会员分享,可在线阅读,更多相关《火车订票管理系统.docx(19页珍藏版)》请在冰豆网上搜索。
火车订票管理系统
学号11~15选题三:
火车票订票管理系统
1.基本要求:
为方便管理火车票购买信息,编写一个火车票订票管理系统软件。
系统记录必须包括订票人姓名、订票人身份证号、始发站、终到站、票价、席别、订票时间等。
2.基本管理功能:
[1]添加:
增加一条订票人的记录到管理系统中。
[2]查询:
根据订票人身份证查找订票人的相关信息并显示,若找不到也要给出相应提示。
[3]修改:
在管理系统中修改订票人的订票记录。
[4]保存:
将所有订票信息保存在一个文件中(数据库文件或普通的文本文件)。
[5]读取:
从文件中读取已保存了数据。
[6]删除:
从管理系统中删除一条记录。
[7]恢复:
能恢复被删除的记录。
[8]统计:
(A)统计每天订票张数和总车票金额;(B)统计单价在100元以下、100~400元之间和400元以上的票数总张数及总金额;(C)以表格形式打印所有订票信息。
源代码:
#include
#include
#include
#include
usingnamespacestd;
intd;//用于选择(按1继续,按2退出,按他其他报错待完善)
intx=1;//用于脱出while循环
stringsfz;//身份证号码,用户输入可用到
classticket
{public:
stringID;
stringname;
stringSstation;
stringTstation;
floatprice;
stringseat;
stringtime;
ticket*next;
ticket(stringI,stringn,stringS,stringT,floatp,strings,stringt)
{ID=I;name=n;Sstation=S;Tstation=T;price=p;seat=s;time=t;}
voiddisplay();
};
voidticket:
:
display()
{cout<cout<<"|"<}
voidmenu()
{cout<cout<cout<<"************欢迎使用************"<cout<cout<<"**请输入选项前的编号**"<cout<cout<<"**************************************************************"<cout<<"*1.添加车票信息*"<cout<<"*2.查询车票信息*"<cout<<"*3.修改车票信息*"<cout<<"*4.删除车票信息*"<cout<<"*5.恢复车票信息*"<cout<<"*6.显示车票信息*"<cout<<"*7.统计车票信息*"<cout<<"*8.保存车票信息*"<cout<<"*9.读取车票信息*"<cout<<"*0.离开*"<cout<<"**************************************************************"<}
ticket*head=NULL,*del=NULL,*p0,*p1,*p2,*p3,*p4;//head数据链表头指针,p0,p1,p2添加函数专用,避免发生错误
intcheck(stringb)//身份证号码作为功能基本辨别数据,应该有一个函数专门检查其是否重复,0表示重复,1表示不重复
{ticket*ch;
ch=head;
intche=1;
while(ch!
=NULL)
{if(ch->ID==b){che=0;ch=NULL;}
else{ch=ch->next;}
}
returnche;
}
intcheck1(stringb)//sbl
{ticket*ch;
ch=del;
intche=1;
while(ch!
=NULL)
{if(ch->ID==b){che=0;ch=NULL;}
else{ch=ch->next;}
}
returnche;
}
intadd()//将订票数据保存在一个基础链表中
{system("cls");
floatprice;
stringname,ID,Sstation,Tstation,seat,time;
if(head==NULL)//以下为链表为空的情况
{
cout<<"=============开始输入订票信息============="<cout<<"请输入订票人身份证号码:
";
cin>>ID;
cout<<"请输入订票人姓名:
";
cin>>name;
cout<<"请输入始发站:
";
cin>>Sstation;
cout<<"请输入终点站:
";
cin>>Tstation;
cout<<"请输入票价:
";
cin>>price;
cout<<"请输入席别:
";
cin>>seat;
cout<<"请输入订票时间(年月日以“-”隔开):
";
cin>>time;
head=p1=p2=newticket(ID,name,Sstation,Tstation,price,seat,time);
x=1;
while(x)
{system("cls");
cout<<"按1继续输入,按2退出-》";
cin>>d;
if(d==1)
{system("cls");
p1->next=NULL;
cout<<"=============开始输入订票信息============="<cout<<"请输入订票人身份证号码:
";
cin>>ID;
if(check(ID)==0){cout<<"身份证号码重复!
"<system("pause");
return0;}
cout<<"请输入订票人姓名:
";
cin>>name;
cout<<"请输入始发站:
";
cin>>Sstation;
cout<<"请输入终点站:
";
cin>>Tstation;
cout<<"请输入票价:
";
cin>>price;
cout<<"请输入席别:
";
cin>>seat;
cout<<"请输入订票时间(年月日以“-”隔开):
";
cin>>time;
p1=newticket(ID,name,Sstation,Tstation,price,seat,time);
p2->next=p1;
p2=p1;
}
elseif(d==2)
{p1->next=NULL;
x=0;
}
else{cout<<"非法输入!
"<}
}//以上为链表为空的情况
else//以下为链表已有数据,往末尾添加
{p3=head;
while(p3->next!
=NULL)
{p3=p3->next;}
x=1;
while(x)
{system("cls");
cout<<"=============开始输入订票信息============="<cout<<"请输入订票人身份证号码:
";
cin>>ID;
if(check(ID)==0){cout<<"身份证号码重复!
"<system("pause");
return0;}
cout<<"请输入订票人姓名:
";
cin>>name;
cout<<"请输入始发站:
";
cin>>Sstation;
cout<<"请输入终点站:
";
cin>>Tstation;
cout<<"请输入票价:
";
cin>>price;
cout<<"请输入席别:
";
cin>>seat;
cout<<"请输入订票时间(年月日以“-”隔开):
";
cin>>time;
p0=newticket(ID,name,Sstation,Tstation,price,seat,time);
p3->next=p0;
p3=p0;
system("cls");
cout<<"按1继续输入,按2退出-》";
cin>>d;
if(d==1){x=1;p3->next=NULL;}
elseif(d==2){p3->next=NULL;x=0;}
else
{cout<<"非法输入!
"<}
}//以上为链表已有数据,往末尾添加
return1;
}
ticket*search1(stringa)//查询函数1,用于输入身份证号码返回一个指针,可在其他部分被使用
{ticket*cha1;
cha1=head;
x=1;
while(x)
{if(cha1==NULL){x=0;}
elseif(cha1->ID==a){x=0;}
else{cha1=cha1->next;}
}
returncha1;
}
ticket*search_1(stringa)//改查1后面都得改,嗯,就这样了(~ ̄▽ ̄)~
{ticket*cha1;
cha1=del;
x=1;
while(x)
{if(cha1==NULL){x=0;}
elseif(cha1->ID==a){x=0;}
else{cha1=cha1->next;}
}
returncha1;
}
ticket*search2(stringb)//查询函数2,返回所要查询结点的前一个结点的指针,在删除部分使用
{ticket*cha2,*cha3;
cha2=cha3=head;
x=1;
while(x)
{if(cha2->next==NULL){x=0;}
elseif(cha2->ID==b){x=0;}
else{cha3=cha2;
cha2=cha2->next;}
}
returncha3;
}
ticket*search_2(stringb)//-_-
{ticket*cha2,*cha3;
cha2=cha3=del;
x=1;
while(x)
{if(cha2->next==NULL){x=0;}
elseif(cha2->ID==b){x=0;}
else{cha3=cha2;
ch