👉博__主👈:米码收割机
👉技__能👈:C++/Python语言
👉公众号👈:测试开发自动化【获取源码+商业合作】
👉荣__誉👈:阿里云博客专家博主、51CTO技术博主
👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。
系列文章目录
一、设计要求
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;
}
- 主程序提供角色选择和密码验证,根据角色进入不同的菜单。管理员、教师和学生分别有各自的功能菜单,提供特定操作。
三、可视化分析
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 成功 ” 获取,拿来即用。👈👈👈
管理员
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 成功 ” 获取,拿来即用。👈👈👈
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 成功 ” 获取,拿来即用。👈👈👈
教师
学生
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 成功 ” 获取,拿来即用。👈👈👈