📄 成绩管理.c
字号:
{
s->id=in_id;
printf("输入姓名:");
gets(in_name);
strcpy(s->name,in_name);
printf("输入学院:");
gets(in_add);
strcpy(s->add,in_add);
printf("输入该学生的课程数:");
scanf("%d",&in_n);
getchar();
s->n=in_n;
for(i=0;i<in_n;i++)
{
printf("课程号:");
scanf("%d",&in_num);
getchar();
s->subj[i].num=in_num;
printf("课程名:");
gets(in_sname);
strcpy(s->subj[i].sname,in_sname);
printf("成绩:");
scanf("%d",&in_score);
getchar();
s->subj[i].score=in_score;
}
s->next=q;
p->next=s;
break;
}
else
break;
}
}
q=q->next;
p=p->next;
}
if((fp=fopen(filename,"w"))==NULL)
{
printf("打开文件失败!");
exit(0);
}
q=head->next;
while(q)
{
fprintf(fp,"%d %s %s %d\n",q->id,q->name,q->add,q->n);
for(i=0;i<q->n;i++)
fprintf(fp,"%d %s %d\n",q->subj[i].num,q->subj[i].sname,q->subj[i].score);
q=q->next;
}
fclose(fp);
}
void delet_id()
{
int id,i;
linklist *p,*q,*r;
linklist *subj;
system("cls");
printf("请输入你要删除的学生学号:");
scanf("%d",&id);
getchar();
q=(linklist *)malloc(sizeof(linklist));
head=(linklist *)malloc(sizeof(linklist));
subj=(linklist *)malloc(sizeof(linklist));
printf("请输入文件名:");
gets(filename);
if((fp=fopen(filename,"r"))==NULL)
{
printf("打开文件错误!\n");
exit(0);
}
r=head;
while(feof(fp)==0)
{
p=(linklist *)malloc(sizeof(linklist));
fscanf(fp,"%d%s%s%d",&p->id,p->name,p->add,&p->n);
for(i=0;i<p->n;i++)
fscanf(fp,"%d%s%d\n",&p->subj[i].num,p->subj[i].sname,&p->subj[i].score);
r->next=p;
r=p;
}
r->next=NULL;
fclose(fp);
p=head;
q=head->next;
while(q)
{
if(q->id!=id)
{
q=q->next;
p=p->next;
}
else
{
p->next=q->next;
free(q);
break;
}
}
if((fp=fopen(filename,"w"))==NULL)
{
printf("打开文件失败!");
exit(0);
}
q=head->next;
while(q)
{
fprintf(fp,"%d %s %s %d\n",q->id,q->name,q->add,q->n);
for(i=0;i<q->n;i++)
fprintf(fp,"%d %s %d\n",q->subj[i].num,q->subj[i].sname,q->subj[i].score);
q=q->next;
}
printf("删除该学生后文件中学生信息是:\n");
fclose(fp);
}
void delet_name()
{
int i;
char name[20];
linklist *p,*q,*r;
linklist *subj;
system("cls");
printf("请输入你要删除的学生姓名:");
gets(name);
q=(linklist *)malloc(sizeof(linklist));
head=(linklist *)malloc(sizeof(linklist));
subj=(linklist *)malloc(sizeof(linklist));
printf("请输入文件名:");
gets(filename);
if((fp=fopen(filename,"r"))==NULL)
{
printf("打开文件错误!\n");
exit(0);
}
r=head;
while(feof(fp)==0)
{
p=(linklist *)malloc(sizeof(linklist));
fscanf(fp,"%d%s%s%d",&p->id,p->name,p->add,&p->n);
for(i=0;i<p->n;i++)
fscanf(fp,"%d%s%d\n",&p->subj[i].num,p->subj[i].sname,&p->subj[i].score);
r->next=p;
r=p;
}
r->next=NULL;
fclose(fp);
p=head;
q=head->next;
while(q)
{
if(strcmp(q->name,name)!=0)
{
q=q->next;
p=p->next;
}
else
{
p->next=q->next;
free(q);
break;
}
}
if((fp=fopen(filename,"w"))==NULL)
{
printf("打开文件失败!");
exit(0);
}
q=head->next;
while(q)
{
fprintf(fp,"%d %s %s %d\n",q->id,q->name,q->add,q->n);
for(i=0;i<q->n;i++)
fprintf(fp,"%d %s %d\n",q->subj[i].num,q->subj[i].sname,q->subj[i].score);
q=q->next;
}
fclose(fp);
}
void modify_id()
{
int id,i;
int in_id,in_n,in_score,in_num;
char in_name[20],in_add[20],in_sname[20];
linklist *p,*subj;
linklist *r,*q;
system("cls");
printf("请输入你要修改的学生学号:");
scanf("%d",&id);
getchar();
printf("请输入文件名:");
gets(filename);
if((fp=fopen(filename,"r+"))==NULL)
{
printf("打开文件错误!\n");
exit(0);
}
q=(linklist *)malloc(sizeof(linklist));
subj=(linklist *)malloc(sizeof(linklist));
head=(linklist *)malloc(sizeof(linklist));
r=head;
while(feof(fp)==0)
{
p=(linklist *)malloc(sizeof(linklist));
fscanf(fp,"%d%s%s%d\n",&p->id,p->name,p->add,&p->n);
for(i=0;i<p->n;i++)
fscanf(fp,"%d%s%d\n",&p->subj[i].num,p->subj[i].sname,&p->subj[i].score);
r->next=p;
r=p;
}
r->next=NULL;
fclose(fp);
q=head->next;
while(q)
{
if(q->id!=id)
q=q->next;
else
{
printf("请输入新的信息:\n");
printf("输入学号:");
scanf("%d",&in_id);
getchar();
q->id=in_id;
printf("输入姓名:");
gets(in_name);
strcpy(q->name,in_name);
printf("输入学院:");
gets(in_add);
strcpy(q->add,in_add);
printf("输入该学生的课程数:");
scanf("%d",&in_n);
getchar();
q->n=in_n;
for(i=0;i<in_n;i++)
{
printf("课程号:");
scanf("%d",&in_num);
getchar();
q->subj[i].num=in_num;
printf("课程名:");
gets(in_sname);
strcpy(q->subj[i].sname,in_sname);
printf("成绩:");
scanf("%d",&in_score);
getchar();
q->subj[i].score=in_score;
}
break;
}
}
if((fp=fopen(filename,"w"))==NULL)
{
printf("打开文件失败!");
exit(0);
}
q=head->next;
while(q)
{
fprintf(fp,"%d %s %s %d\n",q->id,q->name,q->add,q->n);
for(i=0;i<q->n;i++)
fprintf(fp,"%d %s %d\n",q->subj[i].num,q->subj[i].sname,q->subj[i].score);
q=q->next;
}
fclose(fp);
}
void modify_name()
{
int i;
int in_id,in_n,in_score,in_num;
char in_name[20],in_add[20],in_sname[20];
char name[20];
linklist *p,*subj;
linklist *r,*q;
system("cls");
printf("请输入你要修改的学生姓名:");
gets(name);
printf("请输入文件名:");
gets(filename);
if((fp=fopen(filename,"r+"))==NULL)
{
printf("打开文件错误!\n");
exit(0);
}
q=(linklist *)malloc(sizeof(linklist));
subj=(linklist *)malloc(sizeof(linklist));
head=(linklist *)malloc(sizeof(linklist));
r=head;
while(feof(fp)==0)
{
p=(linklist *)malloc(sizeof(linklist));
fscanf(fp,"%d%s%s%d\n",&p->id,p->name,p->add,&p->n);
for(i=0;i<p->n;i++)
fscanf(fp,"%d%s%d\n",&p->subj[i].num,p->subj[i].sname,&p->subj[i].score);
r->next=p;
r=p;
}
r->next=NULL;
fclose(fp);
q=head->next;
while(q)
{
if(strcmp(q->name,name)!=0)
q=q->next;
else
{
printf("请输入新的信息:\n");
printf("输入学号:");
scanf("%d",&in_id);
getchar();
q->id=in_id;
printf("输入姓名:");
gets(in_name);
strcpy(q->name,in_name);
printf("输入学院:");
gets(in_add);
strcpy(q->add,in_add);
printf("输入该学生的课程数:");
scanf("%d",&in_n);
getchar();
q->n=in_n;
for(i=0;i<in_n;i++)
{
printf("课程号:");
scanf("%d",&in_num);
getchar();
q->subj[i].num=in_num;
printf("课程名:");
gets(in_sname);
strcpy(q->subj[i].sname,in_sname);
printf("成绩:");
scanf("%d",&in_score);
getchar();
q->subj[i].score=in_score;
}
break;
}
}
if((fp=fopen(filename,"w"))==NULL)
{
printf("打开文件失败!");
exit(0);
}
q=head->next;
while(q)
{
fprintf(fp,"%d %s %s %d\n",q->id,q->name,q->add,q->n);
for(i=0;i<q->n;i++)
fprintf(fp,"%d %s %d\n",q->subj[i].num,q->subj[i].sname,q->subj[i].score);
q=q->next;
}
fclose(fp);
}
void count()
{
int x;
void average();
void saverage();
void subjnum();
system("cls");
printf("*********************统计子系统***********************\n");
printf(" 1:求指定课程的平均分\n");
printf(" 2:求指定学生的平均分\n");
printf(" 3:求指定学生的课程数\n");
printf(" 4:退出\n");
printf("输入您要进行的步骤:");
scanf("%d",&x);
getchar();
switch(x)
{
case 1:{
average();
printf("\n按回车键返回主菜单:");
getchar();
}
break;
case 2:{
saverage();
printf("\n按回车键返回主菜单:");
getchar();
}
break;
case 3:{
subjnum();
printf("\n按回车键返回主菜单:");
getchar();
}
break;
case 4:
break;
}
}
void average()
{
int num,i,j;
linklist *p,*r;
linklist *subj;
int ave,sum=0;
system("cls");
printf("请输入你要求平均分的课程号:");
scanf("%d",&num);
getchar();
head=(linklist *)malloc(sizeof(linklist));
subj=(linklist *)malloc(sizeof(linklist));
printf("请输入文件名:");
gets(filename);
if((fp=fopen(filename,"r"))==NULL)
{
printf("打开文件错误!\n");
exit(0);
}
j=0;
r=head;
while(feof(fp)==0)
{
p=(linklist *)malloc(sizeof(linklist));
fscanf(fp,"%d%s%s%d",&p->id,p->name,p->add,&p->n);
for(i=0;i<p->n;i++)
fscanf(fp,"%d%s%d\n",&p->subj[i].num,p->subj[i].sname,&p->subj[i].score);
r->next=p;
r=p;
}
r->next=NULL;
fclose(fp);
p=head->next;
while(p)
{
for(i=0;i<p->n;i++)
{
if(p->subj[i].num==num)
{
sum=sum+p->subj[i].score;
j++;
}
}
p=p->next;
}
ave=sum/j;
printf("平均分是:%d",ave);
}
void saverage()
{
int id,i;
linklist *p,*r;
linklist *subj;
int ave,sum=0;
system("cls");
printf("请输入你要求平均分的学生学号:");
scanf("%d",&id);
getchar();
head=(linklist *)malloc(sizeof(linklist));
subj=(linklist *)malloc(sizeof(linklist));
printf("请输入文件名:");
gets(filename);
if((fp=fopen(filename,"r"))==NULL)
{
printf("打开文件错误!\n");
exit(0);
}
r=head;
while(feof(fp)==0)
{
p=(linklist *)malloc(sizeof(linklist));
fscanf(fp,"%d%s%s%d",&p->id,p->name,p->add,&p->n);
for(i=0;i<p->n;i++)
fscanf(fp,"%d%s%d\n",&p->subj[i].num,p->subj[i].sname,&p->subj[i].score);
r->next=p;
r=p;
}
r->next=NULL;
fclose(fp);
p=head->next;
while(p)
{
if(p->id!=id)
p=p->next;
else
{
for(i=0;i<p->n;i++)
sum=sum+p->subj[i].score;
ave=sum/p->n;
printf("\n该学生的平均分是:%d\n",ave);
break;
}
}
}
void subjnum()
{
linklist *p,*subj;
int id,i;
p=(linklist *)malloc(sizeof(linklist));
subj=(linklist *)malloc(sizeof(linklist));
system("cls");
printf("请输入文件名:");
gets(filename);
if((fp=fopen(filename,"r"))==NULL)
{
printf("打开文件错误!\n");
exit(0);
}
printf("请输入你要求课程数的学生的学号:");
scanf("%d",&id);
getchar();
while(feof(fp)==0)
{
fscanf(fp,"%d%s%s%d",&p->id,p->name,p->add,&p->n);
for(i=0;i<p->n;i++)
fscanf(fp,"%d%s%d\n",&p->subj[i].num,p->subj[i].sname,&p->subj[i].score);
if(p->id==id)
{
printf("该学生所学课程的门数是:%d\n",p->n);
break;
}
}
fclose(fp);
}
void beifen()
{
linklist *p,*subj;
char filename1[20];
FILE *fp1;
int i;
subj=(linklist *)malloc(sizeof(linklist));
p=(linklist *)malloc(sizeof(linklist));
system("cls");
printf("请输入文件名:");
gets(filename);
if((fp=fopen(filename,"r"))==NULL)
{
printf("打开文件错误!\n");
exit(0);
}
printf("请输入你要备份的文件名:");
gets(filename1);
if((fp1=fopen(filename1,"w+"))==NULL)
{
printf("打开文件错误!\n");
exit(0);
}
while(feof(fp)==0)
{
fscanf(fp,"%d%s%s%d",&p->id,p->name,p->add,&p->n);
fprintf(fp1,"%d %s %s %d\n",p->id,p->name,p->add,p->n);
for(i=0;i<p->n;i++)
{
fscanf(fp,"%d%s%d\n",&p->subj[i].num,p->subj[i].sname,&p->subj[i].score);
fprintf(fp1,"%d %s %d\n",p->subj[i].num,p->subj[i].sname,p->subj[i].score);
}
}
fclose(fp);
fclose(fp1);
if((fp1=fopen(filename1,"r"))==NULL)
printf("打开文件错误!\n");
printf("\n备份文件中学生信息是:\n");
while(feof(fp1)==0)
{
fscanf(fp1,"%d%s%s%d",&p->id,p->name,p->add,&p->n);
printf("学号:%d\n",p->id);
printf("姓名:%s\n",p->name);
printf("学院:%s\n",p->add);
printf("课程数:%d\n",p->n);
printf(" 课程号 课程名 成绩\n");
for(i=0;i<p->n;i++)
{
fscanf(fp1,"%d%s%d\n",&p->subj[i].num,p->subj[i].sname,&p->subj[i].score);
printf(" %d %s %d\n",p->subj[i].num,p->subj[i].sname,p->subj[i].score);
}
}
fclose(fp1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -