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

📄 xuankexitong.c

📁 C语言学生选课系统程序
💻 C
📖 第 1 页 / 共 3 页
字号:
      {
        printf("    分数输入错误!\n");
        printf("    请按任意键继续操作……(按 'B' 键回到教师->学生信息页):");
        back=getch();
        if(back=='b'||back=='B')
         {
            goto STUPART;
         }
        else
        {
           gotoxy(x,y);
           printf("\n");
           clreol();
           printf("\n");
           clreol();
           gotoxy(x,y);
           clreol();
           goto GET;
        }

      }
    }
  }
  if(allvalue<=0)
  {
    printf("    该生没有选择任何课程\n");
    printf("    请按任意键继续操作……\n");
    getch();
    clrscr();
    goto STUPART;
  }
  else if(((float)getvalue/(float)allvalue)>0.6&&getvalue>=10)/*学分修够选课的60%,并且本学期得到10个学分可以进入下一学期*/
  {
     stu->semester++;
     printf("    得到足够的学分进入第 %d学期。\n",stu->semester);
     printf("    请按任意键继续操作……\n");
     getch();
  }
  else
  {
    printf("    没有得到足够的学分,仍在第 %d学期。\n",stu->semester);
    printf("    请按任意键继续操作……\n");
     getch();
  }
  WriteInfo();
  strcpy(av[1],a);
  if((fp=fopen(av[1],"w"))==NULL)
  {
    printf("    文件打开错误!\n");
    getch();
    clrscr();
    goto STUPART;
  }
  else  fwrite(stu,sizeof(struct Student),1,fp);
  fclose(fp);
  clrscr();
  goto STUPART;
  /*显示学生信息*/ SHOWSTUINFO:

  clrscr();
  TeacherScr2();
  printf("##############                   显示学生信息                    ##############\n");
  printf("#######                          学号 :  %-9s                       ######\n",stu->num);
  getvalue=0;
  allvalue=0;
  allscore=0;
  key=0;/*记录所有选择课程的学分*/
  cournum=0;
  selnum=0;
  x=1;/*记录必修课是否修完*/
  printf("  编号         课程名称                 学分           性质       分数\n");
  for(i=0;i<26;i++)
  {
    if(i<19&&all[i].flag==3)
      x=0;/*必修课未修完*/
    if(all[i].score>=60)
      {
        getvalue=getvalue+all[i].value;
        cournum++;
      }
    if(all[i].score!=0)
    {
      allscore=allscore+all[i].score*all[i].value;
      allvalue=allvalue+all[i].value;
      key++;
      printf("  %-2d          %-28s%d            %-10s  %d \n",i+1,all[i].name,all[i].value,all[i].character,all[i].score);
    }
    if(all[i].flag==2)
       {
         selnum++;
        }
  }
    printf("    目前为第%d学期。    ",stu->semester);
    printf("    已通过%d门课程。\n",cournum);
    printf("    %d门课程未通过。    ",key-cournum);
    printf("    已选择%d门课程。\n",selnum);
    printf("    得到%d学分。      ",getvalue);
    printf("    平均学分绩为%.2f。\n    ",((float)allscore/(float)allvalue));
    if(x==0||getvalue<100)
  {
    if(x==0)printf("必修课没修完、");
    if(getvalue<100)printf("不够100个学分,");
    printf("您未完成学业!\n");
  }
  else printf("    您已完成学业!\n");
    printf("    请按任意键继续操作……");
    getch();
    clrscr();
    goto  STUPART;
  /*显示所有课程*/ALLCOURSE:
 UP:
  clrscr();
  TeacherScr2();
  printf("##############                   显示所有课程                    ##############\n");
  printf("#######                          学号 :  %-9s                       ######\n",stu->num);
  printf("  编号  程名称           开始学期  学分    性质    总学时    上课周    成绩    \n");
  for(i=0;i<13;i++)
  {
    printf("   %-2d  %-20s %-4d     %-4d  %s      %-4d     %-5s     ",i+1,all[i].name,all[i].semester,all[i].value,all[i].character,all[i].allhour,all[i].studyweek);
    if(all[i].score!=0)
      printf("%d\n",all[i].score);
    else printf("\n");
  }
  printf("    请按任意键进入下一页,按'B'键返回。");
  back=getch();
      if(back=='b'||back=='B')
       {
         goto STUPART;
       }
      else
     {
       goto DOWN;
     }
 DOWN:
  clrscr();
  TeacherScr2();
  printf("##############                   显示所有课程                    ##############\n");
  printf("#######                          学号 :  %-9s                       ######\n",stu->num);
  printf("  编号  程名称           开始学期  学分    性质    总学时    上课周    成绩    \n");
  for(i=13;i<26;i++)
  {
    printf("   %-2d  %-20s %-4d     %-4d  %s      %-4d     %-5s     ",i+1,all[i].name,all[i].semester,all[i].value,all[i].character,all[i].allhour,all[i].studyweek);
    if(all[i].score!=0)
      printf("%d\n",all[i].score);
    else printf("\n");
  }
  printf("    请按任意键进入上一页,按'B'键返回。");
  back=getch();
      if(back=='b'||back=='B')
       {
         goto STUPART;
       }
      else
     {
       goto UP;
     }

        /*************************************************************************************************************************************数组*/
           SPECIALPASS:/*特殊操作*********************************/
   clrscr();
   TeacherScr2();
   printf("    请输入学生学号(按'5'键返回,按'6'键退出):");
   scanf("%s",a);
  if(a[0]=='5')
  {
      clrscr();
   goto  STUPART;
  }
  else if(a[0]=='6') goto END;
  strcpy(av[1],a);
  if((fp=fopen(av[1],"r"))==NULL)
  {
    printf("    对不起,该用户不存在!");
    getch();
    clrscr();
    goto STUPART;
  }
  else
  {
    fread(stu,sizeof(struct Student),1,fp);
    ReadInfo();
    fclose(fp);
  }
  SPECIAL:
   clrscr();
   TeacherScr3();
   printf("#######                          学号 :  %-9s                       ######\n  ",stu->num);
   printf("    请输入操作数:");
   scanf("%d",&key);
   switch(key)
   {
     case 1:goto SPESCORE;/*特定科目输入学生成绩*/
     case 2:goto SPESEMESTER; /*使学生进入特定学期*/
     case 3:goto SPESELECT;/*为学生选择特定课程*/
     case 4:goto SPECOURSE;/*使学生有权利选特定课程*/
     case 5:clrscr(); goto  STUPART;
     case 6:goto END;
     default: printf("    操作数输入错误!\n");
              printf("    请按任意键继续操作……");
              getch();
              clrscr();
              goto  SPECIAL;
   }
   /*特定科目输入学生成绩*/SPESCORE:
   clrscr();
   TeacherScr3();
   printf("##############                    成绩修改                       ##############\n");
   printf("#######                          学号 :  %-9s                       ######\n",stu->num);
   printf("  ");
   for(i=0;i<26;i++)
   {
     printf("*%2d  %-18s *",i+1,all[i].name);
     if((i%3)==2)
       printf("\n  ");
   }
   printf("\n");
   printf("    请输入所要修改课程的编号:");
   scanf("%d",&i);
   if(i>=1&&i<=26)
   {
     printf("    请输入该课程成绩:");
     scanf("%d",&all[i-1].score);
     if(all[i-1].score>=0&&all[i-1].score<=100)
     {
        if(all[i-1].score>=60&&all[i-1].score<=100)
           {
             all[i-1].flag=3;
             printf("    成绩修改成功\n");
           }
        else if(all[i-1].score>=0&&all[i-1].score<60)
           {
             all[i-1].flag=1;
             printf("    成绩修改成功\n");
           }
        WriteInfo();
        strcpy(av[1],a);
        if((fp=fopen(av[1],"w"))==NULL)
        {
          printf("    文件打开错误\n");
          getch();
          clrscr();
          goto SPECIAL;
        }
        else  fwrite(stu,sizeof(struct Student),1,fp);
        fclose(fp);
    }
    else/*分数不在0和100之间*/
      printf("    成绩输入错误!请输入0到100之间的数字。\n");
      printf("    请按任意键继续操作……(按 'B' 键回到教师->特殊操作页)\n");
      back=getch();
      if(back=='b'||back=='B')
       {
         goto SPECIAL;
       }
      else
     {
       goto SPESCORE;
     }
   }
  else/*i不再1和26之间*/
   {
      printf("    课程编号输入错误!\n");
      printf("    请按任意键继续操作……(按 'B' 键回到教师->特殊操作页)\n");
      back=getch();
      if(back=='b'||back=='B')
       {
         goto SPECIAL;
       }
      else
     {
       goto SPESCORE;
     }
   }
   /*使学生进入特定学期*/SPESEMESTER:
   clrscr();
   TeacherScr3();
   printf("##############                      学期修改                     ##############\n");
   printf("#######                          学号 :  %-9s                       ######\n",stu->num);
   printf("    目前学期为%d.\n",stu->semester);
   printf("    将修改为第几学期:");
   scanf("%d",&stu->semester);
   printf("    学期修改成功!\n");
   WriteInfo();
   strcpy(av[1],a);
   if((fp=fopen(av[1],"w"))==NULL)
   {
     printf("    文件打开错误!\n");
     getch();
     clrscr();
     goto SPECIAL;
   }
   else  fwrite(stu,sizeof(struct Student),1,fp);
   fclose(fp);
   printf("    请按任意键继续操作……\n");
   getch();
   goto SPECIAL;
   /*为学生选择特定课程*/SPESELECT:
   clrscr();
   TeacherScr3();
   printf("##############                    代选课程                       ##############\n");
   printf("#######                          学号 :  %-9s                       ######\n",stu->num);
   cournum=-1;
   printf("  ");
   for(i=0;i<26;i++)
   {
     if(all[i].flag<2)
     {
        cournum++;
        printf("*%2d  %-18s *",i+1,all[i].name);
        if((cournum%3)==2)
          printf("\n  ");
     }
   }
   printf("\n");
   printf("    请输入课程编号:");
   scanf("%d",&i);
   if(i>=1&&i<=26)
   {
     if(all[i-1].flag<1)
       all[i-1].flag=1;
     Select(i-1);
   }
   else
     {
        printf("    课程编码输入错误!");
     }
     printf("    请按任意键继续操作……(按'B'键回到教师->特殊操作页)");
     back=getch();
     if(back=='b'||back=='B')
       {
         WriteInfo();
         strcpy(av[1],a);
         if((fp=fopen(av[1],"w"))==NULL)
          {
            printf("    文件打开错误!");
            getch();
            clrscr();
            goto SPECIAL;
          }
        else  fwrite(stu,sizeof(struct Student),1,fp);
        fclose(fp);
        clrscr();
        goto SPECIAL;
       }
     else
      {
        clrscr();
        goto  SPESELECT;
      }
   /*使学生有权利选特定课程*/SPECOURSE:
   clrscr();
   TeacherScr3();
   printf("##############                  设置可选课程                     ##############\n");
   printf("#######                          学号 :  %-9s                       ######\n  ",stu->num);
   cournum=-1;
   for(i=0;i<26;i++)
   {
     if(all[i].flag<1)
     {
        cournum++;
        printf("*%2d  %-18s*",i+1,all[i].name);
        if((cournum%3)==2)
       printf("\n  ");
     }
   }
   printf("\n");
   printf("    请输入课程编号:");
   scanf("%d",&i);
   if(i>=1&&i<=26)
   {
     switch(all[i-1].flag)
     {
       case -1:
       case 0:all[i-1].flag=1;
              if(all[i-1].next!=NULL)
                 all[i-1].next->flag=1;
              printf("    设置可选课程成功!\n");break;
       case 1:printf("    错误!该课程已经为可选。\n");break;
       case 2:printf("    错误!该课程已经选择。\n");break;
       case 3:printf("    错误!该课程已修完。\n");break;
       default:printf("    课程标志错误!\n");
     }
   }
   else
     {
        printf("    课程编号输入错误!\n");
     }
   printf("    请按任意键继续操作……(按 'B' 键回到教师->特殊操作页)\n");
     back=getch();
     if(back=='b'||back=='B')
       {
         WriteInfo();
         strcpy(av[1],a);
         if((fp=fopen(av[1],"w"))==NULL)
          {
            printf("    文件打开错误!");
            getch();
            clrscr();
            goto SPECIAL;
          }
        else
        {
          fwrite(stu,sizeof(struct Student),1,fp);
          fclose(fp);
          goto SPECIAL;
        }
       }
     else/*back不为'B'时*/
      {
        goto  SPECOURSE;
      }
/*修改密码*/PASSWORD:
  if((fp=fopen("password","w+"))==NULL)
    {
      printf("\n    对不起,找不到密码文件!\n");
      getch();
      clrscr();

⌨️ 快捷键说明

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