亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dlgmodify.cpp

?? 通用的餐飲收費系統:其主要技術是通過計算機串口與IC卡相關設備進行數據交互.
?? CPP
字號:
// DlgModify.cpp : implementation file
//

#include "stdafx.h"
#include "ShoolCard.h"
#include "DlgModify.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif


#include "Card.h"
#include "Config.h"
#include "Global.h"
#include "DlgModifyFee.h"

//全局變量
extern CConfig gConfig;
extern CDatabase gDatabase;

/////////////////////////////////////////////////////////////////////////////
// CDlgModify dialog


CDlgModify::CDlgModify(CWnd* pParent /*=NULL*/)
	: CDialog(CDlgModify::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDlgModify)
	m_CardId = _T("");
	m_Time = 0;
	//}}AFX_DATA_INIT
}


void CDlgModify::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDlgModify)
	DDX_Control(pDX, IDC_LIST1, m_ListControl);
	DDX_Control(pDX, IDC_MSCOMM1, m_ComPort);
	DDX_Text(pDX, IDC_EDIT_CARDID, m_CardId);
	DDX_DateTimeCtrl(pDX, IDC_DATETIMEPICKER1, m_Time);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDlgModify, CDialog)
	//{{AFX_MSG_MAP(CDlgModify)
	ON_WM_SHOWWINDOW()
	ON_WM_TIMER()
	ON_NOTIFY(DTN_DATETIMECHANGE, IDC_DATETIMEPICKER1, OnDatetimechangeDatetimepicker1)
	ON_BN_CLICKED(IDC_BUTTON_DELETE, OnButtonDelete)
	ON_BN_CLICKED(IDC_BUTTON_MODIFY, OnButtonModify)
	ON_WM_CLOSE()
	ON_NOTIFY(DTN_CLOSEUP, IDC_DATETIMEPICKER1, OnCloseupDatetimepicker1)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlgModify message handlers

void CDlgModify::OnShowWindow(BOOL bShow, UINT nStatus) 
{
	CDialog::OnShowWindow(bShow, nStatus);
	
	// TODO: Add your message handler code here
    
    //
	m_Card.m_pDatabase = &gDatabase;
	m_CardUse.m_pDatabase = &gDatabase;

	//打開串口	
	if (!m_ComPort.GetPortOpen())
	{
	    try
		{
			short int nComPort = CGlobal::ComStrToInt(gConfig.Port);
		    m_ComPort.SetCommPort(nComPort);
			CString strSetting = gConfig.Speed + ','
				                +gConfig.CheckBit.GetAt(0) + ','
								+gConfig.DataBit + ','
								+gConfig.StopBit;
			m_ComPort.SetSettings(strSetting);
			m_ComPort.SetPortOpen(true);
		}
		catch(CException ee)
		{
			MessageBox("串口不能打開,請檢查串口的配置!");
			return;
		}

	}
    //設置時間消息
	m_Timer = SetTimer(1000,1000,0);
	//設置timepicker 的當前時間
    m_Time = CTime::GetCurrentTime();
	UpdateData(VAR2CON);//
	//初始化listview的表頭
	InitListView();
	//初始化其他數據
	OnCloseupDatetimepicker1(NULL,NULL);
}

void CDlgModify::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	CByteArray mByteAry;
	CByteArray mIn;

    //構造上位機報文
	mByteAry.SetSize(5);
	mByteAry.SetAt(0,0x0f);
	mByteAry.SetAt(1,0xf0);
	mByteAry.SetAt(2,0x5);
	mByteAry.SetAt(3,0x1);
	mByteAry.SetAt(4,CGlobal::CalCheck(&mByteAry,0,3));

    //發讀第一區的命令
	m_ComPort.SetOutput(COleVariant(mByteAry));
    //等待讀卡機的應答信息
    Sleep(60);
	//讀串口信息
	if (m_ComPort.GetInBufferCount() != 13) 
	{
		//下位機不應答,表示沒有卡放入
        m_CardId = "00001";
		//更新界面
        CWnd *pWnd = GetDlgItem(IDC_EDIT_CARDID);
		pWnd->SetWindowText(m_CardId);
		return;
	}
    //將下位機報文接受到緩沖區
	mIn.SetSize(13);
    COleVariant olearray = m_ComPort.GetInput();
	for(int i=0;i<13;i++)
		mIn.SetAt(i,((unsigned char *)olearray.parray->pvData)[i]);
	//檢查校驗位
	if(!CGlobal::IsArrayValid(&mIn)) return;
    //從應答的報文中解析卡號
	CString strCardId = "";
	strCardId += (char)mIn.GetAt(4);
	strCardId += (char)mIn.GetAt(5);
	strCardId += (char)mIn.GetAt(6);
	strCardId += (char)mIn.GetAt(7);
	strCardId += (char)mIn.GetAt(8);
	////在用戶界面中顯示卡號
	CWnd *pWnd = GetDlgItem(IDC_EDIT_CARDID);
	pWnd->SetWindowText(strCardId);
	pWnd->SetFocus();
	//調用基類處理函數 
	CDialog::OnTimer(nIDEvent);
}

