本人刚学C++不久,遇到一个题目编程:学员成绩管理系统
一直有几个问题解决不了,主要是程序中的修改和查询部分我不知道具体出错如何修改,麻烦高手指导指导.如能详细解释更不胜感激!
源程序如下
---------------------------------------------------------------
#include <stdio.h>
#define N 50                 // 班级人数
int x=0;struct student
{
 int num;
 char name[20];
 int score[3];
 int all;
 double avg;
}stu[N];struct student input()                  // 输入
{
 int j;
 int zcj;
 struct student st;
 printf("请输入学员信息:\n");
 printf("\n");
 printf("学号:");
 scanf("%d",&st.num);
  printf("\n");
 printf("姓名:");
 fflush(stdin);
 gets(st.name);
  printf("\n");
 printf("三门成绩:\n");
 zcj=0;
 for(j=0;j<3;j++)
 {
  printf("成绩%d:",j+1);
  scanf("%d",&st.score[j]);
  zcj+=st.score[j];
 }
 st.all=zcj;
 st.avg=zcj/3;  
 return st;
}void search (struct student stud[])    // 查询
{
char stud[50];
int i,j;
char ch='n';
   printf("\n请输入查询的学员姓名:\n");
         fflush(stdin);
             gets(st.name);
             printf("\n"); for(j=0;j<i;j++)
{
if(strcmp(st.name,stud)==0)
{
ch='y';
break;
}
}
if(ch=='n')
{
printf("该学员信息不存在!\n");
}
else
 {
     printf("\n学号\t姓名\t成绩1\t成绩2\t成绩3\t总成绩\t平均成绩\n");
  printf("%d\t",stud[i].num);
  printf("%s\t",stud[i].name);
  printf("%d\t",st.score[0]);
  printf("%d\t",st.score[1]);
  printf("%d\t",st.score[2]);
  printf("%d\t",stud[i].all);
  printf("%6.2f\t",stud[i].avg);
  printf("\n");
             }
}void ren (struct student stud[])    // 修改
{
 int i,j;
 int zcj;
 struct student st;
        char name1[20]; find(stu);      printf("请输入需要修改的学员姓名:\n");
         fflush(stdin);
             gets(name1);
             printf("\n"); if(strcmp(st[i].name,name1)==0)
{
 printf("学号:");
 scanf("%d",&st.num);
 printf("\n");
 printf("姓名:");
 fflush(stdin);
 gets(st.name);
 printf("\n");
 printf("三门成绩:\n");
 zcj=0;
 for(j=0;j<3;j++)
 {
  printf("成绩%d:",j+1);
  scanf("%d",&st.score[j]);
  zcj+=st.score[j];
 }
 st.all=zcj;
 st.avg=zcj/3;   printf("修改后的学员详细信息为:\n");       
}
for(i=0;i<n;i++)
{
  printf("\n学号\t姓名\t成绩1\t成绩2\t成绩3\t总成绩\t平均成绩\n");
  printf("%d %s %d %d %d\n",stud[i].num,stud[i].name,stud[i].score[0],stud[i].score[1],stud[i].score[2],stud[i].all,stud[i].avg);
    }
}void display(struct student stud[])    // 输出
{
 int i;
 printf("\n学号\t姓名\t成绩1\t成绩2\t成绩3\t总成绩\t平均成绩\n");
 for(i=0;i<x;i++)
 {
  printf("%d\t",stud[i].num);
  printf("%s\t",stud[i].name);
     printf("%d\t",st.score[0]);
  printf("%d\t",st.score[1]);
  printf("%d\t",st.score[2]);
  printf("%d\t",stud[i].all);
  printf("%6.2f\t",stud[i].avg);
  printf("\n");
 }
}void cmp(struct student stud[])            //排序
{
 int i,j;
 struct student stmp;
 for(i=0;i<x;i++)
 {
  for(j=0;j<x-i-1;j++)
  {
   if(stud[j].ave<stud[j+1].ave)
   {
    stmp=stud[j];
    stud[j]=stud[j+1];
    stud[j+1]=stmp;
   }
  }
 }
}
void insert(struct student stud[])          // 插入
{
 int i,j;
 struct student stmp;
 printf("\n 请输入要插入的学员信息:\n");
 stmp=input();
 for(i=0;i<x;i++)
 {
  if(stud[i].ave>stmp.ave)
   break;
 }
 for(j=x;j>i;j--)
 {
  stud[j]=stud[j-1];
 }
 stud[i]=stmp;
 ++x;
 printf("插入后的全部学员详细信息为:");
 cmp(stud);
 display(stud);
}void del(struct student stud[])              // 删除
{
 int i,j;
 int num;
 printf("\n请输入要删除信息的学员的学号:");
 scanf("%d",&num);
 for(i = 0;i < x;i++)
 {
  if(stud[i].num==num)
   break;
 }
 --x;
 for(j=i;j<x;j++)
 {
  stud[j]=stud[j+1];
 }
 printf("删除该学员信息后的详细信息为:");
 cmp(stud);
 display(stud);}void main()                                //主程序
{
 int a;
 char ch='y';
 do
 {
    printf("*****************************************\n");
    printf("*                                       *\n");
printf("*               欢迎进入                *\n");
    printf("*           学员成绩管理系统            *\n");
    printf("*                                       *\n");
    printf("*                                       *\n");
printf("*****************************************\n");
    printf("\n \t 1、输入学员信息\n \t2、查询学员信息\n\t3、修改学员信息\n \t4、插入学员信息\n \t5、删除学员信息\n \t6、显示学员信息(按平均成绩顺序)\n\t0、退出\n");
    printf("\n");
    printf("请选择功能:");
    scanf("%d",&a);   if(a==0)                                      //0、退出
   {
printf("*****************************************\n");
    printf("*                                       *\n");
printf("*               欢迎使用                *\n");
    printf("*           学员成绩管理系统            *\n");
    printf("*                                       *\n");
    printf("*                                       *\n");
printf("*****************************************\n");
    break;
   }
   else if(a==1)                                //1、输入学员信息
   {
        input(stu);   }
      else if(a==2)                          //2、查询学员信息
   {
       search (stu);   }      
   else if(a==3)                       //3、修改学员信息
   {
    ren(stu);
   }   else if(a==4)                          //4、插入学员信息
   {
    if(x<N)
    {
     insert(stu);
    }
    else
     {
      printf("\n\t人数超出! 无法插入学员信息!\n");
     }
   }
   else if(a==5)                          //5、删除学员信息
   {
    del(stu);
   }
   else if(a==6)                          //6、显示学员信息
   {
    cmp(stu);
    display(stu);
   }   else
   {
    printf("输入错误!");
   }
 }while(1); 
}