火车售票系统C语言实现
时间: 2023-05-21 16:01:38 浏览: 83
火车售票系统的C语言实现需要考虑以下几个方面:
1. 数据结构:需要定义车次、座位、乘客等数据结构,以便于存储和管理数据。
2. 界面设计:需要设计用户界面,包括菜单、输入输出等,以便于用户进行操作。
3. 数据库管理:需要使用文件或数据库等方式存储数据,以便于查询和修改。
4. 逻辑处理:需要编写相应的算法和逻辑,实现售票、退票、查询等功能。
以下是一个简单的火车售票系统的C语言实现示例:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_TRAIN_NUM 100
#define MAX_SEAT_NUM 100
typedef struct {
char train_num[10];
int seat_num[MAX_SEAT_NUM];
int seat_count;
} Train;
Train trains[MAX_TRAIN_NUM];
int train_count = 0;
void add_train() {
Train train;
printf("请输入车次号:");
scanf("%s", train.train_num);
printf("请输入座位数:");
scanf("%d", &train.seat_count);
for (int i = 0; i < train.seat_count; i++) {
train.seat_num[i] = i + 1;
}
trains[train_count++] = train;
printf("添加成功!\n");
}
void sell_ticket() {
char train_num[10];
int seat_num;
printf("请输入车次号:");
scanf("%s", train_num);
for (int i = 0; i < train_count; i++) {
if (strcmp(trains[i].train_num, train_num) == 0) {
printf("请输入座位号:");
scanf("%d", &seat_num);
if (seat_num < 1 || seat_num > trains[i].seat_count) {
printf("座位号无效!\n");
return;
}
if (trains[i].seat_num[seat_num - 1] == 0) {
printf("该座位已售出!\n");
return;
}
trains[i].seat_num[seat_num - 1] = 0;
printf("售票成功!\n");
return;
}
}
printf("车次号无效!\n");
}
void refund_ticket() {
char train_num[10];
int seat_num;
printf("请输入车次号:");
scanf("%s", train_num);
for (int i = 0; i < train_count; i++) {
if (strcmp(trains[i].train_num, train_num) == 0) {
printf("请输入座位号:");
scanf("%d", &seat_num);
if (seat_num < 1 || seat_num > trains[i].seat_count) {
printf("座位号无效!\n");
return;
}
if (trains[i].seat_num[seat_num - 1] == 1) {
printf("该座位未售出!\n");
return;
}
trains[i].seat_num[seat_num - 1] = seat_num;
printf("退票成功!\n");
return;
}
}
printf("车次号无效!\n");
}
void query_train() {
char train_num[10];
printf("请输入车次号:");
scanf("%s", train_num);
for (int i = 0; i < train_count; i++) {
if (strcmp(trains[i].train_num, train_num) == 0) {
printf("车次号:%s\n", trains[i].train_num);
printf("座位数:%d\n", trains[i].seat_count);
printf("已售座位:");
for (int j = 0; j < trains[i].seat_count; j++) {
if (trains[i].seat_num[j] == 0) {
printf("%d ", j + 1);
}
}
printf("\n");
return;
}
}
printf("车次号无效!\n");
}
void menu() {
printf("1. 添加车次\n");
printf("2. 售票\n");
printf("3. 退票\n");
printf("4. 查询车次\n");
printf("5. 退出\n");
}
int main() {
int choice;
while (1) {
menu();
printf("请输入选项:");
scanf("%d", &choice);
switch (choice) {
case 1:
add_train();
break;
case 2:
sell_ticket();
break;
case 3:
refund_ticket();
break;
case 4:
query_train();
break;
case 5:
exit(0);
default:
printf("选项无效!\n");
break;
}
}
return 0;
}