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

📄 posprowin.c

📁 一个不错的POS系统
💻 C
字号:
#include "posProWin.h"
#include "posPublic.h"
#include "pub.h"
#include "posOracle.h"
int state(int flag)
{
	char time[20];
	if(flag==0)
	{
		memset(time,0,sizeof(time));
		g_sale_state=0;
		getSYSTime(time);
		get_seq_trans_id();
		strcpy(saleInfo->time,time);
	}
	return 0;
}
WINDOW * createProWin(int key)
{	
	int saleNo=g_trans_id;
	char time[20]={0};
	char rank[20]={0},systime[20];
	char saleState[20]={0};
	/*g_sale_state=0;*/
	state(key);
	WINDOW * winmain;	
	memset(systime,0,sizeof(systime));
	/*getSYSTime(systime);*/
	strcpy(time,saleInfo->time);
	/*strcpy(saleInfo->time,time);*/
	switch(g_staff_type)
	{		
		case 0:
			strcpy(rank,"管理员");
			break;
		case 1:
			strcpy(rank,"普通职员");
			break;
		case 2:
			strcpy(rank,"经理");
			break;
	}
	switch(g_sale_state)
	{
		case 0:
			strcpy(saleState,"正常");
			break;
		case 1:
			strcpy(saleState,"非正常");
			break;
	}
	/*get_seq_trans_id();*/
	saleNo=g_trans_id;
	
	if(has_colors())
	{
		start_color();
		init_pair(1,COLOR_WHITE,COLOR_BLACK);
		init_pair(2,COLOR_BLACK,COLOR_WHITE);
	}
	winmain=newwin(24,80,0,0);
	box(winmain,0,0);
	wbkgd(winmain,COLOR_PAIR(1));
	mvwprintw(winmain,0,30,"欢迎进入XXX超市");
	wrefresh(winmain);
	DrawLine(winmain,2);
	DrawLine(winmain,4);
	DrawLine(winmain,19);
	DrawLine(winmain,21);
	//sprintf(topmsg,"收银员:");
	mvwprintw(winmain,1,2,"收银员:%s   等级:%s   交易号:%04d   时间:%s",g_staff_name,rank,saleNo,time);
	mvwprintw(winmain,3,1,"序号   条形码    商品名称                规格     单位   单价   数量   金额");
	
	mvwprintw(winmain,20,2,"条形码:");
	mvwprintw(winmain,20,50,"销售状态:%s",saleState);
	mvwprintw(winmain,22,1,"F2:新增明细 F3:删除明细 F4:收银 F5:挂单 F6:取单 F7:撤单 F8:退货 F9:退出");
	wrefresh(winmain);
	return winmain;
}
WINDOW * createCheckWin()
{
		WINDOW * wincheck;
		wincheck=newwin(1,14,20,10);
		wbkgd(wincheck,COLOR_PAIR(2));
		wprintw(wincheck,"CN ");		
		wrefresh(wincheck);
		return wincheck;

}
int proWinIput(WINDOW* wincheck,char * check)
{
	int n=-10;
	char tmp[18]={0};
	
	memset(tmp,0,sizeof(tmp));
	n=get_str(wincheck,check,3,6,0);
	/*sprintf(tmp,"n=%d",n);
	makelog("debug.log",tmp);*/

	return n;
}
int printBarInfo(WINDOW * winmain,char * barCodeWithoutCN,int key)
{
	int n=-10,i=0,no=1,beginrow=1,k=-100;/* 5行*/
	/*static int probeginrow=0;*/
	char  buf[200],barcode[12];
	float sale_price,money;
	memset(buf,0,sizeof(buf));
	memset(barcode,0,sizeof(barcode));
	
	BARINFO barInfo;
	NODE* node=NULL;
	barcode[0]='C';
	barcode[1]='N';
	strcpy(&barcode[2],barCodeWithoutCN);
	Trim(barcode);
	/*makelog("debug.log",barcode);*/	
	char tmp[20]={0};

	switch(key)
	{
		case 1:  /*key_num*/			
			k=IsInList(barcode);
			if(k>0)
			{
				if(k>=beginrow&&k<=beginrow+13)
				{
					g_line=k-beginrow+1;
					g_listnum=k;
				}
				if(k<beginrow&&barInfoList.count>=14)
				{
					g_line=k;
					g_listnum=k;
					beginrow=k;
					no=beginrow;
				}
				if(k<beginrow&&barInfoList.count<14)
				{
					clearWin(winmain ,5,18,1); 
					g_line=k;
					g_listnum=k;
					beginrow=k;
					no=beginrow;
				}
				if(k>beginrow+13)
				{
					g_line=14;
					g_listnum=k;
					beginrow=beginrow+(k-beginrow-13);
					no=beginrow;

				}
			}
			else
			{
				n=getBarInfo(barcode);
				if(0==n)
				{
					
					makelog("debug.log","yes");
					if(barInfoList.count<=14)
					{
						g_line=barInfoList.count;
						g_listnum=barInfoList.count;
					}
					/*g_line++;
					g_listnum++;*/
					else if(barInfoList.count>14)
					{
						g_line=14;
						g_listnum=barInfoList.count;
						beginrow=barInfoList.count-13;
						no=beginrow;
					}
				}
				else if(-1==n)
				{
					MessageBox("没有这种商品 ex:000001",0);
				}
			}
			break;
		case 2:    /*key_up*/
			if(1==g_line&&g_listnum==1)
				return 1;
			else if(1==g_line&&g_listnum!=1)
			{			
				g_listnum--;
				beginrow=g_listnum;
				no=beginrow;				
			}
			else if(barInfoList.count>0)
			{
				sprintf(tmp,"g_listnum=%d",g_listnum);
				makelog("debug.log",tmp);
				sprintf(tmp,"g_line=%d",g_line);
				makelog("debug.log",tmp);
				beginrow=g_listnum-g_line+1;
				no=beginrow;
				g_listnum--;
				g_line--;			
			}
			break;
		case 3:           /*key_down*/
			if(14==g_line&&g_listnum!=barInfoList.count)
			{
				g_listnum++;
				beginrow=g_listnum-13;
				no=beginrow;
			}
			else if(14==g_line||g_line==barInfoList.count)
				return 2;
			else if(g_listnum==barInfoList.count)
				return 3;
			else if(barInfoList.count>0)
			{
				beginrow=g_listnum-g_line+1;
				no=beginrow;
				g_listnum++;
				g_line++;
			}
			break;
		case 4:  /*新增明细*/
			beginrow=(g_listnum-g_line)+1;
			no=beginrow;
			break;
		case 5:  /*删除明细*/
			beginrow=(g_listnum-g_line)+1;
			no=beginrow;
			break;
		case 6:
			g_line=barInfoList.count;
			g_listnum=barInfoList.count;

	}
	if(barInfoList.count>0)
	{
		/*probeginrow=beginrow;*/
		/*if(barInfoList.count>14)
		{	
			if(probeginrow!=beginrow)
			clearWin(winmain ,5,18,1); 
		}*/
		/*g_line=barInfoList.count;*/
		/*int iend=(barInfoList.count<=14) ? barInfoList.count :beginrow+13;*/
		int iend=(barInfoList.count-beginrow<13)? barInfoList.count :beginrow+13;
	/*	if(beginrow!=1&&5==key)
		{
			iend=barInfoList.count;
		}*/
		sprintf(tmp,"beginrow=%d",beginrow);
		makelog("debug.log",tmp);
		for (i=beginrow; i<=iend; i++)
		{			
			node=barInfoList.get_node_by_index(&barInfoList,i);
		
			if (node!=NULL)
			{	
				/*makelog("debug.log","ok");*/
				barInfo=(barinfo *)node->data;
				/*g_listnum++;*/
			}
			/*sprintf(tmp,"i=%d,salenum=%d",i,barInfo->salenum);
			makelog("debug.log",tmp);*/
			sale_price=barInfo->sale_price*barInfo->discount;
			money=sale_price*barInfo->salenum;
				
			Trim(barInfo->bar_code);
			Trim(barInfo->product_name);
			Trim(barInfo->spec);
			Trim(barInfo->unit);
			/*makelog("debug.log",barInfo->bar_code);
			makelog("debug.log",barInfo->product_name);
			makelog("debug.log",barInfo->spec);
			makelog("debug.log",barInfo->unit);*/
			sprintf(buf," %-6d%-10s%-24s%-10s%-6s%-9.2f%-5d%-6.2f",no,barInfo->bar_code,barInfo->product_name,barInfo->spec,barInfo->unit,sale_price,barInfo->salenum,money);
			if(i-beginrow+1==g_line)
			{
				wattron(winmain,A_REVERSE);
				mvwprintw(winmain,5+i-beginrow,1,"%s",buf);
				wattroff(winmain,A_REVERSE);
			}
			else
			{
				mvwprintw(winmain,5+i-beginrow,1,"%s",buf);
			}
					
			no++;			
		}
		wrefresh(winmain);	
	}
	if(5==key&&barInfoList.count-beginrow<=13)
	{
		clearWin(winmain ,barInfoList.count-beginrow+6,barInfoList.count-beginrow+6,1); 
		wrefresh(winmain);
	}
	if(0==barInfoList.count)
	{
		clearWin(winmain ,5,5,1); 
		wrefresh(winmain);
	}	
	
	/*else if(-1==n)
		MessageBox("没有这中商品",0);*/
	return 0;
}
int IsInList(char * barcode)
{
	NODE * node;
	BARINFO barInfo;
	int i=0;
	/*node=barInfoList.get_node_by_key(&barInfoList,barcode,(int(*)(void *,void *))condition_product);
	if(node==barInfoList.head)
		return 0;
	else
		return 1;*/
	for(i=1;i<=barInfoList.count;i++)
	{
		node=barInfoList.get_node_by_index(&barInfoList,i);
		
		if (node!=NULL)
		{			
			barInfo=(barinfo *)node->data;
				
		}
		if(strcmp(barInfo->bar_code,barcode)==0)
		{
			barInfo->salenum++;

			return i;
		}
	}
	return -1;
}

⌨️ 快捷键说明

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