火车订票管理系统.docx
- 文档编号:10758551
- 上传时间:2023-02-22
- 格式:DOCX
- 页数:23
- 大小:45.94KB
火车订票管理系统.docx
《火车订票管理系统.docx》由会员分享,可在线阅读,更多相关《火车订票管理系统.docx(23页珍藏版)》请在冰豆网上搜索。
火车订票管理系统
学号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; cha2=cha2->next;} } returncha3; } voidsearch()//用于用户查询功能(目前只能查询一次,然后退出,待完善) {system("cls"); cout<<"请输入身份证号码: "; cin>>sfz; p3=search1(sfz); if(p3==NULL){cout<<"无相关信息! "< else{cout< cout<<"|"< cout<<"------------------------------------------------------------------------"< p3->display();system("pause");} } voiddisplay1()// {system("cls"); ticket*dis; cout< cout<<"|"< cout<<"------------------------------------------------------------------------"< dis=head; if(head! =0) do {dis->display(); dis=dis->next; } while(dis! =NULL); } voidmodify()//修改函数,用于修改数据(目前只可以修改单个订票信息,待完善) {system("cls"); display1(); cout<<"请输入要修改信息的身份证号码: "; cin>>sfz; p3=search1(sfz); if(p3==NULL){cout<<"无相关信息! "< else{x=1; while(x) {system("cls"); cout<<"1.身份证号码2.姓名3.始发站4.终点站5.票价6.席别7.时间"< cout<<"请输入要修改的选项前的编号: "; cin>>d; if(d==1){hui2: cout<<"请输入身份证号码: "; cin>>sfz; if(check(sfz)==0){cout<<"身份证号码重复! "< gotohui2;} p3->ID=sfz; } elseif(d==2){cout<<"请输入姓名: ";cin>>p3->name;} elseif(d==3){cout<<"请输入始发站: ";cin>>p3->Sstation;} elseif(d==4){cout<<"请输入终点站: ";cin>>p3->Tstation;} elseif(d==5){cout<<"请输入票价: ";cin>>p3->price;} elseif(d==6){cout<<"请输入席别: ";cin>>p3->seat;} elseif(d==7){cout<<"请输入时间: ";cin>>p3->time;} else{cout<<"非法输入! "< hui1: cout<<"按1继续输入,按2退出-》"; intd1; cin>>d1; if(d1==1){x=1;} elseif(d1==2){x=0;} else{cout<<"非法输入! "< } } } voidDarea(ticket*c)//将删除信息储存在另一链表中 {if(del==NULL){del=c;del->next=NULL;} else{ticket*Dar; Dar=del; while(Dar->next! =NULL) {Dar=Dar->next;} Dar->next=c; Dar=c; Dar->next=NULL; } } voidDelete()//删除函数将要删除的订票信息移出链表,并将所有删除信息结成另一链表,供恢复使用 {system("cls"); display1(); cout<<"请输入要删除订票信息的身份证号码: "; cin>>sfz; p3=search1(sfz); p4=search2(sfz); if(p3==NULL){cout<<"无相关信息! "< elseif(p3! =NULL&&p3==head){head=head->next;Darea(p3);cout<<"删除成功! "< elseif(p3->next==NULL){p4->next=NULL;Darea(p3);cout<<"删除成功! "< else{p4->next=p3->next;Darea(p3);cout<<"删除成功! "< } voidRdel(stringsfz)//将已经恢复的订票信息从Darea中移除 {p3=search_1(sfz); p4=search_2(sfz); if(p3==del){del=del->next;} elseif(p3->next==NULL){p4->next=NULL;} else{p4->next=p3->next;} } voidrecover()//恢复函数,用于将已经删除的订票信息恢复 {system("cls"); ticket*r1,*r2,*r3; if(del==NULL){cout<<"无可恢复订票信息! "< else{cout< cout<<"|"< cout<<"------------------------------------------------------------------------"< r1=del; if(del! =0) do {r1->display(); r1=r1->next; } while(r1! =NULL); hui3: cout<<"请输入要恢复的订票信息的身份证号码: "; cin>>sfz; if(check1(sfz)==1){cout<<"非法输入! "< r2=head; while(r2->next! =NULL){r2=r2->next;} r3=search_1(sfz); r2->next=r3; r3->next=NULL; Rdel(sfz); cout<<"成功恢复! "< system("pause"); } } voiddisplay()//显示基础链表中的所有订票信息 {system("cls"); ticket*dis; cout< cout<<"|"< cout<<"------------------------------------------------------------------------"< dis=head; if(head! =0) do {dis->display(); dis=dis->next; } while(dis! =NULL); system("pause"); } voidcount()//统计部分 {system("cls"); if(head==NULL){cout<<"无可统计信息! "< else{intn=0,n1=0,n2=0,n3=0; floati,m=0,m1=0,m2=0,m3=0; p3=head; while(p3! =NULL) {i=p3->price; n=n+1; m=m+i; if(i<100){n1=n1+1;m1=m1+i;} if(i>=100&&i<=400){n2=n2+1;m2=m2+i;} if(i>400){n3=n3+1;m3=m3+i;} p3=p3->next; } cout< cout<<"|"< cout<<"--------------------------------------------------"< cout<<"|"< cout<<"|"< cout<<"|"< cout<<"|"< system("pause"); } } voidsave()//保存函数 {system("cls"); stringfilename,filename1; ofstreamfile; cout<<"请输入文件名: "; cin>>fi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 火车 订票 管理 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)