📄 venditionmanager.c
字号:
//////////////////////////////////////////////////////////////////////////
// 销售管理
//////////////////////////////////////////////////////////////////////////
//销售管理窗口
#include <ncurses.h>
#include <stdlib.h>
#include "PosSystem.h"
//销售管理商口 //返回0为返回上一级界面,返回1就进入销售日期查询 返回2就返回员工ID查询
int VenditionManagerWin()
{
int ch,choose=0;
//后台管理界面的背景窗口
WINDOW * VenditionManagerWin=CreateWindow(25,80,0,0,Yes,BLUE_WHITE);
StringCenterPrint(VenditionManagerWin,5,"销售管理");
char menu1[]="1.按销售日期查询";
char menu2[]="2.按员工ID查询";
char menu3[]="0.返回后台管理界面";
mvwprintw(VenditionManagerWin,9,32,menu1);
mvwprintw(VenditionManagerWin,11,32,menu2);
mvwprintw(VenditionManagerWin,13,32,menu3);
wrefresh(VenditionManagerWin);
curs_set(0);//参数0为不显示光标 如参数为1时为显示
while(1)
{
DataSearch://日期查询
while(1)
{
StringRevers(VenditionManagerWin,9,32,menu1);
ch=GetChar(VenditionManagerWin,9,32);
switch(ch)
{
case KEY_DOWN:
mvwprintw(VenditionManagerWin,9,32,menu1);
goto IDSearch;
case '\n':
choose=1;
goto exit;
break;
}
}
IDSearch://添加商品
while(1)
{
StringRevers(VenditionManagerWin,11,32,menu2);
ch=GetChar(VenditionManagerWin,11,32);
switch(ch)
{
case KEY_UP:
mvwprintw(VenditionManagerWin,11,32,menu2);
goto DataSearch;
break;
case KEY_DOWN:
mvwprintw(VenditionManagerWin,11,32,menu2);
goto ReturnToBackManager;
break;
case '\n':
choose=2;
goto exit;
}
}
ReturnToBackManager:// 退出进入后台界面
while(1)
{
StringRevers(VenditionManagerWin,13,32,menu3);
ch=GetChar(VenditionManagerWin,13,32);
switch(ch)
{
case KEY_UP:
mvwprintw(VenditionManagerWin,13,32,menu3);
goto IDSearch;
break;
case '\n':
choose=0;
goto exit;
}
}
}
exit:
DestroyWindow(VenditionManagerWin);
curs_set(1);//参数0为不显示光标 如参数为1时为显示
return choose;
}
//销售日期查询窗口
int SearchVenditionByDateWin(char * startdate,char *enddate)
{
// char startdate[20]={'\0'};
// char enddate[20]={'\0'};
int ch,result=0;
//帐户管理界面的背景窗口
WINDOW * DataSearchWindow=CreateWindow(25,80,0,0,Yes,BLUE_WHITE);
StringCenterPrint(DataSearchWindow,0,"欢迎光临XXX超市");
StringCenterPrint(DataSearchWindow,3,"日期查询销售记录");
char startyearStr[6]={'\0'};//存放查询的开始年
char startmonthStr[6]={'\0'};//存放查询的开始月份
char startdayStr[6]={'\0'};//存放查询的开始日
char endyearStr[6]={'\0'};//存放查询的结束年份
char endmonthStr[6]={'\0'};//存放查询的开始月份
char enddayStr[6]={'\0'};//存放查询的开始日
mvwprintw(DataSearchWindow,10,18,"开始日期:");
mvwprintw(DataSearchWindow,12,18,"结束日期:");
wrefresh(DataSearchWindow);
//输入框
WINDOW * startYear=CreateWindow(1,10,10,27,No,WHITE_BLACK);//开始年窗口
mvwprintw(DataSearchWindow,10,37," - ");
wrefresh(DataSearchWindow);
WINDOW * startMonth=CreateWindow(1,10,10,40,No,WHITE_BLACK);//开始月窗口
mvwprintw(DataSearchWindow,10,50," - ");
wrefresh(DataSearchWindow);
WINDOW * startDay=CreateWindow(1,10,10,53,No,WHITE_BLACK);//开始日窗口
WINDOW * endYear=CreateWindow(1,10,12,27,No,WHITE_BLACK);//结束年窗口
mvwprintw(DataSearchWindow,12,37," - ");
wrefresh(DataSearchWindow);
WINDOW * endMonth=CreateWindow(1,10,12,40,No,WHITE_BLACK);//结束月窗口
mvwprintw(DataSearchWindow,12,50," - ");
wrefresh(DataSearchWindow);
WINDOW * endDay=CreateWindow(1,10,12,53,No,WHITE_BLACK);//结束日窗口
//刷新输入框
wrefresh(startYear);
wrefresh(startMonth);
wrefresh(startDay);
wrefresh(endYear);
wrefresh(endMonth);
wrefresh(endDay);
WINDOW * ok_button=CreateWindow(3,8,20,25,Yes,RED_WHITE);
mvwprintw(ok_button,1,2,"确定");
wrefresh(ok_button);
WINDOW * exit_button=CreateWindow(3,8,20,45,Yes,RED_WHITE);
mvwprintw(exit_button,1,2,"退出");
wrefresh(exit_button);
wrefresh(startYear);
wrefresh(startMonth);
wrefresh(startDay);
wrefresh(endYear);
wrefresh(endMonth);
wrefresh(endDay);
//wgetch(AddCommodityWin);
curs_set(1);//参数0为不显示光标 如参数为1时为显示
while(1)
{
startYear://开始年
while(1)
{
ch=GetNumber(startYear,0,0,startyearStr,4);
switch(ch)
{
case '\t'://Tab键
case KEY_RIGHT:
case KEY_DOWN:
case '\n':
goto startMonth;
break;
}
}
startMonth://开始月
while(1)
{
ch=GetNumber(startMonth,0,0,startmonthStr,2);
switch(ch)
{
case KEY_LEFT:
case KEY_UP:
goto startYear;
break;
case '\t'://Tab键
case KEY_RIGHT:
case KEY_DOWN:
case '\n':
goto startDay;
break;
}
}
startDay://开始日
while(1)
{
ch=GetNumber(startDay,0,0,startdayStr,2);
switch(ch)
{
case KEY_LEFT:
case KEY_UP:
goto startMonth;
break;
case '\t'://Tab键
case KEY_RIGHT:
case KEY_DOWN:
case '\n':
goto endYear;
break;
}
}
endYear://结束年
while(1)
{
ch=GetNumber(endYear,0,0,endyearStr,4);
switch(ch)
{
case KEY_LEFT:
case KEY_UP:
goto startDay;
break;
case '\t'://Tab键
case KEY_RIGHT:
case KEY_DOWN:
case '\n':
goto endMonth;
break;
}
}
endMonth://结束月
while(1)
{
ch=GetNumber(endMonth,0,0,endmonthStr,2);
switch(ch)
{
case KEY_LEFT:
case KEY_UP:
goto endYear;
break;
case '\t'://Tab键
case KEY_RIGHT:
case KEY_DOWN:
case '\n':
goto endDay;
break;
}
}
endDay: //结束日
while(1)
{
ch=GetNumber(endDay,0,0,enddayStr,2);
switch(ch)
{
case KEY_LEFT:
case KEY_UP:
goto endMonth;
case '\t'://Tab键
case KEY_RIGHT:
case KEY_DOWN:
case '\n':
//开启"正确"按钮的回显
wmove(ok_button,1,2);
//mvchgat(1,2,4,A_BLINK,RED_WHITE,NULL); //在ncurses书的第26页有注释
//对 "正确"字符反白
wattron(ok_button,A_REVERSE);
mvwprintw(ok_button,1,2,"正确");
wrefresh(ok_button);
goto ok_button;
break;
}
}
ok_button:// 确定按钮
while(1)
{
ch=GetChar(ok_button,1,6);
//ch=GetChar(ok_button,0,0);
switch(ch)
{
//case KEY_LEFT:
case KEY_UP://转上面
wattroff(ok_button,A_REVERSE);
wmove(ok_button,1,2);
//wattron(exit_button,A_REVERSE);
mvwprintw(ok_button,1,2,"正确");
wrefresh(ok_button);
goto endDay;
break;
case '\t'://Tab键
case KEY_RIGHT:
case KEY_DOWN:
//关掉正确按钮的回显
wattroff(ok_button,A_REVERSE);
wmove(ok_button,1,2);
//wattron(exit_button,A_REVERSE);
mvwprintw(ok_button,1,2,"正确");
wrefresh(ok_button);
//开启退出按钮的回显
wmove(exit_button,1,2);
wattron(exit_button,A_REVERSE);
mvwprintw(exit_button,1,2,"退出");
wrefresh(exit_button);
goto exit_button;
break;
case '\n':
{
if(isNull(startyearStr))
{
Message_Box(10,20,10,10,RED_BLACK,"提示","年份不能为空");
//关掉正确按钮的回显
wattroff(ok_button,A_REVERSE);
wmove(ok_button,1,2);
//wattron(exit_button,A_REVERSE);
mvwprintw(ok_button,1,2,"正确");
wrefresh(ok_button);
goto startYear;
}
if(isNull(startmonthStr))
{
Message_Box(10,20,10,10,RED_BLACK,"提示","月份不能为空");
//关掉正确按钮的回显
wattroff(ok_button,A_REVERSE);
wmove(ok_button,1,2);
//wattron(exit_button,A_REVERSE);
mvwprintw(ok_button,1,2,"正确");
wrefresh(ok_button);
goto startMonth;
}
if(isNull(startdayStr))
{
Message_Box(10,20,10,10,RED_BLACK,"提示","日不能为空");
//关掉正确按钮的回显
wattroff(ok_button,A_REVERSE);
wmove(ok_button,1,2);
//wattron(exit_button,A_REVERSE);
mvwprintw(ok_button,1,2,"正确");
wrefresh(ok_button);
goto startDay;
}
if(isNull(endyearStr))
{
Message_Box(10,20,10,10,RED_BLACK,"提示","年份不能为空");
//关掉正确按钮的回显
wattroff(ok_button,A_REVERSE);
wmove(ok_button,1,2);
//wattron(exit_button,A_REVERSE);
mvwprintw(ok_button,1,2,"正确");
wrefresh(ok_button);
goto endYear;
}
if(isNull(endmonthStr))
{
Message_Box(10,20,10,10,RED_BLACK,"提示","月份不能为空");
//关掉正确按钮的回显
wattroff(ok_button,A_REVERSE);
wmove(ok_button,1,2);
//wattron(exit_button,A_REVERSE);
mvwprintw(ok_button,1,2,"正确");
wrefresh(ok_button);
goto endMonth;
}
if(isNull(enddayStr))
{
Message_Box(10,20,10,10,RED_BLACK,"提示","日不能为空");
//关掉正确按钮的回显
wattroff(ok_button,A_REVERSE);
wmove(ok_button,1,2);
//wattron(exit_button,A_REVERSE);
mvwprintw(ok_button,1,2,"正确");
wrefresh(ok_button);
goto endDay;
}
Trim(startyearStr);
Trim(startmonthStr);
Trim(startdayStr);
Trim(endyearStr);
Trim(endmonthStr);
Trim(enddayStr);
int startyear,startmonth,startday;
int endyear,endmonth,endday;
startyear=atoi(startyearStr);
startmonth=atoi(startmonthStr);
startday=atoi(startdayStr);
endyear=atoi(endyearStr);
endmonth=atoi(endmonthStr);
endday=atoi(enddayStr);
int err;
err=checkDate(startyear,startmonth,startday);
switch(err)
{
case 1:
Message_Box(10,20,10,10,RED_BLACK,"提示","年份不能小于0");
//关掉正确按钮的回显
wattroff(ok_button,A_REVERSE);
wmove(ok_button,1,2);
//wattron(exit_button,A_REVERSE);
mvwprintw(ok_button,1,2,"正确");
wrefresh(ok_button);
goto startYear;
case 2:
Message_Box(10,20,10,10,RED_BLACK,"提示","月份超出范围");
//关掉正确按钮的回显
wattroff(ok_button,A_REVERSE);
wmove(ok_button,1,2);
//wattron(exit_button,A_REVERSE);
mvwprintw(ok_button,1,2,"正确");
wrefresh(ok_button);
goto startMonth;
case 3:
Message_Box(10,20,10,10,RED_BLACK,"提示","日超出范围");
//关掉正确按钮的回显
wattroff(ok_button,A_REVERSE);
wmove(ok_button,1,2);
//wattron(exit_button,A_REVERSE);
mvwprintw(ok_button,1,2,"正确");
wrefresh(ok_button);
goto startDay;
}
err=checkDate(endyear,endmonth,endday);
switch(err)
{
case 1:
Message_Box(10,20,10,10,RED_BLACK,"提示","年份不能小于0");
//关掉正确按钮的回显
wattroff(ok_button,A_REVERSE);
wmove(ok_button,1,2);
//wattron(exit_button,A_REVERSE);
mvwprintw(ok_button,1,2,"正确");
wrefresh(ok_button);
goto endYear;
case 2:
Message_Box(10,20,10,10,RED_BLACK,"提示","月份超出范围");
//关掉正确按钮的回显
wattroff(ok_button,A_REVERSE);
wmove(ok_button,1,2);
//wattron(exit_button,A_REVERSE);
mvwprintw(ok_button,1,2,"正确");
wrefresh(ok_button);
goto endMonth;
case 3:
Message_Box(10,20,10,10,RED_BLACK,"提示","日超出范围");
//关掉正确按钮的回显
wattroff(ok_button,A_REVERSE);
wmove(ok_button,1,2);
//wattron(exit_button,A_REVERSE);
mvwprintw(ok_button,1,2,"正确");
wrefresh(ok_button);
goto endDay;
}
if(startyear*10000+startmonth*100+startDay <endyear*10000 +endmonth*100 + endday)
{
Message_Box(10,20,10,10,RED_BLACK,"提示","起始日期不能小于结束日期");
//关掉正确按钮的回显
wattroff(ok_button,A_REVERSE);
wmove(ok_button,1,2);
//wattron(exit_button,A_REVERSE);
mvwprintw(ok_button,1,2,"正确");
wrefresh(ok_button);
goto endYear;
}
// sprintf(startyearStr,"%04d",startyear);
// sprintf(startmonthStr,"%02d",startmonth);
// sprintf(startdayStr,"%02d",startday);
// sprintf(endyearStr,"%04d",endyear);
// sprintf(endmonthStr,"%02d",endmonth);
// sprintf(enddayStr,"%02d",endday);
// strcpy(startdate,startyearStr);
// strcat(startdate,startmonthStr);
// strcat(startdate,startdayStr);
// strcpy(enddate,endyearStr);
// strcat(enddate,endmonthStr);
// strcat(enddate,enddayStr);
sprintf(startdate,"%04d%02d%02d000000",startyear,startmonth,startday);
sprintf(enddate,"%04d%02d%02d235959",endyear,endmonth,endday);
// mvwprintw(DataSearchWindow,2,2,startdate);
// mvwprintw(DataSearchWindow,3,2,enddate);
// wrefresh(DataSearchWindow);
// wgetch(DataSearchWindow);
}
result=0;
goto exit;
}
}
exit_button://退出按钮
while(1)
{
ch=GetChar(exit_button,1,6);
switch(ch)
{
case KEY_UP:
case KEY_LEFT://转上面
//关掉'退出'回显
wattroff(exit_button,A_REVERSE);
wmove(exit_button,1,2);
//wattron(exit_button,A_REVERSE);
mvwprintw(exit_button,1,2,"退出");
wrefresh(exit_button);
//开启"正确"按钮的回显
wmove(ok_button,1,2);
//mvchgat(1,2,4,A_BLINK,RED_WHITE,NULL); //在ncurses书的第26页有注释
//对 "正确"字符反白
wattron(ok_button,A_REVERSE);
mvwprintw(ok_button,1,2,"正确");
wrefresh(ok_button);
goto ok_button;
break;
case '\n':
result=1;//返回1为退出
goto exit;
}
}
}
exit:
DestroyWindow(DataSearchWindow);
DestroyWindow(startYear);
DestroyWindow(startMonth);
DestroyWindow(startDay);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -