当前位置:文档之家› 火车订票管理系统

火车订票管理系统

火车订票管理系统
火车订票管理系统

学号11~15 选题三:火车票订票管理系统

1.基本要求:为方便管理火车票购买信息,编写一个火车票订票管

理系统软件。系统记录必须包括订票人姓名、订票人身份证号、始发站、终到站、票价、席别、订票时间等。

2.基本管理功能:

[1]添加:增加一条订票人的记录到管理系统中。

[2]查询:根据订票人身份证查找订票人的相关信息并显示,若

找不到也要给出相应提示。

[3]修改:在管理系统中修改订票人的订票记录。

[4]保存:将所有订票信息保存在一个文件中(数据库文件或普

通的文本文件)。

[5]读取:从文件中读取已保存了数据。

[6]删除:从管理系统中删除一条记录。

[7]恢复:能恢复被删除的记录。

[8]统计:(A) 统计每天订票张数和总车票金额;(B) 统计单价

在100元以下、100~400元之间和400元以上的票数总张数

及总金额;(C) 以表格形式打印所有订票信息。

源代码:

#include

#include

#include

#include

using namespace std;

int d;//用于选择(按1继续,按2退出,按他其他报错待完善)

int x=1;//用于脱出while循环

string sfz;//身份证号码,用户输入可用到

class ticket

{public:

string ID;

string 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<

cout<<"|"<

}

void menu()

{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添加函数专用,避免发生错误

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)// sbl

{ticket *ch;

ch=del;

int che=1;

while(ch!=NULL)

{if(ch->ID==b){che=0;ch=NULL;}

else {ch=ch->next;}

}

return che;

}

int add() //将订票数据保存在一个基础链表中

{system("cls");

float price;

string name,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=new ticket(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");

return 0;}

cout<<"请输入订票人姓名:";

cin>>name;

cout<<"请输入始发站:";

cin>>Sstation;

cout<<"请输入终点站:";

cin>>Tstation;

cout<<"请输入票价:";

cin>>price;

cout<<"请输入席别:";

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<<"非法输入!"<

}

} //以上为链表为空的情况

else //以下为链表已有数据,往末尾添加

{p3=head;

while(p3->next!=NULL)

{p3=p3->next;}

x=1;

while(x)

{system("cls");

cout<<"=============开始输入订票信息============="<

cin>>ID;

if(check(ID)==0){cout<<"身份证号码重复!"<

system("pause");

return 0;}

cout<<"请输入订票人姓名:";

cin>>name;

cout<<"请输入始发站:";

cin>>Sstation;

cout<<"请输入终点站:";

cin>>Tstation;

cout<<"请输入票价:";

cin>>price;

cout<<"请输入席别:";

cin>>seat;

cout<<"请输入订票时间(年月日以“-”隔开):";

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<<"非法输入!"<

}

} //以上为链表已有数据,往末尾添加

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(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;

}

ticket *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=search1(sfz);

if(p3==NULL){cout<<"无相关信息!"<

else {cout<

cout<<"|"<

cout<<"------------------------------------------------------------------------"<

p3->display();system("pause");}

}

void display1() //

{system("cls");

ticket *dis;

cout<

cout<<"|"<

cout<<"------------------------------------------------------------------------"<

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<<"无相关信息!"<

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<<"身份证号码重复!"<

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<<"请输入票价:";cin>>p3->price;}

else if(d==6){cout<<"请输入席别:";cin>>p3->seat;}

else if(d==7){cout<<"请输入时间:";cin>>p3->time;}

else {cout<<"非法输入!"<

hui1: cout<<"按1继续输入,按2退出-》";

int d1;

cin>>d1;

if(d1==1){x=1;}

else if(d1==2){x=0;}

else {cout<<"非法输入!"<

}

}

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=NULL;

}

}

void Delete()//删除函数将要删除的订票信息移出链表,并将所有删除信息结成另一链表,供恢复使用

{system("cls");

相关主题
文本预览
相关文档 最新文档