火车订票管理系统_第1页
火车订票管理系统_第2页
火车订票管理系统_第3页
火车订票管理系统_第4页
火车订票管理系统_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 学号1115 选题三:火车票订票管理系统1. 基本要求:为方便管理火车票购买信息,编写一个火车票订票管理系统软件。系统记录必须包括订票人姓名、订票人身份证号、始发站、终到站、票价、席别、订票时间等。2. 基本管理功能:1 添加:增加一条订票人的记录到管理系统中。2 查询:根据订票人身份证查找订票人的相关信息并显示,若找不到也要给出相应提示。3 修改:在管理系统中修改订票人的订票记录。4 保存:将所有订票信息保存在一个文件中(数据库文件或普通的文本文件)。5 读取:从文件中读取已保存了数据。6 删除:从管理系统中删除一条记录。7 恢复:能恢复被删除的记录。8 统计:(A) 统计每天订票张数和总

2、车票金额;(B) 统计单价在100元以下、100400元之间和400元以上的票数总张数及总金额;(C) 以表格形式打印所有订票信息。源代码:#include <iostream>#include <fstream>#include <string>#include <iomanip>using namespace std;int d;/用于选择(按1继续,按2退出,按他其他报错待完善)int x=1;/用于脱出while循环string sfz;/身份证号码,用户输入可用到class ticketpublic: string ID; string

3、 name; string Sstation; string Tstation; float price; string seat; string time; ticket *next; ticket(string I,string n,string S, string T,float p, string s,string t) ID=I;name=n;Sstation=S;Tstation=T;price=p;seat=s;time=t; void display();void ticket:display()cout<<left; cout<<"|&quo

4、t;<<setw(18)<<ID<<"|"<<setw(8)<<name<<"|"<<setw(8)<<Sstation<<"|"<<setw(8)<<Tstation<<"|"<<setw(6)<<price<<"|"<<setw(6)<<seat<<"|"&l

5、t;<setw(10)<<time<<"|"<<endl; void menu()cout<<endl; cout<<endl; cout<<" *欢迎使用 *"<<endl; cout<<endl; cout<<" *请输入选项前的编号*"<<endl; cout<<endl; cout<<" *"<<endl; cout<<" *

6、 1.添加车票信息 *"<<endl; cout<<" * 2.查询车票信息 *"<<endl; cout<<" * 3.修改车票信息 *"<<endl; cout<<" * 4.删除车票信息 *"<<endl; cout<<" * 5.恢复车票信息 *"<<endl; cout<<" * 6.显示车票信息 *"<<endl; cout<<&q

7、uot; * 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添加函数专用

8、,避免发生错误int check(string b)/身份证号码作为功能基本辨别数据,应该有一个函数专门检查其是否重复,0 表示重复,1 表示不重复ticket *ch; ch=head; int che=1; while(ch!=NULL) if(ch->ID=b)che=0;ch=NULL; else ch=ch->next; return che;int check1(string b)/ sblticket *ch; ch=del; int che=1; while(ch!=NULL) if(ch->ID=b)che=0;ch=NULL; else ch=ch->

9、;next; return che;int add() /将订票数据保存在一个基础链表中system("cls"); float price; string name,ID,Sstation,Tstation,seat,time; if(head=NULL) /以下为链表为空的情况 cout<<"=开始输入订票信息="<<endl;/*票价考虑报错 cout<<"请输入订票人身份证号码:" cin>>ID; cout<<"请输入订票人姓名:" cin>

10、;>name; cout<<"请输入始发站:" cin>>Sstation; cout<<"请输入终点站:" cin>>Tstation; cout<<"请输入票价:" cin>>price; cout<<"请输入席别:" cin>>seat; cout<<"请输入订票时间(年月日以“-”隔开):" cin>>time; head=p1=p2=new ticket(ID,

11、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<<"=开始输入订票信息="<<endl; cout<<"请输入订票人身份证号码:" cin>>ID; if(check(ID)=0)cou

12、t<<"身份证号码重复!"<<endl; system("pause"); return 0; cout<<"请输入订票人姓名:" cin>>name; cout<<"请输入始发站:" cin>>Sstation; cout<<"请输入终点站:" cin>>Tstation; cout<<"请输入票价:" cin>>price; cout<<&q

13、uot;请输入席别:" cin>>seat; cout<<"请输入订票时间(年月日以“-”隔开):" cin>>time; p1=new ticket(ID,name,Sstation,Tstation,price,seat,time); p2->next=p1; p2=p1; else if(d=2) p1->next=NULL; x=0; else cout<<"非法输入!"<<endl;system("pause"); /以上为链表为空的情况 el

14、se /以下为链表已有数据,往末尾添加 p3=head; while(p3->next!=NULL) p3=p3->next; x=1; while(x) system("cls"); cout<<"=开始输入订票信息="<<endl; cout<<"请输入订票人身份证号码:" cin>>ID; if(check(ID)=0)cout<<"身份证号码重复!"<<endl; system("pause"); ret

15、urn 0; cout<<"请输入订票人姓名:" cin>>name; cout<<"请输入始发站:" cin>>Sstation; cout<<"请输入终点站:" cin>>Tstation; cout<<"请输入票价:" cin>>price; cout<<"请输入席别:" cin>>seat; cout<<"请输入订票时间(年月日以“-”隔开):&q

16、uot; cin>>time; p0=new ticket(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; else if(d=2)p3->next=NULL;x=0; else cout<<"非法输入!"<<endl;system(&quo

17、t;pause"); /以上为链表已有数据,往末尾添加 return 1;ticket *search1(string a)/查询函数1,用于输入身份证号码返回一个指针,可在其他部分被使用ticket *cha1; cha1=head; x=1; while(x) if(cha1=NULL)x=0; else if(cha1->ID=a) x=0; else cha1=cha1->next; return cha1;ticket *search_1(string a)/改查1后面都得改,嗯,就这样了()ticket *cha1; cha1=del; x=1; while(

18、x) if(cha1=NULL)x=0; else if(cha1->ID=a) x=0; else cha1=cha1->next; return cha1;ticket *search2(string b)/查询函数2,返回所要查询结点的前一个结点的指针,在删除部分使用ticket *cha2,*cha3; cha2=cha3=head; x=1; while(x) if(cha2->next=NULL)x=0; else if(cha2->ID=b)x=0; else cha3=cha2; cha2=cha2->next; return cha3;ticke

19、t *search_2(string b)/ -_-ticket *cha2,*cha3; cha2=cha3=del; x=1; while(x) if(cha2->next=NULL)x=0; else if(cha2->ID=b)x=0; else cha3=cha2; cha2=cha2->next; return cha3;void search() /用于用户查询功能(目前只能查询一次,然后退出,待完善)system("cls"); cout<<"请输入身份证号码:" cin>>sfz; p3=sea

20、rch1(sfz); if(p3=NULL)cout<<"无相关信息!"<<endl;system("pause"); else cout<<left; cout<<"|"<<setw(18)<<"身份证号码"<<"|"<<setw(8)<<"姓名"<<"|"<<setw(8)<<"始发站"&l

21、t;<"|"<<setw(8)<<"终点站"<<"|"<<setw(6)<<"票价"<<"|"<<setw(6)<<"席别"<<"|"<<setw(10)<<"订票时间"<<"|"<<endl; cout<<"-"<&l

22、t;endl; p3->display();system("pause");void display1() /system("cls"); ticket *dis; cout<<left; cout<<"|"<<setw(18)<<"身份证号码"<<"|"<<setw(8)<<"姓名"<<"|"<<setw(8)<<"始发

23、站"<<"|"<<setw(8)<<"终点站"<<"|"<<setw(6)<<"票价"<<"|"<<setw(6)<<"席别"<<"|"<<setw(10)<<"订票时间"<<"|"<<endl; cout<<"-&qu

24、ot;<<endl; dis=head; if(head!=0) do dis->display(); dis=dis->next; while(dis!=NULL);void modify()/修改函数,用于修改数据(目前只可以修改单个订票信息,待完善)system("cls"); display1(); cout<<"请输入要修改信息的身份证号码:" cin>>sfz; p3=search1(sfz); if(p3=NULL) cout<<"无相关信息!"<<

25、endl;system("pause"); else x=1; while(x) system("cls"); cout<<"1.身份证号码 2.姓名 3.始发站 4.终点站 5.票价 6.席别 7.时间"<<endl; cout<<"请输入要修改的选项前的编号:" cin>>d; if(d=1)hui2: cout<<"请输入身份证号码:" cin>>sfz; if(check(sfz)=0)cout<<&qu

26、ot;身份证号码重复!"<<endl; goto hui2;p3->ID=sfz; else if(d=2)cout<<"请输入姓名:"cin>>p3->name; else if(d=3)cout<<"请输入始发站:"cin>>p3->Sstation; else if(d=4)cout<<"请输入终点站:"cin>>p3->Tstation; else if(d=5)cout<<"请输入票价:

27、"cin>>p3->price; else if(d=6)cout<<"请输入席别:"cin>>p3->seat; else if(d=7)cout<<"请输入时间:"cin>>p3->time; else cout<<"非法输入!"<<endl;system("pause"); hui1: cout<<"按1继续输入,按2退出-" int d1; cin>>d

28、1; if(d1=1)x=1; else if(d1=2)x=0; else cout<<"非法输入!"<<endl;system("pause");goto hui1; void Darea(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=NUL

29、L; void Delete()/删除函数将要删除的订票信息移出链表,并将所有删除信息结成另一链表,供恢复使用system("cls"); display1(); cout<<"请输入要删除订票信息的身份证号码:" cin>>sfz; p3=search1(sfz); p4=search2(sfz); if(p3=NULL)cout<<"无相关信息!"<<endl;system("pause"); else if(p3!=NULL&&p3=head)h

30、ead=head->next;Darea(p3);cout<<"删除成功!"<<endl;system("pause"); else if(p3->next=NULL)p4->next=NULL;Darea(p3);cout<<"删除成功!"<<endl;system("pause"); else p4->next=p3->next;Darea(p3);cout<<"删除成功!"<<endl;s

31、ystem("pause");void Rdel(string sfz)/将已经恢复的订票信息从Darea中移除p3=search_1(sfz); p4=search_2(sfz); if(p3=del)del=del->next; else if(p3->next=NULL)p4->next=NULL; else p4->next=p3->next;void recover()/恢复函数,用于将已经删除的订票信息恢复system("cls"); ticket *r1,*r2,*r3; if(del=NULL)cout<

32、;<"无可恢复订票信息!"<<endl;system("pause"); else cout<<left; cout<<"|"<<setw(18)<<"身份证号码"<<"|"<<setw(8)<<"姓名"<<"|"<<setw(8)<<"始发站"<<"|"<<

33、;setw(8)<<"终点站"<<"|"<<setw(6)<<"票价"<<"|"<<setw(6)<<"席别"<<"|"<<setw(10)<<"订票时间"<<"|"<<endl; cout<<"-"<<endl; r1=del; if(del!=0)

34、 do r1->display(); r1=r1->next; while(r1!=NULL); hui3: cout<<"请输入要恢复的订票信息的身份证号码:" cin>>sfz; if(check1(sfz)=1)cout<<"非法输入!"<<endl;system("pause");goto hui3; r2=head; while(r2->next!=NULL)r2=r2->next; r3=search_1(sfz); r2->next=r3; r

35、3->next=NULL; Rdel(sfz); cout<<"成功恢复!"<<endl; system("pause"); void display() /显示基础链表中的所有订票信息system("cls"); ticket *dis; cout<<left; cout<<"|"<<setw(18)<<"身份证号码"<<"|"<<setw(8)<<"

36、姓名"<<"|"<<setw(8)<<"始发站"<<"|"<<setw(8)<<"终点站"<<"|"<<setw(6)<<"票价"<<"|"<<setw(6)<<"席别"<<"|"<<setw(10)<<"订票时间&qu

37、ot;<<"|"<<endl; cout<<"-"<<endl; dis=head; if(head!=0) do dis->display(); dis=dis->next; while(dis!=NULL); system("pause");void count()/统计部分system("cls"); if(head=NULL)cout<<"无可统计信息!"<<endl;system("pause

38、"); elseint n=0,n1=0,n2=0,n3=0; float i,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<<left; cout<<"|"<<setw(30

39、)<<" "<<"|"<<setw(8)<<"票数"<<"|"<<setw(8)<<"金额"<<"|"<<endl; cout<<"-"<<endl; cout<<"|"<<setw(30)<<"单价100元以下"<<"|&quo

40、t;<<setw(8)<<n1<<"|"<<setw(8)<<m1<<"|"<<endl; cout<<"|"<<setw(30)<<"单价100元400元(包括100,400元)"<<"|"<<setw(8)<<n2<<"|"<<setw(8)<<m2<<"|&q

41、uot;<<endl; cout<<"|"<<setw(30)<<"单价400元以上"<<"|"<<setw(8)<<n3<<"|"<<setw(8)<<m3<<"|"<<endl; cout<<"|"<<setw(30)<<"总计"<<"|"&l

42、t;<setw(8)<<n<<"|"<<setw(8)<<m<<"|"<<endl; system("pause"); void save()/保存函数system("cls"); string filename,filename1; ofstream file; cout<<"请输入文件名:" cin>>filename1; filename1=filename1+".txt&quo

43、t; filename="C:Program Files (x86)Microsoft Visual StudioMyProjects火车票订票管理系统savedata"+filename1;/此处路径根据需要自行更改 /*file.open(filename.c_str(),ios:in);/功能失败部分待完善 if(!file) d=1; else d=2; file.close(); if(d=1) file.open(filename.c_str(),ios:out); p1=head; x=1; while(x) if(p1!=NULL) file<<

44、p1->ID<<p1->name<<p1->Sstation<<p1->Tstation<<p1->price<<p1->seat<<p1->time<<endl; p1=p1->next; else x=0; file.close(); cout<<"保存成功"<<endl;system("pause"); if(d=2) */ int i;/ cout<<"文件已存在!&qu

45、ot;<<endl; hui:cout<<"按1覆盖,按2输入数据到文件末尾:" cin>>i; if(i=1) file.open(filename.c_str(),ios:out); p3=head;x=1; while(x) if(p3!=NULL) file<<p3->ID<<endl<<p3->name<<endl<<p3->Sstation<<endl<<p3->Tstation<<endl<<p

46、3->price<<endl<<p3->seat<<endl<<p3->time<<endl; p3=p3->next; else x=0; file.close(); cout<<"保存成功"<<endl;system("pause"); else if(i=2) file.open(filename.c_str(),ios:app); p3=head;x=1; while(x) if(p3!=NULL) file<<p3->I

47、D<<endl<<p3->name<<endl<<p3->Sstation<<endl<<p3->Tstation<<endl<<p3->price<<endl<<p3->seat<<endl<<p3->time<<endl; p3=p3->next; else x=0; file.close(); cout<<"保存成功"<<endl;system("pause"); else cout<<"非法输入!"goto hui; /int load()/读取函数system("cls"); int i=0,ii=0,j=0; ifstream infile; st

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论