学生成绩管理系统案例1

简介: 学生成绩管理系统案例

案例描述


案例要求模拟开发一个学生成绩管理系统,此系统具有以下功能:


添加学生信息,包括学号、姓名、语文成绩、数学成绩;


显示学生信息,将所有学生信息打印输出;


修改学生信息,可以根据姓名查找到学生,然后可以修改学生姓名、成绩项;


删除学生信息,根据学号查找到学生,将其信息删除;


查找学生信息,根据学生姓名,将其信息打印输出;


按学生总成绩进行从高到低排序。


这些功能之间的逻辑关系如下图所示:


image.png


学生成绩管理系统


案例分析


分析案例需求可知,该系统首先会向用户展现一个菜单选择界面,用户可以根据菜单界面的提示,选择不同的功能进入子界面,因此可以针对每一个功能定义一个函数,通过函数调用实现相应功能。由系统需求可知,该系统主要有6大功能,因此需要定义6个函数。


添加记录——add()函数当用户在功能菜单中选择数字1时,会调用add()函数进入添加记录模块,提示用户输入学生的学号、姓名、计算机基础成绩、数据结构成绩。当用户输入完毕后,会提示用户是否继续添加,Y表示继续,N表示返回。需要注意的是,在添加学号时不能重复,如果输入重复的学号就会提示此学号已存在。


void add(struct student stu[])
{
    int i, id = 0; //i作为循环变量,id用来保存新学号
    char quit;  //保存是否退出的选择
    do
    {
        printf("学号:");
        scanf("%d", &id);
        for (i = 0; i < n; i++)
        {
             if (id == stu[i].id)
            {
                printf("此学号存在!\n");
                 return;
            }
        }
       stu[i].id = id;
       printf("姓名:");
       scanf("%s", &stu[i].name);
       printf("计算机基础成绩:");
       scanf("%d", &stu[i].chinese);
       printf("数据结构成绩:");
       scanf("%d", &stu[i].math);
       stu[i].sum = stu[i].chinese + stu[i].math;
       n++;  //记录条数加1
       printf("是否继续添加?(Y/N)");
       scanf("\t%c", &quit);
    } while (quit != 'N');
}

显示记录——showAll()函数当用户在功能菜单中选择数字2时,会调用show()函数进入显示记录模块,并向控制台输出录入的所有学生的学号、姓名、数据结构成绩、计算机基础成绩和成绩总和。


void show(struct student stu[], int i)
{
    printf("%-10d", stu[i].id);
    printf("%-10s", stu[i].name);
    printf("%-10d", stu[i].chinese);
    printf("%-10d", stu[i].math);
    printf("%-10d\n", stu[i].sum);
}

修改记录——modify()函数当用户在功能菜单中选择数字3时,会调用modify()函数进入修改记录模块,输入要修改的学生姓名,当用户输入了已录入的学生姓名后,如果学生信息存在即可修改除学号以外的其他信息,否则输出没有找到该生的记录。


void modify(struct student stu[])
{
    char name[8], ch;
    int i;
    printf("修改学生的记录。\n");
    printf("请输入学生的姓名:");
    scanf("%s", &name);
    for (i = 0; i < n; i++)
    {
        if (strcmp(name, stu[i].name) == 0)
        {
             getchar();
             printf("找到该生的记录,如下所示:\n");
             HH;  //显示记录的标题
             show(stu, i);
             printf("是否修改?(Y/N)\n");
            scanf("%c", &ch);
            if (ch == 'Y' || ch == 'y')
            {
                 getchar();
                 printf("姓名:");
                 scanf("%s", &stu[i].name);
                 printf("计算机基础成绩:");
                 scanf("%d", &stu[i].chinese);
                 printf("数据结构成绩:");
                 scanf("%d", &stu[i].math);
                 stu[i].sum = stu[i].chinese + stu[i].math;
                 printf("修改完毕。\n");
            }
            return;
        }
    }
    printf("没有找到该生的记录。\n");
}


相关文章
|
8月前
|
C++
图书管理系统(C++)
图书管理系统(C++)
54 0
|
3月前
|
C语言 Python
图书管理系统
【10月更文挑战第11天】图书管理系统。
63 5
|
8月前
|
存储 Java
学生成绩管理系统
学生成绩管理系统
114 5
|
8月前
|
存储 安全 Java
图书管理系统的设计与实现
图书管理系统的设计与实现
|
存储 测试技术 数据库
【C语言课程设计】图书管理系统
【C语言课程设计】图书管理系统
206 0
|
存储 程序员 C#
基于C#实现的学生成绩管理系统
基于C#实现的学生成绩管理系统
199 0
|
C# 数据库
C#图书管理系统
C#图书管理系统
108 0
图书管理系统1
图书管理系统
171 1
图书管理系统2
图书管理系统
136 0
|
C++
使用C++实现的学生成绩管理系统(附完整代码)
使用C++实现的学生成绩管理系统(附完整代码)
1820 0
使用C++实现的学生成绩管理系统(附完整代码)

热门文章

最新文章