亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? loginwindow.c

?? 福建博洋教育C/C++軟件項目實戰(zhàn):POS收銀系統(tǒng)
?? C
?? 第 1 頁 / 共 5 頁
字號:
#include "ncurlib.h"
#include "loginwindow.h"
#include <ncurses.h>
#include "public.h"
#include "oradb.h"
#include "link.h"
#include<string.h>
#include <stdlib.h>
char save_sale_id[3][19];//掛單號保存
int save_sale_count=0;//掛單數(shù)量總值統(tǒng)計
/*===================================================
function:登陸界面窗口與功能實現(xiàn)
=================================================*/
void log_in_win()
{
	char dbausr[20]={'\0'};//數(shù)據(jù)庫用戶名
	char dbapwd[20]={'\0'};//數(shù)據(jù)庫密碼	
	char user[7]="\0";//帳號
	char pwd[13]="\0";//密碼
	int ch,res;
	int now_col,now_row;
	int now_col1,now_row1;	
	int cnt=0;	
	int cnt1=0;	
	int l=0;
	int i=0;
	init_ncurses();		
	WINDOW *background,*front,*footer,*log_back,*account,*passwd;
	WINDOW *dialog[3]={NULL};
	//上方標題窗口
	front=create_win(1,80,0,0);
	wbkgd(front,COLOR_PAIR(1));
	mvwprintw(front,0,0,"超市收銀系統(tǒng)");
	wrefresh(front);
	//中間部分窗口
	background=create_win(22,80,1,0);
	wbkgd(background,COLOR_PAIR(2));
	mvwprintw(background,20,22,"前后臺提供一個F1鍵返回上一層功能");
	wrefresh(background);
	//登陸窗口背景窗口
	log_back=create_win(10,40,8,22);
	wbkgd(log_back,COLOR_PAIR(6));
	wrefresh(log_back);
	//底部標題窗口
	footer=create_win(1,80,23,0);
	wbkgd(footer,COLOR_PAIR(1));
	mvwprintw(footer,0,0,"Linux POS Version 1.0 Author LiDengFeng");
	wrefresh(footer);
	//登陸窗口
	print_dialog_box(10,40,"歡迎進入登錄窗口",1,dialog);
	mvwprintw(dialog[0],2,8,"帳號:");
	mvwprintw(dialog[0],4,8,"密碼:");
	wrefresh(dialog[0]);
	keypad(dialog[1],TRUE);
	keypad(dialog[2],TRUE);
	//帳戶窗口
	account=create_win(1,16,9,34);
	keypad(account,TRUE);
	wbkgd(account,COLOR_PAIR(4));
	wrefresh(account);
	//密碼窗口
	passwd=create_win(1,16,11,34);
	keypad(passwd,TRUE);
	wbkgd(passwd,COLOR_PAIR(4));
	wrefresh(passwd);
	scr_dump("login.scr");
	ACCOUNT://帳戶ID輸入
		wmove(account,0,0);
		wprintw(account,user);	
		wrefresh(account);
		while(1)
		{
			ch=wgetch(account);
			switch (ch)
			{
			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_LEFT:
			case KEY_RIGHT:
			case KEY_UP:
				break;
			case KEY_DOWN:
			case '\n':				
				goto PASSWD;							
				break;
			default:
				//過濾掉非數(shù)字
				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_BACKSPACE:  //按退格鍵盤
				if (cnt1>0)
				{
					getyx(passwd,now_col1,now_row1);
					mvwaddch(passwd,now_col1,--now_row1,' ');	
					wmove(passwd,now_col1,now_row1);
					pwd[--cnt1]='\0'; 
					wrefresh(passwd);
				}				
				break;
			case KEY_LEFT:
			case KEY_RIGHT:
				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_LEFT:
			case KEY_DOWN:
				break;
			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位數(shù)字賬號",8,38);					
					scr_restore("login.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("login.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;
				}
				//連接數(shù)據(jù)庫							
				get_dba_cnf(dbausr,dbapwd);
				if (connect_db(dbausr,dbapwd)==0)
				{
					Message("連接數(shù)據(jù)庫不成功!",10,40);
					endwin();
					exit(1);
				}
				//檢查用戶名是否存在
				{
					STAFF *staff = (STAFF *)malloc(sizeof(STAFF));
					strcpy(staff->staff_id,user);
					res = check_staff(staff);
					if (res==0)
					{
						Message("你輸入的帳戶ID不存在!",8,38);
						scr_restore("login.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==0)
				{
					Message("密碼錯誤!",8,38);
					scr_restore("login.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==2)
				{
					//收銀員登陸
					deal_main_win(user);
					scr_restore("login.scr");
					user[0]='\0';//帳戶ID
					pwd[0]='\0';//帳戶密碼			
					now_col=0;
					now_row=0;
					now_col1=0;
					now_row1=0;	
					cnt=0;	
					cnt1=0;	
					goto ACCOUNT;
				}
				if (isAdmin==1 || isAdmin==0)
				{
					//管理員和超級管理員登陸
					manage_main_win();
					scr_restore("login.scr");
					user[0]='\0';//帳戶ID
					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_UP:
			case KEY_DOWN:
			case KEY_RIGHT:
				break;
			case KEY_LEFT:
				wattroff(dialog[2],A_REVERSE);
				mvwprintw(dialog[2],1,2, "取消");
				wrefresh(dialog[2]);
				goto ENSURE;		
			case '\n':	
				endwin();
				exit(1);
			}
		}
}
/*========================================================
function:收銀主窗口與功能實現(xiàn)
=========================================================*/
void deal_main_win(char *usr)
{
	init_ncurses();	
	WINDOW *win;//主窗體
	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,19);
	print_line(win,21);
	mvwprintw(win,0,32,"歡迎光臨XXX超市");	
	mvwprintw(win,1,1,"收銀員:");
	STAFF *staff_info=(STAFF *)malloc(sizeof(STAFF)); 
	get_staffinfo(staff_info,usr);
	wprintw(win,"%s",staff_info->staff_name);
	mvwprintw(win,1,19,"等級:");
	if (staff_info->staff_type==2)
	{
		wprintw(win,"收銀員");
	}  
	PRODUCT *pro_info=(PRODUCT *)malloc(sizeof(PRODUCT));
	SEQID *seq_id=(SEQID *)malloc(sizeof(SEQID));
	mvwprintw(win,1,34,"交易號:");
	get_seq_trans_id(seq_id);
	wprintw(win,"%s",seq_id->seq_trans_id);
	mvwprintw(win,1,49,"時間:");
	char systime[20]={'\0'};
	get_system_time(win,systime);
	wprintw(win,"%s",systime);
	mvwprintw(win,3,1,"%-5s%-10s%-23s%-6s%-6s%-10s%-6s%-12s","序號","條形碼","商品名稱","規(guī)格","單位","單價","數(shù)量","金額");
	mvwprintw(win,22,1,"F2:新增明細 F3:刪除明細 F4:收銀 F5:掛單 F6:取單 F7:撤單 F8:退貨 F9:退出");
	mvwprintw(win,20,50,"銷售狀態(tài):正常");
	mvwprintw(win,20,1,"條形碼:");
	wrefresh(win);
	//打印商品信息窗口
	WINDOW *print_window=NULL;
	print_window=create_win(14,78,5,1);
	wbkgd(print_window,COLOR_PAIR(6));
	keypad(print_window,TRUE);
	wrefresh(print_window);
	//條形碼窗口
	int ch;
	char barCode[9]={"CN"};
	WINDOW *code=NULL;
	code=create_win(1,12,20,8);
	keypad(code,TRUE);
	wbkgd(code,COLOR_PAIR(1));
	wprintw(code,"%s",barCode);
	wrefresh(code);	
	int cnt=2;
	int now_col=0;
	int now_row=2;
	wmove(code,now_col,now_row);
	scr_dump("dealwin.scr");
	int i=0;	
	int cur=0;	
	int res=0;
	SALE *sale_info=(SALE *)malloc(sizeof(SALE));
	salelist.clear_link(&salelist);
	while(1)
	{
		wrefresh(win);
		ch=wgetch(code);
		switch (ch)
		{
		case KEY_BACKSPACE:  //按退格鍵盤
			if (cnt>2)
			{
				getyx(code,now_col,now_row);
				mvwaddch(code,now_col,--now_row,' ');							
				barCode[--cnt]='\0';				
				wmove(code,0,now_row);
				wrefresh(code);	
			}							
			break;	
		case KEY_F(2):
			add_new_detail_win(cur);			
			scr_restore("dealwin.scr");
			print_sale_product(print_window,cur);				
			wrefresh(win);
			wrefresh(print_window);
			now_row=2;
			cnt=2;
			mvwprintw(code,0,0,"CN      ");
			wmove(code,0,now_row);
			barCode[2]='\0';
			wrefresh(code);	
			break;
		case KEY_F(3):
			if (delete_detail_win(cur)==1)
			{
				cur--;
			}			
			scr_restore("dealwin.scr");
			print_sale_product(print_window,cur);				
			wrefresh(win);
			wrefresh(print_window);
			now_row=2;
			cnt=2;
			mvwprintw(code,0,0,"CN      ");
			wmove(code,0,now_row);
			barCode[2]='\0';
			wrefresh(code);	
			break;
		case KEY_F(4):
			strcpy(sale_info->sale_id,systime);
			strcat(sale_info->sale_id,seq_id->seq_trans_id);
			strcpy(sale_info->trans_id,seq_id->seq_trans_id);
			strcpy(sale_info->staff_id,usr);
			strcpy(sale_info->sale_date,systime);
			if(finish_deal_win(sale_info))
			{
				mvwprintw(win,1,34,"交易號:");
				get_seq_trans_id(seq_id);
				wprintw(win,"%s",seq_id->seq_trans_id);  	
				mvwprintw(win,1,49,"時間:");
				get_system_time(win,systime);
				wprintw(win,"%s",systime);	
			}			
			print_sale_product(print_window,cur);	
			wrefresh(win);			
			wrefresh(print_window);
			now_row=2;
			cnt=2;
			mvwprintw(code,0,0,"CN      ");
			wmove(code,0,now_row);
			barCode[2]='\0';
			wrefresh(code);	
			break;
		case KEY_F(5):
			strcpy(sale_info->sale_id,systime);
			strcat(sale_info->sale_id,seq_id->seq_trans_id);
			strcpy(sale_info->trans_id,seq_id->seq_trans_id);
			strcpy(sale_info->staff_id,usr);
			strcpy(sale_info->sale_date,systime);
			if(suspend_deal_win(sale_info))
			{
					mvwprintw(win,1,34,"交易號:");
					get_seq_trans_id(seq_id);
					wprintw(win,"%s",seq_id->seq_trans_id);  	
					mvwprintw(win,1,49,"時間:");
					get_system_time(win,systime);
					wprintw(win,"%s",systime);
			}			
			print_sale_product(print_window,cur);	
			wrefresh(win);			
			wrefresh(print_window);
			now_row=2;
			cnt=2;
			mvwprintw(code,0,0,"CN      ");
			wmove(code,0,now_row);
			barCode[2]='\0';
			wrefresh(code);		
			break;
		case KEY_F(6):
			fetch_deal_win();
			print_sale_product(print_window,cur);	
			wrefresh(win);			
			wrefresh(print_window);
			now_row=2;
			cnt=2;
			mvwprintw(code,0,0,"CN      ");
			wmove(code,0,now_row);
			barCode[2]='\0';
			wrefresh(code);	
			break;
		case KEY_F(7):
			remove_deal_win();
			print_sale_product(print_window,cur);	
			wrefresh(win);			
			wrefresh(print_window);
			now_row=2;
			cnt=2;
			mvwprintw(code,0,0,"CN      ");
			wmove(code,0,now_row);
			barCode[2]='\0';
			wrefresh(code);	
			break;
		case KEY_F(8):
			return_purchase();
			touchwin(win);
			print_sale_product(print_window,cur);	
			wrefresh(win);			
			wrefresh(print_window);
			now_row=2;
			cnt=2;
			mvwprintw(code,0,0,"CN          ");
			wmove(code,0,now_row);
			barCode[2]='\0';
			wrefresh(code);	
			break;
		case KEY_F(9):
		if (salelist.count)
			{
				message_botton("有銷售單未結(jié)算,不可以退出!",10,40);
			}
			else if (save_sale_count!=0)
			{
				message_botton("有掛單未處理,不可以退出!",10,40);										
			}
			else 
			{
				if ( message_botton("確定要退出銷售界面",10,40) )
				{
					return;
				}				
			}	
			print_sale_product(print_window,cur);	
			wrefresh(win);
			wrefresh(print_window);;
			now_row=2;
			cnt=2;
			mvwprintw(code,0,0,"CN      ");
			wmove(code,0,now_row);
			barCode[2]='\0';
			wrefresh(code);	
			break;	
		case KEY_UP:
			if (cur>1)
			{		
				wclear(print_window);				
				print_sale_product(print_window,--cur);
			}
			break;
		case KEY_DOWN:
			if (cur<salelist.count)
			{
				wclear(print_window);				

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕一区二区三区精华液| 爽好久久久欧美精品| ...av二区三区久久精品| 亚洲成人动漫在线免费观看| 国产曰批免费观看久久久| 91日韩在线专区| 久久综合色播五月| 亚洲综合视频在线| 成人黄色在线视频| 欧美精品一区二区在线观看| 一区二区三区在线视频观看58 | 911国产精品| 国产精品色哟哟| 精品一区二区免费视频| 欧美喷潮久久久xxxxx| 成人欧美一区二区三区视频网页| 韩日av一区二区| 日韩一区二区免费在线电影| 亚洲一级在线观看| 一本久久综合亚洲鲁鲁五月天 | 日韩有码一区二区三区| 一本到不卡免费一区二区| 国产亚洲1区2区3区| 蜜桃91丨九色丨蝌蚪91桃色| 欧美久久一区二区| 亚洲电影视频在线| 欧美丝袜自拍制服另类| 一区二区三区日韩欧美| 成人毛片在线观看| 国产精品天美传媒沈樵| 国产不卡高清在线观看视频| 久久综合久久综合亚洲| 国产精品白丝jk白祙喷水网站 | 久久精品国产一区二区三| 7777女厕盗摄久久久| 亚洲mv在线观看| 欧美日韩不卡视频| 日本人妖一区二区| 精品久久久久久久久久久久久久久久久| 午夜精品爽啪视频| 欧美一区二区三区四区久久| 日本视频免费一区| 欧美α欧美αv大片| 国产精品综合二区| 欧美激情中文字幕| 一本到一区二区三区| 亚洲一区二区三区三| 欧美色综合久久| 毛片av一区二区三区| 久久综合资源网| 96av麻豆蜜桃一区二区| 亚洲综合图片区| 欧美一区二区播放| 国产精品99久久久久久久女警| 国产精品少妇自拍| 欧美午夜精品一区二区三区| 青娱乐精品在线视频| 国产亚洲短视频| 在线观看网站黄不卡| 蜜臀精品久久久久久蜜臀| 久久久精品免费观看| 99精品热视频| 男人的j进女人的j一区| 久久噜噜亚洲综合| 日本久久精品电影| 蜜臀va亚洲va欧美va天堂 | 欧美一区二区观看视频| 国产美女久久久久| 夜夜亚洲天天久久| 欧美成人综合网站| 成人免费毛片嘿嘿连载视频| 香蕉乱码成人久久天堂爱免费| 精品国产99国产精品| 色综合夜色一区| 久久99久久99小草精品免视看| 亚洲四区在线观看| 日韩免费成人网| 91福利在线导航| 国产精品69毛片高清亚洲| 亚洲福利国产精品| 国产女人aaa级久久久级 | 亚洲女同一区二区| 亚洲精品一区二区三区香蕉| 在线视频国内一区二区| 国产一区二区三区在线观看精品| 亚洲成人黄色小说| 日韩毛片一二三区| 精品国产一区二区精华| 欧美主播一区二区三区| 成人久久18免费网站麻豆| 美国精品在线观看| 天天亚洲美女在线视频| 成人免费一区二区三区在线观看| 日韩久久免费av| 欧美男同性恋视频网站| 日本久久一区二区| 成av人片一区二区| 国产美女视频一区| 久久99精品国产麻豆婷婷洗澡| 亚洲一区二三区| 亚洲伦理在线精品| 一色屋精品亚洲香蕉网站| 亚洲精品一区二区三区影院| 日韩免费福利电影在线观看| 51精品视频一区二区三区| 欧美视频在线一区| 欧美伊人久久久久久午夜久久久久| jvid福利写真一区二区三区| 国产成人av自拍| 国产福利91精品一区| 国产麻豆视频一区| 精品一区二区国语对白| 美女免费视频一区二区| 日日夜夜免费精品视频| 天堂在线一区二区| 丝瓜av网站精品一区二区| 午夜久久久影院| 天天综合日日夜夜精品| 日韩电影在线观看一区| 蜜臀久久久久久久| 美女视频一区在线观看| 久99久精品视频免费观看| 精品一区二区三区在线播放| 国产在线精品免费av| 国产精品一区不卡| 成人av免费观看| 色综合久久中文字幕| 欧美日韩免费高清一区色橹橹| 欧美日韩国产bt| 日韩一区二区三区在线视频| 久久久一区二区三区| 中文av一区特黄| 亚洲狠狠丁香婷婷综合久久久| 亚洲一区二区三区免费视频| 日韩国产高清在线| 国产一区亚洲一区| av亚洲精华国产精华精华 | 欧美男人的天堂一二区| 欧美变态凌虐bdsm| 成人欧美一区二区三区1314| 亚洲国产综合91精品麻豆| 看电视剧不卡顿的网站| 成人av在线影院| 欧美性色aⅴ视频一区日韩精品| 欧美高清视频www夜色资源网| 久久亚洲一区二区三区明星换脸| 国产精品久久看| 亚洲一区在线电影| 国产一区二区h| 在线观看中文字幕不卡| 精品国产青草久久久久福利| 中文字幕一区二区三区在线观看 | 欧美三级中文字幕在线观看| 精品一区二区国语对白| 中文字幕乱码亚洲精品一区 | 一区在线观看免费| 亚洲在线成人精品| 精品无人码麻豆乱码1区2区| 成人av在线资源| 欧美一区二区视频观看视频 | 欧美不卡激情三级在线观看| 亚洲私人影院在线观看| 精品一区二区三区在线视频| 在线区一区二视频| 国产亚洲成av人在线观看导航| 亚洲一区二区三区影院| 国产激情视频一区二区三区欧美| 欧美亚洲高清一区| 国产精品国产三级国产aⅴ中文 | 亚洲欧美一区二区三区孕妇| 看电视剧不卡顿的网站| 色婷婷激情一区二区三区| 久久九九全国免费| 视频一区二区中文字幕| 色婷婷av一区| 中文字幕av一区二区三区| 久久草av在线| 正在播放一区二区| 亚洲午夜激情网页| 91丨porny丨蝌蚪视频| 欧美国产一区二区| 精品一区二区在线免费观看| 欧美日本韩国一区二区三区视频| 亚洲日本在线视频观看| 成人精品免费网站| 国产午夜一区二区三区| 精品一区二区免费在线观看| 欧美一区午夜视频在线观看| 亚洲影院在线观看| 色天使久久综合网天天| 中文字幕五月欧美| 成人在线综合网站| 欧美国产日韩精品免费观看| 国产精品一区专区| 精品国产在天天线2019| 韩国女主播一区| 久久综合色鬼综合色| 国产一区二区0| 中文字幕精品三区| av一区二区不卡|