用c语言写一个火车票订票系统
时间: 2024-05-02 09:16:39 浏览: 205
火车票订票系统是一个比较复杂的系统,需要考虑多方面的因素,包括列车信息、座位信息、乘客信息等。以下是一个简单的火车票订票系统的C语言代码示例。
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_TRAIN_NUM 100 // 最大列车数
#define MAX_SEAT_NUM 100 // 最大座位数
#define MAX_NAME_LEN 20 // 最大姓名长度
// 列车信息结构体
typedef struct TrainInfo {
char trainNum[10]; // 列车编号
char startStation[20]; // 起点站
char endStation[20]; // 终点站
char departTime[10]; // 出发时间
char arriveTime[10]; // 到达时间
int seatNum; // 座位数
int seatLeft; // 剩余座位数
} TrainInfo;
// 乘客信息结构体
typedef struct PassengerInfo {
char name[MAX_NAME_LEN]; // 姓名
char trainNum[10]; // 列车编号
char seatNum[10]; // 座位编号
} PassengerInfo;
// 列车信息数组和乘客信息数组
TrainInfo trainInfoArr[MAX_TRAIN_NUM];
PassengerInfo passengerInfoArr[MAX_SEAT_NUM];
// 列车数和座位数
int trainNum = 0;
int seatNum = 0;
// 添加列车信息
void addTrainInfo() {
if (trainNum >= MAX_TRAIN_NUM) {
printf("已达到最大列车数\n");
return;
}
printf("请输入列车编号:");
scanf("%s", trainInfoArr[trainNum].trainNum);
printf("请输入起点站:");
scanf("%s", trainInfoArr[trainNum].startStation);
printf("请输入终点站:");
scanf("%s", trainInfoArr[trainNum].endStation);
printf("请输入出发时间:");
scanf("%s", trainInfoArr[trainNum].departTime);
printf("请输入到达时间:");
scanf("%s", trainInfoArr[trainNum].arriveTime);
printf("请输入座位数:");
scanf("%d", &trainInfoArr[trainNum].seatNum);
trainInfoArr[trainNum].seatLeft = trainInfoArr[trainNum].seatNum;
trainNum++;
printf("添加成功\n");
}
// 查询列车信息
void queryTrainInfo() {
printf("请输入列车编号:");
char trainNum[10];
scanf("%s", trainNum);
for (int i = 0; i < trainNum; i++) {
if (strcmp(trainInfoArr[i].trainNum, trainNum) == 0) {
printf("列车编号:%s\n", trainInfoArr[i].trainNum);
printf("起点站:%s\n", trainInfoArr[i].startStation);
printf("终点站:%s\n", trainInfoArr[i].endStation);
printf("出发时间:%s\n", trainInfoArr[i].departTime);
printf("到达时间:%s\n", trainInfoArr[i].arriveTime);
printf("座位数:%d\n", trainInfoArr[i].seatNum);
printf("剩余座位数:%d\n", trainInfoArr[i].seatLeft);
return;
}
}
printf("未找到该列车信息\n");
}
// 订票
void bookTicket() {
if (seatNum >= MAX_SEAT_NUM) {
printf("已达到最大座位数\n");
return;
}
printf("请输入姓名:");
scanf("%s", passengerInfoArr[seatNum].name);
printf("请输入列车编号:");
scanf("%s", passengerInfoArr[seatNum].trainNum);
for (int i = 0; i < trainNum; i++) {
if (strcmp(trainInfoArr[i].trainNum, passengerInfoArr[seatNum].trainNum) == 0) {
if (trainInfoArr[i].seatLeft > 0) {
sprintf(passengerInfoArr[seatNum].seatNum, "%d", trainInfoArr[i].seatNum - trainInfoArr[i].seatLeft + 1);
trainInfoArr[i].seatLeft--;
seatNum++;
printf("订票成功,座位号为:%s\n", passengerInfoArr[seatNum - 1].seatNum);
return;
} else {
printf("该列车已无座位\n");
return;
}
}
}
printf("未找到该列车信息\n");
}
// 查询乘客信息
void queryPassengerInfo() {
printf("请输入姓名:");
char name[MAX_NAME_LEN];
scanf("%s", name);
for (int i = 0; i < seatNum; i++) {
if (strcmp(passengerInfoArr[i].name, name) == 0) {
printf("姓名:%s\n", passengerInfoArr[i].name);
printf("列车编号:%s\n", passengerInfoArr[i].trainNum);
printf("座位号:%s\n", passengerInfoArr[i].seatNum);
return;
}
}
printf("未找到该乘客信息\n");
}
// 主函数
int main() {
int choice;
do {
printf("\n");
printf("1. 添加列车信息\n");
printf("2. 查询列车信息\n");
printf("3. 订票\n");
printf("4. 查询乘客信息\n");
printf("5. 退出\n");
printf("请选择操作:");
scanf("%d", &choice);
switch (choice) {
case 1:
addTrainInfo();
break;
case 2:
queryTrainInfo();
break;
case 3:
bookTicket();
break;
case 4:
queryPassengerInfo();
break;
case 5:
printf("谢谢使用,再见!\n");
break;
default:
printf("输入有误,请重新输入!\n");
break;
}
} while (choice != 5);
return 0;
}
```
此程序中,使用了结构体来存储列车信息和乘客信息,使用了数组来存储列车信息数组和乘客信息数组。通过不同的操作,可以实现添加列车信息、查询列车信息、订票和查询乘客信息等功能。注意此程序中列车座位号的计算方式,是通过列车总座位数减去列车剩余座位数再加1得到的。
阅读全文