You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
text4/学生成绩管理系统代码.c

83 lines
2.4 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LEN 10 // 字符串最大长度
#define STU_NUM 30 // 最多的学生人数
#define COURSE_NUM 6 // 最多的考试科目数
typedef struct student
{
long num; // 每个学生的学号
char name[MAX_LEN]; // 每个学生的姓名
float score[COURSE_NUM]; // 每个学生COURSE_NUM门功课的成绩
float sum; // 每个学生的总成绩
float aver; // 每个学生的平均成绩
}STU;
int Menu(void);
void ReadScore(STU stu[], int n, int m);
void AverSumofEveryStudent(STU stu[], int n, int m);
int main(void)
{
char ch;
int n = 0, m = 0;
STU stu[STU_NUM];
printf("Input student number(n<%d):", STU_NUM);
scanf("%d", &n);
printf("Input course number(m<=%d):",COURSE_NUM);
scanf("%d", &m);
while (1)
{
ch = Menu(); // 显示菜单,并读取用户输入
switch (ch)
{
case 1:ReadScore(stu, n, m);
break;
case 2: AverSumofEveryStudent(stu, n, m);
break;
case 0: printf("End of program!");
exit(0);
default:printf("Input error!");
}
}
return 0;}
// 函数功能:显示菜单并获得用户键盘输入的选项
int Menu(void)
{
int itemSelected;
printf("Management for Students' scores\n");
printf("1.Input record\n");
printf("2.Calculate total and average score of every course\n");
printf("0.Exit\n");
printf("Please Input your choice:");
scanf("%d", &itemSelected); // 读入用户输入
return itemSelected;
}
// 函数功能输入n个学生的m门课成绩
void ReadScore(STU stu[], int n, int m)
{
int i, j;
printf("Input student's ID, name and score:\n");
/* ---------- begain ---------- */
for(i=0;i<n;i++)
{scanf("%ld%s",&stu[i].num,stu[i].name);
for (j=0; j<m; j++)
scanf("%f",&stu[i].score[j]);
}
/* ----------- end ----------- */
}
// 函数功能:计算每个学生各门课程的总分和平均分
void AverSumofEveryStudent(STU stu[], int n, int m)
{
int i, j;
for (i=0; i<n; i++)
{
stu[i].sum = 0;
for (j=0; j<m; j++)
{
stu[i].sum = stu[i].sum + stu[i].score[j];
}
stu[i].aver = m>0 ? stu[i].sum / m : -1;
printf("student %d: sum = %.0f, aver = %.0f\n",
i+1, stu[i].sum, stu[i].aver);
}
}