C语言实现简易学生成绩管理系统攻略
系统需求
我们需要实现一个简单的学生成绩管理系统,满足以下需求:
- 学生姓名、学号、性别等基本信息的录入和管理;
- 课程成绩的录入和查询,包括成绩的增删改查功能;
- 可以根据学号、姓名、分数等条件进行查询排序;
- 可以将学生成绩信息保存在文件中。
实现步骤
设计数据结构
我们需要先设计数据结构,才能进行后续工作。根据上述需求,这里我们设计了如下的数据结构:
typedef struct student
{
char id[20]; // 学号
char name[20]; // 姓名
char gender[5]; // 性别
float score[5]; // 成绩
float sum; // 总成绩
float avg; // 平均成绩
} STUDENT;
编写基本功能
接下来,我们针对需求 1 和 2,分别编写录入学生信息和成绩信息的基本功能。
void add_student(STUDENT *s, int n); // 录入学生信息
void add_score(STUDENT *s, int n); // 录入成绩信息
这两个函数分别接受一个 STUDENT 结构体数组和数组大小作为参数,通过循环获取用户输入信息,然后填充到数组中。具体实现过程可以参考下面的示例代码。
void add_student(STUDENT *s, int n)
{
for (int i = 0; i < n; i++)
{
printf("请输入第 %d 个学生的信息:\n", i + 1);
printf("学号:");
scanf("%s", s[i].id);
printf("姓名:");
scanf("%s", s[i].name);
printf("性别:");
scanf("%s", s[i].gender);
}
}
void add_score(STUDENT *s, int n)
{
for (int i = 0; i < n; i++)
{
printf("请输入第 %d 个学生的成绩:\n", i + 1);
for (int j = 0; j < 5; j++)
{
printf("第 %d 门课程的成绩:", j + 1);
scanf("%f", &(s[i].score[j]));
s[i].sum += s[i].score[j];
}
s[i].avg = s[i].sum / 5;
}
}
实现其他功能
针对需求 3,我们可以使用快速排序等算法实现根据学号、姓名、分数等条件进行查询排序。这里不再赘述实现细节,读者可以参考相关文献进行学习。
至于需求 4,我们可以使用文件读写相关的函数进行实现。以保存学生信息为例,我们可以编写如下的代码:
void save_student(STUDENT *s, int n)
{
FILE *fp = fopen("students.dat", "w");
if (fp == NULL)
{
printf("文件打开失败!\n");
return;
}
for (int i = 0; i < n; i++)
{
fprintf(fp, "学号:%s\t姓名:%s\t性别:%s\t", s[i].id, s[i].name, s[i].gender);
for (int j = 0; j < 5; j++)
{
fprintf(fp, "第%d门成绩:%.2f\t", j + 1, s[i].score[j]);
}
fprintf(fp, "总分:%.2f\t平均分:%.2f\n", s[i].sum, s[i].avg);
}
fclose(fp);
}
示例说明
示例一:录入学生信息和成绩信息
STUDENT s[3];
add_student(s, 3);
add_score(s, 3);
运行结果:
请输入第 1 个学生的信息:
学号:001
姓名:张三
性别:男
请输入第 2 个学生的信息:
学号:002
姓名:李四
性别:女
请输入第 3 个学生的信息:
学号:003
姓名:王五
性别:男
请输入第 1 个学生的成绩:
第 1 门课程的成绩:89
第 2 门课程的成绩:91
第 3 门课程的成绩:83
第 4 门课程的成绩:78
第 5 门课程的成绩:95
请输入第 2 个学生的成绩:
第 1 门课程的成绩:85
第 2 门课程的成绩:93
第 3 门课程的成绩:79
第 4 门课程的成绩:86
第 5 门课程的成绩:88
请输入第 3 个学生的成绩:
第 1 门课程的成绩:76
第 2 门课程的成绩:85
第 3 门课程的成绩:92
第 4 门课程的成绩:88
第 5 门课程的成绩:80
示例二:保存学生信息到文件
save_student(s, 3);
运行结果:在当前目录下生成了一个 students.dat
文件,文件内容如下:
学号:001 姓名:张三 性别:男 第1门成绩:89.00 第2门成绩:91.00 第3门成绩:83.00 第4门成绩:78.00 第5门成绩:95.00 总分:436.00 平均分:87.20
学号:002 姓名:李四 性别:女 第1门成绩:85.00 第2门成绩:93.00 第3门成绩:79.00 第4门成绩:86.00 第5门成绩:88.00 总分:431.00 平均分:86.20
学号:003 姓名:王五 性别:男 第1门成绩:76.00 第2门成绩:85.00 第3门成绩:92.00 第4门成绩:88.00 第5门成绩:80.00 总分:421.00 平均分:84.20
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言实现简易学生成绩管理系统 - Python技术站