void CDlgModify::OnDatetimechangeDatetimepicker1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	//*pResult = 0;
}

void CDlgModify::OnButtonDelete() 
{
	// TODO: Add your control notification handler code here
	UpdateData(CON2VAR);
    //調試使用
	ASSERT(m_CardUse.IsOpen());
	
	//獲取用戶選擇的卡使用記錄
	int nIndex = m_ListControl.GetNextItem(-1, LVNI_SELECTED); 
	if (nIndex < 0)
	{
	    MessageBox("請選擇要刪除的消費記錄!");
		return;
	}
	
	//m_CardUse.m_pDatabase = &gDatabase;
	gDatabase.BeginTrans();

	m_CardUse.MoveFirst();
	m_CardUse.Move(nIndex);
	//保存數據
	double mMoney = m_CardUse.m_money;
	m_CardUse.Delete();

    //m_Card.m_pDatabase = &gDatabase;
    m_Card.m_strFilter = "card_id = '" + m_CardId + "'";
	if(m_Card.IsOpen()) m_Card.Close();
	//重新獲卡的取信息
	m_Card.Open();
    ASSERT(m_Card.GetRecordCount() == 1);
	m_Card.Edit();
	//將多余的消費金額重新寫入卡
    m_Card.m_money = m_Card.m_money + mMoney;
	m_Card.Update();
	//同步數據庫中的金額和卡中的金額
    if(this->WriteMoney(m_Card.m_money) < 0 ) 
	{
	     MessageBox("讀寫卡錯誤,數據修改失敗!");
		 gDatabase.Rollback();
		 //用后臺數據更新前臺界面
	     OnCloseupDatetimepicker1(NULL,NULL);
		 return;
	}
	//提交事務
	gDatabase.CommitTrans();
	MessageBox("錯誤修改操作成功!");
	//用后臺數據更新前臺界面
	OnCloseupDatetimepicker1(NULL,NULL);
}

void CDlgModify::OnButtonModify() 
{
	UpdateData(CON2VAR);

    //調試使用
	ASSERT(m_CardUse.IsOpen());
	
	//獲取用戶選擇的卡使用記錄
	int nIndex = m_ListControl.GetNextItem(-1, LVNI_SELECTED); 
	if (nIndex < 0)
	{
	    MessageBox("請選擇要刪除的消費記錄!");
		return;
	}

	m_CardUse.MoveFirst();
	m_CardUse.Move(nIndex);
	//保存數據
	double mMoney = m_CardUse.m_money;
	//顯示修改費用窗體
	CDlgModifyFee dlg;
	dlg.m_ErrorMoney = mMoney;
	dlg.m_RealMoney = 0.0;
	//更新修改費用窗體界面
	//dlg.UpdateData(VAR2CON);
	if(dlg.DoModal() == IDCANCEL) return;
    
	//dlg.UpdateData(CON2VAR);
    //m_CardUse.m_pDatabase = &gDatabase;
	gDatabase.BeginTrans();
	m_CardUse.Edit();
	m_CardUse.m_money = dlg.m_RealMoney;
	m_CardUse.Update();

    m_Card.m_strFilter = "card_id = '" + m_CardId + "'";
	//m_CardUse.m_pDatabase = &gDatabase;
	if(m_Card.IsOpen()) m_Card.Close();
	//重新獲卡的取信息
	m_Card.Open();
    ASSERT(m_Card.GetRecordCount() == 1);
	m_Card.Edit();
	//將多余的消費金額重新寫入卡
    m_Card.m_money = m_Card.m_money + dlg.m_ErrorMoney - dlg.m_RealMoney;
	m_Card.Update();
	//同步數據庫中的金額和卡中的金額
    if(this->WriteMoney(m_Card.m_money) < 0 ) 
	{
	     MessageBox("讀寫卡錯誤,數據修改失??!");
		 gDatabase.Rollback();
		 //用后臺數據更新前臺界面
	     OnCloseupDatetimepicker1(NULL,NULL);
		 return;
	}
	//提交事務
	gDatabase.CommitTrans();
	MessageBox("錯誤修改操作成功!");
	//用后臺數據更新前臺界面
	OnCloseupDatetimepicker1(NULL,NULL);
}

void CDlgModify::OnClose() 
{
	// TODO: Add your message handler code here and/or call default
	if(m_Timer) KillTimer(m_Timer);
	if(m_ComPort.GetPortOpen()) m_ComPort.SetPortOpen(false);
	if(m_CardUse.IsOpen()) m_CardUse.Close();
	CDialog::OnClose();
}

void CDlgModify::OnCloseupDatetimepicker1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	UpdateData(CON2VAR);
	CString str;
	str.Format("%d-%d-%d",m_Time.GetYear(),m_Time.GetMonth(),m_Time.GetDay());
	m_CardUse.m_strFilter = "use_date >= '" + str + "'";
	CTime tmpTime(m_Time.GetYear(),
		          m_Time.GetMonth(),
				  m_Time.GetDay()+1,0,0,0);
	str.Format("%d-%d-%d",tmpTime.GetYear(),tmpTime.GetMonth(),tmpTime.GetDay());
	m_CardUse.m_strFilter = m_CardUse.m_strFilter + " " + "and use_date < '" + str + "'";
	m_CardUse.m_strFilter = m_CardUse.m_strFilter + " " + " and card_id = '" + m_CardId + "'";
    if(m_CardUse.IsOpen()) m_CardUse.Close();
	if(!m_CardUse.Open())
	{
	    MessageBox("數據表不能打開!");
		return;
	}
	//用后臺數據更新前臺界面
    FillListView();
	ConfigButtons();
	
	//*pResult = 0;
}

void CDlgModify::FillListView()
{
	ASSERT(m_CardUse.IsOpen());
	//清除原來的數據
	m_ListControl.DeleteAllItems();
    if(m_CardUse.GetRecordCount() <= 0) return;

	int nRow = 0;
	m_CardUse.MoveFirst();
	while(!m_CardUse.IsEOF())
	{
	    m_ListControl.InsertItem(nRow,"");
		m_ListControl.SetItemText(nRow,0,m_CardUse.m_card_id);
		CString str;
		str.Format("%f",m_CardUse.m_money);
		m_ListControl.SetItemText(nRow,1,str);
		str.Format("%d-%d-%d"
			,m_CardUse.m_use_date.GetYear()
			,m_CardUse.m_use_date.GetMonth()
			,m_CardUse.m_use_date.GetDay());
		m_ListControl.SetItemText(nRow,2,str);
	    //移動數據庫游標	
		nRow++;
		m_CardUse.MoveNext();   
	}
}

void CDlgModify::InitListView()
{
    m_ListControl.InsertColumn(0,"卡號");
	m_ListControl.InsertColumn(1,"消費金額");
	m_ListControl.InsertColumn(2,"消費日期");

	m_ListControl.SetColumnWidth(0,100);
	m_ListControl.SetColumnWidth(1,150);
	m_ListControl.SetColumnWidth(2,150);

}

void CDlgModify::ConfigButtons()
{
	//?m_ListControl.Get
	if(m_CardUse.GetRecordCount() < 1)
	{
		CWnd *pWnd = GetDlgItem(IDC_BUTTON_DELETE);
		pWnd->EnableWindow(false);
		pWnd = GetDlgItem(IDC_BUTTON_MODIFY);
		ASSERT(pWnd != NULL);
		pWnd->EnableWindow(false);
	}
	else
	{
	    CWnd *pWnd = GetDlgItem(IDC_BUTTON_DELETE);
		pWnd->EnableWindow(true);
		pWnd = GetDlgItem(IDC_BUTTON_MODIFY);
		ASSERT(pWnd != NULL);
		pWnd->EnableWindow(true);
	}
}

short int CDlgModify::WriteMoney(float AMoney)
{
    //for debug
	return 1;
    //======================串口操作==================
	CByteArray mByteAry;
	CByteArray mIn;

	//構造上位機報文
	mByteAry.SetSize(13);
	mByteAry.SetAt(0,0x0f);
	mByteAry.SetAt(1,0xf0);
	mByteAry.SetAt(2,0x03);//寫命令
	mByteAry.SetAt(3,0x03);//第3區

    char chMoney[6];
	//轉換為整數
	int nMoney = AMoney * 100;
	//取出每一位
    for(int i=0 ;i<6 ;i++)
	{
		chMoney[i] = nMoney % 10;
		nMoney = nMoney /10;
	}
	
	//卡中的金額數據寫入
	mByteAry.SetAt(4,CGlobal::Encrypt(chMoney[0]));
	mByteAry.SetAt(5,CGlobal::Encrypt(chMoney[1]));
	mByteAry.SetAt(6,CGlobal::Encrypt(chMoney[2]));
	mByteAry.SetAt(7,CGlobal::Encrypt(chMoney[3]));
	mByteAry.SetAt(8,CGlobal::Encrypt(chMoney[4]));
	mByteAry.SetAt(9,CGlobal::Encrypt(chMoney[5]));
	
	mByteAry.SetAt(10,CGlobal::CalMoneyCheck(&mByteAry,4,9));
	mByteAry.SetAt(11,0xff);//數據區以FF結尾
	//計算報文的校驗位
	mByteAry.SetAt(12,CGlobal::CalCheck(&mByteAry,0,12));

    //發讀第一區的命令
	m_ComPort.SetOutput(COleVariant(mByteAry));
    //等待讀卡機的應答信息
    Sleep(60);
	//讀串口信息
	if (m_ComPort.GetInBufferCount() != 6) 
	{
		return -2;
	}
    //將下位機報文接受到緩沖區
	mIn.SetSize(13);
    COleVariant olearray = m_ComPort.GetInput();
	for(i=0;i<13;i++)
		mIn.SetAt(i,((unsigned char *)olearray.parray->pvData)[i]);
	//檢查校驗位
	if(!CGlobal::IsArrayValid(&mIn) || (mIn.GetAt(4) != 0x0f)) 
		return -3;

    return 1;

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品一区二区在线播放| 亚洲裸体在线观看| 99re热视频这里只精品| 中文字幕不卡的av| 91在线视频观看| 一区二区三区四区精品在线视频| 在线亚洲一区观看| 五月天一区二区三区| 日韩欧美的一区二区| 国产精品综合久久| 国产精品电影一区二区三区| 91亚洲精品一区二区乱码| 一区二区视频在线| 69av一区二区三区| 国产在线精品一区二区| 国产精品网站导航| 欧美三级韩国三级日本一级| 日本伊人精品一区二区三区观看方式| 精品久久国产97色综合| 国产一区二区三区免费| 《视频一区视频二区| 欧美午夜电影网| 精品无人码麻豆乱码1区2区 | 欧美精选在线播放| 久久精品国产亚洲5555| 国产喷白浆一区二区三区| 91美女视频网站| 男男成人高潮片免费网站| 亚洲国产高清在线| 欧美日韩一区二区在线观看| 久久99国产精品麻豆| 亚洲欧美经典视频| 最新热久久免费视频| 欧美精品在欧美一区二区少妇| 国产美女精品人人做人人爽| 亚洲欧美激情插| 亚洲精品在线观看网站| 在线观看亚洲精品视频| 狠狠色丁香九九婷婷综合五月| 日韩毛片一二三区| 欧美不卡激情三级在线观看| 色悠久久久久综合欧美99| 九九久久精品视频| 亚洲国产一区二区三区青草影视 | 99精品视频一区二区三区| 日韩电影一二三区| 亚洲欧洲精品一区二区精品久久久| 91精品国产黑色紧身裤美女| 91玉足脚交白嫩脚丫在线播放| 黄页网站大全一区二区| 亚洲大片在线观看| 亚洲三级在线免费| 国产欧美精品一区二区三区四区| 欧美日韩在线播放三区| 91蜜桃在线观看| 风间由美一区二区av101| 麻豆精品蜜桃视频网站| 亚洲福利一二三区| √…a在线天堂一区| 欧美国产一区二区在线观看| 欧美电影免费观看高清完整版| 欧美三级欧美一级| 日本韩国一区二区三区| 92精品国产成人观看免费| 懂色av一区二区三区免费观看| 久久99精品一区二区三区| 色婷婷av久久久久久久| 国产91精品免费| 国产在线一区二区综合免费视频| 奇米精品一区二区三区在线观看一 | 国产精品欧美极品| 欧美精品一区二区蜜臀亚洲| 欧美一级欧美三级| 欧美一区二区三区四区视频 | 国产白丝网站精品污在线入口| 久久99精品国产麻豆婷婷| 青青草一区二区三区| 免费黄网站欧美| 久久99日本精品| 激情久久久久久久久久久久久久久久 | 在线欧美日韩国产| 在线观看视频一区| 欧美性生交片4| 欧美日韩久久久久久| 欧美久久久久久蜜桃| 欧美军同video69gay| 在线综合亚洲欧美在线视频| 欧美一区国产二区| www国产成人免费观看视频 深夜成人网| 日韩视频在线你懂得| 久久综合资源网| 国产欧美一区二区精品仙草咪| 日韩电影免费在线看| 久久精品国产**网站演员| 国产麻豆精品视频| 成人免费视频一区| 色综合天天综合在线视频| 色吧成人激情小说| 制服丝袜av成人在线看| 日韩欧美123| 国产亚洲成年网址在线观看| 国产精品高潮呻吟| 亚洲一区二区三区四区在线| 亚洲免费视频成人| 日韩精品一级二级| 国产一区二区三区高清播放| 久久66热re国产| 成人国产亚洲欧美成人综合网 | 奇米综合一区二区三区精品视频 | 亚洲综合偷拍欧美一区色| 天堂久久一区二区三区| 国产一区二区三区不卡在线观看| 岛国av在线一区| 色诱视频网站一区| 欧美第一区第二区| 亚洲特黄一级片| 日产国产欧美视频一区精品| 国产风韵犹存在线视精品| 色偷偷成人一区二区三区91| 91精品国产综合久久香蕉麻豆| 国产亚洲综合性久久久影院| 亚洲一区二区视频在线观看| 久草中文综合在线| 91黄视频在线| 亚洲精品在线观看网站| 亚洲精品成人天堂一二三| 久久黄色级2电影| 色综合久久天天综合网| 91精品免费观看| 国产精品午夜电影| 三级成人在线视频| aaa欧美色吧激情视频| 日韩色视频在线观看| 一区二区三区四区蜜桃| 国产黄色成人av| 91精品欧美福利在线观看| 亚洲裸体在线观看| 久久精品国产精品青草| 欧美午夜精品免费| 自拍偷自拍亚洲精品播放| 国产一区福利在线| 91精品综合久久久久久| 亚洲乱码国产乱码精品精的特点| 精品影视av免费| 欧美老女人第四色| 亚洲最新在线观看| 成人午夜av在线| 26uuu亚洲综合色欧美| 亚洲成av人片一区二区梦乃 | 椎名由奈av一区二区三区| 精品亚洲国内自在自线福利| 欧美精品色一区二区三区| 国产高清在线精品| 日韩欧美中文字幕精品| 亚洲国产精品影院| 91福利在线播放| 亚洲你懂的在线视频| 成人av网站大全| 国产拍欧美日韩视频二区| 国产一区二区在线观看免费| 玉米视频成人免费看| 欧美日韩一区视频| 欧美性猛交一区二区三区精品| 日韩和的一区二区| 久久综合久久鬼色中文字| 欧美私人免费视频| 日韩精品一二三区| 精品人伦一区二区色婷婷| 欧美日韩精品免费观看视频 | 日本在线播放一区二区三区| 国产日韩三级在线| 国产三级欧美三级| 5858s免费视频成人| 亚洲第一成人在线| 中文字幕欧美三区| 91色|porny| 男女男精品视频| 国产午夜亚洲精品不卡| 欧美日韩三级视频| 91久久香蕉国产日韩欧美9色| 亚洲免费av高清| 91.成人天堂一区| 亚洲欧美日韩在线| 国产成人免费网站| 91在线视频18| 欧美日韩亚洲丝袜制服| 欧美日本一区二区在线观看| 成人免费视频免费观看| 天天操天天干天天综合网| 亚洲视频在线一区观看| 欧美成人一区二区三区片免费| 91免费观看国产| 成人av电影在线播放| 久久丁香综合五月国产三级网站| 亚洲女人****多毛耸耸8| 中文字幕在线一区二区三区| 久久久精品免费免费| 国产日韩欧美a| 国产精品毛片无遮挡高清| www一区二区|