用C语言做自习室座位预约程序设计代码要求选择更加多样
时间: 2024-02-01 14:04:07 浏览: 105
好的,下面是一个比较完整的自习室座位预约程序设计代码,包括了预约、取消预约、查询座位状态三个功能,并且加入了一些异常处理和用户输入的检查:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define SEAT_COUNT 50 // 座位总数
#define TIME_LENGTH 20 // 预约时间字符串长度
// 座位结构体,记录座位号、状态和预约时间
typedef struct {
int seat_no;
int is_reserved;
char reserve_time[TIME_LENGTH];
} Seat;
// 初始化座位数组
void init_seats(Seat *seats, int count) {
int i;
for (i = 0; i < count; i++) {
seats[i].seat_no = i + 1;
seats[i].is_reserved = 0;
strcpy(seats[i].reserve_time, "");
}
}
// 输出所有座位状态
void print_seats(Seat *seats, int count) {
int i;
printf("座位状态如下:\n");
for (i = 0; i < count; i++) {
printf("座位 %d: ", seats[i].seat_no);
if (seats[i].is_reserved) {
printf("已被预约,预约时间为 %s\n", seats[i].reserve_time);
} else {
printf("未被预约\n");
}
}
}
// 预约座位
void reserve_seat(Seat *seats, int count) {
int seat_no;
char reserve_time[TIME_LENGTH];
time_t now;
struct tm *tm_now;
int i;
// 获取当前时间
now = time(NULL);
tm_now = localtime(&now);
// 输入座位号和预约时间
printf("请输入预约的座位号(1-%d):", count);
scanf("%d", &seat_no);
if (seat_no < 1 || seat_no > count) {
printf("输入的座位号无效,请重新输入!\n");
return;
}
if (seats[seat_no - 1].is_reserved) {
printf("该座位已被预约,请重新输入!\n");
return;
}
printf("请输入预约时间(如 2022-01-01 09:00):");
scanf("%s", reserve_time);
if (strlen(reserve_time) != TIME_LENGTH - 1) {
printf("输入的预约时间格式不正确,请重新输入!\n");
return;
}
// 预约成功,更新座位状态
seats[seat_no - 1].is_reserved = 1;
strcpy(seats[seat_no - 1].reserve_time, reserve_time);
printf("预约成功!\n");
}
// 取消预约
void cancel_reservation(Seat *seats, int count) {
int seat_no;
int i;
// 输入座位号
printf("请输入要取消预约的座位号(1-%d):", count);
scanf("%d", &seat_no);
if (seat_no < 1 || seat_no > count) {
printf("输入的座位号无效,请重新输入!\n");
return;
}
if (!seats[seat_no - 1].is_reserved) {
printf("该座位未被预约,无法取消预约!\n");
return;
}
// 取消预约成功,更新座位状态
seats[seat_no - 1].is_reserved = 0;
strcpy(seats[seat_no - 1].reserve_time, "");
printf("取消预约成功!\n");
}
// 查询座位状态
void query_seat(Seat *seats, int count) {
int seat_no;
int i;
// 输入座位号
printf("请输入要查询的座位号(1-%d):", count);
scanf("%d", &seat_no);
if (seat_no < 1 || seat_no > count) {
printf("输入的座位号无效,请重新输入!\n");
return;
}
// 输出座位状态
printf("座位 %d: ", seat_no);
if (seats[seat_no - 1].is_reserved) {
printf("已被预约,预约时间为 %s\n", seats[seat_no - 1].reserve_time);
} else {
printf("未被预约\n");
}
}
// 主函数
int main() {
Seat seats[SEAT_COUNT];
int choice;
init_seats(seats, SEAT_COUNT);
while (1) {
printf("=============================================\n");
printf("欢迎使用自习室座位预约系统!请选择您的操作:\n");
printf("1. 预约座位\n");
printf("2. 取消预约\n");
printf("3. 查询座位状态\n");
printf("4. 输出所有座位状态\n");
printf("5. 退出系统\n");
printf("=============================================\n");
printf("请选择(1-5):");
scanf("%d", &choice);
switch (choice) {
case 1:
reserve_seat(seats, SEAT_COUNT);
break;
case 2:
cancel_reservation(seats, SEAT_COUNT);
break;
case 3:
query_seat(seats, SEAT_COUNT);
break;
case 4:
print_seats(seats, SEAT_COUNT);
break;
case 5:
printf("感谢使用自习室座位预约系统!\n");
return 0;
default:
printf("输入的选项无效,请重新输入!\n");
break;
}
}
return 0;
}
```
这个程序实现了预约、取消预约、查询座位状态等功能,并且加入了一些异常处理和用户输入的检查,可以有效防止输入错误导致的程序异常。
阅读全文