您好,欢迎访问三七文档
学号11~15选题三:火车票订票管理系统1.基本要求:为方便管理火车票购买信息,编写一个火车票订票管理系统软件。系统记录必须包括订票人姓名、订票人身份证号、始发站、终到站、票价、席别、订票时间等。2.基本管理功能:[1]添加:增加一条订票人的记录到管理系统中。[2]查询:根据订票人身份证查找订票人的相关信息并显示,若找不到也要给出相应提示。[3]修改:在管理系统中修改订票人的订票记录。[4]保存:将所有订票信息保存在一个文件中(数据库文件或普通的文本文件)。[5]读取:从文件中读取已保存了数据。[6]删除:从管理系统中删除一条记录。[7]恢复:能恢复被删除的记录。[8]统计:(A)统计每天订票张数和总车票金额;(B)统计单价在100元以下、100~400元之间和400元以上的票数总张数及总金额;(C)以表格形式打印所有订票信息。源代码:#includeiostream#includefstream#includestring#includeiomanipusingnamespacestd;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(){coutleft;cout|setw(18)ID|setw(8)name|setw(8)Sstation|setw(8)Tstation|setw(6)price|setw(6)seat|setw(10)time|endl;}voidmenu(){coutendl;coutendl;cout************欢迎使用************endl;coutendl;cout**请输入选项前的编号**endl;coutendl;cout**************************************************************endl;cout*1.添加车票信息*endl;cout*2.查询车票信息*endl;cout*3.修改车票信息*endl;cout*4.删除车票信息*endl;cout*5.恢复车票信息*endl;cout*6.显示车票信息*endl;cout*7.统计车票信息*endl;cout*8.保存车票信息*endl;cout*9.读取车票信息*endl;cout*0.离开*endl;cout**************************************************************endl;}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=============开始输入订票信息=============endl;//*票价考虑报错cout请输入订票人身份证号码:;cinID;cout请输入订票人姓名:;cinname;cout请输入始发站:;cinSstation;cout请输入终点站:;cinTstation;cout请输入票价:;cinprice;cout请输入席别:;cinseat;cout请输入订票时间(年月日以“-”隔开):;cintime;head=p1=p2=newticket(ID,name,Sstation,Tstation,price,seat,time);x=1;while(x){system(cls);cout按1继续输入,按2退出-》;cind;if(d==1){system(cls);p1-next=NULL;cout=============开始输入订票信息=============endl;cout请输入订票人身份证号码:;cinID;if(check(ID)==0){cout身份证号码重复!endl;system(pause);return0;}cout请输入订票人姓名:;cinname;cout请输入始发站:;cinSstation;cout请输入终点站:;cinTstation;cout请输入票价:;cinprice;cout请输入席别:;cinseat;cout请输入订票时间(年月日以“-”隔开):;cintime;p1=newticket(ID,name,Sstation,Tstation,price,seat,time);p2-next=p1;p2=p1;}elseif(d==2){p1-next=NULL;x=0;}else{cout非法输入!endl;system(pause);}}}//以上为链表为空的情况else//以下为链表已有数据,往末尾添加{p3=head;while(p3-next!=NULL){p3=p3-next;}x=1;while(x){system(cls);cout=============开始输入订票信息=============endl;cout请输入订票人身份证号码:;cinID;if(check(ID)==0){cout身份证号码重复!endl;system(pause);return0;}cout请输入订票人姓名:;cinname;cout请输入始发站:;cinSstation;cout请输入终点站:;cinTstation;cout请输入票价:;cinprice;cout请输入席别:;cinseat;cout请输入订票时间(年月日以“-”隔开):;cintime;p0=newticket(ID,name,Sstation,Tstation,price,seat,time);p3-next=p0;p3=p0;system(cls);cout按1继续输入,按2退出-》;cind;if(d==1){x=1;p3-next=NULL;}elseif(d==2){p3-next=NULL;x=0;}else{cout非法输入!endl;system(pause);}}}//以上为链表已有数据,往末尾添加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;cha2=cha2-next;}}returncha3;}voidsearch()//用于用户查询功能(目前只能查询一次,然后退出,待完善){system(cls);cout请输入身份证号码:;cinsfz;p3=search1(sfz);if(p3==NULL){cout无相关信息!endl;system(pause);}else{coutleft;cout|setw(18)身份证号码|setw(8)姓名|setw(8)始发站|setw(8)终点站|setw(6)票价|setw(6)席别|setw(10)订票时间|endl;cout------------------------------------------------------------------------endl;p3-display();system(pause);}}voiddisplay1()//{system(cls);ticket*dis;coutleft;cout|setw(18)身份证号码|setw(8)姓名|setw(8)始发站|setw(8)终点站|setw(6)票价|setw(6)席别|setw(10)订票时间|endl;cout------------------------------------------------------------------------endl;dis=head;if(head!=0)do{dis-display();dis=dis-next;}while(dis!=NULL);}voidmodify()//修改函数,用于修改数据(目前只可以修改单个订票信息,待完善){system(cls);display1();cout请输入要修改信息的身份证号码:;cinsfz
本文标题:火车订票管理系统
链接地址:https://www.777doc.com/doc-2215679 .html