学生成绩管理系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程实验设计
void StatisticsAnalysis(STUDENT *s, int n, int m)
{
printf(" 按优秀(90-100 分)、良好(80-89 分)、中等(70-79 分)、及格(60-69 分)、不及格(0 - 59 分)5 个类别,对每门课程分别统计每个类别的人数以及所占的百分比。
\n");
int best[SUBN] = { 0 }, good[SUBN] = { 0 }, middle[SUBN] = { 0 }, pass[SUBN] = { 0 }, nopass[SUBN] = { 0 };
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
if (s[i].score[j] >= 90 && s[i].score[j] <= 100)
{ best[j]++;
}
else
if (s[i].score[j] >= 80 && s[i].score[j] < 90)
{ good[j]++;
}
else
if (s[i].score[j] >= 70 && s[i].score[j] < 80)
{ middle[j]++;
}
else
if (s[i].score[j] >= 60 && s[i].score[j] < 70)
{ pass[j]++;
}
else
if (s[i].score[j] < 60)
{ nopass[j]++;
}
}
}
for (int k = 0; k < m; k++)
{
printf(" 第%d门课\n 优秀%.2f%%,", k + 1, (best[k] / (n * 1.0))
* 100);
printf(" 良好%.2f%%,", (good[k] / (n * 1.0)) * 100); printf(" 中
等%.2f%%,", (middle[k] / (n * 1.0)) * 100); printf(" 及
格%.2f%%,", (pass[k] / (n * 1.0)) * 100); printf(" 不及
格%.2f%%,", (nopass[k] / (n * 1.0)) * 100);
printf("\n");
}
getchar();
}
void PrintScore(STUDENT *s, int n, int m)
{
for (int j = 0; j < n; j++)
{
printf(" 学号:%d\n", s[j].num);
printf(" 姓名:"); printf("%s", s[j].name);
printf("\n 成绩\n");
for (int c = 0; c < m; c++) {
printf(" 第%d 门成绩为%.2f\n", c + 1, s[j].score[c]);
}
printf(" 总成绩:%.2f", s[j].sum);
printf("\n");
}
getchar();
}
typedef struct student {
long int num;
char name[NAME];
float score[6];
float sum;
float aver;
}STUDENT;
void ShowMenu(STUDENT *s,int n,int m)
{
int select;
void inputMesg(STUDENT *s,int n,int m)
{
printf(" 请输入学号、姓名、成绩。
\n");
for (int i = 0; i < n; i++)
{
printf(" 学号:");
scanf("%ld", &s[i].num);
if (s[i].num == 0)
{ break;
}
getchar();
printf(" 姓名:"); scanf("%s",s[i].name);
s[i].sum = 0;
for (int j = 0; j < m; j++)
{ printf(" 第%d 科成绩:",j); scanf("%f", &s[i].score[j]); s[i].sum += s[i].score[j];
}
}
}
void SubScore(STUDENT *s, int n, int m)
{
float sum[6] = { 0 };
float average[SUBN] = { 0 };
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
sum[i] += s[j].score[i];
}
average[i] = sum[i] / n;
printf(" 第%d门课程的总分为:%.2f,平均分为%.2f\n", i + 1, sum[i], average[i]);
}
getchar();
}
void StdScore(STUDENT *s, int n, int m)
{ float sum[30] = { 0 }; float average[30] = { 0 };
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
sum[i] += s[i].score[j];
}
average[i] = sum[i] / m;
printf(" 第%d个学生的总分为:%.2f,平均分为%.2f\n", i + 1, sum[i], average[i]);
}
getchar();
}
void ScoreRank(STUDENT *s, int n, int m)
{ STUDENT temp1 = { 0 }; for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++)
{
if (s[i].sum > s[j].sum)
{ temp1 = s[i]; s[i] = s[j]; s[j] = temp1;
}
}
}
for (int j = 0; j < n; j++)
{
printf(" 学号:%d\n", s[j].num);
printf(" 姓名:");
printf("%s", s[j].name);
printf("\n 成绩\n");
for (int c = 0; c < m; c++)
{
printf(" 第%d 门成绩为%.2f\n", c + 1, s[j].score[c]);
}
printf("\n 该学生的总成绩为:%.2f", s[j].sum); printf("\n");
}
getchar();
}
void NumRank(STUDENT *s, int n, int m)
{
STUDENT temp1 = { 0 };
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
if (s[i].num < s[j].num)
{ temp1 = s[i]; s[i] = s[j]; s[j] = temp1;
}
}
}
for (int j = 0; j < n; j++)
{
printf(" 学号:%d\n", s[j].num); printf(" 姓名:");
getchar();
}
void NumSearch(STUDENT *s, int n, int m)
{ int find = 0 ,result = 0;
printf(" 请输入学号:"); scanf("%d", &find); for (int i = 0; i < n;
i++)
{
if (s[i].num == find)
{ result = 1;
printf("\n 寻找到匹配项\n"); printf(" 姓名:");
printf("%s", s[i].name);
printf("\n 成绩\n");
for (int c = 0; c < m; c++) {
printf(" 第%d 门成绩为%.2f\n", c + 1, s[i].score[c]); } printf(" 总成绩:%.2f", s[i].sum); printf("\n");
}
}
if (result == 0)
{
printf(" 找不到对象\n");
}
getchar();
}
void NameSearch(STUDENT *s, int n, int m)
{
int result = 0;
char find[30];
printf(" 请输入姓名:");
void OutputFile(STUDENT* s, int n, int m) { FILE* out;
out = fopen("output", "w");
if (!out)
{
printf("无法打开文件");
}
for (int i = 0; i < n; i++)。