C语言课程设计学生成绩管理系统完整版文档格式.docx
- 文档编号:16497656
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:22
- 大小:19.10KB
C语言课程设计学生成绩管理系统完整版文档格式.docx
《C语言课程设计学生成绩管理系统完整版文档格式.docx》由会员分享,可在线阅读,更多相关《C语言课程设计学生成绩管理系统完整版文档格式.docx(22页珍藏版)》请在冰豆网上搜索。
voidnew1();
/*新增一个学生成绩函数*/
voidxiugai();
/*修改学生成绩*/
voidxgcj(int);
/*修改成绩*/
voiddelete1();
/*删除学生信息函数*/
voidtongji();
/*统计界面函数*/
voidtongji1();
/*计算每个学生平均分*/
voidtongji2();
/*计算每门课程的平均分*/
voidpaixu1();
/*排序函数*/
voidpaino();
/*按学号排序*/
voidpaiave();
/*按平均分排序*/
voidpaidkcj();
/*按单科成绩排序*/
voidchange(int,int);
/*交换结构体数组中的两个记录*/
voidoutputx(int);
/*选择输出单科成绩*/
voidfind1();
/*查找界面函数*/
intfind(charsno[]);
/*按学号查找*/
intfindname(charcname[]);
/*按姓名查找*/
voidfindyear(intcyear);
/*按入年查找*/
voidsave();
/*保存文件*/
voidstop();
/*停顿函数*/
voidstop()/*停顿函数(公共函数)*/
printf("
PressAnyKeyToContinue...\n"
);
getchar();
}
voidoutput()/*输出学生成绩函数(公共函数)*/
inti,j;
===================================================================\n"
学号姓名班级专业入年C语言高数大物电路模电\n"
for(i=0;
i<
num;
i++)
{
%s%s%s%s%d"
stu[i].no,stu[i].name,stu[i].grade,stu[i].pro,stu[i].year);
for(j=0;
j<
5;
j++)
%.1f"
stu[i].score[j]);
\n"
}
stop();
voidinit()/*系统初始化函数*/
if(access("
stu.dat"
0))/*判断文件是否存在*/
newfile();
/*若不存在,新建数据文件*/
else
read1();
/*若存在,读取数据*/
voidnewfile()/*建立新的数据文件*/
inti;
FILE*fp;
if((fp=fopen("
"
wb"
))==NULL)/*创立二进制文件*/
创立文件失败,请重新运行程序.\n"
/*显示"
创立文件失败,请重新运行程序"
*/
exit(0);
/*终止程序*/
初次运行,进行数据初始化...\n"
/*显示"
初次运行,进行数据初始化..."
请输入学生人数:
"
scanf("
%d"
&
num);
请输入第%d个学生的学号:
i+1);
请输入第i+1个学生的学号:
/*吃回车*/
gets(stu[i].no);
姓名:
gets(stu[i].name);
班级:
gets(stu[i].grade);
专业:
gets(stu[i].pro);
入年n:
入年"
stu[i].year);
C语言成绩:
C语言成绩"
%f"
stu[i].score[0]);
高数成绩:
高数成绩"
stu[i].score[1]);
大物成绩:
大物成绩"
stu[i].score[2]);
电路成绩:
电路成绩"
stu[i].score[3]);
模电成绩:
模电成绩"
stu[i].score[4]);
fwrite(&
stu[i],1,sizeof(structstudent),fp);
/*把第i+1名学生成绩写入文件*/
fclose(fp);
========================\n"
刚才输入的%d个数据为:
num);
刚才输入的num个数据为:
========================\n\n"
output();
voidread1()/*从数据文件中读取数据*/
num=0;
/*num为数据文件中实际存储的学生人数*/
fp=fopen("
r"
if(fp==NULL)/*数据文件不存在*/
文件打开失败!
重新运行程序\n"
重新运行程序"
while(!
feof(fp))/*文件结束检测"
fread(&
stu[num],1,sizeof(structstudent),fp);
num++;
num--;
\t\t\t=======================================\n"
\t\t\t现有%d个学生的成绩:
现有NUM个学生的成绩:
\t\t\t=======================================\n\n"
voidweihu()/*维护界面函数*/
charc1;
while
(1)
\n\n\n\t\t\t************************\n"
\t\t\t*维护*\n"
\t\t\t*1.新增*\n"
/*新增*/
\t\t\t*2.删除*\n"
/*删除(按学号)*/
\t\t\t*3.修改*\n"
/*修改*/
\t\t\t*9.返回*\n"
/*返回*/
\t\t\t************************\n"
\t\t\t请选择:
/*请选择:
c1=getchar();
if(c1=='
9'
)
break;
switch(c1)
case'
1'
:
new1();
2'
delete1();
3'
xiugai();
default:
选择有误,请重选!
/*"
voidnew1()/*新增一个学生成绩函数*/
请输入学号:
gets(stu[num].no);
gets(stu[num].name);
gets(stu[num].grade);
gets(stu[num].pro);
入年:
stu[num].year);
stu[num].score[0]);
stu[num].score[1]);
stu[num].score[2]);
stu[num].score[3]);
stu[num].score[4]);
\n======================================\n"
现有%d个学生的成绩:
======================================\n\n"
voidxiugai()/*修改学生成绩*/
charxg[11];
\n请输入要修改学生的学号:
\n\n"
gets(xg);
if(strcmp(stu[i].no,xg)==0)break;
if(i==num)
\n数据文件无该生信息!
\n\n请重新输入学号.\n\n"
return;
xgcj(i);
voidxgcj(intx)/*修改成绩*/
charxueke[5][10]={"
C语言"
高数"
物理"
电路"
模电"
};
char(*p)[10],c;
intj,k;
p=xueke;
for(;
;
\t\t\t************************************\n\n"
\t\t\t成绩\n"
\t\t\t1.C语言\n"
/*C语言*/
\t\t\t2.高数\n"
/*高数*/
\t\t\t3.物理\n"
/*大学物理*/
\t\t\t4.电路\n"
/*电路*/
\t\t\t5.模电\n"
/*模电*/
\t\t\t9.返回\n\n"
/*返回上级*/
\t请选择要修改的成绩(按1.2.3.4.5.9):
c=getchar();
if(c=='
)break;
elseif(c>
='
&
c<
5'
k=c-49;
\n请输入%s成绩:
p+k);
stu[x].score[k]);
\n修息为:
stu[x].no,stu[x].name,stu[x].grade,stu[x].pro,stu[x].year);
stu[x].score[j]);
elseprintf("
\n选择有误,请重选!
intfind(charsno[])/*按学号查找*/
if(strcmp(stu[i].no,sno)==0)/*判断两个字符串相等*/
returni;
/*查找成功*/
return-1;
/*查找失败*/
voiddelete1()/*删除学生信息函数*/
charcno[11];
请输入要删除的学生学号:
/*"
请输入要删除的学生学号"
gets(cno);
i=find(cno);
if(i!
=-1)
{for(j=i;
stu[j]=stu[j+1];
现有%d个学生的成绩:
else{printf("
请输入正确的学号.\n"
voidtongji()/*统计界面函数*/
charc2;
\n\n\n\t\t\t*******************************\n"
\t\t\t*统计*\n"
\t\t\t*1.学生平均分*\n"
/*计算学生平均分*/
\t\t\t*2.课程平均分*\n"
/*计算每门课程平均分*/
\t\t\t*******************************\n"
\t\t\t请选择:
c2=getchar();
if(c2=='
)break;
switch(c2)
tongji1();
\n\n学生平均分为:
===========================================\n"
学号姓名入年平均分\n"
%s%s%d%.2f\n"
stu[i].no,stu[i].name,stu[i].year,stu[i].ave);
tongji2();
选择有误,请重选\n"
voidtongji1()/*计算每个学生平均分*/
stu[i].ave=0;
stu[i].ave+=stu[i].score[j];
stu[i].ave=stu[i].ave/5;
voidtongji2()/*计算每门课程的平均分*/
floatsum;
floatavec[5];
/*储存每门课的平均分*/
sum=0;
sum+=stu[i].score[j];
avec[j]=sum/num;
\n\n各科平均分:
各科平均分:
===================================\n"
C语言高数大物电路模电\n"
%-7.1f"
avec[i]);
voidpaixu1()/*排序界面*/
charc3;
\n\n\n"
\t\t\t***********************************\n"
\t\t\t*排序*\n"
\t\t\t*1.按学号排序*\n"
\t\t\t*2.按平均分排序*\n"
\t\t\t*3.按单科成绩排序*\n"
\t\t\t*9.返回*\n"
\t\t\t***********************************\n\n"
\t请选择:
(按1.2.3.9):
c3=getchar();
if(c3=='
switch(c3)
paino();
break;
paiave();
paidkcj();
/*选择有误,请重选!
voidpaino()/*按学号排序*/
{/*按学号从低到高冒泡法排序*/
num-1-i;
if(strcmp(stu[j].no,stu[j+1].no)>
0)
change(j,j+1);
\n排序后为:
排序后为:
voidpaiave()/*按平均分排序*/
{/*按平均分从高到低冒泡法排序*/
/*计算平均成绩*/
num-i-1;
if(stu[j].ave<
stu[j+1].ave)
\n\t排序后为:
\t===============================================\n"
\t学号姓名入年平均分排名\n"
\t%s%s%d%.2f%4d\n"
stu[i].no,
stu[i].name,stu[i].year,stu[i].ave,i+1);
voidpaidkcj()/*按单科成绩排序*/
charc;
inti,j,k;
\t\t\t单科成绩\n"
\t\t\t**
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 学生 成绩管理系统 完整版