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

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

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

4.3.10 比较函数的接口

int Name_Compare(const void* e1, const void* e2)
{
    //是每个元素之间的比较
    const AInfo* a1 = (const AInfo*) e1;
    const AInfo* a2 = (const AInfo*) e2;
    return strcmp(a1->_name, a2->_name);
}
int Registration_Compare(const void* e1, const void* e2)
{
    //是每个元素之间的比较
    const AInfo* a1 = (const AInfo*)e1;
    const AInfo* a2 = (const AInfo*)e2;
    return strcmp(a1->_registration, a2->_registration);
}
int Grades_Compare(const void* e1, const void* e2)
{
    //是每个元素之间的比较
    const AInfo* a1 = (const AInfo*)e1;
    const AInfo* a2 = (const AInfo*)e2;
    //如果是100分就会出现问题
    //是根据字符的大小进行判断
    //所以这里成绩可以整型的比较进行
    return a1->_grades - a2->_grades;
}

4.4 菜单界面

#define _CRT_SECURE_NO_WARNINGS 1
#include "SeqList.h"
#include "Management System.h"
void mune()
{
    printf("*****************************************************\n");
    printf("************欢迎使用学生成绩管理系统*****************\n");
    printf("*****1.添加学生信息********2.删除学生信息************\n");
    printf("*****************************************************\n");
    printf("*****3.修改学生信息********4.查找指定学生信息*********\n");
    printf("*****************************************************\n");
    printf("*****5.查看全部学生信息****6.按照名字或者成绩排序******\n");
    printf("***************0.退出系统*****************************\n");
    printf("*****************************************************\n");
}
int main()
{
    typedef struct SeqList AInfo;
    AInfo ac;
    Achievement_Init(&ac);
    int input;
    mune();
    do
    {
        printf("请根据菜单选择你需要完成的操作\n");
        // 清空输入缓冲区
        fflush(stdin);
        scanf("%d", &input);
        printf("请稍等!\n");
        switch (input)
        {
            case 0: printf("成功退出该系统");
                Achievement_Destroy(&ac);
                break;
            case 1: 
                Achievement_Add(&ac);
                break;
            case 2: Achievement_Del(&ac);
                break;
            case 3: Achievement_Modify(&ac);
                break;
            case 4: Achievement_Find(&ac);
                break;
            case 5: Achievement_Show(&ac);
                break;
            case 6: Achievement_Sort(&ac);
                break;
            default:
                printf("非法输入,请重新输入\n");
                break;
        }
    } while (input);
    return 0;
}

五、以下是系统测试情况

将sqort比较函数是对于元素进行比较,在强转类型转化的时候,类型我给了定义顺序表结构的结构体类型,而不是顺序表中内嵌学生信息的结构体类型,所以导致了错误。

当然这一块学生按照名字,学号,成绩排序,在学习枚举时。我想到了以枚举类型代替数据,从而配合switch分支语句,进行选择性的根据不同要求进行排序,这也是属于我比较满意的地方。


相关文章
|
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语言-学生选修课程系统(源码)【独一无二】