?? loginwindow.c
字號:
wrefresh(given);
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 0;
case KEY_UP:
wattroff(dialog[1],A_REVERSE);
mvwprintw(dialog[1],1,2, "確定");
wrefresh(dialog[1]);
goto MONEY;
case KEY_RIGHT:
wattroff(dialog[1],A_REVERSE);
mvwprintw(dialog[1],1,2, "確定");
wrefresh(dialog[1]);
goto CANCEL;
case '\n':
if (cnt1==0)
{
Message("請您輸入的金額",10,40);
scr_restore("finish.scr");
cnt1=0;
now_row1=0;
secondStr[0]='\0';
goto MONEY;
}
if(is_float(secondStr)==0)
{
Message("輸入金額格式錯誤",10,40);
scr_restore("finish.scr");
cnt1=0;
now_row1=0;
secondStr[0]='\0';
goto MONEY;
}
cashTotal=atof(secondStr);
if (cashTotal<cashReceive)
{
Message("實收金額小于應收金額",10,40);
scr_restore("finish.scr");
cnt1=0;
now_row1=0;
secondStr[0]='\0';
goto MONEY;
}
cashGive=cashTotal-cashReceive;
wprintw(change,"%.2f",cashGive);
wrefresh(change);
wgetch(dialog[1]);
//修改數據庫數據
sale_info->given_sum=cashReceive;//購買商品的總價格
sale_info->real_sum=cashTotal;//實際付款數
sale_info->change=cashGive;//找零
sale_info->sale_money=cashReceive;
sale_info->sale_state=0;//0代表正常銷售
if (insert_sale(sale_info)==-1)
{
Message("數據庫出錯",10,40);
endwin();
exit(1);
}
if (insert_sale(sale_info)==0)
{
Message("插入銷售信息的時候出錯",10,40);
endwin();
exit(1);
}
SALE_DETAIL *sale_detail=(SALE_DETAIL *)malloc(sizeof(SALE_DETAIL));
DETAILID *detail=(DETAILID *)malloc(sizeof(DETAILID));
PRODUCT *pro_info=(PRODUCT *)malloc(sizeof(PRODUCT));
for ( i=1; i<=salelist.count; i++)
{
n=salelist.get_node_by_index(&salelist,i);
pro_info=(PRODUCT *)n->data;
int res=update_product_count(pro_info);
if (res==-1)
{
Message("數據庫出錯",10,40);
endwin();
exit(1);
}
if (res==0)
{
Message("沒有找到相應的商品",10,40);
endwin();
exit(1);
}
//消費明細表添加
if (get_seq_detail_id(detail)!=1)
{
Message("數據庫出錯",10,40);
endwin();
exit(1);
}
strcpy(sale_detail->detail_id,sale_info->sale_date);
strcat(sale_detail->detail_id,detail->seq_detail_id);
strcpy(sale_detail->sale_id,sale_info->sale_id);
strcpy(sale_detail->bar_code,pro_info->bar_code);
sale_detail->count=pro_info->count;
sale_detail->sale_price=pro_info->sale_price;
sale_detail->sale_state=0;//0代表正常銷售
res=insert_sale_detail(sale_detail);
if (res==-1)
{
Message("數據庫出錯",10,40);
endwin();
exit(1);
}
if (res==0)
{
Message("插入銷售明細的時候出錯",10,40);
endwin();
exit(1);
}
}
salelist.clear_link(&salelist);
return 1;
}
}
CANCEL:
wattron(dialog[2],A_REVERSE);
mvwprintw(dialog[2],1,2, "取消");
wrefresh(dialog[2]);
while (1)
{
ch=wgetch(dialog[2]);
switch (ch)
{
case KEY_LEFT:
wattroff(dialog[2],A_REVERSE);
mvwprintw(dialog[2],1,2, "取消");
wrefresh(dialog[2]);
goto ENSURE;
case KEY_F(1):
case '\n':
return 0;
}
}
}
/*===============================================================
function:掛單窗口與功能實現
================================================================*/
int suspend_deal_win(SALE *sale_info)
{
if (salelist.count)
{
if (save_sale_count>=3)
{
Message("已有3個掛單",10,40);
return 0;
}
if (message_botton("是否要掛單",10,40))
{
strcpy(save_sale_id[save_sale_count++],sale_info->sale_id);
int i=1;
sale_info->given_sum=0;
sale_info->real_sum=0;
sale_info->sale_money=0;
sale_info->change=0;
sale_info->sale_state=-1;//-1代表銷售狀態為掛單
//插入銷售表
int res=insert_sale(sale_info);
if (res==-1)
{
Message("數據庫出錯",10,40);
endwin();
exit(1);
}
if (res==0)
{
Message("插入銷售信息的時候出錯",10,40);
endwin();
exit(1);
}
PRODUCT *pro_info=(PRODUCT *)malloc(sizeof(PRODUCT));
SALE_DETAIL *sale_detail=(SALE_DETAIL *)malloc(sizeof(SALE_DETAIL));
DETAILID *detail=(DETAILID *)malloc(sizeof(DETAILID));
for ( i=1; i<=salelist.count; i++)
{
NODE *n=salelist.get_node_by_index(&salelist,i);
pro_info=(PRODUCT *)n->data;
res=update_product_count(pro_info);
if (res==-1)
{
Message("數據庫出錯",10,40);
endwin();
exit(1);
}
if (res==0)
{
Message("沒有找到相應的商品",10,40);
endwin();
exit(1);
}
//消費明細表添加
if (get_seq_detail_id(detail)!=1)
{
Message("數據庫出錯",10,40);
endwin();
exit(1);
}
strcpy(sale_detail->detail_id,sale_info->sale_date);
strcat(sale_detail->detail_id,detail->seq_detail_id);
strcpy(sale_detail->sale_id,sale_info->sale_id);
strcpy(sale_detail->bar_code,pro_info->bar_code);
sale_detail->count=pro_info->count;
sale_detail->sale_price=pro_info->sale_price;
sale_detail->sale_state=-1;//-1代表掛單
res=insert_sale_detail(sale_detail);
if (res==-1)
{
Message("數據庫出錯",10,40);
endwin();
exit(1);
}
if (res==0)
{
Message("插入銷售明細的時候出錯",10,40);
endwin();
exit(1);
}
}
salelist.clear_link(&salelist);
return 1;
}
return 0;
}
Message("沒有銷售商品",10,40);
return 0;
}
/*====================================================
function:取單窗口與功能實現
===================================================*/
void fetch_deal_win()
{
if(salelist.count)
{
Message("有銷售單沒有結算",10,40);
return;
}
if(save_sale_count==0)
{
Message("沒有掛單信息",10,40);
return;
}
WINDOW *dialog;
dialog=create_win(10,40,6,20);
keypad(dialog,TRUE);
wbkgd(dialog,COLOR_PAIR(7));
box(dialog,0,0);
mvwprintw(dialog,7,10,"按ENTER鍵取單F1鍵返回");
wrefresh(dialog);
mvwprintw(dialog,0,19,"取單");
int cur=0;
print_save_sale_id(dialog,cur);
wrefresh(dialog);
int ch=0;
SALE_ID *save_id=(SALE_ID *)malloc(sizeof(SALE_ID));
while (1)
{
int i=1;
int res=0;
ch=wgetch(dialog);
switch (ch)
{
case KEY_F(1):
return;
case KEY_UP:
if (cur>0)
{
print_save_sale_id(dialog,--cur);
}
break;
case KEY_DOWN:
if (cur<=save_sale_count-2)
{
print_save_sale_id(dialog,++cur);
}
break;
case '\n':
//根據單號取單
strcpy(save_id->sale_id,save_sale_id[cur]);
res=get_sale_detail(save_id);
if (res==-1)
{
Message("數據庫出錯",10,40);
endwin();
exit(1);
}
if (salelist.count==0)
{
Message("取單的時候數據庫出錯,沒找到相應的數據",10,40);
endwin();
exit(1);
}
for ( i=1; i<=salelist.count; i++)
{
//數據庫修改返回相應商品的庫存
NODE *n=salelist.get_node_by_index(&salelist,i);
PRODUCT * pro_info=(PRODUCT *)n->data;
res=fetch_product_count(pro_info);
if (res==-1)
{
Message("數據庫出錯",10,40);
endwin();
exit(1);
}
if (res==0)
{
Message("沒有找到相應的商品",10,40);
endwin();
exit(1);
}
}
//把消費表及消費明細表中的掛單消息進行刪除
res=del_sale_detail(save_id);
if (res==-1)
{
Message("數據庫出錯",10,40);
endwin();
exit(1);
}
if (res==0)
{
Message("刪除銷售明細的時候數據出錯",10,40);
endwin();
exit(1);
}
//刪除原數據中提取單號;
for ( i=cur+1; i<=save_sale_count-1; i++)
{
strcpy(save_sale_id[cur],save_sale_id[i]);
}
save_sale_count--;
return;
}
}
}
/*=====================================================
function:打印取單窗口中的單號
=====================================================*/
void print_save_sale_id(WINDOW *print_window,int cur)
{
if (save_sale_count==0)
{
return;
}
int i=0;
for (; i<=save_sale_count-1; i++)
{
if (i==cur)
{
wstandout(print_window);
}
mvwprintw(print_window,1+i,10,"%d.%s",i+1,save_sale_id[i]);
if (i==cur)
{
wstandend(print_window);
}
}
wrefresh(print_window);
}
/*==========================================================
function:撤單窗口與功能的實現
===========================================================*/
void remove_deal_win()
{
//先判斷當前有無銷售單,有銷售單的話按F7進行撤單
if (salelist.count)
{
if (message_botton("您確定要刪除當前銷售記錄",10,40))
{
salelist.clear_link(&salelist);
}
return;
}
if (save_sale_count==0)
{
Message("無掛單",10,40);
return;
}
WINDOW *dialog;
dialog=create_win(10,40,6,20);
keypad(dialog,TRUE);
wbkgd(dialog,COLOR_PAIR(7));
box(dialog,0,0);
wrefresh(dialog);
mvwprintw(dialog,0,19,"撤單");
mvwprintw(dialog,7,10,"按ENTER鍵撤單F1鍵返回");
int cur=0;
print_save_sale_id(dialog,cur);
wrefresh(dialog);
int ch=0;
SALE_ID *save_id=(SALE_ID *)malloc(sizeof(SALE_ID));
while (1)
{
int i=1;
int res=0;
ch=wgetch(dialog);
switch (ch)
{
case KEY_F(1):
return;
case KEY_UP:
if (cur>0)
{
print_save_sale_id(dialog,--cur);
}
break;
case KEY_DOWN:
if (cur<=save_sale_count-2)
{
print_save_sale_id(dialog,++cur);
}
break;
case '\n':
//根據單號取單
if ( message_botton("是否確定要撤單",10,36)==0 )
{
return;
}
strcpy(save_id->sale_id,save_sale_id[cur]);
res=get_sale_detail(save_id);
if (res==-1)
{
Message("數據庫出錯",10,40);
endwin();
exit(1);
}
if (salelist.count==0)
{
Message("取單的時候數據庫出錯,沒找到相應的數據",10,40);
endwin();
exit(1);
}
for ( i=1; i<=salelist.count; i++)
{
//數據庫修改返回商品庫存
NODE *n=salelist.get_node_by_index(&salelist,i);
PRODUCT * pro_info=(PRODUCT *)n->data;
res=fetch_product_count(pro_info);
if (res==-1)
{
Message("數據庫出錯",10,40);
endwin();
exit(1);
}
if (res==0)
{
Message("沒有找到相應的商品",10,40);
endwin();
exit(1);
}
}
//撤單的時候把消費表及消費明細表中掛單的信息進行刪除
res=del_sale_detail(save_id);
if (res==-1)
{
Message("數據庫出錯",10,40);
endwin();
exit(1);
}
if (res==0)
{
Message("刪除銷售明細的時候數據出錯",10,40);
endwin();
exit(1);
}
//刪除原數據中提取單號;
for ( i=cur+1; i<=save_sale_count-1; i++)
{
strcpy(save_sale_id[cur],save_sale_id[i]);
}
save_sale_count--;
salelist.clear_link(&salelist);
return;
}
}
}
/*==================================================
function:退貨功能
===================================================*/
void return_purchase()
{
if (salelist.count)
{
Message("有銷售單未結算",10,40);
return;
}
account_log_win();
return;
}
/*=====================================================
function:超級帳戶登陸退貨窗口與超級帳戶驗證
=======================================================*/
void account_log_win()
{
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;
WINDOW *dialog[3]={NULL};
print_dialog_box(10,40,"退貨",1,dialog);
mvwprintw(dialog[0],2,4,"超級賬戶帳號:");
mvwprintw(dialog[0],4,4,"超級賬戶密碼:");
wrefresh(dialog[0]);
keypad(dialog[1],TRUE);
keypad(dialog[2],TRUE);
WINDOW *account=create_win(1,16,9,38);
keypad(account,TRUE);
wbkgd(account,COLOR_PAIR(4));
wrefresh(account);
WINDOW *passwd=create_win(1,16,11,38);
keypad(passwd,TRUE);
wbkgd(passwd,COLOR_PAIR(4));
wrefresh(passwd);
scr_dump("superadmin.scr");
ACCOUNT:
wmove(account,0,0);
wprintw(account,user);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -