C语言实现学生信息管理程序

让我来详细讲解“C语言实现学生信息管理程序”的攻略。

概述

学生信息管理程序是一个非常基础的程序,它主要实现如下功能:

  • 添加学生信息
  • 查询学生信息
  • 修改学生信息
  • 删除学生信息

开发学生信息管理程序可以加强我们对C语言基础知识的掌握,例如指针、结构体等等。

开发步骤

1. 创建学生信息结构体

首先,我们需要创建一个结构体来存储学生信息。结构体可以包含学生的姓名、学号、性别、出生日期、电话号码等信息。

struct Student {
    char name[20];
    int id;
    char sex[10];
    char birthday[20];
    char phone[20];
};

2. 添加学生信息

我们可以使用数组存储学生信息,每次添加学生信息时,先判断数组是否已满,如果未满则添加学生信息。

#define MAX_STUDENT_NUM 100

struct Student students[MAX_STUDENT_NUM];
int currentStudentNum = 0;

void addStudent() {
    if (currentStudentNum >= MAX_STUDENT_NUM) {
        printf("Failed to add student, the number of students has reached the highest.\n");
        return;
    }

    struct Student student;
    printf("Please input the student name: ");
    scanf("%s", student.name);
    printf("Please input the student id: ");
    scanf("%d", &student.id);
    printf("Please input the student sex: ");
    scanf("%s", student.sex);
    printf("Please input the student birthday: ");
    scanf("%s", student.birthday);
    printf("Please input the student phone: ");
    scanf("%s", student.phone);
    students[currentStudentNum] = student;
    currentStudentNum++;
    printf("Successfully added student.\n");
}

3. 查询学生信息

我们可以通过输入学生的学号或姓名来查询具体某个学生的信息,也可以查询所有学生的信息。

void searchStudent() {
    printf("Please select the search method:\n");
    printf("1. Search by student id.\n");
    printf("2. Search by student name.\n");
    printf("3. Search all students.\n");

    int option;
    scanf("%d", &option);

    switch (option) {
        case 1: {
            int id;
            printf("Please input the student id to search: ");
            scanf("%d", &id);
            for (int i = 0; i < currentStudentNum; i++) {
                if (students[i].id == id) {
                    printf("name: %s, id: %d, sex: %s, birthday: %s, phone: %s\n", students[i].name, students[i].id, students[i].sex, students[i].birthday, students[i].phone);
                    return;
                }
            }
            printf("No student found with the id of %d.\n", id);
            break;
        }
        case 2: {
            char name[20];
            printf("Please input the student name to search: ");
            scanf("%s", name);
            int foundCount = 0;
            for (int i = 0; i < currentStudentNum; i++) {
                if (strcmp(students[i].name, name) == 0) {
                    printf("name: %s, id: %d, sex: %s, birthday: %s, phone: %s\n", students[i].name, students[i].id, students[i].sex, students[i].birthday, students[i].phone);
                    foundCount++;
                }
            }
            if (foundCount == 0) {
                printf("No student found with the name of %s.\n", name);
            }
            break;
        }
        case 3: {
            if (currentStudentNum == 0) {
                printf("No students added yet.\n");
            } else {
                for (int i = 0; i < currentStudentNum; i++) {
                    printf("name: %s, id: %d, sex: %s, birthday: %s, phone: %s\n", students[i].name, students[i].id, students[i].sex, students[i].birthday, students[i].phone);
                }
            }
            break;
        }
        default: {
            printf("Invalid input.\n");
            break;
        }
    }
}

4. 修改学生信息

我们可以通过输入学生的学号或姓名来修改具体某个学生的信息。

void modifyStudent() {
    printf("Please input the student id or name to modify: ");
    char input[20];
    scanf("%s", input);
    int foundIndex = -1;
    for (int i = 0; i < currentStudentNum; i++) {
        if (strcmp(students[i].name, input) == 0 || students[i].id == atoi(input)) {
            foundIndex = i;
            break;
        }
    }
    if (foundIndex == -1) {
        printf("No student found with the name or id of %s.\n", input);
    } else {
        struct Student student;
        printf("Please input the new student name (current: %s): ", students[foundIndex].name);
        scanf("%s", student.name);
        printf("Please input the new student id (current: %d): ", students[foundIndex].id);
        scanf("%d", &student.id);
        printf("Please input the new student sex (current: %s): ", students[foundIndex].sex);
        scanf("%s", student.sex);
        printf("Please input the new student birthday (current: %s): ", students[foundIndex].birthday);
        scanf("%s", student.birthday);
        printf("Please input the new student phone (current: %s): ", students[foundIndex].phone);
        scanf("%s", student.phone);
        students[foundIndex] = student;
    }
}

5. 删除学生信息

我们可以通过输入学生的学号或姓名来删除具体某个学生的信息。

void deleteStudent() {
    printf("Please input the student id or name to delete: ");
    char input[20];
    scanf("%s", input);
    int foundIndex = -1;
    for (int i = 0; i < currentStudentNum; i++) {
        if (strcmp(students[i].name, input) == 0 || students[i].id == atoi(input)) {
            foundIndex = i;
            break;
        }
    }
    if (foundIndex == -1) {
        printf("No student found with the name or id of %s.\n", input);
    } else {
        for (int i = foundIndex; i < currentStudentNum - 1; i++) {
            students[i] = students[i + 1];
        }
        currentStudentNum--;
        printf("Successfully deleted student.\n");
    }
}

