MFC 员工管理 cpp 添加 保存 删除 修改 加载
#include "pch.h"
#include "framework.h"
#include "MFCApplication1.h"
#include "MFCApplication1Dlg.h"
#include "afxdialogex.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
class CAboutDlg : public CDialogEx
{
public:
CAboutDlg();
#ifdef AFX_DESIGN_TIME
enum { IDD = IDD_ABOUTBOX };
#endif
protected:
virtual void DoDataExchange(CDataExchange* pDX);
protected:
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialogEx(IDD_ABOUTBOX)
{
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)
END_MESSAGE_MAP()
CMFCApplication1Dlg::CMFCApplication1Dlg(CWnd* pParent )
: CDialogEx(IDD_MFCAPPLICATION1_DIALOG, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CMFCApplication1Dlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CMFCApplication1Dlg, CDialogEx)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDOK, &CMFCApplication1Dlg::OnBnClickedOk)
ON_BN_CLICKED(IDC_ADD, &CMFCApplication1Dlg::OnBnClickedAdd)
ON_BN_CLICKED(IDC_XIUGAI, &CMFCApplication1Dlg::OnBnClickedXiugai)
ON_BN_CLICKED(IDC_DEl, &CMFCApplication1Dlg::OnBnClickedDel)
ON_BN_CLICKED(IDC_SAVE, &CMFCApplication1Dlg::OnBnClickedSave)
ON_BN_CLICKED(IDC_LOAD, &CMFCApplication1Dlg::OnBnClickedLoad)
END_MESSAGE_MAP()
BOOL CMFCApplication1Dlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != nullptr)
{
BOOL bNameValid;
CString strAboutMenu;
bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
ASSERT(bNameValid);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
SetIcon(m_hIcon, TRUE);
SetIcon(m_hIcon, FALSE);
CListCtrl *list=(CListCtrl*)GetDlgItem(IDC_LIST1);
list->InsertColumn(0, _T("工号"),LVCFMT_LEFT,110);
list->InsertColumn(1, _T("姓名"), LVCFMT_LEFT, 180);
list->InsertColumn(2, _T("工资"), LVCFMT_LEFT, 180);
list->InsertColumn(3, _T("入职时间"), LVCFMT_LEFT, 200);
list->SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
list->SetTextBkColor(RGB(205,226,252));
list->SetBkColor(RGB(205, 226, 252));
list->SetTextColor(RGB(0, 0, 252));
return TRUE;
}
void CMFCApplication1Dlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialogEx::OnSysCommand(nID, lParam);
}
}
void CMFCApplication1Dlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this);
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialogEx::OnPaint();
}
}
HCURSOR CMFCApplication1Dlg::OnQueryDragIcon()
{
return static_cast<HCURSOR>(m_hIcon);
}
void CMFCApplication1Dlg::OnBnClickedOk()
{
}
BOOL CMFCApplication1Dlg::CheckNumber(CString str)
{
CListCtrl* list = (CListCtrl*)GetDlgItem(IDC_LIST1);
int i = 0;
int count = list->GetItemCount();
while (i < count)
{
if (list->GetItemText(i, 0) == str)
{
AfxMessageBox(_T("该号码已存在,请重新输入!!"));
SetFocus();
return TRUE;
}
++i;
}
return false;
}
void CMFCApplication1Dlg::OnBnClickedAdd()
{
CListCtrl* list = (CListCtrl*)GetDlgItem(IDC_LIST1);
CString no, name, salsry,date;
GetDlgItemText(IDC_NO,no);
GetDlgItemText(IDC_NAME, name);
GetDlgItemText(IDC_SALARY, salsry);
GetDlgItemText(IDC_DATE, date);
int count = list->GetItemCount();
if (CheckNumber(no))
return;
if (no != _T("") || name != _T("") || salsry != _T(""))
{
list->InsertItem(count, no);
list->SetItemText(count, 1, name);
list->SetItemText(count, 2, salsry);
list->SetItemText(count, 3, date);
}
else
{
AfxMessageBox(_T("请输入需要添加的数据!不为空"));
return;
}
}
void CMFCApplication1Dlg::OnBnClickedXiugai()
{
CListCtrl* list = (CListCtrl*)GetDlgItem(IDC_LIST1);
int count = list->GetSelectionMark();
if (count < 0)
{
AfxMessageBox(_T("请选择修改工号ID"));
}
else
{
CString no, name, salsry, date;
GetDlgItemText(IDC_NO, no);
GetDlgItemText(IDC_NAME, name);
GetDlgItemText(IDC_SALARY, salsry);
GetDlgItemText(IDC_DATE, date);
if (CheckNumber(no))
return;
if (no != _T("") || name != _T("") || salsry != _T(""))
{
list->SetItemText(count,0, no);
list->SetItemText(count, 1, name);
list->SetItemText(count, 2, salsry);
list->SetItemText(count, 3, date);
}
else
{
AfxMessageBox(_T("请输入需要修改的数据!不为空"));
return;
}
}
}
void CMFCApplication1Dlg::OnBnClickedDel()
{
CListCtrl* list = (CListCtrl*)GetDlgItem(IDC_LIST1);
int count = list->GetSelectionMark();
if (count < 0)
{
AfxMessageBox(_T("请选择删除工号ID"));
}
else
{
list->DeleteItem(count);
}
}
void CMFCApplication1Dlg::OnBnClickedSave()
{
CFile file;
if (!file.Open(_T("./Work.dat"), CFile::modeCreate|CFile::modeWrite))
{
AfxMessageBox(_T("保存文件失败!"));
return;
}
Sinfo info;
CListCtrl* list = (CListCtrl*)GetDlgItem(IDC_LIST1);
int i=0, count = list->GetItemCount();
while (i<count)
{
info.nNumb = _tstof(list->GetItemText(i,0));
_tcscpy(info.sName, list->GetItemText(i, 1));
info.fSala = (float)_tstof(list->GetItemText(i, 2));
info.tDate.ParseDateTime(list->GetItemText(i, 3),VAR_DATEVALUEONLY);
file.Write(&info, sizeof(info));
++i;
}
file.Close();
}
void CMFCApplication1Dlg::OnBnClickedLoad()
{
CFile file;
if (!file.Open(_T("./Work.dat"), CFile::modeRead))
{
AfxMessageBox(_T("打开文件失败!"));
return;
}
Sinfo info;
CListCtrl* list = (CListCtrl*)GetDlgItem(IDC_LIST1);
int i = 0;
CString str;
while (file.Read(&info,sizeof(info))==sizeof(info))
{
str.Format(_T("%d"),info.nNumb);
list->InsertItem(i,str);
list->SetItemText(i,1,info.sName);
str.Format(_T("%0.2f"), info.fSala);
list->SetItemText(i, 2, str);
str = info.tDate.Format(_T("%Y年%m月%d日"));
list->SetItemText(i, 3, str);
++i;
}
}
.h 头文件
#pragma once
class CMFCApplication1Dlg : public CDialogEx
{
struct Sinfo{
int nNumb;
TCHAR sName[20];
float fSala;
COleDateTime tDate;
};
public:
CMFCApplication1Dlg(CWnd* pParent = nullptr);
#ifdef AFX_DESIGN_TIME
enum { IDD = IDD_MFCAPPLICATION1_DIALOG };
#endif
protected:
virtual void DoDataExchange(CDataExchange* pDX);
protected:
HICON m_hIcon;
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnBnClickedOk();
afx_msg void OnBnClickedAdd();
afx_msg void OnBnClickedXiugai();
afx_msg void OnBnClickedDel();
afx_msg void OnBnClickedSave();
afx_msg void OnBnClickedLoad();
BOOL CheckNumber(CString str);
};