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

📄 xuankexitong.c

📁 C语言学生选课系统程序
💻 C
📖 第 1 页 / 共 3 页
字号:
      goto TEACHER;
    }
  RESET:
   clrscr();
   TeacherScr();
   printf("##############                     更改密码                      ##############\n");
   printf("\n    请输入新密码:");
   for(i=0;i<6;i++)
   {
       pass1[i]=getch();
       printf("*");
   }
   pass1[i]='\0';
   printf("\n    请再次输入新密码:");
   for(i=0;i<6;i++)
   {
       pass2[i]=getch();
       printf("*");
   }
   pass2[i]='\0';
   if(strcmp(pass1,pass2)==0)
     {
       fputs(pass1,fp);
       printf("\n    密码更改成功!\n");
     }
   else
     {
       printf("\n    密码更改错误,两次密码输入不同!\n");
       printf("    请按任意键继续操作……\n");
       getch();
       clrscr();
       TeacherScr();
       goto RESET;
     }
   fclose(fp);
   printf("    请按任意键继续操作……\n");
   getch();
   clrscr();
   goto TEACHER;
/*************************************教师界面结束**********************************/
STUDENTPASS:/*学生登录界面*/
  clrscr();
  StartScr();
  printf("    请输入您的学号:");
  scanf("%s",a);
  strcpy(av[1],a);
  if((fp=fopen(av[1],"r"))==NULL)
  {
    printf("    对不起该用户不存在!");
    printf("    请按任意键继续操作……");
    getch();
    clrscr();
    goto STUDENTPASS;
  }
  else  fread(stu,sizeof(struct Student),1,fp);
  ReadInfo();
  fclose(fp);
STUDENT:
   clrscr();
   StudentScr();
   printf("#######                          学号 :  %-9s                       ######\n",stu->num);
   printf("    请输入操作数:");
   scanf("%d",&key);
   switch(key)
   {
     case 1:goto SELECT;
     case 2:goto SCORE;
     case 3:goto VALUE;
     case 4:goto SELECTED;
     case 5:goto STUALLCOUR;
     case 6:goto BACK;
     case 7:goto END;
     default: printf("    操作数输入错误!\n");
     printf("    请按任意键继续操作……\n");
     getch();
     clrscr();
     goto  STUDENT;
   }
/*选择课程*/ SELECT:
   clrscr();
   StudentScr();
   printf("##############                    选择课程                       ##############\n");
   printf("#######                          学号 :  %-9s                       ######\n",stu->num);
  selnum=ShowCourToSelect();
  if(selnum==0)
  {
    printf("    您没有可选的课程!\n");
    printf("    请按任意键继续操作……\n");
    getch();
    WriteInfo();
    strcpy(av[1],a);
    if((fp=fopen(av[1],"w"))==NULL)
         {
          printf("    文件打开错误!");
          getch();
          clrscr();
          goto STUDENT;
         }
    else  fwrite(stu,sizeof(struct Student),1,fp);
    fclose(fp);
    clrscr();
    goto STUDENT;

  }
  printf("    请输入您要选择课程的编码:");
  scanf("%d",&i);
  if(i<1||i>26)
  {
    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 STUDENT;
          }
        else  fwrite(stu,sizeof(struct Student),1,fp);
        fclose(fp);
        clrscr();
        goto STUDENT;
       }
     else
      {
        clrscr();
        StudentScr();
        goto  SELECT;
      }
  }
  Select(i-1);
  if(all[i-1].flag==2)
    {
     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 STUDENT;
          }
        else  fwrite(stu,sizeof(struct Student),1,fp);
        fclose(fp);
        clrscr();
        goto STUDENT;
       }
     else
      {
        clrscr();
        StudentScr();
        goto  SELECT;
      }
    }
  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 STUDENT;
           }
         else  fwrite(stu,sizeof(struct Student),1,fp);
         fclose(fp);
         clrscr();
         goto STUDENT;
       }
      else
     {
       clrscr();
       StudentScr();
       goto  SELECT;
    }
  }

/*成绩查询*/SCORE:
   clrscr();
   StudentScr();
   printf("##############                      成绩查询                     ##############\n");
   printf("#######                          学号 :  %-9s                       ######\n",stu->num);
  getvalue=0;
  allvalue=0;
  allscore=0;
  printf("  编号         课程名称                  学分          性质        分数\n");
  for(i=0;i<26;i++)
  {
    if(all[i].score>=60)
      getvalue=getvalue+all[i].value;
    if(all[i].score!=0)
    {
      allscore=allscore+all[i].score*all[i].value;
      allvalue=allvalue+all[i].value;
      printf("   %-2d        %-28s  %d           %-10s   %d \n",i+1,all[i].name,all[i].value,all[i].character,all[i].score);
    }
  }
  if(allscore<=0)
    printf("    您没有任何考试成绩!\n");
  else
  {
    printf("    您已经得到%d学分\n",getvalue);
    printf("    平均学分绩为%.2f!\n",((float)allscore/(float)allvalue));
  }
  printf("    请按任意键继续操作……\n");
  getch();
  clrscr();
  goto  STUDENT;
/*学分查询*/VALUE:
  clrscr();
  StudentScr();
  printf("##############                      学分查询                     ##############\n");
  printf("#######                          学号 :  %-9s                       ######\n",stu->num);
  getvalue=0;
  allvalue=0;
  x=1;/*记录必修课是否修完*/
  for(i=0;i<26;i++)
  {
    if(i<19&&all[i].flag==3)
      x=0;/*必修课未修完*/
    if(all[i].flag==3)
      getvalue=getvalue+all[i].value;
    if(all[i].flag==2)
      allvalue=allvalue+all[i].value;
  }
  printf("    您已经得到%d学分。\n",getvalue);
  printf("    您所选择课程的总学分为%d。\n    ",allvalue);
  if(x==0||getvalue<100)
  {
    if(x==0)printf("必修课没修完、");
    if(getvalue<100)printf("不够100个学分,");
    printf("您未完成学业!\n");
  }
  else printf("    您已完成学业!\n");
  printf("    请按任意键继续操作……\n");
  getch();
  clrscr();
  goto  STUDENT;
/*已选课程*/SELECTED:
  clrscr();
  StudentScr();
  allvalue=0;
  printf("##############                      已选课程                     ##############\n");
  printf("#######                          学号 :  %-9s                       ######\n",stu->num);
  printf(" 编号          课程名称                 学期        学分          性质  \n");
  for(i=0;i<26;i++)
  {
    if(all[i].flag==2)
    {
      allvalue=allvalue+all[i].value;
      printf("  %-2d      %-30s  %d           %d           %-10s\n",i+1,all[i].name,all[i].semester,all[i].value,all[i].character);
    }
  }
  if(allvalue<=0)
    printf("    您没有选择任何课程!\n");
  else printf("    您选择课程的总学分为%d。\n",allvalue);
  printf("    请按任意键继续操作……\n");
  getch();
  clrscr();
  goto  STUDENT;
/*查询所有课程*/STUALLCOUR:
   clrscr();
   StudentScr2();
   printf("#######                          学号 :  %-9s                       ######\n",stu->num);
   printf("    请输入操作数:");
   scanf("%d",&key);
   switch(key)
   {
     case 1:goto SHOWCOUR;
     case 2:goto VALUESHOW;
     case 3:goto CHARASHOW;
     case 4:goto STUDENT;
     case 5:goto END;
     default: printf("    输入错误!\n");
     printf("    请按任意键继续操作……\n");
     getch();
     clrscr();
     goto  STUALLCOUR;
   }
  /*显示所有课程*/SHOWCOUR:
  Up:
  clrscr();
  StudentScr2();
  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 STUALLCOUR;
       }
      else
     {
       goto Down;
     }
  Down:
  clrscr();
  StudentScr2();
  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 STUALLCOUR;
       }
      else
     {
       goto Up;
     }
  /*按学分查询*/VALUESHOW:
  clrscr();
  StudentScr2();
  printf("#######                          学号 :  %-9s                       ######\n",stu->num);
  printf("    请输入学分:");
  scanf("%d",&allvalue);
  clrscr();
  StudentScr2();
  printf("#######                          学号 :  %-9s                       ######\n",stu->num);
  printf("    要查询课程的学分为:%d\n",allvalue);
  printf("  编号  程名称           开始学期  学分    性质    总学时    上课周    成绩    \n");
  switch(allvalue)
  {
     case 3:
     case 4:
     case 5:
     case 6:
     case 10:
           for(i=0;i<26;i++)
           {
             if(all[i].value==allvalue)
             {
               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");
             }
           }break;
     default: printf("    没有此学分的课程!\n");
  }
  printf("    请按任意键继续操作……\n");
  getch();
  clrscr();
  goto  STUALLCOUR;
  /*按性质查询*/CHARASHOW:
  clrscr();
  StudentScr2();
  printf("#######                          学号 :  %-9s                       ######\n",stu->num);
  printf("    查询必修课请按'R',查询选修课请按'E':");
  back=getch();
  switch(back)
  {
    case 'r':
    case 'R':printf("\n  编号  程名称           开始学期  学分    性质    总学时    上课周    成绩    \n");
             for(i=0;i<20;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");
             }break;
    case 'e':
    case 'E':printf("\n  编号  程名称           开始学期  学分    性质    总学时    上课周    成绩    \n");
             for(i=20;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");
             }break;
    default:printf("\n    您输入有误!\n");
            printf("    请按任意键继续操作……\n");
            getch();
            goto CHARASHOW;
  }
  printf("    请按任意键继续操作……");
  getch();
  clrscr();
  goto  STUALLCOUR;
BACK:/*返回首页*/
  clrscr();
  goto START;
END:/*退出程序*/
  exit();
}

⌨️ 快捷键说明

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