📄 foodmanagedlg.cpp
字号:
// FoodManageDlg.cpp : implementation file
//
#include "stdafx.h"
#include "Server.h"
#include "FoodManageDlg.h"
#include "MainFrm.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CFoodManageDlg dialog
CFoodManageDlg::CFoodManageDlg(CWnd* pParent /*=NULL*/)
: CDialog(CFoodManageDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CFoodManageDlg)
m_strName = _T("");
m_strNumbers = _T("");
m_strPrice = _T("");
m_pParent = pParent;
m_nID = CFoodManageDlg::IDD;
//}}AFX_DATA_INIT
}
void CFoodManageDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CFoodManageDlg)
DDX_Control(pDX, IDC_FOOD_LIST, m_CtrlList);
DDX_Text(pDX, IDC_NAME_EDIT, m_strName);
DDX_Text(pDX, IDC_NUMBERS_EDIT, m_strNumbers);
DDX_Text(pDX, IDC_PRICE_EDIT, m_strPrice);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CFoodManageDlg, CDialog)
//{{AFX_MSG_MAP(CFoodManageDlg)
ON_BN_CLICKED(IDC_ADD, OnAddFood)
ON_BN_CLICKED(IDC_MODIFY, OnModifyFood)
ON_BN_CLICKED(IDC_DELETE, OnDeleteFood)
ON_NOTIFY(LVN_ITEMCHANGED, IDC_FOOD_LIST, OnItemchangedFoodList)
ON_BN_CLICKED(IDC_SAVE, OnSaveFood)
ON_BN_CLICKED(IDC_EXIT, OnExit)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CFoodManageDlg message handlers
BOOL CFoodManageDlg::OnInitDialog()
{
CDialog::OnInitDialog();
CMenu* pSysMenu = GetSystemMenu(FALSE);
pSysMenu->ModifyMenu(SC_CLOSE,MF_BYCOMMAND | MF_GRAYED );
char * ItemName[] ={ "商品名称", "单价(元)", "数 量"};
LV_COLUMN lv;
m_CtrlList.ModifyStyle(NULL, LVS_REPORT);
int nColumnCount = m_CtrlList.GetHeaderCtrl()->GetItemCount();
for (int i=0;i < nColumnCount;i++)
{
m_CtrlList.DeleteColumn(0);
}
lv.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH ;
lv.fmt = LVCFMT_LEFT ;
for (i = 0; i < 3; i++)
{
lv.cx = 5 * m_CtrlList.GetStringWidth(ItemName[i]) / 3;
lv.pszText = ItemName[i];
m_CtrlList.InsertColumn(i, &lv);
}
m_CtrlList.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
m_CtrlList.ModifyStyleEx(0, WS_EX_CLIENTEDGE);
DaoRecord.Open();
if(!(DaoRecord.IsBOF() && DaoRecord.IsEOF()))
{
DaoRecord.MoveLast();
int nCount = DaoRecord.GetRecordCount();
DaoRecord.MoveFirst();
for(i = 0; i < nCount; i++)
{
CString str;
m_CtrlList.InsertItem(i, DaoRecord.m_Name);
str.Format("%.1f",DaoRecord.m_Price);
m_CtrlList.SetItemText(i, 1, str);
str.Format("%d",DaoRecord.m_Numbers);
m_CtrlList.SetItemText(i, 2, str);
DaoRecord.MoveNext();
}
}
DaoRecord.Close();
this->m_strName = m_CtrlList.GetItemText(0,0);
this->m_strPrice = m_CtrlList.GetItemText(0,1);
this->m_strNumbers = m_CtrlList.GetItemText(0,2);
UpdateData(false);
return TRUE;
}
//添加商品
void CFoodManageDlg::OnAddFood()
{
UpdateData(true);
this->m_strName.TrimLeft();
this->m_strName.TrimRight();
LVFINDINFO info;
info.flags = LVFI_STRING;
info.psz = this->m_strName;
int iRecordNum = m_CtrlList.FindItem(&info);
if(iRecordNum != -1)
{
AfxMessageBox("不能添加同名的商品!", MB_ICONINFORMATION | MB_OK);
return;
}
int nCount = m_CtrlList.GetItemCount();
if(this->m_strName != "")
{
m_CtrlList.InsertItem(nCount, this->m_strName);
m_CtrlList.SetItemText(nCount, 1, this->m_strPrice);
m_CtrlList.SetItemText(nCount, 2, this->m_strNumbers);
DaoRecord.Open();
DaoRecord.AddNew();
DaoRecord.m_Name = this->m_strName;
DaoRecord.m_Numbers = atoi(this->m_strNumbers);
DaoRecord.m_Price = (float)atof(this->m_strPrice);
DaoRecord.Update();
DaoRecord.Close();
}
else
{
AfxMessageBox("没有要添加的商品!", MB_ICONINFORMATION | MB_OK);
}
}
//修改商品资料
void CFoodManageDlg::OnModifyFood()
{
UpdateData(true);
LVFINDINFO info;
info.flags = LVFI_STRING;
this->m_strName.TrimLeft();
this->m_strName.TrimRight();
info.psz = this->m_strName;
int iRecordNum = m_CtrlList.FindItem(&info);
if(iRecordNum == -1)
{
AfxMessageBox("不能修改商品的名称!", MB_ICONINFORMATION | MB_OK);
return;
}
m_CtrlList.SetItemText(iRecordNum, 1, this->m_strPrice);
DaoRecord.Open();
CString strFilter("[Name]=\"");
strFilter += m_strName;
strFilter += '\"';
if (DaoRecord.FindFirst(strFilter))
{
DaoRecord.Edit();
DaoRecord.m_Numbers += atoi(this->m_strNumbers);
DaoRecord.m_Price = (float)atof(this->m_strPrice);
DaoRecord.Update();
CString str;
str.Format("%d", DaoRecord.m_Numbers);
m_CtrlList.SetItemText(iRecordNum, 2, str);
AfxMessageBox("商品资料修改成功!", MB_ICONINFORMATION | MB_OK);
}
DaoRecord.Close();
}
//删除商品
void CFoodManageDlg::OnDeleteFood()
{
POSITION pos = m_CtrlList.GetFirstSelectedItemPosition();
if(pos == NULL)
{
AfxMessageBox("请选择要删除的商品!", MB_ICONINFORMATION | MB_OK);
return;
}
CString strName;
int nIndex = m_CtrlList.GetNextSelectedItem(pos);
strName = m_CtrlList.GetItemText(nIndex, 0);
if(MessageBox("真的要删除 <" + strName + "> 商品?", "提示信息", MB_OKCANCEL | MB_ICONEXCLAMATION) == IDCANCEL)
return;
DaoRecord.Open();
while(pos)
{
nIndex = m_CtrlList.GetNextSelectedItem(pos);
CString str = m_CtrlList.GetItemText(nIndex, 0);
m_CtrlList.DeleteItem(nIndex);
CString strFilter("[Name]=\"");
strFilter += str;
strFilter += '\"';
if (DaoRecord.FindFirst(strFilter))
DaoRecord.Delete();
}
DaoRecord.Close();
}
void CFoodManageDlg::OnItemchangedFoodList(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
POSITION pos = m_CtrlList.GetFirstSelectedItemPosition();
while (pos)
{
int nIndex = m_CtrlList.GetNextSelectedItem(pos);
this->m_strName = m_CtrlList.GetItemText(nIndex, 0);
this->m_strPrice = m_CtrlList.GetItemText(nIndex, 1);
this->m_strNumbers = m_CtrlList.GetItemText(nIndex, 2);
UpdateData(false);
}
*pResult = 0;
}
//保存修改
void CFoodManageDlg::OnSaveFood()
{
DaoRecord.Open();
if(!(DaoRecord.IsBOF() &&DaoRecord.IsEOF()))
{
DaoRecord.MoveLast();
int nCount = DaoRecord.GetRecordCount();
DaoRecord.MoveFirst();
for(int i = 0; i < nCount; i++)
{
DaoRecord.Delete();
DaoRecord.MoveNext();
}
}
int nCount = m_CtrlList.GetItemCount();
for(int i = 0; i < nCount; i++)
{
DaoRecord.AddNew();
DaoRecord.m_Name = m_CtrlList.GetItemText(i, 0);
DaoRecord.m_Price = (float)atof(m_CtrlList.GetItemText(i, 1));
DaoRecord.m_Numbers = atoi(m_CtrlList.GetItemText(i, 2));
DaoRecord.Update();
}
DaoRecord.Close();
CDialog::OnOK();
}
void CFoodManageDlg::OnExit()
{
((CMainFrame*)m_pParent)->CloseFoodWindow();
DestroyWindow();
}
BOOL CFoodManageDlg::Create()
{
return CDialog::Create(m_nID, m_pParent);
}
void CFoodManageDlg::PostNcDestroy()
{
CDialog::PostNcDestroy();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -