学生成绩管理系统完整版 C程序设计源代码 不用链表 有添加 删除 查找 修改等功能Word文档格式.docx
《学生成绩管理系统完整版 C程序设计源代码 不用链表 有添加 删除 查找 修改等功能Word文档格式.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统完整版 C程序设计源代码 不用链表 有添加 删除 查找 修改等功能Word文档格式.docx(32页珍藏版)》请在冰点文库上搜索。
/*定义学生学号为长整型*/
charname[20];
/*定义姓名为字符型,占12个字符*/
floatmath,English,physics,total,average;
floatTOT_math,TOT_English,TOT_physics,TOT_total,TOT_aver;
floataver_math,aver_English,aver_physics,aver_total,aver_average;
}student;
/*定义结构体名称为student*/
/****************************************输入初始值模块*******************************************/
voidinput(structstudent*p,intsize){
inti;
for(i=0;
i<
size;
i++){
printf("
请输入学号:
"
);
while
(1){scanf("
%ld"
&
p[i].num);
if(long(p[i].num)!
=p[i].num||long(p[i].num)<
=0){/*输入判断*/
printf("
输入错误,学号必须为整数,请重新输入:
"
fflush(stdin);
}
else{break;
}}
printf("
请输入姓名:
scanf("
%s"
p[i].name);
请输入数学成绩:
%f"
p[i].math);
if(float(p[i].math)!
=p[i].math||float(p[i].math)<
=0||p[i].math>
100||p[i].math<
0){
printf("
输入错误,数学成绩必须为0~100之间的数,请重新输入:
fflush(stdin);
else{break;
请输入英语成绩:
while
(1){scanf("
p[i].English);
if(float(p[i].English)!
=p[i].English||float(p[i].English)<
=0||p[i].English>
100||p[i].English<
输入错误,英语成绩必须为0~100之间的数,请重新输入:
fflush(stdin);
}
请输入物理成绩:
p[i].physics);
if(float(p[i].physics)!
=p[i].physics||float(p[i].physics)<
=0||p[i].physics>
100||p[i].physics<
\n"
信息录入成功!
\n\n"
}
/************************************************************************************************************/
/*************************************保存初始值到"
初始二进制值.txt"
模块*************************************/
voidsave(structstudent*p,intsize){/*保存模块*/
FILE*fp;
inti;
if((fp=fopen("
初始值二进制值.txt"
"
wb+"
))==NULL){/*建立文件*/
cannotopenthefile\n"
fwrite(&
p[i],sizeof(student),1,fp);
}/*快写函数,写到磁盘中为二进制数*/
fclose(fp);
/*关闭文件*/
voidsave0(structstudent*p,intsize){/*保存模块*/
初始值二进制值1.txt"
ab+"
/******************************************保存初始值到可浏览文件模块****************************************/
voidSAVE(structstudent*p,intsize){
inti,b=0;
请输入保存初始值的可浏览文件名:
scanf("
name);
if((fp=fopen(name,"
w+"
))==NULL){
文件名输入错误!
!
fprintf(fp,"
\n\t\t----------------------------------------------------------\n"
\t\t序号学号姓名数学英语物理\n"
fprintf(fp,"
\t\t----------------------------------------------------------"
);
i++){b++;
\t\t%-6d%-12d%-12s%-8.2f%-8.2f%-8.2f\n"
b,p[i].num,p[i].name,p[i].math,p[i].English,p[i].physics);
\t\t----------------------------------------------------------\n"
}
\n文件保存成功!
/******************************************读取初始值模块****************************************************/
intread(structstudent*p,intsize){
inti,n=0;
rb+"
i++){
if(fread(&
p[i],sizeof(structstudent),1,fp)!
=0){n++;
fclose(fp);
returnn;
/******************************************读取输出初始值模块************************************************/
voidread_print(structstudent*p,intsize){
inti,n=0,b=0;
}printf("
}}
n;
\t\t%-6d%-12d%-12s%-8.2f%-8.2f"
b,p[i].num,p[i].name,p[i].math,p[i].English);
%-8.2f\n"
p[i].physics);
/*********************************************计算总分和平均分模块*******************************************/
voidtotal_average(structstudent*p,intsize){/*求每位同学的总分和平均分模块*/
for(i=0;
i++){/*循环,从第一个同学开始计算到最后一个同学*/
p[i].total=p[i].math+p[i].English+p[i].physics;
/*每个同学的总分等于三科成绩之和*/
p[i].average=p[i].total/3;
/*每个同学的平均分等于总分的1/3*/
}
/**************************************输出初始值总分和平均分模块*******************************************/
voidread_print1(structstudent*p,intsize){
voidtotal_average(structstudent*p,intsize);
\n\t---------------------------------------------------------------------------\n"
\t序号学号姓名数学英语物理总分平均分\n"
\t---------------------------------------------------------------------------\n"
total_average(p,n);
\t%-6d%-12d%-12s%-8.2f%-8.2f"
%-8.2f%-10.2f%-8.2f\n"
p[i].physics,p[i].total,p[i].average);
/***************************************将初始值按平均分排序模块*********************************************/
voidrange(structstudent*p,intsize){/*所有同学的成绩按平均分由高到低排序模块*/
inti,j,k;
structstudenttemp;
/*定义一个student类型的变量备用*/
i++){/*用选择排序法进行排序*/
k=i;
for(j=i+1;
j<
j++)
if(p[k].average<
p[j].average){
temp=p[k];
p[k]=p[j];
p[j]=temp;
/************************************输出初始值按平均分排序的结果模块****************************************/
intread_print2(structstudent*p,intsize){
voidrange(structstudent*p,intsize);
\t学号姓名数学英语物理总分平均分名次\n"
range(p,n);
\t%-12d%-12s%-8.2f%-8.2f"
p[i].num,p[i].name,p[i].math,p[i].English);
%-8.2f%-10.2f%-8.2f%d\n"
p[i].physics,p[i].total,p[i].average,b);
returnn;
/********************保存初始值按平均分排序后结果到"
初始值按平均分排序二进制值.txt"
模块**********************************/
voidsave1(structstudent*p,intsize){/*保存模块*/
按平均分排序二进制值.txt"
/******************************************读取排序后结果模块************************************************
intread1(structstudent*p,intsize){
r+"
/*******************************保存初始值按平均分排序后结果到可浏览文件模块*********************************/
voidSAVE1(structstudent*p,intsize){
请输入保存排序结果的文件名:
\n\t-----------------------------