长途客车管理系统
功能:
(1)每一条记录包括一个长途客车的编号、车牌号、司机、联系方式、运输路线,最大载客量等。
(2)输入功能:可以一次完成若干条记录的输入。(3)显示功能:完成长途客车记录的显示。
(4)查找功能:按长途客车编号查找长途客车的相关记录,并显示。(5)修改功能:按长途客车编号修改长途客车信息。(6)删除功能:按长途客车编号删除长途客车信息。(7)实现长途客车信息的保存和读取。
(8)应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观!
要求: (1)用C语言实现系统;
(2)利用结构体数组实现长途客车信息的数据结构设计;(3)系统具有增加、插入、修改、删除、浏览等基本功能;(4)系统的各个功能模块要求用函数的形式实现;
根据需求,我们可以设计如下的长途客车信息结构体:
#define MAX_ROUTE_LEN 100
typedef struct BusInfo {
int id;
char plateNum[10];
char driver[20];
char phone[20];
char route[MAX_ROUTE_LEN];
int maxCapacity;
} BusInfo;
接下来,我们可以定义一个结构体数组,用于存储系统中所有的长途客车信息:
#define MAX_BUS_NUM 1000
BusInfo busInfo[MAX_BUS_NUM]; // 存储所有长途客车信息的数组
int busCount = 0; // 已有的长途客车数量
下面是一个基于控制台界面的长途客车管理系统的示例 C 代码,实现了增删改查等基本功能:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_ROUTE_LEN 100
#define MAX_BUS_NUM 1000
typedef struct BusInfo {
int id;
char plateNum[10];
char driver[20];
char phone[20];
char route[MAX_ROUTE_LEN];
int maxCapacity;
} BusInfo;
BusInfo busInfo[MAX_BUS_NUM];
int busCount = 0;
void inputBusInfo() { // 输入新的长途客车信息
int n; // 输入数量
printf("请输入要添加的长途客车数量:");
scanf("%d", &n);
while (n--) {
BusInfo info;
printf("请输入长途客车编号:");
scanf("%d", &info.id);
printf("请输入车牌号:");
scanf("%s", info.plateNum);
printf("请输入司机姓名:");
scanf("%s", info.driver);
printf("请输入联系方式:");
scanf("%s", info.phone);
printf("请输入运输路线:");
scanf("%s", info.route);
printf("请输入最大载客量:");
scanf("%d", &info.maxCapacity);
busInfo[busCount++] = info; // 添加到数组中
}
printf("%d 辆长途客车信息添加成功!\n", busCount);
}
void showBusInfo() { // 显示已有长途客车信息
if (busCount == 0) {
printf("当前无任何长途客车信息!\n");
return;
}
printf("当前长途客车信息如下:\n");
printf("编号\t车牌号\t司机姓名\t联系方式\t运输路线\t最大载客量\n");
for (int i = 0; i < busCount; i++) {
BusInfo info = busInfo[i];
printf("%d\t%s\t%s\t%s\t%s\t%d\n", info.id, info.plateNum, info.driver, info.phone, info.route, info.maxCapacity);
}
}
void searchBusInfo() { // 查找长途客车信息
int id;
printf("请输入要查找的长途客车编号:");
scanf("%d", &id);
for (int i = 0; i < busCount; i++) {
if (busInfo[i].id == id) {
BusInfo info = busInfo[i];
printf("长途客车信息如下:\n");
printf("编号\t车牌号\t司机姓名\t联系方式\t运输路线\t最大载客量\n");
printf("%d\t%s\t%s\t%s\t%s\t%d\n", info.id, info.plateNum, info.driver, info.phone, info.route, info.maxCapacity);
return;
}
}
printf("未找到编号为 %d 的长途客车信息!\n", id);
}
void updateBusInfo() { // 更新长途客车信息
int id;
printf("请输入要更新的长途客车编号:");
scanf("%d", &id);
for (int i = 0; i < busCount; i++) {
if (busInfo[i].id == id) {
BusInfo info;
printf("请输入新的车牌号(原:%s):", busInfo[i].plateNum);
scanf("%s", info.plateNum);
printf("请输入新的司机姓名(原:%s):",busInfo[i].driver);
scanf("%s", info.driver);
printf("请输入新的联系方式(原:%s):", busInfo[i].phone);
scanf("%s", info.phone);
printf("请输入新的运输路线(原:%s):", busInfo[i].route);
scanf("%s", info.route);
printf("请输入新的最大载客量(原:%d):", busInfo[i].maxCapacity);
scanf("%d", &info.maxCapacity);
busInfo[i] = info;
printf("长途客车信息更新成功!\n");
return;
}
}
printf("未找到编号为 %d 的长途客车信息!\n", id);
}
void deleteBusInfo() { // 删除长途客车信息
int id;
printf("请输入要删除的长途客车编号:");
scanf("%d", &id);
for (int i = 0; i < busCount; i++) {
if (busInfo[i].id == id) {
for (int j = i + 1; j < busCount; j++) {
busInfo[j-1] = busInfo[j]; // 将后面的元素依次往前移动
}
busCount--;
printf("长途客车信息删除成功!\n");
return;
}
}
printf("未找到编号为 %d 的长途客车信息!\n", id);
}
void saveToFile() { // 将长途客车信息保存到文件
if (busCount == 0) {
printf("当前无任何长途客车信息,无法保存到文件!\n");
return;
}
FILE *fp = fopen("businfo.txt", "w"); // 打开文件
if (fp == NULL) {
printf("无法打开文件 businfo.txt 保存长途客车信息!\n");
return;
}
for (int i = 0; i < busCount; i++) {
BusInfo info = busInfo[i];
fprintf(fp, "%d %s %s %s %s %d\n", info.id, info.plateNum, info.driver, info.phone, info.route, info.maxCapacity);
}
fclose(fp);
printf("长途客车信息已保存到文件 businfo.txt 中!\n");
}
void loadFromFile() { // 从文件中读取长途客车信息
FILE *fp = fopen("businfo.txt", "r"); // 打开文件
if (fp == NULL) {
printf("无法打开文件 businfo.txt 读取长途客车信息!\n");
return;
}
int count = 0;
while (count < MAX_BUS_NUM && !feof(fp)) {
BusInfo info;
fscanf(fp, "%d %s %s %s %s %d\n", &info.id, info.plateNum, info.driver, info.phone, info.route, &info.maxCapacity);
busInfo[count++] = info;
}
busCount = count;
fclose(fp);
printf("从文件 businfo.txt 中读取了 %d 条长途客车信息!\n", busCount);
}
void showMenu() { // 显示主菜单
printf("\n");
printf("=====欢迎使用长途客车管理系统!=====\n");
printf("1. 添加长途客车信息\n");
printf("2. 显示长途客车信息\n");
printf("3. 查找长途客车信息\n");
printf("4. 更新长途客车信息\n");
printf("5. 删除长途客车信息\n");
printf("6. 从文件中读取长途客车信息\n");
printf("7. 将长途客车信息保存到文件\n");
printf("0. 退出系统\n");
}
int main() {
while (1) {
showMenu();
int op;
printf("\n请选择操作:");
scanf("%d", &op);
printf("\n");
switch (op) {
case 1:
inputBusInfo();
break;
case 2:
showBusInfo();
break;
case 3:
searchBusInfo();
break;
case 4:
updateBusInfo();
break;
case 5:
deleteBusInfo();
break;
case 6:
loadFromFile();
break;
case 7:
saveToFile();
break;
case 0:
printf("欢迎下次使用长途客车管理系统!\n");
return 0;
default:
printf("无效操作,请重新选择!\n");
break;
}
}
return 0;
}
以上代码实现了基本功能,但是仅仅是一个控制台程序,界面不够友好,可以自行考虑使用