【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分支语句,进行选择性的根据不同要求进行排序,这也是属于我比较满意的地方。