include typedef struct zuowei { int a;//车座 int b;//车厢 }seat; typedef struct Tmess{//定义一个结构体存储火车订票的信息 char tnum8;//火车车次 char time18;//发车时间 char station18;//出发站 char station28;//终点站 char tujingstation8;//途经站 char time28;//到站时间 char money5;//票价 }tmess; typedef struct in{//定义一个结构体存储火车座位信息 tmess data;//调用火车的信息 int reseat;//剩余票 seat seatnum; struct in next;//定义next指针 }in; typedef struct pmess{//定义一个结构体存储乘客信息 char name10;//姓名 char tel15;//电话 char id20;//身份证 char booknum3;//订票数目 char checi8;//车次 }pmess; typedef struct people{//乘客信息 pmess m;//调用pmess结构体 struct people next;//定义next指针 }people; struct dingdan{ int danhao; char tnum8;//火车车次 char time18;//发车时间 char station18;//出发站 char station28;//终点站 char tujingstation8;//途经站 char time28;//到站时间 char money5; char name10;//姓名 char tel15;//电话 char id20;//身份证 char booknum3;//订票数目 char seat10; char seatnum10; }dingdan100; void end; void admin; void bookin h;people k; void cancel; void chaxuntrainin h; in fangshiin h;char findmess;char numorcity; void print; void passenger; void putoutticketin p; void putticketin h; void widows; int main { forint i=0;i<100;i++ {dingdani.danhao=i+1000; } in h;p; people k;v; int wp; h=inmallocsizeofin; h->next=NULL; k=peoplemallocsizeofpeople; k->next=NULL; p=h; v=k; while1 { system\"cls\"; widows; scanf\"%d\";℘ fflushstdin; system\"cls\"; switchwp { case 1: putticketh;break; case 2: chaxuntrainp;break; case 3: bookp;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\" printf\" printf\" ;; ; \\n\" \\n\" \\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\" 请输入选择:\"; } void putticketin h {//输入车次信息 in p;l;s;//定义了三个指针变量 char num8;//定义了数组 p=h;//p指向尾节点 l=h->next;//l指针遍历火车信息 whilep->next { p=p->next; } while1 { printf\"请输入要添加的火车车次按0退出\\n\"; scanf\"%s\";# fflushstdin; ifstrcmpnum;\"0\"==0 } break; whilel { ifstrcmpl->data.tnum;num==0 {//比较的输入车次与之前存在车次 printf\"该车次已经存在\\n\"; return ; } l=l->next;//l++ } s=in mallocsizeofin; strcpys->data.tnum;num;//复制函数;加入新的车次 printf\"请输入出发时间:\\n\"; scanf\"%s\";&s->data.time1; fflushstdin; printf\"请输入出发城市:\\n\"; scanf\"%s\";&s->data.station1; fflushstdin; printf\"请输入到达时间:\\n\"; scanf\"%s\";&s->data.time2; fflushstdin; printf\"请输入到达城市:\\n\"; scanf\"%s\";&s->data.station2; fflushstdin; printf\"请输入途径大站:\\n\"; scanf\"%s\";&s->data.tujingstation; fflushstdin; printf\"请输入票价:\\n\"; scanf\"%s\";&s->data.money; fflushstdin; s->seatnum.a=1; s->seatnum.b=1; s->reseat=-1; s->next=NULL; p->next=s; p=s; } void putoutticketin p {//打印火车信息 printf\"\\n下面是火车信息\\n\"; printf\"车次:%s\\n\";p->data.tnum; printf\"出发时间:%s\\n\";p->data.time1; printf\"始发站:%s\\n\";p->data.station1; printf\"到达时间:%s\\n\";p->data.time2; printf\"终点站:%s\\n\";p->data.station2; printf\"途经站:%s\\n\";p->data.tujingstation; printf\"票价:%s\\n\";p->data.money; printf\"剩余票数:%d\";1000-p->reseat; } in fangshiin h;char findmess;char numorcity {//查询方式 in p; ifstrcmpnumorcity;\"num\"==0 {//按车次查询 p=h->next; whilep { ifstrcmpp->data.tnum;findmess==0{//查到与车次信息相符的 return p;//返回所查到的信息 } p=p->next; } } ifstrcmpnumorcity ;\"city\"==0{//按城市查询 p=h->next; whilep{ ifstrcmpp->data.station2;findmess==0{//查到与城市信息相符的 return p;//返回所查到的信息 } p=p->next; } } return 0; } void chaxuntrainin h{//信息查询 in p; char str110; int sel; ifh->next==NULL{ printf\"没有任何火车信息\\n\"; return ; } printf\"\\n请选择查询方式\\n1.车次查询 2.城市查询\\n\"; scanf\"%d\";&sel; fflushstdin; ifsel==1{ printf\"请输入车次\\n\"; scanf\"%s\";str1; fflushstdin; p=fangshih;str1;\"num\"; ifp{ putoutticketp; } else { printf\"\\n没有找到\\n\"; } } else ifsel==2{ printf\"请输入到达城市\\n\"; scanf\"%s\";str1; fflushstdin; p=fangshih;str1;\"city\"; ifp{ putoutticketp; } else { printf\"\\n没有找到\\n\"; } } } void bookin h;people k{//订票输入乘客信息;订票数 in p;l;//定义两个in结构体下的指针变量 people v;s;//定义两个people结构体下的指针变量 int i=0;t=0;wp;i2=1; char str110;str210;//定义两个数组分别用来存储到达城市和车次信息 l=h; v=k; extern int o; whilev->next v=v->next;//v指针遍历火车信息 printf\"请输入想要达到的城市\\n\"; scanf\"%s\";&str1; fflushstdin; p=fangshil;str1;\"city\";//按城市搜索的查询方式 printf\"请输入想要的车次\\n\"; scanf\"%s\";&str2; fflushstdin; p=fangshil;str2;\"num\";//按车次搜索的查询方式 ifp{ printf\"\\n没有找到到达该城市的车次\\n\"; return ; } else { putoutticketp;//调用outoutticket函数 printf\"是否要订这个车次<0/1>\\n\"; scanf\"%d\";℘ fflushstdin; ifwp{ s=peoplemallocsizeofpeople; printf\"请输入姓名:\"; scanf\"%s\";&s->m.name; fflushstdin; printf\"请输入电话:\"; scanf\"%s\";&s->m.tel; fflushstdin; printf\"请输入身份证号:\"; scanf\"%s\";&s->m.id; fflushstdin; printf\"请输入要订的票数:\"; scanf\"%s\";&s->m.booknum; fflushstdin; s->next=NULL; v->next=s; v=s; strcpys->m.checi;p->data.tnum; p->reseat=p->reseat+intatofs->m.booknum; ifp->seatnum.a<8 { sprintfdingdano.seatnum;\"%d/%d\";p->seatnum.a;p->seatnum.b; p->seatnum.a=p->seatnum.a+1; } else ifp->seatnum.b<8 { sprintfdingdano.seatnum;\"%d/%d\";p->seatnum.a;p->seatnum.b; p->seatnum.b=p->seatnum.b+1; p->seatnum.a=1; } printf\"\\nOK订票成功\\n\"; strcpydingdano.tnum;p->data.tnum; strcpydingdano.time1;p->data.time1; strcpydingdano.station1;p->data.station1; strcpydingdano.station2;p->data.station2; strcpydingdano.tujingstation;p->data.tujingstation; strcpydingdano.time2;p->data.time2; strcpydingdano.money;p->data.money; strcpydingdano.name;s->m.name; strcpydingdano.tel;s->m.tel; strcpydingdano.id;s->m.id; strcpydingdano.booknum;s->m.booknum; printf\"订单号为:%d\\n\";dingdano.danhao; printf\"座位号为:%s座位号/车厢号\\n\";dingdano.seatnum; o++; getch; } } } void cancel { int count=0; extern int o; char q5=\"失效\"; int p; int s=0; char passname20; printf\"请输入乘客姓名:\"; scanf\"%s/n\";passname; forint i=0;i printf\"\\n\"; printf\" 这是订单号为%d的订单信息 \\n\";dingdani.danhao; printf\"\\n\"; printf\" 火车车次:%s \\n\";dingdani.tnum; printf\" 发车时间:%s \\n\";dingdani.time1; printf\" 出发站:%s \\n\";dingdani.station1; printf\" 终点站:%s \\n\";dingdani.station2; printf\" 途径站:%s \\n\";dingdani.tujingstation; printf\" 到站时间:%s \\n\";dingdani.time2; printf\" 票价:%s \\n\";dingdani.money; printf\" 姓名:%s \\n\";dingdani.name; printf\" 电话:%s \\n\";dingdani.tel; printf\" 身份证:%s \\n\";dingdani.id; printf\" 订票数目:%s \\n\";dingdani.booknum; printf\" 座位号:%s<座位号/车厢号> \\n\";dingdani.seatnum; printf\"\\n\"; printf\"----------------------------------------------------------------------------\\n\"; count++; } } ifcount==0 { printf\"未找到该乘客的订票信息\\n\"; goto low; } printf\"请输入要删除的订单编号:\"; scanf\"%d\\n\";&p; fors=0;s { strcpydingdans.tnum;q; strcpydingdans.time1;q; strcpydingdans.station1;q; strcpydingdans.station2;q; strcpydingdans.tujingstation;q; strcpydingdans.time2;q; strcpydingdans.money;q; strcpydingdans.name;q; strcpydingdans.tel;q; strcpydingdans.id;q; strcpydingdans.booknum;q; printf\"\\n\"; printf\" 这是订单号为%d的订单信息 \\n\";dingdans.danhao; printf\"\\n\"; printf\" 火车车次:%s \\n\";dingdans.tnum; printf\" 发车时间:%s \\n\";dingdans.time1; printf\" 出发站:%s \\n\";dingdans.station1; printf\" 终点站:%s \\n\";dingdans.station2; printf\" 途径站:%s \\n\";dingdans.tujingstation; printf\" 到站时间:%s \\n\";dingdans.time2; printf\" 票价:%s \\n\";dingdans.money; printf\" 姓名:%s \\n\";dingdans.name; printf\" 电话:%s \\n\";dingdans.tel; printf\" 身份证:%s \\n\";dingdans.id; printf\" 订票数目:%s \\n\";dingdans.booknum; printf\" 座位号:%s<座位号/车厢号> \\n\";dingdani.seatnum; printf\"\\n\"; printf\"----------------------------------------------------------------------------\\n\"; } } low:; } void admin { int password=1; extern int o; int n; printf\"请输入管理员密码:\"; scanf\"%d\\n\";&n; fflushstdin; ifpassword==n { forint i=0;i printf\" 这是订单号为%d的订单信息 \\n\";dingdani.danhao; printf\"\\n\"; printf\" 火车车次:%s \\n\";dingdani.tnum; printf\" 发车时间:%s \\n\";dingdani.time1; printf\" 出发站:%s \\n\";dingdani.station1; printf\" 终点站:%s \\n\";dingdani.station2; printf\" 途径站:%s \\n\";dingdani.tujingstation; printf\" 到站时间:%s \\n\";dingdani.time2; printf\" 票价:%s \\n\";dingdani.money; printf\" 姓名:%s \\n\";dingdani.name; printf\" 电话:%s \\n\";dingdani.tel; printf\" 身份证:%s \\n\";dingdani.id; printf\" 订票数目:%s \\n\";dingdani.booknum; printf\" 座位号:%s<座位号/车厢号> \\n\";dingdani.seatnum; printf\"\\n\"; printf\"----------------------------------------------------------------------------\\n\"; } } } void passenger { char passname20; printf\"请输入乘客姓名:\"; scanf\"%s/n\";passname; fflushstdin; forint i=0;i printf\"\\n\"; printf\" 这是订单号为%d的订单信息 \\n\";dingdani.danhao; printf\"\\n\"; printf\" 火车车次:%s \\n\";dingdani.tnum; printf\" 发车时间:%s \\n\";dingdani.time1; printf\" 出发站:%s \\n\";dingdani.station1; printf\" 终点站:%s \\n\";dingdani.station2; printf\" 途径站:%s \\n\";dingdani.tujingstation; printf\" 到站时间:%s \\n\";dingdani.time2; printf\" 票价:%s \\n\";dingdani.money; printf\" 姓名:%s \\n\";dingdani.name; printf\" 电话:%s \\n\";dingdani.tel; printf\" 身份证:%s \\n\";dingdani.id; printf\" 订票数目:%s \\n\";dingdani.booknum; printf\" 座位号:%s<座位号/车厢号> \\n\";dingdani.seatnum; printf\"\\n\"; printf\"----------------------------------------------------------------------------\\n\"; } } } void print { printf\"\\n\"; printf\" 1:管理员登陆需管理员密码 printf\" 2:乘客登陆 \\n\" printf\"\\n\"; printf\"请选择登录方式:\"; int m; scanf\"%d\\n\";&m; fflushstdin; switchm {case 1:admin;break; case 2:passenger;break; default:break; } } ; ; \\n\" 因篇幅问题不能全部显示,请点此查看更多更全内容