#include
#include
#include
#include
#include
#include
#define N 80 /*宏定义多条记录*/
void maipiao(int s,int t); /*函数定义*/
float times(int k);
int hour(int k)
{
switch(k)
{
case 1:
return 07;break;
case 2:
return 10;break;
case 3:
return 13;break;
case 4:
return 16;break;
case 5:
return 19;break;
case 6:
return 21;break; /*d到闽清一天的发车时间小时段*/ case 7:
return 07;break;
case 8:
return 11;break;
case 9:
return 15;break;
case 10:
return 19;break;
case 11:
return 23;break; /*d到长乐一天的发车时间小时段*/ case 12:
return 07;break;
case 13:
return 11;break;
case 14:
return 15;break;
case 15:
return 19;break;
case 16:
return 23;break; /*d到连江一天的发车时间小时段*/ case 17:
return 07;break;
case 18:
return 11;break;
case 19:
return 16;break;
case 20:
return 20;break; /*d到永泰一天的发车时间小时段*/ case 21:
return 07;break;
case 22:
return 12;break;
case 23:
return 17;break;
case 24:
return 22;break; /*d到福清一天的发车时间小时段*/ case 25:
return 07;break;
case 26:
return 14;break;
case 27:
return 19;break;
case 28:
return 22;break; /*d到罗源一天的发车时间小时段*/ }
} /*开车时间段*/ int minute(int k)
{
switch(k)
{
case 1:
return 00;break;
case 2:
return 00;break;
case 3:
return 00;break;
case 4:
return 00;break;
case 5:
return 00;break;
case 6:
return 00;break; /*d到闽清一天的发车时间分钟段*/ case 7:
return 00;break;
case 8:
return 00;break;
case 9:
return 00;break;
case 10:
return 00;break;
case 11:
return 00;break; /*d到长乐一天的发车时间分钟段*/ case 12:
return 00;break;
case 13:
return 00;break;
case 14:
return 00;break;
case 15:
return 00;break;
case 16:
return 00;break; /*d到连江一天的发车时间分钟段*/ case 17:
return 00;break;
case 18:
return 30;break;
case 19:
return 00;break;
case 20:
return 30;break; /*d到永泰一天的发车时间分钟段*/ case 21:
return 00;break;
case 22:
return 30;break;
case 23:
return 00;break;
case 24:
return 30;break; /*d到福清一天的发车时间分钟段*/ case 25:
return 30;break;
case 26:
return 00;break;
case 27:
return 30;break;
case 28:
return 30;break; /*d到罗源一天的发车时间分钟段*/ }
} /*开车时间段*/ void wap(int k)
{
switch(k)
{
case 1:
printf("闽清");break;
case 2:
printf("长乐");break;
case 3:
printf("连江");break;
case 4:
printf("永泰");break;
case 5:
printf("福清");break;
case 6:
printf("罗源");break;
}
} /*输入终点站的函数*/
int shijian()
{
struct tm *ptr;
time_t lt;
lt =time(NULL);
ptr=gmtime(<);
printf(ctime(<));
return 0;
} /*输出当前时间的函数*/
float times(int k)
{
float t;
if(k==1)
t=1.5;
if(k==2)
t=3.0;
if(k==3||k==4)
t=4.0;
if(k==5||k==6)
t=4.5;
return t;
} /*输入行车时间的函数*/ int number(int k)
{
int f;
if(k==1||k==2)
f=30;
if(k==3||k==4)
f=40;
if(k==5||k==6)
f=45;
return f;
} /*输入最大载客量的函数*/ int nownumber(int k,int i)
{
int n=0;
char filename[10];
switch(i)
{
case 1:
strcpy(filename,"qiu1.txt");break;
case 2:
strcpy(filename,"qiu2.txt");break;
case 3:
strcpy(filename,"qiu3.txt");break;
case 4:
strcpy(filename,"qiu4.txt");break;
case 5:
strcpy(filename,"qiu5.txt");break;
case 6:
strcpy(filename,"qiu6.txt");break;
case 7:
strcpy(filename,"qiu7.txt");break;
case 8:
strcpy(filename,"qiu8.txt");break;
case 9:
strcpy(filename,"qiu9.txt");break;
case 10:
strcpy(filename,"qiu10.txt");break;
case 11:
strcpy(filename,"qiu11.txt");break;
case 12:
strcpy(filename,"qiu12.txt");break;
case 13:
strcpy(filename,"qiu13.txt");break;
case 14:
strcpy(filename,"qiu14.txt");break;
case 15:
strcpy(filename,"qiu15.txt");break;
strcpy(filename,"qiu16.txt");break;
case 17:
strcpy(filename,"qiu17.txt");break;
case 18:
strcpy(filename,"qiu18.txt");break;
case 19:
strcpy(filename,"qiu19.txt");break;
case 20:
strcpy(filename,"qiu20.txt");break;
case 21:
strcpy(filename,"qiu21.txt");break;
case 22:
strcpy(filename,"qiu22.txt");break;
case 23:
strcpy(filename,"qiu23.txt");break;
case 24:
strcpy(filename,"qiu24.txt");break;
case 25:
strcpy(filename,"qiu25.txt");break;
case 26:
strcpy(filename,"qiu26.txt");break;
case 27:
strcpy(filename,"qiu27.txt");break;
case 28:
strcpy(filename,"qiu28.txt");break;
case 29:
strcpy(filename,"qiu29.txt");break;
}
FILE *fp;
if((fp=fopen(filename,"rt+"))==NULL)
{
printf("cannot open file,strike any key exit!");
exit(1);
}
fscanf(fp,"%d",&n);
n=n+k;
rewind(fp);
fprintf(fp,"%d",n); //将输入数组里面的数据写到文本里
fclose(fp);
return n;
} /*现在已定票人数*/ int tangci(int k)
{
switch(k)
{
case 1:
x=6;break;
case 2:
x=5;break;
case 3:
x=5;break;
case 4:
x=4;break;
case 5:
x=4;break;
case 6:
x=4;break;
default:
x=0;break;
}
return x;
} /*确定每个地方一天行车趟次的函数*/
void jiemian()
{
printf("********************************************************************* ***********\n");
printf("******************************欢迎来到车票查询系统******************************");
printf("\n");
printf("| ★★★a: 进入班次一览★★★|\n");
printf("| ★★★b: 进入查询班次★★★|\n");
printf("| ★★★c: 进入终点站查询★★★|\n");
printf("| ★★★d: 售票★★★|\n");
printf("| ★★★e: 退票★★★|\n");
printf("| ★★★f: 增加班次★★★|\n");
printf("********************************************************************* ***********\n");
printf("\n请选择(a-e):☆☆☆");
} /*界面函数*/
void banci(int s,int t)
{
system("cls"); /*清屏*/
int i,flag=1,m,k=1,o=0; /*定义一些要用的数据*/
printf(" 车票管理系统");
printf("\n");
printf("班次发车时间起点站终点站行车时间额定数量已订票人数状态");
printf("\n");
for(i=1;i<=N;i++)
{
if(flag)
{
m=i+tangci(k)-1;
flag=0;
} /*计算同一个终点站的班次范围*/
if(i>=10)
printf("%d ",i);
else
printf("%d ",i);
if(hour(i)>=10)
printf("%d ",hour(i)); /*进行页面的调整,美观*/
else
printf("%d%d ",o,hour(i));
if(minute(i)>=10)
printf("%d",minute(i));
else
printf("%d%d",o,minute(i));
printf(" 闽侯");
wap(k);
printf(" %lf ",times(k));
printf("%d ",number(k));
printf("%d ",nownumber(0,i));
if(s printf("未发出"); else if(t printf("未发出"); else printf("已发出"); printf("\n"); if(i==m) { flag=1; k++; } if(k>6) break; } } /*班次一览*/ void chaxun1(int s,int t) { system("cls"); int i,k=0,n,o=0; printf("\n请输入要查询的班次i:"); scanf("%d",&i); n=i; while(n>0) { k++; n=n-tangci(k); } printf("班次发车时间起点站终点站行车时间额定数量已订票人数状态\n"); if(i>=10) printf("%d ",i); else printf("%d ",i); if(hour(i)>=10) printf("%d ",hour(i)); else printf("%d%d ",o,hour(i)); if(minute(i)>=10) printf("%d",minute(i)); else printf("%d%d",o,minute(i)); printf(" 闽侯"); wap(k); printf(" %f ",times(k)); printf("%d ",number(k)); printf("%d ",nownumber(0,i)); if(s printf("未发出"); else if(t printf("未发出"); else printf("已发出"); printf("\n"); printf("返回重新查询:3,输入其他返回:\n"); scanf("%d",&n); while(n==3) /*循环*/ { system("cls"); printf("\n请输入要查询的班次i:"); scanf("%d",&i); printf("班次发车时间起点站终点站行车时间额定数量已订票人数状态\n"); if(i>=10) printf("%d ",i); else printf("%d ",i); if(hour(i)>=10) printf("%d ",hour(i)); else printf("%d%d ",o,hour(i)); if(minute(i)>=10) printf("%d",minute(i)); else printf("%d%d",o,minute(i)); printf(" 闽侯"); wap(k); printf(" %f ",times(k)); printf("%d ",number(k)); printf("%d ",nownumber(0,i)); if(s printf("未发出"); else if(t printf("未发出"); else printf("已发出"); printf("\n"); printf("返回重新查询:3,输入其他返回:\n"); scanf("%d",&n); } } /*按班次查询*/ void chaxun2(int s,int t) { system("cls"); int i,k=1,m,j,l=0,o=0; printf("请输入你要查询的终点站:\n"); printf("1:闽清.2:长乐.3:连江.4:永泰.5:福清.6:罗源.\n"); scanf("%d",&m); for(j=1;j k=k+tangci(j); for(j=1;j<=m;j++) l=l+tangci(j); printf("班次发车时间起点站终点站行车时间额定数量已订票人数状态\n"); for(i=k;i<=l;i++) { if(i>=10) printf("%d ",i); else printf("%d ",i); if(hour(i)>=10) printf("%d ",hour(i)); else printf("%d%d ",o,hour(i)); if(minute(i)>=10) printf("%d",minute(i)); else printf("%d%d",o,minute(i)); printf(" 闽侯"); wap(m); printf(" %f ",times(m)); printf("%d ",number(m)); printf("%d ",nownumber(0,i)); if(s printf("未发出"); else if(t printf("未发出"); else printf("已发出"); printf("\n"); } printf("重新查询请输入11,直接买票请输入12,输入其他退出!:\n"); scanf("%d",&m); while(m==11) { k=1; l=0; printf("请输入你要查询的终点站:\n"); printf("1:闽清.2:长乐.3:连江.4:永泰.5:福清.6:罗源.\n"); scanf("%d",&m); for(j=1;j k=k+tangci(j); for(j=1;j<=m;j++) l=l+tangci(j); printf("班次发车时间起点站终点站行车时间额定数量已订票人数状态\n"); for(i=k;i<=l;i++) { if(i>=10) printf("%d ",i); else printf("%d ",i); if(hour(i)>=10) printf("%d ",hour(i)); else printf("%d%d ",o,hour(i)); if(minute(i)>=10) printf("%d",minute(i)); else printf("%d%d",o,minute(i)); printf(" 闽侯"); wap(m); printf(" %f ",times(m)); printf("%d ",number(m)); printf("%d ",nownumber(0,i)); if(s printf("未发出"); else if(t printf("未发出"); else printf("已发出"); printf("\n"); } printf("重新查询请输入11,直接买票请输入12,输入其他退出!:\n"); scanf("%d",&m); } if(m==12) maipiao(s,t); } /*按终点站查询*/ void zengban() { system("cls"); int k,i; char stu1[10],stu2[10]; printf("由于班次不够,所以需要增加班次:\n"); printf("这个是工作人员所进,请输入密码:\n"); scanf("%s",stu1); while(strcmp(stu1,"qiu")!=0); { printf("密码输入有误,请重新输入:\n"); scanf("%s",stu1); } printf("输入所要增加班次的班次i:"); scanf("%d",&i); printf("请输入所要增加班次的重点站:\n"); printf("1:闽清.2:长乐.3:连江.4:永泰.5:福清.6:罗源.\n"); scanf("%d",&k); printf("请输入发车时间:\n"); scanf("%s",&stu2); printf("班次发车时间起点站终点站行车时间额定数量已订票人数状态\n"); printf("%d ",i); printf("%s ",stu2); printf(" 闽侯"); wap(k); printf(" %f ",times(k)); printf(" %d ",number(k)); printf("%d ",nownumber(0,i)); printf("未发出"); printf("\n"); } void maipiao(int s,int t) { system("cls"); int m,i,k=0,n,o=0,log; printf("欢迎先生或者小姐前来买票\n"); printf("请输入您需要购买票的班次i:\n"); scanf("%d",&i); n=i; while(n>0) { k++; n=n-tangci(k); } printf("班次发车时间起点站终点站行车时间额定数量已订票人数状态\n"); if(i>=10) printf("%d ",i); else printf("%d ",i); if(hour(i)>=10) printf("%d ",hour(i)); else printf("%d%d ",o,hour(i)); if(minute(i)>=10) printf("%d",minute(i)); else printf("%d%d",o,minute(i)); printf(" 闽侯"); wap(k); printf(" %f ",times(k)); printf("%d ",number(k)); printf("%d ",nownumber(0,i)); if(s { printf("未发出"); log=1; } else if(t { printf("未发出"); log=1; } else { printf("已发出"); log=0; } printf("\n"); if(number(k)>=nownumber(0,i)&&log==1) { printf("请输入你要定的票的数量m:\n"); scanf("%d",&m); nownumber(m,i); while(number(k) { nownumber(-m,i); printf("这班车已订满,请重新订票:\n"); printf("请输入您需要购买票的班次i:\n"); scanf("%d",i); n=i; while(n>0) { k++; n=n-tangci(k); } if(i>=10) printf("%d ",i); else printf("%d ",i); if(hour(i)>=10) printf("%d ",hour(i)); else printf("%d%d ",o,hour(i)); if(minute(i)>=10) printf("%d",minute(i)); else printf("%d%d",o,minute(i)); printf(" 闽侯"); wap(i); printf(" %f ",times(k)); printf("%d ",number(k)); printf("%d ",nownumber(0,i)); if(s { printf("未发出"); log=1; } else if(t { printf("未发出"); log=1; } else { printf("已发出"); log=0; } printf("\n"); } printf("你已成功订票!"); } while(number(k) { printf("此班不能订票,请重新输入所要定的班次i:\n"); scanf("%d",&i); n=i; k=0; while(n>0) { k++; n=n-tangci(k); } printf("班次发车时间起点站终点站行车时间额定数量已订票人数状态\n"); if(i>=10) printf("%d ",i); else printf("%d ",i); if(hour(i)>=10) printf("%d ",hour(i)); else printf("%d%d ",o,hour(i)); if(minute(i)>=10) printf("%d",minute(i)); else printf("%d%d",o,minute(i)); printf(" 闽侯"); wap(k); printf(" %f ",times(k)); printf("%d ",number(k)); printf("%d ",nownumber(0,i)); if(s { printf("未发出"); log=1; } else if(t { printf("未发出"); log=1; } else { printf("已发出"); log=0; } printf("\n"); if(number(k)>=nownumber(0,i)&&log==1) { printf("请输入你要定的票的数量m:\n"); scanf("%d",&m); nownumber(m,i); while(number(k) { printf("这班车已订满,请重新订票:\n"); printf("请输入您需要购买票的班次i:\n"); scanf("%d",i); n=i; while(n>0) { k++; n=n-tangci(k); } if(i>=10) printf("%d ",i); else printf("%d ",i); if(hour(i)>=10) printf("%d ",hour(i)); else printf("%d%d ",o,hour(i)); if(minute(i)>=10) printf("%d",minute(i)); else printf("%d%d",o,minute(i)); printf(" 闽侯"); wap(i); printf(" %f ",times(k)); printf("%d ",number(k)); printf("%d ",nownumber(0,i)); if(s { printf("未发出"); log=1; } else if(t { printf("未发出"); log=1; } else { printf("已发出"); log=0; } printf("\n"); } printf("你已成功订票!"); } } } /*订票的函数*/ void tuipiao(int s,int t) { system("cls"); int i,n,k=0,x,log,o=0; printf("请输入你所订票的班次i:\n"); scanf("%d",&i); n=i; while(n>0) { k++; n=n-tangci(k); } printf("班次发车时间起点站终点站行车时间额定数量已订票人数状态\n"); if(i>=10) printf("%d ",i); else printf("%d ",i); if(hour(i)>=10) printf("%d ",hour(i)); else printf("%d%d ",o,hour(i)); if(minute(i)>=10) printf("%d",minute(i)); else printf("%d%d",o,minute(i)); printf(" 闽侯"); wap(k); printf(" %f ",times(k)); printf("%d ",number(k)); printf("%d ",nownumber(0,i)); if(s { printf("未发出"); log=1; } else if(t { printf("未发出"); log=1; } else { printf("已发出"); log=0; } printf("\n"); if(log==1) { printf("你真的要退票吗? 是:请输入1, 否:请输入0\n"); scanf("%d",&x); if(x==1) { nownumber(-1,i); printf("你已退票成功!"); } } else printf("此班不能退票!"); } /*退票函数*/ void main() { system("color E"); /*改变颜色*/ int log=1,n,s,t,log2=0; char x; jiemian(); /*调用界面函数*/ shijian(); /*调用时间函数*/ scanf("%c",&x); printf("请输入上述时间的时辰:"); scanf("%d",&s); printf("请输入上述时间的分钟:"); scanf("%d",&t); while(log) /*循环*/ { if(x=='a') banci(s,t); /*调用班次的函数,班次一览的函数*/ if(x=='b') chaxun1(s,t); /*按班次查询的函数*/ if(x=='c') chaxun2(s,t); /*按终点站查询的函数*/ if(x=='d') maipiao(s,t); /*买票的函数*/ if(x=='e') tuipiao(s,t); /*退票的函数*/ if(x=='f') zengban(); /*增加班次*/ printf("\n"); printf("返回主界面:请输入1:\n"); printf("退出:0\n"); scanf("%d",&n); if(n==1) { system("cls"); jiemian(); scanf("%c",&x); } else if(n==0) break; } }