基于C语言学生成绩管理系统的设计与开发(中)

简介: 基于C语言学生成绩管理系统的设计与开发(中)

5.4、学生成绩管理系统的录入功能模块


  • 学生成绩管理系统的录入功能是实现学生信息录入的功能
  • 采用文件存储方式
  • 将学生数据存储与文件中
  • 可以方便使用学生的信息
  • 录入的功能是系统运行时,第一步要进行的操作
  • 本系统的录入功能是实现系统初始化登入时,将学生的信息录入文件中的功能。

在头文件中定义学生结构体的代码如下


#include <string.h>
#define SIZE 10000
typedef struct  tagStudent
{
  int n;                    /*顺序号*/
  int sNum;                 /*学号*/
  char sName[10];            /*姓名*/
  int sCn;                  /*语文成绩*/
  int sMaths;               /*数学成绩*/
  int sEn;                  /*英语成绩*/
  int sPhy;                 /*物理成绩*/
  int sCom;                 /*计算机成绩*/
  double sAvage;             /*平均成绩*/
} Student, *pStudent;
Student stu[SIZE];

学生成绩管理系统的录入功能模块的代码如下

// 录入信息功能
void stuInput()
{
    int i;      // 定义变量
    FILE* fp;   // 定义文件指针
    fp = fopen("studentfile.txt", "wb");        // 打开二进制文件
    while(1)
    {
        printf("\n\r请输入序号i(当输入i=-1时,返回), i = ");        
        scanf("%d", &i);        // 输入学生的序号
        if (i == -1)
        {
            fclose(fp);
            system("pause");
            system("cls");
            return;
        }
        else            // 输入学生相关信息
        {
            printf("\n\r请输入学号(数字型):");
            scanf("%d", &stu[i].sNum);
            printf("\n\r请输入姓名(字符型):");
            scanf("%s", stu[i].sName);
            printf("\n\r请输入语文成绩(0~100):");
            scanf("%d", &stu[i].sCn);
            printf("\n\r请输入数学成绩(0~100):");
            scanf("%d", &stu[i].sMaths);
            printf("\n\r请输入英语成绩:(0~100)");
            scanf("%d", &stu[i].sEn);
            printf("\n\r请输入物理成绩:(0~100)");
            scanf("%d", &stu[i].sPhy);
            printf("\n\r请输入计算机成绩(0~100):");
            scanf("%d", &stu[i].sCom);
            stu[i].sAvage = (stu[i].sCn + stu[i].sMaths + stu[i].sEn + stu[i].sPhy + stu[i].sCom) / 5.0;
            stu[i].n = i + 1;
            fwrite(&stu[i], sizeof(Student), 1, fp);        // 将学生信息写入二进制文件中
        }
    }
    fclose(fp);
}

进入学生成绩管理系统,根据主菜单信息的提示,选择数字1,进行学生信息的录入

录入的学生信息可以存储与txt文件之中

按F5调试结果如下


375650226865434491edadfa8b5b7039.png


打开学生成绩管理系统的的目录,打开txt文件,如下所示

7c6bdd89c7824b08811cd64d7d9584a5.png


  • 可以看做可以将学生的相关信息存储于txt类型的文章之中。
  • 可以方便使用文件查询学生的相关信息


5.5、学生成绩管理系统的输出功能模块


  • 生成绩管理系统的输出功能模块主要是输出学生的相关信息
  • 学生成绩的成绩可以从文件中读取出来

学生成绩管理系统的输出功能模块代码如下

// 输出信息功能
void stuOutput()
{
    int i;      // 定义变量
    FILE* fp;   // 定义文件指针
    fp = fopen("studentfile.txt", "rb");        // 打开二进制文件
    printf("***********************************************************************\n");
    printf("    成绩列表\n");
    printf("-----------------------------------------------------------------------\n");
    printf("序号  学号     姓名    语文    数学    英语    物理    计算机    平均\n");
    printf("-----------------------------------------------------------------------\n");
    for (i = 0; fread(&stu[i], sizeof(Student), 1, fp) == 1; i++)           // 从文件中输出学生信息
    {
        printf("%d%8d%8s%8d%8d%8d%8d%8d%10.2f\n",
            stu[i].n, stu[i].sNum, stu[i].sName,
            stu[i].sCn, stu[i].sMaths, stu[i].sEn, stu[i].sPhy, stu[i].sCom, stu[i].sAvage);
    }
    printf("-----------------------------------------------------------------------\n");
    fclose(fp);
    system("pause");
    system("cls");
}


  • 进入学生成绩管理系统,根据主菜单信息的提示,选择数字2,进行学生信息的输出
  • 输出的学生信息从txt文件中读取出来

按F5调试结果如下


af25e2421636495991610062d077fe80.png


  • 可以看到,学生管理系统可以输出存储于文件之中的相关信息信息。
  • 可以方便用户查询各个学生的学习成绩情况。


5.6、学生成绩管理系统的增加功能模块


  • 学生成绩管理系统的增加功能模块主要是实现学生信息添加的功能
  • 采用文件存储方式
  • 将学生数据存储与文件中
  • 在原有的学生信息基础上添加新的学生相关信息。
  • 添加功能可以方便用户增添学生的信息,并将文件存储与txt文件中。

学生成绩管理系统的增加功能模块代码如下


// 增加信息功能
void stuAdd()
{
    int i, s;      // 定义变量
    FILE* fp;      // 定义文件指针
    fp = fopen("studentfile.txt", "ab+");        // 打开二进制文件
    rewind(fp);
    printf("***********************************************************************\n");
    printf("      成绩列表\n");
    printf("-----------------------------------------------------------------------\n");
    printf("序号  学号     姓名    语文    数学    英语    物理    计算机    平均\n");
    printf("-----------------------------------------------------------------------\n");
    for (i = 0; fread(&stu[i], sizeof(Student), 1, fp) == 1; i++) // 输出文件中的学生信息
    {
        printf("%d%8d%8s%8d%8d%8d%8d%8d%10.2f\n", 
            stu[i].n, stu[i].sNum, stu[i].sName,
            stu[i].sCn, stu[i].sMaths, stu[i].sEn, stu[i].sPhy, stu[i].sCom, stu[i].sAvage);
    }
    printf("***********************************************************************\n");
    s = i;
    for (i = s; i < SIZE; i++)
    {
        printf("输入序号i(当输入i=-1时,返回):");
        scanf("%d", &i);
        if (i == -1 || i == 0)
        {
            fclose(fp);
            system("pause");
            system("cls");
            return;
        }
        else            // 增加学生信息
        {
            printf("\n\r请输入学号(数字型):");
            scanf("%d", &stu[i].sNum);
            printf("\n\r请输入姓名(字符型):");
            scanf("%s", stu[i].sName);
            printf("\n\r请输入语文成绩(0~100):");
            scanf("%d", &stu[i].sCn);
            printf("\n\r请输入数学成绩(0~100):");
            scanf("%d", &stu[i].sMaths);
            printf("\n\r请输入英语成绩:(0~100)");
            scanf("%d", &stu[i].sEn);
            printf("\n\r请输入物理成绩:(0~100)");
            scanf("%d", &stu[i].sPhy);
            printf("\n\r请输入计算机成绩(0~100):");
            scanf("%d", &stu[i].sCom);
            stu[i].sAvage = (stu[i].sCn + stu[i].sMaths + stu[i].sEn + stu[i].sPhy + stu[i].sCom) / 5.0;
            stu[i].n = i + 1;
            fwrite(&stu[i], sizeof(Student), 1, fp);
            printf("%d%8d%8s%8d%8d%8d%8d%8d%10.2f\n",
                stu[i].n, stu[i].sNum, stu[i].sName,
                stu[i].sCn, stu[i].sMaths, stu[i].sEn, stu[i].sPhy, stu[i].sCom, stu[i].sAvage);
        }
    }
    fclose(fp);
}


  • 进入学生成绩管理系统,根据主菜单信息的提示,选择数字3,进行学生信息的添加
  • 添加的学生信息存储与文件中
  • 新增加的信息信息可以输出显示

按F5调试结果如下

  • 添加学生信息


3fc3be7a8c7f42bfa6ac187e99025b21.png


  • 返回学生成绩管理系统主菜单,根据主菜单信息的提示,选择数字2,进行学生信息的查询,查询刚刚

添加的学生信息,查询结果如下所示


56d363ecf266491a8ecfb69e83974b3b.png


  • 可以看到,学生成绩管理系统可以正确添加新的学生的相关信息。
  • 可以体现出程序没有错误。


5.7、学生成绩管理系统的查询功能模块


  • 学生成绩管理系统的查询能模块主要是实现学生信息查询的功能
  • 从文件中读取学生信息数据。
  • 查询学生的信息是根据学生的学号进行查询。
  • 查询功能可以方便用户查询学生的信息,并将从文件中查询指定学生的信息输出显示。

学生成绩管理系统的查询功能模块代码如下

// 查询信息功能
void stuSearch()
{
    int i, num;      // 定义变量
    FILE* fp;        // 定义文件指针
    fp = fopen("studentfile.txt", "ab+");        // 打开二进制文件
    rewind(fp);
    printf("请输入要查找的学号:");
    scanf("%d", &num);
    for (i = 0; i <= SIZE; i++)
    {
        if (stu[i].sNum == num)
        {
            printf("***********************************************************************\n");
            printf("    查询结果\n");
            printf("-----------------------------------------------------------------------\n");
            printf("序号  学号     姓名    语文    数学    英语    物理    计算机    平均\n");
            printf("-----------------------------------------------------------------------\n");
            printf("%d%8d%8s%8d%8d%8d%8d%8d%10.2f\n",
                stu[i].n, stu[i].sNum, stu[i].sName,
                stu[i].sCn, stu[i].sMaths, stu[i].sEn, stu[i].sPhy, stu[i].sCom, stu[i].sAvage);
            printf("\n");
            system("pause");
            system("cls");
            fclose(fp);
            return;
        }
    }
    printf("***********************************************************************\n");
    printf("    查询结果\n");
    printf("-----------------------------------------------------------------------\n");
    printf("    没有查询到学生学号为:%d 的相关学生信息!!!\n", num);
    printf("-----------------------------------------------------------------------\n");
    printf("***********************************************************************\n\n");
    system("pause");
    system("cls");
    fclose(fp);
}
  • 进入学生成绩管理系统,根据主菜单信息的提示,选择数字4,进行学生信息的查询
  • 查询的学生信息存储与文件中
  • 查询到的学生信息可以进行显示

按F5调试结果如下

  • 当输入的学号在文件中存在时



348c9e704d1f47fb9704d3fbc0951c31.png


当输入的学号在文件中不存在时

c5db086ff65b493199ada39846713746.png

从调试结果来看,学生成绩管理系统的查询功能实现了。

可以查询存储于文件中的学生信息。


5.8、学生成绩管理系统的修改功能模块


学生成绩管理系统的修改能模块主要是实现学生信息修改的功能

从文件中读取学生信息数据。

先进行查询学生的信息是判断文件中是否有输入学号的学生相关数据。

在进行根据查询到的学生信息进行修改。

修改之后,可以显示出修改之后的学生信息。

学生成绩管理系统的修改功能模块代码如下


// 修改信息功能
void stuModify()
{
    int i, n, num, flag = 0;      // 定义变量
    FILE* fp;        // 定义文件指针
    fp = fopen("studentfile.txt", "ab+");        // 打开二进制文件
    printf("请输入要修改学生的学号:");
    scanf("%d", &num);
    for (i = 0; i <= SIZE; i++)
    {
        if (stu[i].sNum == num)
        {
            printf("***********************************************************************\n");
            printf("      成绩列表\n");
            printf("-----------------------------------------------------------------------\n");
            printf("序号  学号     姓名    语文    数学    英语    物理    计算机    平均\n");
            printf("-----------------------------------------------------------------------\n");
            printf("%d%8d%8s%8d%8d%8d%8d%8d%10.2f\n",
                stu[i].n, stu[i].sNum, stu[i].sName,
                stu[i].sCn, stu[i].sMaths, stu[i].sEn, stu[i].sPhy, stu[i].sCom, stu[i].sAvage);
            printf("-----------------------------------------------------------------------\n");
            printf("***********************************************************************\n");
            n = i;
            flag = 1;
            break;
        }
    }
    if (flag == 0)
    {
        printf("***********************************************************************\n");
        printf("    输入学生的学号错误!\n");
        printf("    请返回!\n");
        printf("***********************************************************************\n\n");
        system("pause");
        system("cls");
        return;
    }
    fp = fopen("studentfile.txt", "rb+");
    fseek(fp, n * sizeof(Student), 0);
    printf("\n\r请输入学号(数字型):");
    scanf("%d", &stu[i].sNum);
    printf("\n\r请输入姓名(字符型):");
    scanf("%s", stu[i].sName);
    printf("\n\r请输入语文成绩(0~100):");
    scanf("%d", &stu[i].sCn);
    printf("\n\r请输入数学成绩(0~100):");
    scanf("%d", &stu[i].sMaths);
    printf("\n\r请输入英语成绩:(0~100)");
    scanf("%d", &stu[i].sEn);
    printf("\n\r请输入物理成绩:(0~100)");
    scanf("%d", &stu[i].sPhy);
    printf("\n\r请输入计算机成绩(0~100):");
    scanf("%d", &stu[i].sCom);
    stu[i].sAvage = (stu[i].sCn + stu[i].sMaths + stu[i].sEn + stu[i].sPhy + stu[i].sCom) / 5.0;
    stu[i].n = i + 1;
    fwrite(&stu[i], sizeof(Student), 1, fp);
    fclose(fp);
    fp = fopen("studentfile.txt", "r");
    printf("***********************************************************************\n");
    printf("     修改信息成功\n");
    printf("      成绩列表\n");
    printf("-----------------------------------------------------------------------\n");
    printf("序号  学号     姓名    语文    数学    英语    物理    计算机    平均\n");
    printf("-----------------------------------------------------------------------\n");
    for (i = 0; fread(&stu[i], sizeof(Student), 1, fp) == 1; i++)
    {
        printf("%d%8d%8s%8d%8d%8d%8d%8d%10.2f\n",
            stu[i].n, stu[i].sNum, stu[i].sName,
            stu[i].sCn, stu[i].sMaths, stu[i].sEn, stu[i].sPhy, stu[i].sCom, stu[i].sAvage);
    }
    printf("-----------------------------------------------------------------------\n");
    printf("***********************************************************************\n\n");
    system("pause");
    system("cls");
    fclose(fp);
}


进入学生成绩管理系统,根据主菜单信息的提示,选择数字5,进行学生信息的修改。

先查询存储于文件中的学生信息。

根据查询到的学生信息可以根据提示进行修改学生信息

按F5调试结果如下

当输入的学号在文件中存在时


17f25902b7754aa0b5625e43e74b5284.png


当输入的学号在文件中不存在时

43462464475247ba8cfbff68b1747bbb.png


  • 从调试结果来看,学生成绩管理系统的修改功能实现了。
  • 可以修改存储于文件中的学生相关信息。
相关文章
|
4天前
|
自然语言处理 中间件 编译器
C语言的编译器和中间件开发
C语言的编译器和中间件开发
|
4天前
|
存储 编译器 C语言
用C语言判断并打印成绩等级
用C语言判断并打印成绩等级
用C语言判断并打印成绩等级
|
4天前
|
传感器 存储 物联网
【C 言专栏】基于 C 语言的物联网开发
【5月更文挑战第6天】C 语言在物联网发展中扮演关键角色,适用于开发嵌入式系统、通信协议及云平台后端服务。其高效、灵活、可移植的特性适应资源有限的环境,确保设备兼容性。尽管开发挑战较大,如代码可读性,但借助辅助工具可改善。随着物联网技术进步,C 语言将持续发挥重要作用,塑造智能未来。
【C 言专栏】基于 C 语言的物联网开发
|
4天前
|
存储 算法 C语言
【C 言专栏】用 C 语言开发游戏的实践
【5月更文挑战第5天】本文探讨了使用C语言开发游戏的实践,包括选择适合的游戏类型(如贪吃蛇、俄罗斯方块),设计游戏框架、图形界面和逻辑,以及音效添加。文章还强调了性能优化、测试调试、跨平台挑战及未来发展趋势。对于热衷于C语言的开发者,这是一次挑战与乐趣并存的探索之旅。
【C 言专栏】用 C 语言开发游戏的实践
|
4天前
|
传感器 算法 C语言
C语言在嵌入式系统开发中的优化策略与代码实现
C语言在嵌入式系统开发中的优化策略与代码实现
28 1
|
4天前
|
JavaScript 前端开发 Java
开发语言漫谈-C语言
C语言是最伟大的开发语言
|
4天前
|
存储 人工智能 搜索推荐
【C语言/C++】电子元器件管理系统(C源码)【独一无二】
【C语言/C++】电子元器件管理系统(C源码)【独一无二】
|
4天前
|
存储 C语言 数据安全/隐私保护
C语言实现简易银行账户管理系统
C语言实现简易银行账户管理系统
41 1
|
4天前
|
存储 C语言
C语言实现学生成绩管理系统
C语言实现学生成绩管理系统
28 2
|
4天前
|
存储 文件存储 C语言
《C语言程序设计》课程设计 -- 火车票票务管理系统
《C语言程序设计》课程设计 -- 火车票票务管理系统
32 1