📄 login.c
字号:
#include"login.h"
#include"window.h"
#include"public.h"
#include<stdio.h>
/************************************************************************************
函数功能:登录验证 参数:类型 1管理员,普通职员登录 2超级用户登录
返回值:1管理员,普通职员登录,0超级用户登录
*************************************************************************************/
int show_login(int type)
{
init_color_info();
refresh();
char str1[7]="",str2[13]="";
int k=1,res,i;
WIN mainatt={11,40,8,20,5,"超市系统登录窗口",1};
WIN mainwin={25,80,0,0,7,"",0};
TEXT box1={10,34,15,1,""};
TEXT box2={12,34,15,1,""};
TEXT box3={10,28,5,5,"帐号:"};
TEXT box4={12,28,5,5,"密码:"};
TEXT box5={0,0,80,5,"欢迎来到博洋超市管理系统"};
TEXT box6={24,0,80,5,"SOFT:LINUX POS SYSTEM AUTHOR:PENG JIAN ZHONG"};
BUTTON but1={8,3,14,28,"确定",5,4};
BUTTON but2={8,3,14,41,"退出",5,4};
WIN *w1=make_win(&mainatt);
TEXT *t1=make_textbox(&box1);
TEXT *t2=make_textbox(&box2);
TEXT *t3=make_textbox(&box3);
TEXT *t4=make_textbox(&box4);
BUTTON *b1=make_button(&but1);
BUTTON *b2=make_button(&but2);
WIN *w2=NULL;
TEXT *t5=NULL,*t6=NULL;
if(type==1)
{
w2=make_win(&mainwin);
t5=make_textbox(&box5);
t6=make_textbox(&box6);
w2->show_win(w2);
t5->show_text(t5);
t6->show_text(t6);
}
w1->show_win(w1);
t1->show_text(t1);
t2->show_text(t2);
t3->show_text(t3);
t4->show_text(t4);
b1->show_button(b1);
b2->show_button(b2);
do
{
switch(k)
{
case 1:
//curs_set(1);
res=GetString(t1->win,str1,6,1);
if(res==0||res==2||res==13)
{
k=2;
continue;
}
else if(res==14)
{
k=4;
continue;
}
else
{
continue;
}
case 2:
res=GetString(t2->win,str2,12,0);
if(res==1||res==13)
{
k=1;
continue;
}
else if(res==0||res==2)
{
k=3;
continue;
}
else if(res==14)
{
k=4;
continue;
}
else
{
continue;
}
case 3:
do
{
b1->print_white(b1);
noecho();
cbreak();
keypad(b1->win3,true );
i=wgetch(b1->win3);
// printw("%d",i);
// refresh();
switch(i)
{
case 259:
k=2;
b1->delete_white(b1);
break;
case 27:
case 261:
k=4;
b1->delete_white(b1);
break;
case 10:
b1->focus_button(b1);
if(strlen(str1)==0)
{
show_msg("帐号不能为空",0);
k=1;
b1->delete_white(b1);
break;
}
if(check_str(str1,6)!=0)
{
show_msg("帐号必须是六位数字",0);
str1[0]='\0';
werase(t1->win);
wrefresh(t1->win);
k=1;
b1->delete_white(b1);
break;
}
if(strlen(str2)==0)
{
show_msg("密码不能为空",0);
k=2;
b1->delete_white(b1);
break;
}
if(strlen(str2)<6)
{
show_msg("密码至少为六位",0);
str2[0]='\0';
werase(t2->win);
wrefresh(t2->win);
k=2;
b1->delete_white(b1);
break;
}
if(get_account(&login,str1)==0)
{
if(LoginDB(&login,str1,str2)==0)
{
if(type==1)
{
if(login.staff_type==0)
{
show_msg("此用户只能退货时登录",0);
str1[0]='\0';
str2[0]='\0';
werase(t1->win);
werase(t2->win);
wrefresh(t1->win);
wrefresh(t1->win);
wrefresh(t2->win);
k=1;
b1->delete_white(b1);
break;
}
free_win(w1);
free_text(t1);
free_text(t2);
free_text(t3);
free_text(t4);
free_button(b1);
free_button(b2);
if(type==1)
{
free_win(w2);
free_text(t5);
free_text(t6);
}
touchwin(stdscr);
refresh();
if(login.staff_type==1)//管理员(进后台)
{
return 1;
}
if(login.staff_type==2)//普通职员(进前台)
{
return 2;
}
}
if(type==2)//前台退货时登录
{
if(login.staff_type!=0)
{
show_msg("此用户不能用于退货",0);
str1[0]='\0';
str2[0]='\0';
werase(t1->win);
werase(t2->win);
wrefresh(t1->win);
wrefresh(t1->win);
wrefresh(t2->win);
k=1;
b1->delete_white(b1);
break;
}
else
{
free_win(w1);
free_text(t1);
free_text(t2);
free_text(t3);
free_text(t4);
free_button(b1);
free_button(b2);
if(type==1)
{
free_win(w2);
free_text(t5);
free_text(t6);
}
return 0;
}
}
}
else
{
show_msg("密码错误",0);
str2[0]='\0';
werase(t2->win);
wrefresh(t2->win);
k=2;
b1->delete_white(b1);
break;
}
}
else
{
show_msg("帐号错误",0);
str1[0]='\0';
werase(t1->win);
wrefresh(t1->win);
k=1;
b1->delete_white(b1);
break;
}
}
break;
}while(1);
continue;
case 4:
do
{
b2->print_white(b2);
noecho();
cbreak();
keypad(b2->win3,true );
i=wgetch(b2->win3);
switch(i)
{
case 259:
k=2;
b2->delete_white(b2);
break;
case 260:
k=3;
b2->delete_white(b2);
break;
case 10:
b2->focus_button(b2);
res=show_msg("确认退出超市系统登录",1);
if(res==0)
{
endwin();
free_win(w1);
free_text(t1);
free_text(t2);
free_text(t3);
free_text(t4);
free_button(b1);
free_button(b2);
if(type==1)
{
DisconnectDB();
exit(0);
}
if(type==2)
{
return -1;
}
}
else
{
k=1;
b2->delete_white(b2);
break;
}
}
break;
}while(1);
continue;
}
}while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -