⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stusco.c

📁 学生成绩管理系统功能有: 1. 信息录入: 录入学生成绩信息(包括学生学号、姓名、各门课程的成绩等)。 2. 信息查询: 输入学号
💻 C
📖 第 1 页 / 共 2 页
字号:
   printf("\n\n   @The students' information are completely input!@ \n");
   p2->next=NULL;
   return(head);
}




struct student * modify(struct student *head)
{      long modify_num,old_num;
       struct student *p;
       char modify_name[20];
       float modify_s1,modify_s2,modify_s3;

       loop2:
       {
              p=head;
              printf("\n\n   Please input the old student's number which you want to modify : ");
              scanf("%lu", &old_num);
       }
       while(p->num!=old_num && p->next!=NULL) p=p->next;
       if (p->num==old_num)
       {      printf("\n\n   Please input the new number : ");
              scanf("%lu",&modify_num);
              p->num=modify_num;
              printf("\n   Please input the new name : ");
              scanf("%s",modify_name);
              strcpy(p->name,modify_name);
              printf("\n   Please input the new Chinese Scroe (0~100): ");
              scanf("%f",&modify_s1);
              if(modify_s1<0||modify_s1>100)   
              {
              printf("Input the wrong mark,please input again:");
              scanf("%f",&modify_s1);
              }
              p->score[0]=modify_s1;
              printf("\n   Please input the new English Score(0~100) : ");
              scanf("%f",&modify_s2);
              if(modify_s2<0||modify_s2>100)   
              {
              printf("Input the wrong mark,please input again:");
              scanf("%f",&modify_s2);
              }
              p->score[1]=modify_s2;
              printf("\n   Please input the new Maths Score (0~100): ");
              scanf("%f",&modify_s3);
              if(modify_s3<0||modify_s3>100)   
              {
              printf("Input the wrong mark,please input again:");
              scanf("%f",&modify_s3);
              }
              p->score[2]=modify_s3;
              p->aver=(modify_s1+modify_s2+modify_s3)/3;
         }
         else
         {    printf("\n\n    The number %lu has not exist.Please input number again.\n\n",old_num);
              goto loop2;
         }
         return(head);
}


void print(struct student *head)
{    struct student *p;
     printf("\n* ========================================================================== *\n");
     printf("   now these %d records are:\n\n",n);
     p=head;
     printf("*******************************************************************************\n");
     printf("   NUMBER   @@   NAME   @@   CHINESE  @@   ENGLISH  @@    MATHS  @@   AVERAGE  \n");
     printf("*******************************************************************************\n");
     if(head!=NULL)
        do
        {     printf(" %7lu%13s%14.2f%14.2f%14.2f%13.2f\n",p->num,p->name,p->score[0],p->score[1],p->score[2],p->aver);
              p=p->next;
        }while(p!=NULL);
     printf("\n\n* ========================================================================== *\n\n");

}



struct student *del(struct student *head,long del_num)
{    struct student*p1,*p2;
     p1=p2=head;
     if(head==NULL){printf("\n   list null!\n");goto end;}

     while((del_num!=p1->num)&&(p1->next!=NULL))
         {p2=p1;p1=p1->next;}
     if(del_num==p1->num)
        {if(p1==head)head=p1->next;
        else p2->next=p1->next;
        printf("\n\n        delete :  %lu\n",del_num);
        n=n-1;
        }
     else printf("\n\n    Sorry! %lu has not been found!Please input again!\n",del_num);
     free(p1);     
     end:
     return(head);
}


struct student * insert(struct student *head,struct student *stud)
{      struct student *p0,*p1,*p2;
       p1=head;
       p0=stud;
       if(head==NULL){head=p0;p0->next=NULL;}
       else
       {    while((p0->num>p1->num)&&(p1->next!=NULL))
            {     p2=p1;p1=p1->next;}
            if(p0->num<=p1->num)
            {     if(p1==head)head=p0;
                  else p2->next=p0;
                  p0->next=p1;}
            else
            {     p1->next=p0;p0->next=NULL;}}
       n=n+1;
       return(head);
}


void save(struct student *head)
{      struct student *p;
       FILE *fp;
       p=head;
       if((fp=fopen("student.dat","wb"))==NULL)
       {      printf("\n       Sorry the file has bot been found!\n");
              return;
       }
       while(p!=NULL)
       {
              if(fwrite(p,LEN,1,fp)!=1)
              {       printf("\n      file write error\n");getch();
                      return;
              }
              p=p->next;
        }
        printf(" \n\n\n           Congratulations!  Save   sussccfully     ...");
       fclose(fp);
}


struct student * load(void)
{      struct student *p1,*p2,*p0;
       FILE *fp;

       n=0;
       p1=p2=p0=(struct student * )malloc(LEN);
       if((fp=fopen("student.dat","rb"))==NULL)
       {       printf("\n\n\n       Try to open file which has failed.\n\n");
               return(NULL);
       }
       printf("\n                      Reading the file that you save before...               \n\n");

     printf("*******************************************************************************\n");
     printf("   NUMBER   @@   NAME   @@   CHINESE  @@   ENGLISH  @@    MATHS  @@   AVERAGE  \n");
     printf("*******************************************************************************\n");
       while(!feof(fp))
       {
              if(fread(p1,LEN,1,fp)!=1)
              {       fclose(fp);
                      goto loop;
              }
              printf(" %7lu%13s%14.2f%14.2f%14.2f%13.2f\n",p1->num,p1->name,p1->score[0],p1->score[1],p1->score[2],p1->aver);
              n=n+1;
              p2->next=p1;
              p2=p1;
              p1=(struct student *) malloc(LEN);

        }
       fclose(fp);
       p2->next=NULL;
       loop:if(n==0){p0=NULL;clrscr();}
            if(n==1)p0->next=NULL;
       return(p0);
}












void sea_name(struct student * head)
{      struct student *p;
       int flag=0;
       long s_num;
       p=head;
       printf("\n     Please input searched number:");
       scanf("%lu",&s_num);
       while(p!=NULL)
       {      if(s_num==p->num)
              {      printf("\n\n    Has found %lu\n\n",s_num);
                     printf("*******************************************************************************\n");
                     printf("   NUMBER   @@   NAME   @@   CHINESE  @@   ENGLISH  @@    MATHS  @@   AVERAGE  \n");
                     printf("*******************************************************************************\n");
                     printf(" %7lu%13s%14.2f%14.2f%14.2f%13.2f\n",p->num,p->name,p->score[0],p->score[1],p->score[2],p->aver);
                     flag=1;
               }
               p=p->next;
        }
        if(flag!=1) printf("\n\n     Has not found this num  %lu . It's not exist.\n",s_num);
}











void sort_num(struct student *head )
{    struct student *p1,*p2;
     long m;
     float s[4];
     char n[20];
     p1=head;

     p2=p1->next;
     while(p1->next!=NULL)
     {
           while(p2!=NULL)
           {     if(p1->num>p2->num)
                 {      m=p1->num;p1->num=p2->num;p2->num=m;
                        strcpy(n,p1->name);strcpy(p1->name,p2->name);strcpy(p2->name,n);
                        s[0]=p1->score[0];p1->score[0]=p2->score[0];p2->score[0]=s[0];
                        s[1]=p1->score[1];p1->score[1]=p2->score[1];p2->score[1]=s[1];
                        s[2]=p1->score[2];p1->score[2]=p2->score[2];p2->score[2]=s[2];
                        s[3]=p1->aver;p1->aver=p2->aver;p2->aver=s[3];
                  }
                  p2=p2->next;
            }
           p1=p1->next;
           p2=p1->next;
      }
}







