user-0 提问: 没有运行错误，但是不是我要的，c语言的一个课程设计

回复:
user: user-1
content: 你可以设置断点，单步调试啊，给定一个输入，看看在程序中的运行有哪个地方不符合预期，是不小心写错了还是逻辑处理的问题，总之直接看是没法看的啊

user: user-0
content: 引用 1 楼 nothing_but的回复:你可以设置断点，单步调试啊，给定一个输入，看看在程序中的运行有哪个地方不符合预期，是不小心写错了还是逻辑处理的问题，总之直接看是没法看的啊 我应该是从一个功能到另一个功能之间出了问题

user: user-2
content: 引用 楼主 qq_44956723的回复://6-车票管理系统  #include<stdio.h> #include<stdlib.h> #include<string.h> #define N 4   void manage();           //管理员界面 void user();             //用户界面  void record();         //录入信息  void  menu();          //菜单  void findsdate();    //查询状态  void findroute();   //查询路线  void book();       //预定车票  void refund();    //退票    struct time 	{ 	  int hour; 	  int minute; 	};  struct infor      //定义汽车信息  { 	int shift;             //汽车的班次  	struct time  start;   //发车时间，输入形式为 08:00  	char spoint[20];     //起始站  	char dest[20];      //终点站 	float hour;        //行车时间 	int num;          //额定数量 	int snum;        //已售数量  	  } infor[N-1] ;   int main() { 	int i; 	while(1) 	{ 	printf("\n\n----------------------------------车票管理系统--------------------------------\n"); 	printf("请选择登入身份\n");  	printf("管理员-----1\n"); 	printf("用户-------2\n"); 	printf("退出-------3\n"); 	scanf("%d",&i); 	if(i!=1&&i!=2&&i!=3) 	printf("输入错误，请重新输入"); 	switch(i) 	{ 		case 1:manage();break; 		case 2:user();break; 	} 	if(i==3) 	printf("谢谢使用！\n"); 	break;  	} }  void manage() { 	while(1) { 	int i; 	printf("请选择要进行的操作：\n");  	printf("录入信息-----1\n"); 	printf("信息查询-----2\n"); 	printf("退出系统-----3\n"); 	scanf("%d",&i); 	if(i!=1&&i!=2&&i!=3) 	printf("输入错误，请重新输入"); 	switch(i)    { 	  case 1:record();break; 		case 2:findsdate();break; 		}   if(i==3) 	printf("谢谢使用！\n"); 	break; 		 	} }	 	 	 void user() {	      printf("*****************************************\n");     printf("*        选择您要进行的操作:            *\n");     printf("*       查询所有班次当前状态----1       *\n");     printf("*           查询汽车路线--------2       *\n");     printf("*             购买车票----------3       *\n");     printf("*             退订车票----------4       *\n");     printf("*             退出系统----------5       *\n");     printf("*****************************************\n");     menu(); 	 }  	  void record()  //录入信息  {    printf("录入班车信息\n输入信息\n");  	printf("班次 发车时间 起点 终点 行车时间 额定载量 已定载量\n");       	int i;      for(i=0;i<N;i++) 	{ 		scanf("%d%d:%d%s%s%f%d%d",&infor[i].shift,&infor[i].start.hour,&infor[i].start.minute, 		                       infor[i].spoint,infor[i].dest,&infor[i].hour, 		                       &infor[i].num,&infor[i].snum);  // 键盘输入信息 	} 	FILE *fp; 	if((fp=fopen("qichexinxi.dat","wb"))==NULL)     	{ 	       printf("文件不存在\n"); 	       exit(0); 	    } 	for(i=0;i<N;i++) 	if(fwrite(&infor[i],sizeof(struct infor),1,fp)!=1) 		printf("文件出错\n"); 		fclose(fp) ; }	   void menu()  //菜单选项  { 	while(1) {   int m;    char c; 	scanf("%d",&m) ; 	if(m<1||m>5) 	printf("输入错误，请重新输入");   switch(m)   switch(m)   { 	case 1:	findsdate(); break;    case 2: findroute(); break;   case 3:  book(); break;   case 4: refund();break;    }   if(m==5) 	printf("谢谢使用！\n"); 	break;  }	   }  void findsdate()//查询状态  {  	int i; 	struct time now; 	printf("请输入时间：\n"); 	scanf("%d:%d",&now.hour,&now.minute);//输入系统时间   	if(now.hour>23||now.hour<0||now.minute>59||now.minute<0)  	 { 	    printf("输入错误，请输入正确时间\n"); 	    getchar(); 	    getchar(); 	 }  else  	for(i=0;i<N;i++)  	  { 	 	if (now.hour<infor[i].start.hour||now.minute<infor[i].start.minute&&now.hour==infor[i].start.hour) 	 	printf("汽车%d未发出\n",i+1); 		 else  		 printf("汽车%d发出\n",i+1);       }       getchar(); 	    getchar(); }  void findroute() { 	 int i; 	 int j; 	 int flag=0; 	 char c1;    printf("请选择查询方式：\n") ;    printf("按班次查询------1\n");    printf("按终点站查询----2\n");    scanf("%d",&i);    if(i!=1&&i!=2)    printf("输入错误，请重新输入\n");    getchar(); 	 getchar();    switch(i)    { 	 case 1: 	          			  	printf("请输入班次：\n");    	      scanf("%d",&j);    	if(j>N)    { 	 printf("输入错误，请重新输入\n");    getchar();    getchar(); 	 }     else printf("班次%d:\t%d%d:%d%s%s%f%d%d",infor[j-1].shift,infor[j-1].start.hour,infor[j-1].start.minute, 		                       infor[j-1].spoint,infor[j-1].dest,infor[j-1].hour, 		                       infor[j-1].num,&infor[j-1].snum);        break;  case 2:      printf("请输入地址:\n"); 		scanf("%s",&c1);     	for(i=0;i<N;i++) 	  {    		if(strcmp(c1,infor[i].dest)==0)   		printf("班次%d:/t%d%d:%d %s %s %f%d%d",i,infor[i].shift,infor[i].start.hour,infor[i].start.minute, 		                       infor[i].spoint,infor[i].dest,infor[i].hour, 		                       infor[i].num,&infor[i].snum);        flag=1; 			} 			if(flag==0) 			printf("未查询到，请重试，谢谢使用!\n"); 			getchar(); 	    getchar();           break;	     } }  void book() { 	int i; 	struct time now;     printf("请输入要订购的车票的班次:");     scanf("%d", &i);     //printf("i=%d\n", i);     if (i < 1 || i > N + 1)     {         printf("对不起，今天没有这趟车，请明天再来，谢谢使用!\n");         getchar();          menu();     }  	  printf("输入当前时间:\n");//输入系统时间  	  scanf("%d:%d",&now.hour,&now.minute); 	  if (now.hour<infor[i-1].start.hour||now.minute<infor[i-1].start.minute&&now.hour==infor[i-1].start.hour)     {         if (infor[i - 1].snum < infor[i - 1].num)         {             (infor[i - 1].snum)++;             printf("你的订票成功，请按时上车，谢谢使用!\n");         }         else 			 printf("对不起，今天的这趟车的票已卖完,请明天再来，谢谢合作!\n");     }     getchar();     menu(); }  void refund() { 	 int i; 	 struct time now;     printf("请输入要退购的车票的班次:");     scanf("%d", &i);     if (i < 1 || i >N + 1)     {         printf("对不起，今天没有这趟车,无法完成退票.谢谢使用!\n");         getchar();          menu();     }     scanf("%d:%d",&now.hour,&now.minute);//输入系统时间  	 printf("当前时间%d:%d",now.hour,now.minute);     if (now.hour>=infor[i-1].start.hour&&now.minute>=infor[i-1].start.minute)         if (infor[i - 1].snum >= 1)         {             infor[i - 1].snum = infor[i - 1].snum-1;             printf("退订车票成功，谢谢使用!\n");         }         else            { 					  printf("对不起,今天的这趟车的票尚未卖出,无法完成退票!\n");             getchar(); 	          getchar(); 	          }      else         { 				printf("对不起，今天的这趟车已发出,无法完成退票!\n");         getchar(); 	      getchar(); 	      }  } if(i!=1&&i!=2&&!=3) printf("输入错误，请重新输入!"); 这里是要重新输入，应该重新进入循环而不是退出if后继续执行下面的switch，所以在if里加continue; if(i!=1&&i!=2&&!=3) {printf("输入错误，请重新输入!");continue;} 后面的也是类似的问题