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

📄 background.c

📁 福建博洋教育C/C++软件项目实战:POS收银系统
💻 C
📖 第 1 页 / 共 5 页
字号:
				{
					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:				
				break;
			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;
				}	
			}
		}
	//商品规格窗口
	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;
				}	
			}
		}
		//商品售价窗口
	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]=='.')
					{
						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_DOWN:
				break;
			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[1]==0)
				{
					scr_dump("modifyproduct.scr");
					Message("商品名不能为空",10,40);
					scr_restore("modifyproduct.scr");
					goto SECOND;
				}
				if (cnt[2]==0)
				{
					scr_dump("modifyproduct.scr");
					Message("单位不能为空",10,40);
					scr_restore("modifyproduct.scr");
					goto THIRD;
				}
				if (cnt[3]==0)
				{
					scr_dump("modifyproduct.scr");
					Message("规格不能为空",10,40);
					scr_restore("modifyproduct.scr");
					goto FOUR;
				}
				if (cnt[4]==0)
				{
					scr_dump("modifyproduct.scr");
					Message("请输入售价",10,40);
					scr_restore("modifyproduct.scr");
					goto FIVE;
				}
				if (cnt[5]==0)
				{
					scr_dump("modifyproduct.scr");
					Message("请输入进货价格",10,40);
					scr_restore("modifyproduct.scr");
					goto SIX;
				}
				if (cnt[6]==0)
				{
					scr_dump("modifyproduct.scr");
					Message("请输入折扣",10,40);
					scr_restore("modifyproduct.scr");
					goto SEVEN;
				}
				if (cnt[7]==0)
				{
					scr_dump("modifyproduct.scr");
					Message("请输入数量",12,42);
					scr_restore("modifyproduct.scr");
					goto EIGHT;
				}
				//插入数据库
				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);
				if ( pro_info->purchase_price > pro_info->sale_price)
				{
					Message("进货价格大于售价",10,40);
					scr_restore("modifycommoditydata.scr");	
					purchasePrice[0] = '\0';
					col[5] = 0;							
					cnt[5] = 0;
					row[5] = 0;
					wclear(txtbox[5]);
					wrefresh(txtbox[5]);
					goto SIX;
				}
				res=update_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 delete_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("deletecommodity.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_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("deletecommodity.scr");
						firstStr[2] = '\0';					
						col = 0;							
						cnt = 2;
						row = 2;									
						goto FIRST;
					}
					//打印新窗口并将所有数据打印出来
					if ( delete_commodity_data_win(pro_info) )
					{
						return;
					}
					scr_restore("deletecommodity.scr");
					firstStr[2] = '\0';					
					col = 0;							
					cnt = 2;
					row = 2;									
					goto FIRST;				
				}									
			}			
		}
	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:删除商品数据窗口
===============================================================*/
int delete_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,"进货价格:");

⌨️ 快捷键说明

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