void sort_aver(struct student * head)
{    struct student *p1,*p2;
     long m;
     float s[4];
     char n[20];
     p1=head;

     p2=p1->next;
     while(p1->next!=NULL)
     {
           while(p2!=NULL)
           {     if(p1->aver>p2->aver)
                 {      m=p1->num;p1->num=p2->num;p2->num=m;
                        strcpy(n,p1->name);strcpy(p1->name,p2->name);strcpy(p2->name,n);
                        s[0]=p1->score[0];p1->score[0]=p2->score[0];p2->score[0]=s[0];
                        s[1]=p1->score[1];p1->score[1]=p2->score[1];p2->score[1]=s[1];
                        s[2]=p1->score[2];p1->score[2]=p2->score[2];p2->score[2]=s[2];
                        s[3]=p1->aver;p1->aver=p2->aver;p2->aver=s[3];
                  }
                  p2=p2->next;
            }
           p1=p1->next;
           p2=p1->next;
      }
}





void sort_name(struct student * head)
{    struct student *p1,*p2;
     long m;
     float s[4];
     char n[20];
     p1=head;
     p2=p1->next;
     while(p1->next!=NULL)
     {
           while(p2!=NULL)
           {     if(strcmp(p1->name,p2->name)>0)
                 {      m=p1->num;p1->num=p2->num;p2->num=m;
                        strcpy(n,p1->name);strcpy(p1->name,p2->name);strcpy(p2->name,n);
                        s[0]=p1->score[0];p1->score[0]=p2->score[0];p2->score[0]=s[0];
                        s[1]=p1->score[1];p1->score[1]=p2->score[1];p2->score[1]=s[1];
                        s[2]=p1->score[2];p1->score[2]=p2->score[2];p2->score[2]=s[2];
                        s[3]=p1->aver;p1->aver=p2->aver;p2->aver=s[3];
                  }
                  p2=p2->next;
            }
           p1=p1->next;
           p2=p1->next;
      }
}
void exit()
{
printf("\n\n\n\n");
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
printf("@                                                                              @\n");
printf("@                      *   Thank you for your using!  *                        @\n");
printf("@                        *                          *                          @\n");
printf("@                          *                      *                            @\n");
printf("@                             *    GOOD BYE    *                               @\n");
printf("@                                 *        *                                   @\n");
printf("@                                      *                        Made by qiuyan @\n");
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
}


void mainmenu(void)
{
  printf("\n****************  Hello, welcome to the Student Score System  **************\n\n\n");
  printf("*********************************  Main Menu  ********************************\n\n");
  printf("@ ========================================================================== @\n\n");
  printf("@              1.Add Records                   2.Require Records             @\n\n");
  printf("@              3.Delete Records                4.Modify Records              @\n\n");
  printf("@              5.Sort Records                  6.Save Record                 @\n\n");
  printf("@              7.Load Records                  8.Exit                        @\n\n");
  printf("@ ========================================================================== @\n");
  printf("\n              Please input which you want to choose(1-8):      ");}


void menu2(void)
{
  printf("\n*****************************  Require Records  ****************************\n\n");
  printf("@ ========================================================================== @\n\n");
  printf("@                       2.1  Require Certain Record By Num                   @\n\n");
  printf("@                       2.2  Require All The Records                         @\n\n");
  printf("@                       2.3  Back To Mainmenu                                @\n\n");
  printf("@ ========================================================================== @\n\n");
  printf("\n\n               Please input which you want to choose(1-3):      ");}

void menu5(void)
{
  printf("\n*************************  Sort Records  ************************\n\n");
  printf("@ ========================================================================== @\n\n");
  printf("@                         5.1  Sort Records By Num                           @\n\n");
  printf("@                         5.2  Sort Records By Name                          @\n\n");
  printf("@                         5.3  Sort Records By Average Score                 @\n\n");
  printf("@                         5.4  Back To Mainmenu                              @\n\n");
  printf("@ ========================================================================== @\n\n");
  printf("\n\n             Please input which you want to choose(1-4):      ");}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -