用c语言和数据结构的知识写一个火车购票系统
时间: 2024-02-12 20:07:05 浏览: 36
好的,我可以给您一些基本的思路和代码,但是由于篇幅限制,我无法提供完整的程序代码。
1. 定义结构体
首先,我们需要定义一个结构体来表示一个座位的状态:
```
typedef struct {
int row; // 行
int col; // 列
int status; // 0 表示未售出,1 表示已售出
} Seat;
```
然后,我们需要定义一个结构体来表示一辆火车的座位状态:
```
typedef struct {
Seat seats[20][5]; // 20 行 5 列,总共 100 个座位
int soldCount; // 已售出的座位数量
} Train;
```
2. 初始化火车座位状态
我们可以定义一个函数来初始化火车座位的状态:
```
void initTrain(Train *train) {
int i, j;
for (i = 0; i < 20; i++) {
for (j = 0; j < 5; j++) {
train->seats[i][j].row = i + 1;
train->seats[i][j].col = j + 1;
train->seats[i][j].status = 0;
}
}
train->soldCount = 0;
}
```
3. 查询座位状态
我们可以定义一个函数来查询指定位置的座位状态:
```
int getSeatStatus(Train *train, int row, int col) {
return train->seats[row - 1][col - 1].status;
}
```
4. 售出座位
我们可以定义一个函数来售出指定位置的座位:
```
int sellSeat(Train *train, int row, int col) {
if (train->seats[row - 1][col - 1].status == 1) {
// 座位已售出
return 0;
}
train->seats[row - 1][col - 1].status = 1;
train->soldCount++;
return 1;
}
```
5. 显示座位状态
我们可以定义一个函数来显示火车的座位状态:
```
void showTrainStatus(Train *train) {
int i, j;
for (i = 0; i < 20; i++) {
for (j = 0; j < 5; j++) {
printf("%d ", train->seats[i][j].status);
}
printf("\n");
}
}
```
6. 主函数
最后,我们可以定义一个主函数来测试我们的火车购票系统:
```
int main() {
Train train;
initTrain(&train);
sellSeat(&train, 3, 2);
sellSeat(&train, 3, 3);
showTrainStatus(&train);
return 0;
}
```
这个主函数会初始化一辆火车,然后售出第 3 行第 2 列和第 3 行第 3 列的座位,最后显示火车的座位状态。