没有运行错误,但是不是我要的,c语言的一个课程设计
//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();
}
}