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

📄 mainfrm.cpp

📁 网吧管理系统VC源码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	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.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));

	return true;
}


//给客户端发送会员信息
LRESULT CMainFrame::OnSendLeaguerInformation(WPARAM wParam, LPARAM lParam)
{
	SMessage* pMsg = (SMessage*)lParam;

	CListCtrl & clc = ((CServerView*)GetActiveView())->GetListCtrl();
	LVFINDINFO info;
	info.flags = LVFI_STRING;
	info.psz = pMsg->str;

	int iRecordNum = clc.FindItem(&info);
	
	CString strLeaguerCard = clc.GetItemText(iRecordNum, 4);

	if (strLeaguerCard != "")
	{
		CDaoLeaguer m_daoLeaguer;
		m_daoLeaguer.Open();
		m_daoLeaguer.MoveFirst();

		CString strFilter = CString("[用户名称]=\"");
		strFilter += strLeaguerCard;
		strFilter += '\"';
		m_daoLeaguer.FindFirst(strFilter);

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

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

		strFilter =  CString("[计算机名]=\"");
		strFilter += pMsg->str;
		strFilter += '\"';
		DaoRecord.FindFirst(strFilter);
	
		CCommSocket * pSocket = (CCommSocket*)DaoRecord.m_SOCKET;

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


//接收的客户端消息
LRESULT CMainFrame::OnReceiveMsg(WPARAM wParam, LPARAM lParam)
{
	SMessage* pMsg = (SMessage*)lParam;
    CTime time;
	time = CTime::GetCurrentTime();
    CString strTime;
	strTime = ConvertString(time.GetHour()) + ":";
	strTime += ConvertString(time.GetMinute());
	strTime += ":";
	strTime += ConvertString(time.GetSecond());
	strTime += "--->";
	CRecMsg DaoRecord;
	DaoRecord.Open();
	DaoRecord.AddNew();
	DaoRecord.m_Name = pMsg->str;
	DaoRecord.m_RecMsg = strTime + pMsg->msgSend;
	DaoRecord.Update();

	DaoRecord.Close();
	return true;
}


LRESULT CMainFrame::OnAcceptClientConfirmInformation(WPARAM wParam, LPARAM lParam)
{
	SMessage* pMsg = (SMessage*)lParam;
	CListCtrl & clc = ((CServerView*)GetActiveView())->GetListCtrl();

	LVFINDINFO info;
	info.flags = LVFI_STRING;
	info.psz = pMsg->str;
	int iRecordNum = clc.FindItem(&info);
	clc.SetItemText(iRecordNum, 9, " ");
	return true;
}

void CMainFrame::OnViewStyle() 
{
	CMenu *pSubMenu;
	CRect rect;
	
	m_wndDlgBar.GetWindowRect(&rect);
	pSubMenu = m_menu.GetSubMenu(1)->GetSubMenu(4);
	pSubMenu->TrackPopupMenu( TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_RIGHTBUTTON,
		rect.left, rect.top, this);
}

void CMainFrame::OnViewBigIcon() 
{
	CListCtrl & clc = ((CServerView*)GetActiveView())->GetListCtrl();
	clc.ModifyStyle(LVS_TYPEMASK, LVS_ICON);
}

void CMainFrame::OnViewDetail() 
{
	CListCtrl & clc = ((CServerView*)GetActiveView())->GetListCtrl();
	clc.ModifyStyle(LVS_TYPEMASK, LVS_REPORT);
}

void CMainFrame::OnViewList() 
{
	CListCtrl & clc = ((CServerView*)GetActiveView())->GetListCtrl();
	clc.ModifyStyle(LVS_TYPEMASK, LVS_LIST);
}

void CMainFrame::OnViewSmallIcon() 
{
	CListCtrl & clc = ((CServerView*)GetActiveView())->GetListCtrl();
	clc.ModifyStyle(LVS_TYPEMASK, LVS_SMALLICON);
}

void CMainFrame::OnViewMessageDlg() 
{
	m_wndDlgBar.ShowWindow(!m_wndDlgBar.IsWindowVisible());
	RecalcLayout();
}

void CMainFrame::OnUpdateViewMessageDlg(CCmdUI* pCmdUI) 
{
	pCmdUI->SetCheck(m_wndDlgBar.IsWindowVisible());	
}

void CMainFrame::OnDlgbarPrompt() 
{
	m_wndDlgBar.m_staticBmp.ShowWindow(TRUE);
	m_wndDlgBar.m_staticIcon.ShowWindow(TRUE);
	m_wndDlgBar.m_staticDate.ShowWindow(TRUE);
	m_wndDlgBar.m_staticTime.ShowWindow(TRUE);
}

void CMainFrame::OnDlgbarTree() 
{
	m_wndDlgBar.m_staticDate.ShowWindow(FALSE);
	m_wndDlgBar.m_staticTime.ShowWindow(FALSE);
	m_wndDlgBar.m_staticBmp.ShowWindow(FALSE);
}


//锁定客户端
void CMainFrame::OnLockClient() 
{
	CListCtrl & clc = ((CServerView*)GetActiveView())->GetListCtrl();
	int nIndex;
	POSITION pos = clc.GetFirstSelectedItemPosition();
	if(pos == NULL)
	{
		AfxMessageBox("请选择一台计算机!", MB_ICONINFORMATION | MB_OK);
		return;
	}
	CString str;
	CDaoRecord& DaoRecord = ((CServerDoc*)GetActiveDocument())->m_daoRecord;
	DaoRecord.MoveFirst();
	while (pos)
	{
		nIndex = clc.GetNextSelectedItem(pos);
		str = clc.GetItemText(nIndex, 0);
		CString strFilter("[计算机名]=\"");
		strFilter += str;
		strFilter += '\"';
		DaoRecord.FindNext(strFilter);
		if(DaoRecord.m_nStatus == CLIENT_UNKNOW)
		{
			str += "处于未知状态,不能锁定!";
			AfxMessageBox(str, MB_ICONINFORMATION | MB_OK);
			continue;
		}

		if(DaoRecord.m_nStatus == CLIENT_LOCKING)
		{
			str += "已处于锁定状态,不能重复锁定!";
			AfxMessageBox(str, MB_ICONINFORMATION | MB_OK);
			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_nStatus = CLIENT_LOCKING;
		DaoRecord.Update();
		clc.SetItemText(nIndex,8,"锁定");
		SetStatusText();
	}
}


//对指定的客户端结账
void CMainFrame::OnCheckOut() 
{
	CTime time;
	CListCtrl & clc = ((CServerView*)GetActiveView())->GetListCtrl();
	int nIndex;
	if(clc.GetSelectedCount() > 1)
	{
		AfxMessageBox("不能同时对多台机器进行结账!", MB_ICONINFORMATION | MB_OK);
		return;
	}
	POSITION pos = clc.GetFirstSelectedItemPosition();
	if(pos == NULL)
	{
		AfxMessageBox("请选择一台计算机!", MB_ICONINFORMATION | MB_OK);
		return;
	}
	
    CString str;
	nIndex = clc.GetNextSelectedItem(pos);
	str = clc.GetItemText(nIndex, 0);
	CString strFilter("[计算机名]=\"");
	strFilter += str;
	strFilter += '\"';
	CDaoRecord& DaoRecord = ((CServerDoc*)GetActiveDocument())->m_daoRecord;
	DaoRecord.FindFirst(strFilter);
	if(DaoRecord.m_nStatus != CLIENT_WORKING && DaoRecord.m_nStatus != CLIENT_ALL_NIGHT)
	{
		str += "未处于工作状态,不能结帐!";
		AfxMessageBox(str, MB_ICONINFORMATION | MB_OK);
		return;
	}

	CCheckOutDialog dlg;
	dlg.m_strName = str;
	dlg.m_strStartTime = clc.GetItemText(nIndex, 1);
	time = CTime::GetCurrentTime();
	dlg.m_strEndTime.Format("%2d:%2d:%2d", time.GetHour(), time.GetMinute(), time.GetSecond());

	dlg.m_strTotalTime = clc.GetItemText(nIndex, 5);
	dlg.m_strCardNum = clc.GetItemText(nIndex, 4);
	dlg.m_strNetPay = clc.GetItemText(nIndex, 6);
	dlg.m_strPrePay = clc.GetItemText(nIndex, 2);
	dlg.m_strAddtionalFree = clc.GetItemText(nIndex, 7);
	dlg.m_strComputerName = str;

	if(dlg.DoModal() == IDOK)
	{
		if(dlg.m_strCardNum != "管理员" && dlg.m_strCardNum != "")
		{
			CDaoLeaguer m_daoLeaguer;
			m_daoLeaguer.Open();
			m_daoLeaguer.MoveFirst();
			strFilter = CString("[用户名称]=\"");
			strFilter += clc.GetItemText(nIndex, 4);
			strFilter += '\"';
			m_daoLeaguer.FindFirst(strFilter);
	
			m_daoLeaguer.Edit();
			m_daoLeaguer.m_fMoney -= (float)atof(dlg.m_strAddtionalFree);
			m_daoLeaguer.m_fMoney -= (float)atof(dlg.m_strNetPay);

			m_daoLeaguer.m_fCountMoney += (float)atof(dlg.m_strAddtionalFree);
			m_daoLeaguer.m_fCountMoney += (float)atof(dlg.m_strNetPay);
			CTime time;
			time = CTime::GetCurrentTime();
			m_daoLeaguer.m_LastUseDate.SetDateTime(time.GetYear(), time.GetMonth(), time.GetDay(), time.GetHour(), time.GetMinute(), time.GetSecond());
			m_daoLeaguer.m_lCountTimes++;
			m_daoLeaguer.m_WorkStatus = 0;
			m_daoLeaguer.Update();

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

		CDaoHistoryFree & DaoHistoryFree = ((CServerDoc*)GetActiveDocument())->m_daoHistoryFree;
		if(DaoRecord.m_timeStart.GetYear() != 0 && DaoRecord.m_timeStart.GetMonth(),DaoRecord.m_timeStart.GetDay() != 0 && DaoRecord.m_timeStart.GetHour() != 0)
		{
			DaoHistoryFree.AddNew();
			DaoHistoryFree.m_strName = clc.GetItemText(nIndex, 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(nIndex, 4);
			float nFree = (float)atof(clc.GetItemText(nIndex, 6));
			DaoHistoryFree.m_Free = nFree;
			nFree = (float)atof(clc.GetItemText(nIndex, 7));
			DaoHistoryFree.m_AddtionalFree = nFree;

			CString strTime = clc.GetItemText(nIndex,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(nIndex, 9);
			DaoHistoryFree.Update();
		}


		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_nStatus = CLIENT_LOCKING;
		DaoRecord.m_strCardNum = "";
		DaoRecord.m_nWorkTime = 0;
	    DaoRecord.m_timeStart.SetDate(0, 0, 0);
	    DaoRecord.m_timeStart.SetTime(0, 0, 0);
		DaoRecord.m_strBak = "";
		DaoRecord.m_nLimitTime = 0;
		DaoRecord.m_fFree = 0.0;
		DaoRecord.m_fPrepay = 0.0;
		DaoRecord.m_fAddtionalFree = 0.0;
		DaoRecord.Update();	
		CString FirstWorkTime = clc.GetItemText(nIndex,5);
		((CServerView*)GetActiveView())->Refurbish(DaoRecord.GetAbsolutePosition());
		SetStatusText();
	}
}


//对指定的客户端换机
void CMainFrame::OnSwitchClient() 
{
	CListCtrl & clc = ((CServerView*)GetActiveView())->GetListCtrl();
	int nIndex;
	POSITION pos = clc.GetFirstSelectedItemPosition();
	if(pos == NULL)
	{
		AfxMessageBox("请选择一台计算机!", MB_ICONINFORMATION | MB_OK);
		return;
	}
	
    CString str;
	nIndex = clc.GetNextSelectedItem(pos);
	str = clc.GetItemText(nIndex, 0);

	CString strFilter("[计算机名]=\"");
	strFilter += str;
	strFilter += '\"';
	CDaoRecord& DaoRecord = ((CServerDoc*)GetActiveDocument())->m_daoRecord;
	DaoRecord.FindNext(strFilter);
	if(DaoRecord.m_nStatus == CLIENT_UNKNOW || DaoRecord.m_nStatus == CLIENT_LOCKING)
	{
		str += "未处于工作状态,不能换机!";
		AfxMessageBox(str, MB_ICONINFORMATION | MB_OK);
		return;
	}
	
	CSwitchComDlg dlg;

	DaoRecord.MoveFirst();
	int nCount = DaoRecord.GetRecordCount();

	for( int i = 0; i < nCount; i++)
	{
		if (DaoRecord.m_nStatus == CLIENT_LOCKING)
			dlg.str.AddTail(DaoRecord.m_strName);
		DaoRecord.MoveNext();
	}

	if (dlg.str.IsEmpty())
	{
		AfxMessageBox("没有可换机器!", MB_ICONINFORMATION | MB_OK);
		return;
	}
	CString strName;
	if (dlg.DoModal() == IDOK)
	{
        if (dlg.m_strSelectName.IsEmpty())// == NULL)
		{
			AfxMessageBox("没有可换机器!", MB_ICONINFORMATION | MB_OK);
			return;
		}

//锁定当前机器
		CString strFilter("[计算机名]=\"");
		strFilter += str;
		strFilter += '\"';
		CDaoRecord& DaoRecord = ((CServerDoc*)GetActiveDocument())->m_daoRecord;
		DaoRecord.MoveFirst();
		DaoRecord.FindNext(strFilter);

		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_nStatus = CLIENT_LOCKING;
		DaoRecord.m_strCardNum = "";
		DaoRecord.m_nWorkTime = 0;
	    DaoRecord.m_timeStart.SetDate(0, 0, 0);
	    DaoRecord.m_timeStart.SetTime(0, 0, 0);
		DaoRecord.m_strBak = "";
		DaoRecord.m_fAddtionalFree = 0.0f;
		DaoRecord.m_fFree = 0.0f;
		DaoRecord.m_fPrepay = 0.0f;
		DaoRecord.m_nLimitTime = 0;
		DaoRecord.Update();	
	
		CString FirstWorkTime = clc.GetItemText(nIndex,5);
		CString m_strCardNum = clc.GetItemText(nIndex,4);
		float m_fPrepay = (float)atof(clc.GetItemText(nIndex,2));
		float m_fFree = (float)atof(clc.GetItemText(nIndex,6));
		float m_fAddtionalFree = (float)atof(clc.GetItemText(nIndex,7));
		int m_nLimitTime = atoi(clc.GetItemText(nIndex,3));

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


//开启新机器		
		strFilter = "[计算机名]=\"";
		strFilter += dlg.m_strSelectName;
		strFilter += '\"';

		DaoRecord.MoveFirst();
		DaoRecord.FindNext(strFilter);

		pSocket = (CCommSocket*)DaoRecord.m_SOCKET;

		strcpy(msg.str, "Start Work!");
		msg.IDCode = CLIENT_START_WORK;
		pSocket->Send(&msg, sizeof(SMessage)); 

⌨️ 快捷键说明

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