写一个C语言的学生宿舍管理系统
时间: 2024-03-23 09:38:30 浏览: 54
一个用C语言写的学生管理系统
好的,下面是一个简单的学生宿舍管理系统的C语言代码示例:
```c
#include <stdio.h>
#include <string.h>
#define MAX_STUDENTS 100 // 最大学生数
#define MAX_NAME_LEN 20 // 姓名最大长度
#define MAX_ROOMS 50 // 最大房间数
#define MAX_ROOM_NAME_LEN 10 // 房间名最大长度
// 学生结构体
typedef struct Student {
char name[MAX_NAME_LEN]; // 姓名
int age; // 年龄
char gender; // 性别
char room[MAX_ROOM_NAME_LEN]; // 所在房间名
} Student;
// 宿舍房间结构体
typedef struct Room {
char name[MAX_ROOM_NAME_LEN]; // 房间名
int capacity; // 房间容量
int student_count; // 房间内学生数
Student students[MAX_STUDENTS]; // 房间内学生数组
} Room;
// 全局变量
Room rooms[MAX_ROOMS]; // 房间数组
int room_count = 0; // 房间数
// 函数声明
void add_room();
void add_student();
void list_rooms();
void list_students(char *room_name);
int main() {
int choice;
while (1) {
printf("\n-----------------------------------\n");
printf("学生宿舍管理系统\n");
printf("1. 添加房间\n");
printf("2. 添加学生\n");
printf("3. 列出所有房间\n");
printf("4. 列出指定房间内所有学生\n");
printf("0. 退出\n");
printf("-----------------------------------\n");
printf("请输入你的选择:");
scanf("%d", &choice);
switch (choice) {
case 1:
add_room();
break;
case 2:
add_student();
break;
case 3:
list_rooms();
break;
case 4:
printf("请输入房间名:");
char room_name[MAX_ROOM_NAME_LEN];
scanf("%s", room_name);
list_students(room_name);
break;
case 0:
printf("欢迎再次使用学生宿舍管理系统!\n");
return 0;
default:
printf("无效的选择,请重新输入!\n");
break;
}
}
return 0;
}
// 添加房间
void add_room() {
if (room_count >= MAX_ROOMS) {
printf("已达到最大房间数,无法添加新的房间!\n");
return;
}
printf("请输入房间名:");
scanf("%s", rooms[room_count].name);
printf("请输入房间容量:");
scanf("%d", &rooms[room_count].capacity);
rooms[room_count].student_count = 0;
printf("房间添加成功!\n");
room_count++;
}
// 添加学生
void add_student() {
if (room_count == 0) {
printf("还没有添加任何房间,请先添加房间!\n");
return;
}
char room_name[MAX_ROOM_NAME_LEN];
printf("请输入学生所在房间名:");
scanf("%s", room_name);
// 查找房间
int i;
for (i = 0; i < room_count; i++) {
if (strcmp(room_name, rooms[i].name) == 0) {
// 房间存在,添加学生
if (rooms[i].student_count >= rooms[i].capacity) {
printf("房间 %s 已满,无法添加新的学生!\n", room_name);
return;
}
Student *student = &rooms[i].students[rooms[i].student_count];
printf("请输入学生姓名:");
scanf("%s", student->name);
printf("请输入学生年龄:");
scanf("%d", &student->age);
printf("请输入学生性别(M/F):");
scanf(" %c", &student->gender);
strcpy(student->room, room_name);
rooms[i].student_count++;
printf("学生添加成功!\n");
return;
}
}
// 房间不存在
printf("房间 %s 不存在,请重新输入!\n", room_name);
}
// 列出所有房间
void list_rooms() {
if (room_count == 0) {
printf("还没有添加任何房间!\n");
return;
}
printf("所有房间信息如下:\n");
int i;
for (i = 0; i < room_count; i++) {
printf("房间名:%s,容量:%d,已住人数:%d\n",
rooms[i].name, rooms[i].capacity, rooms[i].student_count);
}
}
// 列出指定房间内所有学生
void list_students(char *room_name) {
// 查找房间
int i;
for (i = 0; i < room_count; i++) {
if (strcmp(room_name, rooms[i].name) == 0) {
// 房间存在,列出学生
printf("房间 %s 内的所有学生信息如下:\n", room_name);
int j;
for (j = 0; j < rooms[i].student_count; j++) {
Student *student = &rooms[i].students[j];
printf("姓名:%s,年龄:%d,性别:%c,所在房间:%s\n",
student->name, student->age, student->gender, student->room);
}
return;
}
}
// 房间不存在
printf("房间 %s 不存在,请重新输入!\n", room_name);
}
```
这个程序实现了以下功能:
1. 添加房间
2. 添加学生到指定房间
3. 列出所有房间
4. 列出指定房间内所有学生
注意,这只是一个简单的示例程序,可能还有很多需要完善的地方。如果你需要一个更完整、更复杂的学生宿舍管理系统,建议参考一些开源项目或者自己设计实现。
阅读全文