成绩管理系统(C语言)
编写成绩管理程序
1.要求
a) 可以按学号输入高等数学成绩和大学物理成绩,分别存储在2个数组中,之后计算总成绩,保存在另外一个数组中(在3个数组中,元素的下标就是学号)。
b) 可以按学号次序显示学生的成绩;
c) 可以按总分、高等数学或大学物理成绩排序(注意:排序的时候不要改变数据元素在数组的次序,否则学号与成绩就不匹配了。可以使用一个辅助数组存储学生的学号,排序的时候只改变辅助数组的元素次序)。
d) 可以显示排序后的结果。
e) 程序要有简单的菜单。
2. 代码
#include<stdio.h>
#define course 2
#define stud 40
int input(int score[][course],long num[])
{
int i,j,n;
printf("\t\t======================================================\n");
printf("\t\t|| 学生成绩管理系统 ||\n");
printf("\t\t======================================================\n");
printf("\t\t>>>输入学生的人数:");
scanf("%d",&n);
printf("\t\t请按顺序输入学号,学科成绩,不同项之间用 Tab 隔开:\n");
printf("学号 高等数学 大学物理 \n");
for(i=0;i<n;i++)
{
scanf("%ld",&num[i]);
for(j=0;j<course;j++)
{
scanf("%d",&score[i][j]);
}
}
return n;
}
void total(int score[][course],int sum[],int n)
{
int i,j;
for(i=0;i<n;i++)
{
sum[i]=0;
for(j=0;j<course;j++)
{
sum[i]=sum[i]+score[i][j];
}
}
}
void sort(int score[][course],long num[],int sum[],int n)
{
int temp,temp1,temp2,temp3;
int i,j,k;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(sum[j]>sum[i])
{
temp=sum[j];
sum[j]=sum[i];
sum[i]=temp;
for(k=0;k<course;k++)
{
temp3=score[j][k];
score[j][k]=score[i][k];
score[i][k]=temp3;
}
temp1=num[j];
num[j]=num[i];
num[i]=temp1;
}
}
void print(int score[][course],long num[],int sum[],int n)
{
int i,j;
printf("Result:\n");
printf(" \t 高等数学 \t 大学物理 \t总分 \n");
for(i=0;i<n;i++)
{
printf("%4ld\t",num[i]);
for(j=0;j<course;j++)
{
printf("%4d\t\t",score[i][j]);
}
printf("%5d \n",sum[i]);
}
}
void main()
{
int n;
long num[stud];
int score[stud][course],sum[stud];
n=input(score,num);
total(score,sum,n);
sort(score,num,sum,n);
print(score,num,sum,n);
}
3.报告总结
这个设计已经完成,a,b,c,d,e的功能都实现了。本学期开设的《数据结构基础》与c语言课程已经告一段落,现就学习体会进行学习总结.
刚开始学的时候确实有很多地方我很不理解,每次上课时老师都会给我们出不同的设计题目,对于我们一个初学者来说,无疑是一个具大的挑战,撞了几次壁之后,我决定静下心来,仔细去写程序。老师会给我们需要编程的内容一些讲解,顺着老师的思路,来完成自己的设计,我们可以开始运行自己的程序。