#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX_DORMS 100
#define MAX_STUDENTS 100
typedef struct {
int id;
char name[50];
} Student;
typedef struct {
int id;
Student students[MAX_STUDENTS];
int student_count;
} Dorm;
Dorm dorms[MAX_DORMS];
int dorm_count = 0;
//添加宿舍信息
void add_dorm() {
Dorm new_dorm;
printf("请输入宿舍ID:");
scanf("%d", &new_dorm.id);
new_dorm.student_count = 0;
dorms[dorm_count++] = new_dorm;
printf("宿舍添加成功!\n");
}
//查询宿舍信息
void query_dorm() {
int id;
printf("请输入要查询的宿舍ID:");
scanf("%d", &id);
for (int i = 0; i < dorm_count; i++) {
if (dorms[i].id == id) {
printf("宿舍ID:%d\t", dorms[i].id);
printf("学生数量:%d\n", dorms[i].student_count);
break;
}
}
}
//分配宿舍
void assign_dorm() {
int student_id, dorm_id;
char name;
printf("请输入学生ID:");
scanf("%d", &student_id);
printf("请输入学生姓名:");
scanf("%s",&name);
printf("请输入宿舍ID:");
scanf("%d", &dorm_id);
for (int i = 0; i < dorm_count; i++) {
if (dorms[i].id == dorm_id) {
if (dorms[i].student_count >= 6) {
printf("该宿舍已满6人,无法分配!\n");
return;
}
for (int j = 0; j < dorms[i].student_count; j++) {
if (dorms[i].students[j].id == student_id) {
printf("该学生已分配到其他宿舍!\n");
return;
}
}
dorms[i].student_count++;
dorms[i].students[dorms[i].student_count] = dorms[i].students[student_id];
dorms[i].students[dorms[i].student_count].id=student_id;
dorms[i].students[dorms[i].student_count].name[50]=name;
printf("学生分配成功!\n");
return;
}
}
printf("未找到该宿舍!\n");
}
//查询学生住宿情况
void query_student_dorm() {
int student_id;
printf("请输入要查询的学生ID:");
scanf("%d", &student_id);
for (int i = 0; i < dorm_count; i++) {
for (int j = 0; j < dorms[i].student_count; j++) {
if (dorms[i].students[j].id == student_id) {
printf("学生ID:%d\t", dorms[i].students[j].id);
printf("学生姓名:%s\t", dorms[i].students[j].name);
printf("宿舍ID:%d", dorms[i].id);
return;
}
}
}
printf("未找到该学生!\n");
}
//删除学生
void delete_dorm() {
int student_id;
printf("请输入要删除的学生ID:");
scanf("%d", &student_id);
for (int i = 0; i < dorm_count; i++){
for (int j = 0; j < dorms[i].student_count; j++) {
if (dorms[i].students[j].id == student_id){
for (int k = j; k < dorms[i].student_count-1; ++k) {
dorms[i].students[k]=dorms[i].students[k+1];
}
dorms[i].student_count--;
printf("学生删除成功!\n");
return;
}
}
printf("该学生不存在");
return;
}
}
//修改学生住宿情况
void modify_student_dorm() {
int student_id, dorm_id;
printf("请输入要修改的学生ID:");
scanf("%d", &student_id);
printf("请输入要修改为的宿舍ID:");
scanf("%d", &dorm_id);
for (int i = 0; i < dorm_count; i++) {
for (int j = 0; j < dorms[i].student_count; j++) {
if (dorms[i].students[j].id == student_id) {
for (int k = 0; k < dorm_count; k++) {
if (dorms[k].id == dorm_id) {
dorms[i].students[j] = dorms[k].students[student_id];
printf("学生住宿情况修改成功!\n");
return;
}
}
printf("未找到该宿舍!\n");
return;
}
}
}
printf("未找到该学生!\n");
}
int main() {
int choice;
while (1) {
printf("\t\t学生宿舍管理系统\n");
printf("1. 添加宿舍信息\t\t");
printf("2. 查询宿舍信息\t\t");
printf("3. 分配宿舍\n");
printf("4. 查询学生住宿情况\t");
printf("5. 修改学生住宿情况\t");
printf("6.删除学生信息\n");
printf("7. 退出程序\n");
printf("请输入您的选择:");
scanf("%d", &choice);
switch (choice) {
case (1):
add_dorm();
break;
case (2):
query_dorm();
break;
case (3):
assign_dorm();
break;
case (4):
query_student_dorm();
break;
case (5):
modify_student_dorm();
break;
case (6):
delete_dorm();
break;
case (7):
exit(0);
default:
printf("无效的选择,请重新输入。");
}
}
return 0;
}
为什么查询学生住宿信息姓名是乱码
怎么修改assign_dorm模块,可以一次输入多个学生