本系统分成了三个文件,main.c student.c student.h
功能:
实现对班级成员的增加、删除、修改、遍历、根据成绩排序。
增加 会检查,现在班级已有的人数,班级是否已满(没有学号重复检测)
删除(根据学号查询-->删除) 会判断 班级中是否存在这个学生
修改(根据学号查询) 可以修改学生的其他信息(除学号外),也有检测该班级中是否存在该学生ID的功能函数
遍历 会判断该班级中是否有学生,没有学生 会做出提示
排序 根据成绩,由高到低,本系统使用的是冒泡排序
注:没有调用数据库,所有的数据都是存在内存里
---代码中有详细注释---
main.c功能
主要包含文件的整体逻辑(子函数的调用),主要的逻辑代码
student.c功能
是子函数的功能实现的执行代码
student.h功能
是函数的所有的头文件,以及结构体的定义
代码
main.c
int main(int argc, const char *argv[]) class_t my_class;//定义一个班级的结构体变量 my_class.count = 0;//初始化班级人数 insert_student(&my_class); print_student(&my_class); xiugai_student(&my_class);
student.c
printf('-------------------------------------------------\n'); printf('-------------------------------------------------\n'); printf('| 1.添加学员 2.遍历学员信息 3.修改学员信息 |\n'); printf('| 4.删除学员 5.根据成绩降序排序 6.退出程序 |\n'); printf('-------------------------------------------------\n'); int insert_student(class_t *p_class){//主函数传输参数,接收,由于传输的是指针变量,需要定义一个同类型的指针接收 printf('请输入学员信息 :姓名 年龄 学号 成绩\n'); p_class->stu[p_class->count].name, &(p_class->stu[p_class->count].age), &(p_class->stu[p_class->count].id), &(p_class->stu[p_class->count].score)); //信息写入到指针对应的结构体的 数组 的 新的位置(count位置) int print_student(class_t *p_class){ //循环遍历输出,该指针指向的结构体的数组的 第i个成员 for(i = 0; i < p_class->count; i++){ int xiugai_student(class_t *p_class) printf('请输入要修改的学生的学号>>'); scanf('%d',&num);//接收对应的学号 for(i=0;i<p_class->count;i++) if(num == p_class->stu[i].id) printf('----该学生不存在----\n'); printf('请输入该学生新的信息:姓名 年龄 成绩\n'); &(p_class->stu[i].score)); int rm_student(class_t *p_class) printf('请输入要删除的学生的学号>>'); for(i=0;i<p_class->count;i++) if(num == p_class->stu[i].id) printf('--该学生存在--正在删除---\n'); }//此时i里存的数据就是 对应学号的学生的 数组的下标 for(i;i<p_class->count;i++) p_class->stu[i] = p_class->stu[i+1]; printf('----该学生不存在----\n'); int PX_student(class_t *p_class) //定义一个跟学生结构体 相同类型的变量,用来充当 交换数据的桶 for(i=0;i<p_class->count;i++) for(j=0;j<p_class->count-i-1;j++) if(p_class->stu[j].score < p_class->stu[j+1].score) p_class->stu[j] = p_class->stu[j+1]; p_class->stu[j+1] = temp;
注:自己调整 菜单格式
student.h
//定义学生结构体,typedef重命名,命名成student_t //定义班级结构体,typedef重命名,class_t //该结构体 调用学生结构体,生成对应的结构体数组 student_t stu[40];//学生成员结构体 //传过来的是&my_class(班级的结构体指针) 需要用 班级的结构体指针 进行接收 int insert_student(class_t*); int print_student(class_t*); int rm_student(class_t*); int xiugai_student(class_t*); int PX_student(class_t*);
编译:执行
本系统用Ubuntu编写,gcc编译
把三个文件放一个目录下,
gcc main.c student.c
生成对应的a.out 可执行文件
|