creat(STUDENT *stu,int *nn)
{
int n,i=0;
clrscr();
printf("Please enter the NUMBER of the record(s):(1~10)");
scanf("%d",&n);
if(n<1||n>10)
{ printf("The number is not correct!!");
exit(0);
}
else *nn=n;
printf("Please input the record(s) as following format:\n");
printf("Name English Math\n\n");
while(i<n)
{ stu[i].num=1001+i;
scanf("%s %d %d",stu[i].name,&stu[i].eng,&stu[i].math);
if(stu[n].eng>=0&&stu[n].eng<=100&&stu[n].math>=0&&stu[n].math<=100)
{ stu[i].tot=stu[i].eng+stu[i].math;
i++;
}
}
printf("\nThe record(s) is(are) inputed successfully\n");
}
index()
{ clrscr();
printf("\n\n\t1 Init Record(s)\n");
printf("\t2 List Record(s)\n");
printf("\t3 Insert Record\n");
printf("\t4 Delete Record\n");
printf("\t5 Modify Record\n");
printf("\t6 Search the Max Score\n");
printf("\t0 Exit\n\n");
}
list(STUDENT *stu,int n)
{
int i;
clrscr();
printf(" Num Name English Math TotalScore\n\n");
for(i=0;i<n;i++)
printf(" %-10d%-10s%-10d%-10d%-12d\n",stu[i].num,stu[i].name,stu[i].eng,stu[i].math,stu[i].tot);
}
insert(STUDENT **student,int *nn)
{
int i,n=*nn;
STUDENT *stu=*student;
clrscr();
if(n>=10)
{ stu=(STUDENT *)realloc(stu,(sizeof(STUDENT))*(n+1));
if(!stu) {printf("Insert Failed!!"); exit(0);}
*student=stu;
}
stu[n].num=stu[n-1].num+1;
printf("Please enter the Student's Name and English and Math's Score\n");
scanf("%s %d %d",stu[n].name,&stu[n].eng,&stu[n].math);
if(stu[n].eng>=0&&stu[n].eng<=100&&stu[n].math>=0&&stu[n].math<=100)
{ stu[n].tot=stu[n].eng+stu[n].math;
(*nn)+=1;
printf("\n\nThe record is inserted successfully");
}
else printf("\n\nThe score is(are) Error\n");
}
delete(STUDENT *stu,int *nn)
{
int i,m;
list(stu,*nn);
printf("\n\nPlease Enter the Num that you want to delete:");
getchar();
scanf("%d",&m);
if( (m>1000) && (m<=*nn+1000) )
{ for(i=0;i<*nn;i++)
if(stu[i].num==m)break;
if(i==*nn)
printf("\n\nThe %4d's record is not exist\n" ,m);
else
{ for(;i<*nn-1;i++)
stu[i]=stu[i+1];
(*nn)-=1;
printf("\n\nThe record is deleted successfully\n");
}
}
else printf("\n\nThe %4d's record is not exist\n" ,m);
}
modify(STUDENT *stu,int n)
{
int m,i;
STUDENT a;
list(stu,n);
printf("\n\nPlease Enter the Num that you want to delete(Enter n)to Cancer:");
getchar();
scanf("%d",&m);
if((m>1000)&&m<=n+1000)
{ for(i=0;i<n;i++)
if(stu[i].num==m)break;
if(i==n)
{ printf("\n\nThe %4d's record is not exist\n" ,m);
exit(0);
}
printf("Please enter the English and Math's Score\n");
scanf("%d %d",&a.eng,&a.math);
if(a.eng>=0&&a.eng<=100&&a.math>=0&&a.math<=100)
{ m=m-1;
stu[i].eng=a.eng;
stu[i].math=a.math;
stu[i].tot=stu[i].eng+stu[i].math;
printf("\n\nThe record is modified successfully\n");
}
else printf("\n\nThe score is(are) Error\n");
}
else printf("\n\nThe %4d's record is not exist\n" ,m);
}
search(STUDENT *stu,int n)
{
int i,k=0;
clrscr();
for(i=1;i<n;i++)
if(stu[i].tot>stu[k].tot) k=i;
printf("The best score is:\t%5d\n\n",stu[k].tot);
printf("The record's detail is(are): \n");
printf(" Num Name English Math TotalScore\n\n");
for(i=0;i<n;i++)
if(stu[i].tot==stu[k].tot)
printf(" %-10d%-10s%-10d%-10d%-12d\n",stu[i].num,stu[i].name,stu[i].eng,stu[i].math,stu[i].tot);
}
main()
{
STUDENT *stu;
int i,n=10,r;
stu=(STUDENT *)malloc(sizeof(STUDENT)*n);
if(!stu)
{ printf("ERROR\n"); exit(0); }
readdat(stu,&n);
while(1)
{ index();
printf(" Please choose the operation's number you want:");
scanf("%d",&r);
switch(r)
{ case 0: exit(0);
case 1: { creat(stu,&n); break; }
case 2: { list(stu,n); break; }
case 3: { insert(&stu,&n); break; }
case 4: { delete(stu,&n); break; }
case 5: { modify(stu,n); break; }
case 6: { search(stu,n); break; }
default: continue;
}
printf("\n\n\nPlease press Enter to continue...");
getchar();getchar();
}
}
//没有试过,是从某个贴子上(具体是哪一个,我倒忘了)能不能通过编译,我可不知道呀,一句话,谨供参考。你可以模仿着写一个试看看。