c语言编写一个学生图书管占座系统
时间: 2024-02-17 20:00:48 浏览: 28
好的,我可以给您提供一个简单的学生图书馆占座系统的C语言实现,如下所示:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 50
// 学生结构体
struct student {
char name[MAX];
int id;
int seat_number;
int is_reserved;
};
// 图书馆座位结构体
struct seat {
int number;
int is_reserved;
};
// 初始化座位
void init_seats(struct seat seats[], int n) {
for (int i = 0; i < n; i++) {
seats[i].number = i + 1;
seats[i].is_reserved = 0;
}
}
// 显示座位状态
void show_seats(struct seat seats[], int n) {
printf("座位状态:\n");
for (int i = 0; i < n; i++) {
printf("%d号座位: %s\n", seats[i].number, seats[i].is_reserved ? "已被预定" : "未被预定");
}
}
// 查找学生
int find_student(struct student students[], int n, int id) {
for (int i = 0; i < n; i++) {
if (students[i].id == id) {
return i;
}
}
return -1;
}
// 预定座位
void reserve_seat(struct student students[], int n, struct seat seats[], int m) {
int id;
printf("请输入您的学号:");
scanf("%d", &id);
int idx = find_student(students, n, id);
if (idx == -1) {
printf("未找到该学生!\n");
return;
}
if (students[idx].is_reserved) {
printf("您已经预定了座位!\n");
return;
}
int seat_number;
printf("请输入您要预定的座位号:");
scanf("%d", &seat_number);
if (seat_number < 1 || seat_number > m) {
printf("座位号输入有误!\n");
return;
}
if (seats[seat_number-1].is_reserved) {
printf("该座位已经被预定了!\n");
return;
}
students[idx].seat_number = seat_number;
students[idx].is_reserved = 1;
seats[seat_number-1].is_reserved = 1;
printf("预定成功!\n");
}
// 取消预定
void cancel_reservation(struct student students[], int n, struct seat seats[], int m) {
int id;
printf("请输入您的学号:");
scanf("%d", &id);
int idx = find_student(students, n, id);
if (idx == -1) {
printf("未找到该学生!\n");
return;
}
if (!students[idx].is_reserved) {
printf("您还没有预定座位!\n");
return;
}
int seat_number = students[idx].seat_number;
students[idx].is_reserved = 0;
students[idx].seat_number = 0;
seats[seat_number-1].is_reserved = 0;
printf("取消预定成功!\n");
}
// 显示菜单
void show_menu() {
printf("\n\n");
printf("1. 预定座位\n");
printf("2. 取消预定\n");
printf("3. 显示座位状态\n");
printf("4. 退出\n");
printf("\n\n");
}
int main() {
printf("欢迎使用学生图书馆占座系统!\n");
int n;
printf("请输入学生人数:");
scanf("%d", &n);
struct student students[n];
for (int i = 0; i < n; i++) {
printf("请输入第%d个学生的姓名和学号:", i+1);
scanf("%s %d", students[i].name, &students[i].id);
students[i].seat_number = 0;
students[i].is_reserved = 0;
}
int m;
printf("请输入座位数量:");
scanf("%d", &m);
struct seat seats[m];
init_seats(seats, m);
int choice;
do {
show_menu();
printf("请输入您的选择:");
scanf("%d", &choice);
switch(choice) {
case 1:
reserve_seat(students, n, seats, m);
break;
case 2:
cancel_reservation(students, n, seats, m);
break;
case 3:
show_seats(seats, m);
break;
case 4:
printf("谢谢使用,再见!\n");
break;
default:
printf("输入有误,请重新输入!\n");
break;
}
} while(choice != 4);
return 0;
}
```
以上代码实现了一个简单的学生图书馆占座系统,包括了预定座位、取消预定、显示座位状态等功能。用户可以根据自己的需要进行修改和扩展。