一、系统说明1、制作一个学生信息管理系统。2、学生信息包括班级、学号、姓名、(C语言)成绩等。3、实训信息增加、删除、查找、修改、显示、退出等功能。4、系统使用方法便捷、简单、功能容易实现。二、流程图三、实现效果#程序可复制直接使用四、头文件StudentManagement.h#define _CRT_SECURE_NO_WARNINGS #includestdio.h #includestdlib.h //定义学生信息结构体 typedef struct Student { char class[20]; char number[20]; char name[20]; char score[20]; }student; //定义学生信息表结构体 typedef struct StuInfoList { student info[1000];//结构体数组用于存放1000个学生的信息 int n;//当前已有n个学生信息 }list; //定义系统功能的枚举变量 enum Option { Exit,//0 Add,//1 Show,//2 Search,//3 Modify,//4 Delete//5 }; //函数声明 void Initial(list* p); void ADD(list* p); void SHOW(list* p); void SEARCH(list* p); void DELETE(list* p); void MODIFY(list* p);五、源文件1、主程序test.c#includeStudentManagement.h //菜单函数 void menu() { printf(*************************\n); printf(**********0. 退出********\n); printf(**********1. 录入********\n); printf(**********2. 显示********\n); printf(**********3. 查找********\n); printf(**********4. 修改********\n); printf(**********5. 删除********\n); } //主函数 int main() { int input 0; list stulist;//创建学生信息表 Initial(stulist);//初始化信息表 do { menu(); printf(请选择功能); scanf(%d, input); switch (input) { case Add: printf(录入\n); ADD(stulist); break; case Show: printf(显示\n); SHOW(stulist); break; case Search: printf(查找\n); SEARCH(stulist); break; case Modify: printf(修改\n); MODIFY(stulist); break; case Delete: printf(删除\n); DELETE(stulist); break; case Exit: printf(退出\n); system(cls);//清空 exit(0);//程序正常退出 break; default: printf(输入错误请重新选择\n); break; } system(pause); system(cls); }while (input); return 0; }2、函数StudentManagement.c#includeStudentManagement.h //学生信息表初始化函数 void Initial(list* p) { memset(p-info, 0, sizeof(p-info));//memset设置内存将info[1000]清0 p-n 0;//设置信息表最初只有0个元素 } //1.录入函数 void ADD(list* p) { if (p-n 1000) { printf(信息表已满无法再录入\n); } else { printf(请输入学生的班级); scanf(%s, p-info[p-n].class); printf(请输入学生的学号); scanf(%s, p-info[p-n].number); printf(请输入学生的姓名); scanf(%s, p-info[p-n].name); printf(请输入学生的成绩); scanf(%s, p-info[p-n].score); p-n; printf(录入信息成功\n); } } //2.显示函数 void SHOW(list* p) { if (p-n 0) { printf(信息表为空表\n); } else { int i 0; printf(--------------------------------------------------\n); printf(%-20s %-20s %-20s %-20s\n, 班级, 学号, 姓名, 成绩); for (i 0; i p-n; i) { printf(%-20s %-20s %-20s %-20s\n, p-info[i].class, p-info[i].number, p-info[i].name, p-info[i].score); } printf(--------------------------------------------------\n); } } //3.查找函数查找指定姓名的学生信息 void SEARCH(list* p) { char name[20]; printf(请输入要查找的学生姓名); scanf(%s, name); //int i FindName(p, name); //if (i -1)//没找到 //{ // printf(要查找的学生不在表中\n); //} int i 0; for (i 0; i p-n; i) { if (strcmp(p-info[i].name, name) 0)//字符串比较 { break;//若找到则跳出if } } if (i p-n)//没找到 { printf(要查找的学生不在表中\n); } else { printf(%-20s %-20s %-20s %-20s\n, 班级, 学号, 姓名, 成绩); printf(%-20s %-20s %-20s %-20s\n, p-info[i].class, p-info[i].number, p-info[i].name, p-info[i].score); } } //4.修改函数修改指定姓名的学生信息 void MODIFY(list* p) { //输入要修改学生的名字 char name[20]; printf(请输入要修改的学生姓名); scanf(%s, name); //先查找 int i 0; for (i 0; i p-n; i) { if (strcmp(p-info[i].name, name) 0)//字符串比较 { break;//若找到则跳出if } } if (i p-n)//没找到 { printf(要修改的学生不在表中\n); } else { printf(请输入学生的班级); scanf(%s, p-info[i].class); printf(请输入学生的学号); scanf(%s, p-info[i].number); printf(请输入学生的姓名); scanf(%s, p-info[i].name); printf(请输入学生的成绩); scanf(%s, p-info[i].score); printf(修改%s的信息完成\n,name); } } //5.删除函数删除指定姓名的学生信息 void DELETE(list* p) { char name[20]; printf(请输入要删除的学生姓名); scanf(%s, name); //查找要删除的学生姓名在信息表中的位置把要删除的姓名和表中的姓名一个个对比 int i 0; for (i 0; i p-n; i) { if (strcmp(p-info[i].name, name) 0)//字符串比较 { break;//若找到则跳出if } } if (i p-n)//没找到 { printf(要删除的学生不在表中\n); } else { //删除数据 //找到的学生信息下标为i,即info[i] //要删除的就是info[i],用info[i1]覆盖info[i] int j 0; for (j i; j p-n-1; j) { p-info[j] p-info[j 1]; } p-n--; printf(删除%s的信息成功\n,name); } } //根据姓名查找--为了实现查找、修改、删除不需要用户看到不用在头文件中申明 int FindName(list* p, char name[20]) { int i 0; for (i 0; i p-n; i) { if (strcmp(p-info[i].name, name) 0)//字符串比较 { return i;//若找到返回下标 } } //没找到 return -1; }
C语言学生管理系统1.0
发布时间:2026/5/22 14:13:13
一、系统说明1、制作一个学生信息管理系统。2、学生信息包括班级、学号、姓名、(C语言)成绩等。3、实训信息增加、删除、查找、修改、显示、退出等功能。4、系统使用方法便捷、简单、功能容易实现。二、流程图三、实现效果#程序可复制直接使用四、头文件StudentManagement.h#define _CRT_SECURE_NO_WARNINGS #includestdio.h #includestdlib.h //定义学生信息结构体 typedef struct Student { char class[20]; char number[20]; char name[20]; char score[20]; }student; //定义学生信息表结构体 typedef struct StuInfoList { student info[1000];//结构体数组用于存放1000个学生的信息 int n;//当前已有n个学生信息 }list; //定义系统功能的枚举变量 enum Option { Exit,//0 Add,//1 Show,//2 Search,//3 Modify,//4 Delete//5 }; //函数声明 void Initial(list* p); void ADD(list* p); void SHOW(list* p); void SEARCH(list* p); void DELETE(list* p); void MODIFY(list* p);五、源文件1、主程序test.c#includeStudentManagement.h //菜单函数 void menu() { printf(*************************\n); printf(**********0. 退出********\n); printf(**********1. 录入********\n); printf(**********2. 显示********\n); printf(**********3. 查找********\n); printf(**********4. 修改********\n); printf(**********5. 删除********\n); } //主函数 int main() { int input 0; list stulist;//创建学生信息表 Initial(stulist);//初始化信息表 do { menu(); printf(请选择功能); scanf(%d, input); switch (input) { case Add: printf(录入\n); ADD(stulist); break; case Show: printf(显示\n); SHOW(stulist); break; case Search: printf(查找\n); SEARCH(stulist); break; case Modify: printf(修改\n); MODIFY(stulist); break; case Delete: printf(删除\n); DELETE(stulist); break; case Exit: printf(退出\n); system(cls);//清空 exit(0);//程序正常退出 break; default: printf(输入错误请重新选择\n); break; } system(pause); system(cls); }while (input); return 0; }2、函数StudentManagement.c#includeStudentManagement.h //学生信息表初始化函数 void Initial(list* p) { memset(p-info, 0, sizeof(p-info));//memset设置内存将info[1000]清0 p-n 0;//设置信息表最初只有0个元素 } //1.录入函数 void ADD(list* p) { if (p-n 1000) { printf(信息表已满无法再录入\n); } else { printf(请输入学生的班级); scanf(%s, p-info[p-n].class); printf(请输入学生的学号); scanf(%s, p-info[p-n].number); printf(请输入学生的姓名); scanf(%s, p-info[p-n].name); printf(请输入学生的成绩); scanf(%s, p-info[p-n].score); p-n; printf(录入信息成功\n); } } //2.显示函数 void SHOW(list* p) { if (p-n 0) { printf(信息表为空表\n); } else { int i 0; printf(--------------------------------------------------\n); printf(%-20s %-20s %-20s %-20s\n, 班级, 学号, 姓名, 成绩); for (i 0; i p-n; i) { printf(%-20s %-20s %-20s %-20s\n, p-info[i].class, p-info[i].number, p-info[i].name, p-info[i].score); } printf(--------------------------------------------------\n); } } //3.查找函数查找指定姓名的学生信息 void SEARCH(list* p) { char name[20]; printf(请输入要查找的学生姓名); scanf(%s, name); //int i FindName(p, name); //if (i -1)//没找到 //{ // printf(要查找的学生不在表中\n); //} int i 0; for (i 0; i p-n; i) { if (strcmp(p-info[i].name, name) 0)//字符串比较 { break;//若找到则跳出if } } if (i p-n)//没找到 { printf(要查找的学生不在表中\n); } else { printf(%-20s %-20s %-20s %-20s\n, 班级, 学号, 姓名, 成绩); printf(%-20s %-20s %-20s %-20s\n, p-info[i].class, p-info[i].number, p-info[i].name, p-info[i].score); } } //4.修改函数修改指定姓名的学生信息 void MODIFY(list* p) { //输入要修改学生的名字 char name[20]; printf(请输入要修改的学生姓名); scanf(%s, name); //先查找 int i 0; for (i 0; i p-n; i) { if (strcmp(p-info[i].name, name) 0)//字符串比较 { break;//若找到则跳出if } } if (i p-n)//没找到 { printf(要修改的学生不在表中\n); } else { printf(请输入学生的班级); scanf(%s, p-info[i].class); printf(请输入学生的学号); scanf(%s, p-info[i].number); printf(请输入学生的姓名); scanf(%s, p-info[i].name); printf(请输入学生的成绩); scanf(%s, p-info[i].score); printf(修改%s的信息完成\n,name); } } //5.删除函数删除指定姓名的学生信息 void DELETE(list* p) { char name[20]; printf(请输入要删除的学生姓名); scanf(%s, name); //查找要删除的学生姓名在信息表中的位置把要删除的姓名和表中的姓名一个个对比 int i 0; for (i 0; i p-n; i) { if (strcmp(p-info[i].name, name) 0)//字符串比较 { break;//若找到则跳出if } } if (i p-n)//没找到 { printf(要删除的学生不在表中\n); } else { //删除数据 //找到的学生信息下标为i,即info[i] //要删除的就是info[i],用info[i1]覆盖info[i] int j 0; for (j i; j p-n-1; j) { p-info[j] p-info[j 1]; } p-n--; printf(删除%s的信息成功\n,name); } } //根据姓名查找--为了实现查找、修改、删除不需要用户看到不用在头文件中申明 int FindName(list* p, char name[20]) { int i 0; for (i 0; i p-n; i) { if (strcmp(p-info[i].name, name) 0)//字符串比较 { return i;//若找到返回下标 } } //没找到 return -1; }