📄 stumanager.c
字号:
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 + -