?? loginwindow.c
字號:
wrefresh(account);
while(1)
{
ch=wgetch(account);
switch (ch)
{
case KEY_F(1):
return;
case KEY_BACKSPACE: //按退格鍵盤
if (cnt>0)
{
getyx(account,now_col,now_row);
mvwaddch(account,now_col,--now_row,' ');
user[--cnt]='\0';
wmove(account,0,now_row);
wrefresh(account);
}
break;
case KEY_DOWN:
case '\n':
goto PASSWD;
break;
default:
if (ch>='0'&&ch<='9'&&cnt<6)
{
now_row++;
waddch(account,ch);
user[cnt]=ch;
user[++cnt]='\0';
wrefresh(account);
break;
}
}
}
PASSWD:
wmove(passwd,0,0);
l=strlen(pwd);
for ( i=0; i<=l-1; i++)
{
waddch(passwd,'*');
}
wrefresh(passwd);
while (1)
{
ch=wgetch(passwd);
switch (ch)
{
case KEY_F(1):
return;
case KEY_BACKSPACE: //按退格鍵盤
if (cnt1>0)
{
getyx(passwd,now_col1,now_row1);
mvwaddch(passwd,now_col1,--now_row1,' ');
wmove(passwd,now_col,now_row1);
pwd[--cnt1]='\0';
wrefresh(passwd);
}
break;
case KEY_UP:
goto ACCOUNT;
case KEY_DOWN:
case '\n':
goto ENSURE;
default:
if (cnt1>=12)
{
break;
}
if ( (ch>='0'&&ch<='9') || (ch>='a'&&ch<='z') || (ch>='A'&&ch<='Z') )
{
now_row1++;
waddch(passwd,'*');
pwd[cnt1]=ch;
pwd[++cnt1]='\0';
wrefresh(passwd);
break;
}
}
}
ENSURE:
wattron(dialog[1],A_REVERSE);
mvwprintw(dialog[1],1,2, "確定");
wrefresh(dialog[1]);
while (1)
{
ch=wgetch(dialog[1]);
switch (ch)
{
case KEY_F(1):
return;
case KEY_UP:
wattroff(dialog[1],A_REVERSE);
mvwprintw(dialog[1],1,2, "確定");
wrefresh(dialog[1]);
goto PASSWD;
case KEY_RIGHT:
wattroff(dialog[1],A_REVERSE);
mvwprintw(dialog[1],1,2, "確定");
wrefresh(dialog[1]);
goto CANCEL;
case '\n':
//驗證用戶名密碼格式是否正確
if (cnt!=6)
{
Message("請輸入6位數字賬號",8,38);
scr_restore("superadmin.scr");
user[0]='\0';//賬戶帳號
pwd[0]='\0';//賬戶密碼
now_col=0;
now_row=0;
now_col1=0;
now_row1=0;
cnt=0;
cnt1=0;
goto ACCOUNT;
}
if (cnt1<6||cnt>12)
{
Message("密碼長度錯誤,請輸入6-12位密碼",8,38);
scr_restore("superadmin.scr");
user[0]='\0';//賬戶帳號
pwd[0]='\0';//賬戶密碼
now_col=0;
now_row=0;
now_col1=0;
now_row1=0;
cnt=0;
cnt1=0;
goto ACCOUNT;
}
//檢查用戶名是否存在
{
STAFF *staff = (STAFF *)malloc(sizeof(STAFF));
strcpy(staff->staff_id,user);
res = check_staff(staff);
if (res==-1)
{
Message("數據庫出錯",10,40);
endwin();
exit(1);
}
if (res==0)
{
Message("你輸入的帳戶ID不存在",8,38);
scr_restore("superadmin.scr");
user[0]='\0';//賬戶帳號
pwd[0]='\0';//賬戶密碼
now_col=0;
now_row=0;
now_col1=0;
now_row1=0;
cnt=0;
cnt1=0;
goto ACCOUNT;
}
}
//驗證用戶名密碼是否正確;
res=check_login(user,pwd);
if (res==-1)
{
Message("數據庫出錯",10,40);
endwin();
exit(1);
}
if (res==0)
{
Message("密碼錯誤",8,38);
scr_restore("superadmin.scr");
user[0]='\0';//賬戶帳號
pwd[0]='\0';//賬戶密碼
now_col=0;
now_row=0;
now_col1=0;
now_row1=0;
cnt=0;
cnt1=0;
goto ACCOUNT;
}
int isAdmin=check_admin_other(user,res);
//賬戶進入退貨功能
if (isAdmin==0)
{
saleid_win(user);
return;
}
//其他權限賬戶
if (isAdmin==2)
{
Message("你的賬戶權限不夠",10,40);
scr_restore("superadmin.scr");
user[0]='\0';//帳號
pwd[0]='\0';//密碼
now_col=0;
now_row=0;
now_col1=0;
now_row1=0;
cnt=0;
cnt1=0;
goto ACCOUNT;
}
if (isAdmin==1)
{
Message("您的賬戶權限不夠",10,40);
scr_restore("superadmin.scr");
user[0]='\0';//帳號
pwd[0]='\0';//密碼
now_col=0;
now_row=0;
now_col1=0;
now_row1=0;
cnt=0;
cnt1=0;
goto ACCOUNT;
}
}
}
CANCEL:
wattron(dialog[2],A_REVERSE);
mvwprintw(dialog[2],1,2, "取消");
wrefresh(dialog[2]);
while (1)
{
ch=wgetch(dialog[2]);
switch (ch)
{
case KEY_F(1):
return;
case KEY_LEFT:
wattroff(dialog[2],A_REVERSE);
mvwprintw(dialog[2],1,2, "取消");
wrefresh(dialog[2]);
goto ENSURE;
case '\n':
return;
}
}
}
/*========================================================
function:18位銷售ID輸入窗口與銷售單號驗證
=========================================================*/
void saleid_win(char *usr)
{
int ch;
int now_col,now_row;
char saleid[19]={'\0'};
int cnt=0;
WINDOW *sale;
WINDOW *dialog[3]={NULL};
print_dialog_box(10,40,"退貨銷售單號",1,dialog);
mvwprintw(dialog[0],2,2,"銷售單號:");
wrefresh(dialog[0]);
keypad(dialog[1],TRUE);
keypad(dialog[2],TRUE);
sale=create_win(1,20,9,34);
keypad(sale,TRUE);
wbkgd(sale,COLOR_PAIR(4));
wrefresh(sale);
scr_dump("salewindow.scr");
SALE:
wmove(sale,0,0);
wprintw(sale,saleid);
wrefresh(sale);
while(1)
{
ch=wgetch(sale);
switch (ch)
{
case KEY_BACKSPACE: //按退格鍵盤
if (cnt>0)
{
getyx(sale,now_col,now_row);
mvwaddch(sale,now_col,--now_row,' ');
saleid[--cnt]='\0';
wmove(sale,0,now_row);
wrefresh(sale);
break;
}
case KEY_F(1):
return;
case KEY_DOWN:
case '\n':
goto ENSURE;
default:
if (ch>='0'&&ch<='9' &&cnt<18)
{
now_row++;
waddch(sale,ch);
saleid[cnt]=ch;
saleid[++cnt]='\0';
wrefresh(sale);
break;
}
}
}
ENSURE:
wattron(dialog[1],A_REVERSE);
mvwprintw(dialog[1],1,2, "確定");
wrefresh(dialog[1]);
while (1)
{
ch=wgetch(dialog[1]);
switch (ch)
{
case KEY_F(1):
return;
case KEY_UP:
wattroff(dialog[1],A_REVERSE);
mvwprintw(dialog[1],1,2, "確定");
wrefresh(dialog[1]);
goto SALE;
case KEY_RIGHT:
wattroff(dialog[1],A_REVERSE);
mvwprintw(dialog[1],1,2, "確定");
wrefresh(dialog[1]);
goto CANCEL;
case '\n':
//驗證銷售單號長度
if (cnt!=18)
{
Message("請輸入18位銷售單號",10,40);
scr_restore("salewindow.scr");
now_col=0;
now_row=0;
saleid[0]='\0';
cnt=0;
goto SALE;
}
//驗證銷售單是否存在
{
SALE_ID *sale_id = (SALE_ID *)malloc(sizeof(SALE_ID));
strcpy(sale_id->sale_id,saleid);
int res = exist_saleid(sale_id);
if (res==-1)
{
Message("數據庫出錯",10,40);
endwin();
exit(1);
}
if (res==0)
{
Message("您輸入的銷售單號不存在",10,40);
scr_restore("salewindow.scr");
now_col=0;
now_row=0;
saleid[0]='\0';
cnt=0;
goto SALE;
}
//判斷此銷售單號是否已經全部退貨;
PRODUCT *pro_info = (PRODUCT *)malloc(sizeof(PRODUCT));
pro_info->count = 0;
res = get_saleid_product_count(sale_id,pro_info);
if (res==-1)
{
Message("數據庫出錯",10,40);
endwin();
exit(1);
}
if (res==0)
{
Message("您輸入的銷售單號已經全部退貨",10,40);
scr_restore("salewindow.scr");
now_col=0;
now_row=0;
saleid[0]='\0';
cnt=0;
goto SALE;
}
return_purchase_win(sale_id,usr);
return;
}
}
}
CANCEL:
wattron(dialog[2],A_REVERSE);
mvwprintw(dialog[2],1,2, "取消");
wrefresh(dialog[2]);
while (1)
{
ch=wgetch(dialog[2]);
switch (ch)
{
case KEY_F(1):
return;
case KEY_LEFT:
wattroff(dialog[2],A_REVERSE);
mvwprintw(dialog[2],1,2, "取消");
wrefresh(dialog[2]);
goto ENSURE;
case '\n':
return;
}
}
}
/*==================================================================
function:退貨主窗口與功能實現
====================================================================*/
void return_purchase_win(SALE_ID *sale_id,char *usr)
{
int ch;
int cur=0;
WINDOW *win=create_win(24,80,0,0);
keypad(win,TRUE);
box(win,0,0);
print_line(win,2);
print_line(win,4);
print_line(win,6);
print_line(win,21);
mvwprintw(win,0,32,"歡迎光臨XXX超市");
mvwprintw(win,1,38,"退貨");
mvwprintw(win,3,1,"收銀員:");
STAFF *staff_info=(STAFF *)malloc(sizeof(STAFF));
get_staffinfo(staff_info,usr);
wprintw(win,"%s",staff_info->staff_name);
mvwprintw(win,3,19,"等級:");
if (staff_info->staff_type==0)
{
wprintw(win,"超級用戶");
}
PRODUCT *pro_info=(PRODUCT *)malloc(sizeof(PRODUCT));
SEQID *seq_id=(SEQID *)malloc(sizeof(SEQID));
mvwprintw(win,3,34,"交易號:");
get_seq_trans_id(seq_id);
wprintw(win,"%s",seq_id->seq_trans_id);
mvwprintw(win,3,49,"時間:");
char systime[20]={'\0'};
get_system_time(win,systime);
wprintw(win,"%s",systime);
mvwprintw(win,5,1,"%-5s%-10s%-23s%-6s%-6s%-10s%-6s%-12s","序號","條形碼","商品名稱","規格","單位","單價","數量","金額");
mvwprintw(win,22,10,"F1:退出 F3:退貨商品 F4:退貨 銷售狀態: 退貨");
wrefresh(win);
SALE *return_sale=(SALE *)malloc(sizeof(SALE));
//打印窗口
WINDOW *print_window=NULL;
print_window=create_win(14,78,7,1);
keypad(print_window,TRUE);
wbkgd(print_window,COLOR_PAIR(6));
wrefresh(print_window);
scr_dump("recodeproduct.scr");
while (1)
{
ch=wgetch(win);
switch (ch)
{
case KEY_UP:
if (cur>1)
{
wclear(print_window);
print_sale_product(print_window,--cur);
wrefresh(win);
wrefresh(print_window);
}
break;
case KEY_DOWN:
if (cur<salelist.count)
{
wclear(print_window);
print_sale_product(print_window,++cur);
wrefresh(win);
wrefresh(print_window);
}
break;
case KEY_F(3):
cur=return_purchase_commodity_win(sale_id);
wclear(print_window);
wrefresh(win);
print_sale_product(print_window,cur);
wrefresh(print_window);
break;
case KEY_F(4):
strcpy(return_sale->sale_id,systime);
strcat(return_sale->sale_id,seq_id->seq_trans_id);
strcpy(return_sale->trans_id,seq_id->seq_trans_id);
strcpy(return_sale->staff_id,usr);
strcpy(return_sale->sale_date,systime);
if ( return_ware_win(return_sale,sale_id) )
{
mvwprintw(win,3,34,"交易號:");
get_seq_trans_id(seq_id);
wprintw(win,"%s",seq_id->seq_trans_id);
mvwprintw(win,3,49,"時間:");
get_system_time(win,systime);
wprintw(win,"%s",systime);
PRODUCT *product = (PRODUCT *)malloc(sizeof(PRODUCT));
int res = get_saleid_product_count(sale_id,product);
if (res==-1)
{
Message("數據庫出錯",10,40);
endwin();
exit(1);
}
if (res==0)
{
Message("此單已經全部退貨,返回收銀窗口",10,40);
return;
}
}
touchwin(win);
wrefresh(win);
print_sale_product(print_window,cur);
wrefresh(print_window);
break;
case KEY_F(1):
if (salelist.count)
{
Message("有退貨記錄未結算",10,40);
wclear(print_window);
touchwin(win);
wrefresh(win);
print_sale_product(print_window,cur);
wrefresh(print_window);
break;
}
else
{
return;
}
}
wrefresh(win);
}
}
/*======================================================
function:退貨商品條形碼數量輸入窗口
========================================================*/
int return_purchase_commodity_win(SALE_ID *sale_id)
{
int ch;
int now_col=0;
int now_row=0;
char bar_code[9]={"CN"};
char numberStr[5]={'\0'};
int number=0;
int cnt1=2;
int now_col1=0;
int now_row1=2;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -