C语言程序设计宿舍管理系统

项目描述

现有学生宿舍3栋,每年收费为1200元。试设计-宿舍管理系统,使之能提供以下功能:

1)系统以菜单方式工作(用键盘输入1~7之间的数来选择功能,其中7为退出);

2)学生住宿信息录入功能(楼号、楼层、房间号、姓名、入住年限),输入8-10条记录信息:3)宿舍信息整体浏览功能:

4)根据给定的“楼号”显示该楼居住学生人数:

5)根据入住人数统计收费总额功能;

6)根据给定的“房间号”修改学生姓名信息:

7)根据“姓名”升序排序:

8)根据给定的学生“姓名”删除该学生的入住信息;

9)所有数据符合实际应用要求。

题目要求

1)按分析、设计、编码、调试和测试的软件开发过程完成这个应用程序。

2)为各项操作功能设计一个菜单。应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目。

3)界面应友好,操作应流畅。

输入要求

应用程序运行后,在屏幕上显示一个菜单。

用户可以根据需求,选定相应的操作项目。

进入每个操作后,一般应有相应的子菜单,或有相应的提示信息,根据提示信息的要求,从键盘或文件输入相应的信息。

输出要求

1)应用程序运行后,要在屏幕上显示一个菜单。

2)要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。提示设计一个结构体类型和一维数组类型,用来存放学生入住信息。

实现代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_STUDENTS 10

// 学生结构体
typedef struct {
    int building;
    int floor;
    int room;
    char name[50];
    int duration;
} Student;

// 全局变量
Student students[MAX_STUDENTS]; // 存放学生信息的数组
int numStudents = 0; // 当前学生数量

// 菜单函数
void displayMenu() {
    printf("\n--- 宿舍管理系统 ---\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("请选择功能(1-8): ");
}

// 功能函数:学生住宿信息录入
void addStudent() {
    if (numStudents >= MAX_STUDENTS) {
        printf("学生信息已满,无法继续添加!\n");
        return;
    }

    printf("\n--- 学生住宿信息录入 ---\n");
    
    printf("请输入楼号: ");
    scanf("%d", &students[numStudents].building);
    
    printf("请输入楼层: ");
    scanf("%d", &students[numStudents].floor);
    
    printf("请输入房间号: ");
    scanf("%d", &students[numStudents].room);
    
    printf("请输入姓名: ");
    scanf("%s", students[numStudents].name);
    
    printf("请输入入住年限: ");
    scanf("%d", &students[numStudents].duration);
    
    numStudents++;
    printf("学生住宿信息录入成功!\n");
}

// 功能函数:宿舍信息整体浏览
void displayStudents() {
    if (numStudents == 0) {
        printf("暂无学生住宿信息!\n");
        return;
    }

    printf("\n--- 宿舍信息整体浏览 ---\n");
    printf("楼号\t楼层\t房间号\t姓名\t\t入住年限\n");
    for (int i = 0; i < numStudents; i++) {
        printf("%d\t%d\t%d\t%s\t\t%d\n", students[i].building, students[i].floor, students[i].room, students[i].name, students[i].duration);
    }
}

// 功能函数:根据楼号显示学生人数
void displayStudentCountByBuilding() {
    int building;
    int count = 0;

    printf("\n--- 根据楼号显示学生人数 ---\n");
    printf("请输入楼号: ");
    scanf("%d", &building);

    for (int i = 0; i < numStudents; i++) {
        if (students[i].building == building) {
            count++;
        }
    }

    printf("楼号 %d 的学生人数为: %d\n", building, count);
}

// 功能函数:统计收费总额
void calculateTotalFee() {
    int totalFee = numStudents * 1200;

    printf("\n--- 统计收费总额 ---\n");
    printf("学生总数:%d\n", numStudents);
    printf("收费总额:%d\n", totalFee);
}

// 功能函数:修改学生姓名
void updateStudentName() {
    int room;
    char newName[50];

    printf("\n--- 修改学生姓名 ---\n");
    printf("请输入房间号: ");
    scanf("%d", &room);

    for (int i = 0; i < numStudents; i++) {
        if (students[i].room == room) {
            printf("请输入新的姓名: ");
            scanf("%s", newName);
            strcpy(students[i].name, newName);
            printf("学生姓名已修改!\n");
            return;
        }
    }

    printf("未找到房间号为 %d 的学生信息!\n", room);
}

// 功能函数:按姓名排序
void sortByName() {
    Student temp;

    printf("\n--- 按姓名排序 ---\n");

    for (int i = 0; i < numStudents - 1; i++) {
        for (int j = 0; j < numStudents - i - 1; j++) {
            if (strcmp(students[j].name, students[j + 1].name) > 0) {
                temp = students[j];
                students[j] = students[j + 1];
                students[j + 1] = temp;
            }
        }
    }

    printf("学生信息已按姓名排序!\n");
}

// 功能函数:根据姓名删除学生信息
void deleteStudentByName() {
    char name[50];
    int found = 0;

    printf("\n--- 根据姓名删除学生信息 ---\n");
    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];
            }
            found = 1;
            numStudents--;
            break;
        }
    }

    if (found) {
        printf("学生信息已删除成功!\n");
    } else {
        printf("未找到姓名为 %s 的学生信息!\n", name);
    }
}

int main() {
    int choice;

    do {
        displayMenu();
        scanf("%d", &choice);

        switch (choice) {
            case 1:
                addStudent();
                break;
            case 2:
                displayStudents();
                break;
            case 3:
                displayStudentCountByBuilding();
                break;
            case 4:
                calculateTotalFee();
                break;
            case 5:
                updateStudentName();
                break;
            case 6:
                sortByName();
                break;
            case 7:
                deleteStudentByName();
                break;
            case 8:
                printf("退出程序。\n");
                break;
            default:
                printf("无效的选择,请重新输入。\n");
                break;
        }
    } while (choice != 8);

    return 0;
}

运行截图

图片[1]-C语言程序设计宿舍管理系统-QQ沐编程

© 版权声明
THE END
喜欢就支持一下吧
点赞12赞赏 分享