📄 userlogin.c
字号:
#include "extern.h"/*==============用户登录函数=================*/void UserLogin(){ int ch,temp,len,business_no; char PASSWORD[20],buf[20]; bkgd(COLOR_PAIR(1)); refresh(); //打印界面 WINDOW *msg_win =newwin(1,80,0,0); wbkgd(msg_win,COLOR_PAIR(5)); wattron(msg_win,COLOR_PAIR(5)); mvwprintw(msg_win,0,0,"超市收银系统"); touchwin(stdscr); refresh(); wrefresh(msg_win); wattroff(msg_win,COLOR_PAIR(5)); WINDOW *new_win =newwin(10,40,7,20); wbkgd(new_win,COLOR_PAIR(2)); wattron(new_win,COLOR_PAIR(2)); box(new_win,0,0); mvwprintw(new_win,0,12,"欢迎进入登陆窗口"); mvwprintw(new_win,2,4," 帐号:"); mvwprintw(new_win,4,4," 密码:"); wattroff(new_win,COLOR_PAIR(2)); WINDOW *ok_win = subwin(new_win,3,10,13,26); wbkgd(ok_win,COLOR_PAIR(3)); box(ok_win,0,0); mvwprintw(ok_win,1,1," 确定 "); touchwin(new_win); wrefresh(new_win); wrefresh(ok_win); WINDOW *cancel_win = subwin(new_win,3,10,13,44); wbkgd(cancel_win,COLOR_PAIR(3)); box(cancel_win,0,0); mvwprintw(cancel_win,1,1," 取消 "); touchwin(new_win); wrefresh(new_win); wrefresh(cancel_win); WINDOW *input_id =subwin(new_win,1,20,9,34); wbkgd(input_id,COLOR_PAIR(4)); touchwin(new_win); wrefresh(new_win); wrefresh(input_id); WINDOW *passwd_win = subwin(new_win,1,20,11,34); wbkgd(passwd_win,COLOR_PAIR(4)); touchwin(new_win); wrefresh(new_win); wrefresh(passwd_win); //输入帐号和密码 do { wmove(input_id,0,0); wclrtoeol(input_id); wmove(passwd_win,0,0); wclrtoeol(passwd_win); wrefresh(input_id); wrefresh(passwd_win); keypad(input_id,TRUE); keypad(passwd_win,TRUE); memset(ACCOUNTID,0,sizeof(ACCOUNTID)); memset(PASSWORD,0,sizeof(PASSWORD)); //输入帐号 echo(); mvwgetnstr(input_id,0,0,ACCOUNTID,20); len = strlen(ACCOUNTID); noecho(); temp=0; do { //输入密码 ch = mvwgetch(passwd_win,0,0+temp); if((isprint(ch)) && (!isspace(ch)))//the word can print { mvwaddch(passwd_win,0,0+temp,'*'); wrefresh(passwd_win); PASSWORD[temp] = ch; temp++; if(temp >=20) { break; } } if(ch == '\n') { break; } else if(ch == KEY_BACKSPACE) { if(temp > 0) { --temp; wmove(passwd_win,0,0+temp); wclrtoeol(passwd_win); } else { wmove(passwd_win,0,0); wclrtoeol(passwd_win); } } }while(1); keypad(input_id,FALSE); keypad(passwd_win,FALSE); PASSWORD[temp] = '\0'; do { wattron(ok_win,A_REVERSE); mvwprintw(ok_win,1,1," 确定 "); ch = mvwgetch(ok_win,1,8); wattroff(ok_win,A_REVERSE); wrefresh(ok_win); //当用户输入回车 if(ch == '\n') { //输入的用户名和密码是否正确 if(CheckUserLogin(ACCOUNTID,PASSWORD,EMP_NAME,&EMP_GRADE)==1) { //如果ID的类型为1的话,进入后台管理 if(1 == EMP_GRADE) { clear(); delwin(msg_win); delwin(new_win); refresh(); ShowMessage(" 管理员登录,请稍后......"); BackManager(); } else { clear(); delwin(msg_win); delwin(new_win); refresh(); ShowMessage(" 正在登录,请稍后......"); //查询数据库,获取交易号 SearchMaxBusinessNo(BUSINESS_NO); business_no = atoi(BUSINESS_NO); business_no++; sprintf(BUSINESS_NO,"%04d",business_no); //如果交易号为空 if(BUSINESS_NO == NULL) { strncpy(BUSINESS_NO,"0001",strlen("0001")); } Cashier(); } } //用户不存在 //判断帐号长度是否为6位 if(strlen(ACCOUNTID) != 6) { mvwprintw(ok_win,1,1," 确定 "); touchwin(new_win); wrefresh(ok_win); mvwprintw(cancel_win,1,1," 取消 "); touchwin(new_win); wrefresh(cancel_win); ShowMessage(" 输入错误,员工号必须为6位数字"); touchwin(msg_win); wrefresh(msg_win); touchwin(new_win); wrefresh(new_win); refresh(); break; } // 判断用户输入的密码是否为6到12位 if(strlen(PASSWORD)<6 || strlen(PASSWORD) > 12) { mvwprintw(ok_win,1,1," 确定 "); touchwin(new_win); wrefresh(ok_win); mvwprintw(cancel_win,1,1," 取消 "); touchwin(new_win); wrefresh(cancel_win); ShowMessage(" 输入错误,密码必须为6到12位"); touchwin(msg_win); wrefresh(msg_win); touchwin(new_win); wrefresh(new_win); refresh(); break; } else { mvwprintw(ok_win,1,1," 确定 "); touchwin(new_win); wrefresh(ok_win); mvwprintw(cancel_win,1,1," 取消 "); touchwin(new_win); wrefresh(cancel_win); ShowMessage(" 用户不存在,请重新输入"); touchwin(msg_win); wrefresh(msg_win); touchwin(new_win); wrefresh(new_win); refresh(); break; } } else { mvwprintw(ok_win,1,1," 确定 "); wrefresh(ok_win); wattron(cancel_win,A_REVERSE); mvwprintw(cancel_win,1,1," 取消 "); ch = mvwgetch(cancel_win,1,8); wattroff(cancel_win,A_REVERSE); wrefresh(cancel_win); if(ch == '\n') { mvwprintw(ok_win,1,1," 确定 "); touchwin(new_win); wrefresh(ok_win); mvwprintw(cancel_win,1,1," 取消 "); touchwin(new_win); wrefresh(cancel_win); break; } else { mvwprintw(cancel_win,1,1," 取消 "); wrefresh(cancel_win); continue; } } }while(1); }while(1); endwin(); exit(0);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -