C语言实现简单学生管理系统

C语言实现简单学生管理系统攻略

1. 确定需求

在C语言实现简单学生管理系统之前,我们首先需要明确该系统的需求,例如:

  • 能够添加学生信息
  • 能够删除学生信息
  • 能够修改学生信息
  • 能够查询学生信息
  • 能够显示所有学生信息

2. 设计数据库

在明确了系统的需求后,我们需要设计一个合适的数据库来存储学生信息。在我们的例子中,我们可以使用一个结构体来存储学生信息:

typedef struct {
    char name[20];
    int age;
    char id[20];
    float score;
} student_t;

在这个结构体中,我们定义了4个学生信息,分别为姓名、年龄、学号和成绩。

3. 实现系统功能

有了数据库之后,我们就可以开始实现系统的各种功能。下面我们将分别介绍如何实现添加、删除、修改、查询和显示学生信息这几个功能。

3.1 添加学生信息

添加学生信息主要包括以下几个步骤:

  1. 输入学生信息;
  2. 将学生信息保存到数据库中。

示例代码:

void add_student(student_t *students, int *count) {
    printf("请输入学生姓名:");
    scanf("%s", students[*count].name);
    printf("请输入学生年龄:");
    scanf("%d", &students[*count].age);
    printf("请输入学生学号:");
    scanf("%s", students[*count].id);
    printf("请输入学生成绩:");
    scanf("%f", &students[*count].score);
    (*count)++;
    printf("添加学生信息成功!\n");
}

3.2 删除学生信息

删除学生信息主要包括以下几个步骤:

  1. 输入要删除的学生学号;
  2. 在数据库中查找该学生信息;
  3. 删除该学生信息。

示例代码:

void delete_student(student_t *students, int *count) {
    char id[20];
    int i, flag = 0;
    printf("请输入要删除的学生学号:");
    scanf("%s", id);
    for (i = 0; i < *count; i++) {
        if (strcmp(students[i].id, id) == 0) {
            flag = 1;
            break;
        }
    }
    if (flag) {
        for (; i < (*count)-1; i++) {
            students[i] = students[i+1];
        }
        (*count)--;
        printf("删除学生信息成功!\n");
    } else {
        printf("没有找到指定学生信息!\n");
    }
}

3.3 修改学生信息

修改学生信息主要包括以下几个步骤:

  1. 输入要修改的学生学号;
  2. 在数据库中查找该学生信息;
  3. 输入修改后的学生信息;
  4. 更新数据库中的学生信息。

示例代码:

void edit_student(student_t *students, int count) {
    char id[20];
    int i, flag = 0;
    printf("请输入要修改的学生学号:");
    scanf("%s", id);
    for (i = 0; i < count; i++) {
        if (strcmp(students[i].id, id) == 0) {
            flag = 1;
            break;
        }
    }
    if (flag) {
        printf("请输入学生姓名:");
        scanf("%s", students[i].name);
        printf("请输入学生年龄:");
        scanf("%d", &students[i].age);
        printf("请输入学生成绩:");
        scanf("%f", &students[i].score);
        printf("修改学生信息成功!\n");
    } else {
        printf("没有找到指定学生信息!\n");
    }
}

3.4 查询学生信息

查询学生信息主要包括以下几个步骤:

  1. 输入要查询的学生学号;
  2. 在数据库中查找该学生信息;
  3. 输出该学生的信息。

示例代码:

void search_student(student_t *students, int count) {
    char id[20];
    int i, flag = 0;
    printf("请输入要查询的学生学号:");
    scanf("%s", id);
    for (i = 0; i < count; i++) {
        if (strcmp(students[i].id, id) == 0) {
            flag = 1;
            printf("姓名:%s\n", students[i].name);
            printf("年龄:%d\n", students[i].age);
            printf("学号:%s\n", students[i].id);
            printf("成绩:%.2f\n", students[i].score);
            break;
        }
    }
    if (!flag) {
        printf("没有找到指定学生信息!\n");
    }
}

3.5 显示所有学生信息

显示所有学生信息主要包括以下几个步骤:

  1. 遍历数据库中的所有学生信息;
  2. 输出每个学生的信息。

示例代码:

void display_students(student_t *students, int count) {
    int i;
    if (count == 0) {
        printf("暂无学生信息!\n");
    } else {
        printf("姓名\t年龄\t学号\t成绩\n");
        for (i = 0; i < count; i++) {
            printf("%s\t%d\t%s\t%.2f\n", students[i].name, students[i].age, students[i].id, students[i].score);
        }
    }
}

4. 完整代码

最后,我们将上述功能代码整合起来,得到完整的学生管理系统代码:

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

typedef struct {
    char name[20];
    int age;
    char id[20];
    float score;
} student_t;

void add_student(student_t *students, int *count);
void delete_student(student_t *students, int *count);
void edit_student(student_t *students, int count);
void search_student(student_t *students, int count);
void display_students(student_t *students, int count);

int main() {
    student_t students[100];
    int count = 0;
    int choice;
    while (1) {
        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 0:
                printf("欢迎下次再来!\n");
                return 0;
            case 1:
                add_student(students, &count);
                break;
            case 2:
                delete_student(students, &count);
                break;
            case 3:
                edit_student(students, count);
                break;
            case 4:
                search_student(students, count);
                break;
            case 5:
                display_students(students, count);
                break;
            default:
                printf("无效的选项,请重新输入!\n");
                break;
        }
    }
    return 0;
}

void add_student(student_t *students, int *count) {
    printf("请输入学生姓名:");
    scanf("%s", students[*count].name);
    printf("请输入学生年龄:");
    scanf("%d", &students[*count].age);
    printf("请输入学生学号:");
    scanf("%s", students[*count].id);
    printf("请输入学生成绩:");
    scanf("%f", &students[*count].score);
    (*count)++;
    printf("添加学生信息成功!\n");
}

void delete_student(student_t *students, int *count) {
    char id[20];
    int i, flag = 0;
    printf("请输入要删除的学生学号:");
    scanf("%s", id);
    for (i = 0; i < *count; i++) {
        if (strcmp(students[i].id, id) == 0) {
            flag = 1;
            break;
        }
    }
    if (flag) {
        for (; i < (*count)-1; i++) {
            students[i] = students[i+1];
        }
        (*count)--;
        printf("删除学生信息成功!\n");
    } else {
        printf("没有找到指定学生信息!\n");
    }
}

void edit_student(student_t *students, int count) {
    char id[20];
    int i, flag = 0;
    printf("请输入要修改的学生学号:");
    scanf("%s", id);
    for (i = 0; i < count; i++) {
        if (strcmp(students[i].id, id) == 0) {
            flag = 1;
            break;
        }
    }
    if (flag) {
        printf("请输入学生姓名:");
        scanf("%s", students[i].name);
        printf("请输入学生年龄:");
        scanf("%d", &students[i].age);
        printf("请输入学生成绩:");
        scanf("%f", &students[i].score);
        printf("修改学生信息成功!\n");
    } else {
        printf("没有找到指定学生信息!\n");
    }
}

void search_student(student_t *students, int count) {
    char id[20];
    int i, flag = 0;
    printf("请输入要查询的学生学号:");
    scanf("%s", id);
    for (i = 0; i < count; i++) {
        if (strcmp(students[i].id, id) == 0) {
            flag = 1;
            printf("姓名:%s\n", students[i].name);
            printf("年龄:%d\n", students[i].age);
            printf("学号:%s\n", students[i].id);
            printf("成绩:%.2f\n", students[i].score);
            break;
        }
    }
    if (!flag) {
        printf("没有找到指定学生信息!\n");
    }
}

void display_students(student_t *students, int count) {
    int i;
    if (count == 0) {
        printf("暂无学生信息!\n");
    } else {
        printf("姓名\t年龄\t学号\t成绩\n");
        for (i = 0; i < count; i++) {
            printf("%s\t%d\t%s\t%.2f\n", students[i].name, students[i].age, students[i].id, students[i].score);
        }
    }
}

结语

通过上述步骤的介绍,我们可以开发一个简单的学生管理系统。在实际开发过程中,我们还需要注意输入的合法性、重复数据的判断等,以确保系统的稳定性和完整性。

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

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

相关文章

  • C语言深入讲解语句与选择结构的使用

    C语言深入讲解语句与选择结构的使用 1. 语句的基础知识 在使用C语言编程时,我们使用语句来实现程序的功能。语句是一个完整的操作指令,每一个语句都执行一定的任务。 C语言的基本语句分为以下几种: 1.1 赋值语句 赋值语句可以将一个值赋给变量,语法如下: variable = expression; 其中,variable 表示变量名,expression …

    C 2023年5月24日
    00
  • Win10系统共享打印机0x000003ec连接失败怎么办?(附解决方法)

    Win10系统共享打印机0x000003ec连接失败怎么办?(附解决方法) 问题描述 在 Win10 系统中,尝试连接共享打印机时,可能会遇到错误提示 0x000003ec,即“Windows 无法安装该打印机”。此时需要解决该问题,才能成功连接共享打印机。 解决方法 方法一:重置打印机池服务 按下快捷键 Win + R 打开运行窗口; 输入 service…

    C 2023年5月23日
    00
  • C语言goto语句简单使用详解

    标题及概述 C语言goto语句简单使用详解 本篇文章主要介绍C语言中的goto语句,在程序中使用goto语句可以跳转到程序中的指定标记处,便于程序的编写和调试。 goto语句的基本语法 goto语句的基本语法如下: goto label; 其中,label为指定的标记名称,可以位于任何一个语句之前或者其中。 goto语句的使用方法 在程序中使用goto语句可…

    C 2023年5月23日
    00
  • 基于C语言实现的迷宫游戏代码

    基于C语言实现的迷宫游戏代码攻略 1. 程序介绍 本程序是基于C语言实现的迷宫游戏,通过命令行界面进行操作。玩家需要通过键盘操作,控制角色在迷宫中找到出口,并避开障碍物。 2. 程序设计 2.1 数据结构 程序需要用到以下数据结构: 迷宫地图:二维数组,用于存储迷宫地图中的信息,如墙、障碍物、出口等。 角色位置:定义一个结构体,用于存储角色的位置信息,包括坐…

    C 2023年5月23日
    00
  • PHP JSON格式的中文显示问题解决方法

    PHP 中 JSON 格式对于中文字符的处理方式存在一些问题,下面提供一种解决方法。 问题分析 在使用 PHP 中的 json_encode 函数将一个数组或对象转换为 JSON 字符串时,如果数组或对象中含有中文字符,那么生成的 JSON 字符串中这些中文字符会被转义成 Unicode 编码形式。 例如,以下数组: $data = [ "name…

    C 2023年5月23日
    00
  • C语言实现俄罗斯方块小游戏

    C语言实现俄罗斯方块小游戏 简介 俄罗斯方块是一种经典的电子游戏,是由前苏联设计师在1984年开发的。这个游戏的基本玩法是在一个长方形的游戏界面中不断地掉落各种形状的砖块,玩家需要操控这些砖块的位置和方向,让它们在界面内排列出完整的一行或几行,以获得分数。 在此,我们将使用C语言来实现俄罗斯方块小游戏。 实现步骤 步骤一:界面设计 首先,我们需要确定游戏的界…

    C 2023年5月23日
    00
  • C++实现从数组中同时取出最大最小元素算法示例

    C++实现从数组中同时取出最大最小元素算法示例 算法思路 从数组中取最大最小值的算法是比较基础的一种算法,其实现思路也较为简单。本算法的实现思路如下: 定义一个变量来存储最大值,首先将其赋值为数组的第一个元素。 定义一个变量来存储最小值,首先将其赋值为数组的第一个元素。 遍历数组中的每一个元素,当找到一个比当前最大值还大的元素时,将最大值变量的值更新为该元素…

    C 2023年5月23日
    00
  • C语言中如何进行跨平台开发?

    C语言是一种跨平台编程语言,因为它的编译器可以在不同的操作系统上进行编译。然而,由于操作系统本身的不同,开发跨平台应用程序的过程可能会涉及不同的挑战。以下是C语言进行跨平台开发的完整攻略: 选择跨平台的库和框架 一些跨平台库和框架可以帮助开发者更轻松地在不同平台之间移植代码,避免特定于平台的依赖关系。例如,QT是一个开源跨平台GUI框架,可以用于开发Wind…

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