一个宿舍管理系统c语音代码
时间: 2024-06-20 10:03:24 浏览: 92
一个宿舍管理系统通常包括学生信息管理、宿舍信息管理、宿舍费用管理等功能模块。下面是一个简单的宿舍管理系统的C语言代码示例,仅供参考:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_SIZE 100
// 学生结构体
typedef struct {
char id[10]; // 学号
char name[20]; // 姓名
char sex; // 性别
char tel[20]; // 联系电话
char dorm; // 宿舍号
} Student;
// 宿舍结构体
typedef struct {
char dorm; // 宿舍号
int num; // 床位数
int occupy; // 已占用床位数
} Dorm;
// 学生数组和宿舍数组
Student students[MAX_SIZE];
Dorm dorms[MAX_SIZE];
// 学生数量和宿舍数量
int stu_count = 0;
int dorm_count = 0;
// 显示菜单
void show_menu() {
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");
printf("9. 统计宿舍信息\n");
printf("0. 退出系统\n");
printf("*************\n");
}
// 添加学生信息
void add_student() {
if (stu_count >= MAX_SIZE) {
printf("学生信息已达上限,无法添加!\n");
return;
}
Student stu;
printf("请输入学号:");
scanf("%s", stu.id);
for (int i = 0; i < stu_count; i++) {
if (strcmp(stu.id, students[i].id) == 0) {
printf("该学号已存在,请重新输入!\n");
return;
}
}
printf("请输入姓名:");
scanf("%s", stu.name);
printf("请输入性别:");
scanf("%s", stu.sex);
printf("请输入联系电话:");
scanf("%s", stu.tel);
printf("请输入宿舍号:");
scanf("%s", stu.dorm);
strcpy(students[stu_count].id, stu.id);
strcpy(students[stu_count].name, stu.name);
strcpy(students[stu_count].sex, stu.sex);
strcpy(students[stu_count].tel, stu.tel);
strcpy(students[stu_count].dorm, stu.dorm);
stu_count++;
printf("添加成功!\n");
}
// 修改学生信息
void modify_student() {
char id[10];
printf("请输入要修改的学生学号:");
scanf("%s", id);
for (int i = 0; i < stu_count; i++) {
if (strcmp(id, students[i].id) == 0) {
printf("请输入新的姓名:");
scanf("%s", students[i].name);
printf("请输入新的性别:");
scanf("%s", students[i].sex);
printf("请输入新的联系电话:");
scanf("%s", students[i].tel);
printf("请输入新的宿舍号:");
scanf("%s", students[i].dorm);
printf("修改成功!\n");
return;
}
}
printf("未找到该学生信息!\n");
}
// 删除学生信息
void delete_student() {
char id[10];
printf("请输入要删除的学生学号:");
scanf("%s", id);
for (int i = 0; i < stu_count; i++) {
if (strcmp(id, students[i].id) == 0) {
for (int j = i; j < stu_count - 1; j++) {
students[j] = students[j + 1];
}
stu_count--;
printf("删除成功!\n");
return;
}
}
printf("未找到该学生信息!\n");
}
// 查询学生信息
void search_student() {
char id[10];
printf("请输入要查询的学生学号:");
scanf("%s", id);
for (int i = 0; i < stu_count; i++) {
if (strcmp(id, students[i].id) == 0) {
printf("姓名:%s,性别:%s,联系电话:%s,宿舍号:%s\n",
students[i].name, students[i].sex, students[i].tel, students[i].dorm);
return;
}
}
printf("未找到该学生信息!\n");
}
// 添加宿舍信息
void add_dorm() {
if (dorm_count >= MAX_SIZE) {
printf("宿舍信息已达上限,无法添加!\n");
return;
}
Dorm dorm;
printf("请输入宿舍号:");
scanf("%s", dorm.dorm);
for (int i = 0; i < dorm_count; i++) {
if (strcmp(dorm.dorm, dorms[i].dorm) == 0) {
printf("该宿舍已存在,请重新输入!\n");
return;
}
}
printf("请输入床位数:");
scanf("%d", &dorm.num);
dorm.occupy = 0;
dorms[dorm_count] = dorm;
dorm_count++;
}
// 修改宿舍信息
void modify_dorm() {
char dorm;
printf("请输入要修改的宿舍号:");
scanf("%s", dorm);
for (int i = 0; i < dorm_count; i++) {
if (strcmp(dorm, dorms[i].dorm) == 0) {
printf("请输入新的床位数:");
scanf("%d", &dorms[i].num);
printf("修改成功!\n");
return;
}
}
}
// 删除宿舍信息
void delete_dorm() {
char dorm;
printf("请输入要删除的宿舍号:");
scanf("%s", dorm);
for (int i = 0; i < dorm_count; i++) {
if (strcmp(dorm, dorms[i].dorm) == 0) {
for (int j = i; j < dorm_count - 1; j++) {
dorms[j] = dorms[j + 1];
}
dorm_count--;
for (int j = 0; j < stu_count; j++) {
if (strcmp(dorm, students[j].dorm) == 0) {
strcpy(students[j].dorm, "");
}
}
printf("删除成功!\n");
return;
}
}
}
// 查询宿舍信息
void search_dorm() {
char dorm;
printf("请输入要查询的宿舍号:");
scanf("%s", dorm);
for (int i = 0; i < dorm_count; i++) {
if (strcmp(dorm, dorms[i].dorm) == 0) {
printf("床位数:%d,已占用床位数:%d\n",
dorms[i].num, dorms[i].occupy);
return;
}
}
}
// 统计宿舍信息
void stat_dorm() {
int total_num = 0; // 总床位数
int total_occupy = 0; // 总已占用床位数
for (int i = 0; i < dorm_count; i++) {
total_num += dorms[i].num;
total_occupy += dorms[i].occupy;
}
int total_empty = total_num - total_occupy; // 总空床位数
float occupy_rate = total_occupy * 1.0 / total_num * 100; // 入住率
printf("总床位数:%d,总已占用床位数:%d,总空床位数:%d,入住率:%.2f%%\n",
total_num, total_occupy, total_empty, occupy_rate);
}
int main() {
int choice;
while (1) {
show_menu();
printf("请选择操作:");
scanf("%d", &choice);
switch(choice) {
case 1:
add_student();
break;
case 2:
modify_student();
break;
case 3:
delete_student();
break;
case 4:
search_student();
break;
case 5:
add_dorm();
break;
case 6:
modify_dorm();
break;
case 7:
delete_dorm();
break;
case 8:
search_dorm();
break;
case 9:
stat_dorm();
break;
case 0:
exit(0);
default:
printf("输入有误,请重新输入!\n");
}
// 相关问题:
// 1. 如何统计一个宿舍的入住率?
// 2. 如何实现宿舍内住户信息的管理?
// 3. 如何防止添加重复的学生或宿舍信息?
getchar(); // 清除缓冲区残留的回车符
system("pause"); // 暂停程序,等待用户按任意键继续
system("cls"); // 清屏操作,以便下一次操作
}
return 0;
}
```
阅读全文