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

📄 posrecordquerybydate.c

📁 一个不错的POS系统
💻 C
字号:
#include "posRecordQueryByDate.h"
#include "posPublic.h"
#include "posBackOracle.h"
#include "pub.h"
#include <ctype.h>
#include <string.h>
int PrintRecordQueryByDate(int key,char * begindate,char * enddate)
{
	int flag=0,ch,num=4;
	
	WINDOW * winmain,*winbegindate,*winenddate,*winsure,*wincancle;
	if(has_colors())
	{
		start_color();
		init_pair(31,COLOR_WHITE,COLOR_BLUE);
		init_pair(32,COLOR_BLACK,COLOR_WHITE);
		
	}
	winmain=newwin(24,80,0,0);
	box(winmain,0,0);
	wbkgd(winmain,COLOR_PAIR(31));
	switch(key)
	{
		case 1:
			mvwprintw(winmain,2,30,"按 日 期 查 询");
			break;
		case 2:
			mvwprintw(winmain,2,30,"按 员 工 ID 查 询");
			break;
		
	}
	mvwprintw(winmain,5,18,"开始日期:"); 
	mvwprintw(winmain,5,52,"格式如:20080831"); 
	mvwprintw(winmain,7,18,"结束日期:"); 
	mvwprintw(winmain,7,52,"格式如:20080831");  
	wrefresh(winmain);

	winbegindate=newwin(1,20,5,30);	
	wbkgd(winbegindate,COLOR_PAIR(32));
	wrefresh(winbegindate);

	winenddate=newwin(1,20,7,30);	
	wbkgd(winenddate,COLOR_PAIR(32));
	wrefresh(winenddate);


	winsure=newwin(1,6,11,20);	
	wbkgd(winsure,COLOR_PAIR(32));
	mvwprintw(winsure,0,1,"确定");
	wrefresh(winsure);

	wincancle=newwin(1,6,11,45);	
	wbkgd(wincancle,COLOR_PAIR(32));
	mvwprintw(wincancle,0,1,"退出");
	wrefresh(wincancle);
	while(1)
	{
		freshRecQueWIn(flag,winbegindate,winenddate,winsure,wincancle);
		ch=getch();
		if(ch==KEY_DOWN||ch==KEY_UP||ch==KEY_RIGHT||ch==KEY_LEFT)
		{
			flag=buttonCtl(winsure,wincancle,num,ch,flag);
			freshRecQueWIn(flag,winbegindate,winenddate,winsure,wincancle);
	
		}
		if(isdigit(ch))
		{
			if(flag==0)
			{
				int len=strlen(begindate);
				if(len<8)
				{
					begindate[len]=ch;
					wprintw(winbegindate,"%c",ch);
					freshRecQueWIn(flag,winbegindate,winenddate,winsure,wincancle);
				}
			}
			if(flag==1)
			{
				int len=strlen(enddate);
				if(len<8)
				{
					enddate[len]=ch;
					wprintw(winenddate,"%c",ch);
					freshRecQueWIn(flag,winbegindate,winenddate,winsure,wincancle);
				}
			}
		}
		else if(ch==KEY_BACKSPACE)
		{
							
				if(flag==0)
				{
					int len=strlen(begindate);
					if(len>0)
					{
						begindate[len-1]='\0';					
						wprintw(winbegindate,"\b \b");
						freshRecQueWIn(flag,winbegindate,winenddate,winsure,wincancle);	
					}
				}
				if(flag==1)
				{
					int len=strlen(enddate);
					if(len>0)
					{
						enddate[len-1]='\0';					
						wprintw(winenddate,"\b \b");
						freshRecQueWIn(flag,winbegindate,winenddate,winsure,wincancle);	
					}
				}
			
		}
		if(ch==KEY_ENTER||ch==10)
		{
			
			if(flag!=num-2&&flag!=num-1)
			{
				flag=++flag%num;
				freshRecQueWIn(flag,winbegindate,winenddate,winsure,wincancle);			
			}
			else if(flag==num-2)
			{	
				if(strlen(begindate)==0)
				{
					MessageBox("开始日期不能为空",0);
				}
				else if(strlen(enddate)==0)
				{
					MessageBox("结束日期不能为空",0);
				}
				else if(IsRightDate(begindate)==1)
				{
					
					MessageBox("开始日期必须输入8为数字",0);
				}
				else if(IsRightDate(enddate)==1)
				{
					
					MessageBox("结束日期必须输入8为数字",0);
				}
				
				else if(IsRightDate(begindate)==2||IsRightDate(enddate)==2)
				{
					MessageBox("日期必须再1900.01.01到2050.12.31",0);
				}
				else if(IsRightDate(begindate)==3||IsRightDate(enddate)==3)
				{
					MessageBox("日期有错不符常理!",0);
				}
				else if(strcmp(begindate,enddate)>0)
				{
					
					MessageBox("结束日期必须大于开始日期",0);
				}
				else
				{
					flag=100;
					break;
				}
				
			}
			else if(flag==num-1)
			{
				flag=200;
				break;
			}
		}
	}
	
	delwin(winmain);
	delwin(winbegindate);
	delwin(winenddate);
	delwin(winsure);
	delwin(wincancle);
	if(flag==100)
		return 0;
	else 
		return 1;
}


int freshRecQueWIn(int flag,WINDOW * winbegindate,WINDOW * winenddate,\
	WINDOW* winsure,WINDOW* wincancle)
{
	switch(flag)
	{
		case 0:
			touchwin(winbegindate);
			wrefresh(winbegindate);
			break;		
		case 1:
			touchwin(winenddate);
			wrefresh(winenddate);
			break;	
		case 2:			
			wattron(winsure,A_REVERSE);
			mvwprintw(winsure,0,0," 确定 ");
			wattroff(winsure,A_REVERSE);
			wrefresh(winsure);
			break;
		case 3:
			touchwin(wincancle);
			wattron(wincancle,A_REVERSE);
			mvwprintw(wincancle,0,0," 退出 ");
			wattroff(wincancle,A_REVERSE);
			wrefresh(wincancle);
			break;
	}
	return 0;
}
int PrintRecordByDate(int key)
{
	NODE * node;
	SALETABLE saleInfo;
	char buffer[100],num[10];
	memset(buffer,0,sizeof(buffer));
	memset(num,0,sizeof(num));
	int count=saleInfoList.count,i=1,begin=1,end=1;
	WINDOW * winmain,*winmid,*winsure,*wincancle,*winpage;
	int ch,curpage=1,pagenum=15,page=1;	
	if(has_colors())
	{
		start_color();
		init_pair(35,COLOR_WHITE,COLOR_BLUE);
		init_pair(36,COLOR_BLACK,COLOR_WHITE);
		
	}
	winmain=newwin(24,80,0,0);
	box(winmain,0,0);
	wbkgd(winmain,COLOR_PAIR(35));	
	switch(key)
	{
		case 1:
			mvwprintw(winmain,2,30,"按 日 期 查 询");
			break;
		case 2:
			mvwprintw(winmain,2,30,"按 员 工 ID 查 询");
			break;	
	}
	
	mvwprintw(winmain,4,1,"销售单号"); 
	mvwprintw(winmain,4,20,"交易号");
	mvwprintw(winmain,4,27,"员工编号");
	mvwprintw(winmain,4,36,"日期");
	mvwprintw(winmain,4,48,"付款");
	mvwprintw(winmain,4,54,"实收款");
	mvwprintw(winmain,4,63,"金额");
	mvwprintw(winmain,4,69,"找零");
	mvwprintw(winmain,4,74,"状态");
	mvwprintw(winmain,22,40,"要跳转的页数:");
	wrefresh(winmain);

	winmid=newwin(16,78,5,1);
	wbkgd(winmid,COLOR_PAIR(36));
	wrefresh(winmid);		
	
	wincancle=newwin(1,12,22,25);	
	wbkgd(wincancle,COLOR_PAIR(36));
	mvwprintw(wincancle,0,1,"ESC键退出");
	wrefresh(wincancle);

	winsure=newwin(1,12,22,10);	
	wbkgd(winsure,COLOR_PAIR(36));
	mvwprintw(winsure,0,1,"方向键翻页");
	wrefresh(winsure);

	winpage=newwin(1,4,22,55);	
	wbkgd(winpage,COLOR_PAIR(36));	
	wrefresh(winpage);
	
	while(1)
	{
		page=(count-1)/pagenum+1;
		if(curpage<=page)
		{
			begin=(curpage==1)?1:(curpage-1)*pagenum+1;
			if(curpage==page&&count<=pagenum*curpage)
			{
				end=count;
			}
			else
			{				
				end=pagenum*curpage;
			}
		}
		for(i=begin;i<=end;i++)
		{		
			node=saleInfoList.get_node_by_index(&saleInfoList,i);
			if(node!=NULL)
			{
				saleInfo=(SALETABLE)node->data;		
			}
			
			sprintf(buffer,"%-20s%-6s%-8s,%-11s%-7.2f%-7.2f%-7.2f%-6.2f%-2d",
				saleInfo->sale_id,saleInfo->trans_id,saleInfo->staff_id,
				saleInfo->sale_date,saleInfo->given_sum,saleInfo->real_sum,
				saleInfo->sale_money,saleInfo->change,saleInfo->sale_state);
			mvwprintw(winmid,i%pagenum,1,"%s",buffer);
			wrefresh(winmid);
		}
		ch=getch();
		if(ch==KEY_DOWN)
		{
			if(curpage==page-1)
				clearWin(winmid,5,20,1);
			if(curpage==page)
				MessageBox("已经是最后一页",0);
			if(curpage<page)
				curpage++;
		}
		else if(ch==KEY_UP)
		{
			if(curpage==1)
				MessageBox("已经是第一页",0);
			if(curpage>1)
				curpage--;
		}
		else if(ch==KEY_ENTER||ch==10)
		{
			touchwin(winpage);
			wrefresh(winpage);			
		}
		/*else if(isdigit(ch))
		{
			
		}*/
		else if(ch==27)
		{		
			break;
		}
	}

	delwin(winmain);		
	delwin(winsure);
	delwin(wincancle);	
	return 0;
}

int RecordQueryByDate()
{
	char begindate[30];
	char enddate[30];
	int n=-99;
	memset(begindate,0,sizeof(begindate));
	memset(enddate,0,sizeof(enddate));
	n=PrintRecordQueryByDate(1,begindate,enddate);
	/*判断有没记录*/
	if(n==1)
		return 1;
	n=RecordQueryByDateProc(begindate,enddate);
	if(n==2)
	{
		MessageBox("没有记录!",0);
		return 1;
	}
	PrintRecordByDate(1);	
	/*saleInfoList*/
	
	return 0;
}

⌨️ 快捷键说明

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