c语言学生成绩管理系统源代码.doc
《c语言学生成绩管理系统源代码.doc》由会员分享,可在线阅读,更多相关《c语言学生成绩管理系统源代码.doc(15页珍藏版)》请在冰豆网上搜索。
#include
#include
#include
typedefstructstu
{
charsz_Name[20];
charsz_ID[11];
charsz_Class[10];
floatr_Score[3];
}student;
#defineSTU_MAXSIZE60
inti_stuSize;
studentstu[STU_MAXSIZE];
/*==========显示主菜单=============*/
voidDis_Main_Menu()
{
printf("\n学生成绩管理系统\n");
printf("-----------------------\n");
printf("1:
新录入书生成绩\n");
printf("2:
修改学生成绩\n");
printf("3:
学生成绩查寻\n");
printf("4:
平均成绩和排序\n");
printf("5:
显示班级成绩单\n");
printf("6:
追加学生成绩\n");
printf("0:
推出\n");
printf("-----------------------\n");
}
/*=============录入学生成绩============*/
voidInput_Stu_Information(studentstu[])
{
inti;
printf("请依次输入学生成绩信息(姓名学号班级数学语文化学):
\n");
for(i=0;i {
printf("Student%d:
",i+1);
scanf("%s%s%s",stu[i].sz_Name,stu[i].sz_ID,stu[i].sz_Class);
scanf("%f%f%f",&stu[i].r_Score[0],&stu[i].r_Score[1],&stu[i].r_Score[2]);
}
}
/*==============将信息存入scorefile.dat文件===========*/
voidSave_File(studentstu[])
{
FILE*fp;
inti;
if((fp=fopen("c:
\\scorefile.dat","wb"))==NULL)
{
printf("Save_File函数打开文件c:
\\scorefile.dat!
失败,按任意键退出!
\n");
exit
(1);
}
for(i=0;i if(fwrite(&stu[i],sizeof(student),1,fp)!
=1)
{
printf("Writerfileerror!
\n");
exit
(1);
}
fclose(fp);
}
/*===============主菜单第一项:
新录入成绩==========*/
intInput_Data()
{
printf("\n请输入学生实际人数:
");
scanf("%d",&i_stuSize);
Input_Stu_Information(stu);
Save_File(stu);
return(i_stuSize);
}
/*=================学生成绩查询菜单=============*/
voidDis_Search_Menu()
{
printf("\n学生成绩查询\n");
printf("\n-------------------\n");
printf("\n1:
按学号查询\n");
printf("\n2:
按科目查询\n");
printf("\n0:
退出\n");
printf("\n-------------------\n");
}
/*===============按学号查询===========*/
intSearch_ID(charsz_ID[11])
{
inti;
for(i=0;i {
if(!
strcmp(sz_ID,stu[i].sz_ID))
{
printf("姓名\t学号\t班级\t数学\t\t语文\t\t化学\n");
printf("--------------------------------------\n");
printf("%S\t%s\t%s",stu[i].sz_Name,stu[i].sz_ID,stu[i].sz_Class);
printf("\t%-8.1f\t%-8.1f\t%-8.1f\n",stu[i].r_Score[0],stu[i].r_Score[1],
stu[i].r_Score[2]);
break;
}
}
if(i==i_stuSize)printf("学号输入有误!
没有该学生!
\n");
return(i);
}
/*=============按科目查询==========*/
voidSearch_Course(intcourse)
{
inti;
switch(course)
{
case1:
printf("\n姓名\t学号\t班级\t数学\n");break;
case2:
printf("\n姓名\t学号\t班级\t语文\n");break;
case3:
printf("\n姓名\t学号\t班级\t化学\n");break;
default:
printf("\n课程号错误!
\n");return;
}
printf("-------------------------------\n");
for(i=0;i {
printf("%s\t%s\t%s",stu[i].sz_Name,stu[i].sz_ID,stu[i].sz_Class);
printf("\t%-8.1f\n",stu[i].r_Score[course-1]);
}
printf("---------------------------------------\n");
}
/*=================主页第二项:
修改学生成绩==============*/
voidModify_Data()
{
inti=0;
chars_ID[11];
FILE*fp;
if((fp=fopen("c:
\\scorefile.dat","wb"))==NULL)
{
printf("Modify_Data函数打开文件c:
\\scorefile.dat!
失败,按任意键退出!
");
return;
}
printf("请输入要修改的学生学号:
");
scanf("%s",s_ID);
i=Search_ID(s_ID);
printf("请按【数学语文化学】顺序输入成绩:
");
scanf("%f%f%f",&stu[i].r_Score[0],&stu[i].r_Score[1],&stu[i].r_Score[2]);
fwrite(&stu[i],sizeof(student),i_stuSize,fp);
fclose(fp);
}
/*=============主菜单第三项:
学生成绩查询============*/
voidSearch_Data()
{
intSelect,flag=1;
intcourse;
chars_id[11];
while(flag)
{
Dis_Search_Menu();
printf("请输入所选查询功能号:
");
scanf("%d",&Select);
switch(Select)
{
case1:
printf("请输入查询学号:
");
scanf("%s",s_id);
Search_ID(s_id);
break;
case2:
printf("请输入查询科目号:
1数学,2语文3化学\n");
scanf("%d",&course);
Search_Course(course);
break;
default:
printf("输入有错误,重新选择!
\n");
break;
}
if(Select==0)
flag=0;
else
flag=1;
}
}
/*===============成绩排序==============*/
voidSort(floataverage[STU_MAXSIZE])
{
inti,j,k;
studentstemp;
floatave;
for(i=0;i {
k=i;
for(j=i;j if(average[j] if(k!
=i)
{
stemp=stu[i];
stu[i]=stu[k];
stu[k]=stemp;
ave=average[i];
average[i]=average[k];
average[k]=ave;
}
}
}
/*===============主菜单第四项:
计算平均成绩和排序=========*/
voidAverage_Sort()
{
inti;
floatsum,average[STU_MAXSIZE];
for(i=0;i {
sum=stu[i].r_Score[0]+stu[i].r_Score[1]+stu[i].r_Score[2];
average[i]=sum/3;
}
Sort(average);
printf("\n\t\t\t按平均成绩升序先是成绩\n");
printf("\t\t\t=========================\n");
printf("姓名\t学号\t班级\t数学\t\t语文\t\t化学\t\t平均成绩\n");
printf("--------------------------------\n");
for(i=0;i {
printf("%s\t%s\t%s",stu[i].sz_Name,stu[i].sz_ID,stu[i].sz_Class);
printf("\t%-8.1f\t%-8.1f\t%-8.1f",stu[i].r_Score[0],stu[i].r_Score[1],stu[i].r_Score[2]);
printf("\t%-8.1f\n",average[i]);
}
printf("------------