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

📄 poslogin.c

📁 一个不错的POS系统
💻 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 + -