一、设计要求
C语言写一个学生成绩管理系统:
管理员模式:
修改密码
插入成员信息
删除成员信息
修改成员信息
查询成员信息
教师:
修改密码
录入成绩
修改成绩
查询成绩
学生:
修改密码
查询自己成绩
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 成功 ” 获取,拿来即用。👈👈👈
二、设计思路
数据结构和常量定义
#define MAX_STUDENTS 100 #define MAX_NAME_LENGTH 50 #define MAX_PASSWORD_LENGTH 20 typedef struct { int id; char name[MAX_NAME_LENGTH]; float score; char password[MAX_PASSWORD_LENGTH]; } Student; 略....(至少10行代码) 略....(至少10行代码)
MAX_STUDENTS
、MAX_NAME_LENGTH
、MAX_PASSWORD_LENGTH
:定义了系统中学生数量、姓名长度和密码长度的最大值。Student
结构体:包含学生的ID、姓名、成绩和密码。students
数组:用于存储所有学生信息。student_count
:当前学生数量。admin_password
和teacher_password
:分别存储管理员和教师的初始密码。
功能函数定义
密码修改函数
void change_password(char* password) { char new_password[MAX_PASSWORD_LENGTH]; printf("请输入新密码: "); scanf("%s", new_password); strcpy(password, new_password); printf("密码修改成功!\n"); }
- 修改用户密码,接受一个指向密码的指针,读取用户输入的新密码并替换旧密码。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 成功 ” 获取,拿来即用。👈👈👈
学生信息插入函数
void insert_student() { if (student_count >= MAX_STUDENTS) { printf("学生数量已满,无法插入新成员。\n"); return; } 略....(至少10行代码) 略....(至少10行代码) }
- 插入新学生信息,检查是否超出最大学生数量限制,读取并存储新学生的ID、姓名和初始密码,成绩默认为-1表示未录入。
学生信息删除函数
void delete_student() { int id, i, j; printf("请输入要删除的学生ID: "); scanf("%d", &id); for (i = 0; i < student_count; ++i) { 略....(至少10行代码) 略....(至少10行代码) } printf("未找到该学生信息。\n"); }
- 根据学生ID删除学生信息,找到匹配的ID后将该学生后面的所有学生信息向前移动一位,并减少学生计数。
学生信息修改函数
void modify_student() { int id, i; printf("请输入要修改的学生ID: "); scanf("%d", &id); for (i = 0; i < student_count; ++i) { 略....(至少10行代码) 略....(至少10行代码) } printf("未找到该学生信息。\n"); }
- 修改学生信息,通过ID找到对应的学生,然后读取并更新学生的姓名和密码。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 成功 ” 获取,拿来即用。👈👈👈
学生信息查询函数
void query_student() { int id, i; printf("请输入要查询的学生ID: "); scanf("%d", &id); for (i = 0; i < student_count; ++i) { 略....(至少10行代码) 略....(至少10行代码) } printf("未找到该学生信息。\n"); }
- 通过学生ID查询学生信息,找到匹配的ID后输出学生的详细信息。
成绩录入和修改函数
void record_score() { int id, i; float score; printf("请输入学生ID: "); scanf("%d", &id); for (i = 0; i < student_count; ++i) { 略....(至少10行代码) 略....(至少10行代码) } printf("未找到该学生信息。\n"); } void modify_score() { record_score(); // 修改成绩和录入成绩的流程相同 }
- 录入和修改学生成绩,通过ID找到对应的学生,然后读取并更新学生的成绩。
学生自我成绩查询函数
void query_self_score(int id) { for (int i = 0; i < student_count; ++i) { 略....(至少10行代码) 略....(至少10行代码) } printf("未找到您的成绩信息。\n"); }
- 通过学生ID查询自己的成绩,找到匹配的ID后输出学生的详细信息。
菜单功能
管理员菜单
void admin_menu() { int choice; while (1) { printf("\n管理员菜单:\n"); printf("1. 修改密码\n"); printf("2. 插入成员信息\n"); printf("3. 删除成员信息\n"); printf("4. 修改成员信息\n"); printf("5. 查询成员信息\n"); printf("6. 退出\n"); printf("请输入你的选择: "); scanf("%d", &choice); switch (choice) { case 1: change_password(admin_password); break; case 2: insert_student(); break; case 3: delete_student(); break; case 4: modify_student(); break; case 5: query_student(); break; case 6: return; default: printf("无效的选择,请重新输入。\n"); } } }
- 管理员菜单,提供修改密码、插入、删除、修改、查询成员信息和退出功能。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 成功 ” 获取,拿来即用。👈👈👈
教师菜单
void teacher_menu() { int choice; while (1) { printf("\n教师菜单:\n"); printf("1. 修改密码\n"); printf("2. 录入成绩\n"); printf("3. 修改成绩\n"); printf("4. 查询成绩\n"); printf("5. 退出\n"); printf("请输入你的选择: "); scanf("%d", &choice); 略....(至少10行代码) 略....(至少10行代码) } }
- 教师菜单,提供修改密码、录入、修改、查询成绩和退出功能。
学生菜单
void student_menu(int id) { int choice; while (1) { printf("\n学生菜单:\n"); printf("1. 修改密码\n"); printf("2. 查询自己成绩\n"); printf("3. 退出\n"); printf("请输入你的选择: "); scanf("%d", &choice); 略....(至少10行代码) 略....(至少10行代码) }
- 学生菜单,提供修改密码、查询自己成绩和退出功能。
主程序入口
int main() { int role, id; char password[MAX_PASSWORD_LENGTH]; while (1) { printf("\n欢迎进入学生成绩管理系统\n"); printf("请选择你的角色:\n"); printf("1. 管理员\n"); printf("2. 教师\n"); printf("3. 学生\n"); printf("4. 退出\n"); printf("请输入你的选择: "); scanf("%d", &role); 略....(至少10行代码) 略....(至少10行代码) } return 0; }
- 主程序提供角色选择和密码验证,根据角色进入不同的菜单。管理员、教师和学生分别有各自的功能菜单,提供特定操作。
三、可视化分析
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 成功 ” 获取,拿来即用。👈👈👈
管理员
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 成功 ” 获取,拿来即用。👈👈👈
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 成功 ” 获取,拿来即用。👈👈👈
教师
学生
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 成功 ” 获取,拿来即用。👈👈👈