用c语言写宿舍管理系统1. 要求是可以根据学生学号找到学生宿舍号 2.能给宿舍添加学生,达到六人之后会显示宿舍已满提供空宿舍编号 3.能够提供换宿舍服务 能查找到某个班级第学生在哪些宿舍3. 字段显示包括学生,姓名,专业,班级,宿舍号等
时间: 2024-03-16 10:44:21 浏览: 14
好的,这是一个比较复杂的系统,需要设计多个模块和数据结构。以下是一个初步的设计方案,供参考:
1. 学生结构体
```
typedef struct {
char id[10]; // 学号
char name[20]; // 姓名
char major[20]; // 专业
char class[10]; // 班级
int dormitory; // 宿舍号
} Student;
```
2. 宿舍结构体
```
typedef struct {
int number; // 宿舍号
int students[6]; // 学生学号
int count; // 当前学生数
} Dormitory;
```
3. 查找学生宿舍号
可以使用一个数组来存储所有学生信息,通过遍历数组,查找到对应学号的学生,然后返回其宿舍号。
4. 添加学生到宿舍
先查找空宿舍编号,再将学生添加到对应的宿舍中。如果宿舍已满,则返回提示信息。
5. 换宿舍服务
遍历所有宿舍,查找包含指定学生学号的宿舍,然后将该学生从原宿舍中删除,再将其添加到目标宿舍中。
6. 查找班级学生宿舍
遍历所有宿舍,查找包含指定班级学生的宿舍,然后返回该宿舍的信息。
以上是一个简单的宿舍管理系统的设计方案,具体的实现细节需要根据实际情况进行调整和完善。同时,使用C语言编写该系统需要掌握基本的语法和数据结构知识,建议先学习相关的教程和书籍。
相关问题
用c语言写宿舍管理系统1.要求是可以根据学生学号找到学生宿舍号 2.能给宿舍添加学生,达到六人之后会显示宿舍已满提供空宿舍编号 3.能够提供换宿舍服务 能查找到某个班级第学生在哪些宿舍3.字段显示包括学生,姓名,专业,班级,宿舍号等,整个源代码发出来
好的,以下是一个简单的用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;
}
```
由于这个系统比较复杂,代码量也比较多,建议先理解每个函数的作用和原理,然后再逐步调试和完善。
用C语言写一个宿舍管理系统,要求有 1.可以根据学生学号找到学生宿舍号 2.能给宿舍添加学生,达到六人之后会显示宿舍已满提供空宿舍编号 能够提供换宿舍服务3. 能查找到某个班级第学生在哪些宿舍 4.字段显示包括学生,姓名,专业,班级,宿舍号等,把源代码发出来,使用大一的知识。
以下是一份简单的宿舍管理系统的 C 语言代码,实现了您的需求:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENT_NUM 100 // 学生最大数量
#define MAX_DORM_NUM 20 // 宿舍最大数量
#define MAX_STUDENT_PER_DORM 6 // 每个宿舍最多学生数量
// 学生结构体
typedef struct {
char id[20]; // 学号
char name[20]; // 姓名
char major[20]; // 专业
char class[20]; // 班级
char dorm[10]; // 宿舍号
} Student;
// 宿舍结构体
typedef struct {
char id[10]; // 宿舍号
int count; // 当前宿舍中学生数量
Student students[MAX_STUDENT_PER_DORM]; // 宿舍中的学生列表
} Dorm;
// 学生数组和宿舍数组
Student students[MAX_STUDENT_NUM];
Dorm dorms[MAX_DORM_NUM];
// 学生数量和宿舍数量
int studentCount = 0;
int dormCount = 0;
// 根据学号查找学生,返回学生在数组中的下标,找不到返回 -1
int findStudent(const char* id) {
for (int i = 0; i < studentCount; i++) {
if (strcmp(students[i].id, id) == 0) {
return i;
}
}
return -1;
}
// 根据宿舍号查找宿舍,返回宿舍在数组中的下标,找不到返回 -1
int findDorm(const char* id) {
for (int i = 0; i < dormCount; i++) {
if (strcmp(dorms[i].id, id) == 0) {
return i;
}
}
return -1;
}
// 添加学生到宿舍中,如果宿舍已满则返回空宿舍号
const char* addStudentToDorm(Student student) {
Dorm* targetDorm = NULL;
for (int i = 0; i < dormCount; i++) {
if (dorms[i].count < MAX_STUDENT_PER_DORM) {
targetDorm = &dorms[i];
break;
}
}
if (targetDorm == NULL) {
return "No empty dorm available.";
}
strcpy(student.dorm, targetDorm->id);
targetDorm->students[targetDorm->count++] = student;
return targetDorm->id;
}
// 换宿舍,将指定学生从原宿舍中删除,添加到目标宿舍中
void changeDorm(Student student, const char* targetDorm) {
int oldDormIndex = findDorm(student.dorm);
int newDormIndex = findDorm(targetDorm);
if (oldDormIndex == -1 || newDormIndex == -1) {
printf("Invalid input.\n");
return;
}
Dorm* oldDorm = &dorms[oldDormIndex];
Dorm* newDorm = &dorms[newDormIndex];
for (int i = 0; i < oldDorm->count; i++) {
if (strcmp(oldDorm->students[i].id, student.id) == 0) {
oldDorm->count--;
newDorm->students[newDorm->count++] = oldDorm->students[i];
oldDorm->students[i] = oldDorm->students[oldDorm->count];
break;
}
}
}
// 查找指定班级的学生所在的宿舍
void findDormsByClass(const char* className) {
printf("Dorms for class %s:\n", className);
for (int i = 0; i < dormCount; i++) {
for (int j = 0; j < dorms[i].count; j++) {
if (strcmp(dorms[i].students[j].class, className) == 0) {
printf("%s - %s\n", dorms[i].id, dorms[i].students[j].name);
}
}
}
}
// 显示学生信息
void printStudent(Student student) {
printf("%s\t%s\t%s\t%s\t%s\n", student.id, student.name, student.major, student.class, student.dorm);
}
// 显示宿舍信息
void printDorm(Dorm dorm) {
printf("Dorm %s:\n", dorm.id);
printf("ID\tName\tMajor\tClass\tDorm\n");
for (int i = 0; i < dorm.count; i++) {
printStudent(dorm.students[i]);
}
}
// 显示所有学生信息
void listStudents() {
printf("All students:\n");
printf("ID\tName\tMajor\tClass\tDorm\n");
for (int i = 0; i < studentCount; i++) {
printStudent(students[i]);
}
}
// 显示所有宿舍信息
void listDorms() {
printf("All dorms:\n");
for (int i = 0; i < dormCount; i++) {
printDorm(dorms[i]);
printf("\n");
}
}
// 主函数,提供菜单选项,接收用户输入,调用相应的函数
int main() {
int choice = 0;
do {
printf("Welcome to Dormitory Management System.\n");
printf("1. Add student to dorm.\n");
printf("2. Change dorm for student.\n");
printf("3. Find dorms for class.\n");
printf("4. List all students.\n");
printf("5. List all dorms.\n");
printf("0. Exit.\n");
printf("Please enter your choice: ");
scanf("%d", &choice);
switch (choice) {
case 1: {
Student student;
printf("Please enter student ID: ");
scanf("%s", student.id);
printf("Please enter student name: ");
scanf("%s", student.name);
printf("Please enter student major: ");
scanf("%s", student.major);
printf("Please enter student class: ");
scanf("%s", student.class);
const char* dormId = addStudentToDorm(student);
printf("Added student to dorm %s.\n", dormId);
break;
}
case 2: {
Student student;
printf("Please enter student ID: ");
scanf("%s", student.id);
printf("Please enter target dorm ID: ");
char targetDorm[10];
scanf("%s", targetDorm);
changeDorm(student, targetDorm);
break;
}
case 3: {
char className[20];
printf("Please enter class name: ");
scanf("%s", className);
findDormsByClass(className);
break;
}
case 4: {
listStudents();
break;
}
case 5: {
listDorms();
break;
}
case 0: {
printf("Goodbye.\n");
break;
}
default: {
printf("Invalid input.\n");
break;
}
}
} while (choice != 0);
return 0;
}
```
在上述代码中,我们定义了学生结构体和宿舍结构体,以及相应的数组和计数器。然后,我们实现了一些函数,如 `findStudent`、`findDorm`、`addStudentToDorm`、`changeDorm`、`findDormsByClass`、`printStudent`、`printDorm`、`listStudents` 和 `listDorms` 等函数。最后,在主函数中,我们提供了菜单选项,接收用户输入,调用相应的函数来实现宿舍管理系统的各项功能。
请注意,以上代码只是一个简单的示例,还有很多细节问题需要注意,例如数据输入和输出的方式、错误处理、数据存储方式等等。因此,您需要根据具体情况进行适当的修改和完善。