示例说明

示例1:添加/student

在程序中输入1,然后输入学生的姓名、学号、性别、出生日期和电话号码,程序会将这个学生添加到列表中。

Please select the operation:
1. Add student.
2. Search student.
3. Modify student.
4. Delete student.
5. Exit.
1
Please input the student name: Tom
Please input the student id: 123
Please input the student sex: Male
Please input the student birthday: 1990/1/1
Please input the student phone: 18600000000
Successfully added student.

示例2:查询学生信息

在程序中输入2,然后根据提示选择查询方式,可以根据学号、姓名或者全部查询学生信息。

Please select the operation:
1. Add student.
2. Search student.
3. Modify student.
4. Delete student.
5. Exit.
2
Please select the search method:
1. Search by student id.
2. Search by student name.
3. Search all students.
3
name: Tom, id: 123, sex: Male, birthday: 1990/1/1, phone: 18600000000

这就是“C语言实现学生信息管理程序”的完整攻略,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言实现学生信息管理程序 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • C++超详细讲解智能指针

    C++超详细讲解智能指针 简介 在C++中,智能指针是一种非常有用、安全的内存管理工具。相较于原始指针,它能够自动释放内存,避免内存泄漏等问题。同时,智能指针也能够避免重复释放内存、访问空指针以及释放栈上分配的内存等问题。本文将对智能指针进行详细的讲解,介绍其类型、使用方法以及注意事项。 智能指针类型 在C++中,常见的智能指针有以下几种: unique_p…

    C 2023年5月23日
    00
  • C 语言常用方法技巧

    目录:1. 常用技巧概述2. 进制转换3. 字符串操作4. 数组操作5. 文件操作 1. 常用技巧概述 C 语言作为一门非常灵活的编程语言,程序员能够使用各种技巧和方法来提高代码的可读性和性能。这里列举几项常用的技巧: 使用宏定义来代替魔法数 尽可能使用 const 关键字来修饰常量 使用 static 关键字来限制变量的作用域 对于循环中需要多次调用的表达…

    C 2023年5月23日
    00
  • C程序 从一个字符串中提取字符

    首先我们需要了解一下C语言中字符串提取字符的方法。在C语言中,字符串是以字符数组的形式存储的,我们可以通过数组下标对字符串中的每一个字符进行访问。下面是一个示例程序,展示如何从字符串中提取一个字符: #include <stdio.h> #include <string.h> int main() { char str[] = &qu…

    C 2023年5月9日
    00
  • QT基于TCP实现网络聊天室程序

    首先我们需要准备QT的开发环境,并且熟悉QT的基本开发流程。在此不再赘述。 创建QT项目 首先需要创建一个QT项目,选择一个QT GUI Application即可。在创建过程中,选择需要包含网络模块。 添加TCP服务器 我们需要添加一个TCP服务器来实现网络聊天室。在创建TCP服务器时,需要指定服务器绑定的IP地址和端口号。以下是示例代码: QTcpSer…

    C 2023年5月30日
    00
  • Golang 错误捕获Panic与Recover的使用

    Golang 错误捕获Panic与Recover的使用 简介 在 Golang 中,错误处理非常重要。正确的错误处理可以防止系统崩溃,并提供更良好的用户体验。在 Golang 中,有一种特殊的错误处理方式,即 Panic 和 Recover。 Panic 和 Recover 是一对关键字,用于在运行时处理程序崩溃的情况。Panic 是一种错误处理机制,它通常…

    C 2023年5月23日
    00
  • c++关键字const的用法详解

    下面就是对“c++关键字const的用法详解”的完整攻略。 什么是const const 是 C++ 中的一个关键字,用来定义常量。在 C++ 中,常量是指不能被修改的值。 const的用法 1. 修饰变量 const 可以用来定义一个常量变量,被 const 修饰的变量一旦被初始化,就不能被修改。 示例代码: const int a = 10; 2. 修饰…

    C 2023年5月22日
    00
  • win10下VSCode+CMake+Clang+GCC环境搭建教程图解

    以下是“win10下VSCode+CMake+Clang+GCC环境搭建教程图解”的完整攻略。 简介 Visual Studio Code是一款非常流行的开源跨平台代码编辑器。而CMake、Clang和GCC则是C/C++开发中用到的重要工具和库,它们能够优化代码编译、调试等方面的问题。在win10系统下配置VS Code+CMake+Clang+GCC环境…

    C 2023年5月23日
    00
  • STL list链表的用法详细解析

    STL list链表的用法详细解析 什么是STL list? STL list是STL(Standard Template Library)中的一个容器,是线性双向链表。该容器通过指针实现节点之间的连接。由于节点的删除和插入只需要操作前后节点的指针,因此在数据大量插入和删除的情况下,STL list比STL vector的效率更高。 list的基本使用 in…

    C 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部