急!一个关于学生作业完成情况管理系统的问题,小弟是新手,闹不明白啊
小弟写一个编程作业,写完后好像问题很大,小弟是新手,闹不明白啊,所以想向大哥大姐们求助一下题是这样的:
题目:假设某门课程一学期要留10次作业,每次老师要进行批改,给出分数后还要进行登记。学期期末要根据每次作业的成绩计算出最终的平均成绩(满分100)。
该程序应该具有下列功能:
(1) 分数登记: 通过键盘输入某位学生某次作业的分数。
(2) 查询分数: 给定学号,显示某位学生作业完成情况;
(3) 修改分数: 给定某位学生的学号,修改该学生的作业完成信息;
(4) 统计最终成绩: 计算并显示出每位学生的最终平时成绩;
(5) 保存信息: 将输入的学生成绩和最终成绩保存在文件score.dat中
(6) 退出
小弟是这样写的
#include"stdio.h"
struct score
{
char num[6];
int score[10];
}stu[50];
int con()
{ int i=0;char c;
do{printf("是否继续(Y/N)?");
flushall();
c=getchar();}while(c!='Y'&&c!='y'&&c!='N'&&c!='n');
if(c=='N'||c=='n') i=1;
return(i);}
int n;
void fun1()
{
int a,i;
clrscr();
printf("输入学生数:");
scanf("%d",&n);
for(a=0;a<n;a++)
{printf("学号:");scanf("%s",stu[a].num);
printf("分数:");for(i=0;i<10;i++)
scanf("%d",&stu[a].score);
} if(con()==1) return;
else fun1();
}
void fun2()
{ int i,j;char num[6];
clrscr();
printf("请输入学号:");
scanf("%s",num);
for(i=0;i<n;i++)
if(strcmp(num,stu.num)==0)
{printf("学号:%s\n",stu.num);
printf("成绩:");
for(j=0;j<10;j++)
printf("%d\t",stu.score[j]);
} if(con()==1) return;
else fun2();
}
void fun3()
{
int e,f;char num[6];
clrscr();
printf("请输入要修改的学生学号:");scanf("%s",num);
for(e=0;e<n;e++)
if(strcmp(num,stu[e].num)==0)
{printf("请修改成绩: ");
for(f=0;f<10;f++)
{scanf("%d",&stu[e].score[f]);}
} if(con()==1) return;
else fun3();
}
void fun4()
{
int b,c,ave,sum;
clrscr();
for (b=0;b<n;b++)
{sum=0;
for(c=0;c<10;c++)
sum+=stu.score[c];
ave=sum/10;
printf("平均成绩: %d\n",ave);}
getchar();
}
void fun5()
{ int b,d;
FILE *fp;
if((fp=fopen("score.dat","w"))==NULL)
{printf("无法打开文件.\n");
return;
}
for(b=0;b<n;b++)
{ fprintf(fp,"学号:%s\n",stu.num);
fprintf(fp,"成绩:");
for(d=0;d<10;d++)
{fprintf(fp,"%d\t",stu.score[d]);}
fprintf(fp,"\n");
}
fclose(fp);
}
main()
{char c; int i;
do{ clrscr();
printf("********************************welcome to**************************************\n\n");
printf("\t\t\t>>> 学生作业完成情况管理系统<<<\n\n\n\n");
printf("\t\t\t 1:分数登记\n"); printf("\t\t\t 2:查询分数\n");
printf("\t\t\t 3:修改分数\n"); printf("\t\t\t 4:统计最终成绩\n");
printf("\t\t\t 5:保存信息\n"); printf("\t\t\t 6:退出系统\n");
printf("\t\t\t 请选择输入选项[1\\2\\3\\4\\5\\6]: \n");
do{c=getchar();}while(c!='1'&&c!='2'&&c!='3'&&c!='4'&&c!='5'&&c!='6');
getchar();
switch©
{ case'1':fun1();break;
case'2':fun2();break;
case'3':fun3();break;
case'4':fun4();break;
case'5':fun5();break;
case'6':exit(0);}
printf("按任意键返回主菜单:\n");
getchar();clrscr();
}while(1);
}
和题目的要求不太一样。要求每次输入一次成绩,一共十次,可我编的是一下子输入十次成绩。不会改呀,求大哥大姐帮忙修正一下