车票管理系统 -java

#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#include<string.h>


typedef struct ticket //车票类
{
int number; //班次号
char dtime[20]; //发车时间
char start[20]; //起点
char end[20]; //终点
char ttime[20]; //行车时间
int capacity; //载客量
int bookers; //已定票数
}ticket;

ticket tick[200];

/*typedef struct Node
{
ticket data;
struct Node *next;
}Node, *Linklist;

Node* t;
*/
int menu_select() //菜单选择
{
char c;
do{
system("cls");
printf("\t\t╭───────────────────────────────────╮\n");
printf("\t\t│ 车票管理系统 │\n");
printf("\t\t╰───────────────────────────────────╯\n");
printf("\t\t ┌────────────────────────────┐\n");
printf("\t\t │ 1. 添加车票 2. 浏览车票 │\n");
printf("\t\t │ │\n");
printf("\t\t │ 3. 车票查询 4. 车票购买 │\n");
printf("\t\t │ │\n");
printf("\t\t │ 5. 退票 0. 退出程序 │\n");
printf("\t\t │ │\n");
printf("\t\t │ │\n");
printf("\t\t │ 景院土匪二号:Mike │\n");
printf("\t\t └────────────────────────────┘\n");
printf("\t\t请您选择(0-5):");
c = getchar();
}while(c<'0' || c>'5');
{
return (c-'0'); //字符减去'0'得到的是数字整型
}
}

void add() //车票添加
{
FILE *fp;
ticket tick[200];
char sign = 'y';
int n = 0, i = 0;
system("cls");
printf("\t车票添加:");
while(sign!='n' && sign!='N')
{
printf("----车票添加----\n");
printf("班次:\n");
scanf("\t%i",&tick[i].number);
printf("发车时间:\n");
scanf("\t%s",&tick[i].dtime);
printf("起点:\n");
scanf("\t%s",&tick[i].start);
printf("终点:\n");
scanf("\t%s",&tick[i].end);
printf("行车时间:\n");
scanf("\t%s",&tick[i].ttime);
printf("载客量:\n");
scanf("\t%i",&tick[i].capacity);
printf("已定票数:\n");
scanf("\t%i",&tick[i].bookers);
printf("是否继续添加?(y/n)");
scanf("\t%c",&sign);
system( "cls ");
n ++;i ++;
}
system("pause");
if((fp = fopen("sticket.txt","a")) == NULL)
{
printf("无法打开文件\n");
system("pause");
return;
}
for(i = 0; i < n; i++)
{
fprintf(fp,"\t %i %s %s %s %s %i %i\n",tick[i].number, tick[i].dtime, tick[i].start,
tick[i].end, tick[i].ttime, tick[i].capacity, tick[i].bookers);
}
fclose(fp);
system("pasue");
}

void print() //车票信息浏览
{
FILE *fp;
system("cls");
printf("\t车票信息浏览:\n");
int i = 0;
printf(" 班次 发车时间 起点站 终点站 行车时间 额定载量 已定票人数\n");
if((fp = fopen("sticket.txt","r")) == NULL)
{
printf("无法打开文件\n");
system("pause");
return;
}
while(fscanf(fp,"\t %i %s %s %s %s %i %i\n",
&tick[i].number, &tick[i].dtime, &tick[i].start, &tick[i].end, &tick[i].ttime,
&tick[i].capacity, &tick[i].bookers) != EOF)
{
printf("\t %i %s %s %s %s %i %i\n", tick[i].number, tick[i].dtime,
tick[i].start, tick[i].end, tick[i].ttime, tick[i].capacity, tick[i].bookers);
printf("\n");
i ++;
}
system("pause");
}

void seach() //查询车票信息
{
ticket tick[200];
system("cls");
printf("\t车票信息查询:\n");
FILE *fp;
int m = 0, n = 0, i = 0;
printf("\t\n请选择查询方式:\n");
printf("\t┌──────────────┐\n");
printf("\t│1--------班次 │\n");
printf("\t│2------起点站 │\n");
printf("\t│3------终点站 │\n");
printf("\t└──────────────┘\n");
printf("请输入你要查询的方式\n");
scanf("%i", &m);
while(m != 1 && m != 2 && m !=3)
{
printf("输入错误请重新查询\n");
scanf("%i", &m);
}
if((fp = fopen("sticket.txt","r"))==NULL)
{
printf("无法打开文件\n");
}
while(fscanf(fp,"\t %i %s %s %s %s %i %i\n", &tick[i].number, &tick[i].dtime,
&tick[i].start, &tick[i].end, &tick[i].ttime, &tick[i].capacity, &tick[i].bookers) != EOF)
{
i ++;
n ++;
}
if(m == 1)
{
int number = 0;
printf("请输入班次:\n");
scanf("\t%i", &number);
for(i = 0; i <= n; i++)
{
if(number == tick[i].number)
{
printf(" 班次 发车时间 起点站 终点站 行车时间 额定载量 已定票人数\n");
printf("\t %i %s %s %s %s %i %i\n",
tick[i].number, tick[i].dtime, tick[i].start,
tick[i].end, tick[i].ttime, tick[i].capacity, tick[i].bookers);
printf("\n");
system("pause");
return;
}
}
printf("未查找到%i班次信息", number);
system("pause");
}
if(m == 2)
{
char start[20] = "天堂";
printf("请输入起点:");
scanf("\t%s", &start);
printf(" 班次 发车时间 起点站 终点站 行车时间 额定载量 已定票人数\n");
for(i = 0; i < n; i++)
{
if(strcmp(tick[i].start, start) == 0)
{
printf("\t %i %s %s %s %s %i %i\n",tick[i].number, tick[i].dtime, tick[i].start, tick[i].end,
tick[i].ttime, tick[i].capacity, tick[i].bookers);
printf("\n");
system("pause");
return;
}
}
printf("未查找到%s为起点的车票信息", start);
system("pause");
}
if(m == 3)
{
char end[20] = "地狱";
printf("请输入终点:");
scanf("\t%s", &end);
printf(" 班次 发车时间 起点站 终点站 行车时间 额定载量 已定票人数\n");
for(i = 0; i < n; i++)
{
if(strcmp(tick[i].end, end) == 0)
{
printf("\t %i %s %s %s %s %i %i\n",
tick[i].number, tick[i].dtime, tick[i].start, tick[i].end,
tick[i].ttime, tick[i].capacity, tick[i].bookers);
printf("\n");
system("pause");
return;
}
}
printf("未查找到%s为终点的车票信息", end);
system("pause");
}
fclose(fp);
system("pause");
}

void buy() //买票
{
ticket tick[200];
system("cls");
printf("\t车票购买:\n");
FILE *fp;
int i = 0, n = 0;
if((fp = fopen("sticket.txt","rb+")) == NULL)
{
printf("无法打开文件\n");
system("pause");
return;
}
while(fscanf(fp,"\t %i %s %s %s %s %i %i\n",
&tick[i].number, &tick[i].dtime, &tick[i].start, &tick[i].end,
&tick[i].ttime, &tick[i].capacity, &tick[i].bookers) != EOF)
{
i ++;
n ++;
}
char sign = 'y';
while(sign != 'n' && sign != 'N')
{
int number = 0;
printf("请输入班次:");
scanf("\t%i", &number);
for(i = 0; i < n; i++)
{
if(number == tick[i].number)
{
time_t t;
struct tm * lt;
time (&t);
lt = localtime (&t);
char hour[2], min[2];
char *time = tick[i].dtime;
int j = 0;
for (j; j < 2; j++)
{
hour[j] = time[j];
}
int hours = atoi(hour);
for(j = 3; j < 5; j++)
{
min[j - 3] = time[j];
}
int mins = atoi(min);
if(tick[i].capacity > tick[i].bookers && hours >= (lt -> tm_hour))
{
if(hours == (lt -> tm_hour) && mins <= (lt -> tm_min))
break;
printf(" 班次 发车时间 起点站 终点站 行车时间 额定载量 已定票人数\n");
printf("\t %i %s %s %s %s %i %i\n",
tick[i].number, tick[i].dtime, tick[i].start, tick[i].end,
tick[i].ttime, tick[i].capacity, tick[i].bookers);
printf("\n");
printf("是否购买?(y/n)");
scanf("\t%c", &sign);
if(sign == 'y')
{
tick[i].bookers ++;
printf("恭喜购买成功!\n");
printf(" 班次 发车时间 起点站 终点站 行车时间 额定载量 已定票人数\n");
printf("\t %i %s %s %s %s %i %i\n",
tick[i].number, tick[i].dtime, tick[i].start, tick[i].end,
tick[i].ttime, tick[i].capacity, tick[i].bookers);
printf("\n");
printf("是否继续购买?(y/n)");
scanf("\t%c", &sign);
/*fprintf(fp,"\t %i %s %s %s %s %i %i\n",
tick[i].number, tick[i].dtime, tick[i].start,
tick[i].end, tick[i].ttime, tick[i].capacity, tick[i].bookers);*/
}
}
if(tick[i].capacity <= tick[i].bookers)
{
printf("对不起,已售空");
printf("是否继续购买?(y/n)");
scanf("\t%c", &sign);
}
if (hours <= (lt -> tm_hour) && mins < (lt -> tm_min))
{
printf("对不起,%i班次已发车,无法购买", number);
printf("是否继续购买?(y/n)");
scanf("\t%c", &sign);
}
}
}
printf("没有该班次的车");
system("pasue");
break;
}
fclose(fp);
system("pasue");
}

void refund() //退票
{
ticket tick[200];
system("cls");
printf("\t退票:\n");
FILE *fp;
int number = 0, i = 0, n = 0;
char sign = 'y';
if((fp = fopen("sticket.txt","rb+")) == NULL)
{
printf("无法打开文件\n");
system("pause");
return;
}
while(fscanf(fp,"\t %i %s %s %s %s %i %i\n",
&tick[i].number, &tick[i].dtime, &tick[i].start, &tick[i].end,
&tick[i].ttime, &tick[i].capacity, &tick[i].bookers) != EOF)
{
i ++;
n ++;
}
while(sign != 'n' && sign != 'N')
{
printf("请输入需要退票的班次\n");
scanf("%i",&number);
time_t t;
struct tm * lt;
time (&t);
lt = localtime (&t);
char hour[2], min[2];
char *time = tick[i].dtime;
int j = 0;
for (j; j < 2; j++)
{
hour[j] = time[j];
}
int hours = atoi(hour);
for(j = 3; j < 5; j++)
{
min[j - 3] = time[j];
}
int mins = atoi(min);
if (hours <= (lt -> tm_hour) && mins < (lt -> tm_min))
{
printf("对不起,%i班次已发车,无法退票", number);
system("pause");
return;
}
char sign = 'y';
for(i = 0; i < n; i++)
{
if(number == tick[i].number)
{
if(tick[i].capacity > tick[i].bookers)
{
printf(" 班次 发车时间 起点站 终点站 行车时间 额定载量 已定票人数\n");
printf("\t %i %s %s %s %s %i %i\n",
tick[i].number, tick[i].dtime, tick[i].start, tick[i].end,
tick[i].ttime, tick[i].capacity, tick[i].bookers);
printf("\n");
printf("是否退票?(y/n)");
scanf("\t%c", &sign);
if(sign == 'y')
{
tick[i].bookers --;
printf("退票成功!");
printf("\n");
printf("是否继续退票?(y/n)");
scanf("\t%c", &sign);
/*fprintf(fp,"\t %i %s %s %s %s %i %i\n",
tick[i].number, tick[i].dtime, tick[i].start,
tick[i].end, tick[i].ttime, tick[i].capacity, tick[i].bookers);*/
}
}
if(tick[i].capacity <= tick[i].bookers)
{
printf("对不起,该班次已发车,无法退票");
printf("是否继续退票?(y/n)");
scanf("\t%c", &sign);
}
}
}
}
fclose(fp);
system("pasue");
}

int main()
{
while(true)
{
switch(menu_select())
{
case 1:
add();
break;
case 2:
print();
break;
case 3:
seach();
break;
case 4:
buy();
break;
case 5:
refund();
break;
case 0:
printf("\n\t\t谢谢使用,再见!\n");
printf("\n\t\t");
system("pause");
exit(0);
}
}
system("pause");
return 0;
}

posted @ 2021-06-21 11:24  小恐龙吃蚊子  阅读(1378)  评论(0)    收藏  举报