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

📄 stumanager.c

📁 学生管理系统
💻 C
📖 第 1 页 / 共 5 页
字号:
        q=p1;
        p1=p1->next;
        free(q);
    }
    fprintf(fp,"\n%-5s%5d\n","Class2",n2);
    p2=head2->next;
    free(head2);
    while(p2)
    {
        fprintf(fp,"%-10s%10s%10s\r\n",p2->name,p2->pass,p2->pope);
        q=p2;
        p2=p2->next;
        free(q);
    }
    fprintf(fp,"\n%-5s%5d\n","Class3",n3);
    p3=head3->next;
    free(head3);
    while(p3)
    {
        fprintf(fp,"%-10s%10s%10s\r\n",p3->name,p3->pass,p3->pope);
        q=p3;
        p3=p3->next;
        free(q);
    }
    fclose(fp);
    setfillstyle(1,3);
    bar(230,260,380,320);
    setcolor(7);
    outtextxy(285,280,"Success!");

    return;

}

    
struct log* Login()                                      /*登陆操作函数*/
{
    void *text1,*text2;
    int key;
    struct log*p;
    int size1,size2;
    int i=0,n1=0,n2=0;
    int accept=0;
    char name[11]="";
    char password[11]="";
    char test[2]="";
    p=(struct log*)malloc(sizeof(struct log));
    p->accept=0;
    strcpy(p->name,"");
    size1=imagesize(310,270,400,280);
    size2=imagesize(310,290,400,300);
    text1=malloc(size1);
    text2=malloc(size2);
    DrawLogin(0);

    while(1)
    {
        key=bioskey(0);
        switch(key)
        {
            case Tab:
              if(i>=0&&i<4)
                i++;
              else i=1;
              getimage(310,270,400,280,text1);
              getimage(310,290,400,300,text2);
              DrawLogin(i);
              putimage(310,270,text1,0);
              putimage(310,290,text2,0);
              setfillstyle(1,15);
              if(i==1)
                 line(310+n1*8+2,279,310+(n1+1)*8-2,279);
              else if(i==2)
                 { bar(310+n1*8,270,310+(n1+1)*8,280);
                   line(310+n2*8+2,299,310+(n2+1)*8-2,299);
                 }
              else if(i==3)
                 bar(310+n2*8,290,310+(n2+1)*8,300);
              break;

            case Esc: setfillstyle(1,7);bar(180,190,420,360);return p;
            case Backspace:
              if(i==1&&n1>0)
              {
                  setfillstyle(1,15);
                  bar(310+(n1-1)*8,270,310+n1*8,280);
                  bar(310+n1*8,270,310+(n1+1)*8,280);
                  line(310+(n1-1)*8+2,279,310+n1*8-2,279);
                  n1--;
                  name[n1]='\0';
              }
              else if(i==2&&n2>0)
              {
                  setfillstyle(1,15);
                  bar(310+(n2-1)*8,290,310+n2*8,300) ;
                  bar(310+n2*8,290,310+(n2+1)*8,300);
                  line(310+(n2-1)*8+2,299,310+n2*8-2,299);
                  n2--;
                  password[n2]='\0';
              }
               break;
            case Enter:
               if(i==4)
               {
                   setfillstyle(1,7);
                   bar(185,195,415,355);
                   return p;
               }
               accept=PermitLogin(name,password);
               if(accept!=0)
                 { strcpy(p->name,name);p->accept=accept;}
               getch();
               setfillstyle(1,7);
               bar(185,195,415,355);
               return p;

            default :
              if(i==1&&n1<10)
              {
                  sprintf(test,"%c",key);
                  setfillstyle(1,15);
                  bar(310+n1*8,270,310+(n1+1)*8,280);
                  outtextxy(311+n1*8,271,test);
                  strcat(name,test);
                  n1++;
                  line(310+n1*8+2,279,310+(n1+1)*8-2,279);
              }
              else if(i==2&&n2<10)
              {
                  sprintf(test,"%c",key);
                  setfillstyle(1,15);
                  bar(310+n2*8,290,310+(n2+1)*8,300);
                  outtextxy(311+n2*8,290,"*");
                  strcat(password,test);
                  n2++ ;
                  line(310+n2*8+2,299,310+(n2+1)*8-2,299);
              }
              break;
        }
    }
    return p;
}

int PermitLogin(char name[],char password[])
{
    FILE*fp;
    int n;
    int i;

    char temp1[11]="";
    char temp2[11]="";
    char temp3[11]="";
    int error=0;
    int exist=0;
    int accept=0;

    fp=fopen("stu.txt","r");
    fscanf(fp,"%s%d",temp1,&n);
    for(i=0;i<n;i++)
    {
        fscanf(fp,"%s%s%s",temp1,temp2,temp3);
        if(strcmp(temp1,name)==0)
        {
            exist=1;
            if(strcmp(temp2,password)==0)
            {

                if(strcmp(temp3,"stu")==0)
                  accept=1;
                else if(strcmp(temp3,"mon")==0)
                  accept=2;
                else if(strcmp(temp3,"sup")==0)
                  accept=3;
            }
            else error=2;
        }

     }
     if(accept==0)
     {
         fscanf(fp,"%s%d",temp1,&n);
         for(i=0;i<n;i++)
         {
             fscanf(fp,"%s%s%s",temp1,temp2,temp3);
             if(strcmp(temp1,name)==0)
             {
                exist=1;
               if(strcmp(temp2,password)==0)
               {

                  if(strcmp(temp3,"stu")==0)
                     accept=1;
                  else if(strcmp(temp3,"mon")==0)
                     accept=2;
                  else if(strcmp(temp3,"sup")==0)
                     accept=3;
               }
               else error=2;
            }
         }
     }
     if(accept==0)
     {
        fscanf(fp,"%s%d",temp1,&n);
        for(i=0;i<n;i++)
        {
           fscanf(fp,"%s%s%s",temp1,temp2,temp3);
           if(strcmp(temp1,name)==0)
           {
               exist=1;
               if(strcmp(temp2,password)==0)
               {

                  if(strcmp(temp3,"stu")==0)
                    accept=1;
                  else if(strcmp(temp3,"mon")==0)
                    accept=2;
                  else if(strcmp(temp3,"sup")==0)
                    accept=3;
               }
               else error=2;
            }
        }
      }

    fclose(fp);
    if(exist==0)  error=1;
    switch(error)
    {
        case 0:setcolor(3);outtextxy(220,245,"Welcome!");break;
        case 1:setcolor(3);outtextxy(220,245,"Not existed!");break;
        case 2:setcolor(3);outtextxy(220,245,"Wrong Password!");break;
    }
    return accept;
}

int Logout(int accept)                                       /*注销登陆函数*/
{
    int x1=190,x2=410,y1=200,y2=350;
    int w=5;
    int key;
    int i=0;
    int exit=1;
    char title[]="Logout";
    char yes[]="Yes";
    char no[]="No";
    char s1[]="You have been already";
    char s2[]="login!  Logout?";

    setfillstyle(1,12);
    bar(x1,y1,x2,y2);
    setfillstyle(1,3);
    bar(x1-w,y1-w,x2+w,y1);
    bar(x1-w,y2,x2+w,y2+w);
    bar(x1-w,y1,x1,y2);
    bar(x2,y1,x2+w,y2);
    setcolor(1);
    outtextxy(270,230,title);
    outtextxy(220,270,s1);
    outtextxy(230,290,s2);
    setfillstyle(1,10);
    bar(220,315,270,330);
    setcolor(YELLOW);
    outtextxy(230,320,yes);
    outtextxy(330,320,no);
    while(exit)
    {
        key=bioskey(0);
        switch(key)
        {
            case Tab:
              if(i==0)
                {
                    setfillstyle(1,12);
                    bar(220,315,270,330);
                    setcolor(YELLOW);
                    outtextxy(230,320,yes);
                    setfillstyle(1,10);
                    bar(320,315,370,330);
                    setcolor(YELLOW);
                    outtextxy(330,320,no);
                    i=1;
                }
              else if(i==1)
                {
                    setfillstyle(1,12);
                    bar(320,315,370,330);
                    setcolor(YELLOW);
                    outtextxy(330,320,no);
                    setfillstyle(1,10);
                    bar(220,315,270,330);
                    setcolor(YELLOW);
                    outtextxy(230,320,yes);
                    i=0;
                }
             break;
           case Enter:
           if(i==0)
               accept=0;
           setfillstyle(1,7);bar(x1-w,y1-w,x2+w,y2+w);
           return accept;

           case Esc:  setfillstyle(1,7);bar(x1-w,y1-w,x2+w,y2+w);
                     return accept;
           default:break;
         }
     }
     setfillstyle(1,7);
     bar(x1-w,y1-w,x2+w,y2+w);
     return i;
}

void DrawRegister(int i)
{
    char Title[]="Register";
    char ok[]="OK";
    char cancel[]="Cancel";
    char Class[]="Class1";
    char ch[][10]={"User:","Class:","Password:","Again:"};
    int x1=190,x2=410,y1=150,y2=350;
    int w=5;

    setfillstyle(1,3);
    bar(x1-w,y1-w,x2+w,y2+w);
    setfillstyle(1,12);
    bar(x1,y1,x2,y2);
    setcolor(1);
    outtextxy(270,180,Title);

    setcolor(0);
    outtextxy(220,220,ch[0]);
    outtextxy(220,240,ch[1]);
    outtextxy(220,260,ch[2]);
    outtextxy(220,280,ch[3]);
    setcolor(GREEN);
    outtextxy(220,320,ok);
    outtextxy(350,320,cancel);

    setfillstyle(1,15);
    bar(310,220,400,230);
    bar(310,240,400,250);
    bar(310,260,400,270);
    bar(310,280,400,290);
    setcolor(GREEN);
    outtextxy(312,242,Class);

    switch(i)
    {
        case 5:
          setfillstyle(1,10);
          bar(218,318,270,330);
          setcolor(1);
          outtextxy(220,320,ok);
          break;
        case 6:
          setfillstyle(1,10);
          bar(348,318,400,330);
          setcolor(1);
          outtextxy(350,320,cancel);
          break;
        default:break;
    }

    return;
}
                                                           /*注册菜单操作*/
void Register()
{


    char Class[][7]={"Class1","Class2","Class3"};
    char name[11]="";

    char test[2]="";
    char password1[11]="";
    char password2[11]="";
    int key;
    int i=0,j=0;
    int n1=0,n2=6,n3=0,n4=0;
    void *text1,*text2,*text3,*text4;

    int size1,size2,size3,size4;
    DrawRegister(0);
    size1=imagesize(310,220,400,230);
    size2=imagesize(310,240,400,250);
    size3=imagesize(310,260,400,270);
    size4=imagesize(310,280,400,290);

    text1=malloc(size1);
    text2=malloc(size2);
    text3=malloc(size3);
    text4=malloc(size4);

    while(1)
    {
        key=bioskey(0);
        switch(key)
        {
            case Tab:
            {
                if(i>=0&&i<6)
                  i++;
                else i=1;
                getimage(310,220,400,230,text1);
                getimage(310,240,400,250,text2);
                getimage(310,260,400,270,text3);
                getimage(310,280,400,290,text4);
                DrawRegister(i);
                putimage(310,220,text1,0);
                putimage(310,240,text2,0);
                putimage(310,260,text3,0);
                putimage(310,280,text4,0);
                setfillstyle(1,15);

                if(i==1)
                  line(310+n1*8+2,229,310+(n1+1)*8-2,229);
                else if(i==2)
                {
                   bar(310+n1*8,220,310+(n1+1)*8,230);
                   line(310+n2*8+2,249,310+(n2+1)*8-2,249);
                }
                else if(i==3)
                {
                    bar(310+n2*8,240,310+(n2+1)*8,250);
                    line(310+n3*8+2,269,310+(n3+1)*8-2,269);
                }
                else if(i==4)
                {
                    bar(310+n3*8,260,310+(n3+1)*8,270);
                    line(310+n4*8+2,289,310+(n4+1)*8-2,289);
                }
                else if(i==5)
                    bar(310+n4*8,280,310+(n4+1)*8,290);
                break;
            }
            case Backspace:
                if(i==1&&n1>0)
                {
                    setfillstyle(1,15);
                    bar(310+(n1-1)*8,220,310+n1*8,230);
                    bar(310+n1*8,220,310+(n1+1)*8,230);
                    line(310+(n1-1)*8+2,229,310+n1*8-2,229);
                    n1--;
                    name[n1]='\0';
                }


                else if(i==3&&n3>0)
                {
                    setfillstyle(1,15);
                    bar(310+(n3-1)*8,260,310+n3*8,270);
                    bar(310+n3*8,260,310+(n3+1)*8,270);
                    line(310+(n3-1)*8+2,269,310+n3*8-2,269);
                    n3--;
                    password1[n3]='\0';
                }
                else if(i==4&&n4>0)
                {
                    setfillstyle(1,15);
                    bar(310+(n4-1)*8,280,310+n4*8,290);
                    bar(310+n4*8,280,310+(n4+1)*8,290);
                    line(310+(n4-1)*8+2,289,310+n4*8-2,289);
                    n4--;
                    password2[n4]='\0';
                }
                break;
            case Right:
              if(i==2)
              {
                  if(j>=0&&j<2)
                     j++;
                  else j=0;
                  setfillstyle(1,15);
                  bar(310,240,400,250);
                  setcolor(GREEN);
                  outtextxy(312,242,Class[j]);
              }
              break;
            case Enter:
               if(i==6)
               { setfillstyle(1,7);bar(185,145,415,355);return;}

                iden=(struct stu*)malloc(sizeof(struct stu));
                strcpy(iden->user,name);
                strcpy(iden->pass1,password1);
                strcpy(iden->pass2,password2);
                strcpy(iden->Class,Class[j]);

                Permit(iden);
                getch();
                setfillstyle(1,7);

⌨️ 快捷键说明

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