📄 poslogin.c
字号:
#include<math.h>
#include<string.h>
#include "posLogin.h"
#include "posPublic.h"
#include "posOracle.h"
#include "pub.h"
int loginWin(int key)
{
char user[10];
char password[13];
memset(user,0,sizeof(user));
memset(password,0,sizeof(password));
int ch,flag=0,k=-100;
WINDOW *winmain, * wintop,* winmid,* winbottom,* winlogin,* winuser, * winpassword, * winsure, * wincancle;
int ChangWin(int ,WINDOW * ,WINDOW *,WINDOW * ,WINDOW *);
//int MessageBox(char * msg,int flag);
//initscr();
// makelog("debug.log","login!!!!!!!!!!");
noecho();
keypad(stdscr,TRUE);
if(1==key)
{
scr_dump("scr_save.scr5");
}
if(has_colors())
{
start_color();
if(key==0)
{
init_pair(1,COLOR_BLACK,COLOR_CYAN);
init_pair(2,COLOR_BLACK,COLOR_RED);
init_pair(3,COLOR_BLACK,COLOR_BLACK);
init_pair(4,COLOR_BLACK,COLOR_WHITE);
init_pair(5,COLOR_BLACK,COLOR_MAGENTA);
}
}
if(0==key)
{
winmain=newwin(24,80,0,0);
box(winmain,0,0);
wbkgd(winmain,COLOR_PAIR(1));
refresh();
wrefresh(winmain);
wintop=newwin(1,COLS,0,0);
wbkgd(wintop,COLOR_PAIR(4));
mvwprintw(wintop,0,3,"欢迎进入XXX超市");
wrefresh(wintop);
winbottom=newwin(1,COLS,24,0);
wbkgd(winbottom,COLOR_PAIR(4));
mvwprintw(winbottom,0,3,"Version 1.0 author wrh");
wrefresh(winbottom);
winmid=newwin(10,32,8,27);
box(winmid,0,0);
wbkgd(winmid,COLOR_PAIR(3));
wrefresh(winmid);
}
winlogin=newwin(10,32,7,25);
box(winlogin,0,0);
wbkgd(winlogin,COLOR_PAIR(2));
wrefresh(winlogin);
mvwprintw(winlogin,0,8,"欢迎进入登入界面");
mvwprintw(winlogin,2,4,"用户名:");
mvwprintw(winlogin,4,4," 密码:");
wrefresh(winlogin);
winuser=newwin(1,15,9,39);
wbkgd(winuser,COLOR_PAIR(1));
wrefresh(winuser);
winpassword=newwin(1,15,11,39);
wbkgd(winpassword,COLOR_PAIR(1));
wrefresh(winpassword);
winsure=newwin(3,8,13,30);
box(winsure,0,0);
wbkgd(winsure,COLOR_PAIR(4));
mvwprintw(winsure,1,1," 确定 ");
wrefresh(winsure);
wincancle=newwin(3,8,13,45);
box(wincancle,0,0);
wbkgd(wincancle,COLOR_PAIR(4));
mvwprintw(wincancle,1,1," 退出 ");
wrefresh(wincancle);
ChangWin(flag,winuser,winpassword,winsure,wincancle);
while(1)
{
ch=getch();
if(ch==KEY_DOWN||ch=='\t')
{
flag=++flag%4;
if(flag==0)
{
mvwprintw(wincancle,1,1," 退出 ");
wrefresh(wincancle);
}
if(flag==3)
{
mvwprintw(winsure,1,1," 确定 ");
wrefresh(winsure);
}
ChangWin(flag,winuser,winpassword,winsure,wincancle);
}
if(ch==KEY_UP)
{
if(flag==0)
{
flag=3;
}
else
flag=--flag%4;
if(flag==2)
{
mvwprintw(wincancle,1,1," 退出 ");
wrefresh(wincancle);
}
if(flag==1)
{
mvwprintw(winsure,1,1," 确定 ");
wrefresh(winsure);
}
ChangWin(flag,winuser,winpassword,winsure,wincancle);
}
if(ch==KEY_LEFT)
{
if(flag==3)
{
flag=abs(--flag)%4;
mvwprintw(wincancle,1,1," 退出 ");
wrefresh(wincancle);
ChangWin(flag,winuser,winpassword,winsure,wincancle);
}
}
if(ch==KEY_RIGHT)
{
if(flag==2)
{
flag=++flag%4;
mvwprintw(winsure,1,1," 确定 ");
wrefresh(winsure);
ChangWin(flag,winuser,winpassword,winsure,wincancle);
}
}
if(ch==10||ch==KEY_ENTER)
{
if(flag==0||flag==1)
{
flag=++flag%4;
ChangWin(flag,winuser,winpassword,winsure,wincancle);
}
else if(flag==2)
{
Trim(user);
Trim(password);
if(0==key)
{
if(login(user,password,0)==0)
break;
if(login(user,password,0)==1)
MessageBox("密码错误 !",0);
if(login(user,password,0)==-1)
MessageBox("用户不存在 !",0);
}
if(1==key)
{
if(login(user,password,1)==0)
break;
if(login(user,password,1)==1)
MessageBox("密码错误 !",0);
if(login(user,password,1)==-1)
MessageBox("用户不存在 !",0);
if(login(user,password,1)==2)
MessageBox("权限不够!",0);
}
}
else if(flag==3)
{
if(0==key)
{
endwin();
return 1;
}
if(1==key)
{
k=2;
break;
}
}
}
if(KEY_BACKSPACE==ch)
{
if(flag==0)
{
int len=strlen(user);
if(len>0)
{
user[len-1]='\0';
wprintw(winuser,"\b \b");
ChangWin(flag,winuser,winpassword,winsure,wincancle);
}
}
if(flag==1)
{
int len=strlen(password);
if(len>0)
{
password[len-1]='\0';
wprintw(winpassword,"\b \b");
ChangWin(flag,winuser,winpassword,winsure,wincancle);
}
}
}
if(isalnum(ch))
{
if(flag==0)
{
int len=strlen(user);
if(len<6)
{
user[len]=ch;
wprintw(winuser,"%c",ch);
ChangWin(flag,winuser,winpassword,winsure,wincancle);
}
}
if(flag==1)
{
int len=strlen(password);
if(len<13)
{
password[len]=ch;
wprintw(winpassword,"*");
ChangWin(flag,winuser,winpassword,winsure,wincancle);
}
}
}
}
// getch();
if(0==key)
{
delwin(winmain);
delwin(wintop);
delwin(winbottom);
delwin(winmid);
}
delwin(winlogin);
delwin(winsure);
delwin(wincancle);
delwin(winuser);
delwin(winpassword);
if(1==key)
{
scr_restore("scr_save.scr5");
refresh();
}
if(2==k)
return 2;
//endwin();
return 0;
}
int ChangWin(int flag,WINDOW * winuser,WINDOW * winpassword,WINDOW * winsure,WINDOW * wincancle)
{
switch(flag)
{
case 0:
touchwin(winuser);
wrefresh(winuser);
break;
case 1:
touchwin(winpassword);
wrefresh(winpassword);
break;
case 2:
wattron(winsure,A_REVERSE);
mvwprintw(winsure,1,1," 确定 ");
wattroff(winsure,A_REVERSE);
wrefresh(winsure);
break;
case 3:
touchwin(wincancle);
wattron(wincancle,A_REVERSE);
mvwprintw(wincancle,1,1," 退出 ");
wattroff(wincancle,A_REVERSE);
wrefresh(wincancle);
break;
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -