学生成绩管理系统C语言课程设计源代码文档格式.docx
《学生成绩管理系统C语言课程设计源代码文档格式.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统C语言课程设计源代码文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
/*按平均分排序*/
voidpfen();
/*按总分排序*/
voidaddnew();
/*录入学生成绩*/
voidpall();
/*显示所有成绩*/
voidcheck();
/*查询菜单*/
voidpnum();
/*按学号排序*/
voidpjing();
/*精确查找*/
/*******************************************************************************************************/
/*主菜单*/
main()
charchoose;
while
(1)
{
printf("
\n\t\t**************************************"
);
printf("
\n\t\t*欢迎使用成绩管理系统*"
\n\t\t**"
\n\t\t*请选择*"
\n\t\t*1.录入学生成绩*"
\n\t\t*2.查询学生成绩*"
\n\t\t*3.清屏*"
\n\t\t*0.退出程序*"
\n\n"
请选择:
"
scanf("
%c"
&
choose);
getchar();
switch(choose)
{case'
1'
:
addnew();
break;
case'
2'
check();
case'
3'
system("
cls"
0'
exit(0);
default:
输入错误,请从新输入!
}
}
}
/****************************************************************************************************/
/*录入学生成绩*/
voidaddnew()
intn,m,i,p;
FILE*file;
sum=0.00000;
average=0.00000;
if((("
c:
\\student.dat"
"
rb"
))==NULL)
file=fopen("
"
wb+"
/*创建一个文件*/
请输入需要录入的学生人数:
"
scanf("
%d"
n);
for(i=0;
i<
n;
i++)
{
输入第%d个同学信息:
\n"
i+1);
姓名:
%s"
stu[i].name);
学号:
stu[i].number);
输入科目个数:
m);
stu[i].w=m;
按科目(回车)成绩(回车)……的顺序输入:
\n"
/*录入成绩*/
for(p=0;
p<
m;
p++)
stu[i].cheng[p].subject);
stu[i].cheng[p].point);
stu[i].sum=stu[i].sum+stu[i].cheng[p].point;
stu[i].average=stu[i].sum/m;
/*printf("
总分%f,平均分%f\n"
stu[i].sum,stu[i].average);
*/
fwrite(&
stu[i],sizeof(stu),1,file);
/*把stu写入文件*/
fclose(file);
/*关闭文件*/
fflush(stdin);
voidcheck()
{charchoose;
\n\t\t*查询菜单*"
\n\t\t*1.按学号排列*"
\n\t\t*2.按总分排列*"
\n\t\t*3.按平均分排列*"
\n\t\t*4.精确查询*"
\n\t\t*5.显示所有学生成绩*"
\n\t\t*6.清屏*"
\n\t\t*0.返回*"
pnum();
pfen();
pjun();
case'
4'
pjing();
5'
pall();
6'
main();
/*显示所有成绩*/
voidpall()
inti=0,m;
))==NULL)
{printf("
Openerror!
!
getch();
fread(&
while(feof()/*循环整个文件*/
姓名----学号----总分----平均分\n"
%s%5d%10.1f%8.1f\n"
stu[i].name,stu[i].number,stu[i].sum,stu[i].average);
科目------成绩\n"
for(m=0;
m<
stu[i].w;
m++)/*显示各科成绩*/
{
%40s%d\n"
stu[i].cheng[m].subject,stu[i].cheng[m].point);
i++;
fread(&
/*******************************************************************************************************/
voidpnum()
{FILE*file;
intj;
inti=0;
intn=0;
intm=0;
structstudentbm;
/*创建一个‘中间’结构体,用于交换*/
))==NULL)/*打开文件*/
Openerror"
exit(0);
while(feof()
n=i;
for(j=n-1;
j>
0;
j--)
{for(i=0;
j;
{if(stu[i].number>
stu[i+1].number)/*对比学号,对换stu*/
{bm=stu[i];
/*交换位置*/
stu[i]=stu[i+1];
stu[i+1]=bm;
}
}
i++)/*交换后从新排序*/
for(m=0;
m++)
voidpfen()
intm;
{if(stu[i].sum<
stu[i+1].sum)
/*显示到屏幕*/
/*按平均分排序*/
voidpjun()
{if(stu[i].average<
stu[i+1].average)
voidpjing()
intn;
请输入要查询的学生的学号:
{if(n==stu[i].number)/*输出对应的学号的学生成绩*/
{printf("
/******************************************结束*******************************************************/