c语言编写简易车票管理系统
运行不出正确结果
//6-车票管理系统
#include<stdio.h>
#include<stdlib.h>
#define N 4
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()
{
printf("\n\n----------------------------------车票管理系统--------------------------------\n");
printf("录入班车信息\n输入信息:\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); // 键盘输入信息
}
record();
printf("\n\n选择您要进行的操作: \n");
printf("查询所有班次当前状态----1\n\n");
printf("查询汽车路线------------2\n\n");
printf("购买车票----------------3\n\n");
printf("退订车票----------------4\n\n");
menu();
}
void record() //录入信息
{
int i;
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() //菜单选项
{
int m;
char c;
scanf("%d",&m) ;
switch(m)
{
case 1: findsdate();
printf("按任意键退出系统\n");
printf("按 # 返回上一层\n");
printf("请输入: \n");
scanf("%c",&c);
if(c=='#')
menu();
break;
case 2:
findroute();
printf("按任意键退出系统\n");
printf("按 # 返回上一层\n");
printf("请输入: \n") ;
scanf("%c",&c);
if(c=='#')
menu();
break;
case 3:
book();
printf("按任意键退出系统\n");
printf("按 # 返回上一层\n");
printf("请输入: \n");
scanf("%c",&c);
if(c=='#')
menu();
break;
case 4:
refund();
printf("按任意键退出系统\n");
printf("按 # 返回上一层\n");
printf("请输入: \n");
scanf("%c",&c);
if(c=='#')
menu();
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);
else
printf("汽车%d发出\n",i);
}
menu();
}
void findroute()
{
int i;
int j;
char c1;
printf("请选择查询方式:\n") ;
printf("按班次查询------1\n");
printf("按终点站查询----2\n");
scanf("%d",&i);
if(i!=1&&i!=2)
printf("输入错误,请重新输入\n");
switch(i)
{
case 1:
printf("请输入班次:\n");
scanf("%d",&j);
if(j>N)
printf("输入错误,请重新输入\n");
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:
for(i=0;i<N;i++)
{
if(c1==infor[i].dest)
printf("班次%d:/t\t%d%d:%d%s%s%f%d%d",i,infor[i-1].shift,infor[i-1].start.hour,infor[i-1].start.minute,
infor[i-1].spoint,infor[i-1].dest,infor[i-1].hour,
infor[i-1].num,&infor[i-1].snum);
else
printf("未查询到\n");
}
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");
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 < 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");
else
printf("对不起,今天的这趟车已发出,无法完成退票!\n");
}