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

📄 mainfrm.cpp

📁 网吧管理系统VC源码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	DaoRecord.MoveFirst();
	int nCount;
	nCount = clc.GetSelectedCount();
	
	while (pos)
	{
		nIndex = clc.GetNextSelectedItem(pos);

		str = clc.GetItemText(nIndex, 0);
		CString strFilter("[计算机名]=\"");
		strFilter += str;
		strFilter += '\"';
        DaoRecord.FindFirst(strFilter);
		if(DaoRecord.m_nStatus != CLIENT_WORKING)
		{
			str += "未处于工作状态,不能出售商品!";
			AfxMessageBox(str, MB_ICONINFORMATION | MB_OK);
			continue;
		}
		dlg.m_strComputerName = str;
		if(dlg.DoModal() == IDOK)
		{
			DaoRecord.Edit();
			DaoRecord.m_fAddtionalFree += (float)atof(dlg.m_strCountFree);
			DaoRecord.Update();
			((CServerView*)GetActiveView())->Refurbish(DaoRecord.GetAbsolutePosition());
		}
	}
}


//会员管理
void CMainFrame::OnManageLeaguer() 
{
	if (LeaguerModelessDlg == NULL)
	{
		LeaguerModelessDlg = new CLeaguerManageDlg(this);
		if (LeaguerModelessDlg->Create())
		{
		}
	}
	else 
	{
		LeaguerModelessDlg->SetActiveWindow();
		LeaguerModelessDlg->ShowWindow(SW_SHOWNORMAL);
	}
}


//通宵上网
void CMainFrame::OnAllNightWork() 
{
	CTime Currenttime = CTime::GetCurrentTime(); 

	CString str;
	str = ConvertString(m_daoPayProperty.m_Allnight1.GetHour());
	str += ":";
	str += ConvertString(m_daoPayProperty.m_Allnight1.GetMinute());
	str += ":";
	str += ConvertString(m_daoPayProperty.m_Allnight1.GetSecond());

	str += "-";
	str += ConvertString(m_daoPayProperty.m_Allnight2.GetHour());
	str += ":";
	str += ConvertString(m_daoPayProperty.m_Allnight2.GetMinute());
	str += ":";
	str += ConvertString(m_daoPayProperty.m_Allnight2.GetSecond());

	if (m_daoPayProperty.m_Morning1.GetHour() <= Currenttime.GetHour() && m_daoPayProperty.m_Morning2.GetHour() >= Currenttime.GetHour())
	{
		AfxMessageBox("还未到通宵时间段,不能使用此功能!\n通宵时段为" + str, MB_ICONINFORMATION | MB_OK);
		return;
	}

	if (m_daoPayProperty.m_Afternoon1.GetHour() <= Currenttime.GetHour() && m_daoPayProperty.m_Afternoon2.GetHour() >= Currenttime.GetHour())
	{
		AfxMessageBox("还未到通宵时间段,不能使用此功能!\n通宵时段为" + str, MB_ICONINFORMATION | MB_OK);
		return;
	}
	
	CListCtrl & clc = ((CServerView*)GetActiveView())->GetListCtrl();
	int nIndex;
	POSITION pos = clc.GetFirstSelectedItemPosition();
	if(pos == NULL)
	{
		AfxMessageBox("请选择一台计算机!", MB_ICONINFORMATION | MB_OK);
		return;
	}

	CDaoRecord& DaoRecord = ((CServerDoc*)GetActiveDocument())->m_daoRecord;
	DaoRecord.MoveFirst();
	int nCount;
	nCount = clc.GetSelectedCount();
	
	while (pos)
	{
		nIndex = clc.GetNextSelectedItem(pos);

		str = clc.GetItemText(nIndex, 0);
		CString strFilter("[计算机名]=\"");
		strFilter += str;
		strFilter += '\"';
        DaoRecord.FindFirst(strFilter);
		if(DaoRecord.m_nStatus == CLIENT_WORKING)
		{
			str += "处于工作状态,不能重复上网!";
			AfxMessageBox(str, MB_ICONINFORMATION | MB_OK);
			continue;
		}

		if(DaoRecord.m_nStatus == CLIENT_UNKNOW)
		{
			str += "处于未知状态,不能上网!";
			AfxMessageBox(str, MB_ICONINFORMATION | MB_OK);
			continue;
		}

		CRegisterDlg dlg;
		CCommSocket * pSocket = (CCommSocket*)DaoRecord.m_SOCKET;
		if(dlg.DoModal() == IDOK)
		{
			SMessage msg;
			CTime time;
			strcpy(msg.str,"Start Work!");
			msg.IDCode = CLIENT_START_WORK;
			pSocket->Send(&msg, sizeof(SMessage));
			
			DaoRecord.Edit();
			DaoRecord.m_nStatus = CLIENT_ALL_NIGHT;
			DaoRecord.m_fFree = 0.0;
			DaoRecord.m_strCardNum = dlg.m_strCardNum;
			if (dlg.m_strCardNum != "")
				DaoRecord.m_fFree = m_daoPayProperty.m_Leaguer_Allnight;
			else
				DaoRecord.m_fFree = m_daoPayProperty.m_Normal_Allnight;

			DaoRecord.m_strBak = dlg.m_strBak;
			DaoRecord.m_fPrepay =(float)atof(dlg.m_strPrepay);
			DaoRecord.m_nLimitTime = (short)atof(dlg.m_strLimitTime)*60;
			DaoRecord.m_strBak = "通宵";
			time = CTime::GetCurrentTime();
			DaoRecord.m_timeStart.SetDateTime(time.GetYear(), time.GetMonth(), time.GetDay(), time.GetHour(), time.GetMinute(), time.GetSecond());

			DaoRecord.Update();
			((CServerView*)GetActiveView())->Refurbish(DaoRecord.GetAbsolutePosition());
			SetStatusText();
		}
	}	

}


//设置状态栏
void CMainFrame::SetStatusText()
{
	CListCtrl & clc = ((CServerView*)GetActiveView())->GetListCtrl();
	int nCount;
	nCount = clc.GetItemCount();
	int WorkingStatus = 0, LockingStatus = 0, UnknowStatus = 0;
	CString strStatus;
	for (int i = 0; i < nCount; i++)
	{
		strStatus = clc.GetItemText(i, 8);
		if (strStatus == "工作中")
			WorkingStatus++;
		else
			if(strStatus == "锁定")
				LockingStatus++;
			else 
				UnknowStatus++;
	}
	CString str;
	str.Format("当前 %d 台机器在工作中,%d 台机器处于空闲状态,%d 台机器处于未知状态", WorkingStatus, LockingStatus, UnknowStatus);
	m_wndStatusBar.SetPaneText(1, str);
}

LRESULT  CALLBACK  LowLevelKeyboardProc(int  nCode,  WPARAM  wParam,  LPARAM  lParam)  
{  
	bool fEatKeystroke = false;  
	if  (nCode  ==  HC_ACTION)    
	{  
		KBDLLHOOKSTRUCT *p  =  (KBDLLHOOKSTRUCT*)lParam;  
		switch  (wParam)    
		{  
			case  WM_KEYDOWN:    
			case  WM_SYSKEYDOWN:  
			case  WM_KEYUP:          
			case  WM_SYSKEYUP:    
				//屏蔽左开始键 
				if(p->vkCode  ==  VK_LWIN) 
					  fEatKeystroke = true;

				//屏蔽右开始键
				if(p->vkCode  ==  VK_RWIN) 
					  fEatKeystroke = true;

                //屏蔽Alt+Tab键  
				if((p->vkCode == VK_F4) && ((p->flags & LLKHF_ALTDOWN) != 0)) 
				      fEatKeystroke = true;

				//屏蔽Alt+ESC开始键
                if((p->vkCode == VK_TAB) && ((p->flags & LLKHF_ALTDOWN) != 0)) 
				      fEatKeystroke = true;

                //屏蔽Alt+F4键
			    if((p->vkCode == VK_ESCAPE) && ((p->flags & LLKHF_ALTDOWN) != 0)) 
				      fEatKeystroke = true;

			    //屏蔽ESC键
				if(p->vkCode == VK_ESCAPE) 
				      fEatKeystroke = true;
                break;  
		}
	}
 	return (fEatKeystroke ? true:CallNextHookEx(glhHook,nCode,wParam,lParam));  
}


void CMainFrame::OnSetPassword() 
{
	CSetPassWordDlg dlg;
	dlg.DoModal();	
}

void CMainFrame::OnAutoLock() 
{
	CSetAutoTimeDlg dlg;
	dlg.m_strIdleMin.Format("%d",AfxGetApp()->GetProfileInt("LockWindow","idlemin",0));
	if (dlg.DoModal() == IDOK)
	{	
		UpdateData(true);
		int nIdleMin = atoi(dlg.m_strTime);
		AfxGetApp()->WriteProfileInt("LockWindow","idlemin",nIdleMin);
	}
}


void CMainFrame::OnHistoryFreeDisplay()
{
	if (HistoryFreedlg == NULL)
	{
		HistoryFreedlg = new CHistoryFreeDlg(this);
		if (HistoryFreedlg->Create())
		{
		}
	}
	else 
	{
		HistoryFreedlg->SetActiveWindow();
		HistoryFreedlg->ShowWindow(SW_SHOWNORMAL);
	}
}


void CMainFrame::CloseLeaguerWindow()
{
	LeaguerModelessDlg = NULL;
}


void CMainFrame::CloseFoodWindow()
{
	FoodModelessDlg = NULL;
}


void CMainFrame::CloseHistoryFreewindow()
{
	HistoryFreedlg = NULL;
}

void CMainFrame::LimitLockClient(int iNum)
{
	CListCtrl & clc = ((CServerView*)GetActiveView())->GetListCtrl();
	int nIndex = iNum;
	
	CString str;
	CDaoRecord& DaoRecord = ((CServerDoc*)GetActiveDocument())->m_daoRecord;
	DaoRecord.MoveFirst();
	
	str = clc.GetItemText(nIndex, 0);
	CString strFilter("[计算机名]=\"");
	strFilter += str;
	strFilter += '\"';
	DaoRecord.FindFirst(strFilter);


	CTime time;
	time = CTime::GetCurrentTime();

	CDaoHistoryFree & DaoHistoryFree = ((CServerDoc*)GetActiveDocument())->m_daoHistoryFree;
	DaoHistoryFree.AddNew();
	DaoHistoryFree.m_strName = clc.GetItemText(iNum, 0);

	DaoHistoryFree.m_StartTime.SetDateTime(DaoRecord.m_timeStart.GetYear(),DaoRecord.m_timeStart.GetMonth(),DaoRecord.m_timeStart.GetDay(), DaoRecord.m_timeStart.GetHour(),DaoRecord.m_timeStart.GetMinute(),DaoRecord.m_timeStart.GetSecond());
		        
	DaoHistoryFree.m_EndTime.SetDateTime(time.GetYear(),time.GetMonth(),time.GetDay(), time.GetHour(),time.GetMinute(),time.GetSecond());
			
	DaoHistoryFree.m_CardNum = clc.GetItemText(iNum, 4);
	float nFree = (float)atof(clc.GetItemText(iNum, 6));
	DaoHistoryFree.m_Free = nFree;
		
	CString strTime = clc.GetItemText(iNum,5);
	int nWorkTime = atoi(strTime.Mid(0,2)) * 3600 + atoi(strTime.Mid(3,2)) * 60 + atoi(strTime.Mid(6,2));
	DaoHistoryFree.m_CountTime = nWorkTime;
	DaoHistoryFree.m_strBak = clc.GetItemText(iNum, 9);
	DaoHistoryFree.Update();


/*	if(DaoRecord.m_nStatus == CLIENT_UNKNOW)
	{
		str += "处于未知状态,不能锁定!";
		AfxMessageBox(str);
		continue;
	}

	if(DaoRecord.m_nStatus == CLIENT_LOCKING)
	{
		str += "已处于锁定状态,不能重复锁定!";
		AfxMessageBox(str);
			continue;
		}*/

	CCommSocket * pSocket = (CCommSocket*)DaoRecord.m_SOCKET;
	SMessage msg;
	strcpy(msg.str, "Lock Computer!");
	msg.IDCode = CLIENT_LOCK;
	pSocket->Send(&msg, sizeof(SMessage));
	DaoRecord.Edit();
	DaoRecord.m_nLimitTime = 0;
	DaoRecord.m_nStatus = CLIENT_LOCKING;
	DaoRecord.m_strCardNum = "";
	DaoRecord.m_nWorkTime = 0;
	DaoRecord.m_strBak = "";
	DaoRecord.m_fFree = 0.0;
	DaoRecord.m_fPrepay = 0.0f;
	DaoRecord.m_timeStart.SetDate(0, 0, 0);
	DaoRecord.m_timeStart.SetTime(0, 0, 0);
	DaoRecord.m_strBak = "";
	DaoRecord.Update();
	clc.SetItemText(nIndex,8,"锁定");
	((CServerView*)GetActiveView())->Refurbish(DaoRecord.GetAbsolutePosition());
	SetStatusText();
}


void CMainFrame::OutOfMoneyCheckOut(int iNum)
{
	CListCtrl & clc = ((CServerView*)GetActiveView())->GetListCtrl();

	CDaoRecord& DaoRecord = ((CServerDoc*)GetActiveDocument())->m_daoRecord;
	DaoRecord.MoveFirst();

	CString strFilter("[计算机名]=\"");
	strFilter += clc.GetItemText(iNum, 0);
	strFilter += '\"';

    DaoRecord.FindFirst(strFilter);

	CCommSocket * pSocket = (CCommSocket*)DaoRecord.m_SOCKET;
	
	CTime time;
	time = CTime::GetCurrentTime();
	CDaoHistoryFree & DaoHistoryFree = ((CServerDoc*)GetActiveDocument())->m_daoHistoryFree;
	DaoHistoryFree.AddNew();

	DaoHistoryFree.m_strName = clc.GetItemText(iNum, 0);
	DaoHistoryFree.m_StartTime.SetDateTime(DaoRecord.m_timeStart.GetYear(),DaoRecord.m_timeStart.GetMonth(),DaoRecord.m_timeStart.GetDay(), DaoRecord.m_timeStart.GetHour(),DaoRecord.m_timeStart.GetMinute(),DaoRecord.m_timeStart.GetSecond());
	DaoHistoryFree.m_EndTime.SetDateTime(time.GetYear(),time.GetMonth(),time.GetDay(), time.GetHour(),time.GetMinute(),time.GetSecond());
	DaoHistoryFree.m_CardNum = clc.GetItemText(iNum, 4);
	float nFree = (float)atof(clc.GetItemText(iNum, 6));
	DaoHistoryFree.m_Free = nFree;
	CString strTime = clc.GetItemText(iNum,5);
	int nWorkTime = atoi(strTime.Mid(0,2)) * 3600 + atoi(strTime.Mid(3,2)) * 60 + atoi(strTime.Mid(6,2));
	DaoHistoryFree.m_CountTime = nWorkTime;
	DaoHistoryFree.m_strBak = clc.GetItemText(iNum, 9);
	
	DaoHistoryFree.Update();

	CString strLeaguerCard = clc.GetItemText(iNum, 4); 
	CString strCardID = DaoRecord.m_strCardNum;

	float fFree = DaoRecord.m_fFree;
	float fAddtionalFree = DaoRecord.m_fAddtionalFree;

	DaoRecord.Edit();
	DaoRecord.m_nStatus = CLIENT_LOCKING;
	DaoRecord.m_fFree = 0.0f;
	DaoRecord.m_strCardNum = "";
	DaoRecord.m_fAddtionalFree = 0.0f;
	DaoRecord.m_fPrepay = 0.0f;
	DaoRecord.m_nWorkTime = 0;
	DaoRecord.m_timeStart.SetTime(0,0,0);
	DaoRecord.m_strBak = "";

	DaoRecord.Update();

	((CServerView*)GetActiveView())->Refurbish(DaoRecord.GetAbsolutePosition());

	SetStatusText();
	CDaoLeaguer m_daoLeaguer;
	m_daoLeaguer.Open();
	m_daoLeaguer.MoveFirst();

	strFilter = CString("[用户名称]=\"");
	strFilter += strLeaguerCard;
	strFilter += '\"';
    m_daoLeaguer.FindFirst(strFilter);
	
	m_daoLeaguer.Edit();
	m_daoLeaguer.m_fMoney -= fFree;
	m_daoLeaguer.m_fMoney -= fAddtionalFree;
		
	m_daoLeaguer.m_fCountMoney += fFree;
	m_daoLeaguer.m_fCountMoney += fAddtionalFree;


	m_daoLeaguer.m_LastUseDate.SetDateTime(time.GetYear(), time.GetMonth(), time.GetDay(), time.GetHour(), time.GetMinute(), time.GetMinute());
	m_daoLeaguer.m_lCountTimes++;
	m_daoLeaguer.m_WorkStatus = 0;
	m_daoLeaguer.Update();


	CString strFree;
	strFree.Format("%.1f",m_daoLeaguer.m_fMoney);
	m_daoLeaguer.Close();

	SMessage msg;
	strcpy(msg.str, strFree);
	msg.IDCode = LEAGUER_CHECK_OUT;
	pSocket->Send(&msg, sizeof(SMessage));
}


void CMainFrame::OnHelp() 
{
	char str[128] = "Help.chm";
	::HtmlHelp(this->m_hWnd, (LPCSTR)str, HH_DISPLAY_TOPIC, 0);	
}

void CMainFrame::OnClose() 
{

}

⌨️ 快捷键说明

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