用c语言写火车售票系统 基本要求: 通过此系统可以实现售票、退票、车票剩余情况查询等功能。每张车票包含车次、车厢、座位信息。 ⑴在售票、退票、查询剩余票等环节中,都必须显示出车票的信息,即车次、车厢、座位情况。 ⑵为简单起见,在此假设所有出售的车票均为同一车次的车票。同一车次,有多个车厢,每个车厢有多个座位。 ⑶购票时,可以显示余票信息,并可以选择买哪张票。 ⑷退票时,必须是车站售出的车票才能退,否则视为无效票,不能退票,而且退票可以再次销售。 ⑸演示程序以用户和计算机的对话方式进行。
时间: 2024-03-17 15:40:51 浏览: 133
火车售票c语言
下面是一个简单的火车售票系统的C语言实现,可以实现售票、退票、车票剩余情况查询等功能:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_TRAIN 10 // 最多支持10个车次
#define MAX_CARRIAGE 10 // 每个车次最多支持10个车厢
#define MAX_SEAT 100 // 每个车厢最多支持100个座位
typedef struct {
int id; // 车次ID
int carriage[MAX_CARRIAGE][MAX_SEAT]; // 车厢座位情况
} Train;
Train trains[MAX_TRAIN]; // 所有车次信息
int trainCount = 0; // 当前车次数目
// 显示车票信息
void printTicket(int trainId, int carriageId, int seatId) {
printf("车次:%d\t车厢:%d\t座位:%d\n", trainId, carriageId, seatId);
}
// 查询车票余量
void queryTicket(int trainId) {
if (trainId < 1 || trainId > trainCount) {
printf("无效的车次ID\n");
return;
}
printf("车次:%d\n", trainId);
for (int i = 0; i < MAX_CARRIAGE; i++) {
int count = 0;
for (int j = 0; j < MAX_SEAT; j++) {
if (trains[trainId - 1].carriage[i][j] == 0) {
count++;
}
}
printf("车厢%d 剩余座位数:%d\n", i + 1, count);
}
}
// 售票
void sellTicket(int trainId, int carriageId, int seatId) {
if (trainId < 1 || trainId > trainCount) {
printf("无效的车次ID\n");
return;
}
if (carriageId < 1 || carriageId > MAX_CARRIAGE) {
printf("无效的车厢ID\n");
return;
}
if (seatId < 1 || seatId > MAX_SEAT) {
printf("无效的座位ID\n");
return;
}
if (trains[trainId - 1].carriage[carriageId - 1][seatId - 1] == 1) {
printf("该座位已经售出,请选择其他座位\n");
return;
}
trains[trainId - 1].carriage[carriageId - 1][seatId - 1] = 1;
printf("售票成功!\n");
printTicket(trainId, carriageId, seatId);
}
// 退票
void returnTicket(int trainId, int carriageId, int seatId) {
if (trainId < 1 || trainId > trainCount) {
printf("无效的车次ID\n");
return;
}
if (carriageId < 1 || carriageId > MAX_CARRIAGE) {
printf("无效的车厢ID\n");
return;
}
if (seatId < 1 || seatId > MAX_SEAT) {
printf("无效的座位ID\n");
return;
}
if (trains[trainId - 1].carriage[carriageId - 1][seatId - 1] == 0) {
printf("该座位未售出,无法退票\n");
return;
}
trains[trainId - 1].carriage[carriageId - 1][seatId - 1] = 0;
printf("退票成功!\n");
}
int main() {
// 初始化车次信息
for (int i = 0; i < MAX_TRAIN; i++) {
trains[i].id = i + 1;
for (int j = 0; j < MAX_CARRIAGE; j++) {
for (int k = 0; k < MAX_SEAT; k++) {
trains[i].carriage[j][k] = 0;
}
}
}
trainCount = MAX_TRAIN;
printf("欢迎使用火车售票系统!\n");
while (1) {
printf("请选择要进行的操作:\n");
printf("1.查询车票余量\n");
printf("2.售票\n");
printf("3.退票\n");
printf("4.退出系统\n");
int op;
scanf("%d", &op);
if (op == 1) {
printf("请输入要查询的车次ID:\n");
int trainId;
scanf("%d", &trainId);
queryTicket(trainId);
} else if (op == 2) {
printf("请输入要购买的车次ID、车厢ID、座位ID:\n");
int trainId, carriageId, seatId;
scanf("%d %d %d", &trainId, &carriageId, &seatId);
sellTicket(trainId, carriageId, seatId);
} else if (op == 3) {
printf("请输入要退票的车次ID、车厢ID、座位ID:\n");
int trainId, carriageId, seatId;
scanf("%d %d %d", &trainId, &carriageId, &seatId);
returnTicket(trainId, carriageId, seatId);
} else if (op == 4) {
break;
} else {
printf("无效的操作,请重新选择\n");
}
}
printf("谢谢使用火车售票系统!\n");
return 0;
}
```
以上代码仅提供一个简单的示例,实际的火车售票系统需要考虑更多的情况,如座位类型、票价、日期等。
阅读全文