/************************修改个人性别*********************/
void mofsex(struct allstudentinfo *p_student)
{
char *tempname;
//要修改的学生的名字
char *tempsex;
//要修改的学生的性别
char ch;
int
count;
int
i;
system("cls");
count=datfile(p_student);
//处理文件
if(!count)
{
printf("读取数据失败,请确认已成功录入数据或文件是否损坏!");
getch();
return ;
}
tempname=(char *)malloc(10*sizeof(char));
//分配内存
tempsex=(char *)malloc(10*sizeof(char));
//分配内存
printf("请输入要修改的学生姓名:");
while(gets(tempname)!=NULL&&tempname[0]!='\0')
{
for(i=0;i<count;i++)
{
if(strcmp(tempname,p_student[i].student.name))
continue;
else
{
printf("请输入该学生的新性别:");
gets(tempsex);
system("cls");
printf("\a\n\n\n\n\t\t\t确定要修改该学生的性别吗?(y/n)");
ch=getch();
if(ch=='y'||ch=='Y')
{
strcpy(p_student[i].student.sex,tempsex);
infofile=fopen(filename,"w+b");
for(i=0;i<count;i++)
{
if(fwrite(&p_student[i].student,sizeof(struct studentinfo),1,infofile)==1)
continue;
else
{
fclose(infofile);
system("cls");
printf("\n\n\n\n\t\t\t修改失败,请返回.....");
getch();
free(tempname);
free(tempsex);
system("cls");
return ;
}
}
fclose(infofile);
system("cls");
printf("\n\n\n\n\t\t\t已成功修改%s的性别,返回!",tempname);
getch();
free(tempname);
free(tempsex);
system("cls");
return ;
}
printf("该操作已衩取消,返回.....");
free(tempname);
free(tempsex);
getch();
system("cls");
return ;
}
}
printf("找不到%s的个人信息,返回......",tempname);
free(tempname);
free(tempsex);
getch();
system("cls");
return ;
}
printf("输入有误,请返回重新输入!");
free(tempname);
free(tempsex);
getch();
system("cls");
return ;
}
/**************************修改出生日期***************************/
void mofbirth(struct allstudentinfo *p_student)
{
char *tempname;
char *tempbirth;
char ch;
int
i,count;
system("cls");
count=datfile(p_student);
//处理文件
if(!count)
{
printf("读取数据失败,请确认已成功录入或数据是否损坏!");
getch();
return ;
}
tempname=(char *)malloc(20*sizeof(char));
tempbirth=(char *)malloc(20*sizeof(char));
//分配内存
printf("请输入要修改的学生姓名:");
while(gets(tempname)!=NULL&&tempname[0]!='\0')
{
for(i=0;i<count;i++)
{
if(strcmp(tempname,p_student[i].student.name))
continue;
else
{
printf("请重新输入该学生的出生日期:");
gets(tempbirth);
system("cls");
printf("\a\n\n\n\n\t\t\t确定要修改%s的出生日期吗?(y/n)",tempname);
ch=getch();
if(ch=='y'||ch=='Y')
{
strcpy(p_student[i].student.birth,tempbirth);
infofile=fopen(filename,"w+b");
for(i=0;i<count;i++)
{
if(fwrite(&p_student[i].student,sizeof(struct studentinfo),1,infofile)==1)
continue;
else
{
fclose(infofile);
free(tempname);
free(tempbirth);
system("cls");
printf("\n\n\n\n\t\t\t修改失败,返回......");
getch();
system("cls");
return ;
}
}
fclose(infofile);
system("cls");
printf("\n\n\n\n\t\t\t成功修改%s的出生日期,返回!,",tempname);
free(tempname);
free(tempbirth);
getch();
system("cls");
return ;
}
printf("\n\n\n\n\t\t\t该操作已被取消,返回!");
free(tempname);
free(tempbirth);
getch();
system("cls");
return ;
}
}
printf("\n\n\n\n\t\t\t找不到%s的个人信息,返回!",tempname);
free(tempname);
free(tempbirth);
getch();
system("cls");
return ;
}
printf("输入有误,请返回重新选择!");
free(tempname);
free(tempbirth);
getch();
system("cls");
return ;
}
/***********************修改家庭住址*********************/
void mofadddr(struct allstudentinfo *p_student)
{
char *tempname;
char *tempadddr;
char ch;
int
i,count;
system("cls");
count=datfile(p_student);
//处理文件
if(!count)
{
printf("读取数据失败,请确认已成功录入或数据是否损坏!");
getch();
return ;
}
tempname=(char *)malloc(20*sizeof(char));
tempadddr=(char *)malloc(20*sizeof(char));
//分配内存
printf("请输入要修改的学生姓名:");
while(gets(tempname)!=NULL&&tempname[0]!='\0')
{
for(i=0;i<count;i++)
{
if(strcmp(tempname,p_student[i].student.name))
continue;
else
{
printf("请重新输入该学生的家庭住址:");
gets(tempadddr);
system("cls");
printf("\a\n\n\n\n\t\t\t确定要修改%s的家庭住址吗?(y/n)",tempname);
ch=getch();
if(ch=='y'||ch=='Y')
{
strcpy(p_student[i].student.adddr,tempadddr);
infofile=fopen(filename,"w+b");
//重新写入数据库
for(i=0;i<count;i++)
{
if(fwrite(&p_student[i].student,sizeof(struct studentinfo),1,infofile)==1)
continue;
else
{
fclose(infofile);
free(tempname);
free(tempadddr);
system("cls");
printf("\n\n\n\n\t\t\t修改失败,返回......!");
getch();
system("cls");
return ;
}
}
fclose(infofile);
system("cls");
printf("\n\n\n\n\t\t\t成功修改%s的家庭住址,返回......!,",tempname);
free(tempname);
free(tempadddr);
getch();
system("cls");
return ;
}
printf("\n\n\n\n\t\t\t该操作已被取消,返回.......!");
free(tempname);
free(tempadddr);
getch();
system("cls");
return ;
}
}
printf("\n\n\n\n\t\t\t找不到%s的个人信息,返回.......!",tempname);
free(tempname);
free(tempadddr);
getch();
system("cls");
return ;
}
printf("输入有误,请返回重新选择.......!");
free(tempname);
free(tempadddr);
getch();
system("cls");
return ;
}
/*****************************修改联系电话********************************/
void mofpoto(struct allstudentinfo *p_student)
{
char *tempname;
char *temppoto;
char ch;
int
i,count;
system("cls");
count=datfile(p_student);
//处理文件
if(!count)
{
printf("读取数据失败,请确认已成功录入或数据是否损坏!");
getch();
system("cls");
return ;
}
tempname=(char *)malloc(20*sizeof(char));
temppoto=(char *)malloc(20*sizeof(char));
//分配内存
printf("请输入要修改的学生姓名:");
while(gets(tempname)!=NULL&&tempname[0]!='\0')
{
for(i=0;i<count;i++)
{
if(strcmp(tempname,p_student[i].student.name))
continue;
else
{
printf("请重新输入该学生的联系电话:");
gets(temppoto);
system("cls");
printf("\a\n\n\n\n\t\t\t确定要修改%s的联系电话吗?(y/n)",tempname);
ch=getch();
if(ch=='y'||ch=='Y')
{
strcpy(p_student[i].student.poto,temppoto);
infofile=fopen(filename,"w+b");
for(i=0;i<count;i++)
{
if(fwrite(&p_student[i].student,sizeof(struct studentinfo),1,infofile)==1)
continue;
else
{
fclose(infofile);
free(tempname);
free(temppoto);
system("cls");
printf("\n\n\n\n\t\t\t修改失败,返回.......!");
getch();
system("cls");
return ;
}
}
fclose(infofile);
system("cls");
printf("\n\n\n\n\t\t\t成功修改%s的联系电话,返回.......!,",tempname);
free(tempname);
free(temppoto);
getch();
system("cls");
return ;
}
printf("\n\n\n\n\t\t\t该操作已被取消,返回.......!");
free(tempname);
free(temppoto);
getch();
system("cls");
return ;
}
}
printf("\n\n\n\n\t\t\t找不到%s的个人信息,返回.......!",tempname);
free(tempname);
free(temppoto);
getch();
system("cls");
return ;
}
printf("输入有误,请返回重新选择.......!");
free(tempname);
free(temppoto);
getch();
system("cls");
return ;
}
/**************************修改邮证编码*************************/
void mofdak(struct allstudentinfo *p_student)
{
char *tempname;
char *tempdak;
char ch;
int
i,count;
system("cls");
count=datfile(p_student);
//处理文件
if(!count)
{
printf("读取数据失败,请确认已成功录入或数据是否损坏!");
getch();
system("cls");
return ;
}
tempname=(char *)malloc(20*sizeof(char));
tempdak =(char *)malloc(20*sizeof(char));
//分配内存
printf("请输入要修改的学生姓名:");
while(gets(tempname)!=NULL&&tempname[0]!='\0')
{
for(i=0;i<count;i++)
{
if(strcmp(tempname,p_student[i].student.name))
continue;
else
{
printf("请重新输入该学生的邮证编码:");
gets(tempdak);
system("cls");
printf("\a\n\n\n\n\t\t\t确定要修改%s的邮证编码吗?(y/n)",tempname);
ch=getch();
if(ch=='y'||ch=='Y')
{
strcpy(p_student[i].student.dak,tempdak);
infofile=fopen(filename,"w+b");
for(i=0;i<count;i++)
{
if(fwrite(&p_student[i].student,sizeof(struct studentinfo),1,infofile)==1)
continue;
else
{
fclose(infofile);
free(tempname);
free(tempdak);
system("cls");
printf("\n\n\n\n\t\t\t修改失败,返回.......!");
getch();
system("cls");
return ;
}
}
fclose(infofile);
system("cls");
printf("\n\n\n\n\t\t\t成功修改%s的邮证编码,返回.......!",tempname);
free(tempname);
free(tempdak);
getch();
system("cls");
return ;
}
printf("\n\n\n\n\t\t\t该操作已取消,返回.......!");
free(tempname);
free(tempdak);
getch();
system("cls");
return ;
}
}
printf("\n\n\n\n\t\t\t找不到%s的个人信息,返回.......!",tempname);
free(tempname);
free(tempdak);
getch();
system("cls");
return ;
}
printf("输入有误,请返回重新选择.......!");
free(tempname);
free(tempdak);
getch();
system("cls");
return ;
}
/*************************修改所在院校******************************/
void mofschool(struct allstudentinfo *p_student)
{
char *tempname;
char *tempschool;
char ch;
int
i,count;
system("cls");
count=datfile(p_student);
//文件处理
if(!count)
{
printf("读取数据失败,请确认已成功录入或数据是否损坏!");
getch();
system("cls");
return ;
}
tempname=(char *)malloc(20*sizeof(char));
tempschool=(char *)malloc(20*sizeof(char));
//分配内存
printf("请输入要修改的学生姓名:");
while(gets(tempname)!=NULL&&tempname[0]!='\0')
{
for(i=0;i<count;i++)
{
if(strcmp(tempname,p_student[i].student.name))
continue;
else
{
printf("请重新输入该学生的所在院校:");
gets(tempschool);
system("cls");
printf("\a\n\n\n\n\t\t\t确定要修改%s的所在院校吗?(y/n)",tempname);
ch=getch();
if(ch=='y'||ch=='Y')
{
strcpy(p_student[i].student.school,tempschool);
infofile=fopen(filename,"w+b");
for(i=0;i<count;i++)
{
if(fwrite(&p_student[i].student,sizeof(struct studentinfo),1,infofile)==1)
continue;
else
{
fclose(infofile);
free(tempname);
free(tempschool);
system("cls");
printf("\n\n\n\n\t\t\t修改失败,返回.......!");
getch();
system("cls");
return ;
}
}
fclose(infofile);
system("cls");
printf("\n\n\n\n\t\t\t成功修改%s的所在院校,返回.......!",tempname);
free(tempname);
free(tempschool);
getch();
system("cls");
return ;
}
printf("\n\n\n\n\t\t\t该操作已取消,返回.......!");
free(tempname);
free(tempschool);
getch();
system("cls");
return ;
}
}
printf("\n\n\n\n\t\t\t找不到%s的个人信息,返回.......!",tempname);
free(tempname);
free(tempschool);
getch();
system("cls");
return ;
}
printf("输入有误,请返回重新选择.......!");
free(tempname);
free(tempschool);
getch();
system("cls");
return ;
}
/**************************修改个人信息的主要操作文件**************************/
int datfile(struct allstudentinfo *p_student)
{
int
count;
system("cls");
if((infofile=fopen(filename,"rb"))==NULL)
{
printf("不能找开文件,请确认磁盘已满或文件是否存在!");
getch();
exit(1);
}
rewind(infofile);
//指向文件头读取数据
for(count=0;fread(&p_student[count].student,sizeof(struct studentinfo),1,infofile)==1;count++)
{
continue;
}
fclose(infofile);
return count;
//返回读到的结构块数
}
/***************************学生个人成绩管理***********************************/
//
此子系统目前只支持学生的个人成绩的录入,修改,删除,查询等功能
//
如没有在个人信息管理系统中登记个人信息的,可能会造成无法查询
//
访问等错误的提示,请尽量在个人信息管理系统中成功登记了关于学生
//
个人的相关信息之后再使用本系统。
/******************************************************************************/
void sorcmeun(struct allstudentinfo *p_student)
{
int
in;
char ch;
do
{
system("cls");
printf("\n\n\n\n");
printf("\t\t —————————————————————\n");
printf("\t\t |
学生个人成绩管理
|\n");
printf("\t\t |————————————————————|\n");
printf("\t\t | 1.
录入学生个人成绩 |\n");
printf("\t\t | |\n");
printf("\t\t | 2. 修改学生个人成绩 |\n");
printf("\t\t | |\n");
printf("\t\t | 3. 查询学生个人成绩 |\n");
printf("\t\t | |\n");
printf("\t\t | 4. 浏览所有学生的成绩 |\n");
printf("\t\t | |\n");
printf("\t\t | 5. 删除学生成绩 |\n");
printf("\t\t | |\n");
printf("\t\t | 6. 退出成绩管理系统 |\n");
printf("\t\t |————————————————————|\n");
printf("\t\t 请您正确选择: ");
if(!(scanf("%d",&in)==1))
{
while((ch=getchar())!='\n')
putchar(ch);
printf(" 没有此选项,请正确选择!");
getch();
continue;
}
fflush(stdin);
switch(in)
{
case 1 : inputsorc(p_student);
//录入成绩
break;
case 2 : mofsorc
(p_student);
//修改成绩
break;
case 3 : seasorc
(p_student);
//查询个人成绩
break;
case 4 : seaallsorc(p_student);
//浏览所有学生成绩
break;
case 5 : delsorc
(p_student);
//删除学生成绩
break;
case 6 : return ;
//返回
default: printf("没有此选项,请正确选择!");
break;
}
}while(1);
}
/************************个人成绩录入*************************/
void inputsorc(struct allstudentinfo *p_student)
{
int
i,count,countinfo;
char *tempname,ch;
system("cls");
if((sorcfile=fopen(filename1,"a+b"))==NULL)
//打开或新建成绩数据文件
{
printf("不能找开文件,请确认磁盘已满或文件是否存在");
getch();
exit(1);
}
rewind(sorcfile);
//定位文件头
for(count=0;fread(&p_student[count].student1,sizeof(struct studentsorc),1,sorcfile)==1;count++)
{
continue;
}
tempname=(char *)malloc(20*sizeof(char));
//分配内存
printf("请输入第%d学生的姓名:",count+1);
while(count<STUDENTMAX&&gets(tempname)!=NULL&&tempname[0]!='\0')
{
strcpy(p_student[count].student1.name,tempname);
printf("请输入该学生的学号:");
scanf("%d",&p_student[count].student1.ID);
//输入学号
fflush(stdin);
//刷新绶冲
printf("请输入该学生的6科成绩\n");
printf("——————————————————————————————\n");
printf("\n语文: ");
scanf("%f",&p_student[count].student1.sorc[0]);
fflush(stdin);
printf("\n数学: ");
scanf("%f",&p_student[count].student1.sorc[1]);
fflush(stdin);
printf("\n英语: ");
scanf("%f",&p_student[count].student1.sorc[2]);
fflush(stdin);
printf("\n化学: ");
scanf("%f",&p_student[count].student1.sorc[3]);
fflush(stdin);
printf("\n物理: ");
scanf("%f",&p_student[count].student1.sorc[4]);
fflush(stdin);
printf("\n计算机应用与基础: ");
scanf("%f",&p_student[count].student1.sorc[5]);
fflush(stdin);
printf("——————————————————————————————\n");
fwrite(&p_student[count++].student1,sizeof(struct studentsorc),1,sorcfile);
//写入文件
printf("确定要继续输入下一个学生的成绩吗(y/n)");
ch=getch();
if(ch=='y'||ch=='Y')
{
system("cls");
free(tempname);
//释放内存重新分配
tempname=(char *)malloc(20*sizeof(char));
printf("请输入第%d个学生的姓名:",count+1);
continue;
}
else
{
system("cls");
free(tempname);
fclose(sorcfile);
return ;
}
}
printf("输入有误请返回重新选择操作.......!");
free(tempname);
fclose(sorcfile);
getch();
system("cls");
return ;
}
/************************修改学生成绩****************************/
void mofsorc(struct allstudentinfo *p_student)
{
int i,j,k,count;
float sorc;
char ch;
char *tempname;
count=sorcdatfile(p_student);
if(!count)
{
printf("读取数据失败,请确认已成功录入或文件是否损害");
getch();
system("cls");
return ;
}
tempname=(char *)malloc(20*sizeof(char));
//分配内存
printf("请输入要修改成绩的学生姓名:");
while(gets(tempname)!=NULL&&tempname[0]!='\0')
{
for(i=0;i<count;i++)
{
if(strcmp(tempname,p_student[i].student1.name))
{
continue;
}
else
{
printf("请选择要修改的科目成绩:1.语文 2.英语 3.数学 4.化学 5.物理 6.计算机应用与基础\n");
scanf("%d",&j);
fflush(stdin);
if(j==1)
{
printf("请重新输入%s的语文成绩: ",tempname);
scanf("%f",&sorc);
p_student[i].student1.sorc[0]=sorc;
fflush(stdin);
sorcfile=fopen(filename1,"w+b");
//把修改后的重新写入文件
for(k=0;k<count;k++)
{
if(fwrite(&p_student[k].student1,sizeof(struct studentsorc),1,sorcfile)!=1)
{
free(tempname);
fclose(sorcfile);
//写入失败关闭文件
printf("修改失败,返回.......!");
getch();
system("cls");
return ;
}
}
free(tempname);
fclose(sorcfile);
printf("修改成功,返回!.......");
getch();
system("cls");
return ;
}
else if(j==2)
{
printf("请重新输入%s的英语成绩: ",tempname);
scanf("%f",&sorc);
p_student[i].student1.sorc[2]=sorc;
fflush(stdin);
sorcfile=fopen(filename1,"w+b");
//把修改后的重新写入文件
for(k=0;k<count;k++)
{
if(fwrite(&p_student[k].student1,sizeof(struct studentsorc),1,sorcfile)!=1)
{
free(tempname);
fclose(sorcfile);
//写入失败关闭文件
printf("修改失败,返回.......!");
getch();
system("cls");
return ;
}
}
free(tempname);
fclose(sorcfile);
printf("修改成功,返回.......!");
getch();
system("cls");
return ;
}
else if(j==3)
{
printf("请重新输入%s的数学成绩: ",tempname);
scanf("%f",&sorc);
p_student[i].student1.sorc[1]=sorc;
fflush(stdin);
sorcfile=fopen(filename1,"w+b");
//把修改后的重新写入文件
for(k=0;k<count;k++)
{
if(fwrite(&p_student[k].student1,sizeof(struct studentsorc),1,sorcfile)!=1)
{
free(tempname);
fclose(sorcfile);
//写入失败关闭文件
printf("修改失败,返回.......!");
getch();
system("cls");
return ;
}
}
free(tempname);
fclose(sorcfile);
printf("修改成功,返回.......!");
getch();
system("cls");
return ;
}
else if(j==4)
{
printf("请重新输入%s的化学成绩: ",tempname);
scanf("%f",&sorc);
p_student[i].student1.sorc[4]=sorc;
fflush(stdin);
sorcfile=fopen(filename1,"w+b");
//把修改后的重新写入文件
for(k=0;k<count;k++)
{
if(fwrite(&p_student[k].student1,sizeof(struct studentsorc),1,sorcfile)!=1)
{
free(tempname);
fclose(sorcfile);
//写入失败关闭文件
printf("修改失败,返回.......!");
getch();
system("cls");
return ;
}
}
free(tempname);
fclose(sorcfile);
printf("修改成功,返回.......!");
getch();
system("cls");
return ;
}
else if(j==5)
{
printf("请重新输入%s的物理成绩: ",tempname);
scanf("%f",&sorc);
p_student[i].student1.sorc[4]=sorc;
fflush(stdin);
sorcfile=fopen(filename1,"w+b");
//把修改后的重新写入文件
for(k=0;k<count;k++)
{
if(fwrite(&p_student[k].student1,sizeof(struct studentsorc),1,sorcfile)!=1)
{
free(tempname);
fclose(sorcfile);
//写入失败关闭文件
printf("修改失败,返回.......!");
getch();
system("cls");
return ;
}
}
free(tempname);
fclose(sorcfile);
printf("修改成功,返回.......!");
getch();
system("cls");
return ;
}
else if(j==6)
{
printf("请重新输入%s的计算机应用与基础成绩: ",tempname);
scanf("%f",&sorc);
p_student[i].student1.sorc[5]=sorc;
fflush(stdin);
sorcfile=fopen(filename1,"w+b");
//把修改后的重新写入文件
for(k=0;k<count;k++)
{
if(fwrite(&p_student[k].student1,sizeof(struct studentsorc),1,sorcfile)!=1)
{
free(tempname);
fclose(sorcfile);
//写入失败关闭文件
printf("修改失败,返回.......!");
getch();
system("cls");
return ;
}
}
free(tempname);
fclose(sorcfile);
printf("修改成功,返回.......!");
getch();
system("cls");
return ;
}
else
{
printf("没有此科目,返回.......!");
free(tempname);
getch();
system("cls");
return ;
}
}
}
printf("没有找到%s的学习成绩,返回.......!",tempname);
free(tempname);
getch();
system("cls");
return ;
}
printf("输入有误,返回.......!");
free(tempname);
getch();
system("cls");
return ;
}
/***************************查询学生个人成绩****************************/
void seasorc(struct allstudentinfo *p_student)
{
char *tempname;
int
tempID,stuID;
int
i,j,count;
float sum=0.0,aver;
count=sorcdatfile(p_student);
if(!count)
{
printf("读取数据失败,请确认数据是否存在或文件是否损害");
getch();
system("cls");
return ;
}
printf("请选择要操作的类形:\n");
printf("1.按姓名查找
2.按学号查找\n");
scanf("%d",&tempID);
fflush(stdin);
if(tempID==1)
//按姓名查询
{
tempname=(char *)malloc(20*sizeof(char));
printf("请输入该学生的姓名:");
while(gets(tempname)!=NULL&&tempname[0]!='\0')
{
for(i=0;i<count;i++)
{
if(strcmp(tempname,p_student[i].student1.name))
{
continue;
}
else
{
for(j=0;j<6;j++)
{
sum+=p_student[i].student1.sorc[j];
//计算总分
}
aver=sum/6.0;
//计算平均分
printf("%s的学生成绩表\n",tempname);
printf("——————————————————————————\n");
printf("\n学号:
%d\n",p_student[i].student1.ID);
printf("\n姓名: %s\n",p_student[i].student1.name);
printf("\n语文: %.2f\n",p_student[i].student1.sorc[0]);
printf("\n数学: %.2f\n",p_student[i].student1.sorc[1]);
printf("\n英语: %.2f\n",p_student[i].student1.sorc[2]);
printf("\n化学: %.2f\n",p_student[i].student1.sorc[3]);
printf("\n物理: %.2f\n",p_student[i].student1.sorc[4]);
printf("\n计算机应用与基础: %.2f\n",p_student[i].student1.sorc[5]);
printf("\n总分: %.2f\n",sum);
printf("\n平均分: %.2f\n",aver);
printf("——————————————————————————\n");
printf("查询完毕,按任意键返回!");
free(tempname);
getch();
system("cls");
return ;
}
}
printf("找不到该学生的成绩,返回.......!");
free(tempname);
getch();
system("cls");
return ;
}
printf("输入有误,返回.......!");
free(tempname);
getch();
system("cls");
return ;
}
else if(tempID==2)
//按学号查询
{
printf("请输入该学生的ID学号:");
scanf("%d",&stuID);
fflush(stdin);
for(i=0;i<count;i++)
{
if(stuID!=p_student[i].student1.ID)
{
continue;
}
else
{
for(j=0;j<6;j++)
{
sum+=p_student[i].student1.sorc[j];
//计算总分
}
aver=sum/6.0;
//计算平均分
printf("学号为%d的学生成绩表\n",stuID);
printf("——————————————————————————\n");
printf("\n学号:
%d\n",p_student[i].student1.ID);
printf("\n姓名: %s\n",p_student[i].student1.name);
printf("\n语文: %.2f\n",p_student[i].student1.sorc[0]);
printf("\n数学: %.2f\n",p_student[i].student1.sorc[1]);
printf("\n英语: %.2f\n",p_student[i].student1.sorc[2]);
printf("\n化学: %.2f\n",p_student[i].student1.sorc[3]);
printf("\n物理: %.2f\n",p_student[i].student1.sorc[4]);
printf("\n计算机应用与基础: %.2f\n",p_student[i].student1.sorc[5]);
printf("\n总分: %.2f\n",sum);
printf("\n平均分: %.2f\n",aver);
printf("——————————————————————————\n");
printf("查询完毕,按任意键返回.......!");
getch();
system("cls");
return ;
}
}
printf("没有找到该学号的成绩,返回.......!");
getch();
system("cls");
return ;
}
printf("没有此选择,返回.......!");
getch();
system("cls");
return ;
}
/******************************浏览所有学生的成绩*********************************/
void seaallsorc(struct allstudentinfo *p_student)
{
int i,j,count;
float aver,sum=0.0f;
count=sorcdatfile(p_student);
if(!count)
{
printf("读取数据失败,请确认已成功录入或文件是否损害!");
getch();
return ;
}
printf("\n\t\t\t学生成绩表\n");
for(i=0;i<count;i++)
{
sum=aver=0.0;
//重新初始化,计算下一次
for(j=0;j<6;j++)
{
sum+=p_student[i].student1.sorc[j];
//计算总分
}
aver=sum/6.0;
//计算平均分
printf("——————————————————————————————————\n");
printf("学号:
%d\n",p_student[i].student1.ID);
printf("姓名:
%s\n",p_student[i].student1.name);
printf("语文成绩: %.2f\n",p_student[i].student1.sorc[0]);
printf("数学成绩: %.2f\n",p_student[i].student1.sorc[1]);
printf("英语成绩: %.2f\n",p_student[i].student1.sorc[2]);
printf("化学成绩: %.2f\n",p_student[i].student1.sorc[3]);
printf("物理成绩: %.2f\n",p_student[i].student1.sorc[4]);
printf("计算机成绩: %.2f\n",p_student[i].student1.sorc[5]);
printf("总分成绩: %.2f\n",sum);
printf("平均分成绩: %.2f\n",aver);
printf("————————————————————————————————\n");
printf("请按任意键继续浏览.......!");
getch();
}
printf("浏览完毕,请返回.......!");
getch();
system("cls");
return ;
}
/************************删除学生成绩******************************/
void delsorc(struct allstudentinfo *p_student)
{
int in,stuID;
int i,count;
char ch;
char *tempname;
count=sorcdatfile(p_student);
if(!count)
{
printf("读取数据失败!请确认已成功录入功或文件是否损害!");
getch();
system("cls");
return ;
}
printf("请选择你操作的选项: 1. 按姓名查找删除
2. 按学号查找删除");
scanf("%d",&in);
fflush(stdin);
if(in==1)
{
tempname=(char *)malloc(20*sizeof(char));
printf("请输入你要删除的学生姓名: ");
gets(tempname);
for(i=0;i<count;i++)
{
if(strcmp(tempname,p_student[i].student1.name))
continue;
else
{
for(;i<count;i++)
{
p_student[i].student1=p_student[i+1].student1;
}
--count;
//成绩减1
sorcfile=fopen(filename1,"w+b");
for(i=0;i<count;i++)
{
if(fwrite(&p_student[i].student1,sizeof(struct studentsorc),1,sorcfile)==1)
continue;
else
{
printf("删除失败...!");
free(tempname);
fclose(sorcfile);
getch();
system("cls");
return ;
}
}
printf("删除成功...!");
free(tempname);
fclose(sorcfile);
getch();
system("cls");
return ;
}
}
printf("找不到该学生,返回...!");
free(tempname);
getch();
system("cls");
return ;
}
else if(in==2)
{
printf("请输入你要删除的学生学号: ");
scanf("%d",&stuID);
fflush(stdin);
for(i=0;i<count;i++)
{
if(stuID!=p_student[i].student1.ID)
continue;
else
{
for(;i<count;i++)
{
p_student[i].student1=p_student[i+1].student1;
}
--count;
//成绩减1
sorcfile=fopen(filename1,"w+b");
for(i=0;i<count;i++)
{
if(fwrite(&p_student[i].student1,sizeof(struct studentsorc),1,sorcfile)==1)
continue;
else
{
printf("删除失败...!");
fclose(sorcfile);
getch();
system("cls");
return ;
}
}
printf("删除成功...!");
fclose(sorcfile);
getch();
system("cls");
return ;
}
}
printf("找不到该学生,返回...!");
getch();
system("cls");
return ;
}
printf("输入有误,返回...!");
getch();
system("cls");
return ;
}
/**********************成绩数据文件***************************/
int sorcdatfile(struct allstudentinfo *p_student)
{
int
count;
system("cls");
if((sorcfile=fopen(filename1,"rb"))==NULL)
{
printf("不能找开文件,请确认磁盘已满或文件是否存在!");
getch();
exit(1);
}
rewind(sorcfile);
//指向文件头读取数据
for(count=0;fread(&p_student[count].student1,sizeof(struct studentsorc),1,sorcfile)==1;count++)
{
continue;
}
fclose(sorcfile);
return count;
//返回读到的结构块数
}