c语言-修改学生成绩-模块有两个棘手问题,求各位help
//************************************|·修改学生成绩·|****************************************/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.c程序设计 5 .java应用程序设计 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);
//"w+b"读取或写入二进制文件,当指定文件存时建立新文件;当指定文件不存在时文件原有内容丢失
sorcfile=fopen(filename1,"w+b");
for(k=0;k<count;k++)
{
if(fwrite(&p_student[i].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);
//"w+b"读取或写入二进制文件,当指定文件存时建立新文件;当指定文件不存在时文件原有内容丢失
sorcfile=fopen(filename1,"w+b");
for(k=0;k<count;k++)
{
if(fwrite(&p_student[i].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);
//"w+b"读取或写入二进制文件,当指定文件存时建立新文件;当指定文件不存在时文件原有内容丢失
sorcfile=fopen(filename1,"w+b");
for(k=0;k<count;k++)
{
if(fwrite(&p_student[i].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的c程序设计成绩:",tempname);
scanf("%f",&sorc);
p_student[i].student1.sorc[4]=sorc;
fflush(stdin);
//"w+b"读取或写入二进制文件,当指定文件存时建立新文件;当指定文件不存在时文件原有内容丢失
sorcfile=fopen(filename1,"w+b");
for(k=0;k<count;k++)
{
if(fwrite(&p_student[i].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的java应用程序设计成绩:",tempname);
scanf("%f",&sorc);
p_student[i].student1.sorc[4]=sorc;
fflush(stdin);
//"w+b"读取或写入二进制文件,当指定文件存时建立新文件;当指定文件不存在时文件原有内容丢失
sorcfile=fopen(filename1,"w+b");
for(k=0;k<count;k++)
{
if(fwrite(&p_student[i].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);
//"w+b"读取或写入二进制文件,当指定文件存时建立新文件;当指定文件不存在时文件原有内容丢失
sorcfile=fopen(filename1,"w+b");
for(k=0;k<count;k++)
{
if(fwrite(&p_student[i].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 ;
}
各位朋友你们好:
这是一个修改学生成绩的c语言模块 ,我有两点无法理解,还请教各位指点一二
1,在这个修改模块中 一共有6们课程,我用的是结构体
struct studentinfo //--学生个人信息结构
{
char name [NAME]; //学生姓名
char sex [SEX]; //学生性别
char birth [BIRTH]; //出生日期
char adddr [ADDDR]; //学生地址
char poto [POTO]; //联系电话
char dak [DAK]; //邮政编码
char school[SCHOOL]; //所在学校
};
struct studentsorc //--学生成绩结构
{
char name [NAME]; //学生姓名
int ID; //学生学号
float sorc[6]; //记录学生成绩
float aver; //平均分
float sum; //总分
};
struct allstudentinfo //--学生全部结构 (用于存放学生的基本信息和成绩信息)
{
struct studentinfo student;
struct studentsorc student1;
};
中的struct studentsorc.sorc[6]来存储数据的,在这个模块中是
p_student[i].student1.sorc[1]=sorc; 存储语文
p_student[i].student1.sorc[2]=sorc; 存储数学
p_student[i].student1.sorc[1]=sorc; 存储英语
p_student[i].student1.sorc[4]=sorc; 存储c语言
p_student[i].student1.sorc[4]=sorc; 存储java
p_student[i].student1.sorc[5]=sorc; 存储多媒体
怎么是这样存储的,难道不是按照数组的顺序0,1,2,3,4,5来一次存储各个分数吗?
2,在每个存储p_student[i].student1.sorc[1]=sorc; 数据中为什么还要在p_student[i].student1.sorc[1]加上一个=sorc这是什么意思,不了解