C语言车票管理系统

在这里插入图片描述
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include <stdlib.h>
#include<string.h>
#include <time.h>
#include
//Must_inspect_result
typedef struct Ticket
{

char class_num[24];//新车次号
char begin_time[30];//发车时间
int Thour;//行车小时 
int Tmin;//行车分钟 
char frist[7];//起点站
char last[7];//终点站
float keep_time;//行车时间
int seat_num;//额定载量
int sold;//已订票数
char sold_seat[50];//已定座位

}Ticket;
//printf(“新车次号\t发车时间\t起点站\t终点站\t行车时间\t额定载量\t已订票数\t已定座位\n”);
int i;
int n = 4;
Ticket car[50] = { {“1”,“8:00”,8,00,“福州”,“厦门”,2.0,45,7},
{“2”,“6:30”,6,30,“福州”,“福清”,0.5,40,5},
{“3”,“7:00”,7,00,“福州”,“福清”,0.5,40,3},
{“4”,“10:00”,10,00,“福州”,“福清”,0.5,40,5}};

void Word()
{
FILE* fp;
fp = fopen(“ticket.txt”, “rb”);
if (fp == NULL) {
printf(“error!\n”);
printf(“车次信息读取失败!\n”);
}
else {
for (i = 0; i < 5; i++) {
fscanf(fp, “%s”, &car[i].class_num);
fscanf(fp, “%s”, &car[i].begin_time);
fscanf(fp, “%d”, &car[i].Thour);
fscanf(fp, “%d”, &car[i].Tmin);
fscanf(fp, “%s”, &car[i].frist);
fscanf(fp, “%s”, &car[i].last);
fscanf(fp, “%f”, &car[i].keep_time);
fscanf(fp, “%d”, &car[i].seat_num);
fscanf(fp, “%d”, &car[i].sold);
fscanf(fp, “%s”, &car[i].sold_seat);
}
printf(“车票信息读取成功!\n”);
fclose(fp);
}
return;
}

int InputAllAttributes(Ticket* t)
{
printf(“请输入您要录入新班次的车次号:\n”);
scanf(“%s”, t->class_num);
printf(“请输入您要录入新班次的发车时间:\n”);
scanf(“%d:%d”, &t->Thour, &t->Tmin);
printf(“请输入您要录入新班次的起点站:\n”);
scanf(“%s”, t->frist);
printf(“请输入您要录入新班次的终点站:\n”);
scanf(“%s”, t->last);
printf(“请输入您要录入新班次的行车时间:\n”);
scanf(“%f”, &t->keep_time);
printf(“请输入您要录入新班次的额定载量:\n”);
scanf(“%d”, &t->seat_num);
printf(“请输入您要录入新班次的已订票数:\n”);
scanf(“%d”, &t->sold);
printf(“请输入您要录入新班次的已定座位:\n”);
scanf(“%s”, t->sold_seat);
//printf(“新车次号\t发车时间\t起点站\t终点站\t行车时间\t额定载量\t已订票数\t已定座位\n”);
return 0;
}

int Inputicket()
{
Word();
Ticket t;
InputAllAttributes(&t);

for (int i = 4; i < 100; i++) {
    if (car[i].Thour == t.Thour && car[i].Tmin == t.Tmin) {
        printf("输入班次时间有冲突。\n");
    }
    else {
        strcpy(car[i].class_num, t.class_num);
        strcpy(car[i].frist, t.frist);
        strcpy(car[i].last, t.last);
        car[i].Thour = t.Thour;
        car[i].Tmin = t.Tmin;
        car[i].keep_time = t.keep_time;
        car[i].seat_num = t.seat_num;
        car[i].sold = t.sold;
        strcpy(car[i].sold_seat, t.sold_seat);
        printf("录入新班次信息成功!\n");
        n++;
        break;
    }
}

return 0;

}

void DisplayTicket()
{
int i;
time_t t = time(0);
tm* st = localtime(&t);
Word();
printf(“车次\t起点站\t终点站\n”);
for (i = 0; i < n; i++)
{
if (st->tm_hour > car[i].Thour || (st->tm_hour == car[i].Thour && st->tm_min >= car[i].Tmin))
{
printf(“%s\t”, car[i].class_num);
printf(“%s\t”, car[i].frist);
printf(“%s\n”, car[i].last);
}
else
{
printf(“%s\t%s\t%s\n”, car[i].class_num, car[i].frist, car[i].last);
}
}
}
void bancihao()
{
int bancihao1;
printf(“请输入要查询的班次号:\n”);
scanf(“%d”, &bancihao1);
printf(“新车次号\t发车时间\t起点站\t终点站\t行车时间\t额定载量\t已订票数\t已定座位\n”);
if (bancihao1 <= n && bancihao1 >= 1)
{
int i = bancihao1-1;
printf(“%s\t”, car[i].class_num);
printf(“%02d:%02d\t”, car[i].Thour, car[i].Tmin); // 使用%02d保证输出两位数字
printf(“%s\t”, car[i].frist);
printf(“%s\t”, car[i].last);
printf(“%.1f小时\t”, car[i].keep_time);
printf(“%d\t”, car[i].seat_num);
printf(“%d\t”, car[i].sold);
printf(“%s\n”, car[i].sold_seat);
}
else
{
printf(“此班次不存在。\n”);
}
}

void qishizhan()
{
char dizhi[10];
printf(“请输入要查询列车的起始站:\n”);
scanf(“%s”, &dizhi);
if (strcmp(dizhi, car[i].frist) == 0) {
printf(“班次:%d\n”, car[i].class_num);
printf(“出发时间:%s\n”, car[i].begin_time);
printf(“起始站:%s\n”, car[i].frist);
printf(“终点站:%s\n”, car[i].last);
printf(“行车时间:%s\n”, car[i].keep_time);
printf(“额定载量:%s\n”, car[i].seat_num);
printf(“已订票数:%s\n”, car[i].sold);
printf(“已定座位:%s\n”, car[i].sold_seat);
}
else {
printf(“没有起始站为%s的车。\n”, dizhi);
}return;
}
void zhongdianzhan()
{
int zhongdianzhan1 = 0;
i = zhongdianzhan1 - 1;
char dizhi[10];
printf(“请输入要查询列车的终点站:\n”);
scanf(“%s”, dizhi);
if (strcmp(dizhi, car[i].last) == 0) {
printf(“班次:%d\n”, car[i].class_num);
printf(“出发时间:%c\n”, car[i].begin_time);
printf(“起始站:%d\n”, car[i].frist);
printf(“终点站:%d\n”, car[i].last);
printf(“行车时间:%c\n”, car[i].keep_time);
printf(“额定载量:%c\n”, car[i].seat_num);
printf(“已订票数:%c\n”, car[i].sold);
printf(“已定座位:%c\n”, car[i].sold_seat);
}
else {
printf(“没有终点站为%c的车。\n”, zhongdianzhan1);
}return;
}
void FindingTicket()
{
int fuction_num;

printf("1.按班次号查询\n");
printf("2.按终点站查询\n");
printf("3.按发车时间查询\n");
printf("请选择:\n");
scanf("%d", &fuction_num);

switch (fuction_num)
{
case 1:
	bancihao();
	break;
case 2:
	qishizhan();
	break;
case 3:
	zhongdianzhan();
	break;
default:
	printf("输入错误。\n");
	break;
}

}

void Sell()
{
int i, y, j;
char zuoweihao[10];
printf(“请输入您要购买列车的班次号:\n”);
scanf(“%d”, &i);
y = i - 1;
time_t t = time(0);
tm* st = localtime(&t);
void Word();
if ((st->tm_hour != car[y].Thour) || (st->tm_min != car[y].Tmin)) {
printf(“当前班次已发出,无法购票。\n”);
return;
}
printf(“额定载量:%d\n”, car[y].seat_num);
printf(“已定座位:%s\n”, car[y].sold_seat);
printf(“请输入您想要选择的座位号:\n”);
scanf(“%s”, zuoweihao);
for (j = 0; j < strlen(car[y].sold_seat); j++) {
if (zuoweihao[0] == car[y].sold_seat[j]) {
printf(“此座位已被购买。\n”);
return;
}
}
if (car[y].sold >= car[y].seat_num) {
printf(“座位已售罄,无法购票。\n”);
return;
}
car[y].sold++;
strcat(car[y].sold_seat, " ");
strcat(car[y].sold_seat, zuoweihao);
printf(“购票成功!\n”);
}

void Return()
{
time_t t = time(0);
tm* st = localtime(&t);
int j;
char tuipiao[10];
printf(“请输入您要退票的车次:\n”);
scanf(“%s”, tuipiao);
for (int i = 0; i < n; i++)
{
if (strcmp(tuipiao, car[i].class_num) == 0)
{
if ((st->tm_hour != car[i].Thour) || (st->tm_min != car[i].Tmin))
{
printf(“很抱歉,此班次已经发出,无法退票。\n”);
return;
}
else
{
printf(“当前已售票数:%d\n”, car[i].sold);

			car[i].sold--;

			printf("退票成功。\n");
			return;
		}
	}
}
printf("很抱歉,系统中无法查询到此班次。\n");

}

void SaveTicket()
{
FILE* fp;
fp = fopen(“ticket.txt”, “wb”);
if (fp == NULL) {
printf(“error!\n”);
printf(“车次信息保存失败!\n”);
}
else {
for (i = 0; i < n; i++) {
fprintf(fp, “%s\t”, car[i].class_num);
fprintf(fp, “%s\t”, car[i].begin_time);
fprintf(fp, “%d\t”, car[i].Thour);
fprintf(fp, “%d\t”, car[i].Tmin);
fprintf(fp, “%s\t”, car[i].frist);
fprintf(fp, “%s\t”, car[i].last);
fprintf(fp, “%.1f\t”, car[i].keep_time);
fprintf(fp, “%d\t”, car[i].seat_num);
fprintf(fp, “%d\t”, car[i].sold);
fprintf(fp, “%s\n”, car[i].sold_seat);
}
printf(“车票信息保存成功!\n”);
fclose(fp);
}
return;
}

int main()
{
int a;
do
{
printf(“欢迎使用车票管理系统!\n”);
printf(“请选择您所需要使用的功能(1-5)\n”);
printf(“1.录入班次信息\n”);
printf(“2.浏览班次信息\n”);
printf(“3.查询路线\n”);
printf(“4.售票功能\n”);
printf(“5.退票功能\n”);
printf(“6.保存数据到文件功能\n”);
printf(“请输入您要执行的功能选项:”);
scanf(“%d”, &a);
switch (a)
{
case 1:
Inputicket();
break;
case 2:
DisplayTicket();
break;
case 3:
FindingTicket();
break;
case 4:
Sell();
break;
case 5:
Return();
break;
case 6:
SaveTicket();
break;
default:
printf(“输入错误!\n”);
printf(“请输入1-6的数字。\n”);
break;
}
} while (1);
}

  • 25
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值