c语言宿舍管理系统代码

以下是一个简单的C语言宿舍管理系统的代码示例,包括添加宿舍、删除宿舍、查询宿舍和显示所有宿舍的功能。这是一个基本的示例,你可以根据实际需求进行扩展和改进。

c复制代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_DORMS 100
#define MAX_NAME_LENGTH 50
typedef struct {
char name[MAX_NAME_LENGTH];
int capacity;
int occupied;
} Dorm;
Dorm dorms[MAX_DORMS];
int dormCount = 0;
void addDorm(char* name, int capacity) {
if (dormCount >= MAX_DORMS) {
printf("No more space for dorms!\n");
return;
}
strcpy(dorms[dormCount].name, name);
dorms[dormCount].capacity = capacity;
dorms[dormCount].occupied = 0;
dormCount++;
printf("Dorm added successfully!\n");
}
void deleteDorm(char* name) {
int i;
for (i = 0; i < dormCount; i++) {
if (strcmp(dorms[i].name, name) == 0) {
break;
}
}
if (i == dormCount) {
printf("Dorm not found!\n");
return;
}
for (; i < dormCount - 1; i++) {
dorms[i] = dorms[i + 1];
}
dormCount--;
printf("Dorm deleted successfully!\n");
}
void queryDorm(char* name) {
int i;
for (i = 0; i < dormCount; i++) {
if (strcmp(dorms[i].name, name) == 0) {
printf("Dorm Name: %s\n", dorms[i].name);
printf("Capacity: %d\n", dorms[i].capacity);
printf("Occupied: %d\n", dorms[i].occupied);
return;
}
}
printf("Dorm not found!\n");
}
void displayAllDorms() {
int i;
printf("List of dorms:\n");
for (i = 0; i < dormCount; i++) {
printf("Dorm Name: %s\n", dorms[i].name);
printf("Capacity: %d\n", dorms[i].capacity);
printf("Occupied: %d\n", dorms[i].occupied);
printf("\n");
}
}
int main() {
int choice;
char dormName[MAX_NAME_LENGTH];
int capacity;
while (1) {
printf("\n*** Dorm Management System ***\n");
printf("1. Add Dorm\n");
printf("2. Delete Dorm\n");
printf("3. Query Dorm\n");
printf("4. Display All Dorms\n");
printf("5. Exit\n");
printf("Enter your choice: ");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("Enter dorm name: ");
scanf("%s", dormName);
printf("Enter dorm capacity: ");
scanf("%d", &capacity);
addDorm(dormName, capacity);
break;
case 2:
printf("Enter dorm name to delete: ");
scanf("%s", dormName);
deleteDorm(dormName);
break;
case 3:
printf("Enter dorm name to query: ");
scanf("%s", dormName);
queryDorm(dormName);
break;
case 4:
displayAllDorms();
break;
case 5:
printf("Exiting dorm management system...\n");
exit(0);
default:
printf("Invalid choice!\n");
}
}
return 0;
}

这个代码示例使用了结构体来存储宿舍的信息,包括宿舍名称、容量和已入住人数。它提供了添加宿舍、删除宿舍、查询宿舍和显示所有宿舍的功能。你可以根据需要扩展

这个宿舍管理系统,例如增加入住和退房的功能,修改宿舍的容量,以及进行错误处理和用户输入验证。以下是一个扩展后的版本,包括了入住和退房功能:

c复制代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#define MAX_DORMS 100
#define MAX_NAME_LENGTH 50
typedef struct {
char name[MAX_NAME_LENGTH];
int capacity;
int occupied;
} Dorm;
Dorm dorms[MAX_DORMS];
int dormCount = 0;
void addDorm(char* name, int capacity) {
if (dormCount >= MAX_DORMS) {
printf("No more space for dorms!\n");
return;
}
strcpy(dorms[dormCount].name, name);
dorms[dormCount].capacity = capacity;
dorms[dormCount].occupied = 0;
dormCount++;
printf("Dorm added successfully!\n");
}
void deleteDorm(char* name) {
int i;
for (i = 0; i < dormCount; i++) {
if (strcmp(dorms[i].name, name) == 0) {
break;
}
}
if (i == dormCount) {
printf("Dorm not found!\n");
return;
}
for (; i < dormCount - 1; i++) {
dorms[i] = dorms[i + 1];
}
dormCount--;
printf("Dorm deleted successfully!\n");
}
bool checkDormExists(char* name) {
int i;
for (i = 0; i < dormCount; i++) {
if (strcmp(dorms[i].name, name) == 0) {
return true;
}
}
return false;
}
bool checkDormCapacity(char* name) {
int i;
for (i = 0; i < dormCount; i++) {
if (strcmp(dorms[i].name, name) == 0) {
if (dorms[i].occupied < dorms[i].capacity) {
return true;
} else {
printf("Dorm is full!\n");
return false;
}
}
}
return false;
}
void checkOut(char* name) {
int i;
for (i = 0; i < dormCount; i++) {
if (strcmp(dorms[i].name, name) == 0) {
if (dorms[i].occupied > 0) {
dorms[i].occupied--;
printf("Check out successful!\n");
} else {
printf("No one to check out!\n");
}
return;
}
}
printf("Dorm not found!\n");
}
void checkIn(char* name) {
if (!checkDormExists(name)) {
printf("Dorm not found!\n");
return;
}
if (!checkDormCapacity(name)) {
return;
}
int i;
for (i = 0; i < dormCount; i++) {
if (strcmp(dorms[i].name, name) == 0) {
dorms[i].occupied++;
printf("Check in successful!\n");
return;
}
}
}
void queryDorm(char* name) {
int i;
for (i = 0; i < dormCount; i++) {
if (strcmp(dorms[i].name, name) == 0) {
printf("Dorm Name: %s\n", dorms[i].name);
printf("Capacity: %d\n", dorms[i].capacity);
printf("Occupied: %d\n", dorms[i].occupied);
return;
}
}
printf("Dorm not found!\n");
}
void displayAllDorms() {
int i;
printf("List of dorms:\n");
for (i = 0;