设计一个学生通讯管理系统

用C语言设计并实现一个简单的学生通讯录管理系统,通讯系统中学生信息包括学号、姓名、电话号码。系统要求有以下功能:
1.创建通讯录
2.插入学生信息
3.删除学生信息
4.根据学号查找学生信息
5.显示所有学生信息
程序运行后显示上面菜单,选择不同菜单执行不同功能。

【以下回答由 GPT 生成】

解决方案

设计一个学生通讯录管理系统需要实现以下功能:

  1. 创建通讯录:创建一个空的通讯录,用于存储学生信息。
  2. 插入学生信息:向通讯录中添加一个学生的学号、姓名和电话号码。
  3. 删除学生信息:根据学号从通讯录中删除一个学生的信息。
  4. 根据学号查找学生信息:根据输入的学号,在通讯录中查找对应学生的信息。
  5. 显示所有学生信息:将通讯录中所有学生的信息打印出来。

下面是C语言实现该学生通讯录管理系统的代码:

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

#define MAX_SIZE 100

// 定义学生结构体
typedef struct {
    int id;
    char name[50];
    char phone[20];
} Student;

// 定义通讯录结构体
typedef struct {
    Student students[MAX_SIZE];
    int count;
} AddressBook;

// 创建通讯录
void createAddressBook(AddressBook *book) {
    book->count = 0;
}

// 插入学生信息
void insertStudent(AddressBook *book) {
    if (book->count >= MAX_SIZE) {
        printf("通讯录已满,无法插入学生信息!\n");
        return;
    }

    Student student;

    printf("请输入学号:");
    scanf("%d", &student.id);

    printf("请输入姓名:");
    scanf("%s", student.name);

    printf("请输入电话号码:");
    scanf("%s", student.phone);

    book->students[book->count++] = student;

    printf("学生信息插入成功!\n");
}

// 删除学生信息
void deleteStudent(AddressBook *book) {
    int id;

    printf("请输入要删除的学生学号:");
    scanf("%d", &id);

    int index = -1;

    for (int i = 0; i < book->count; i++) {
        if (book->students[i].id == id) {
            index = i;
            break;
        }
    }

    if (index == -1) {
        printf("学生学号不存在,删除失败!\n");
        return;
    }

    for (int i = index; i < book->count - 1; i++) {
        book->students[i] = book->students[i + 1];
    }

    book->count--;

    printf("学生信息删除成功!\n");
}

// 根据学号查找学生信息
void findStudentById(AddressBook *book) {
    int id;

    printf("请输入要查找的学生学号:");
    scanf("%d", &id);

    int index = -1;

    for (int i = 0; i < book->count; i++) {
        if (book->students[i].id == id) {
            index = i;
            break;
        }
    }

    if (index == -1) {
        printf("学生学号不存在!\n");
        return;
    }

    Student student = book->students[index];

    printf("学号:%d\n", student.id);
    printf("姓名:%s\n", student.name);
    printf("电话号码:%s\n", student.phone);
}

// 显示所有学生信息
void displayStudents(AddressBook *book) {
    if (book->count == 0) {
        printf("通讯录为空!\n");
        return;
    }

    printf("学生信息如下:\n");

    for (int i = 0; i < book->count; i++) {
        Student student = book->students[i];
        printf("学号:%d,姓名:%s,电话号码:%s\n", student.id, student.name, student.phone);
    }
}

int main() {
    AddressBook book;
    int choice;

    createAddressBook(&book);

    do {
        printf("\n====== 学生通讯录管理系统 ======\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:
                createAddressBook(&book);
                printf("通讯录创建成功!\n");
                break;
            case 2:
                insertStudent(&book);
                break;
            case 3:
                deleteStudent(&book);
                break;
            case 4:
                findStudentById(&book);
                break;
            case 5:
                displayStudents(&book);
                break;
            case 0:
                printf("感谢使用学生通讯录管理系统,再见!\n");
                break;
            default:
                printf("输入有误,请重新选择!\n");
                break;
        }
    } while (choice != 0);

    return 0;
}

在这个实现中,我们首先定义了StudentAddressBook两个结构体,分别用于存储学生的信息和整个通讯录。然后,我们通过几个函数来实现具体的功能,比如创建通讯录、插入学生信息、删除学生信息等。最后,我们在main函数中通过一个do-while循环来实现系统的菜单功能,根据用户输入的选择调用相应的函数。

这样,我们就完成了一个简单的学生通讯录管理系统的设计和实现。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^