用c语言写宿舍管理系统1.要求是可以根据学生学号找到学生宿舍号 2.能给宿舍添加学生,达到六人之后会显示宿舍已满提供空宿舍编号 3.能够提供换宿舍服务 能查找到某个班级第学生在哪些宿舍3.字段显示包括学生,姓名,专业,班级,宿舍号等,整个源代码发出来
时间: 2024-03-16 22:44:23 浏览: 58
好的,以下是一个简单的用C语言实现的宿舍管理系统的源代码,供参考:
```c
#include <stdio.h>
#include <string.h>
// 学生结构体
typedef struct {
char id[10]; // 学号
char name[20]; // 姓名
char major[20]; // 专业
char class[10]; // 班级
int dormitory; // 宿舍号
} Student;
// 宿舍结构体
typedef struct {
int number; // 宿舍号
int students[6]; // 学生学号
int count; // 当前学生数
} Dormitory;
// 学生信息数组
Student students[100];
int studentCount = 0;
// 宿舍数组
Dormitory dormitories[20];
int dormitoryCount = 0;
// 查找学生宿舍号
int findStudentDormitory(char id[]) {
int i;
for (i = 0; i < dormitoryCount; i++) {
int j;
for (j = 0; j < dormitories[i].count; j++) {
if (strcmp(id, students[dormitories[i].students[j]].id) == 0) {
return dormitories[i].number;
}
}
}
return -1;
}
// 查找空宿舍编号
int findEmptyDormitory() {
int i;
for (i = 0; i < dormitoryCount; i++) {
if (dormitories[i].count < 6) {
return dormitories[i].number;
}
}
return -1;
}
// 添加学生到宿舍
void addStudentToDormitory(char id[], int dormitory) {
int i;
for (i = 0; i < dormitoryCount; i++) {
if (dormitories[i].number == dormitory) {
if (dormitories[i].count >= 6) {
printf("宿舍已满,请选择其他宿舍。\n");
return;
}
dormitories[i].students[dormitories[i].count] = studentCount;
students[studentCount].dormitory = dormitory;
strcpy(students[studentCount].id, id);
printf("请输入学生姓名:");
scanf("%s", students[studentCount].name);
printf("请输入学生专业:");
scanf("%s", students[studentCount].major);
printf("请输入学生班级:");
scanf("%s", students[studentCount].class);
dormitories[i].count++;
studentCount++;
printf("添加成功。\n");
return;
}
}
printf("宿舍不存在,请重新输入。\n");
}
// 换宿舍服务
void changeDormitory(char id[], int dormitory) {
int i;
for (i = 0; i < dormitoryCount; i++) {
int j;
for (j = 0; j < dormitories[i].count; j++) {
if (strcmp(id, students[dormitories[i].students[j]].id) == 0) {
if (dormitories[i].number == dormitory) {
printf("学生已在该宿舍中,请重新输入。\n");
return;
}
if (dormitories[dormitory - 1].count >= 6) {
printf("目标宿舍已满,请选择其他宿舍。\n");
return;
}
int k;
for (k = 0; k < dormitories[i].count; k++) {
if (dormitories[i].students[k] == studentCount - 1) {
dormitories[i].students[k] = dormitories[i].students[dormitories[i].count - 1];
break;
}
}
dormitories[i].count--;
dormitories[dormitory - 1].students[dormitories[dormitory - 1].count] = studentCount - 1;
students[studentCount - 1].dormitory = dormitory;
printf("换宿舍成功。\n");
return;
}
}
}
printf("学生不存在,请重新输入。\n");
}
// 查找班级学生宿舍
void findClassDormitories(char class[]) {
int i;
for (i = 0; i < dormitoryCount; i++) {
int j;
for (j = 0; j < dormitories[i].count; j++) {
if (strcmp(class, students[dormitories[i].students[j]].class) == 0) {
printf("宿舍号:%d,学生学号:", dormitories[i].number);
int k;
for (k = 0; k < dormitories[i].count; k++) {
printf("%s ", students[dormitories[i].students[k]].id);
}
printf("\n");
}
}
}
}
// 主函数
int main() {
int choice;
do {
printf("宿舍管理系统\n");
printf("1. 查找学生宿舍号\n");
printf("2. 添加学生到宿舍\n");
printf("3. 换宿舍服务\n");
printf("4. 查找班级学生宿舍\n");
printf("5. 退出系统\n");
printf("请选择操作(输入数字):");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("请输入学生学号:");
char id[10];
scanf("%s", id);
int dormitory = findStudentDormitory(id);
if (dormitory == -1) {
printf("学生不存在或未分配宿舍。\n");
} else {
printf("学生宿舍号:%d\n", dormitory);
}
break;
case 2:
printf("请输入学生学号:");
char id2[10];
scanf("%s", id2);
printf("请选择宿舍号:");
int dormitory2;
scanf("%d", &dormitory2);
addStudentToDormitory(id2, dormitory2);
break;
case 3:
printf("请输入学生学号:");
char id3[10];
scanf("%s", id3);
printf("请输入目标宿舍号:");
int dormitory3;
scanf("%d", &dormitory3);
changeDormitory(id3, dormitory3);
break;
case 4:
printf("请输入班级名称:");
char class[10];
scanf("%s", class);
findClassDormitories(class);
break;
case 5:
printf("感谢使用宿舍管理系统,再见!\n");
break;
default:
printf("无效操作,请重新输入。\n");
}
} while (choice != 5);
return 0;
}
```
由于这个系统比较复杂,代码量也比较多,建议先理解每个函数的作用和原理,然后再逐步调试和完善。
阅读全文