C语言实现学生成绩管理系统项目

C语言实现学生成绩管理系统项目攻略

1. 需求分析

在开发学生成绩管理系统前,我们需要对系统的功能需求进行分析。在此项目中,我们需要实现以下功能:

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

2. 数据结构设计

在此项目中,我们需要定义一个结构体来存储学生的信息,该结构体包含以下信息:

struct Student {
    int id;
    char name[20];
    float score;
};

其中,id为学生的学号,name为学生的姓名,score为学生的成绩。

3. 实现步骤

3.1 添加学生信息

用数组存储学生信息,每次添加学生信息后,数组的长度会加1。

struct Student stu[100];
int len = 0;

void addStudent() {
    struct Student student;
    printf("请输入学生的学号:");
    scanf("%d", &student.id);
    printf("请输入学生的姓名:");
    scanf("%s", student.name);
    printf("请输入学生的成绩:");
    scanf("%f", &student.score);
    stu[len++] = student;
    printf("添加成功!\n");
}

3.2 删除学生信息

通过学生的学号删除学生信息,如果输入的学号不存在,则提示删除失败。

void deleteStudent() {
    int id;
    int index = -1;
    printf("请输入要删除的学生的学号:");
    scanf("%d", &id);
    for (int i = 0; i < len; i++) {
        if (stu[i].id == id) {
            index = i;
            break;
        }
    }
    if (index != -1) {
        for (int i = index; i < len - 1; i++) {
            stu[i] = stu[i + 1];
        }
        len--;
        printf("删除成功!\n");
    } else {
        printf("删除失败,该学号不存在!\n");
    }
}

3.3 修改学生信息

通过学生的学号修改学生信息,如果输入的学号不存在,则提示修改失败。

void updateStudent() {
    int id;
    int index = -1;
    printf("请输入要修改的学生的学号:");
    scanf("%d", &id);
    for (int i = 0; i < len; i++) {
        if (stu[i].id == id) {
            index = i;
            break;
        }
    }
    if (index != -1) {
        struct Student student;
        printf("请输入学生的学号:");
        scanf("%d", &student.id);
        printf("请输入学生的姓名:");
        scanf("%s", student.name);
        printf("请输入学生的成绩:");
        scanf("%f", &student.score);
        stu[index] = student;
        printf("修改成功!\n");
    } else {
        printf("修改失败,该学号不存在!\n");
    }
}

3.4 查询学生信息

通过学生的学号查询学生信息,如果输入的学号不存在,则提示查询失败。

void queryStudent() {
    int id;
    int index = -1;
    printf("请输入要查询的学生的学号:");
    scanf("%d", &id);
    for (int i = 0; i < len; i++) {
        if (stu[i].id == id) {
            index = i;
            break;
        }
    }
    if (index != -1) {
        printf("学号\t姓名\t成绩\n");
        printf("%d\t%s\t%.2f\n", stu[index].id, stu[index].name, stu[index].score);
    } else {
        printf("查询失败,该学号不存在!\n");
    }
}

3.5 展示所有学生信息

展示所有学生信息。

void showAllStudents() {
    printf("学号\t姓名\t成绩\n");
    for (int i = 0; i < len; i++) {
        printf("%d\t%s\t%.2f\n", stu[i].id, stu[i].name, stu[i].score);
    }
}

4. 示例说明

给出两个实现示例。

示例1

int main() {
    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 1:
                addStudent();
                break;
            case 2:
                deleteStudent();
                break;
            case 3:
                updateStudent();
                break;
            case 4:
                queryStudent();
                break;
            case 5:
                showAllStudents();
                break;
            case 0:
                printf("谢谢使用!\n");
                return 0;
            default:
                printf("无效的操作,请重新选择!\n");
                break;
        }
    }
}

示例2

int main() {
    addStudent();
    addStudent();
    addStudent();
    updateStudent();
    showAllStudents();
    deleteStudent();
    showAllStudents();
    queryStudent();
}

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

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

相关文章

  • C# 中如何使用Thread

    在C#中,我们可以使用Thread类来实现多线程编程。下面是使用Thread类来创建线程的详细攻略: 创建线程 要使用Thread实现线程,首先需要创建一个Thread对象,包含线程要执行的方法。 Thread thread = new Thread(new ThreadStart(ThreadMethod)); 此处ThreadMethod代表线程要执行的…

    C 2023年5月22日
    00
  • R语言常见面试题整理

    R语言常见面试题整理 1. R语言基础 1.1 R中的数据类型有哪些? 在R语言中,常见的数据类型包括: 数值型(numeric) 字符型(character) 逻辑型(logical) 因子型(factor) 时间型(time) 数据框(data frame) 列表(list) 矩阵(matrix) 1.2 请解释一下R语言中assign函数的作用。 as…

    C 2023年5月22日
    00
  • 详解QML 调用 C++ 中的内容

    让我来为您详细讲解“详解QML 调用 C++ 中的内容”的完整攻略。 什么是 QML QML(Qt Meta-Object Language)是一种基于 JavaScript 的声明性语言,用于创建用户界面。它是 Qt 框架中的一部分,可以与 C++ 混合使用,适用于创建富有动态效果的跨平台应用程序。 QML 调用 C++ 通过 QML 调用 C++ 是实现…

    C 2023年5月22日
    00
  • OPPO R1C配置怎么样?OPPO R1C参数配置详情

    OPPO R1C配置怎么样?OPPO R1C参数配置详情 OPPO R1C是一款2015年发布的中高端智能手机。它采用了2.5D弧面玻璃设计,同时具有出色的硬件配置和摄影体验。下面将详细介绍OPPO R1C的参数配置。 CPU OPPO R1C搭载了高通骁龙615处理器,采用了八核心设计,其中四个核心采用了1.7GHz主频的Cortex-A53架构,另外四个…

    C 2023年5月23日
    00
  • C语言中#if的使用详解

    让我详细讲解一下“C语言中#if的使用详解”的完整攻略。 1. #if的基本用法 if指令是C语言中条件编译的一种方式。它的用法如下: #if condition /* some code */ #endif 其中,condition可以是任何能被求值的表达式,通常是宏定义或预定义宏。如果condition为真,该指令中的代码才会被编译,否则该指令中的代码将…

    C 2023年5月23日
    00
  • C 头文件

    下面详细讲解一下 C 头文件的完整使用攻略。 什么是 C 头文件 在 C 语言中,头文件是一种特殊的文件,它包含了一些函数和变量的声明,可以被其他源文件引用。头文件的作用就是让代码更好维护和组织,可以将程序中的一些常用的函数和变量声明都放在头文件中,便于管理和使用。 如何使用 C 头文件 C 头文件通常包含两个部分:宏定义和函数声明。其中,宏定义是用来定义一…

    C 2023年5月10日
    00
  • gin 获取post请求的json body操作

    获取post请求的json body操作指的是在网站的后端处理中,从请求中获取客户端使用POST方式提交的JSON数据。在Gin框架中,可以使用以下步骤来实现该操作。 1. 引入相关库 在Go中,可以使用标准库encoding/json来处理JSON数据。为了在Gin框架中方便处理JSON数据,需要引入github.com/gin-gonic/gin库。 i…

    C 2023年5月23日
    00
  • C++11 并发指南之Lock 详解

    C++11 并发指南之 Lock 详解 什么是 Lock Lock 是一种同步机制,用于保护共享资源以避免并发访问。当多个线程访问同一个共享资源时,Lock 可以确保每个线程在使用共享资源时都是互斥的,从而避免竞态条件(Race Condition)和内存相关的不一致性问题。 Lock 的使用方法 C++11 中提供了两种 Lock 的实现方式:std::m…

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