大家好,农企新闻小编来为大家解答以上问题。c语言制作学生成绩管理系统,C语言学生成绩管理系统如何开发很多人还不知道,现在让我们一起来看看吧!
c语言学生成绩管理系统开发方法1。用户输入系统数据。
2.系统计算每门对应课程的总分和平均分。
3.为相应的学生进行数据处理。
4.排序功能
A.总分由高到低,总分由低到高。
B.学生人数从大到小
C.名称字典顺序
5.查询功能
A.学生编号查询
B.姓名查询
6.分析数据
7.输出学生对应的所有数据。
8.将数据写入和读取到文件中。
[设计理念]
Switch case语句用于实现用户的菜单操作,通过用户在菜单中的选择,调用相关函数来完成用户的一系列操作和应用。
[模块图]
通用程序流程图
[算法步骤]
菜单:
for(I=0;i66我)
printf(' * ');
printf(' n ');
printf('1。输入记录 n’);
printf('2。计算每门课程的总分和平均分 n’);
printf('3。计算每个学生的总分和平均分 n’);
printf('4。按每个学生的总分降序排序 n’);
printf('5。按每个学生的总分升序排序 n’);
printf('6。按数字升序排序 n’);
printf('7。按姓名升序排序 n’);
printf('8。按号码搜索 n’);
printf('9。按姓名搜索 n’);
printf('10。每门课程的统计分析 n’);
printf('11。列表记录 n’);
printf('12。写入文件 n’);
printf('13。从文件中读取 n’);
printf('0。exit n ');
for(I=0;i66我)
printf(' * ');
printf(' n ');
printf('请输入您的选择: ');
printf(' n ');
输入功能:
Void read score (stustu [],int n,int m)//1。输入数据
{
int i,j;
for(I=0;我;我)
{
printf('输入学生的ID、姓名和分数');
scanf('%ld ',stu[i].studentID);
scanf('%s ',stu[i].student name);
for(j=0;j;j)
scanf('%d ',stu[i].score[j]);
}
}
数据处理功能:
Voitota (stustu [],int n,int m)//2。计算每门课程的总分和平均分。
{
int i,j,sum[M];
双平均[M];
for(j=0;j;j
{
sum[j]=0;
for(i=0;i
{
sum[j]=sum[j]+stu[i].score[j];
}
ave[j]=(double)sum[j]/n;
}
for(i=0;i
printf("Project %d 总分=%d,课程的平均分=%fn",i+1,sum[i],ave[i]);
}
void Datasort_1 (STU stu[],int n,int m) //3.计算每个学生的总分和平均分
{
int i,j,sum[N];
double ave[N];
for(i=0;i
{
sum[i]=0;
for(j=0;j
{
sum[i]=sum[i]+stu[i].score[j];
}
ave[i]=(double)sum[i]/m;
}
for(i=0;i
printf("ID:%10ld,Name: %s Allscore=%d,The ave=%fn",stu[i].studentID,stu[i].studentName,sum[i],ave[i]);
}
排序函数:
void Datasort_2 (STU stu[],int n,int m) //4.按每个学生的总分由高到低排出名次表
{
int i,j,k,h,sum[N];
STU t;
for(i=0;i
{
sum[i]=0;
for(j=0;j
{
sum[i]=sum[i]+stu[i].score[j];
}
}
for(i=0;i
{
k=i;
for(j=i+1;j
{
if (sum[j]>sum[k])
k=j;
}
if(i!=k)
{
t=stu[i],h=sum[i];
stu[i]=stu[k],sum[i]=sum[k];
stu[k]=t,sum[k]=h;
}
}
for(i=0;i
printf("ID:%10ld,Name:%s,Score:%dn",stu[i].studentID,stu[i].studentName,sum[i]);
}
void Datasort_3 (STU stu[],int n,int m) //5.按每个学生的总分由低到高排出名次表
{
int i,j,k,h,sum[N];
STU t;
for(i=0;i
{
sum[i]=0;
for(j=0;j
{
sum[i]=sum[i]+stu[i].score[j];
}
}
for(i=0;i
{
k=i;
for(j=i+1;j
{
if (sum[j]
k=j;
}
if(i!=k)
{
t=stu[i],h=sum[i];
stu[i]=stu[k],sum[i]=sum[k];
stu[k]=t,sum[k]=h;
}
}
for(i=0;i
printf("ID:%10ld,Name:%s,score:%dn",stu[i].studentID,stu[i].studentName,sum[i]);
}
void Datasort_4 (STU stu[],int n,int m) //6.按学号由小到大排出名次表
{
int i,j,k;
STU t;
for(i=0;i
{
k=i;
for(j=i+1;j
{
if (stu[j].studentID
k=j;
}
if(i!=k)
t=stu[k],stu[k]=stu[i],stu[i]=t;
}
for(i=0;i
{
printf("ID:%10ld,Name:%sn",stu[i].studentID,stu[i].studentName);
for(j=0;j
printf("Project %d Score:%dn",j+1,stu[i].score[j]);
}
}
数据分析函数:
void Statistis (STU stu[],int n,int m) //10.
{
int i,j,count_1,count_2,count_3,count_4,count_5;
for(j=0;j
{
count_1=0,count_2=0,count_3=0,count_4=0,count_5=0;
for(i=0;i
{
if(stu[i].score[j]>=90)
count_1++;
else if(stu[i].score[j]>=80)
count_2++;
else if(stu[i].score[j]>=70)
count_3++;
else if(stu[i].score[j]>=60)
count_4++;
else
count_5++;
}
printf("project %dn",j+1);
printf("优秀:%dt优秀率:%f%n",count_1,(float)count_1/n);
printf("良好:%dt良好率:%f%n",count_2,(float)count_2/n);
printf("中等:%dt中等率:%fn",count_3,(float)count_3/n);
printf("及格:%dt及格率:%fn",count_4,(float)count_4/n);
printf("不及格:%dt不及格率:%fn",count_5,(float)count_5/n);
}
}
数据界面打印函数:
void List (STU stu[],int n,int m) //11.
{
int i,j,sum[N];
double ave[N];
for(i=0;i
{
sum[i]=0;
for(j=0;j
{
sum[i]=sum[i]+stu[i].score[j];
}
ave[i]=(double)sum[i]/m;
}
for(i=0;i
{
printf("ID:%10ld,Name:%sn",stu[i].studentID,stu[i].studentName);
for(j=0;j
{
printf("Score %d :%dn",j+1,stu[i].score[j]);
}
printf("Allscore=%dn平均分%fn",sum[i],ave[i]);
}
}
文件处理函数:
void WritetoFile(STU stu[],int n,int m) //将每个学生的记录信息写入文件
{
Tota(stu,n,m);
Datasort_2 (stu,n,m);
FILE *fp;
if((fp=fopen("student.txt","w"))==NULL)
{
printf("Failure to open student.txt!n");
exit(0);
}
fwrite(stu,sizeof(STU),n,fp);
fclose(fp);
}
int ReadfromFile(STU stu[],int n,int m)//从文件中读出每个学生的记录信息并显示
{
FILE *fp;
int i;
if((fp=fopen("student.txt","r"))==NULL)
{
printf("Failure to open student.txt!n");
exit(0);
}
for(i=0;!feof(fp);i++)
{
fread(&stu[i],sizeof(STU),1,fp);
}
fclose(fp);
printf("Total student is %d.n",i-1);
n=i-1;
List(stu,n,m); //输出从文件中读出的信息到屏幕上
return i-1;
}