成绩统计分析系统
文章目录
源代码github地址
一、要求
问题描述:
给出n个学生的m门课程的成绩表,每个学生的信息由学号、姓名以及各科成绩组成。对学生的考试成绩进行有关统计分析,并打印统计表。
基本要求:
1、 通过键盘输入各学生的多门课程的成绩,建立相应的文件input.dat。
2、 对文件input.dat中的数据进行处理,要求具有如下功能:
i. 按各门课程成绩排序,并生成相应的文件输出。
ii. 计算每人的平均成绩,按平均成绩排序,并生成文件。
iii. 求出各门课程的平均成绩、最高分、最低分、不及格人数、6069分人数、7079分人数、80~89分人数、90分以上人数。
iv. 根据姓名或学号查询某人的各门课成绩,重名情况也能处理。
3、 界面美观。
测试数据
学号 姓名 数学 英语 计算机
001 | 王放 | 78 | 77 | 90 |
---|---|---|---|---|
002 | 张强 | 89 | 67 | 88 |
003 | 李浩 | 56 | 66 | 78 |
004 | 黄鹂兵 | 89 | 86 | 85 |
005 | 李浩 | 67 | 88 | 76 |
006 | 陈利风 | 45 | 54 | 67 |
007 | 尚晓 | 78 | 76 | 70 |
4 选做内容 对各科成绩设置不同的权值。
二、系统功介绍
系统功能包括学生信息维护,登录,查询,排序,成绩分析具体说明如下:
- 学生信息维护:主要完成进入系统后的学生信息录入及在操作过程中需要的学生信息添加。
- 登录:用户登录,只有登录成功的用户才能使用本系统功能
- 查询:管理员能够按照不同信息(学号、姓名)进行查询。
- 排序:管理员能够按照不同需求(各科成绩、平均成绩、加权平均成绩)进行查询
- 成绩分析:输出各门课程的平均成绩、最高分、最低分、不及格人数、6069分人数、7079分人数、80~89分人数、90分以上人数。
三、数据结构设计
学生对象:
struct STUDENT
{
int studentNo; //学号
char name[20]; //姓名
float scores[3];//各科成绩
float ravg_score; //加权后的平均成绩
float avg_score; //不加权的平均成绩
};
四、系统实现(关键代码)
1、系统首页
用户未登录时可进入的首页,在首页可以进行用户的登录
while (1)
{
printf("\n\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
printf(" $请输入管理员账号: $\n");
printf(" ");
scanf("%d", &account);
printf(" $请输入密码: $\n");
printf(" ");
scanf("%d", &pass);
printf("\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n");
if (account == 111 && pass == 123)
{
break;
}
else
{
printf(" 输入信息有误请重新输入!\n");
}
}
2、系统录入学生
输入学生人数及调用函数部分:
STUDENT stu[MAX];
float rat[3];
printf("\n\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
printf(" $请输入学生人数(小于100) $\n ");
scanf("%d", &n);
printf("\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n");
input(stu, n, m);
input_ratios(rat);
getAvgScore(stu, rat, n, m);
write(stu, n, "input.data");
输入每个学生信息的关键代码为:
for (i = 0; i < n; i++)
{
printf(" 输入第%d个学生的信息:\n",i+1);
printf(" 学号:\n ");
scanf("%d", &students[i].studentNo);
printf(" 姓名:\n ");
scanf("%s", &students[i].name);
for ( j = 0; j < m; j++)
{
printf(" 第%d科成绩:\n ", j + 1);
scanf("%f", &students[i].scores[j]</