⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 posaddproduct.c

📁 一个不错的POS系统
💻 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 + -