火车票务系统 有个功能实现不了 求指点
查询车票 按照站次查询 青岛到济南能够实现 但青岛到北京实现不了 找不到原因, 求指导#include <conio.h>
#include <stdio.h>
#include <string.h>
#define NUM 50
typedef struct {
char station[10][10];
char tnumber[20];
float price[10];
int lnumber;
char time[10][30];
}train;
typedef struct {
char buyer[10];
char ID[18];
char source[20];
char dest[20];
char chufashijian[30];
char daozhanshijian[30];
char price;
}ticket;
main()
{
ticket tickerer,tickerer1;
train ntrain[10];
/*列车1*/
strcpy(ntrain[0].station[0],"Qingdao");
strcpy(ntrain[0].station[1],"Weifang");
strcpy(ntrain[0].station[2],"Zibo");
strcpy(ntrain[0].station[3],"Jinan");
strcpy(ntrain[0].tnumber,"D6009");
ntrain[0].price[0]=78.65;
ntrain[0].price[1]=16.14;
ntrain[0].price[2]=54.38;
ntrain[0].lnumber=50;
strcpy(ntrain[0].time[0],"2014年3月11日08时26分");
strcpy(ntrain[0].time[1],"2014年3月11日11时01分");
strcpy(ntrain[0].time[2],"2014年3月11日11时49分");
strcpy(ntrain[0].time[3],"2014年3月11日13时01分");
/*列车2*/
strcpy(ntrain[1].station[0],"Qingdao");
strcpy(ntrain[1].station[1],"Weifang");
strcpy(ntrain[1].station[2],"Zibo");
strcpy(ntrain[1].station[3],"Jinan");
strcpy(ntrain[1].tnumber,"D6011");
ntrain[1].price[0]=78.65;
ntrain[1].price[1]=16.14;
ntrain[1].price[2]=54.38;
ntrain[1].lnumber=50;
strcpy(ntrain[1].time[0],"2014年3月11日10时18分");
strcpy(ntrain[1].time[1],"2014年3月11日13时35分");
strcpy(ntrain[1].time[2],"2014年3月11日14时19分");
strcpy(ntrain[1].time[3],"2014年3月11日15时26分");
/*列车3*/
/*列车3*/
strcpy(ntrain[3].station[0],"Qingdao");
strcpy(ntrain[3].station[1],"Weifang");
strcpy(ntrain[3].station[2],"Zibo");
strcpy(ntrain[3].station[3],"Jinan");
strcpy(ntrain[3].tnumber,"D6013");
ntrain[3].price[0]=78.65;
ntrain[3].price[1]=16.14;
ntrain[3].price[2]=54.38;
ntrain[3].lnumber=50;
strcpy(ntrain[3].time[0],"2014年3月11日16时32分");
strcpy(ntrain[3].time[1],"2014年3月11日18时48分");
strcpy(ntrain[3].time[2],"2014年3月11日19时25分");
strcpy(ntrain[3].time[3],"2014年3月11日20时30分");
/*列车4*/
strcpy(ntrain[2].station[0],"Qingdao");
strcpy(ntrain[2].station[1],"Weifang");
strcpy(ntrain[2].station[2],"Zibo");
strcpy(ntrain[2].station[3],"Jinan");
strcpy(ntrain[2].station[4],"Dezhou");
strcpy(ntrain[2].station[5],"Cangzhou");
strcpy(ntrain[2].station[6],"Tianjin");
strcpy(ntrain[2].station[7],"Beijing");
strcpy(ntrain[2].station[8],"");
strcpy(ntrain[2].tnumber,"K173");
ntrain[2].price[0]=52.31;
ntrain[2].price[1]=11.94;
ntrain[2].price[2]=39.48;
ntrain[2].price[3]=41.51;
ntrain[2].price[4]=30.01;
ntrain[2].price[5]=35.21;
ntrain[2].price[6]=39.01;
ntrain[2].lnumber=50;
strcpy(ntrain[2].time[0],"2014年3月11日12时51分");
strcpy(ntrain[2].time[1],"2014年3月11日18时09分");
strcpy(ntrain[2].time[2],"2014年3月11日19时01分");
strcpy(ntrain[2].time[3],"2014年3月11日21时25分");
strcpy(ntrain[2].time[4],"2014年3月11日22时33分");
strcpy(ntrain[2].time[5],"2014年3月11日23时05分");
strcpy(ntrain[2].time[6],"2014年3月11日23时55分");
strcpy(ntrain[2].time[7],"2014年3月12日00时49分");
/*列车6*/
int a,b;
puts("********************************************************************************");
puts(" 欢迎使用铁路票务管理系统");
puts("\n********************************************************************************");
puts("请根据以下提示进行操作");
puts("1.查询车票");
puts("2.购买车票");
puts("3.退订车票");
puts("4.在线咨询");
puts("5.退出程序");
puts("请输入您要选择的服务(1-5之间,按回车键确认)");
chongxinshuru:
scanf("%d",&a);
if(a==1){
puts("1.按照车次查询\n");
puts("2.按照起始地查询\n");
chongxinshuru3:
scanf("%d",&b);
if(b==1){
int x,y,z=0,w;
char chaxunjiehuo[10];
char checi[20];
printf("请输入您要查找的车次:\n");
scanf("%s",&checi);
for(x=0;x<NUM;x++){
if(strcmp(ntrain[x].tnumber,checi)==0){
strcpy(chaxunjiehuo,ntrain[x].tnumber);
printf("车次:%s\n",chaxunjiehuo);
for(w=0;w<10;w++) {
if(ntrain[x].station[w][0]=='\0')
break;
z++;}//一共经过的站数
printf("\n%s次列车途径以下车站\n",chaxunjiehuo);
for(y=0;y<z;y++){
printf("%s\n",ntrain[x].station[y]);//显示列车途经的站点
fflush(stdin);}
printf("起点站出发时间为:%s\n",ntrain[x].time[0]);
for(y=1;y<z-1;y++){
printf("中途站到达时间为:%s\n",ntrain[x].time[y]);}
printf("终点站到达时间为:%s\n",ntrain[x].time[z-1]);
for(y=0;y<z-1;y++){
printf("%s站到%s站票价为%5.2f\n",ntrain[x].station[y],ntrain[x].station[y+1],ntrain[x].price[y]);
}
printf("剩余票量为:%d\n",ntrain[x].lnumber);
exit (0);
}
}}
else if(b==2){
int i,j,k,n,m, count=0,zongjia;
char t;
char source[10];
char dest[10];
float piaojia=0.0;
rekaishi2:
puts("请输入起始地:(首字母需大写)\n");
scanf("%s",source);
puts("请输入目的地:(首字母需大写)\n");
scanf("%s",dest);
printf("根据您输入的信息,检测到以下车次\n");
for(i=0;i<NUM;i++){//列车查找
for(j=0;j<NUM;j++){ //一辆列车按站查找起点
if(strcmp(ntrain[i].station[j],source)==0){//寻找相同起始点
for(k=j+1;k<NUM;k++){
if(strcmp(ntrain[i].station[k],dest)==0){
// printf("%d %d %d\n",i,j,k);//检测数值
strcpy(tickerer.source,ntrain[i].station[j]);
strcpy(tickerer.dest,ntrain[i].station[k]);
strcpy(tickerer.chufashijian,ntrain[i].time[j]);
strcpy(tickerer.daozhanshijian,ntrain[i].time[k]);
printf("\n车次:%s\n",ntrain[i].tnumber);
printf("起始站:%s\n",tickerer.source);
printf("目的地:%s\n",tickerer.dest);
printf("出发时间%s\n",tickerer.chufashijian);
printf("到站时间%s\n",tickerer.daozhanshijian);
for(n=j;n<k;n++){
piaojia=piaojia+ntrain[i].price[n];
}
printf("票价为:%5.2f\n",piaojia);
piaojia=0;
printf("剩余票量为:%d\n",ntrain[i].lnumber);
count++;
break;
}}}}
if(count==0)
{
printf("\n对不起,无此列车信息!\n");
printf("请问是否重新查询(Y/N)\n");
rekaishi3:
scanf(" %c",&t);
if(t=='Y'){
printf("您将返回上一层\n");
goto rekaishi2/*返回菜单重新选择*/;}
else if(t=='N'){
printf("谢谢您使用本系统!");
break;
exit (0);}
else{
printf("输入错误,请重新输入!");
goto rekaishi3/*重新选择Y/N*/;}
}}}
else{
printf("输入错误,请重新输入!\n");
goto chongxinshuru3;
}
exit (0);
}
if(a==2){
char source[10];
char dest[10];
char b[5];//
ticket passager;
char yanzhengma[5];
puts("请输入您的姓名:(并以回车键结束)\n");
scanf("%s",&passager.buyer);
printf("您的姓名为:%s\n",passager.buyer);
printf("请输入您的十八位身份证号:(并以回车键结束)\n");
scanf("%s",&passager.ID);
while(strlen(passager.ID)!=18)
{
printf("请重新输入您的身份证号:\n");
scanf("%s",&passager.ID);
}
printf("您的身份证号为:%s\n",passager.ID);
printf("请输入四位验证码:(并以回车键结束)\n");
char a[27]="abcdefghijklmnopqrstuvwxyz";//定义一个包含26个小写字母的字符串
int o,p;
srand((int)time(0));//初始化随机数发生器
for(o=0;o<4;o++)
{
p= rand()%26;//取得0~25的随机数
printf("%c",a[p]);
b[o]=a[p];//从字符串中随机取一个小写字母,并循环四次,获得四个随机的小写字母
}
printf("\n");
scanf("%s",&yanzhengma);
while(strcmp(yanzhengma,b)!=0){
printf("对不起,请重新输入\n");
scanf("%s",&yanzhengma);}//验证码
//输入车票信息
int i,j,k,g,h,/*车票*/count=0;
char n,m;//购票
char source1[10];
char dest1[10];
float piaojia1=0.0;
puts("请输入起始地:(首字母需大写)\n");
scanf("%s",source1);
puts("请输入目的地:(首字母需大写)\n");
scanf("%s",dest1);
printf("根据您输入的信息,检测到以下车次\n");
for(i=0;i<NUM;i++){//列车查找
for(j=0;j<NUM;j++){ //一辆列车按站查找起点
if(strcmp(ntrain[i].station[j],source1)==0){//寻找相同起始点
for(k=j+1;k<NUM;k++){
if(strcmp(ntrain[i].station[k],dest1)==0){
// printf("%d %d %d\n",i,j,k);//检测数值
strcpy(tickerer1.source,ntrain[i].station[j]);
strcpy(tickerer1.dest,ntrain[i].station[k]);
strcpy(tickerer1.chufashijian,ntrain[i].time[j]);
strcpy(tickerer1.daozhanshijian,ntrain[i].time[k]);
printf("车次:%s\n",ntrain[i].tnumber);
printf("起始站:%s\n",tickerer1.source);
printf("目的地:%s\n",tickerer1.dest);
printf("出发时间%s\n",tickerer1.chufashijian);
printf("到站时间%s\n",tickerer1.daozhanshijian);
for(g=j;g<k;g++){
piaojia1=piaojia1+ntrain[i].price[g];
}
printf("票价为:%5.2f\n",piaojia1);
piaojia1=0;
count++;
break;
}//二层判断
}//三层循环
}//一层判断
if(count==0)
{
printf("\n对不起,无此列车信息!\n");
return;}
}//二层循环
}//一层循环
reshuru:
printf("请输入您要购买的车次:\n");
scanf("");
printf("请问您是否购票:(Y/N)\n");
scanf(" %c",&n);
if(n=='Y'){
printf("车票购买成功,祝您旅途愉快!");
exit (0);
}
else if(n=='N')
{printf("谢谢您使用本系统!");
exit (0);}
else{
printf("输入错误,请重新输入!");
goto reshuru/*重新输入Y/N*/;
}
}
if(a==3){
;
}
if(a==4){
;
}
if(a==5){
printf("感谢您使用本系统!\n");
}
else {
printf("输入错误,请重新输入!\n");
goto chongxinshuru;
}
}