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

📄 laneinitial.cpp

📁 高速公路收费系统车道软件. 功能: 1 检测公路过往车辆 2 收费过程控制和数据采集 3 车辆信息和图片上传服务器.
💻 CPP
📖 第 1 页 / 共 3 页
字号:
			break;
		case VALID_NO_KEY:
			bLegalityFlag=TRUE;
			SendMessage(theApp.m_pMainWnd->m_hWnd,WM_OPTION_FINISH,nStatus,SHIFT_DISPLAY_INVOICE_START_NO_OK);
			break;	
		}
	}	
	return bLegalityFlag;
}

//	等待选择班次时处理按键
BOOL CInformationBS::ProcessKeyOfShiftNO(UINT nChar)
{
	BOOL bLegalityFlag=FALSE;
	switch(nChar){
	case ONE_KEY:
		chShiftNO=1;
		bLegalityFlag=TRUE;
		SendMessage(theApp.m_pMainWnd->m_hWnd,WM_OPTION_FINISH,nStatus,SHIFT_INPUT_SHIFT_OK);
		break;
	case TWO_KEY:
		chShiftNO=2;
		bLegalityFlag=TRUE;
		SendMessage(theApp.m_pMainWnd->m_hWnd,WM_OPTION_FINISH,nStatus,SHIFT_INPUT_SHIFT_OK);
		break;
	case THREE_KEY:
		chShiftNO=3;
		bLegalityFlag=TRUE;
		SendMessage(theApp.m_pMainWnd->m_hWnd,WM_OPTION_FINISH,nStatus,SHIFT_INPUT_SHIFT_OK);
		break;
	case FOUR_KEY:
		chShiftNO=4;
		bLegalityFlag=TRUE;
		SendMessage(theApp.m_pMainWnd->m_hWnd,WM_OPTION_FINISH,nStatus,SHIFT_INPUT_SHIFT_OK);
		break;
	case FIVE_KEY:
		chShiftNO=5;
		bLegalityFlag=TRUE;
		SendMessage(theApp.m_pMainWnd->m_hWnd,WM_OPTION_FINISH,nStatus,SHIFT_INPUT_CHANGE_PASSWORD);
		break;
	case CANCEL_KEY:
		bLegalityFlag=TRUE;
		SendMessage(theApp.m_pMainWnd->m_hWnd,WM_OPTION_FINISH,nStatus,SHIFT_INPUT_SHIFT_CANCEL);
		break;
	}
	return bLegalityFlag;
}

//	绘制工作窗口
CInformationBS::DrawWorkInfo(UINT nSlaveStatus)
{
	CLaneInfo m_clsLaneInfo;
	nStatus=nSlaveStatus;
	switch(nSlaveStatus){
	case SHOW_SHIFT_NO:
		DrawShiftNO();
		break;
	case SHOW_START_INVOICE:
		if(m_clsLaneInfo.GetChangeComputerInvoiceFlag())
		{ 
			DrawStartInvoice2();
		}else
		{ 
			DrawStartInvoice();
		}
		break;
	}
}

//	绘制发票起号窗口  不修改发票号码
void CInformationBS::DrawStartInvoice()
{
	int nScreenX=theApp.nScreenX;
	int nScreenY=theApp.nScreenY;
	ClearWorkRange();
	int nLeft=nScreenX/64;
	int nTop=nScreenY*4/15;
	int nButtom=nScreenY*4/5;
	int	nRight=nScreenX*5/8;
	theApp.memDC.Rectangle(CRect(nLeft,nTop,nRight,nButtom));
	nTop=nScreenY/3;
	theApp.memDC.DrawText("当前发票号码",CRect(nLeft,nTop,nRight,nButtom),DT_CENTER|DT_TOP);
	CStatInfo m_clsStat;
	CLaneInfo m_clsLane;
	nTop=nScreenY*10/24;
	char tmpStr[80];
	memset(tmpStr,0,80);
//以下调试中出现问题;票号返回64位,一个Sprintf用两个不行;故分开
//	_itoa(m_clsStat.GetInvoiceNow(0),strInvoiceStart,10);  
//   memset(strInvoiceStart,0,12);
//	_ltoa( m_clsStat.GetInvoiceNow(0), tmpStr, 10 );
//	memcpy(strInvoiceStart,tmpStr,10);
	sprintf(tmpStr,"电脑票当前号码:       [  %.7u  ]   ",m_clsStat.GetInvoiceNow(0));
//			theApp.memDC.SetTextColor(RGB(0,0,0));
//			theApp.memDC.SetBkColor(RGB(255,255,255));		
	theApp.memDC.DrawText(tmpStr,CRect(nLeft,nTop,nRight,nButtom),DT_CENTER|DT_TOP);
//            theApp.memDC.SetTextColor(RGB(255,255,255));
//			theApp.memDC.SetBkColor(RGB(0,0,0));
	nTop=nScreenY*11/24;
	memset(tmpStr,0,80);	
	sprintf(tmpStr,"¥%2d定额票当前号码:   [  %.7u  ]   ",
		m_clsLane.SearchFare('1',TYPE_NORMAL),m_clsStat.GetInvoiceNow(1));    
	theApp.memDC.DrawText(tmpStr,CRect(nLeft,nTop,nRight,nButtom),DT_CENTER|DT_TOP);
	nTop=nScreenY*12/24;
	memset(tmpStr,0,80);
	sprintf(tmpStr,"¥%2d定额票当前号码:   [  %.7u  ]   ",
		m_clsLane.SearchFare('2',TYPE_NORMAL),m_clsStat.GetInvoiceNow(2));
	theApp.memDC.DrawText(tmpStr,CRect(nLeft,nTop,nRight,nButtom),DT_CENTER|DT_TOP);
	nTop=nScreenY*13/24;
	memset(tmpStr,0,80);
	sprintf(tmpStr,"¥%2d定额票当前号码:   [  %.7u  ]   ",
		m_clsLane.SearchFare('3',TYPE_NORMAL),m_clsStat.GetInvoiceNow(3));
	theApp.memDC.DrawText(tmpStr,CRect(nLeft,nTop,nRight,nButtom),DT_CENTER|DT_TOP);
	nTop=nScreenY*14/24;
	memset(tmpStr,0,80);
	sprintf(tmpStr,"¥%2d定额票当前号码:   [  %.7u  ]   ",
		m_clsLane.SearchFare('4',TYPE_NORMAL),m_clsStat.GetInvoiceNow(4));
	theApp.memDC.DrawText(tmpStr,CRect(nLeft,nTop,nRight,nButtom),DT_CENTER|DT_TOP);
	nTop=nScreenY*15/24;
	memset(tmpStr,0,80);
	sprintf(tmpStr,"¥%2d定额票当前号码:   [  %.7u  ]   ",
		m_clsLane.SearchFare('5',TYPE_NORMAL),m_clsStat.GetInvoiceNow(5));
	theApp.memDC.DrawText(tmpStr,CRect(nLeft,nTop,nRight,nButtom),DT_CENTER|DT_TOP);
	nTop=nScreenY*16/24;
	memset(tmpStr,0,80);
	sprintf(tmpStr,"¥%2d定额票当前号码:   [  %.7u  ]   ",
		m_clsLane.SearchFare('6',TYPE_NORMAL),m_clsStat.GetInvoiceNow(6));
	theApp.memDC.DrawText(tmpStr,CRect(nLeft,nTop,nRight,nButtom),DT_CENTER|DT_TOP);
	nTop=nScreenY*18/24;
	theApp.memDC.DrawText("“确认”键 ---> 正确,“取消”键 ---> 不正确",CRect(nLeft,nTop,nRight,nButtom),DT_CENTER|DT_TOP);
	DrawScreen();
}

//	绘制发票起号窗口  修改发票号码
void CInformationBS::DrawStartInvoice2()
{
	int nScreenX=theApp.nScreenX;
	int nScreenY=theApp.nScreenY;
	ClearWorkRange();
	int	nLeft=nScreenX/8;
	int	nRight=nScreenX*17/32;
	int nTop=nScreenY*3/8;
	int nButtom=nScreenY*17/24;
	theApp.memDC.Rectangle(CRect(nLeft,nTop,nRight,nButtom));
	nTop=nScreenY/2;
	theApp.memDC.DrawText("输入发票起号",CRect(nLeft,nTop,nRight,nButtom),DT_CENTER|DT_TOP);
	CStatInfo m_clsStat;
	CLaneInfo m_clsLane;
    nTop=nScreenY*7/12;
	char tmpStr[80];
	memset(tmpStr,0,80);
//以下调试中出现问题;票号返回64位,一个Sprintf用两个不行;故分开
//	_itoa(m_clsStat.GetInvoiceNow(0),strInvoiceStart,10);  
    memset(strInvoiceStart,0,12);
//	_ltoa( m_clsStat.GetInvoiceNow(0), tmpStr, 10 );
//	memcpy(strInvoiceStart,tmpStr,10);
	sprintf(strInvoiceStart,"%.7u",m_clsStat.GetInvoiceNow(0));
	sprintf(tmpStr,"[  %.7u  ]",m_clsStat.GetInvoiceNow(0));
	theApp.memDC.DrawText(tmpStr,CRect(nLeft,nTop,nRight,nButtom),DT_CENTER|DT_TOP);
	memset(tmpStr,0,80);
	DrawScreen();
}

//	绘制修改电脑发票起号窗口
void CInformationBS::DrawComputerStartInvoice()
{
	int nScreenX=theApp.nScreenX;
	int nScreenY=theApp.nScreenY;
	int	nLeft=nScreenX/8;
	int	nRight=nScreenX*17/32;
	int nTop=nScreenY*7/12;
	int nButtom=nScreenY*17/24;
	CStatInfo m_clsStat;
	CLaneInfo m_clsLane;
	char tmpStr[80];
	memset(tmpStr,0,80);
//以下调试中出现问题;票号返回64位,一个Sprintf用两个不行;故分开
	sprintf(tmpStr,"[  ");
    int nLen2=strlen(tmpStr);
	sprintf(tmpStr+nLen2,"%s",strInvoiceStart);
	int nLen=7-strlen(strInvoiceStart);
	nLen2=nLen2+strlen(strInvoiceStart);
	for (int i=0; i<nLen; i++)
	{
		sprintf(tmpStr+nLen2," ");
		nLen2++;
	}
	sprintf(tmpStr+nLen2,"  ]");		
	theApp.memDC.DrawText(tmpStr,CRect(nLeft,nTop,nRight,nButtom),DT_CENTER|DT_TOP);
	memset(tmpStr,0,80);	
	DrawScreen();
}


//	绘制输入班次窗口
void CInformationBS::DrawShiftNO()
{
	int nScreenX=theApp.nScreenX;
	int nScreenY=theApp.nScreenY;
	ClearWorkRange();
	int nLeft=nScreenX/64;
	int nTop=nScreenY*4/15;
	int nButtom=nScreenY*4/5;
	int	nRight=nScreenX*5/8;
	theApp.memDC.Rectangle(CRect(nLeft,nTop,nRight,nButtom));
	nTop=nScreenY/3;
	theApp.memDC.DrawText("班次选择或修改密码",CRect(nLeft,nTop,nRight,nButtom),DT_CENTER|DT_TOP);
	nLeft=nScreenX/12;
	nTop=nScreenY*5/12;
	theApp.memDC.DrawText("1 - 早班",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
	nTop=nScreenY*11/24;
	theApp.memDC.DrawText("2 - 中班",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
	nTop=nScreenY/2;
	theApp.memDC.DrawText("3 - 晚班",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
	nTop=nScreenY*13/24;
	theApp.memDC.DrawText("4 - 夜班",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
	nTop=nScreenY*14/24;
	theApp.memDC.DrawText("5 - 修改密码",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
	DrawScreen();
}

//	返回用户输入的班次
char CInformationBS::ShiftNO()
{
	return chShiftNO;
}

long CPassword::nOldPassword;
long CPassword::nNewPassword1;
long CPassword::nNewPassword2;
char CPassword::strBuff[12];
UINT CPassword::nStatus;
char CPassword::nChildStatus=INPUT_NONE;
CPassword::CPassword()
{
}

//	处理按键
BOOL CPassword::ProcessKeyboard(UINT nChar)
{
	BOOL bLegalityFlag=FALSE;
	switch(nStatus){
	case SHOW_CHANGE_PASSWORD:
		bLegalityFlag=ProcessKeyOfInputPassword(nChar);
		break;
	case SHOW_PASSWORD_RESULT:
		bLegalityFlag=ProcessKeyOfResult(nChar);
		break;
	}
	if(CScreen::ProcessKeyboard(nChar))
		bLegalityFlag=TRUE;
	return bLegalityFlag;
}

//	输入密码窗口下处理按键:对数字键直接显示;对取消或确认键,直接
//	调用对应的函数
BOOL CPassword::ProcessKeyOfInputPassword(UINT nChar)
{
	BOOL bLegalityFlag=FALSE;
	if((nChar>=ZERO_KEY)&&(nChar<=NINE_KEY)){
		int nLen=strlen(strBuff);
		if(nLen>=6){
			memset(strBuff,0,12);
			nLen=0;
		}
		strBuff[nLen]=(char)nChar;
		DrawInputNumber();
		bLegalityFlag=TRUE;
	} else {
		switch(nChar){
		case CANCEL_KEY:
			bLegalityFlag=CancelKeyOfInputPassword();
			break;
		case VALID_KEY:
			bLegalityFlag=ValidKeyOfInputPassword();
			break;
		}
	}
	return bLegalityFlag;
}

//	输入密码窗口下按取消键:根据不同的输入密码窗口,操作不同
BOOL CPassword::CancelKeyOfInputPassword()
{
	BOOL bLegalityFlag=FALSE;
	switch(nChildStatus){
	case INPUT_OLD_PASSWORD:
//	输入旧密码时按取消键,若已经开始输入旧密码,废弃已经输入的数字;
//	否则退出更改密码状态
		bLegalityFlag=TRUE;
		if(strlen(strBuff)>0){
			memset(strBuff,0,12);
			DrawInputNumber();
		} else {
			SendMessage(theApp.m_pMainWnd->m_hWnd,WM_OPTION_FINISH,nStatus,PASSWORD_CANCEL_OF_INPUT_PASSWORD);
		}
		break;
	case INPUT_NEW_PASSWORD1:
//	第一次输入新密码时按取消键,若已经输入数字键,废弃已经输入的数
//	字;否则返回输入旧密码状态
		if(strlen(strBuff)>0){
			memset(strBuff,0,12);
			DrawInputNumber();
		} else {
			nChildStatus=INPUT_OLD_PASSWORD;
			DrawInputPassword();
		}
		bLegalityFlag=TRUE;
		break;
	case INPUT_NEW_PASSWORD2:
//	第二次输入新密码时按取消键,若已经输入数字键,废弃已经输入的数
//	字;否则返回第一次输入新密码状态
		if(strlen(strBuff)>0){
			memset(strBuff,0,12);
			DrawInputNumber();
		} else {
			nChildStatus=INPUT_NEW_PASSWORD1;
			DrawInputPassword();
		}
		bLegalityFlag=TRUE;
		break;
	}
	return bLegalityFlag;	
}

//	输入密码窗口下按确认键
BOOL CPassword::ValidKeyOfInputPassword()
{
	BOOL bLegalityFlag=FALSE;
	switch(nChildStatus){
	case INPUT_OLD_PASSWORD:
//	输入旧密码窗口下按确认键,若已经输入密码,存储旧密码并转入第一
//	次输入新密码状态
		if(strlen(strBuff)>0){
			nOldPassword=atol(strBuff);
			nChildStatus=INPUT_NEW_PASSWORD1;
			DrawInputPassword();
			bLegalityFlag=TRUE;
		}
		break;
	case INPUT_NEW_PASSWORD1:
//	第一次输入新密码窗口下按确认键,若已经输入密码,存储第一次输入
//	的新密码并转入第二次输入新密码状态
		if(strlen(strBuff)>0){
			nNewPassword1=atol(strBuff);
			nChildStatus=INPUT_NEW_PASSWORD2;
			DrawInputPassword();
			bLegalityFlag=TRUE;
		}
		break;
	case INPUT_NEW_PASSWORD2:
//	第二次输入新密码窗口下按确认键,若已经输入密码,存储第二次输入
//	的新密码并通知状态控制类输入密码人机交互完成
		if(strlen(strBuff)>0){
			nNewPassword2=atol(strBuff);
			nChildStatus=INPUT_NONE;
			bLegalityFlag=TRUE;
            if(nNewPassword2==nNewPassword1)
			  SendMessage(theApp.m_pMainWnd->m_hWnd,WM_OPTION_FINISH,nStatus,PASSWORD_INPUT_2PASSWORD_OK);
            else 
			  SendMessage(theApp.m_pMainWnd->m_hWnd,WM_OPTION_FINISH,nStatus,PASSWORD_INPUT_2PASSWORD_ERROR);
		}
		break;
	}
	return bLegalityFlag;
}

//	如果两次输入修改密码相同且旧密码正确,则不会执行这段程序
BOOL CPassword::ProcessKeyOfResult(UINT nChar)
{
   	BOOL bLegalityFlag=FALSE;
	switch(nChar){
	case VALID_KEY:			//收费员不再更改密码
		bLegalityFlag=TRUE;	

⌨️ 快捷键说明

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