火车票订票系统_火车票订票管理系统
火车票订票系统由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“火车票订票管理系统”。
#include//预处理函数 #include//标准库函数 #include//字符串函数
#include//通过键盘来控制程序调试 int o=0;typedefstructzuowei { int a;//车座 int b;//车厢 }seat;
typedefstructTme{//定义一个结构体存储火车订票的信息 chartnum[8];//火车车次
char time1[8];//发车时间
char station1[8];//出发站
char station2[8];//终点站
chartujingstation[8];//途经站
char time2[8];//到站时间
char money[5];//票价
}tme;typedefstruct in{//定义一个结构体存储火车座位信息
tme data;//调用火车的信息 int reseat;//剩余票 seatseatnum;struct in *next;//定义next指针 }in;typedefstructpme{//定义一个结构体存储乘客信息
char name[10];//姓名
chartel[15];//电话
char id[20];//身份证
charbooknum[3];//订票数目
charcheci[8];//车次 }pme;typedefstruct people{//乘客信息
pme m;//调用pme结构体
struct people *next;//定义next指针 }people;structdingdan{ intdanhao;chartnum[8];//火车车次
char time1[8];//发车时间
char station1[8];//出发站
char station2[8];//终点站
chartujingstation[8];//途经站
char time2[8];//到站时间
char money[5];char name[10];//姓名
chartel[15];//电话
char id[20];//身份证
charbooknum[3];//订票数目
char seat[10];charseatnum[10];}dingdan[100];
void end();void admin();void book(in *h,people *k);void cancel();voidchaxuntrain(in *h);in *fangshi(in *h,charfindme[],charnumorcity[]);void print();void paenger();voidputoutticket(in *p);voidputticket(in *h);void widows();
int main(){ for(inti=0;inext=NULL;k=(people*)malloc(sizeof(people));k->next=NULL;p=h;v=k;while(1){
system(“cls”);
widows();
scanf(“%d”,&wp);
fflush(stdin);
system(“cls”);
switch(wp)
{
case 1:
putticket(h);break;
case 2:
chaxuntrain(p);break;
case 3:
book(p,v);break;
case 4: print();break;
case 5:
cancel();break;
default:break;
}
printf(“n请按任何键结束n”);getch();} return 0;}
void end(){//结束页面函数
puts(“********************************************”);printf(“ 谢谢使用n”);}
void widows(){//初始页面函数;
printf(“*****************************************************************************n”);printf(“ *
# * n”);printf(“ * @@
# * n”);printf(“ * @@@@
# * n”);printf(“ * @@@@@@
# *n”);printf(“ *
* n”);printf(“ *
### *n”);printf(“ *
###### *n”);printf(“ *
#### *n”);printf(“ *
*n”);printf(“ *
### *n”);printf(“ *
# ☆1,输入车次信息 * n”);printf(“ *
# ☆2,查询车次 * n”);printf(“ *
# ☆3,订票 * n”);printf(“ *
# ☆4,订单查询 * n”);printf(“ *
# ☆5,退票 *n”);printf(“ *
# ☆6,退出系统 * n”);printf(“ *
##### *n”);printf(“*****************************************************************************n”);printf(“ 请输入选择:”);
}
voidputticket(in *h){//输入车次信息
in *p,*l,*s;//定义了三个指针变量
charnum[8];//定义了数组
p=h;//p指向尾节点
l=h->next;//l指针遍历火车信息
while(p->next){
p=p->next;} while(1){
printf(“请输入要添加的火车车次(按0退出)n”);
scanf(“%s”,&num);fflush(stdin);
if(strcmp(num,“0”)==0)
break;
while(l)
{
if(strcmp(l->data.tnum,num)==0)
{//比较的输入车次与之前存在车次
printf(“该车次已经存在n”);
return;
}
l=l->next;//l++
}
s=(in *)malloc(sizeof(in));
strcpy(s->data.tnum,num);//复制函数,加入新的车次
printf(“请输入出发时间:n”);
scanf(“%s”,&s->data.time1);fflush(stdin);
printf(“请输入出发城市:n”);
scanf(“%s”,&s->data.station1);fflush(stdin);
printf(“请输入到达时间:n”);
scanf(“%s”,&s->data.time2);fflush(stdin);
printf(“请输入到达城市:n”);
scanf(“%s”,&s->data.station2);fflush(stdin);
printf(“请输入途径大站:n”);scanf(“%s”,&s->data.tujingstation);fflush(stdin);
printf(“请输入票价:n”);
scanf(“%s”,&s->data.money);fflush(stdin);s->seatnum.a=1;s->seatnum.b=1;
s->reseat=-1;
s->next=NULL;
p->next=s;
p=s;} }
voidputoutticket(in *p){//打印火车信息
printf(“n下面是火车信息n”);printf(“@车次:%sn”,p->data.tnum);printf(“@出发时间:%sn”,p->data.time1);printf(“@始发站:%sn”,p->data.station1);printf(“@到达时间:%sn”,p->data.time2);printf(“@终点站:%sn”,p->data.station2);printf(“@途经站:%sn”,p->data.tujingstation);printf(“@票价:%sn”,p->data.money);printf(“@剩余票数:%d”,1000-p->reseat);}
in *fangshi(in *h,charfindme[],charnumorcity[]){//查询方式
in *p;if(strcmp(numorcity,“num”)==0){//按车次查询
p=h->next;
while(p)
{
if(strcmp(p->data.tnum,findme)==0){//查到与车次信息相符的return p;//返回所查到的信息
}
p=p->next;
} }
if(strcmp(numorcity ,“city”)==0){//按城市查询
p=h->next;
while(p){
if(strcmp(p->data.station2,findme)==0){//查到与城市信息相符的return p;//返回所查到的信息
}
p=p->next;
}
}
return 0;}
voidchaxuntrain(in *h){//信息查询
in *p;char str1[10];intsel;if(h->next==NULL){
printf(“没有任何火车信息n”);
return;} printf(“n请选择查询方式n1.车次查询 2.城市查询n”);scanf(“%d”,&sel);fflush(stdin);if(sel==1){
printf(“请输入车次n”);
scanf(“%s”,str1);
fflush(stdin);
p=fangshi(h,str1,“num”);
if(p){
putoutticket(p);
}
else {
printf(“n没有找到n”);
} } elseif(sel==2){
printf(“请输入到达城市n”);
scanf(“%s”,str1);
fflush(stdin);
p=fangshi(h,str1,“city”);
if(p){
putoutticket(p);
}
else {
printf(“n没有找到n”);
} } }
void book(in *h,people *k){//订票输入乘客信息,订票数
in *p,*l;//定义两个in结构体下的指针变量
people *v,*s;//定义两个people结构体下的指针变量
inti=0,t=0,wp,i2=1;char str1[10],str2[10];//定义两个数组分别用来存储到达城市和车次信息
l=h;v=k;externint o;while(v->next)v=v->next;//v指针遍历火车信息
printf(“请输入想要达到的城市n”);scanf(“%s”,&str1);fflush(stdin);p=fangshi(l,str1,“city”);//按城市搜索的查询方式
printf(“请输入想要的车次n”);scanf(“%s”,&str2);fflush(stdin);p=fangshi(l,str2,“num”);//按车次搜索的查询方式
if(!p){
printf(“n没有找到到达该城市的车次n”);
return;}
else {
putoutticket(p);//调用outoutticket函数
printf(“是否要订这个车次?n”);
scanf(“%d”,&wp);fflush(stdin);if(wp){
s=(people*)malloc(sizeof(people));
printf(“请输入姓名:”);scanf(“%s”,&s->m.name);fflush(stdin);printf(“请输入电话:”);scanf(“%s”,&s->m.tel);fflush(stdin);printf(“请输入身份证号:”);scanf(“%s”,&s->m.id);fflush(stdin);printf(“请输入要订的票数:”);scanf(“%s”,&s->m.booknum);
fflush(stdin);
s->next=NULL;v->next=s;v=s;strcpy(s->m.checi,p->data.tnum);p->reseat=p->reseat+(int)(atof(s->m.booknum));
if(p->seatnum.a
{
sprintf(dingdan[o].seatnum,“%d/%d”,p->seatnum.a,p->seatnum.b);
p->seatnum.a=p->seatnum.a+1;
}
else
if(p->seatnum.b
{
sprintf(dingdan[o].seatnum,“%d/%d”,p->seatnum.a,p->seatnum.b);
p->seatnum.b=p->seatnum.b+1;
p->seatnum.a=1;
} printf(“nOK!订票成功n”);strcpy(dingdan[o].tnum,p->data.tnum);strcpy(dingdan[o].time1,p->data.time1);strcpy(dingdan[o].station1,p->data.station1);
strcpy(dingdan[o].station2,p->data.station2);strcpy(dingdan[o].tujingstation,p->data.tujingstation);
strcpy(dingdan[o].time2,p->data.time2);
strcpy(dingdan[o].money,p->data.money);strcpy(dingdan[o].name,s->m.name);strcpy(dingdan[o].tel,s->m.tel);strcpy(dingdan[o].id,s->m.id);strcpy(dingdan[o].booknum,s->m.booknum);
printf(“订单号为:%dn”,dingdan[o].danhao);
printf(“座位号为:%s(座位号/车厢号)n”,dingdan[o].seatnum);o++;getch();} } }
void cancel(){ int count=0;externint o;char q[5]=“失效”;int p;int s=0;charpaname[20];printf(“请输入乘客姓名:”);scanf(“%s/n”,paname);for(inti=0;i
{
printf(“*********************************************************n”);
printf(“***** 这是订单号为%d的订单信息 *****n”,dingdan[i].danhao);printf(“*********************************************************n”);
printf(“***** 火车车次:%s *****n”,dingdan[i].tnum);
printf(“**** 发车时间:%s ****n”,dingdan[i].time1);printf(“*** 出发站:%s ***n”,dingdan[i].station1);printf(“** 终点站:%s **n”,dingdan[i].station2);printf(“* 途径站:%s *n”,dingdan[i].tujingstation);
printf(“* 到站时间:%s *n”,dingdan[i].time2);printf(“* 票价:%s *n”,dingdan[i].money);
printf(“** 姓名:%s **n”,dingdan[i].name);
printf(“*** 电话:%s ***n”,dingdan[i].tel);
printf(“**** 身份证:%s ****n”,dingdan[i].id);
printf(“***** 订票数目:%s *****n”,dingdan[i].booknum);
printf(“****** 座位号:%s ******n”,dingdan[i].seatnum);printf(“*********************************************************n”);
printf(“--------------n”);count++;} } if(count==0){ printf(“未找到该乘客的订票信息n”);goto low;} printf(“请输入要删除的订单编号:”);scanf(“%dn”,&p);for(s=0;s
strcpy(dingdan[s].time1,q);
strcpy(dingdan[s].station1,q);
strcpy(dingdan[s].station2,q);
strcpy(dingdan[s].tujingstation,q);
strcpy(dingdan[s].time2,q);
strcpy(dingdan[s].money,q);
strcpy(dingdan[s].name,q);
strcpy(dingdan[s].tel,q);
strcpy(dingdan[s].id,q);
strcpy(dingdan[s].booknum,q);printf(“*********************************************************n”);
printf(“***** 这是订单号为%d的订单信息 *****n”,dingdan[s].danhao);printf(“*********************************************************n”);
printf(“***** 火车车次:%s *****n”,dingdan[s].tnum);
printf(“**** 发车时间:%s ****n”,dingdan[s].time1);printf(“*** 出发站:%s ***n”,dingdan[s].station1);printf(“** 终点站:%s **n”,dingdan[s].station2);printf(“* 途径站:%s *n”,dingdan[s].tujingstation);
printf(“* 到站时间:%s *n”,dingdan[s].time2);printf(“* 票价:%s *n”,dingdan[s].money);
printf(“** 姓名:%s **n”,dingdan[s].name);
printf(“*** 电话:%s ***n”,dingdan[s].tel);
printf(“**** 身份证:%s ****n”,dingdan[s].id);
printf(“***** 订票数目:%s *****n”,dingdan[s].booknum);
printf(“****** 座位号:%s ******n”,dingdan[i].seatnum);printf(“*********************************************************n”);
printf(“--------------n”);} } low:;} void admin(){ int paword=1;externint o;int n;printf(“请输入管理员密码:”);scanf(“%dn”,&n);fflush(stdin);if(paword==n){ for(inti=0;i
{
printf(“*********************************************************n”);
printf(“***** 这是订单号为%d的订单信息 *****n”,dingdan[i].danhao);printf(“*********************************************************n”);
printf(“***** 火车车次:%s *****n”,dingdan[i].tnum);
printf(“**** 发车时间:%s ****n”,dingdan[i].time1);printf(“*** 出发站:%s ***n”,dingdan[i].station1);printf(“** 终点站:%s **n”,dingdan[i].station2);printf(“* 途径站:%s *n”,dingdan[i].tujingstation);
printf(“* 到站时间:%s *n”,dingdan[i].time2);printf(“* 票价:%s *n”,dingdan[i].money);
printf(“** 姓名:%s **n”,dingdan[i].name);
printf(“*** 电话:%s ***n”,dingdan[i].tel);
printf(“**** 身份证:%s ****n”,dingdan[i].id);
printf(“***** 订票数目:%s *****n”,dingdan[i].booknum);
printf(“****** 座位号:%s ******n”,dingdan[i].seatnum);printf(“*********************************************************n”);
printf(“--------------n”);
} } }
void paenger(){ charpaname[20];printf(“请输入乘客姓名:”);scanf(“%s/n”,paname);fflush(stdin);for(inti=0;i
{
printf(“*********************************************************n”);
printf(“***** 这是订单号为%d的订单信息 *****n”,dingdan[i].danhao);printf(“*********************************************************n”);
printf(“***** 火车车次:%s *****n”,dingdan[i].tnum);
printf(“**** 发车时间:%s ****n”,dingdan[i].time1);printf(“*** 出发站:%s ***n”,dingdan[i].station1);printf(“** 终点站:%s **n”,dingdan[i].station2);printf(“* 途径站:%s *n”,dingdan[i].tujingstation);
printf(“* 到站时间:%s *n”,dingdan[i].time2);printf(“* 票价:%s *n”,dingdan[i].money);
printf(“** 姓名:%s **n”,dingdan[i].name);
printf(“*** 电话:%s ***n”,dingdan[i].tel);
printf(“**** 身份证:%s ****n”,dingdan[i].id);
printf(“***** 订票数目:%s *****n”,dingdan[i].booknum);
printf(“****** 座位号:%s ******n”,dingdan[i].seatnum);printf(“*********************************************************n”);
printf(“--------------n”);
} } }
void print(){ printf(“*************************************************n”);printf(“*** 1:管理员登陆(需管理员密码)***n”);printf(“*** 2:乘客登陆 ***n”);printf(“*************************************************n”);printf(“请选择登录方式:”);int m;scanf(“%dn”,&m);fflush(stdin);switch(m){case 1:admin();break;case 2:paenger();break;default:break;} }