📄 background.c
字号:
mvwprintw(dialog[0],16,13,"折扣:");
mvwprintw(dialog[0],18,13,"数量:");
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'};
Trim(pro_info->bar_code);
Trim(pro_info->product_name);
Trim(pro_info->unit);
Trim(pro_info->spec);
strcpy(code, pro_info->bar_code);
strcpy(name, pro_info->product_name);
strcpy(unit, pro_info->unit);
strcpy(spec, pro_info->spec);
sprintf(price, "%.2f", pro_info->sale_price);
sprintf(purchasePrice, "%.2f", pro_info->purchase_price);
sprintf(discount, "%.2f", pro_info->discount);
sprintf(count, "%d", pro_info->count);
int cnt[8]={0};
int col[8]={0};
int row[8]={0};
cnt[0]=row[0]=strlen(code);
cnt[1]=row[1]=strlen(name);
cnt[2]=row[2]=strlen(unit);
cnt[3]=row[3]=strlen(spec);
cnt[4]=row[4]=strlen(price);
cnt[5]=row[5]=strlen(purchasePrice);
cnt[6]=row[6]=strlen(discount);
cnt[7]=row[7]=strlen(count);
int i=0;
int ch=0;
int res=0;
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]);
}
wprintw(txtbox[0],code);
wprintw(txtbox[1],name);
wprintw(txtbox[2],unit);
wprintw(txtbox[3],spec);
wprintw(txtbox[4],price);
wprintw(txtbox[5],purchasePrice);
wprintw(txtbox[6],discount);
wprintw(txtbox[7],count);
for (i=0; i<8; i++)
{
wrefresh(txtbox[i]);
}
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_RIGHT:
wattroff(dialog[1],A_REVERSE);
mvwprintw(dialog[1],1,2, "确定");
wrefresh(dialog[1]);
goto CANCEL;
case '\n':
//删除商品表中的商品数据
delete_product(pro_info);
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_F(1):
return 0;
case KEY_LEFT:
wattroff(dialog[2],A_REVERSE);
mvwprintw(dialog[2],1,2, "取消");
wrefresh(dialog[2]);
goto ENSURE;
case '\n':
return 0;
}
}
}
/*=============================================================
function:帐户管理主窗口
==============================================================*/
void manage_account_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;
int ch;
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);
ch=wgetch(manage);
switch (ch)
{
case '1':
query_account_win();
tag=0;
break;
case '2':
add_account_win();
tag=1;
break;
case '3':
modify_account_win();
tag=2;
break;
case '4':
delete_account_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_account_win();
break;
case 1:
add_account_win();
break;
case 2:
modify_account_win();
break;
case 3:
delete_account_win();
break;
case 4:
return;
}
break;
}
}
}
/*===================================================
function:查询帐户窗口
===================================================*/
void query_account_win()
{
int ch;
WINDOW *win;
win=create_win(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,"%-6s%-7s%-15s%-13s%-9s%-28s","序列","帐户ID","帐户名","帐户密码","帐户类型","备注");
mvwprintw(win,21,4,"第一页(HOME) 上一页(PAGEUP) 下一页(PAGEDOWN) 最后页(END)");
mvwprintw(win,22,9,"当前第[ ]页 跳转第[ ]页 退出[F1]");
wrefresh(win);
char pageNumber[4]={'\0'};
int cnt=0;
int row=43;
int col=22;
//获得所有帐户信息
salelist.clear_link(&salelist);
int res=get_all_staff();
if (res==-1)
{
Message("数据库出错",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_staff_info(print_window,cur);
wrefresh(print_window);
while (1)
{
wmove(win,22,43);
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_staff_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_staff_info(print_window,++cur);
wrefresh(print_window);
}
break;
case KEY_HOME:
cur=1;
mvwprintw(win,22,16,"%3d",cur);
wrefresh(win);
print_staff_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_staff_info(print_window,cur);
wrefresh(print_window);
break;
case KEY_F(1):
return;
case '\n':
mvwprintw(win,22,43," ");
wrefresh(win);
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_staff_info(print_window,cur);
wrefresh(print_window);
}
else
{
mvwprintw(win,22,16,"%3d",cur);
wrefresh(win);
print_staff_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:打印数据库帐户信息
=====================================================*/
void print_staff_info(WINDOW *print_window,int cur)
{
wclear(print_window);
if (salelist.count==0)
{
return;
}
NODE *n=NULL;
STAFF *staff_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));
staff_info=(STAFF *)n->data;
if (staff_info!=NULL)
{
mvwprintw(print_window,i-1,0,"%-6d%-7s%-15s%-13s%-9d%-28s",
i+13*(cur-1),staff_info->staff_id, staff_info->staff_name, staff_info->staff_pwd, staff_info->staff_type,
staff_info->remark);
}
if (i==13*cur)
{
break;
}
}
wrefresh(print_window);
}
/*====================================================
function:添加帐户窗口
====================================================*/
void add_account_win()
{
WINDOW *dialog[3]={NULL};
print_dialog_box(24,80,"欢迎光临XXX超市",5,dialog);
keypad(dialog[1],TRUE);
keypad(dialog[2],TRUE);
mvwprintw(dialog[0],3,36,"添加帐户");
mvwprintw(dialog[0],6,11,"帐户ID:");
mvwprintw(dialog[0],8,11,"用户名:");
mvwprintw(dialog[0],10,13,"密码:");
mvwprintw(dialog[0],12,13,"身份:");
mvwprintw(dialog[0],14,13,"备注:");
wrefresh(dialog[0]);
WINDOW *txtbox[5] = {NULL};
char account[7] = {'\0'};
char name[16] = {'\0'};
char password[17] = {'\0'};
char type[5] = {'\0'};
char remark[31] = {'\0'};
int cnt[5]={0};
int col[5]={0};
int row[5]={0};
int i=0;
int ch=0;
int res=0;
for (i=0; i<5; i++)
{
txtbox[i]=create_win(1,42,6+2*i,20);
keypad(txtbox[i],TRUE);
wbkgd(txtbox[i],COLOR_PAIR(1));
wrefresh(txtbox[i]);
}
scr_dump("addaccount.scr");
//帐户ID窗口
FIRST:
wmove(txtbox[0],0,0);
wprintw(txtbox[0]," ");
wmove(txtbox[0],0,0);
wprintw(txtbox[0],account);
wrefresh(txtbox[0]);
while(1)
{
ch=wgetch(txtbox[0]);
switch (ch)
{
case KEY_BACKSPACE: //按退格键盘
if (cnt[0]>0)
{
getyx(txtbox[0],col[0],row[0]);
mvwaddch(txtbox[0],col[0],--row[0],' ');
account[--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]<6)
{
row[0]++;
waddch(txtbox[0],ch);
account[cnt[0]]=ch;
account[++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]<15 )
{
row[1]++;
waddch(txtbox[1],ch);
name[cnt[1]]=ch;
name[++cnt[1]]='\0';
wrefresh(txtbox[1]);
break;
}
}
}
//帐户密码窗口,根据需求允许输入12位
THIRD:
wmove(txtbox[2],0,0);
wprintw(txtbox[2],password);
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],' ');
password[--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]<12 && (ch>='0'&&ch<='9') || (ch>='a'&&ch<='z') || (ch>='A'&&ch<='Z') )
{
row[2]++;
waddch(txtbox[2],ch);
password[cnt[2]]=ch;
password[++cnt[2]]='\0';
wrefresh(txtbox[2]);
break;
}
}
}
//帐户类型窗口,允许输入0,1,2,根据这些来判断帐户类型
FOUR:
wmove(txtbox[3],0,0);
wprintw(txtbox[3],type);
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],' ');
type[--cnt[3]]='\0';
wmove(txtbox[3],0,row[3]);
wrefresh(txtbox[3]);
}
break;
case KEY_F(1):
return;
case KEY_UP:
goto THIRD;
case KEY_DOWN:
case '\n':
goto FIVE;
default:
if ( (ch>='0'&&ch<='2') && cnt[3]<1 )
{
row[3]++;
waddch(txtbox[3],ch);
type[cnt[3]]=ch;
type[++cnt[3]]='\0';
wrefresh(txtbox[3]);
break;
}
}
}
//帐户备注窗口
FIVE:
wmove(txtbox[4],0,0);
wprintw(txtbox[4],remark);
wrefresh(txtbox[4]);
while(1)
{
ch=wgetch(txtbox[4]);
switch (ch)
{
case KEY_BACKSPACE: //按退格键盘
if (cnt[4]>0)
{
getyx(txtbox[4],col[4],row[4]);
mvwaddch(txtbox[4],col[4],--row[4],' ');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -