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

📄 venditionmanager.c

📁 在linux平台下模拟超市的收银系统即POS机
💻 C
📖 第 1 页 / 共 2 页
字号:
//////////////////////////////////////////////////////////////////////////
//							销售管理
//////////////////////////////////////////////////////////////////////////


//销售管理窗口
#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 + -