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

📄 background.c

📁 福建博洋教育C/C++软件项目实战:POS收银系统
💻 C
📖 第 1 页 / 共 5 页
字号:
						radixPoint--;
					}
					getyx(txtbox[4],col[4],row[4]);
					mvwaddch(txtbox[4],col[4],--row[4],' ');			
					price[--cnt[4]]='\0';
					wmove(txtbox[4],0,row[4]);
					wrefresh(txtbox[4]);
				}				
				break;
			case KEY_F(1):
				return;
			case KEY_UP:
				goto FOUR;
				break;
			case KEY_DOWN:
			case '\n':
				goto SIX;
			default:
				if ( ((ch>='0'&&ch<='9') || (ch=='.'&&radixPoint==0)) && (cnt[4]<12) )
				{				
					if (ch=='.')
					{
						radixPoint++;
					}				
					row[4]++;
					waddch(txtbox[4],ch);
					price[cnt[4]]=ch;
					price[++cnt[4]]='\0';					
					wrefresh(txtbox[4]);				
					break;
				}	
			}
		}
		//商品进货价格
	SIX:
		wmove(txtbox[5],0,0);
		wprintw(txtbox[5],purchasePrice);	
		wrefresh(txtbox[5]);
		radixPoint=0;
		while(1)
		{
			ch=wgetch(txtbox[5]);
			switch (ch)
			{
			case  KEY_BACKSPACE:  //按退格键盘
				if (cnt[5]>0)
				{
					if (code[cnt[4]-1]=='.')
					{
						radixPoint--;
					}
					getyx(txtbox[5],col[5],row[5]);
					mvwaddch(txtbox[5],col[5],--row[5],' ');			
					purchasePrice[--cnt[5]]='\0';
					wmove(txtbox[5],0,row[5]);
					wrefresh(txtbox[5]);
				}				
				break;
			case KEY_F(1):
				return;
			case KEY_UP:
				goto FIVE;
				break;
			case KEY_DOWN:
			case '\n':
				goto SEVEN;
			default:
				if ( ((ch>='0'&&ch<='9') || (ch=='.'&&radixPoint==0)) && (cnt[5]<12) )
				{				
					if (ch=='.')
					{
						radixPoint++;
					}	
					row[5]++;
					waddch(txtbox[5],ch);
					purchasePrice[cnt[5]]=ch;
					purchasePrice[++cnt[5]]='\0';					
					wrefresh(txtbox[5]);				
					break;
				}	
			}
		}
		//商品折扣
	SEVEN:
		wmove(txtbox[6],0,0);
		wprintw(txtbox[6],discount);	
		wrefresh(txtbox[6]);
		radixPoint=0;
		while(1)
		{
			ch=wgetch(txtbox[6]);
			switch (ch)
			{
			case  KEY_BACKSPACE:  //按退格键盘
				if (cnt[6]>0)
				{
					if (code[cnt[4]-1]=='.')
					{
						radixPoint--;
					}
					getyx(txtbox[6],col[6],row[6]);
					mvwaddch(txtbox[6],col[6],--row[6],' ');			
					discount[--cnt[6]]='\0';
					wmove(txtbox[6],0,row[6]);
					wrefresh(txtbox[6]);
				}				
				break;
			case KEY_F(1):
				return;
			case KEY_UP:
				goto SIX;
				break;
			case KEY_DOWN:
			case '\n':
				goto EIGHT;
			default:
				if ( ((ch>='0'&&ch<='9') || (ch=='.'&&radixPoint==0)) && (cnt[6]<4) )
				{	
					if (ch=='.')
					{
						radixPoint++;
					}
					row[6]++;
					waddch(txtbox[6],ch);
					discount[cnt[6]]=ch;
					discount[++cnt[6]]='\0';					
					wrefresh(txtbox[6]);				
					break;
				}	
			}
		}
		//商品数量
	EIGHT:
		wmove(txtbox[7],0,0);
		wprintw(txtbox[7],count);	
		wrefresh(txtbox[7]);
		while(1)
		{
			ch=wgetch(txtbox[7]);
			switch (ch)
			{
			case  KEY_BACKSPACE:  //按退格键盘
				if (cnt[7]>0)
				{
					getyx(txtbox[7],col[7],row[7]);
					mvwaddch(txtbox[7],col[7],--row[7],' ');			
					count[--cnt[7]]='\0';
					wmove(txtbox[7],0,row[7]);
					wrefresh(txtbox[7]);
				}			
				break;
			case KEY_F(1):
				return;
			case KEY_UP:
				goto SEVEN;
				break;
			case KEY_DOWN:
			case '\n':
				goto ENSURE;
			default:
				if ( ((ch>='1'&&ch<='9') || (ch=='0'&&cnt[7]!=0)) && (cnt[7]<5) )
				{	
					row[7]++;
					waddch(txtbox[7],ch);
					count[cnt[7]]=ch;
					count[++cnt[7]]='\0';					
					wrefresh(txtbox[7]);				
					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;
			case KEY_UP:
				wattroff(dialog[1],A_REVERSE);
				mvwprintw(dialog[1],1,2, "确定");
				wrefresh(dialog[1]);					
				goto EIGHT;
			case KEY_RIGHT:
				wattroff(dialog[1],A_REVERSE);
				mvwprintw(dialog[1],1,2, "确定");
				wrefresh(dialog[1]);			
				goto CANCEL;
			case '\n':	
				//获取所有输入数据
				{	
					if (cnt[0]!=8)
					{
						Message("请输入以CN开头的8位条形码",10,40);	
						scr_restore("addcommodity.scr");
						code[2] = '\0';						
						col[0] = 0;							
						cnt[0] = 2;
						row[0] = 2;	
						goto FIRST;
					}
					if (cnt[1]==0)
					{
						scr_dump("addproduct.scr");
						Message("商品名不能为空",10,40);
						scr_restore("addproduct.scr");
						goto SECOND;
					}
					if (cnt[2]==0)
					{
						scr_dump("addproduct.scr");
						Message("单位不能为空",10,40);	
						scr_restore("addproduct.scr");
						goto THIRD;
					}
					if (cnt[3]==0)
					{
						scr_dump("addproduct.scr");
						Message("规格不能为空",10,40);
						scr_restore("addproduct.scr");
						goto FOUR;
					}
					if (cnt[4]==0)
					{
						scr_dump("addproduct.scr");
						Message("请输入售价",10,40);
						scr_restore("addproduct.scr");
						goto FIVE;
					}
					if (cnt[5]==0)
					{
						scr_dump("addproduct.scr");
						Message("请输入进货价格",10,40);
						scr_restore("addproduct.scr");
						goto SIX;
					}
					if (cnt[6]==0)
					{
						scr_dump("addproduct.scr");
						Message("请输入折扣",10,40);
						scr_restore("addproduct.scr");
						goto SEVEN;
					}
					if (cnt[7]==0)
					{
						scr_dump("addproduct.scr");
						Message("请输入数量",10,40);
						scr_restore("addproduct.scr");
						goto EIGHT;
					}					
					PRODUCT *pro_info=(PRODUCT *)malloc(sizeof(PRODUCT));
					strcpy(pro_info->bar_code,code);
					strcpy(pro_info->product_name,name);
					strcpy(pro_info->unit,unit);
					strcpy(pro_info->spec,spec);
					pro_info->sale_price = atof(price); 
					pro_info->purchase_price = atof(purchasePrice); 
					pro_info->discount = atof(discount);
					pro_info->count = atoi(count);
					//对输入的折扣进行判断折扣不允许大于1
					if (pro_info->discount>1)
					{						
						Message("您输入的折扣大于1",10,40);
						scr_restore("addcommodity.scr");
						code[2] = '\0';
						name[0] = '\0';
						unit[0] = '\0';
						spec[0] = '\0';
						price[0] = '\0';
						purchasePrice[0] = '\0';
						discount[0] = '\0';
						count[0] = '\0';
						for ( i=0; i<=7; i++ )
						{
							col[i] = 0;
							cnt[i] = 0;
							row[i] = 0;
							if (i==0)
							{
								cnt[i] = 2;
								row[i] = 2;
							}							
						}						
						goto FIRST;
					}
					//判断数据库中是否存在商品条形码
					res=code_in_product(pro_info);
					if (res==-1)
					{
						Message("数据库出错",10,40);
						endwin();
						exit(1);
					}
					if (res==1)
					{
						Message("此商品已存在",10,40);
						scr_restore("addcommodity.scr");
						code[2] = '\0';
						name[0] = '\0';
						unit[0] = '\0';
						spec[0] = '\0';
						price[0] = '\0';
						purchasePrice[0] = '\0';
						discount[0] = '\0';
						count[0] = '\0';
						for ( i=0; i<=7; i++ )
						{
							col[i] = 0;
							cnt[i] = 0;
							row[i] = 0;
							if (i==0)
							{
								cnt[i] = 2;
								row[i] = 2;
							}							
						}						
						goto FIRST;
					}
					//插入数据库
					res=insert_product(pro_info);
					if (res==-1)
					{
						Message("数据库出错",10,40);
						endwin();
						exit(1);
					}
					if (res==0)
					{
						Message("添加商品信息到数据库出错",10,40);
						endwin();
						exit(1);
					}
				}  
				return;						
			}			
		}
	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;
			case KEY_LEFT:		
				wattroff(dialog[2],A_REVERSE);
				mvwprintw(dialog[2],1,2, "取消");
				wrefresh(dialog[2]);
				goto ENSURE;		
			case '\n':
				return;						
			}
		}
}
/*======================================================
function:修改商品窗口
=======================================================*/
void modify_commodity_win()
{
	WINDOW *dialog[3]={NULL};
	print_dialog_box(24,80,"欢迎光临XXX超市",5,dialog);
	mvwprintw(dialog[0],6,36,"修改商品");
	mvwprintw(dialog[0],10,11,"条形码");
	wrefresh(dialog[0]);
	WINDOW *txtbox={NULL};
	char firstStr[9]="CN";
	int cnt=2;
	int col=0;
	int row=2;
	int res=0;
	int ch=0;
	txtbox=create_win(1,42,10,20);
	keypad(txtbox,TRUE);
	keypad(dialog[1],TRUE);
	keypad(dialog[2],TRUE);
	wbkgd(txtbox,COLOR_PAIR(1));
	wrefresh(txtbox);
	scr_dump("modifycommodity.scr");
	FIRST:
		wmove(txtbox,0,0);
		wprintw(txtbox,firstStr);	
		wrefresh(txtbox);
		while(1)
		{
			ch=wgetch(txtbox);
			switch (ch)
			{
			case  KEY_BACKSPACE:  //按退格键盘
				if (cnt>2)
				{
					getyx(txtbox,col,row);
					mvwaddch(txtbox,col,--row,' ');			
					firstStr[--cnt]='\0';
					wmove(txtbox,0,row);
					wrefresh(txtbox);
				}				
				break;
			case KEY_F(1):
				return;			
			case KEY_UP:
				break;
			case KEY_DOWN:
			case '\n':					
				goto ENSURE;
			default:
				if (ch>='0'&&ch<='9' && cnt<8)
				{
					row++;
					waddch(txtbox,ch);
					firstStr[cnt]=ch;
					firstStr[++cnt]='\0';					
					wrefresh(txtbox);				
					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;	
			case KEY_UP:
				wattroff(dialog[1],A_REVERSE);
				mvwprintw(dialog[1],1,2, "确定");
				wrefresh(dialog[1]);					
				goto FIRST;
			case KEY_RIGHT:
				wattroff(dialog[1],A_REVERSE);
				mvwprintw(dialog[1],1,2, "确定");
				wrefresh(dialog[1]);			
				goto CANCEL;
			case '\n':	
				//验证输入的条形码是否存在,存在继续执行,不存在给提示			
				{
					PRODUCT *pro_info=(PRODUCT *)malloc(sizeof(PRODUCT));
					strcpy(pro_info->bar_code,firstStr);					
					//判断数据库中是否存在商品条形码
					res= get_product_info(pro_info);					
					if (res==-1)
					{
						Message("数据库出错",10,40);
						endwin();
						exit(1);
					}
					if (res==0)
					{
						Message("没有这种商品信息",10,40);
						scr_restore("modifycommodity.scr");
						firstStr[2] = '\0';					
						col = 0;							
						cnt = 2;
						row = 2;									
						goto FIRST;
					}
					//打印新窗口并将所有数据打印出来	
					modify_commodity_data_win(pro_info);
				}
				return;						
			}			
		}
	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;	
			case KEY_RIGHT:
				break;
			case KEY_LEFT:		
				wattroff(dialog[2],A_REVERSE);
				mvwprintw(dialog[2],1,2, "取消");
				wrefresh(dialog[2]);
				goto ENSURE;		
			case '\n':
				return;						
			}
		}
}
/*===============================================================
function:修改商品数据窗口
==================================================================*/
void modify_commodity_data_win(PRODUCT *pro_info)
{
	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,"规格:");
	mvwprintw(dialog[0],12,13,"售价:");
	mvwprintw(dialog[0],14,9,"进货价格:");
	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]);
	}
	scr_dump("modifycommoditydata.scr");
	//商品名称窗口
	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)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -