字体:  

c语言课程设计_学生成绩管理系统

学友集 发表于: 2006-12-23 13:21 来源: 学友集 社区门户

课程设计的内容: 1、每一条记录包括一个学生的学号、姓名、3门课成绩、平均成绩。
2、输入功能:可以一次完成若干条记录的输入。
3、显示功能:完成全部学生记录的显示。
4、查找功能:完成按姓名查找学生记录,并显示。
5、排序功能:按学生平均成绩进行排序。
6、插入功能:按平均成绩高低插入一条学生记录。
7、将学生记录存在文件score中。
8、应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观!
课程设计的要求:  1、  用C语言实现系统;
2、  利用结构体数组实现学生成绩的数据结构设计;
3、  系统具有增加,查询,插入,排序等基本功能;
4、  系统的各个功能模块要求用函数的形式实现;
5、  完成设计任务并书写课程设计报告。
6、  将学生成绩信息存在文件中。
#include <dos.h>        /*暂停函数*/
#include <stdio.h>      /*I/O函数*/
#include <stdlib.h>     /*其它说明*/
#include <string.h>     /*字符串操作函数*/
#define  M 1000
int N=0;                /*记录已经存在的记录条数*/
int H=0;
struct student          /*定义数据结构*/
{ char number[8];
   char name[16];
   float score[3];
   float average;
}stud[M],temp;
  /*以下是函数声明*/
  void load(void);                       /*读入记录*/
  void inorder(struct student stud[]);   /*排列记录*/
  void insert(struct student stud[]);    /*插入记录*/
  void save(struct student stud[]);      /*保存记录*/
  void print(struct student stud[]);     /*显示记录*/
  void search(struct student stud[]);    /*查找记录*/
  void enter(struct student stud[]);     /*输入记录*/
  void del(void);                        /*删除记录*/
  void change(void);                     /*改变记录*/
  void quit(void);                       /*退出系统*/
  int flag(struct student stud[]);       /*返回值为0或1*/
  int menu(void);                        /*菜单*/
main()                  /*主函数*/
{ /*以下printf语句为打印欢迎界面语句*/
   printf("\n\n\n\n\n\n\n\t\t\t\t\t\t\t\t\t!!!!!\n");
   printf("  w           w eeeeeee  l      ccccccc  ooooo   mmmmmmmmm  eeeeeee     !!!!\n");
   printf("  w     w     w e     e  l      c       o     o  m   m   m  e     e     !!! \n");
   printf("   w   w w   w  e eeeee  l      c      o       o m   m   m  eeeeeee     !!  \n");
   printf("    w w   w w   e        l      c       o     o  m   m   m  e           !   \n");
   printf("     w     w    eeeeeee  llllll ccccccc  ooooo   m   m   m  eeeeeee         \n");
   printf("\t\t\t\t\t\t\t\t\t\b0");
   sleep(1);
   printf("\n\n\n\n\n\t\t\t\t\t\t\t\t     ----- pan");
   sleep(1);
   load();              /*调用读入记录函数*/
   for(;;)              /*无限循环*/
    { switch(menu())    /*调用主菜单函数,返回值整数作开关语句的条件*/
      { case 1: enter(stud);  break;   /*输入记录*/
        case 2: print(stud);  break;   /*显示要看的一页的记录*/
        case 3: search(stud); break;   /*查找记录*/
        case 4: inorder(stud);break;   /*排序*/
        case 5: insert(stud); break;   /*插入记录*/
        case 6: save(stud);   break;   /*保存文件*/
        case 7: change();     break;   /*改变记录*/
        case 8: del();        break;   /*删除记录*/
        case 9: quit();                /*如菜单返回值为9程序结束*/
      }
    }
}
/*输入数据函数*/
void enter(struct student stud[])
{ int n=0,i,j,k,c;
   char b[4];
   float sum;
   printf("How many student's record do you want to enter? n=  ?\b\b\b");
   scanf("%d",&n);      /*输入一次要输入记录数*/
   for(i=0;i<n;)
    { sum=0;            /*统记三科总分*/
      printf("Input the %dth student's number ",N+1);
      scanf("%s",stud[N].number);        /*输入学号*/
      /*以下if-else语句判断所输记录是否存在*/
      if(flag(stud))    /*调用返回值为0或1函数,判断所输入的学号是否已经存在,存在就执行if语句*/
       {
         printf("The record has exist.\n");
         printf("Input again.");
         getch();
       }
      else
       { printf("Input the %dth student's name ",N+1);
         scanf("%s",stud[N].name);       /*输入姓名*/
         for(j=0;j<3;j++)
          { do
            {
             printf("Input the %dth student's score(%d)",N+1,j+1);      /*打印提示*/
             scanf("%s",b);              /*输入分数*/

最新回复

学友集 at 2006-12-23 13:22:34
stud[N].score[j]=atof(b);   /*将字符串强制转换成实型,得值赋给stud[N].score[j]*/
             if(stud[N].score[j]<=0||stud[N].score[j]>100)              /*判断分数是否在0-100之间*/
              {
               k=1;                      /*分数不在0-100之间时k值为1*/
               printf("Error input !!!\n");
               printf("Input again ...\n");            /*打印出错提示*/
              }
             else
              k=0;                       /*分数在0-100之间时k值为0*/
            }while(k);                   /*由k值决定是否要循环*/
            sum+=stud[N].score[j];       /*统记三科总分*/
          }
         stud[N].average=sum/3.0;        /*平均分*/
         printf("\nEnter success !!!\n");
         printf("\nPress any key to return.");
         getch();
         N++;                            /*记录数加1*/
         i++;
         H=1;
       }
       clrscr();        /*清屏*/
    }
    clrscr();           /*清屏*/
} /* 显示记录函数*/
void print(struct student stud[])
{ int i=0,k,max,maxb,n,flag='y';
   char m[6];
    /*以下if-else为判断文件中是否有记录*/
   if(N==0)
    {
     printf("There are not record.\n");
     printf("Press any key to return.");          /*当N为0时(即没有记录)打印没有记录提示*/
     getch();
    }
   else
   while(flag!='n')
    { maxb=0;i=0;
      /*以下分页输出记录*/
      do
      { if(N%10!=0)
          { printf("\n\t\tThere are %d pages in all.",N/10+1);
            printf("\n\t\tWhich page do you want to see? ");  
          }
        else
          { printf("\n\t\tThere are %d pages in all.",N/11+1);
            printf("\n\t\tWhich page do you want to see? ");
          }
        scanf("%s",m);  /*输入要显示的页数*/
        k=atoi(m);      /*强制把m转换成整形*/
        if(k)
         { k=10*(k-1);  /*此时k变为第k页的第一条信息的序号*/
           if(k>=N)     /*判断页数是否存在*/
            { printf("\n\t\tThe page is not exist !!!");
              printf("\n\t\tInput again .\n");
            }
         }
        else
         k=N+1;
      }while(k>=N);     /*如果页数不存在进入do-whie循环*/
      /*以下if-else语句是判断第k页是否有10条语句*/
      if((k+10)>N)
        max=N;          /*当第k页不够10条记录时*/
      else
        max=k+10;       /*当第k页够10条记录时*/
      clrscr();
      /*以下for语句为取得第k页名字最大字符长度*/
      for(i=k;i<max;i++)
       { n=strlen(stud.name);
         if(n>maxb)
          maxb=n;
       }
      i=k;
      /*以下if-else是为了保证表美观*/
      /*如果最大字符长度不大于8则按if
        输出,则按名字方格长度为8输出*/
      if(maxb<8)
       { while(i<max)
         { /*以下为输出记录*/
           if(i%10==0)
            { printf("\n\t\t\t\t Page:%d",(k+10)/10);
              printf("\n\t|---|--------|--------|--------|--------|--------|--------|");
              printf("\n\t|NO:| number |  name  |score(1)|score(2)|score(3)|average |\n");
            }
           printf("\t|---|--------|--------|--------|--------|--------|--------|\n");
           printf("\t| %-2d|  %-6s|%-8s|  %-5.1f |  %-5.1f |  %-5.1f | %-7.2f|\n",i+1,stud.number,
                    stud.name,stud.score[0],stud.score[1],stud.score[2],
                    stud.average);
           i++;
          }
          printf("\t|---|--------|--------|--------|--------|--------|--------|\n");
       }
      /*如果最大字符长度大于8则按else
        输出,见则按名字格长度为16输出*/
学友集 at 2006-12-23 13:22:59
else
       { while(i<max)
         { /*以下为输出记录*/
           if(i%10==0)
            { printf("\n\t\t\t\t Page:%d",(k+10)/10);
              printf("\n\t\b\b|---|--------|----------------|--------|--------|--------|--------|");
              printf("\n\t\b\b|NO:| number |      name      |score(1)|score(2)|score(3)|average |\n");
            }
           printf("\t\b\b|---|--------|----------------|--------|--------|--------|--------|\n");
           printf("\t\b\b| %-2d|  %-6s|%-16s|  %-5.1f |  %-5.1f |  %-5.1f | %-7.2f|\n",i+1,stud.number,
                   stud.name,stud.score[0],stud.score[1],stud.score[2],
                   stud.average);
           i++;
          }
         printf("\t\b\b|---|--------|----------------|--------|--------|--------|--------|\n");
        }
       printf("\t\t\t\b\bDo you want to go on? y or n?\b\b\b\b\b\b\b");
       flag=getch();    /*获取一个字符判断是否要继续显示*/
       clrscr();        /*清屏*/
     }
} /*查找函数*/
void search(struct student stud[])
{ int i=0,n,j;
   char number[8],flag='y';
   clrscr();            /*清屏*/
   while(flag!='n')
    { i=0;
      printf("\n\t\t\t\t\b\b\b\bThe number--name list:\n");
      printf("----------------------------------------");
      printf("----------------------------------------");
      /*以下while语言句为输出已有的记录的学号与名字*/
      while(i<N)
       { /*以下保证输出的学号和名字总长度不长于14*/
         if(strlen(stud.number)<4)
           n=4;
         else
           n=strlen(stud.number);
         if(n+strlen(stud.name)<15)   /*总长度不长于14时执行if语句*/
          { if(n+strlen(stud.name)>6)
             { printf("%-4s-",stud.number);
               printf("%s\t",stud.name);
               i++;
             }
            else
             { printf("%-4s-",stud.number);
               printf("%s\t\t",stud.name);
               i++;
             }
          }
         else                            /*总长度长于14时执行else语句*/
          { printf("%-4s-",stud.number);
            if(strlen(stud.number)>4)
              j=(12-strlen(stud.number));
            else
              j=12-4;
            for(n=0;n<j;n++)
              printf("%c",stud.name[n]);   /*以上输出总长度为13*/
            printf(".. ");               /*长出部分用".."省略表示*/
            i++;
          }
       }
      printf("\n---------------------------------------");
      printf("-----------------------------------------");
      printf("\n\t\t\bInput the student's number you want to search:");
      scanf("%s",number);                /*输入要查找的记录的学号*/
      i=0;
      while(i<N)
       { if(strcmp(stud.number,number)==0)  /*查找记录*/
           {/*输出找到的记录*/
            /*当名字长度小于8时执行if语句*/
            if(strlen(stud.name)<8)
             { printf("\n");
               printf("\t  |---|--------|--------|--------|--------|--------|--------|\n");
               printf("\t  |NO:| number |  name  |score(1)|score(2)|score(3)|average |\n");
               printf("\t  |---|--------|--------|--------|--------|--------|--------|\n");
               printf("\t  | %-2d|  %-6s|%-8s|  %-5.1f |  %-5.1f |  %-5.1f | %-7.2f|\n",i+1,stud.number,
                            stud.name,stud.score[0],stud.score[1],
                            stud.score[2],stud.average);
               printf("\t  |---|--------|--------|--------|--------|--------|--------|\n");
             }
            /*当名字长度大于8时执行else语句*/
            else
学友集 at 2006-12-23 13:23:47
{ printf("\n");
               printf("\t  |---|--------|----------------|--------|--------|--------|--------|\n");
               printf("\t  |NO:| number |      name      |score(1)|score(2)|score(3)|average |\n");
               printf("\t  |---|--------|----------------|--------|--------|--------|--------|\n");
               printf("\t  | %-2d|  %-6s|%-16s|  %-5.1f |  %-5.1f |  %-5.1f | %-7.2f|\n",i+1,stud.number,
                            stud.name,stud.score[0],stud.score[1],
                            stud.score[2],stud.average);
               printf("\t  |---|--------|----------------|--------|--------|--------|--------|\n");
             }
            flag=0;
            i=N;        /*找到并打印后i=N退出while循环*/
           }
         i++;           /*找不到时i自加*/
       }
      if(flag)          /*当找到记录时flag为0,否则为1*/
        printf("\n\t\t\tYour input is error\n");
      printf("\n\t\t\tDo you want to go on? y or n?\b\b\b\b\b\b\b");
      flag=getch();     /*获取一个字符判断是否要继续查找*/
      clrscr();         /*清屏*/     }
}
/*排序函数*/
void inorder(struct student stud[])
{ int i,j,k;
   for(i=0;i<N-1;i++)
    { k=i;
      /*以下for语句为选择法排序*/
      for(j=i+1;j<N;j++)
       if(stud[j].average>stud[k].average)
         k=j;
         if(k!=i)
          {
           temp=stud[k];
           stud[k]=stud;
           stud=temp;
           H=1;
          }
    }
   printf("\n\n\n\n\n\n\n\n\n\n\n");
   printf("                      ");
   printf("********* Has been inoder!! *********\n");     /*排序成功提示*/
   printf("                                        ");
   sleep(2);            /*调用暂停函数 暂停2秒钟*/
   clrscr();            /*清屏*/
}
/*插入记录函数*/
void insert(struct student stud[])
{ int i,j,k;
   float sum;
   char flag='y',b[4];
   clrscr();            /*清屏*/
   while(flag=='y')
    { sum=0;
      k=0;
      printf("Input the student's number you want to insert:");
      scanf("%s",stud[N].number);        /*输入要插入记录的学号*/
      for(i=0;i<N;i++)
       if(strcmp(stud.number,stud[N].number)==0)       /*查找要插入记录是否存在*/
         k=1;
      if(k)             /*判断要插入记录是否存在*/
       {
         printf("The record has exist.\n");
       }
      else
       { printf("Input the student's name you want to insert:");
         scanf("%s",stud[N].name);       /*输入要插入记录的名字*/
         for(j=0;j<3;j++)
          { do
             { printf("Input the student's score(%d):",j+1);
               scanf("%s",b);            /*输入分数*/
               stud[N].score[j]=atof(b);
               if(stud[N].score[j]<=0||stud[N].score[j]>100)    /*判断分数是否在0-100之间*/
                { k=1;
                  printf("Error input !!!\n");
                  printf("Input again ...\n");
                }
               else
                 k=0;
             }while(k);
            sum=sum+stud[N].score[j];    /*三科总分*/
           }
           stud[N].average=sum/3.0;      /*平均分*/
           /*以下for语句为插入*/
           for(j=0;j<N;j++)
            if(stud[j].average<stud[N].average)
             { i=N;
               temp=stud[N];
               for(;i>j;)
                { stud=stud[i-1];
学友集 at 2006-12-23 13:24:47
i--;
                }
               stud[j]=temp;
               j=N;
             }
           N++;
           H=1;         /*记录数加1*/
           printf("\nInsert success !!!\n\n");
        }
       printf("If you want  to go on press:y\n");
       printf("Else press any key to menu:");
       flag=getch();     /*获取一个字符判断是否要继续插入*/
       clrscr();         /*清屏*/
     }
} /*保存记录函数*/
void save(struct student stud[])
{ FILE *fp;
   int i=0;
   printf("\n\n\n\n\n\n\n\n\n\n\n");
   printf("                   ");
   printf("********** Saving file......**********\n");    /*保存提示*/
   printf("                                    ");
   sleep(1);            /*调用暂停函数 暂停1秒钟*/
   if((fp=fopen("score","wb"))==NULL)    /*以wb形式打开文件score*/
    {
     printf("Can not open the file\n");
     sleep(1);
     return;
    }
   for(i=0;i<N;i++)
   if(fwrite(&stud,sizeof(struct student),1,fp)!=1)    /*把记录保存到score文件中*/
    {
     printf("File write error\n");
     return;
     }
   fclose(fp);          /*关闭文件*/
   clrscr();            /*清屏*/
   printf("\n\n\n\n\n\n\n\n\n\n\n");
   printf("                   ");
   printf("********** Saving success !!! **********\n");  /*保存成功提示*/
   printf("                                    ");
   H=0;
   sleep(2);            /*调用暂停函数 暂停1.5秒钟*/
   clrscr();            /*清屏*/
}
/*改变记录函数*/
void change(void)
{ int i,a,k,n,h,j;
   float sum;
   char m[10],flag='y',b[8];
   while(flag=='y')
    { sum=0;
      i=0;
      k=0;
      printf("\n\t\t\t\t\b\b\b\bThe number--name list:\n");
      printf("----------------------------------------");
      printf("----------------------------------------");
      /*以下while语句为输出文件中已有记录的学号与人名*/
      while(i<N)
       { if(strlen(stud.number)<4)
            n=4;
         else
            n=strlen(stud.number);
         if(n+strlen(stud.name)<15)
          { if(n+strlen(stud.name)>6)
             { printf("%-4s-",stud.number);
               printf("%s\t",stud.name);
               i++;
             }
            else
             { printf("%-4s-",stud.number);
               printf("%s\t\t",stud.name);
               i++;
             }
          }
         else
          { printf("%-4s-",stud.number);
            if(strlen(stud.number)>4)
              j=(12-strlen(stud.number));
            else
              j=12-4;
            for(n=0;n<j;n++)
              printf("%c",stud.name[n]);
            printf(".. ");
            i++;
          }
       }
      printf("\n---------------------------------------");
      printf("-----------------------------------------");
      printf("\n\t\tInput the student's number you want to change.");
      scanf("%s",m);    /*输入要改变记录的人名*/
      printf("\n");
      for(i=0;strcmp(stud.number,m)!=0&&i<N;i++);      /*查找要改变记录的人名*/
      /*a为判断是否找到*/
      if(i<N)
       {
        a=1;
        h=i;
       }
      else
       a=0;
      /*以下if语句为找到要改变的 并输入新记录*/
      if(a)
       { printf("Input new number:");
         scanf("%s",b); /*输入学号*/
         for(i=0;i<h||i>h&&i<N;i++)
          if(strcmp(stud.number,b)==0)/*查找要改变记录是否存在*/
           k=1;
         if(k)          /*判断要改变记录是否存在*/
学友集 at 2006-12-23 13:25:34
{
           printf("The record has exist.\n");
           getch();
          }
         else
          { strcpy(stud[h].number,b);                     /*复制学号*/
            printf("Input new name:");
            scanf("%s",stud[h].name);                     /*输入姓名*/
            for(k=0;k<3;k++)
            { do
               { printf("Input new score(%d)",k+1);
                 scanf("%s",b);                           /*输入分数*/
                 stud[h].score[k]=atof(b);                /*将字符串强制转换成整形*/
                 /*以下语句判断输入是否在0-100之间*/
                 if(stud.score[k]<=0||stud[h].score[k]>100)
                  {
                   n=1;
                   printf("Error input !!!\n");
                   printf("Input again ...\n");
                  }
                 else
                  n=0;
                }while(n);
               sum=sum+stud[h].score[k]; /*统记三科总分*/
             }
             stud.average=sum/3.0;    /*平均分*/
             printf("\n\t\t\t **** Change success !!! ****\n\n"); /*改变成功提示*/
             H=1;
           }
       }
      else
       printf("\n\t\t\t\tError input!!!!!\n\n");
      printf("\t\t\t If you want  to go on press:y");
      printf("\n\t\t\t  Else press any key to menu:");
      flag=getch();     /*获取一个字符判断是否要继续改变*/
      clrscr();         /*清屏*/
    }
} /*删除记录函数*/
void del(void)
{ int i,a,j,k,n;
   char m[10],flag='y';
   while(flag=='y')
    { i=0;
      printf("\t\t\t\t\b\b\b\bThe number--name list:\n");
      printf("----------------------------------------");
      printf("----------------------------------------");
      /*以下while语句为输出文件中记录的学号与人名*/
      while(i<N)
       { if(strlen(stud.number)<4)
            n=4;
         else
            n=strlen(stud.number);
         if(n+strlen(stud.name)<15)
          { if(n+strlen(stud.name)>6)
             { printf("%-4s-",stud.number);
               printf("%s\t",stud.name);
               i++;
             }
            else
             { printf("%-4s-",stud.number);
               printf("%s\t\t",stud.name);
               i++;
             }
          }
         else
          { printf("%-4s-",stud.number);
            if(strlen(stud.number)>4)
              j=(12-strlen(stud.number));
            else
              j=12-4;
            for(n=0;n<j;n++)
              printf("%c",stud.name[n]);
            printf(".. ");
            i++;
          }
       }
      printf("\n---------------------------------------");
      printf("-----------------------------------------");
      printf("\n\t\tInput the student's number you want to delete.");
      scanf("%s",m);                     /*输入要删除的记录的学号*/
      for(i=0;strcmp(stud.number,m)!=0&&i<N;i++);      /*查找要删除的学号*/
       /*以下if-else判断要删除的是否存在*/
       if(i<N)
        a=1;
       else
        a=0;
      /*以下if语句为删除记录*/
      if(a)
       { stud=stud[M-1];
         for(i=0;i<N-1;i++)
学友集 at 2006-12-23 13:26:04
{ k=i;
            for(j=i+1;j<N;j++)
             if(stud[j].average>stud[k].average)
              k=j;
            temp=stud[k];
            stud[k]=stud;
            stud=temp;
          }
         N--;           /*文件中记录数减1*/
         printf("\n\t\t\t  **** Delete success !!! ****\n\n");
         H=1;
       }
      /*当要删除的不存在是执行下列else语句*/
      else
       printf("\n\t\t\t\tError input!!!!!\n");
      printf("\n\t\t\t If you want  to go on press:y");
      printf("\n\t\t\t  Else press any key to menu:");
      flag=getch();     /*获取一个字符判断是否要继续删除*/
      clrscr();         /*清屏*/
     }
}
/*退出系统函数*/
void quit(void)
{ char a;
   if(H)
    { printf("\n\n\n\n\n\n\n\n\n\t\t  Do you want to save the datas have changed ?");
      printf("\n\n\t\t\t\t   y & n ? ");
      printf("\n\t\t\t\t     ");
      a=getch();
      printf("%c",a);
      getch();
      if(a=='y')
       { clrscr();
         save(stud);    /*调用保存记录函数*/
         /*以下printf语句为打印再见语句*/
         printf("\n\n\n\n\n\n\n\n\n\n\n");
         printf("\t\t\t\b\b\b\b**********");sleep(1);
         printf(" See you\a");              sleep(1);
         printf(" next time\a");            sleep(1);
         printf(" !\a");                    sleep(1);
         printf(" **********");
         sleep(1);
         clrscr();      /*清屏*/
         printf("\n\n\n\n\n\n\n\n\n\n\n");
         printf("\t\t\t********** Bye Bye !!! **********");
         sleep(2);
         exit(0);       /*退出系统*/
       }       else
       {clrscr();
        /*以下printf语句为打印再见语句*/
        printf("\n\n\n\n\n\n\n\n\n\n\n");
        printf("\t\t\t\b\b\b\b**********");sleep(1);
        printf(" See you\a");              sleep(1);
        printf(" next time\a");            sleep(1);
        printf(" !\a");                    sleep(1);
        printf(" **********");
        sleep(1);
        clrscr();       /*清屏*/
        printf("\n\n\n\n\n\n\n\n\n\n\n");
        printf("\t\t\t********** Bye Bye !!! **********");
        sleep(2);
        exit(0);        /*退出系统*/
       }
    }
   else
    {/*以下printf语句为打印再见语句*/
     printf("\n\n\n\n\n\n\n\n\n\n\n");
     printf("\t\t\t\b\b\b\b**********");sleep(1);
     printf(" See you\a");              sleep(1);
     printf(" next time\a");            sleep(1);
     printf(" !\a");                    sleep(1);
     printf(" **********");
     sleep(1);
     clrscr();          /*清屏*/
     printf("\n\n\n\n\n\n\n\n\n\n\n");
     printf("\t\t\t********** Bye Bye !!! **********");
     sleep(2);
     exit(0);           /*退出系统*/
    }
}
/*读入记录函数*/
void load(void)
{ FILE *fp;
   while((fp=fopen("score","rb"))==NULL) /*以rb形式打开score文件*/
     return;
   for(N=0;!feof(fp);N++)
    {
      if(1!=fread(&stud[N],sizeof(struct student),1,fp))  /*读入记录*/
      break;            /*读完后退出*/
    }
   fclose(fp);          /*关闭文件*/
}
/*返回值为0或1函数*/
int flag(struct student stud[])
{ int i,flag=0;
   /*以下判断学号是否相同*/
   for(i=0;i<N;i++)
   if(strcmp(stud.number,stud[N].number)==0)
     flag=1;            /*相同返回1,否则返回0*/
   return(flag);
}
/*菜单函数*/
int menu(void)
{ int n;
   char a[5];
   clrscr();            /*清屏*/
   /*以下是菜单图案*/
   do
   {
    printf("\n");
    printf("\t\t ________________________________________________\n");
    printf("\t\t||\t\t    The menu:\t\t\t||\n");
    printf("\t\t||----------------------------------------------||\n");
    printf("\t\t|| (1) Enter the studens' records               ||\n");
    printf("\t\t||----------------------------------------------||\n");
    printf("\t\t|| (2) print the file                           ||\n");
学友集 at 2006-12-23 13:26:40
printf("\t\t||----------------------------------------------||\n");
    printf("\t||      || (3) Search record on name                    ||      ||\n");
    printf("\t||      ||----------------------------------------------||      ||\n");
    printf("\t||      || (4) inorder the records by the average score ||      ||\n");
    printf("\t||------||----------------------------------------------||------||\n");
    printf("\t||      || (5) Insert a student's record                ||      ||\n");
    printf("\t||      ||----------------------------------------------||      ||\n");
    printf("\t||      || (6) Save the file                            ||      ||\n");
    printf("\t\t||----------------------------------------------||\n");
    printf("\t\t|| (7) Change a record                          ||\n");
    printf("\t\t||----------------------------------------------||\n");
    printf("\t\t|| (8) delete a record                          ||\n");
    printf("\t\t||----------------------------------------------||\n");
    printf("\t\t|| (9) Quit                                     ||\n");
    printf("\t\t|------------------------------------------------|\n");
    /*以下语句是输入菜单函数要返回的值*/
    printf("\n\t\t\tChoose the item you want (1-9) )\b\b");
    scanf("%s",a);
    n=atoi(a);
    if(n<1||n>9)
      {
       printf("\t\t\t    Error input. Input again.");
       sleep(1);
      }
    clrscr();           /*清屏*/
   }while(n<1||n>9);
   clrscr();            /*清屏*/
   return(n);
}