#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义常量表示长度
#define LENGTH 30
// 定义结构体用于存储班次信息
struct BusSchedule {
int busNumber; // 班次号
char departureTime[10]; // 发车时间
char startingPoint[50]; // 起点站
char endPoint[50]; // 终点站
float travelTime; // 行车时间(小时)
int capacity; // 额定载量
int bookedSeats; // 已订票人数
};
// 声明一个公有的结构体数组用于存储数据
struct BusSchedule busSchedules[LENGTH];
// 声明一个公有的变量表示数组中数据的个数
int len = 0;
// 将结构体数组中的数据保存到文件
void setBusScheduleToFile() {
int i;
FILE *file = fopen("BusSchedule.csv", "w");
if (file != NULL) {
for (i = 0; i < len; i++) {
fprintf(file, "%d,%s,%s,%s,%.2f,%d,%d\n",
busSchedules[i].busNumber,
busSchedules[i].departureTime,
busSchedules[i].startingPoint,
busSchedules[i].endPoint,
busSchedules[i].travelTime,
busSchedules[i].capacity,
busSchedules[i].bookedSeats);
}
fclose(file);
} else {
printf("错误,无法打开数据文件!.\n");
}
}
// 从文件中读取数据到结构体数组
void getBusScheduleFromFile() {
FILE *file = fopen("BusSchedule.csv", "r");
if (file != NULL) {
while (fscanf(file,"%d,%9[^,],%49[^,],%49[^,],%f,%d,%d[^\n]\n",
&busSchedules[len].busNumber,
busSchedules[len].departureTime,
busSchedules[len].startingPoint,
busSchedules[len].endPoint,
&busSchedules[len].travelTime,
&busSchedules[len].capacity,
&busSchedules[len].bookedSeats) == 7) {
len++;
}
fclose(file);
} else {
// 文件不存在,创建文件
FILE *newFile = fopen("BusSchedule.csv", "w");
if (newFile != NULL) {
fclose(newFile);
} else {
printf("无法创建新文件.\n");
}
}
}
// 函数声明
void displayMenu();//打印菜单
void getInput();//输入
void displayData();//显示
void insertData();//插入
void deleteData();//删除
void modifyData();//修改
void searchData();//查找
void sortData();//统计
int main() {
int choice;
char c;
getBusScheduleFromFile();//读取文件数据
do {
// 显示菜单
displayMenu();
// 获取用户选择
printf("请输入选项:");
scanf("%d", &choice);
c=getchar();
// 根据用户选择执行相应的操作
switch (choice) {
case 1:getInput();break;
case 2:displayData();break;
case 3:insertData();break;
case 4:deleteData();break;
case 5:modifyData();break;
case 6:searchData();break;
case 7:sortData();break;
case 0:printf("程序已退出.\n");break;
default:printf("无效的选项,请重新输入.\n");break;
}
system("pause");
setBusScheduleToFile();
} while (choice != 0);
return 0;
}
// 显示菜单
void displayMenu() {
system("cls");
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");
printf("========================================\n");
}
// 验证时间格式是否正确
int isValidTimeFormat(const char *timeString) {
int hours=0, minutes=0;
// 使用sscanf拆分时间字符串并验证
if (sscanf(timeString, "%d:%d", &hours, &minutes) == 2) {
// 验证小时部分(0-23)
if (hours < 0 || hours > 23) {
printf("错误,日期格式有误!\n");
return 0;
}
// 验证分钟部分(00-59)
if (minutes < 0 || minutes > 59) {
printf("错误,日期格式有误!\n");
return 0;
}
}else{
printf("错误,日期格式有误!\n");
return 0;
}
return 1;
}
// 1.获取输入并添加数据到结构体数组
void getInput() {
int count,i=0,j=0,flag=0;
char depart[10]="",c;//临时存储时间
// 获取要添加的班次信息的条数
printf("请输入要添加的班次信息条数:");
scanf("%d", &count);
c=getchar();
// 输入信息
for (i = 0; i < count; i++) {
printf("请输入第%d条班次信息:\n", i + 1);
// 验证班次编号是否唯一
do{
flag=0;
printf("班次号: ");
scanf("%d", &busSchedules[len + i].busNumber);
c=getchar();
for (j = 0; j < len; j++) {
if (busSchedules[j].busNumber == busSchedules[len + i].busNumber) {
printf("班次编号重复,请重新输入!\n");
flag=1;
break;
}
}
}while(flag);
//验证时间格式
do{
flag=0;
//获取输入
printf("发车时间(例如8:00,使用英文冒号): ");
fgets(depart, 10, stdin);
// 移除换行符
depart[strcspn(depart, "\n")] = '\0';
}while(!isValidTimeFormat(depart));
//保存验证成功的字符串
strcpy(busSchedules[len + i].departureTime,depart);
printf("起点站: ");
scanf("%s", busSchedules[len + i].startingPoint);
printf("终点站: ");
scanf("%s", busSchedules[len + i].endPoint);
printf("行车时间(小时): ");
scanf("%f", &busSchedules[len + i].travelTime);
c=getchar();
// 额定载量和已订票人数初始化为0
busSchedules[len + i].capacity = 0;
busSchedules[len + i].bookedSeats = 0;
printf("额定载量: ");
scanf("%d", &busSchedules[len + i].capacity);
c=getchar();
// 验证已定票数不得大于额定数量
do {
printf("已订票人数: ");
scanf("%d", &busSchedules[len + i].bookedSeats);
c=getchar();
if (busSchedules[len + i].bookedSeats > busSchedules[len + i].capacity) {
printf("已订票人数不得大于额定载量,请重新输入.\n");
}
} while (busSchedules[len + i].bookedSeats > busSchedules[len + i].capacity);
}
// 更新数组长度
len += count;
printf("%d条班次信息已成功添加到数组末尾.\n", count);
}
// 2.显示数据的功能
void displayData() {
int i=0;
// 打印表头
printf("-------------------------------------------------------------------------------------------------\n");
printf("| %-10s | %-10s | %-10s | %-10s | %-10s | %-10s | %-15s |\n",
"班次号", "发车时间", "起点站", "终点站", "行车时间", "额定载量", "已订票人数");
printf("-------------------------------------------------------------------------------------------------\n");
// 打印数据
for (i = 0; i < len; i++) {
printf("| %-10d | %-10s | %-10s | %-10s | %-10.2f | %-10d | %-15d |\n",
busSchedules[i].busNumber, busSchedules[i].departureTime,
busSchedules[i].startingPoint, busSchedules[i].endPoint,
busSchedules[i].travelTime, busSchedules[i].capacity,
busSchedules[i].bookedSeats);
}
// 打印表尾
printf("-------------------------------------------------------------------------------------------------\n");
}
// 3.在指定班次编号后插入n条数据
void insertData() {
int position, count,i=0,j=0,flag=0;
int duplicate = 0;
char depart[10]="",c;//临时存储时间
// 获取插入位置和条数
printf("请输入插入位置(1-%d):", len);
scanf("%d", &position);
c=getchar();
printf("请输入要插入的班次信息条数:");
scanf("%d", &count);
c=getchar();
// 验证插入位置是否有效
if (position < 1 || position > len + 1) {
没有合适的资源?快使用搜索试试~ 我知道了~
C语言期末:车票管理系统
共93个文件
tlog:71个
pdb:2个
manifest:2个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 1 下载量 26 浏览量
2024-03-11
10:49:29
上传
评论
收藏 815KB RAR 举报
温馨提示
题目描述: 一车站每天有n个发车班次,每个班次都有一班次号(1、 2、3...n),固定的发车时间,固定的路线(起始站、终点站),大致的行车时间,固定的额定载客量。 功能要求: (1)输入功能:可以一次完成若干条班次记录的输入。 (2)显示功能:完成全部班次记录的显示。 (3)插入功能:插入一条或多条班次记录。 (4)删除功能:按照班次号删除指定记录。 (5)修改功能:按照班次号修改指定记录。 (6)查找功能:按时间区间或者终点站查找相关班次记录,并显. 示。 (7)排序功能:按额定数量大小进行排序。
资源推荐
资源详情
资源评论
收起资源包目录
车票管理系统.rar (93个子文件)
车票管理系统
车票管理系统.suo 10KB
车票管理系统.sln 926B
车票管理系统
test.c 18KB
车票管理系统.vcxproj 4KB
车票管理系统.vcxproj.user 143B
车票管理系统.vcxproj.filters 940B
BusSchedule.csv 89B
Debug
link.2064-cvtres.read.1.tlog 2B
link.18232-cvtres.read.1.tlog 2B
link.16652.read.1.tlog 2B
test.obj 57KB
link.416.read.1.tlog 2B
link.9260.read.1.tlog 2B
link.16804-cvtres.read.1.tlog 2B
link.15492-cvtres.write.1.tlog 2B
CL.write.1.tlog 218B
link.16804-cvtres.write.1.tlog 2B
link.16652-cvtres.write.1.tlog 2B
link.15492-cvtres.read.1.tlog 2B
rc.command.1.tlog 446B
车票管理系统.vcxprojResolveAssemblyReference.cache 713B
rc.write.1.tlog 218B
车票管理系统.write.1.tlog 0B
link.4904-cvtres.write.1.tlog 2B
link.4904.read.1.tlog 2B
link.4904-cvtres.read.1.tlog 2B
link.15576.read.1.tlog 2B
link.5708.read.1.tlog 2B
mt.command.1.tlog 344B
link.16804.read.1.tlog 2B
link.17568.read.1.tlog 2B
link.2064.read.1.tlog 2B
mt.read.1.tlog 238B
rc.read.1.tlog 210B
车票管理系统.exe.embed.manifest 406B
vc100.idb 35KB
link.2064.write.1.tlog 2B
link.15576.write.1.tlog 2B
link.5708-cvtres.write.1.tlog 2B
link.18232.write.1.tlog 2B
link.9260-cvtres.write.1.tlog 2B
link.8592-cvtres.write.1.tlog 2B
link.15492.write.1.tlog 2B
link.18232-cvtres.write.1.tlog 2B
link.15576-cvtres.read.1.tlog 2B
link.15576-cvtres.write.1.tlog 2B
link.6384.read.1.tlog 2B
vc100.pdb 60KB
link.18232.read.1.tlog 2B
link.15492.read.1.tlog 2B
link.11232-cvtres.write.1.tlog 2B
车票管理系统.log 2KB
link.17568-cvtres.write.1.tlog 2B
link.6384-cvtres.read.1.tlog 2B
link.command.1.tlog 1KB
link.17568.write.1.tlog 2B
link.9260-cvtres.read.1.tlog 2B
link.416-cvtres.write.1.tlog 2B
link.17568-cvtres.read.1.tlog 2B
link.8592.write.1.tlog 2B
link.2064-cvtres.write.1.tlog 2B
link-cvtres.read.1.tlog 2B
link.11232.write.1.tlog 2B
link.11232-cvtres.read.1.tlog 2B
link.5708-cvtres.read.1.tlog 2B
link.6384-cvtres.write.1.tlog 2B
link.416.write.1.tlog 2B
link.read.1.tlog 2KB
cl.command.1.tlog 566B
link.write.1.tlog 518B
车票管理系统.exe.intermediate.manifest 381B
link.16652.write.1.tlog 2B
车票管理系统_manifest.rc 202B
link.4904.write.1.tlog 2B
车票管理系统.lastbuildstate 62B
link.9260.write.1.tlog 2B
link-cvtres.write.1.tlog 2B
link.16804.write.1.tlog 2B
mt.write.1.tlog 238B
link.16652-cvtres.read.1.tlog 2B
车票管理系统.exe.embed.manifest.res 472B
link.8592.read.1.tlog 2B
link.8592-cvtres.read.1.tlog 2B
link.6384.write.1.tlog 2B
link.416-cvtres.read.1.tlog 2B
link.5708.write.1.tlog 2B
CL.read.1.tlog 970B
link.11232.read.1.tlog 2B
ipch
车票管理系统-84a366d3
车票管理系统-549f81db.ipch 2.13MB
车票管理系统.sdf 2.14MB
Debug
车票管理系统.pdb 459KB
车票管理系统.exe 42KB
车票管理系统.ilk 420KB
共 93 条
- 1
资源评论
- 陆2322024-04-28感谢大佬分享的资源,对我启发很大,给了我新的灵感。
a辰龙a
- 粉丝: 2793
- 资源: 59
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功