?? background.c
字號:
#include "background.h"
#include "ncurlib.h"
#include <ncurses.h>
#include <stdlib.h>
#include "public.h"
#include "link.h"
#include "oradb.h"
/*=======================================================
function:后臺管理主窗口
=========================================================*/
void manage_main_win()
{
init_ncurses();
WINDOW *manage;
manage=create_win(24,80,0,0);
wbkgd(manage,COLOR_PAIR(5));
keypad(manage,TRUE);
wrefresh(manage);
char title[40]="后臺管理";
mvwprintw(manage,5,36,title);
char menu[4][40]={
"1.商品管理",
"2.賬戶管理",
"3.銷售記錄管理",
"0.返回登錄界面"
};
int i=0;
int tag=0;
while (1)
{
for (i=0; i<4; i++ )
{
if (i==tag)
{
wattron(manage,A_REVERSE);
}
mvwprintw(manage,9+2*i,34, menu[i]);
if (i==tag)
{
wattroff(manage,A_REVERSE);
}
}
touchwin(manage);
wrefresh(manage);
int i=0;
int ch;
ch=wgetch(manage);
switch (ch)
{
case '1':
manage_commodity_main_win();
tag=0;
break;
case '2':
manage_account_main_win();
tag=1;
break;
case '3':
manage_sale_main_win();
tag=2;
break;
case '0':
return;
case KEY_UP:
if (tag>0)
{
tag--;
}
break;
case KEY_DOWN:
if (tag<3)
{
tag++;
}
break;
case '\n':
switch (tag)
{
case 0:
manage_commodity_main_win();
break;
case 1:
manage_account_main_win();
break;
case 2:
manage_sale_main_win();
break;
case 3:
log_in_win();
return;
break;
}
break;
}
}
}
/*====================================================
function:商品管理主窗口
====================================================*/
void manage_commodity_main_win()
{
WINDOW *manage;
manage=create_win(24,80,0,0);
wbkgd(manage,COLOR_PAIR(5));
keypad(manage,TRUE);
wrefresh(manage);
char title[40]="商品管理";
mvwprintw(manage,5,36,title);
char menu[5][40]={
"1.查詢商品",
"2.添加商品",
"3.修改商品",
"4.刪除商品",
"0.返回后臺管理界面"
};
int i=0;
int tag=0;
while (1)
{
for (i=0; i<5; i++ )
{
if (i==tag)
{
wattron(manage,A_REVERSE);
}
mvwprintw(manage,9+2*i,33, menu[i]);
if (i==tag)
{
wattroff(manage,A_REVERSE);
}
}
touchwin(manage);
wrefresh(manage);
int i=0;
int ch;
ch=wgetch(manage);
switch (ch)
{
case '1':
query_commodity_win();
tag=0;
break;
case '2':
add_commodity_win();
tag=1;
break;
case '3':
modify_commodity_win();
tag=2;
break;
case '4':
delete_commodity_win();
tag=3;
break;
case '0':
return;
case KEY_UP:
if (tag>0)
{
tag--;
}
break;
case KEY_DOWN:
if (tag<4)
{
tag++;
}
break;
case '\n':
switch (tag)
{
case 0:
query_commodity_win();
break;
case 1:
add_commodity_win();
break;
case 2:
modify_commodity_win();
break;
case 3:
delete_commodity_win();
break;
case 4:
return;
}
break;
}
}
}
/*=========================================================
function:查詢商品窗口
=========================================================*/
void query_commodity_win()
{
int ch;
WINDOW *win;
win=newwin(24,80,0,0);
keypad(win,TRUE);
wbkgd(win,COLOR_PAIR(5));
box(win,0,0);
print_line(win,4);
print_line(win,6);
print_line(win,20);
mvwprintw(win,0,32,"歡迎光臨XXX超市");
mvwprintw(win,2,36,"查詢商品");
mvwprintw(win,5,1,"%-5s%-9s%-20s%-6s%-6s%-10s%-10s%-6s%-6s","序號","條形碼","商品名","單位","規(guī)格","銷售價(jià)格","進(jìn)貨價(jià)格","數(shù)量","折扣");
mvwprintw(win,21,4,"第一頁(HOME) 上一頁(PAGEUP) 下一頁(PAGEDOWN) 最后頁(END)");
mvwprintw(win,22,9,"當(dāng)前第[ ]頁 跳轉(zhuǎn)第[ ]頁 退出[F1]");
wrefresh(win);
salelist.clear_link(&salelist);
int res=get_all_product();
if (res==-1)
{
Message("數(shù)據(jù)庫出錯(cuò)",10,40);
endwin();
exit(1);
}
if (salelist.count==0)
{
Message("沒有庫存",10,40);
endwin();
exit(1);
}
WINDOW *print_window=NULL;
print_window=create_win(13,78,7,1);
keypad(print_window,TRUE);
wbkgd(print_window,COLOR_PAIR(5));
int cur=1;
mvwprintw(win,22,16,"%3d",cur);
wrefresh(win);
print_product_info(print_window,cur);
wrefresh(print_window);
char pageNumber[4]={'\0'};
int cnt=0;
int row=43;
int col=22;
while (1)
{
wmove(win,col,row);
ch=wgetch(win);
switch (ch)
{
case KEY_BACKSPACE: //按退格鍵盤
if (cnt>0)
{
getyx(win,col,row);
mvwaddch(win,col,--row,' ');
pageNumber[--cnt]='\0';
wmove(win,col,row);
wrefresh(win);
}
break;
case KEY_PPAGE:
if (cur>1)
{
mvwprintw(win,22,16,"%3d",cur-1);
wrefresh(win);
print_product_info(print_window,--cur);
wrefresh(print_window);
}
break;
case KEY_NPAGE:
if ( cur<(salelist.count+12)/13 )
{
mvwprintw(win,22,16,"%3d",cur+1);
wrefresh(win);
print_product_info(print_window,++cur);
wrefresh(print_window);
}
break;
case KEY_HOME:
cur=1;
mvwprintw(win,22,16,"%3d",cur);
wrefresh(win);
print_product_info(print_window,cur);
wrefresh(print_window);
break;
case KEY_END:
cur=(salelist.count+12)/13;
mvwprintw(win,22,16,"%3d",cur);
wrefresh(win);
print_product_info(print_window,cur);
wrefresh(print_window);
break;
case KEY_F(1):
return;
case '\n':
mvwaddch(win,22,43,' ');
mvwaddch(win,22,44,' ');
mvwaddch(win,22,45,' ');
cur = atoi(pageNumber);
pageNumber[0] = '\0';
row=43;
cnt=0;
if ( cur==0 )
{
break;
}
if ( cur>(salelist.count+12)/13 )
{
cur=(salelist.count+12)/13;
mvwprintw(win,22,16,"%3d",cur);
wrefresh(win);
print_product_info(print_window,cur);
wrefresh(print_window);
}
else
{
mvwprintw(win,22,16,"%3d",cur);
wrefresh(win);
print_product_info(print_window,cur);
wrefresh(print_window);
}
break;
default:
if ( (ch>='1'&&ch<='9')||(ch=='0'&&cnt!=0) )
{
if (cnt>=3)
{
break;
}
mvwaddch(win,col,row++,ch);
pageNumber[cnt]=ch;
pageNumber[++cnt]='\0';
wrefresh(win);
break;
}
}
wrefresh(win);
}
}
/*=====================================================
function:打印數(shù)據(jù)庫商品信息
=====================================================*/
void print_product_info(WINDOW *print_window,int cur)
{
wclear(print_window);
if (salelist.count==0)
{
return;
}
NODE* n=NULL;
PRODUCT *pro_info=NULL;
int i=1;
for ( i+13*(cur-1); i<=13*cur; i++)
{
if (i+13*(cur-1)==salelist.count+1)
{
break;
}
n=salelist.get_node_by_index(&salelist,i+13*(cur-1));
pro_info=(PRODUCT *)n->data;
if (pro_info!=NULL)
{
mvwprintw(print_window,i-1,0,"%-5d%-9s%-20s%-6s%-6s%-10.2f%-10.2f%-6d%-6.2f",
i+13*(cur-1),pro_info->bar_code, pro_info->product_name, pro_info->unit, pro_info->spec,
pro_info->sale_price, pro_info->purchase_price, pro_info->count, pro_info->discount);
}
if (i==13*cur)
{
break;
}
}
wrefresh(print_window);
}
/*======================================================
function:添加商品窗口
======================================================*/
void add_commodity_win()
{
WINDOW *dialog[3]={NULL};
print_dialog_box(24,80,"歡迎光臨XXX超市",5,dialog);
keypad(dialog[1],TRUE);
keypad(dialog[2],TRUE);
mvwprintw(dialog[0],2,36,"添加商品");
mvwprintw(dialog[0],4,11,"條形碼:");
mvwprintw(dialog[0],6,13,"名稱:");
mvwprintw(dialog[0],8,13,"單位:");
mvwprintw(dialog[0],10,13,"規(guī)格:");
mvwprintw(dialog[0],12,13,"售價(jià):");
mvwprintw(dialog[0],14,9,"進(jìn)貨價(jià)格:");
mvwprintw(dialog[0],16,13,"折扣:");
mvwprintw(dialog[0],18,13,"數(shù)量:");
wrefresh(dialog[0]);
WINDOW *txtbox[8]={NULL};
char code[9] = "CN";
char name[31] = {'\0'};
char unit[17] = {'\0'};
char spec[17] = {'\0'};
char price[12] = {'\0'};
char purchasePrice[12] = {'\0'};
char discount[5] = {'\0'};
char count[6] = {'\0'};
int cnt[8]={0};
int col[8]={0};
int row[8]={0};
int i=0;
int ch=0;
int res=0;
cnt[0]=2;
row[0]=2;
for (i=0; i<8; i++)
{
txtbox[i]=create_win(1,42,4+2*i,20);
keypad(txtbox[i],TRUE);
wbkgd(txtbox[i],COLOR_PAIR(1));
wrefresh(txtbox[i]);
}
//商品條形碼窗口
scr_dump("addcommodity.scr");
FIRST:
wmove(txtbox[0],0,0);
wprintw(txtbox[0],code);
wrefresh(txtbox[0]);
while(1)
{
ch=wgetch(txtbox[0]);
switch (ch)
{
case KEY_BACKSPACE: //按退格鍵盤
if (cnt[0]>2)
{
getyx(txtbox[0],col[0],row[0]);
mvwaddch(txtbox[0],col[0],--row[0],' ');
code[--cnt[0]]='\0';
wmove(txtbox[0],0,row[0]);
wrefresh(txtbox[0]);
}
break;
case KEY_F(1):
return;
case KEY_DOWN:
case '\n':
goto SECOND;
default:
if (ch>='0'&&ch<='9' && cnt[0]<8)
{
row[0]++;
waddch(txtbox[0],ch);
code[cnt[0]]=ch;
code[++cnt[0]]='\0';
wrefresh(txtbox[0]);
break;
}
}
}
//商品名稱窗口
SECOND:
wmove(txtbox[1],0,0);
wprintw(txtbox[1],name);
wrefresh(txtbox[1]);
while(1)
{
ch=wgetch(txtbox[1]);
switch (ch)
{
case KEY_BACKSPACE: //按退格鍵盤
if (cnt[1]>0)
{
getyx(txtbox[1],col[1],row[1]);
mvwaddch(txtbox[1],col[1],--row[1],' ');
name[--cnt[1]]='\0';
wmove(txtbox[1],0,row[1]);
wrefresh(txtbox[1]);
}
break;
case KEY_F(1):
return;
case KEY_UP:
goto FIRST;
case KEY_DOWN:
case '\n':
goto THIRD;
default:
if ( cnt[1]<30 )
{
row[1]++;
waddch(txtbox[1],ch);
name[cnt[1]]=ch;
name[++cnt[1]]='\0';
wrefresh(txtbox[1]);
break;
}
}
}
//商品單位窗口
THIRD:
wmove(txtbox[2],0,0);
wprintw(txtbox[2],unit);
wrefresh(txtbox[2]);
while(1)
{
ch=wgetch(txtbox[2]);
switch (ch)
{
case KEY_BACKSPACE: //按退格鍵盤
if (cnt[2]>0)
{
getyx(txtbox[2],col[2],row[2]);
mvwaddch(txtbox[2],col[2],--row[2],' ');
unit[--cnt[2]]='\0';
wmove(txtbox[2],0,row[2]);
wrefresh(txtbox[2]);
}
break;
case KEY_F(1):
return;
case KEY_UP:
goto SECOND;
break;
case KEY_DOWN:
case '\n':
goto FOUR;
default:
if ( cnt[2]<16 )
{
row[2]++;
waddch(txtbox[2],ch);
unit[cnt[2]]=ch;
unit[++cnt[2]]='\0';
wrefresh(txtbox[2]);
break;
}
}
}
//商品規(guī)格窗口
FOUR:
wmove(txtbox[3],0,0);
wprintw(txtbox[3],spec);
wrefresh(txtbox[3]);
while(1)
{
ch=wgetch(txtbox[3]);
switch (ch)
{
case KEY_BACKSPACE: //按退格鍵盤
if (cnt[3]>0)
{
getyx(txtbox[3],col[3],row[3]);
mvwaddch(txtbox[3],col[3],--row[3],' ');
spec[--cnt[3]]='\0';
wmove(txtbox[3],0,row[3]);
wrefresh(txtbox[3]);
}
break;
case KEY_F(1):
return;
case KEY_UP:
goto THIRD;
break;
case KEY_DOWN:
case '\n':
goto FIVE;
default:
if ( cnt[3]<16 )
{
row[3]++;
waddch(txtbox[3],ch);
spec[cnt[3]]=ch;
spec[++cnt[3]]='\0';
wrefresh(txtbox[3]);
break;
}
}
}
//商品售價(jià)窗口
FIVE:
wmove(txtbox[4],0,0);
wprintw(txtbox[4],price);
wrefresh(txtbox[4]);
int radixPoint=0;
while(1)
{
ch=wgetch(txtbox[4]);
switch (ch)
{
case KEY_BACKSPACE: //按退格鍵盤
if (cnt[4]>0)
{
if (code[cnt[4]-1]=='.')
{
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -