用c语言写一个学生宿舍管理系统,要求功能:实现简单的学生宿舍基本信息管理,宿舍的基本信息包括楼号、房间号、面积、所容纳人数、已入住人数等。 1.设计简单的菜单,能够进行系统功能选择; 2.实现信息的录入功能; 3.在已有信息的基础上添加新的记录; 4.删除指定房间号的记录; . 5.修改指定房间号的记录; 6.实现信息的浏览功能; 7.按房间号查询功能; 8.按已入住人数排序功能;
时间: 2024-02-11 15:06:52 浏览: 24
好的,这里是一个基于C语言的学生宿舍管理系统的代码示例,实现了你所提出的所有功能:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_ROOMS 100 // 最大宿舍数量
// 学生宿舍结构体
struct dormitory {
int building; // 楼号
int room_num; // 房间号
float area; // 面积
int capacity; // 所容纳人数
int occupied; // 已入住人数
};
// 学生宿舍数据结构
struct dormitory_info {
struct dormitory rooms[MAX_ROOMS]; // 宿舍列表
int num_rooms; // 宿舍数量
};
// 菜单函数
void 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("0. 退出系统\n");
}
// 录入宿舍信息函数
void input_dormitory_info(struct dormitory_info *info) {
printf("请输入宿舍信息,楼号、房间号、面积、所容纳人数、已入住人数,以空格分隔:\n");
scanf("%d %d %f %d %d", &info->rooms[info->num_rooms].building, &info->rooms[info->num_rooms].room_num, &info->rooms[info->num_rooms].area, &info->rooms[info->num_rooms].capacity, &info->rooms[info->num_rooms].occupied);
info->num_rooms++;
printf("录入成功!\n");
}
// 添加宿舍记录函数
void add_dormitory_record(struct dormitory_info *info) {
if (info->num_rooms == MAX_ROOMS) {
printf("宿舍数量已满,无法添加记录!\n");
return;
}
printf("请输入要添加的宿舍信息,楼号、房间号、面积、所容纳人数、已入住人数,以空格分隔:\n");
scanf("%d %d %f %d %d", &info->rooms[info->num_rooms].building, &info->rooms[info->num_rooms].room_num, &info->rooms[info->num_rooms].area, &info->rooms[info->num_rooms].capacity, &info->rooms[info->num_rooms].occupied);
info->num_rooms++;
printf("添加成功!\n");
}
// 删除宿舍记录函数
void delete_dormitory_record(struct dormitory_info *info) {
int i, room_num;
printf("请输入要删除的宿舍房间号:\n");
scanf("%d", &room_num);
for (i = 0; i < info->num_rooms; i++) {
if (info->rooms[i].room_num == room_num) {
info->rooms[i] = info->rooms[info->num_rooms - 1];
info->num_rooms--;
printf("删除成功!\n");
return;
}
}
printf("未找到该宿舍信息!\n");
}
// 修改宿舍记录函数
void modify_dormitory_record(struct dormitory_info *info) {
int i, room_num;
printf("请输入要修改的宿舍房间号:\n");
scanf("%d", &room_num);
for (i = 0; i < info->num_rooms; i++) {
if (info->rooms[i].room_num == room_num) {
printf("请输入修改后的宿舍信息,楼号、房间号、面积、所容纳人数、已入住人数,以空格分隔:\n");
scanf("%d %d %f %d %d", &info->rooms[i].building, &info->rooms[i].room_num, &info->rooms[i].area, &info->rooms[i].capacity, &info->rooms[i].occupied);
printf("修改成功!\n");
return;
}
}
printf("未找到该宿舍信息!\n");
}
// 浏览宿舍信息函数
void browse_dormitory_info(struct dormitory_info *info) {
int i;
printf("当前宿舍信息:\n");
printf("楼号\t房间号\t面积\t所容纳人数\t已入住人数\n");
for (i = 0; i < info->num_rooms; i++) {
printf("%d\t%d\t%.2f\t%d\t\t%d\n", info->rooms[i].building, info->rooms[i].room_num, info->rooms[i].area, info->rooms[i].capacity, info->rooms[i].occupied);
}
}
// 按房间号查询宿舍信息函数
void search_dormitory_info_by_room_num(struct dormitory_info *info) {
int i, room_num;
printf("请输入要查询的宿舍房间号:\n");
scanf("%d", &room_num);
for (i = 0; i < info->num_rooms; i++) {
if (info->rooms[i].room_num == room_num) {
printf("楼号\t房间号\t面积\t所容纳人数\t已入住人数\n");
printf("%d\t%d\t%.2f\t%d\t\t%d\n", info->rooms[i].building, info->rooms[i].room_num, info->rooms[i].area, info->rooms[i].capacity, info->rooms[i].occupied);
return;
}
}
printf("未找到该宿舍信息!\n");
}
// 按已入住人数排序宿舍信息函数
void sort_dormitory_info_by_occupied(struct dormitory_info *info) {
int i, j;
struct dormitory temp;
for (i = 0; i < info->num_rooms - 1; i++) {
for (j = 0; j < info->num_rooms - i - 1; j++) {
if (info->rooms[j].occupied > info->rooms[j+1].occupied) {
temp = info->rooms[j];
info->rooms[j] = info->rooms[j+1];
info->rooms[j+1] = temp;
}
}
}
printf("按已入住人数排序结果:\n");
browse_dormitory_info(info);
}
int main() {
struct dormitory_info info = {0}; // 初始化学生宿舍数据结构
int choice;
do {
menu(); // 显示菜单
printf("请输入您的选择:\n");
scanf("%d", &choice);
switch (choice) {
case 1:
input_dormitory_info(&info);
break;
case 2:
add_dormitory_record(&info);
break;
case 3:
delete_dormitory_record(&info);
break;
case 4:
modify_dormitory_record(&info);
break;
case 5:
browse_dormitory_info(&info);
break;
case 6:
search_dormitory_info_by_room_num(&info);
break;
case 7:
sort_dormitory_info_by_occupied(&info);
break;
case 0:
printf("谢谢使用学生宿舍管理系统,再见!\n");
break;
default:
printf("无效的选择,请重新输入!\n");
}
} while (choice != 0);
return 0;
}
```
注意,这只是一个简单的示例,实际上还需要对输入进行检查和错误处理,以确保系统的稳定性和正确性。