这个程序问题多的很,求教怎么改啊
题目是请设计一个学生作业成绩管理程序,以方便教师对学生作业成绩的管理假设某门课程一学期要留 10 次作业,每次老师要进行批改,批改后要给出每次作业学生的分数并登记(成绩最高为 100)。学期末要根据每次作业的成绩计算出最终的平均成绩。该程序应该具有以下功能(1)能从键盘输入某个学生的信息(不包含作业成绩)。
(2)给定学号,显示该学生每次作业的分数。
(3)给定班号,显示该班学生每次作业的分数以及平均成绩。
(4)给定学号,修改该学生的作业成绩。
(5)给定学号,删除该学生。
#include<stdio.h>
struct studentInfo
{
int num;
int cls;
char* name;
int score[10];
}
struct stuType
{
studentInfo stu[MUNMAX];
int num;}
void DisplayMenu(); /
int choiceItem();
void Print_aInfo(struct stuType s,int index);
void PrintInfo(struct stuType s);
void Input_aInfo(struct studentInfo* as);
void Input_allInfo(struct stuType* s,int num);
int Search(struct stuType stu);
void Modify(struct stuType* s,stuType stu);
void del(struct stuType* s);
void Search_cls(struct stuType* s);
void Pj(struct stuType* s);
do{
choice=choiceItem();
switch (choice)
{
case 0:printf("\nWelcome to");break;
case 1:Input_allInfo(&student,MUNMAX);break;
case 2:Input_allInfo(&student,1); break;
case 3:PrintInfo(student);break;
case 4:Init(&student);break;
case 5:{if((index=Search(student))!=-1)
Print_aInfo(student,index);
else printf("\n No eixst the student.\n");} break;
case 6:Modify(&student,student);break;
case 7:del(&student);break;
case 8:Search_cls(&student);break;
case 9:Pj(&student);break;
}
}while(choice);
void Input_aInfo(struct studentInfo* as)
{
printf("Please input num:");
scanf("%d",&as->num);
printf("Please input cls:");
scanf("%d",&as->cls);
as->name=(char*)malloc(30);
printf("Please input name:");
scanf("%s",as->name);
printf("Please input 10 score:");
for(int j=0;j<10;j++)
scanf("%d",&as->score[j]);
}
void Input_allInfo(struct stuType* s,int num)
{
printf("\nEnter %d infomations.\n",num);
for (int i=0;i<num;i++)
{
if (s->num==MUNMAX)
{
printf("\nOverflow.");
break;
}
Input_aInfo(&s->stu[s->num++]);
}
}
void Print_aInfo(struct stuType s,int index)
{
printf("\n%4d %-10s",s.stu[index].num,s.stu[index].name);
printf("%4d\n",s.stu[index].cls);
for(int i=0;i<=10;i++)
printf("%4d\n",s.stu[index].score[i]);
}
void PrintInfo(struct stuType s)
{
if(s.num==0)
{
printf("\nNo student.");
return;
}
for(int i=0;i<s.num;i++)
{
printf("\n%4d %-16s",s.stu[i].num,s.stu[i].name);
printf("%4d%6.1d\n",s.stu[i].cls,s.stu[i].score[10]);
}
}
int Search(struct stuType stu)
{
int num;
printf("\nEnter num:");
scanf("%d",&num);
for(int i=0;i<stu.num;i++)
if(stu.stu[i].num==num)
return i;
return -1;
}
void Modify(struct stuType* s,stuType stu)
{
int num;
if (s->num==0)printf("\nNo student.");
else printf("\nEnter num:");
scanf("%d",&num);
for (int i=0;i<=num;i++)
if (stu.stu[i].num==num)
{
printf("Please input 10 score");
for(int j=0;j<10;j++)
scanf("%d",&s->stu[i].score[j]);
}
}
void Del(struct stuType* s)
{
int num,i;
if (s->num==0) printf("\nNo student.");
else printf("\nEnter num:");
scanf("%d",&num);
s->num--;
for(i=0;i<10,s->stu[i].num==num;i++)
{
s->stu[i].cls=0;
s->stu[i].num=0;
s->stu[i].name=0;
}
for(int j=0;j<10;j++)
s->stu[i].score[j]=0;
}
void Search_cls(struct stuType* s)
{
int cls;
printf("\nEnter cls:");
scanf("%d",&cls);
if(cls==0)
{
printf("\nNo class.");
}
else
{
for(int i=0;i<10,s->stu[i].cls==cls;i++)
{
Print_aInfo(*s,i);
}
}
}
void Pj(struct stuType* s
{
int num;
printf("Please input num:");
scanf("%d",&num);
for(int i=0;i<s->num;i++){
if(s->stu[i].num==num){
float pj,sum=0;
for(int j=0;j<10;j++)
sum=sum+s->stu[i].score[j];
pj=sum/10;
printf("Pj score is %f",pj);
}
}
}