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

📄 poslogin.c

📁 本人做的一个基于LINUX平台的小程序
💻 C
字号:
#include "posdb.h"
#include "posui.h"
#include "public.h"
#include "poslogin.h"
#include "proscenium.h"
#include "posbackground.h"

int login()
{	
	WINDOW *mywin;//自己的窗口
	WINDOW *bgb = NULL, *shadow = NULL;//蓝色背景窗口,阴影窗口
	WINDOW *login = NULL, *username = NULL ,*passwd =  NULL;//登陆窗口,用户窗口,密码窗口

	staff_info *check;
	check =(staff_info *)malloc(sizeof(staff_info));
	memset(check,0,sizeof(staff_info));

	mywin = create_no_border_color_window(25,80,0,0,1);
	mvwprintw(mywin,0,0,"超市收银系统");
	mvwprintw(mywin,24,0,"Linux POS VERSON 1.0 AUTHER HUNTER*2");
	wrefresh(mywin);
	delwin(mywin);

	bgb = create_no_border_color_window(23,80,1,0,3);
	wrefresh(bgb);
	delwin(bgb);

	shadow = create_no_border_color_window(10,40,7,21,2);
	wrefresh(shadow);
	delwin(shadow);

	login = create_default_color_window(10,40,6,20,1);
	mvwprintw(login,0,10,"欢迎进入登陆窗口");
	mvwprintw(login,2,9,"帐号:");
	mvwprintw(login,4,9,"密码:");
	wrefresh(login);
	delwin(login);

	username = create_no_border_color_window(1,12,8,35,4);
	wrefresh(username);
	
	passwd = create_no_border_color_window(1,12,10,35,4);
	wrefresh(passwd);

	yes_or_no(12,31,0,10);
	
	char user[20] = {0};
	char password[20] = {0};
	int ch = 0;
	int flag = 1,result = 0;
	int *p = &flag;
	keypad(username,true);
	keypad(passwd,true);

	while(1)
	{
		switch(flag)
		{
			case 1:
				user_input(username,user,p);
				break;
			case 2:
				passwd_input(passwd,password,p);
				break;
			case 3:
				result = yes_or_no(12,31,1,10);
				if (result == -1)
				{
					*p = 2;
				}
				else if (result == 0)
				{
					delwin(username);
					delwin(passwd);
					return 0;
				}
				else if (result == 1)
				{
					if(strlen(user) == 0)
						message("用户名不能为空!",17,25);
					else if(strlen(password) == 0)
						message("密码不能为空!",17,25);
					else if(strlen(user)!=6||str_isdigit(user))
						message("用户名为6位数字!",17,25);
					else if(strlen(password)<6||strlen(password)>12)
						message("密码为6位至12位!",17,25);
					else
					{
						result = user_confirm(user,check);

						if(result == -1)//用户名不存在
						{
							*p = 1;
							message("用户名不存在!",17,25);
						}
						else
						{
							if(strcmp(password,check->passwd) == 0) // 正确
							{		
								delwin(username);
								delwin(passwd);
								if(result == 1)
								{
									while(background_manager())
									{
									}
									return 1;
								}
								else
									proscenium_manager(user);
									return 1;
							}
							else
							{
								//密码错误
								message("密码错误!",17,25);
							}
						}	
					}
					*p = 1;
					memset(user,0,20*sizeof(char));
					memset(password,0,20*sizeof(char));
					mvwaddnstr(username,0,0,"         ",10);
					wrefresh(username);
					mvwaddnstr(passwd,0,0,"          ",10);
					wrefresh(passwd);
				}
				break;
		}
	}
}

void user_input(WINDOW *username,char *user,int *p)
{
	int ch = 0;
	wmove(username,0,strlen(user));
	while(1)
	{
		ch = wgetch(username);
		if (ch == KEY_DOWN || ch == 10)
		{
			*p = 2;
			break;
		}

		else
		{
			get_info(username,user,ch,1,10);
		}
	}
}

void passwd_input(WINDOW *passwd,char *password,int *p)
{
	int ch = 0;
	wmove(passwd,0,strlen(password));
	
	while(1)
	{
		ch = wgetch(passwd);
		if(ch == KEY_UP)
		{
			*p = 1;
			break;
		}
		else if(ch == KEY_DOWN || ch == 10)
		{
			*p = 3;
			break;
		}
		else
		{
			get_info(passwd,password,ch,0,10);
		}
	}
}

⌨️ 快捷键说明

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