📄 mainfrm.cpp
字号:
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 + -