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语言程序设计50例(经典收藏)

    “C语言程序设计50例(经典收藏)”是一本经典的编程书籍,旨在通过50个经典的C语言程序设计例子,让读者提高编程水平。本书包含了基础及进阶语言知识和常用数据结构的实现等内容,是提高编程技能的好教材。 以下是该书的完整攻略: 一、书籍概述 “C语言程序设计50例(经典收藏)”是一本C语言编程经典书籍,一共有50个程序例子,每个例子都对应着一种编程思路,适合初学…

    C 2023年5月23日
    00
  • C语言中的窗口滑动技术

    C语言中的窗口滑动技术详解 窗口滑动技术介绍 窗口滑动技术指的是在一段连续的数据流中,以固定大小的窗口对数据进行处理的技术。在C语言中,窗口滑动技术常用于数据压缩、数据加密、错误检测等领域。 窗口滑动技术实现 C语言中,实现窗口滑动技术通常使用循环结构和指针。下面是一段实现基础窗口滑动的示例代码: char buffer[1024]; int window_…

    C 2023年5月9日
    00
  • C++实现飞机大战

    下面是“C++实现飞机大战”的完整攻略: 步骤一:准备工作 在开始编写代码之前,我们需要先做一些准备工作。具体涉及如下内容: 下载适合的编译器,例如Visual Studio、Code Blocks等,并安装好; 确定好游戏的基本框架,例如游戏背景、玩家飞机、敌人飞机、子弹等元素; 设计好游戏的逻辑,例如怎样计分、怎样判断是否结束游戏等。 在做好了这些准备工…

    C 2023年5月24日
    00
  • Linux中生成Core Dump系统异常信息记录文件的教程

    生成Core Dump文件一般用于分析程序在运行过程中出现的异常情况,其中包含了详细的系统异常信息。下面是在Linux系统中生成Core Dump文件的教程: 1. 设置ulimit值 在生成Core Dump文件前,要先设置ulimit值,其中ulimit -c设置生成Core Dump文件的大小(单位:KB),ulimit -S -c 0表示不生成任何C…

    C 2023年5月23日
    00
  • C语言实现魔方比赛管理系统

    C语言实现魔方比赛管理系统 系统实现需求 本系统需要实现以下功能: 登录与注册功能 管理员与普通用户权限管理 创建比赛与编辑比赛 报名参加比赛 评分与排名展示功能 系统框架 本系统采用C语言,使用MySQL数据库进行数据存储。 系统框架如下: graph TD; A[登录与注册] –> B[管理员与普通用户权限管理]; B –> C[创建比赛…

    C 2023年5月24日
    00
  • 一篇文章带你顺利通过Python OpenCV入门阶段

    一篇文章带你顺利通过Python OpenCV入门阶段 介绍 Python是一种非常流行的编程语言,而OpenCV则是一个常用的计算机视觉库。结合它们,可以开发出许多强大的图像处理工具和算法。本篇文章将带领你了解Python OpenCV的入门阶段,帮助你熟悉如何使用Python OpenCV进行图像处理。 环境设置 在开始使用Python OpenCV之前…

    C 2023年5月23日
    00
  • 基于C++和MFC开发象棋程序

    首先我将整个攻略分为四个步骤:设计需求、编写程序、测试调试、部署发布,下面我将详细讲解每一步骤。 1. 设计需求 在设计象棋程序时,先要明确需求和目标,需要考虑的基本功能包括:棋盘、棋子、走法、算法、界面等。根据需求,我们可以开始设计程序的结构和框架。 以下是一些示例说明: 示例1:棋子类设计 棋子类应该包括棋子的类型、颜色、当前位置等属性,以及移动方法、判…

    C 2023年5月23日
    00
  • 一篇文章带你入门C语言:操作符

    一篇文章带你入门C语言:操作符 简介 C语言作为一门被广泛应用的高级编程语言,掌握其基本操作符的使用是进行编程的重要基础。本文将系统介绍C语言中常用的操作符及其用法,通过例子的讲解,帮助初学者快速入门。 算术操作符 算术操作符主要包括加减乘除运算,其中加、减运算符直接用“+”和“-”表示,乘、除运算符则分别用“*”和“/”表示。 示例1:计算两个数的加法和乘…

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