?? posrecordquerybydate.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 + -