📄 posaddproduct.c
字号:
#include "posAddProduct.h"
#include "pub.h"
#include "posPublic.h"
#include "posBackOracle.h"
#include <stdlib.h>
#include <string.h>
int printAddproduct(int key,BARINFO barInfo)
{
WINDOW * winmain,*winbar_code,*winproduct_name,*winunit,*winspec,*winsale_price,*winpurchase_price,*winnum,*windiscount,*winsure,*wincancle;
int ch,flag=0,num=10;
char sale_price[10];
char purchase_price[10];
char number[6];
char discount[10];
char barcode[10];
memset(barcode,0,sizeof(barcode));
memset(sale_price,0,sizeof(sale_price));
memset(purchase_price,0,sizeof(purchase_price));
memset(number,0,sizeof(number));
memset(discount,0,sizeof(discount));
sprintf(sale_price,"%.2f",barInfo->sale_price);
sprintf(purchase_price,"%.2f",barInfo->purchase_price);
sprintf(number,"%d",barInfo->num);
sprintf(discount,"%.2f",barInfo->discount);
if(key==2)
{
strcpy(barcode,barInfo->bar_code);
}
if(has_colors())
{
start_color();
init_pair(22,COLOR_WHITE,COLOR_BLUE);
init_pair(23,COLOR_BLACK,COLOR_WHITE);
}
winmain=newwin(24,80,0,0);
box(winmain,0,0);
wbkgd(winmain,COLOR_PAIR(22));
switch(key)
{
case 1:
mvwprintw(winmain,2,30,"添 加 商 品");
break;
case 2:
mvwprintw(winmain,2,30,"修 改 商 品");
break;
case 3:
mvwprintw(winmain,2,30,"查 询 商 品");
mvwprintw(winmain,21,30,"按 ESC 键 退 出 ......");
break;
}
mvwprintw(winmain,5,20,"条形码:");
mvwprintw(winmain,7,20,"商品名称:");
mvwprintw(winmain,9,20,"单位:");
mvwprintw(winmain,11,20,"规格:");
mvwprintw(winmain,13,20,"销售价格:");
mvwprintw(winmain,15,20,"进货价格:");
mvwprintw(winmain,17,20,"商品库存:");
mvwprintw(winmain,19,20,"折扣:");
wrefresh(winmain);
winbar_code=newwin(1,10,5,30);
wbkgd(winbar_code,COLOR_PAIR(23));
mvwprintw(winbar_code,0,0,"%s",barInfo->bar_code);
wrefresh(winbar_code);
winproduct_name=newwin(1,32,7,30);
wbkgd(winproduct_name,COLOR_PAIR(23));
mvwprintw(winproduct_name,0,0,"%s",barInfo->product_name);
wrefresh(winproduct_name);
winunit=newwin(1,18,9,30);
wbkgd(winunit,COLOR_PAIR(23));
mvwprintw(winunit,0,0,"%s",barInfo->unit);
wrefresh(winunit);
winspec=newwin(1,18,11,30);
wbkgd(winspec,COLOR_PAIR(23));
mvwprintw(winspec,0,0,"%s",barInfo->spec);
wrefresh(winspec);
winsale_price=newwin(1,12,13,30);
wbkgd(winsale_price,COLOR_PAIR(23));
mvwprintw(winsale_price,0,0,"%.2f",barInfo->sale_price);
wrefresh(winsale_price);
winpurchase_price=newwin(1,12,15,30);
wbkgd(winpurchase_price,COLOR_PAIR(23));
mvwprintw(winpurchase_price,0,0,"%.2f",barInfo->purchase_price);
wrefresh(winpurchase_price);
winnum=newwin(1,10,17,30);
wbkgd(winnum,COLOR_PAIR(23));
mvwprintw(winnum,0,0,"%d",barInfo->num);
wrefresh(winnum);
windiscount=newwin(1,10,19,30);
wbkgd(windiscount,COLOR_PAIR(23));
mvwprintw(windiscount,0,0,"%.2f",barInfo->discount);
wrefresh(windiscount);
if(key!=3)
{
winsure=newwin(1,6,21,20);
wbkgd(winsure,COLOR_PAIR(23));
mvwprintw(winsure,0,1,"确定");
wrefresh(winsure);
wincancle=newwin(1,6,21,40);
wbkgd(wincancle,COLOR_PAIR(23));
mvwprintw(wincancle,0,1,"退出");
wrefresh(wincancle);
}
if(key==3)
{
while(1)
{
ch=getch();
if(27==ch)
{
delwin(winmain);
delwin(winbar_code);
delwin(winproduct_name);
delwin(winspec);
delwin(winsale_price);
delwin(winpurchase_price);
delwin(winnum);
delwin(windiscount);
return 1;
}
}
}
else
{
freshProductWin(flag,winbar_code,winproduct_name,winunit,winspec,winsale_price,winpurchase_price,winnum,windiscount,winsure,wincancle);
while(1)
{
ch=getch();
if(ch==KEY_DOWN||ch==KEY_UP||ch==KEY_RIGHT||ch==KEY_LEFT)
{
flag=buttonCtl(winsure,wincancle,num,ch,flag);
freshProductWin(flag,winbar_code,winproduct_name,winunit,winspec,winsale_price,winpurchase_price,winnum,windiscount,winsure,wincancle);
}
else if(ch==10||ch==KEY_ENTER)
{
if(flag!=num-2&&flag!=num-1)
{
flag=++flag%num;
freshProductWin(flag,winbar_code,winproduct_name,winunit,winspec,winsale_price,winpurchase_price,winnum,windiscount,winsure,wincancle);
}
else if(flag==num-2)
{
int k=-100,h=-1;
float f=0.0f;
//makelog("debug.log","addproduct 1");
if(strlen(barInfo->product_name)==0)
{
MessageBox("商品名称不能为空!",0);
h=1;
}
if(IsRightBarcode(barInfo->bar_code)!=0)
{
MessageBox("条形码有错!输入如:CN000001",0);
h=1;
}
if(key!=2)
{
if(IsRightBarcode(barInfo->bar_code)==0)
{
if(IsInDB(barInfo->bar_code)==0)
{
MessageBox("商品已经存在",0); /*有错*/
h=1;
}
}
}
if(key==2)
{
if(strcmp(barcode,barInfo->bar_code)!=0)
{
if(IsInDB(barInfo->bar_code)==0)
{
char tmp[100]={0};
sprintf(tmp,"%s商品已经存在",barInfo->bar_code);
MessageBox(tmp,0); /*有错*/
h=1;
}
}
}
// makelog("debug.log","hello");
if(IsRightNum(number)==0)
{
k=atoi(number);
barInfo->num=k;
}
else
{
MessageBox("商品库存输入有错!必须为整型且大于0",0);
h=1;
}
if(IsRightMoney(sale_price)==0)
{
f=atof(sale_price);
barInfo->sale_price=f;
}
else
{
MessageBox("销售价格有错!",0);
h=1;
}
if(IsRightMoney(purchase_price)==0)
{
f=atof(purchase_price);
barInfo->purchase_price=f;
}
else
{
MessageBox("进货价格有错!",0);
h=1;
}
if(IsRightDiscount(discount)==0)
{
f=atof(discount);
barInfo->discount=f;
}
else
{
MessageBox("折扣有错!必须小于等于1",0);
h=1;
}
/*判断条形码是否存在漏了*/
if(h!=1)
{
flag=100;
break;
}
}
else if(flag==num-1)
{
flag=200;
break;
}
}
else if(KEY_BACKSPACE==ch)
{
if(flag==0)
{
int len=strlen(barInfo->bar_code);
if(len>0)
{
barInfo->bar_code[len-1]='\0';
wprintw(winbar_code,"\b \b");
freshProductWin(flag,winbar_code,winproduct_name,winunit,winspec,winsale_price,winpurchase_price,winnum,windiscount,winsure,wincancle);
}
}
if(flag==1)
{
int len=strlen(barInfo->product_name);
if(len>0)
{
barInfo->product_name[len-1]='\0';
wprintw(winproduct_name,"\b \b");
freshProductWin(flag,winbar_code,winproduct_name,winunit,winspec,winsale_price,winpurchase_price,winnum,windiscount,winsure,wincancle);
}
}
if(flag==2)
{
int len=strlen(barInfo->unit);
if(len>0)
{
barInfo->unit[len-1]='\0';
wprintw(winunit,"\b \b");
freshProductWin(flag,winbar_code,winproduct_name,winunit,winspec,winsale_price,winpurchase_price,winnum,windiscount,winsure,wincancle);
}
}
if(flag==3)
{
int len=strlen(barInfo->spec);
if(len>0)
{
barInfo->spec[len-1]='\0';
wprintw(winspec,"\b \b");
freshProductWin(flag,winbar_code,winproduct_name,winunit,winspec,winsale_price,winpurchase_price,winnum,windiscount,winsure,wincancle);
}
}
if(flag==4)
{
int len=strlen(sale_price);
if(len>0)
{
sale_price[len-1]='\0';
wprintw(winsale_price,"\b \b");
freshProductWin(flag,winbar_code,winproduct_name,winunit,winspec,winsale_price,winpurchase_price,winnum,windiscount,winsure,wincancle);
}
}
if(flag==5)
{
int len=strlen(purchase_price);
if(len>0)
{
purchase_price[len-1]='\0';
wprintw(winpurchase_price,"\b \b");
freshProductWin(flag,winbar_code,winproduct_name,winunit,winspec,winsale_price,winpurchase_price,winnum,windiscount,winsure,wincancle);
}
}
if(flag==6)
{
int len=strlen(number);
if(len>0)
{
number[len-1]='\0';
wprintw(winnum,"\b \b");
freshProductWin(flag,winbar_code,winproduct_name,winunit,winspec,winsale_price,winpurchase_price,winnum,windiscount,winsure,wincancle);
}
}
if(flag==7)
{
int len=strlen(discount);
if(len>0)
{
discount[len-1]='\0';
wprintw(windiscount,"\b \b");
freshProductWin(flag,winbar_code,winproduct_name,winunit,winspec,winsale_price,winpurchase_price,winnum,windiscount,winsure,wincancle);
}
}
}
else
{
if(flag==0)
{
int len=strlen(barInfo->bar_code);
if(len<8)
{
barInfo->bar_code[len]=ch;
wprintw(winbar_code,"%c",ch);
freshProductWin(flag,winbar_code,winproduct_name,winunit,winspec,winsale_price,winpurchase_price,winnum,windiscount,winsure,wincancle);
}
}
if(flag==1)
{
int len=strlen(barInfo->product_name);
if(len<30)
{
barInfo->product_name[len]=ch;
wprintw(winproduct_name,"%c",ch);
freshProductWin(flag,winbar_code,winproduct_name,winunit,winspec,winsale_price,winpurchase_price,winnum,windiscount,winsure,wincancle);
}
}
if(flag==2)
{
int len=strlen(barInfo->unit);
if(len<16)
{
barInfo->unit[len]=ch;
wprintw(winunit,"%c",ch);
freshProductWin(flag,winbar_code,winproduct_name,winunit,winspec,winsale_price,winpurchase_price,winnum,windiscount,winsure,wincancle);
}
}
if(flag==3)
{
int len=strlen(barInfo->spec);
if(len<10)
{
barInfo->spec[len]=ch;
wprintw(winspec,"%c",ch);
freshProductWin(flag,winbar_code,winproduct_name,winunit,winspec,winsale_price,winpurchase_price,winnum,windiscount,winsure,wincancle);
}
}
if(flag==4)
{
int len=strlen(sale_price);
if(len<10)
{
sale_price[len]=ch;
wprintw(winsale_price,"%c",ch);
freshProductWin(flag,winbar_code,winproduct_name,winunit,winspec,winsale_price,winpurchase_price,winnum,windiscount,winsure,wincancle);
}
}
if(flag==5)
{
int len=strlen(purchase_price);
if(len<10)
{
purchase_price[len]=ch;
wprintw(winpurchase_price,"%c",ch);
freshProductWin(flag,winbar_code,winproduct_name,winunit,winspec,winsale_price,winpurchase_price,winnum,windiscount,winsure,wincancle);
}
}
if(flag==6)
{
int len=strlen(number);
if(len<4)
{
number[len]=ch;
wprintw(winnum,"%c",ch);
freshProductWin(flag,winbar_code,winproduct_name,winunit,winspec,winsale_price,winpurchase_price,winnum,windiscount,winsure,wincancle);
}
}
if(flag==7)
{
int len=strlen(discount);
if(len<5)
{
discount[len]=ch;
wprintw(windiscount,"%c",ch);
freshProductWin(flag,winbar_code,winproduct_name,winunit,winspec,winsale_price,winpurchase_price,winnum,windiscount,winsure,wincancle);
}
}
}
}
}
delwin(winmain);
delwin(winbar_code);
delwin(winproduct_name);
delwin(winspec);
delwin(winsale_price);
delwin(winpurchase_price);
delwin(winnum);
delwin(windiscount);
if(key!=3)
{
delwin(winsure);
delwin(wincancle);
}
refresh();
if(flag==100)
return 0;
else
return 1;
}
int freshProductWin(int flag,WINDOW *winbar_code,WINDOW *winproduct_name,WINDOW *winunit,WINDOW *winspec,WINDOW *winsale_price,WINDOW *winpurchase_price,WINDOW *winnum,WINDOW *windiscount,WINDOW *winsure,WINDOW *wincancle)
{
switch(flag)
{
case 0:
touchwin(winbar_code);
wrefresh(winbar_code);
break;
case 1:
touchwin(winproduct_name);
wrefresh(winproduct_name);
break;
case 2:
touchwin(winunit);
wrefresh(winunit);
break;
case 3:
touchwin(winspec);
wrefresh(winspec);
break;
case 4:
touchwin(winsale_price);
wrefresh(winsale_price);
break;
case 5:
touchwin(winpurchase_price);
wrefresh(winpurchase_price);
break;
case 6:
touchwin(winnum);
wrefresh(winnum);
break;
case 7:
touchwin(windiscount);
wrefresh(windiscount);
break;
case 8:
wattron(winsure,A_REVERSE);
mvwprintw(winsure,0,0," 确定 ");
wattroff(winsure,A_REVERSE);
wrefresh(winsure);
break;
case 9:
touchwin(wincancle);
wattron(wincancle,A_REVERSE);
mvwprintw(wincancle,0,0," 退出 ");
wattroff(wincancle,A_REVERSE);
wrefresh(wincancle);
break;
}
return 0;
}
int posAddproduct()
{
int n=-100,m=-8,h=-999;
barinfo barInfo;
while(1)
{
memset(barInfo.bar_code,0,sizeof(barInfo.bar_code));
memset(barInfo.product_name,0,sizeof(barInfo.product_name));
memset(barInfo.unit,0,sizeof(barInfo.unit));
memset(barInfo.spec,0,sizeof(barInfo.spec));
barInfo.sale_price=0.0f;
barInfo.purchase_price=0.0f;
barInfo.num=0;
barInfo.discount=1.0;
h=printAddproduct(1,&barInfo);
if(h==0)
{
n=addproduct(&barInfo);
if(n==0)
{
m=MessageBox2("添加成功!是否继续添加?");
if(m==1)
return 1;
}
else
{
m=MessageBox2("添加失败!是否继续添加?");
if(m==1)
return 1;
}
}
else
return 1;
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -