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

📄 possale.c

📁 一个不错的POS系统
💻 C
字号:
#include "posSale.h"
#include <stdlib.h>
#include "pub.h"
#include "posOracle.h"
int checkout()
{
	WINDOW * winmain,*winmoney,*winmoneypay,*winmoneyreturn,*winsure,*wincancle;
	float money=0.0f,moneyreturn,moneypay;
	char str[10],buf[40]={0};
	int i=0,num=3,flag=0,ch,barNum;

	BARINFO barInfo;
	NODE * node;
	memset(str,0,sizeof(str));
	for(i=1;i<=barInfoList.count;i++)
	{
		node=barInfoList.get_node_by_index(&barInfoList,i);
		if (node!=NULL)
		{			
			barInfo=(barinfo *)node->data;		
		}
		money+=barInfo->salenum*barInfo->sale_price*barInfo->discount;
		barNum=GetProductNum(barInfo->bar_code);
		if(barInfo->salenum>barNum)
		{
			char tmp[100]={0};
			sprintf(tmp,"商品%s数量超过了库存还剩库存为%d",barInfo->product_name,barNum);
			MessageBox(tmp,0);
			return 1;
		}
	}
	saleInfo->money=money;
	scr_dump("scr_save.scr2");	
	
	winmain=newwin(10,40,8,20);
	box(winmain,0,0);
	if(has_colors())
	{
		init_pair(9,COLOR_BLACK,COLOR_MAGENTA);
		init_pair(10,COLOR_BLACK,COLOR_WHITE);
	}
	wbkgd(winmain,COLOR_PAIR(9));
	mvwprintw(winmain,0,18,"收银");	
	mvwprintw(winmain,3,5,"实收款:");
	/*mvwprintw(winmain,5,5,"找零:");*/
	wrefresh(winmain);

	winmoney=newwin(1,30,9,25);
	wbkgd(winmoney,COLOR_PAIR(10));
	mvwprintw(winmoney,0,2,"应付款:%4.2f",money);
	wrefresh(winmoney);
	

	winsure=newwin(1,6,15,25);
	wbkgd(winsure,COLOR_PAIR(10));
	mvwprintw(winsure,0,1,"确定");
	wrefresh(winsure);

	wincancle=newwin(1,6,15,48);
	wbkgd(wincancle,COLOR_PAIR(10));
	mvwprintw(wincancle,0,1,"取消");
	wrefresh(wincancle);

	/*winmoneyreturn=newwin(1,15,13,36);
	wbkgd(winmoneyreturn,COLOR_PAIR(10));		
	wrefresh(winmoneyreturn);*/
	
	winmoneypay=newwin(1,15,11,36);
	wbkgd(winmoneypay,COLOR_PAIR(10));	
	wrefresh(winmoneypay);



	while(1)
	{
		ch=getch();
		if(ch==KEY_DOWN||ch==KEY_UP||ch==KEY_LEFT||ch==KEY_RIGHT)
		{
			/*makelog("debug.log","left up down right");*/
			flag=buttonCtl(winsure,wincancle,num,ch,flag);
			freshSaleWin(flag,winmoneypay,winsure, wincancle);
		}
		else if(ch==10||ch==KEY_ENTER)
		{
			/*makelog("debug.log","enter");*/
			if(0==flag)
			{				
				flag=++flag%num;
				freshSaleWin(flag,winmoneypay,winsure, wincancle);
			}
			else if(flag==1)
			{			
				moneypay=atof(str);
				if(moneypay>0&&moneypay>money)
				{	
					if(IsRightMoney(str)==0)
					{
						moneypay=atof(str);	
						saleInfo->moneypay=moneypay;
						moneyreturn=moneypay-money;
						saleInfo->moneyreturn=moneyreturn;
						sprintf(buf,"应找金额为:%.2f",moneyreturn);
						MessageBox(buf,0);
						flag=10;
						break;
					}
					else
					{
						MessageBox("金额输入不正确",0);					
						wrefresh(winsure);
					}				
				}
				else 
				{
					MessageBox("实收款必须大于应付款",0);					
					wrefresh(winsure);
				}
			}				
			else if(flag==num-1)
			{
				flag=20;
				break;
			}
		}	
		
		else if(KEY_BACKSPACE==ch)
		{
			/*makelog("debug.log","backspace ");*/
			if(flag==0)
			{
				int len=strlen(str);
				if(len>0)
				{
					str[len-1]='\0';					
					wprintw(winmoneypay,"\b \b");
					freshSaleWin(flag,winmoneypay,winsure, wincancle);
				}
			}
			
		}
		else if(isdigit(ch)||ch=='.')
		{		
			if(flag==0)
			{
				int len=strlen(str);
				if(len<6)
				{
					
					str[len]=ch;
					wprintw(winmoneypay,"%c",ch);
					freshSaleWin(flag,winmoneypay,winsure, wincancle);
				}
			}
			
		}		
	
	}

	if(10==flag)
	{
		int h;		
		h=checkOut();
		barInfoList.del(&barInfoList);
		if(h==0)
			MessageBox("收银成功",0);
	}
	
	
	wclear(winmain);	
	wrefresh(winmain);	
	delwin(winmoney);	
	delwin(winsure);	
	delwin(winmoneypay);
	delwin(wincancle);	
	delwin(winmain);
	scr_restore("scr_save.scr2");
	
	refresh();
	
	if(20==flag)
		return 1;
	
	return 0;
}


int freshSaleWin(int flag,WINDOW * winnewnum,WINDOW * winsure,WINDOW * wincancle)
{
	switch(flag)
	{
		case 0:
			touchwin(winnewnum);
			wrefresh(winnewnum);
			break;		
		case 1:	
			wattron(winsure,A_REVERSE);
			mvwprintw(winsure,0,0," 确定 ");
			wattroff(winsure,A_REVERSE);
			wrefresh(winsure);
			break;
		case 2:
			touchwin(wincancle);
			wattron(wincancle,A_REVERSE);
			mvwprintw(wincancle,0,0," 退出 ");
			wattroff(wincancle,A_REVERSE);
			wrefresh(wincancle);
			break;
	}
	return 0;
}

⌨️ 快捷键说明

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