【C语言】学生管理系统:完整模拟与实现(二)

简介: 【C语言】学生管理系统:完整模拟与实现

【C语言】学生管理系统:完整模拟与实现(一)https://developer.aliyun.com/article/1617248

4.3 实现学生成绩管理系统接口(主要是对顺序表接口的复用)

4.3.1学生信息的初始化

void Achievement_Init(Achievement* ac)
{
    SLInit(ac);
}

4.3.2 学生信息的销毁

void Achievement_Destroy(Achievement* ac)
{
    SLDestroy(ac);
}

4.3.3 添加学生信息

void Achievement_Add(Achievement* ac)
{
    AInfo info;
    printf("请分别输入学生的名字、性别、学号、成绩\n");
    scanf("%s %s %s %d", 
          info._name, 
          info._sex, 
          info._registration, 
          &info._grades);
    //往(顺序表)中插入数据
    SLPushBack(ac, info);
}

4.3.4 查找指定学生的下标

int FindSTName(Achievement* ac, char name[])
{
    for (int i = 0; i < ac->_size; i++)
    {
        if (strcmp(ac->_a[i]._name, name) == 0 )
        {
            return i;
        }
    }
    return -1;
}

4.3.5 删除学生信息

void Achievement_Del(Achievement* ac)
{
    assert(ac);
    //根据用户的名字进行删除
    printf("请输入你需要删除的学生姓名\n");
    char name[NAME_MAX];
    scanf("%s", name);
    int findidex = FindSTName(ac, name);
    if (findidex < 0)
    {
        printf("你需要删除的学生信息不存在\n");
        return;
    }
    //找到了进行删除操作
    SLErase(ac, findidex);
}

4.3.6 查看学生成绩信息

void Achievement_Show(Achievement* ac)
{
    printf("系统正在加载中....\n");
    Sleep(3000);
    printf("系统加载完成!\n");
    //打印表头信息
    printf("%s %s %-10s %s\n", "学生姓名", "学生性别", "学生学号", "学生成绩");
    for(int i =0; i < ac->_size; i++)
    {
        printf("%-10s %-5s %-8s %-d分\n", ac->_a[i]._name, ac->_a[i]._sex, 
               ac->_a[i]._registration, ac->_a[i]._grades);
    }
}

4.3.7 修改学生信息

void Achievement_Modify(Achievement* ac)
{
    assert(ac);
    //根据用户的名字进行修改 成绩
    printf("请输入你需要修改的学生姓名\n");
    char name[NAME_MAX];
    scanf("%s", name);
    int findidex = FindSTName(ac, name);
    if (findidex < 0)
    {
        printf("你需要修改的学生信息不存在\n");
        return;
    }
    printf("系统正在加载中....\n");
    Sleep(3000);
    printf("系统加载完成!\n");
    printf("请重新分别输入学生的名字、性别、学号、成绩\n");
    scanf("%s %s %s %d", 
          ac->_a[findidex]._name, 
          ac->_a[findidex]._sex,
          ac->_a[findidex]._registration,
          &ac->_a[findidex]._grades);
    printf("修改成功!\n");
}

4.3.8 查找指定学生信息

void  Achievement_Find(Achievement* ac)
{
    assert(ac);
    //根据用户的名字进行修改 成绩
    printf("请输入你需要查找的学生姓名\n");
    char name[NAME_MAX];
    scanf("%s", name);
    int findidex = FindSTName(ac, name);
    if (findidex < 0)
    {
        printf("你需要查找的学生信息不存在\n");
        return;
    }
    printf("系统正在加载中....\n");
    Sleep(3000);
    printf("系统加载完成!\n");
    printf("以下是你需要查找的学生信息\n");
    printf("%-10s %-5s %-8s %-d分\n", ac->_a[findidex]._name, ac->_a[findidex]._sex,
           ac->_a[findidex]._registration, ac->_a[findidex]._grades);
}

4.3.9 按照名字或者成绩排序

//按照名字或者成绩排序
 void Achievement_Sort(Achievement* ac)
 {
 enum AcInfo select;
 printf("请输入你需要按照什么类型排序:(1->Name,2->Registration,3->Grades)\n");
 
 // 清空输入缓冲区
 fflush(stdin);
 
 scanf("%u", &select);
 
 if (select < Name || select > Grades)
 {
 printf("输入的排序类型无效!\n");
 return; // 或者采取其他合适的处理方式
 }
 //这个名字就代表什么数据
 switch (select)
 {
 case Name:
 qsort(ac->_a, ac->_size, sizeof(ac->_a[0]), Name_Compare);
 break;
 case Registration:
 qsort(ac->_a, ac->_size, sizeof(ac->_a[0]), Registration_Compare);
 break;
 case Grades:
 qsort(ac->_a, ac->_size, sizeof(ac->_a[0]), Grades_Compare);
 break;
 default:
 break;
 }
 printf("排序成功\n");
 }


【C语言】学生管理系统:完整模拟与实现(三)https://developer.aliyun.com/article/1617255

相关文章
|
3天前
|
存储 编译器 C语言
【C语言】学生管理系统:完整模拟与实现(一)
【C语言】学生管理系统:完整模拟与实现
|
1天前
|
存储 C语言
手把手教你用C语言实现通讯录管理系统
手把手教你用C语言实现通讯录管理系统
|
3天前
|
测试技术 C语言
【C语言】学生管理系统:完整模拟与实现(三)
【C语言】学生管理系统:完整模拟与实现
|
2月前
|
存储 C语言
【C语言】C语言-宾馆客房管理系统(源码+论文)【独一无二】
【C语言】C语言-宾馆客房管理系统(源码+论文)【独一无二】
【C语言】C语言-宾馆客房管理系统(源码+论文)【独一无二】
|
2月前
|
存储 C语言
【C语言】C语言-学生成绩管理系统(源码+数据文件+课程论文)【独一无二】
【C语言】C语言-学生成绩管理系统(源码+数据文件+课程论文)【独一无二】
40 15
|
2月前
|
存储 C语言
学生管理系统(C语言简单实现)
这篇文章是关于使用C语言实现一个简单的学生管理系统,包括文件的基本应用、数据结构设计、函数实现以及用户界面交互。
学生管理系统(C语言简单实现)
|
2月前
|
存储 数据可视化 数据安全/隐私保护
【C语言】C语言-成绩管理系统(管理员+教师+学生 源码)【独一无二】
【C语言】C语言-成绩管理系统(管理员+教师+学生 源码)【独一无二】
|
2月前
|
存储 数据可视化 C语言
【C语言】C语言-身份证管理系统(源码+注释)【独一无二】
【C语言】C语言-身份证管理系统(源码+注释)【独一无二】
|
2月前
|
存储 数据可视化 C语言
【C语言】C语言-学生籍贯信息记录系统(源码+论文)【独一无二】
【C语言】C语言-学生籍贯信息记录系统(源码+论文)【独一无二】
|
2月前
|
存储 C语言
【C语言】C语言-学生选修课程系统(源码)【独一无二】
【C语言】C语言-学生选修课程系统(源码)【独一无二】