用c语言设计简易车票信息管理系统,源代码
时间: 2025-06-10 16:23:00 浏览: 11
### C语言实现车票信息管理系统的源代码
以下是一个简易的车票信息管理系统,基于引用内容[^2]和[^3]提供的思路进行扩展和完善。系统功能包括输入车票信息、显示车票信息、根据班次号查询、根据终点站查询、订票和退票等。
#### 1. 结构体定义
```c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct time {
int hour;
int minutes;
};
struct ticket {
int carnumber; // 车次
struct time setout; // 出发时间
char beginpoint[20]; // 起点站
char endpoint[20]; // 终点站
float lasttime; // 行车时间(小时)
int fixnumber; // 额定载量
int fixednumber; // 已订票人数
};
```
#### 2. 全局变量声明
```c
struct ticket car[100]; // 存储车票信息的数组
int carnum = 0; // 当前车票记录数
```
#### 3. 功能函数实现
##### (1) 输入车票信息
```c
void InputMessage() {
if (carnum >= 100) {
printf("车票信息已满!\n");
return;
}
printf("请输入第%d辆车的信息:\n", carnum + 1);
printf("车次:");
scanf("%d", &car[carnum].carnumber);
printf("出发时间(时 分):");
scanf("%d %d", &car[carnum].setout.hour, &car[carnum].setout.minutes);
printf("起点站:");
scanf("%s", car[carnum].beginpoint);
printf("终点站:");
scanf("%s", car[carnum].endpoint);
printf("行车时间(小时):");
scanf("%f", &car[carnum].lasttime);
printf("额定载量:");
scanf("%d", &car[carnum].fixnumber);
car[carnum].fixednumber = 0; // 初始化已订票人数为0
carnum++;
printf("车票信息录入成功!\n");
}
```
##### (2) 显示车票信息
```c
void ShowMessage() {
if (carnum == 0) {
printf("暂无车票信息!\n");
return;
}
printf("车次\t出发时间\t起点站\t终点站\t行车时间\t额定载量\t已订票人数\n");
for (int i = 0; i < carnum; i++) {
printf("%d\t%02d:%02d\t%s\t%s\t%.1f\t%d\t%d\n",
car[i].carnumber,
car[i].setout.hour, car[i].setout.minutes,
car[i].beginpoint, car[i].endpoint,
car[i].lasttime, car[i].fixnumber, car[i].fixednumber);
}
}
```
##### (3) 根据班次号查询
```c
int searchbynumber() {
int number;
printf("请输入要查询的班次号:");
scanf("%d", &number);
for (int i = 0; i < carnum; i++) {
if (car[i].carnumber == number) {
printf("车次\t出发时间\t起点站\t终点站\t行车时间\t额定载量\t已订票人数\n");
printf("%d\t%02d:%02d\t%s\t%s\t%.1f\t%d\t%d\n",
car[i].carnumber,
car[i].setout.hour, car[i].setout.minutes,
car[i].beginpoint, car[i].endpoint,
car[i].lasttime, car[i].fixnumber, car[i].fixednumber);
return 1;
}
}
printf("未找到该班次号的车票信息!\n");
return 0;
}
```
##### (4) 根据终点站查询
```c
int searchbyaddress() {
char address[20];
printf("请输入要查询的终点站:");
scanf("%s", address);
int found = 0;
for (int i = 0; i < carnum; i++) {
if (strcmp(car[i].endpoint, address) == 0) {
printf("车次\t出发时间\t起点站\t终点站\t行车时间\t额定载量\t已订票人数\n");
printf("%d\t%02d:%02d\t%s\t%s\t%.1f\t%d\t%d\n",
car[i].carnumber,
car[i].setout.hour, car[i].setout.minutes,
car[i].beginpoint, car[i].endpoint,
car[i].lasttime, car[i].fixnumber, car[i].fixednumber);
found = 1;
}
}
if (!found) {
printf("未找到到达该终点站的车票信息!\n");
}
return found;
}
```
##### (5) 订票功能
```c
int TicketOrder() {
int number;
printf("请输入要订票的班次号:");
scanf("%d", &number);
for (int i = 0; i < carnum; i++) {
if (car[i].carnumber == number) {
if (car[i].fixednumber < car[i].fixnumber) {
car[i].fixednumber++;
printf("订票成功!当前已订票人数:%d\n", car[i].fixednumber);
return 1;
} else {
printf("该班次车票已售罄!\n");
return 0;
}
}
}
printf("未找到该班次号的车票信息!\n");
return 0;
}
```
##### (6) 退票功能
```c
int TicketDelete() {
int number;
printf("请输入要退票的班次号:");
scanf("%d", &number);
for (int i = 0; i < carnum; i++) {
if (car[i].carnumber == number) {
if (car[i].fixednumber > 0) {
car[i].fixednumber--;
printf("退票成功!当前已订票人数:%d\n", car[i].fixednumber);
return 1;
} else {
printf("该班次无已订票记录!\n");
return 0;
}
}
}
printf("未找到该班次号的车票信息!\n");
return 0;
}
```
#### 4. 主函数
```c
void menu() {
printf("\n=== 车票信息管理系统 ===\n");
printf("1. 输入车票信息\n");
printf("2. 显示车票信息\n");
printf("3. 根据班次号查询\n");
printf("4. 根据终点站查询\n");
printf("5. 订票\n");
printf("6. 退票\n");
printf("0. 退出系统\n");
printf("=====================\n");
}
int main() {
int choice;
while (1) {
menu();
printf("请选择操作:");
scanf("%d", &choice);
switch (choice) {
case 1:
InputMessage();
break;
case 2:
ShowMessage();
break;
case 3:
searchbynumber();
break;
case 4:
searchbyaddress();
break;
case 5:
TicketOrder();
break;
case 6:
TicketDelete();
break;
case 0:
printf("退出系统!\n");
return 0;
default:
printf("无效选项,请重新选择!\n");
}
}
return 0;
}
```
---
阅读全文