c语言宿舍管理系统代码结构体数组

时间: 2023-10-12 18:18:03 浏览: 39
以下是一个基本的宿舍管理系统的C语言代码,使用结构体数组来存储学生信息和宿舍房间信息: ```c #include <stdio.h> struct Student { char name[20]; int age; char gender; char major[20]; }; struct Room { int roomNumber; int capacity; struct Student students[4]; }; int main() { struct Room rooms[10]; // 有10个宿舍房间 // 初始化每个宿舍房间 for (int i = 0; i < 10; i++) { rooms[i].roomNumber = i+1; rooms[i].capacity = 4; for (int j = 0; j < 4; j++) { struct Student s = {"", 0, ' ', ""}; rooms[i].students[j] = s; } } // 添加学生到宿舍房间 struct Student s1 = {"Tom", 18, 'M', "Computer Science"}; rooms[0].students[0] = s1; struct Student s2 = {"Jerry", 19, 'M', "Mathematics"}; rooms[0].students[1] = s2; struct Student s3 = {"Alice", 20, 'F', "Physics"}; rooms[1].students[0] = s3; // 打印宿舍房间信息 for (int i = 0; i < 10; i++) { printf("Room %d, capacity: %d\n", rooms[i].roomNumber, rooms[i].capacity); for (int j = 0; j < 4; j++) { struct Student s = rooms[i].students[j]; if (s.name[0] != '\0') { printf("Student %d: %s, %d, %c, %s\n", j+1, s.name, s.age, s.gender, s.major); } } } return 0; } ``` 这个程序定义了两个结构体 `Student` 和 `Room`,其中 `Student` 用于存储学生信息,`Room` 用于存储宿舍房间信息。每个 `Room` 结构体中包含一个结构体数组 `students`,用于存储该宿舍房间的学生信息。 在 `main` 函数中,我们定义了一个包含10个 `Room` 结构体的数组 `rooms`,并初始化每个宿舍房间的信息。然后,我们向其中几个宿舍房间添加了一些学生信息,最后打印了每个宿舍房间的信息。 你可以根据自己的需要修改这个程序,并添加其他功能来实现一个完整的宿舍管理系统。

相关推荐

很抱歉,我不能直接提供完整的代码,因为宿舍管理系统可能有不同的具体需求和实现方式。但是,我可以给出一个通用的框架供您参考: c #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_STUDENTS 50 #define MAX_NAME_LENGTH 50 typedef struct { char name[MAX_NAME_LENGTH]; int id; int room_number; } Student; void add_student(Student students[], int *num_students); void remove_student(Student students[], int *num_students); void display_students(Student students[], int num_students); int main() { Student students[MAX_STUDENTS]; int num_students = 0; int choice; while (1) { printf("1. Add student\n"); printf("2. Remove student\n"); printf("3. Display students\n"); printf("4. Exit\n"); printf("Enter your choice: "); scanf("%d", &choice); switch (choice) { case 1: add_student(students, &num_students); break; case 2: remove_student(students, &num_students); break; case 3: display_students(students, num_students); break; case 4: exit(0); default: printf("Invalid choice\n"); } } return 0; } void add_student(Student students[], int *num_students) { if (*num_students == MAX_STUDENTS) { printf("Error: maximum number of students reached\n"); return; } Student s; printf("Enter student name: "); scanf("%s", s.name); printf("Enter student ID: "); scanf("%d", &s.id); printf("Enter room number: "); scanf("%d", &s.room_number); students[*num_students] = s; (*num_students)++; printf("Student added successfully\n"); } void remove_student(Student students[], int *num_students) { int id; printf("Enter student ID to remove: "); scanf("%d", &id); int i; for (i = 0; i < *num_students; i++) { if (students[i].id == id) { (*num_students)--; students[i] = students[*num_students]; printf("Student removed successfully\n"); return; } } printf("Error: student not found\n"); } void display_students(Student students[], int num_students) { int i; printf("Students:\n"); for (i = 0; i < num_students; i++) { printf("%s (ID: %d, Room: %d)\n", students[i].name, students[i].id, students[i].room_number); } } 这个代码框架包括了添加、删除和显示学生信息的函数,并且使用一个 Student 结构体数组来存储学生信息。您可以根据自己的需求进行更改和扩展。
抱歉,我不能提供完整的可运行代码。但是,我可以给你提供一些思路和代码片段,帮助你开始编写代码。 首先,我们需要定义学生和宿舍两个结构体: c #define NAME_LEN 20 #define ROOM_NUM 200 struct student { char name[NAME_LEN]; int id; int room; }; struct dormitory { int num; int capacity; struct student *students; }; 然后,我们需要编写一些函数来管理宿舍和学生,例如添加学生、删除学生、添加宿舍、删除宿舍等: c void add_student(struct student *students, int *num_students, char *name, int id, int room) { // 添加一个学生到学生数组中 } void remove_student(struct student *students, int *num_students, int id) { // 通过学生 ID 从学生数组中删除学生 } void add_dormitory(struct dormitory *dorms, int *num_dorms, int capacity) { // 添加一个新的宿舍到宿舍数组中 } void remove_dormitory(struct dormitory *dorms, int *num_dorms, int num) { // 通过宿舍号从宿舍数组中删除一个宿舍 } 最后,我们需要编写主函数来驱动整个程序。你可以在主函数中使用以上函数来添加、删除学生和宿舍,还可以编写其他的函数来实现其他的功能,例如修改学生信息、查询宿舍信息等等: c int main() { struct student students[100]; struct dormitory dorms[ROOM_NUM]; int num_students = 0; int num_dorms = 0; // 添加学生和宿舍 add_student(students, &num_students, "张三", 1001, 101); add_student(students, &num_students, "李四", 1002, 102); add_dormitory(dorms, &num_dorms, 2); // 删除学生和宿舍 remove_student(students, &num_students, 1001); remove_dormitory(dorms, &num_dorms, 101); return 0; } 这只是一个简单的示例。你可以根据实际需求编写更多的函数和代码来实现你的学生宿舍管理系统。
C语言宿舍缴费管理系统可以通过结构体数组来实现宿舍信息的数据结构设计,并利用文件来存储宿舍水电信息。以下是一个简单的示例代码: c #include <stdio.h> #include <stdlib.h> #define MAX_STUDENTS 100 // 学生结构体 typedef struct { char name[20]; int roomNumber; float fee; } Student; // 学生数组 Student students[MAX_STUDENTS]; int numStudents = 0; // 添加学生信息 void addStudent() { if (numStudents >= MAX_STUDENTS) { printf("已达到最大学生数量!\n"); return; } printf("请输入学生姓名:"); scanf("%s", students[numStudents].name); printf("请输入学生房间号:"); scanf("%d", &students[numStudents].roomNumber); printf("请输入学生缴费金额:"); scanf("%f", &students[numStudents].fee); numStudents++; printf("学生信息添加成功!\n"); } // 查询学生信息 void queryStudent() { char name[20]; printf("请输入要查询的学生姓名:"); scanf("%s", name); for (int i = 0; i < numStudents; i++) { if (strcmp(students[i].name, name) == 0) { printf("学生姓名:%s\n", students[i].name); printf("学生房间号:%d\n", students[i].roomNumber); printf("学生缴费金额:%.2f\n", students[i].fee); return; } } printf("未找到该学生信息!\n"); } // 修改学生信息 void modifyStudent() { char name[20]; printf("请输入要修改的学生姓名:"); scanf("%s", name); for (int i = 0; i < numStudents; i++) { if (strcmp(students[i].name, name) == 0) { printf("请输入学生新的房间号:"); scanf("%d", &students[i].roomNumber); printf("请输入学生新的缴费金额:"); scanf("%f", &students[i].fee); printf("学生信息修改成功!\n"); return; } } printf("未找到该学生信息!\n"); } // 删除学生信息 void deleteStudent() { char name[20]; printf("请输入要删除的学生姓名:"); scanf("%s", name); for (int i = 0; i < numStudents; i++) { if (strcmp(students[i].name, name) == 0) { for (int j = i; j < numStudents - 1; j++) { students[j] = students[j + 1]; } numStudents--; printf("学生信息删除成功!\n"); return; } } printf("未找到该学生信息!\n"); } // 显示所有学生信息 void displayStudents() { if (numStudents == 0) { printf("暂无学生信息!\n"); return; } printf("学生信息如下:\n"); for (int i = 0; i < numStudents; i++) { printf("学生姓名:%s\n", students[i].name); printf("学生房间号:%d\n", students[i].roomNumber); printf("学生缴费金额:%.2f\n", students[i].fee); printf("--\n"); } } int main() { int choice; while (1) { printf("欢迎使用宿舍缴费管理系统!\n"); printf("1. 添加学生信息\n"); printf("2. 查询学生信息\n"); printf("3. 修改学生信息\n"); printf("4. 删除学生信息\n"); printf("5. 显示所有学生信息\n"); printf("0. 退出系统\n"); printf("请输入您的选择:"); scanf("%d", &choice); switch (choice) { case 1: addStudent(); break; case 2: queryStudent(); break; case 3: modifyStudent(); break; case 4: deleteStudent(); break; case 5: displayStudents(); break; case 0: printf("感谢使用宿舍缴费管理系统,再见!\n"); exit(0); default: printf("无效的选择,请重新输入!\n"); break; } } return 0; }
以下是一个简单的学生宿舍管理系统的C语言代码示例,包括学生信息的录入、查询和修改功能: c #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_STUDENT_NUM 100 // 最大学生数 #define MAX_NAME_LEN 20 // 姓名最大长度 #define MAX_DEPT_LEN 20 // 院系名称最大长度 #define MAX_ROOM_NUM 100 // 最大宿舍数 // 学生结构体 typedef struct { int id; // 学号 char name[MAX_NAME_LEN]; // 姓名 char dept[MAX_DEPT_LEN]; // 院系名称 int room_num; // 宿舍号 char check_in_time[20]; // 入住时间 } Student; // 学生数组 Student students[MAX_STUDENT_NUM]; int student_count = 0; // 学生数 // 宿舍数组 int rooms[MAX_ROOM_NUM]; int room_count = 0; // 宿舍数 // 添加学生信息 void add_student() { if (student_count >= MAX_STUDENT_NUM) { printf("学生数已达到最大值,无法添加!\n"); return; } Student student; printf("请输入学生信息:\n"); printf("学号:"); scanf("%d", &student.id); printf("姓名:"); scanf("%s", student.name); printf("院系名称:"); scanf("%s", student.dept); printf("宿舍号:"); scanf("%d", &student.room_num); printf("入住时间:"); scanf("%s", student.check_in_time); students[student_count++] = student; printf("添加成功!\n"); } // 查询学生信息 void query_student() { int id; printf("请输入要查询的学生学号:"); scanf("%d", &id); for (int i = 0; i < student_count; i++) { if (students[i].id == id) { printf("学号:%d\n", students[i].id); printf("姓名:%s\n", students[i].name); printf("院系名称:%s\n", students[i].dept); printf("宿舍号:%d\n", students[i].room_num); printf("入住时间:%s\n", students[i].check_in_time); return; } } printf("未找到该学生!\n"); } // 修改学生信息 void modify_student() { int id; printf("请输入要修改的学生学号:"); scanf("%d", &id); for (int i = 0; i < student_count; i++) { if (students[i].id == id) { printf("请输入修改后的学生信息:\n"); printf("学号:"); scanf("%d", &students[i].id); printf("姓名:"); scanf("%s", students[i].name); printf("院系名称:"); scanf("%s", students[i].dept); printf("宿舍号:"); scanf("%d", &students[i].room_num); printf("入住时间:"); scanf("%s", students[i].check_in_time); printf("修改成功!\n"); return; } } printf("未找到该学生!\n"); } // 添加宿舍 void add_room() { if (room_count >= MAX_ROOM_NUM) { printf("宿舍数已达到最大值,无法添加!\n"); return; } int room_num; printf("请输入宿舍号:"); scanf("%d", &room_num); rooms[room_count++] = room_num; printf("添加成功!\n"); } // 查询宿舍 void query_room() { int room_num; printf("请输入要查询的宿舍号:"); scanf("%d", &room_num); for (int i = 0; i < room_count; i++) { if (rooms[i] == room_num) { printf("宿舍号:%d\n", rooms[i]); printf("住宿人员:\n"); for (int j = 0; j < student_count; j++) { if (students[j].room_num == room_num) { printf("%d %s %s %s\n", students[j].id, students[j].name, students[j].dept, students[j].check_in_time); } } return; } } printf("未找到该宿舍!\n"); } int main() { int choice; while (1) { printf("请选择操作:\n"); printf("1. 添加学生信息\n"); printf("2. 查询学生信息\n"); printf("3. 修改学生信息\n"); printf("4. 添加宿舍\n"); printf("5. 查询宿舍\n"); printf("6. 退出\n"); scanf("%d", &choice); switch (choice) { case 1: add_student(); break; case 2: query_student(); break; case 3: modify_student(); break; case 4: add_room(); break; case 5: query_room(); break; case 6: exit(0); default: printf("无效的操作!\n"); break; } } return 0; }
宿舍管理系统是一个比较复杂的系统,需要设计多个模块,包括学生信息管理、宿舍楼信息管理、宿舍房间信息管理、宿舍住宿情况管理、宿舍卫生情况管理等等。 在C语言中,可以使用结构体来定义学生信息、宿舍楼信息、宿舍房间信息等数据类型,同时也需要使用文件读写来进行数据的持久化存储。下面是一个简单宿舍管理系统的代码示例,供参考: c #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_STUDENT_NUM 1000 #define MAX_BUILDING_NUM 20 #define MAX_ROOM_NUM 100 // 学生信息结构体 typedef struct { char name[20]; // 姓名 char sex; // 性别:M-男,F-女 char id[20]; // 学号 int building; // 所在宿舍楼 int room; // 所在宿舍房间 } Student; // 宿舍楼信息结构体 typedef struct { int id; // 宿舍楼编号 char name[20]; // 宿舍楼名称 int floor_num; // 层数 int room_num_per_floor; // 每层房间数 } Building; // 宿舍房间信息结构体 typedef struct { int building; // 所在宿舍楼 int room; // 房间号 char type[10]; // 房间类型:single-单人间,double-双人间 int capacity; // 房间容纳人数 } Room; // 全局变量 Student students[MAX_STUDENT_NUM]; // 学生信息数组 Building buildings[MAX_BUILDING_NUM]; // 宿舍楼信息数组 Room rooms[MAX_BUILDING_NUM][MAX_ROOM_NUM]; // 宿舍房间信息数组 int student_num = 0; // 学生总数 int building_num = 0; // 宿舍楼总数 int room_num[MAX_BUILDING_NUM] = {0}; // 每个宿舍楼的房间总数 // 读取学生信息 void read_students() { FILE *fp = fopen("students.txt", "r"); if (fp == NULL) { printf("File students.txt not found.\n"); return; } while (fscanf(fp, "%s %c %s %d %d", students[student_num].name, &students[student_num].sex, students[student_num].id, &students[student_num].building, &students[student_num].room) != EOF) { student_num++; } fclose(fp); } // 保存学生信息 void save_students() { FILE *fp = fopen("students.txt", "w"); if (fp == NULL) { printf("Failed to open file students.txt.\n"); return; } for (int i = 0; i < student_num; i++) { fprintf(fp, "%s %c %s %d %d\n", students[i].name, students[i].sex, students[i].id, students[i].building, students[i].room); } fclose(fp); } // 读取宿舍楼信息 void read_buildings() { FILE *fp = fopen("buildings.txt", "r"); if (fp == NULL) { printf("File buildings.txt not found.\n"); return; } while (fscanf(fp, "%d %s %d %d", &buildings[building_num].id, buildings[building_num].name, &buildings[building_num].floor_num, &buildings[building_num].room_num_per_floor) != EOF) { building_num++; } fclose(fp); } // 保存宿舍楼信息 void save_buildings() { FILE *fp = fopen("buildings.txt", "w"); if (fp == NULL) { printf("Failed to open file buildings.txt.\n"); return; } for (int i = 0; i < building_num; i++) { fprintf(fp, "%d %s %d %d\n", buildings[i].id, buildings[i].name, buildings[i].floor_num, buildings[i].room_num_per_floor); } fclose(fp); } // 读取宿舍房间信息 void read_rooms() { FILE *fp = fopen("rooms.txt", "r"); if (fp == NULL) { printf("File rooms.txt not found.\n"); return; } int building_id, room_id; char room_type[10]; int room_capacity; while (fscanf(fp, "%d %d %s %d", &building_id, &room_id, room_type, &room_capacity) != EOF) { Room *room = &rooms[building_id][room_id]; room->building = building_id; room->room = room_id; strcpy(room->type, room_type); room->capacity = room_capacity; room_num[building_id]++; } fclose(fp); } // 保存宿舍房间信息 void save_rooms() { FILE *fp = fopen("rooms.txt", "w"); if (fp == NULL) { printf("Failed to open file rooms.txt.\n"); return; } for (int i = 0; i < building_num; i++) { for (int j = 0; j < room_num[i]; j++) { Room *room = &rooms[i][j]; fprintf(fp, "%d %d %s %d\n", room->building, room->room, room->type, room->capacity); } } fclose(fp); } // 添加学生 void add_student() { if (student_num >= MAX_STUDENT_NUM) { printf("Maximum student number reached.\n"); return; } printf("Please input student name:\n"); scanf("%s", students[student_num].name); printf("Please input student sex (M/F):\n"); scanf(" %c", &students[student_num].sex); printf("Please input student id:\n"); scanf("%s", students[student_num].id); printf("Please input building number:\n"); scanf("%d", &students[student_num].building); printf("Please input room number:\n"); scanf("%d", &students[student_num].room); student_num++; save_students(); printf("Student added successfully.\n"); } // 删除学生 void delete_student() { char id[20]; printf("Please input student id:\n"); scanf("%s", id); int found = 0; for (int i = 0; i < student_num; i++) { if (strcmp(students[i].id, id) == 0) { found = 1; for (int j = i + 1; j < student_num; j++) { students[j - 1] = students[j]; } student_num--; break; } } if (found) { save_students(); printf("Student deleted successfully.\n"); } else { printf("Student not found.\n"); } } // 显示学生信息 void show_students() { printf("Total students: %d\n", student_num); printf("Name\tSex\tID\tBuilding\tRoom\n"); for (int i = 0; i < student_num; i++) { printf("%s\t%c\t%s\t%d\t%d\n", students[i].name, students[i].sex, students[i].id, students[i].building, students[i].room); } } // 添加宿舍楼 void add_building() { if (building_num >= MAX_BUILDING_NUM) { printf("Maximum building number reached.\n"); return; } printf("Please input building id:\n"); scanf("%d", &buildings[building_num].id); printf("Please input building name:\n"); scanf("%s", buildings[building_num].name); printf("Please input floor number:\n"); scanf("%d", &buildings[building_num].floor_num); printf("Please input room number per floor:\n"); scanf("%d", &buildings[building_num].room_num_per_floor); building_num++; save_buildings(); printf("Building added successfully.\n"); } // 删除宿舍楼 void delete_building() { int id; printf("Please input building id:\n"); scanf("%d", &id); int found = 0; for (int i = 0; i < building_num; i++) { if (buildings[i].id == id) { found = 1; for (int j = i + 1; j < building_num; j++) { buildings[j - 1] = buildings[j]; } building_num--; break; } } if (found) { save_buildings(); printf("Building deleted successfully.\n"); } else { printf("Building not found.\n"); } } // 显示宿舍楼信息 void show_buildings() { printf("Total buildings: %d\n", building_num); printf("ID\tName\tFloor Num\tRoom Num per Floor\n"); for (int i = 0; i < building_num; i++) { printf("%d\t%s\t%d\t\t%d\n", buildings[i].id, buildings[i].name, buildings[i].floor_num, buildings[i].room_num_per_floor); } } // 添加宿舍房间 void add_room() { int building_id; printf("Please input building id:\n"); scanf("%d", &building_id); if (room_num[building_id] >= MAX_ROOM_NUM) { printf("Maximum room number reached.\n"); return; } Room *room = &rooms[building_id][room_num[building_id]]; room->building = building_id; printf("Please input room id:\n"); scanf("%d", &room->room); printf("Please input room type (single/double):\n"); scanf("%s", room->type); printf("Please input room capacity:\n"); scanf("%d", &room->capacity); room_num[building_id]++; save_rooms(); printf("Room added successfully.\n"); } // 删除宿舍房间 void delete_room() { int building_id, room_id; printf("Please input building id:\n"); scanf("%d", &building_id); printf("Please input room id:\n"); scanf("%d", &room_id); int found = 0; for (int i = 0; i < room_num[building_id]; i++) { Room *room = &rooms[building_id][i]; if (room->room == room_id) { found = 1; for (int j = i + 1; j < room_num[building_id]; j++) { rooms[building_id][j - 1] = rooms[building_id][j]; } room_num[building_id]--; break; } } if (found) { save_rooms(); printf("Room deleted successfully.\n"); } else { printf("Room not found.\n"); } } // 显示宿舍房间信息 void show_rooms() { printf("Building\tRoom\tType\tCapacity\n"); for (int i = 0; i < building_num; i++) { for (int j = 0; j < room_num[i]; j++) { Room *room = &rooms[i][j]; printf("%d\t\t%d\t%s\t%d\n", room->building, room->room, room->type, room->capacity); } } } int main() { read_students(); read_buildings(); read_rooms(); while (1) { printf("Please select the operation:\n"); printf("1. Add student\n"); printf("2. Delete student\n"); printf("3. Show students\n"); printf("4. Add building\n"); printf("5. Delete building\n"); printf("6. Show buildings\n"); printf("7. Add room\n"); printf("8. Delete room\n"); printf("9. Show rooms\n"); printf("0. Exit\n"); int option; scanf("%d", &option); switch (option) { case 1: add_student(); break; case 2: delete_student(); break; case 3: show_students(); break; case 4: add_building(); break; case 5: delete_building(); break; case 6: show_buildings(); break; case 7: add_room(); break; case 8: delete_room(); break; case 9: show_rooms(); break; case 0: printf("Goodbye!\n"); exit(0); default: printf("Invalid option.\n"); } } return 0; } 以上代码只是一个简单的示例,实际情况中需要根据具体需求进行更改和扩展。
宿舍管理系统是一种常见的毕业设计题目,可以使用C语言进行编写。该系统的主要功能包括学生信息的录入、添加、删除、修改、查询、统计等。其中查询可以分别以姓名、学号、宿舍号为关键字查询学生信息。统计可以分别以学号、宿舍号、性别、班级、专业为关键字进行统计,并且输出信息按学号大小从小到大输出。 在编写宿舍管理系统时,需要使用C语言的文件操作、结构体、指针等知识。可以使用Microsoft Visual C++ 6.0等集成开发环境进行开发,也可以使用其他的C语言开发工具。 以下是一个简单的宿舍管理系统的代码示例,仅供参考: c #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_STUDENT_NUM 100 // 最大学生数 #define MAX_NAME_LEN 20 // 姓名最大长度 #define MAX_ID_LEN 10 // 学号最大长度 #define MAX_ROOM_NUM 50 // 最大宿舍数 // 学生结构体 typedef struct { char name[MAX_NAME_LEN]; // 姓名 char id[MAX_ID_LEN]; // 学号 char sex; // 性别 char major[MAX_NAME_LEN]; // 专业 char cls[MAX_NAME_LEN]; // 班级 char room[MAX_NAME_LEN]; // 宿舍号 } Student; // 学生数组 Student students[MAX_STUDENT_NUM]; int student_num = 0; // 学生数 // 宿舍数组 int rooms[MAX_ROOM_NUM]; int room_num = 0; // 宿舍数 // 添加学生 void add_student() { if (student_num >= MAX_STUDENT_NUM) { printf("学生数已达到最大值,无法添加!\n"); return; } Student student; printf("请输入学生姓名:"); scanf("%s", student.name); printf("请输入学生学号:"); scanf("%s", student.id); printf("请输入学生性别:"); scanf(" %c", &student.sex); printf("请输入学生专业:"); scanf("%s", student.major); printf("请输入学生班级:"); scanf("%s", student.cls); printf("请输入学生宿舍号:"); scanf("%s", student.room); students[student_num++] = student; printf("添加成功!\n"); } // 删除学生 void delete_student() { char id[MAX_ID_LEN]; printf("请输入要删除的学生学号:"); scanf("%s", id); int i; for (i = 0; i < student_num; i++) { if (strcmp(students[i].id, id) == 0) { int j; for (j = i; j < student_num - 1; j++) { students[j] = students[j + 1]; } student_num--; printf("删除成功!\n"); return; } } printf("未找到该学生!\n"); } // 修改学生信息 void modify_student() { char id[MAX_ID_LEN]; printf("请输入要修改的学生学号:"); scanf("%s", id); int i; for (i = 0; i < student_num; i++) { if (strcmp(students[i].id, id) == 0) { printf("请输入学生姓名:"); scanf("%s", students[i].name); printf("请输入学生学号:"); scanf("%s", students[i].id); printf("请输入学生性别:"); scanf(" %c", &students[i].sex); printf("请输入学生专业:"); scanf("%s", students[i].major); printf("请输入学生班级:"); scanf("%s", students[i].cls); printf("请输入学生宿舍号:"); scanf("%s", students[i].room); printf("修改成功!\n"); return; } } printf("未找到该学生!\n"); } // 查询学生信息 void query_student() { char keyword[MAX_NAME_LEN]; printf("请输入查询关键字:"); scanf("%s", keyword); int i; for (i = 0; i < student_num; i++) { if (strcmp(students[i].name, keyword) == 0 || strcmp(students[i].id, keyword) == 0 || strcmp(students[i].room, keyword) == 0) { printf("姓名:%s 学号:%s 性别:%c 专业:%s 班级:%s 宿舍号:%s\n", students[i].name, students[i].id, students[i].sex, students[i].major, students[i].cls, students[i].room); } } } // 统计学生信息 void count_student() { int i, j; for (i = 0; i < room_num; i++) { int count = 0; for (j = 0; j < student_num; j++) { if (strcmp(students[j].room, rooms[i]) == 0) { count++; } } printf("宿舍号:%s 学生数:%d\n", rooms[i], count); } } // 添加宿舍 void add_room() { if (room_num >= MAX_ROOM_NUM) { printf("宿舍数已达到最大值,无法添加!\n"); return; } char room[MAX_NAME_LEN]; printf("请输入宿舍号:"); scanf("%s", room); rooms[room_num++] = room; printf("添加成功!\n"); } // 删除宿舍 void delete_room() { char room[MAX_NAME_LEN]; printf("请输入要删除的宿舍号:"); scanf("%s", room); int i; for (i = 0; i < room_num; i++) { if (strcmp(rooms[i], room) == 0) { int j; for (j = i; j < room_num - 1; j++) { rooms[j] = rooms[j + 1]; } room_num--; printf("删除成功!\n"); return; } } printf("未找到该宿舍!\n"); } // 主函数 int main() { int choice; while (1) { printf("请选择操作:\n"); printf("1. 添加学生\n"); printf("2. 删除学生\n"); printf("3. 修改学生信息\n"); printf("4. 查询学生信息\n"); printf("5. 统计学生信息\n"); printf("6. 添加宿舍\n"); printf("7. 删除宿舍\n"); printf("8. 退出\n"); scanf("%d", &choice); switch (choice) { case 1: add_student(); break; case 2: delete_student(); break; case 3: modify_student(); break; case 4: query_student(); break; case 5: count_student(); break; case 6: add_room(); break; case 7: delete_room(); break; case 8: exit(0); default: printf("无效操作!\n"); break; } } return 0; }
抱歉,作为AI语言模型,我无法提供完整的C语言代码,但我可以给您提供一个基本的宿舍管理系统的框架,供您参考: #include <stdio.h> #include <stdlib.h> #include <string.h> // 定义学生结构体 typedef struct { char name[20]; // 学生姓名 int id; // 学生学号 int room; // 学生宿舍号 int bed; // 学生床位号 } Student; // 定义宿舍结构体 typedef struct { int room; // 宿舍号 int capacity; // 宿舍容量 int count; // 宿舍当前人数 Student *students; // 学生数组 } Dormitory; // 初始化宿舍 void initDormitory(Dormitory *d, int room, int capacity) { d->room = room; d->capacity = capacity; d->count = 0; d->students = (Student*)malloc(sizeof(Student)*capacity); } // 添加学生 void addStudent(Dormitory *d, char *name, int id, int bed) { if (d->count >= d->capacity) { printf("宿舍已满,无法添加新的学生!\n"); return; } Student s; strcpy(s.name, name); s.id = id; s.room = d->room; s.bed = bed; d->students[d->count++] = s; printf("学生添加成功!\n"); } // 删除学生 void removeStudent(Dormitory *d, int id) { int i; for (i = 0; i < d->count; i++) { if (d->students[i].id == id) { d->count--; d->students[i] = d->students[d->count]; printf("学生删除成功!\n"); return; } } printf("未找到该学生!\n"); } // 显示宿舍信息 void showDormitory(Dormitory *d) { int i; printf("宿舍号:%d\n", d->room); printf("容量:%d\n", d->capacity); printf("当前人数:%d\n", d->count); printf("学生列表:\n"); for (i = 0; i < d->count; i++) { printf("%d\t%s\t%d\t%d\n", d->students[i].id, d->students[i].name, d->students[i].room, d->students[i].bed); } } int main() { Dormitory dorm1, dorm2; initDormitory(&dorm1, 101, 4); initDormitory(&dorm2, 102, 6); addStudent(&dorm1, "张三", 1001, 1); addStudent(&dorm1, "李四", 1002, 2); addStudent(&dorm2, "王五", 1003, 1); showDormitory(&dorm1); showDormitory(&dorm2); removeStudent(&dorm1, 1002); showDormitory(&dorm1); showDormitory(&dorm2); return 0; }
### 回答1: 宿舍管理系统c程序设计是指使用C语言编写宿舍管理系统的程序。宿舍管理系统是一种用于管理学生宿舍信息、维护宿舍安全和方便学生生活的软件系统。 宿舍管理系统的设计可以包括以下功能: 1. 学生信息管理:包括学生基本信息、入住时间、离开时间等。可以通过学生的学号或姓名查找、修改和删除学生信息。 2. 宿舍信息管理:包括宿舍号、宿舍楼层、宿舍类型等信息。可以查找、修改和删除宿舍信息。 3. 入住登记:当有新的学生入住时,可以在系统中登记新生的入住信息,包括学生信息和宿舍信息。 4. 退宿管理:当学生离开宿舍时,可以在系统中登记学生的离开信息,并进行相应的处理,如归还电器设备等。 5. 宿舍楼层管理:可以根据宿舍楼层查询和展示该楼层所有宿舍的入住情况,方便管理员进行楼层管理。 6. 宿舍安全管理:可以对宿舍内的电器设备、烟雾报警器等进行检查和维护,保障宿舍安全。 7. 系统管理员管理:设置管理员账号和权限,确保只有授权的管理员可以进行系统管理操作。 在C程序设计中,需要使用合适的数据结构和算法来实现宿舍管理系统的各项功能。可以使用链表、数组、结构体等数据结构来存储学生和宿舍的信息,使用循环和条件判断等算法来实现各种功能的实现逻辑。 总之,宿舍管理系统C程序设计可以通过使用C语言实现学生和宿舍信息的管理、入住退宿的登记和查询,以及宿舍安全管理等功能。 ### 回答2: 宿舍管理系统C程序设计是为了实现对大学宿舍的信息管理和学生入住情况的监控。该系统主要包括以下功能: 1. 学生信息管理:系统可以实现学生信息的录入、修改和删除等功能,包括学生的基本信息、宿舍分配情况等。 2. 宿舍信息管理:系统可以记录宿舍的基本信息,包括宿舍编号、可用床位等。 3. 入住管理:系统能够对学生入住情况进行管理,包括学生的入住时间、入住期限等信息的录入和查询等。 4. 预定管理:系统可以实现学生对宿舍的预定操作,包括选择宿舍、预定时间、申请理由等。 5. 报修管理:系统可以记录学生报修信息,包括报修类型、报修时间、报修进度等,并能够追踪维修情况。 6. 统计分析:系统能够对宿舍入住情况和报修情况进行统计和分析,生成相关报表和图表,提供给管理员参考。 在C程序设计中,我们可以使用结构体来表示学生信息和宿舍信息,并使用文件读写来实现数据的保存和读取。可以使用链表或数组等数据结构来管理学生和宿舍信息,以便于对数据进行增删改查操作。可以使用条件判断和循环等控制结构来实现各个功能的实现和用户交互。 此外,为了增加程序的健壮性和安全性,可以对用户输入进行合法性校验,比如判断输入是否为空、是否符合规定格式等。同时,还可以添加用户权限管理,限制不同用户对系统的操作权限,保证系统的安全性。 综上所述,宿舍管理系统C程序设计需要实现学生和宿舍信息的录入、修改和删除,入住和预定管理,报修管理,统计分析等功能,并应考虑程序的健壮性和安全性,确保系统的正常运行和数据的安全性。 ### 回答3: 宿舍管理系统是一个用于学生宿舍管理的计算机程序设计。这个系统的目的是为了提高宿舍管理的效率和便利性,让学生和管理人员能够更好地管理宿舍生活。 宿舍管理系统包括以下几个主要功能模块: 1. 学生信息管理:该模块用于记录学生的基本信息,包括学号、姓名、班级等,方便管理人员进行学生宿舍信息的查询和管理。 2. 宿舍信息管理:该模块用于记录宿舍的基本信息,包括宿舍号、楼栋信息、床位数量等,以便管理人员进行宿舍分配和宿舍容量的控制。 3. 宿舍分配管理:该模块用于实现宿舍的分配功能,可以根据学生的需求和宿舍的空余床位情况进行宿舍分配,同时更新学生和宿舍的信息。 4. 宿舍报修管理:该模块用于学生报修宿舍设施的处理,包括记录报修内容、指派维修人员、维修进度追踪等,方便管理人员及时处理和跟踪宿舍设施的维修工作。 5. 宿舍卫生管理:该模块用于记录宿舍卫生情况,包括卫生检查的时间、得分情况等,可以帮助管理人员对宿舍卫生情况进行评估和管理。 6. 宿舍活动管理:该模块用于记录宿舍内的活动信息,包括活动内容、参与人员等,可以方便管理人员了解宿舍生活的状况,并安排相关的宿舍活动。 通过宿舍管理系统的使用,可以提高宿舍管理的效率和准确性,减少管理人员的工作量,方便学生和管理人员进行宿舍信息的查询和管理,提升了宿舍管理的质量和效果。同时,该系统也可以提供数据的统计和分析功能,为后续宿舍管理的决策提供参考依据。
好的,学生宿舍管理系统是一个比较常见的校园管理系统,下面是一个简单的C语言实现的例子: c #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_STUDENT_NUM 100 // 最大学生数量 #define MAX_NAME_LENGTH 20 // 学生姓名最大长度 // 定义学生结构体 typedef struct { char name[MAX_NAME_LENGTH]; // 姓名 int id; // 学号 int dormitory_num; // 宿舍号 } Student; // 定义全局变量 Student students[MAX_STUDENT_NUM]; // 学生信息数组 int student_num = 0; // 学生数量 // 打印菜单 void print_menu() { printf("1. 添加学生信息\n"); printf("2. 修改学生信息\n"); printf("3. 删除学生信息\n"); printf("4. 查找学生信息\n"); printf("5. 显示所有学生信息\n"); printf("6. 退出系统\n"); } // 添加学生信息 void add_student() { if (student_num >= MAX_STUDENT_NUM) { printf("学生数量已达到上限!\n"); return; } Student student; printf("请输入学生姓名:"); scanf("%s", student.name); printf("请输入学生学号:"); scanf("%d", &student.id); printf("请输入学生宿舍号:"); scanf("%d", &student.dormitory_num); students[student_num] = student; student_num++; printf("添加成功!\n"); } // 修改学生信息 void modify_student() { int id; printf("请输入要修改的学生学号:"); scanf("%d", &id); for (int i = 0; i < student_num; i++) { if (students[i].id == id) { printf("请输入新的学生姓名:"); scanf("%s", students[i].name); printf("请输入新的学生宿舍号:"); scanf("%d", &students[i].dormitory_num); printf("修改成功!\n"); return; } } printf("未找到该学生!\n"); } // 删除学生信息 void delete_student() { int id; printf("请输入要删除的学生学号:"); scanf("%d", &id); for (int i = 0; i < student_num; i++) { if (students[i].id == id) { for (int j = i; j < student_num - 1; j++) { students[j] = students[j + 1]; } student_num--; printf("删除成功!\n"); return; } } printf("未找到该学生!\n"); } // 查找学生信息 void find_student() { int id; printf("请输入要查找的学生学号:"); scanf("%d", &id); for (int i = 0; i < student_num; i++) { if (students[i].id == id) { printf("姓名:%s,学号:%d,宿舍号:%d\n", students[i].name, students[i].id, students[i].dormitory_num); return; } } printf("未找到该学生!\n"); } // 显示所有学生信息 void show_students() { printf("学生信息如下:\n"); for (int i = 0; i < student_num; i++) { printf("姓名:%s,学号:%d,宿舍号:%d\n", students[i].name, students[i].id, students[i].dormitory_num); } } int main() { int choice; while (1) { print_menu(); printf("请输入操作编号:"); scanf("%d", &choice); switch (choice) { case 1: add_student(); break; case 2: modify_student(); break; case 3: delete_student(); break; case 4: find_student(); break; case 5: show_students(); break; case 6: printf("感谢使用本系统!\n"); exit(0); default: printf("无效的操作编号,请重新输入!\n"); } } return 0; } 这个学生宿舍管理系统可以实现添加、修改、删除、查找和显示所有学生信息的功能。你可以根据需要进行修改和扩展。
以下是一个简单的学生宿舍管理系统,共计约200行C语言代码: c #include <stdio.h> #include <string.h> #define MAX_STUDENT 100 // 最大学生人数 #define MAX_NAME_LENGTH 20 // 学生姓名最大长度 #define MAX_ROOM 10 // 最大房间数 // 学生结构体 struct Student { char name[MAX_NAME_LENGTH]; // 姓名 int roomNumber; // 房间号 }; // 学生数组 struct Student students[MAX_STUDENT]; int studentCount = 0; // 房间数组 int rooms[MAX_ROOM]; void printMenu() { printf("\n"); printf("1. 添加学生\n"); printf("2. 删除学生\n"); printf("3. 查询学生\n"); printf("4. 显示所有学生\n"); printf("5. 分配房间\n"); printf("6. 退房\n"); printf("7. 退出程序\n"); printf("\n"); } void addStudent() { if (studentCount == MAX_STUDENT) { printf("学生人数已满,无法添加新学生!\n"); return; } struct Student student; printf("请输入学生姓名:"); scanf("%s", student.name); student.roomNumber = 0; // 初始房间号为0 students[studentCount] = student; studentCount++; printf("添加学生成功!\n"); } void deleteStudent() { char name[MAX_NAME_LENGTH]; printf("请输入要删除的学生姓名:"); scanf("%s", name); int index = -1; for (int i = 0; i < studentCount; i++) { if (strcmp(students[i].name, name) == 0) { index = i; break; } } if (index == -1) { printf("未找到该学生!\n"); return; } // 将最后一个学生移到要删除的位置 students[index] = students[studentCount - 1]; studentCount--; printf("删除学生成功!\n"); } void queryStudent() { char name[MAX_NAME_LENGTH]; printf("请输入要查询的学生姓名:"); scanf("%s", name); int index = -1; for (int i = 0; i < studentCount; i++) { if (strcmp(students[i].name, name) == 0) { index = i; break; } } if (index == -1) { printf("未找到该学生!\n"); return; } printf("姓名:%s,房间号:%d\n", students[index].name, students[index].roomNumber); } void showAllStudents() { printf("所有学生信息:\n"); for (int i = 0; i < studentCount; i++) { printf("姓名:%s,房间号:%d\n", students[i].name, students[i].roomNumber); } } void allocateRoom() { int roomNumber; printf("请输入要分配的房间号:"); scanf("%d", &roomNumber); if (roomNumber <= 0 || roomNumber > MAX_ROOM) { printf("房间号无效!\n"); return; } // 检查房间是否已被分配 for (int i = 0; i < studentCount; i++) { if (students[i].roomNumber == roomNumber) { printf("该房间已被分配!\n"); return; } } // 将学生分配到房间 for (int i = 0; i < studentCount; i++) { if (students[i].roomNumber == 0) { students[i].roomNumber = roomNumber; printf("分配成功!\n"); return; } } printf("没有空闲的床位了!\n"); } void leaveRoom() { int roomNumber; printf("请输入要退房的房间号:"); scanf("%d", &roomNumber); int index = -1; for (int i = 0; i < studentCount; i++) { if (students[i].roomNumber == roomNumber) { index = i; break; } } if (index == -1) { printf("未找到该房间或该房间未被分配!\n"); return; } students[index].roomNumber = 0; printf("退房成功!\n"); } int main() { // 初始化房间数组 for (int i = 0; i < MAX_ROOM; i++) { rooms[i] = i + 1; } while (1) { printMenu(); int choice; printf("请选择操作:"); scanf("%d", &choice); switch (choice) { case 1: addStudent(); break; case 2: deleteStudent(); break; case 3: queryStudent(); break; case 4: showAllStudents(); break; case 5: allocateRoom(); break; case 6: leaveRoom(); break; case 7: printf("程序已退出。\n"); return 0; default: printf("无效的操作!\n"); break; } } return 0; } 该程序实现了以下功能: 1. 添加学生 2. 删除学生 3. 查询学生 4. 显示所有学生 5. 分配房间 6. 退房 7. 退出程序 程序使用结构体来存储学生信息,同时使用一个数组来存储所有学生。房间信息则使用一个简单的整型数组来存储。在分配房间时,程序会检查房间是否已被分配,并将学生分配到第一个空闲的床位。在退房时,程序会将学生的房间号设为0,表示该学生已离开宿舍。
好的,这是一个比较大的项目,需要涉及到多个方面的知识点,我会尽力回答你的问题。 首先,我们需要了解C语言的基础语法和数据结构。在这个项目中,我们需要使用结构体来存储学生的信息,例如: c typedef struct student { char name[20]; char class[20]; int number; char dormitory[20]; } Student; 这个结构体包含了学生的姓名、班级、学号和宿舍号。接下来,我们需要实现录入、修改和删除学生信息的功能。 1. 录入学生信息 c void add_student(Student *students, int *count) { // 输入学生信息 printf("请输入学生姓名:"); scanf("%s", students[*count].name); printf("请输入学生班级:"); scanf("%s", students[*count].class); printf("请输入学生学号:"); scanf("%d", &students[*count].number); printf("请输入学生宿舍:"); scanf("%s", students[*count].dormitory); (*count)++; // 学生数量加1 } 这个函数会让用户输入学生的信息,然后将学生信息存储到一个数组中。另外,我们需要维护一个计数器来记录学生的数量。 2. 修改学生信息 c void modify_student(Student *students, int count) { int number; printf("请输入要修改的学生学号:"); scanf("%d", &number); for (int i = 0; i < count; i++) { if (students[i].number == number) { // 输入修改后的学生信息 printf("请输入学生姓名:"); scanf("%s", students[i].name); printf("请输入学生班级:"); scanf("%s", students[i].class); printf("请输入学生宿舍:"); scanf("%s", students[i].dormitory); printf("修改成功!\n"); return; } } printf("未找到该学生!\n"); } 这个函数会让用户输入要修改的学生的学号,然后遍历数组查找该学号对应的学生,如果找到了就让用户输入修改后的学生信息。 3. 删除学生信息 c void delete_student(Student *students, int *count) { int number; printf("请输入要删除的学生学号:"); scanf("%d", &number); for (int i = 0; i < *count; i++) { if (students[i].number == number) { // 将该学生后面的所有学生向前移动一位 for (int j = i; j < *count - 1; j++) { students[j] = students[j + 1]; } (*count)--; // 学生数量减1 printf("删除成功!\n"); return; } } printf("未找到该学生!\n"); } 这个函数会让用户输入要删除的学生的学号,然后遍历数组查找该学号对应的学生,如果找到了就将该学生后面的所有学生向前移动一位,然后将学生数量减1。 最后,我们需要实现查询学生宿舍的功能。 c void search_student(Student *students, int count) { int number; printf("请输入要查询的学生学号:"); scanf("%d", &number); for (int i = 0; i < count; i++) { if (students[i].number == number) { printf("学生宿舍:%s\n", students[i].dormitory); return; } } printf("未找到该学生!\n"); } 这个函数会让用户输入要查询的学生的学号,然后遍历数组查找该学号对应的学生,如果找到了就输出该学生的宿舍号。 以上就是一个基本的学生宿舍管理系统的实现,当然还有很多细节和优化需要考虑,比如输入的合法性检查、数据持久化等等。希望我的回答能够对你有所帮助!
好的,这是一个比较大的项目,需要涉及到多个方面的知识点,我会尽力回答你的问题。 首先,我们需要了解C语言的基础语法和数据结构。在这个项目中,我们需要使用结构体来存储学生的信息,例如: c typedef struct student { char name[20]; char class[20]; int number; char dormitory[20]; } Student; 这个结构体包含了学生的姓名、班级、学号和宿舍号。接下来,我们需要实现录入、修改和删除学生信息的功能。 1. 录入学生信息 c void add_student(Student *students, int *count) { // 输入学生信息 printf("请输入学生姓名:"); scanf("%s", students[*count].name); printf("请输入学生班级:"); scanf("%s", students[*count].class); printf("请输入学生学号:"); scanf("%d", &students[*count].number); printf("请输入学生宿舍:"); scanf("%s", students[*count].dormitory); (*count)++; // 学生数量加1 } 这个函数会让用户输入学生的信息,然后将学生信息存储到一个数组中。另外,我们需要维护一个计数器来记录学生的数量。 2. 修改学生信息 c void modify_student(Student *students, int count) { int number; printf("请输入要修改的学生学号:"); scanf("%d", &number); for (int i = 0; i < count; i++) { if (students[i].number == number) { // 输入修改后的学生信息 printf("请输入学生姓名:"); scanf("%s", students[i].name); printf("请输入学生班级:"); scanf("%s", students[i].class); printf("请输入学生宿舍:"); scanf("%s", students[i].dormitory); printf("修改成功!\n"); return; } } printf("未找到该学生!\n"); } 这个函数会让用户输入要修改的学生的学号,然后遍历数组查找该学号对应的学生,如果找到了就让用户输入修改后的学生信息。 3. 删除学生信息 c void delete_student(Student *students, int *count) { int number; printf("请输入要删除的学生学号:"); scanf("%d", &number); for (int i = 0; i < *count; i++) { if (students[i].number == number) { // 将该学生后面的所有学生向前移动一位 for (int j = i; j < *count - 1; j++) { students[j] = students[j + 1]; } (*count)--; // 学生数量减1 printf("删除成功!\n"); return; } } printf("未找到该学生!\n"); } 这个函数会让用户输入要删除的学生的学号,然后遍历数组查找该学号对应的学生,如果找到了就将该学生后面的所有学生向前移动一位,然后将学生数量减1。 最后,我们需要实现根据学号查询学生宿舍的功能。 c void search_student(Student *students, int count) { int number; printf("请输入要查询的学生学号:"); scanf("%d", &number); for (int i = 0; i < count; i++) { if (students[i].number == number) { printf("学生宿舍:%s\n", students[i].dormitory); return; } } printf("未找到该学生!\n"); } 这个函数会让用户输入要查询的学生的学号,然后遍历数组查找该学号对应的学生,如果找到了就输出该学生的宿舍号。 以上就是一个基本的学生宿舍管理系统的实现,当然还有很多细节和优化需要考虑,比如输入的合法性检查、数据持久化等等。希望我的回答能够对你有所帮助!
下面是一个简单的学籍管理系统的示例代码,实现了学生信息和课程信息的录入功能,使用了顺序表存储: c #include <stdio.h> #include <string.h> #define MAX_STUDENT_NUM 100 // 学生最大数量 #define MAX_COURSE_NUM 50 // 课程最大数量 #define MAX_NAME_LEN 20 // 姓名最大长度 #define MAX_ID_LEN 15 // 学号最大长度 #define MAX_COURSE_NAME_LEN 30 // 课程名称最大长度 // 学生信息结构体 typedef struct { char student_id[MAX_ID_LEN]; // 学号 char name[MAX_NAME_LEN]; // 姓名 char gender; // 性别 int dorm_num; // 宿舍号码 long phone_num; // 电话号码 } Student; // 课程信息结构体 typedef struct { char course_id[MAX_ID_LEN]; // 课程编号 char course_name[MAX_COURSE_NAME_LEN]; // 课程名称 int credit; // 学分 } Course; // 成绩信息结构体 typedef struct { char course_id[MAX_ID_LEN]; // 课程编号 int usual_score; // 平时成绩 int experiment_score; // 实验成绩 int final_score; // 卷面成绩 int comprehensive_score; // 综合成绩 int obtained_credit; // 实得学分 } Score; // 学籍管理系统结构体 typedef struct { Student students[MAX_STUDENT_NUM]; // 学生信息数组 Course courses[MAX_COURSE_NUM]; // 课程信息数组 int student_num; // 学生数量 int course_num; // 课程数量 } StudentManagementSystem; // 初始化学籍管理系统 void init_system(StudentManagementSystem *sys) { sys->student_num = 0; sys->course_num = 0; } // 录入学生信息 void input_student_info(StudentManagementSystem *sys) { int n; // 需要录入的学生数量 printf("请输入需要录入的学生数量:"); scanf("%d", &n); getchar(); // 读取换行符 for (int i = 0; i < n; i++) { printf("请输入第%d个学生的信息(学号、姓名、性别、宿舍号码、电话号码,用空格隔开):\n", i+1); scanf("%s %s %c %d %ld", sys->students[i].student_id, sys->students[i].name, &sys->students[i].gender, &sys->students[i].dorm_num, &sys->students[i].phone_num); getchar(); // 读取换行符 sys->student_num++; // 学生数量加1 } printf("学生信息录入成功!\n"); } // 录入课程信息 void input_course_info(StudentManagementSystem *sys) { int n; // 需要录入的课程数量 printf("请输入需要录入的课程数量:"); scanf("%d", &n); getchar(); // 读取换行符 for (int i = 0; i < n; i++) { printf("请输入第%d个课程的信息(课程编号、课程名称、学分,用空格隔开):\n", i+1); scanf("%s %s %d", sys->courses[i].course_id, sys->courses[i].course_name, &sys->courses[i].credit); getchar(); // 读取换行符 sys->course_num++; // 课程数量加1 } printf("课程信息录入成功!\n"); } int main() { StudentManagementSystem sys; init_system(&sys); // 初始化学籍管理系统 input_student_info(&sys); // 录入学生信息 input_course_info(&sys); // 录入课程信息 return 0; } 这里定义了一个名为StudentManagementSystem的结构体,用于存储学生信息和课程信息,以及学生数量和课程数量等信息。在main函数中,首先调用init_system函数初始化学籍管理系统,然后分别调用input_student_info和input_course_info函数录入学生信息和课程信息。在input_student_info和input_course_info函数中,通过读取用户输入来录入学生信息和课程信息,并将它们存储到StudentManagementSystem结构体中。需要注意的是,这里只实现了录入功能,其他功能需要根据实际情况进行添加和修改。
以下是一个简单的基于C语言的学生宿舍管理系统,实现了数据文件的建立和排序,以及按照关键字进行查询的功能。 代码如下: c #include <stdio.h> #include <string.h> #define MAX_STUDENT 100 // 最大学生数 #define MAX_NAME 20 // 姓名最大长度 #define MAX_ID 10 // 学号最大长度 #define MAX_MAJOR 20 // 专业最大长度 #define MAX_ROOM 5 // 房间号最大长度 // 学生结构体 typedef struct { char name[MAX_NAME]; char id[MAX_ID]; char major[MAX_MAJOR]; char building[MAX_ROOM]; char room[MAX_ROOM]; } Student; // 学生数组 Student students[MAX_STUDENT]; // 当前学生数量 int num_students = 0; // 比较函数,按照姓名排序 int cmp_name(const void *a, const void *b) { return strcmp(((Student *)a)->name, ((Student *)b)->name); } // 比较函数,按照学号排序 int cmp_id(const void *a, const void *b) { return strcmp(((Student *)a)->id, ((Student *)b)->id); } // 比较函数,按照专业排序 int cmp_major(const void *a, const void *b) { return strcmp(((Student *)a)->major, ((Student *)b)->major); } // 比较函数,按照楼号排序 int cmp_building(const void *a, const void *b) { return strcmp(((Student *)a)->building, ((Student *)b)->building); } // 比较函数,按照房间号排序 int cmp_room(const void *a, const void *b) { return strcmp(((Student *)a)->room, ((Student *)b)->room); } // 冒泡排序 void bubble_sort(Student *arr, int len, int (*cmp)(const void *, const void *)) { int i, j; for (i = 0; i < len - 1; i++) { for (j = 0; j < len - i - 1; j++) { if (cmp(&arr[j], &arr[j + 1]) > 0) { Student temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } } // 选择排序 void selection_sort(Student *arr, int len, int (*cmp)(const void *, const void *)) { int i, j, min_index; for (i = 0; i < len - 1; i++) { min_index = i; for (j = i + 1; j < len; j++) { if (cmp(&arr[j], &arr[min_index]) < 0) { min_index = j; } } if (min_index != i) { Student temp = arr[i]; arr[i] = arr[min_index]; arr[min_index] = temp; } } } // 插入排序 void insertion_sort(Student *arr, int len, int (*cmp)(const void *, const void *)) { int i, j; for (i = 1; i < len; i++) { Student temp = arr[i]; for (j = i; j > 0 && cmp(&temp, &arr[j - 1]) < 0; j--) { arr[j] = arr[j - 1]; } arr[j] = temp; } } // 打印学生信息 void print_student(Student *s) { printf("%s\t%s\t%s\t%s\t%s\n", s->name, s->id, s->major, s->building, s->room); } // 添加学生信息 void add_student() { if (num_students >= MAX_STUDENT) { printf("无法添加更多学生信息!\n"); return; } printf("请输入学生姓名:"); scanf("%s", students[num_students].name); printf("请输入学生学号:"); scanf("%s", students[num_students].id); printf("请输入学生专业:"); scanf("%s", students[num_students].major); printf("请输入学生所在楼号:"); scanf("%s", students[num_students].building); printf("请输入学生所在房间号:"); scanf("%s", students[num_students].room); num_students++; printf("学生信息添加成功!\n"); } // 查询学生信息 void query_student() { int i; char keyword[MAX_NAME]; int option; printf("请选择查询条件:\n"); printf("1. 姓名\n"); printf("2. 学号\n"); printf("3. 专业\n"); printf("4. 楼号\n"); printf("5. 房间号\n"); printf("请选择(1-5):"); scanf("%d", &option); printf("请输入关键字:"); scanf("%s", keyword); printf("查询结果:\n"); switch (option) { case 1: for (i = 0; i < num_students; i++) { if (strcmp(students[i].name, keyword) == 0) { print_student(&students[i]); } } break; case 2: for (i = 0; i < num_students; i++) { if (strcmp(students[i].id, keyword) == 0) { print_student(&students[i]); } } break; case 3: for (i = 0; i < num_students; i++) { if (strcmp(students[i].major, keyword) == 0) { print_student(&students[i]); } } break; case 4: for (i = 0; i < num_students; i++) { if (strcmp(students[i].building, keyword) == 0) { print_student(&students[i]); } } break; case 5: for (i = 0; i < num_students; i++) { if (strcmp(students[i].room, keyword) == 0) { print_student(&students[i]); } } break; default: printf("无效的选项!\n"); break; } } int main() { int option; int i; while (1) { printf("请选择操作:\n"); printf("1. 添加学生信息\n"); printf("2. 查询学生信息\n"); printf("3. 退出程序\n"); printf("请选择(1-3):"); scanf("%d", &option); switch (option) { case 1: add_student(); break; case 2: if (num_students == 0) { printf("暂无学生信息,请先添加学生信息!\n"); break; } printf("请选择排序方式:\n"); printf("1. 按姓名排序\n"); printf("2. 按学号排序\n"); printf("3. 按专业排序\n"); printf("4. 按楼号排序\n"); printf("5. 按房间号排序\n"); printf("请选择(1-5):"); scanf("%d", &option); switch (option) { case 1: bubble_sort(students, num_students, cmp_name); break; case 2: selection_sort(students, num_students, cmp_id); break; case 3: insertion_sort(students, num_students, cmp_major); break; case 4: bubble_sort(students, num_students, cmp_building); break; case 5: insertion_sort(students, num_students, cmp_room); break; default: printf("无效的选项!\n"); break; } printf("排序结果:\n"); for (i = 0; i < num_students; i++) { print_student(&students[i]); } query_student(); break; case 3: printf("程序已退出!\n"); return 0; default: printf("无效的选项!\n"); break; } printf("\n"); } } 该程序使用了一个 Student 结构体来存储每个学生的信息,包括姓名、学号、专业、楼号和房间号。使用一个静态数组 students 来存储所有学生信息,并且记录了当前学生数量 num_students。 程序实现了两个主要的功能:添加学生信息和查询学生信息。添加学生信息需要用户从键盘输入每个字段的值,并将新的学生信息添加到 students 数组中。查询学生信息时,用户需要选择查询条件和输入关键字,程序将根据选择的排序方式对 students 数组进行排序,并根据关键字查询符合条件的学生信息。 该程序使用了三种排序算法:冒泡排序、选择排序和插入排序。将排序算法和比较函数作为参数传递给排序函数,可以方便地实现不同的排序方式。 该程序还使用了一些基本的控制流程语句,如循环语句、条件语句和函数调用语句等。

最新推荐

基于Springboot的网上宠物店系统的设计与实现论文-java-文档-基于Springboot网上宠物店系统的设计与实现文档

基于Springboot的网上宠物店系统的设计与实现论文-java-文档-基于Springboot网上宠物店系统的设计与实现文档论文: !!!本文档只是论文参考文档! 需要项目源码、数据库sql、开发文档、毕设咨询等,请私信联系~ ① 系统环境:Windows/Mac ② 开发语言:Java ③ 框架:SpringBoot ④ 架构:B/S、MVC ⑤ 开发环境:IDEA、JDK、Maven、Mysql ⑥ JDK版本:JDK1.8 ⑦ Maven包:Maven3.6 ⑧ 数据库:mysql 5.7 ⑨ 服务平台:Tomcat 8.0/9.0 ⑩ 数据库工具:SQLyog/Navicat ⑪ 开发软件:eclipse/myeclipse/idea ⑫ 浏览器:谷歌浏览器/微软edge/火狐 ⑬ 技术栈:Java、Mysql、Maven、Springboot、Mybatis、Ajax、Vue等 最新计算机软件毕业设计选题大全 https://blog.csdn.net/weixin_45630258/article/details/135901374 摘 要 目 录 第1章

面向6G的编码调制和波形技术.docx

面向6G的编码调制和波形技术.docx

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire

Power BI中的数据导入技巧

# 1. Power BI简介 ## 1.1 Power BI概述 Power BI是由微软公司推出的一款业界领先的商业智能工具,通过强大的数据分析和可视化功能,帮助用户快速理解数据,并从中获取商业见解。它包括 Power BI Desktop、Power BI Service 以及 Power BI Mobile 等应用程序。 ## 1.2 Power BI的优势 - 基于云端的数据存储和分享 - 丰富的数据连接选项和转换功能 - 强大的数据可视化能力 - 内置的人工智能分析功能 - 完善的安全性和合规性 ## 1.3 Power BI在数据处理中的应用 Power BI在数据处

建立关于x1,x2 和x1x2 的 Logistic 回归方程.

假设我们有一个包含两个特征(x1和x2)和一个二元目标变量(y)的数据集。我们可以使用逻辑回归模型来建立x1、x2和x1x2对y的影响关系。 逻辑回归模型的一般形式是: p(y=1|x1,x2) = σ(β0 + β1x1 + β2x2 + β3x1x2) 其中,σ是sigmoid函数,β0、β1、β2和β3是需要估计的系数。 这个方程表达的是当x1、x2和x1x2的值给定时,y等于1的概率。我们可以通过最大化似然函数来估计模型参数,或者使用梯度下降等优化算法来最小化成本函数来实现此目的。

智能网联汽车技术期末考试卷B.docx

。。。

"互动学习:行动中的多样性与论文攻读经历"

多样性她- 事实上SCI NCES你的时间表ECOLEDO C Tora SC和NCESPOUR l’Ingén学习互动,互动学习以行动为中心的强化学习学会互动,互动学习,以行动为中心的强化学习计算机科学博士论文于2021年9月28日在Villeneuve d'Asq公开支持马修·瑟林评审团主席法布里斯·勒菲弗尔阿维尼翁大学教授论文指导奥利维尔·皮耶昆谷歌研究教授:智囊团论文联合主任菲利普·普雷教授,大学。里尔/CRISTAL/因里亚报告员奥利维耶·西格德索邦大学报告员卢多维奇·德诺耶教授,Facebook /索邦大学审查员越南圣迈IMT Atlantic高级讲师邀请弗洛里安·斯特鲁布博士,Deepmind对于那些及时看到自己错误的人...3谢谢你首先,我要感谢我的两位博士生导师Olivier和Philippe。奥利维尔,"站在巨人的肩膀上"这句话对你来说完全有意义了。从科学上讲,你知道在这篇论文的(许多)错误中,你是我可以依

数据可视化:Pandas与Matplotlib的结合应用

# 1. 数据可视化的重要性 1.1 数据可视化在数据分析中的作用 1.2 Pandas与Matplotlib的概述 **1.1 数据可视化在数据分析中的作用** 数据可视化在数据分析中扮演着至关重要的角色,通过图表、图形和地图等形式,将抽象的数据转化为直观、易于理解的可视化图像,有助于人们更直观地认识数据,发现数据之间的关联和规律。在数据分析过程中,数据可视化不仅可以帮助我们发现问题和趋势,更重要的是能够向他人有效传达数据分析的结果,帮助决策者做出更明智的决策。 **1.2 Pandas与Matplotlib的概述** Pandas是Python中一个提供数据

1. IP数据分组的片偏移计算,MF标识符怎么设置。

IP数据分组是将较长的IP数据报拆分成多个较小的IP数据报进行传输的过程。在拆分的过程中,每个数据分组都会设置片偏移和MF标识符来指示该分组在原始报文中的位置和是否为最后一个分组。 片偏移的计算方式为:将IP数据报的总长度除以8,再乘以当前分组的编号,即可得到该分组在原始报文中的字节偏移量。例如,若原始报文总长度为1200字节,每个数据分组的最大长度为500字节,那么第一个分组的片偏移为0,第二个分组的片偏移为500/8=62.5,向下取整为62,即第二个分组的片偏移为62*8=496字节。 MF标识符是指“更多的分组”标识符,用于标识是否还有后续分组。若该标识位为1,则表示还有后续分组;

8个案例详解教会你ThreadLocal.docx

通常情况下,我们创建的成员变量都是线程不安全的。因为他可能被多个线程同时修改,此变量对于多个线程之间彼此并不独立,是共享变量。而使用ThreadLocal创建的变量只能被当前线程访问,其他线程无法访问和修改。也就是说:将线程公有化变成线程私有化。