MFC管理系统

这篇具有很好参考价值的文章主要介绍了MFC管理系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

登录

设置登录界面

MFC管理系统,mfc,c++
初始化窗口实列
MFC管理系统,mfc,c++添加控件变量
MFC管理系统,mfc,c++

登录用户判断

void CLoginDlg::OnBnClickedBtnLogin()
{
	UpdateData(TRUE);
	if (m_strUsername.IsEmpty() || m_strPassword.IsEmpty())
	{
		MessageBox(L"用户名或者密码为空", L"提示");
		return;
	}

	if (m_strUsername == L"admin" && m_strPassword == L"123456")
	{
		//成功
		EndDialog(IDOK);
	}
	else
	{
		MessageBox(_T("登陆失败"), L"提示");
		return;
	}

}

MFC管理系统,mfc,c++

界面设计

MFC管理系统,mfc,c++

嵌入对话框

MFC管理系统,mfc,c++
MFC管理系统,mfc,c++

CFrameDlg m_frameDlg;
BOOL CStudentSystemDlg::OnInitDialog()
{
	CDialogEx::OnInitDialog();

	// 设置此对话框的图标。  当应用程序主窗口不是对话框时,框架将自动
	//  执行此操作
	SetIcon(m_hIcon, TRUE);			// 设置大图标
	SetIcon(m_hIcon, FALSE);		// 设置小图标

	m_frameDlg.Create(IDD_FRAME_DLG,this);
	//获取客户去的宽和高
	CRect rect;
	GetClientRect(&rect);

	m_frameDlg.MoveWindow(100, 90, rect.Width()-150, rect.Height()-150);
	m_frameDlg.ShowWindow(SW_SHOW);

	return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}

MFC管理系统,mfc,c++

WM_SIZE 消息设置窗口大小变化

void CStudentSystemDlg::OnSize(UINT nType, int cx, int cy)
{
	CDialogEx::OnSize(nType, cx, cy);

	if (m_frameDlg.GetSafeHwnd())
	{
		//获取客户去的宽和高
		CRect rect;
		GetClientRect(&rect);
		m_frameDlg.MoveWindow(100, 90, rect.Width() - 150, rect.Height() - 150);
	}
}

MFC管理系统,mfc,c++

添加列表

MFC管理系统,mfc,c++
MFC管理系统,mfc,c++

初始化列表

BOOL CFrameDlg::OnInitDialog()
{
	CDialogEx::OnInitDialog();

	m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);//拓展风格
	m_list.InsertColumn(0, L"工号", LVCFMT_LEFT, 100);
	m_list.InsertColumn(1, L"姓名", LVCFMT_LEFT, 100);
	m_list.InsertColumn(2, L"性别", LVCFMT_LEFT, 100);
	m_list.InsertColumn(3, L"年龄", LVCFMT_LEFT, 100);
	m_list.InsertColumn(4, L"兴趣爱好", LVCFMT_LEFT, 100);
	m_list.InsertColumn(5, L"部门", LVCFMT_LEFT, 100);
	m_list.InsertColumn(6, L"职位", LVCFMT_LEFT, 100);
	m_list.InsertColumn(7, L"试用薪资", LVCFMT_LEFT, 100);
	m_list.InsertColumn(8, L"转正薪资", LVCFMT_LEFT, 100);
	m_list.InsertColumn(9, L"入职时间", LVCFMT_LEFT, 100);
	m_list.InsertColumn(10, L"转正时间", LVCFMT_LEFT, 100);
	m_list.InsertColumn(11, L"离职时间", LVCFMT_LEFT, 100);
	m_list.InsertColumn(12, L"联系电话", LVCFMT_LEFT, 100);
	m_list.InsertColumn(13, L"家庭住址", LVCFMT_LEFT, 100);
	return TRUE;  
}

MFC管理系统,mfc,c++

WM_SIZE 消息设置列表大小

void CFrameDlg::OnSize(UINT nType, int cx, int cy)
{
	CDialogEx::OnSize(nType, cx, cy);

	if (m_list.GetSafeHwnd())
	{
		m_list.MoveWindow(0,0,cx,cy);
	}
}

添加员工

添加员工对话框
MFC管理系统,mfc,c++
添加类
MFC管理系统,mfc,c++> 添加控件变量
MFC管理系统,mfc,c++

设置按钮

//添加员工
void CStudentSystemDlg::OnBnClickedBtnAdd()
{
	CAddDlg dlg;
	if (IDCANCEL == dlg.DoModal())
	{
		return;
	}
}

MFC管理系统,mfc,c++

添加下拉框内容

BOOL CAddDlg::OnInitDialog()
{
	CDialogEx::OnInitDialog();

	M_department.AddString(L"研发部");
	M_department.AddString(L"人事部");
	M_department.AddString(L"行政部");
	M_department.AddString(L"财务部");
	M_department.AddString(L"销售部");
	M_department.SetCurSel(0);
	m_position.AddString(L"C++");
	m_position.AddString(L"Java");
	m_position.AddString(L"人事专员");
	m_position.AddString(L"行政专员");
	m_position.AddString(L"会计");
	m_position.AddString(L"销售经理");
	m_position.SetCurSel(0);
	return TRUE; 
}

MFC管理系统,mfc,c++

添加按钮

判断工号是否为空

//添加
void CAddDlg::OnBnClickedBtnAdd()
{
	
	//判断工号
	UpdateData(TRUE);
	if (m_nWorkNum.IsEmpty() || m_strName.IsEmpty())
	{
		MessageBox(L"请先填写工号或者姓名");
		return;
	}
	//获取到下拉框的值
	CString str;
	M_department.GetWindowText(str);
	m_strDepartment = str;

	
	m_position.GetWindowText(str);
	m_strPosition = str;


	//添加玩后关闭窗口
	EndDialog(IDOK);
}

MFC管理系统,mfc,c++

完成添加员工

//添加员工
void CStudentSystemDlg::OnBnClickedBtnAdd()
{
	CAddDlg dlg;
	if (IDCANCEL == dlg.DoModal())
	{
		return;
	}


	//获取列表总函数
	int nCount = this->m_frameDlg.m_list.GetItemCount();
	//工号数据添加到列表中
	//CString str;
	//str.Format(L"%0.5d", dlg.m_nWorkNum);
	this->m_frameDlg.m_list.InsertItem(nCount, dlg.m_nWorkNum);

	//姓名插入
	this->m_frameDlg.m_list.SetItemText(nCount, 1, dlg.m_strName);

	//性别
	CString strSex = dlg.m_nSex ==1? L"女" : L"男";//如果是1就是女,是0就是男
	this->m_frameDlg.m_list.SetItemText(nCount, 2, strSex);

	//年龄
	CString str;
	//str.Format(L"%0.5d", dlg.m_nAge);
	this->m_frameDlg.m_list.SetItemText(nCount, 3, dlg.m_nAge);

	//兴趣
	str.Empty();
	if (dlg.m_bClimb)
		str += L"爬山;";
	if (dlg.m_bKsing)
		str += "唱歌;";
	if (dlg.m_bPlay)
		str += "打游戏;";
	if (dlg.m_bRead)
		str += "读书;";
	this->m_frameDlg.m_list.SetItemText(nCount, 4, str);

	//部门
	this->m_frameDlg.m_list.SetItemText(nCount, 5,dlg.m_strDepartment);

	//职位
	this->m_frameDlg.m_list.SetItemText(nCount, 6, dlg.m_strPosition);

	//试用薪资
	str.Format(L"%.2f", dlg.m_fTempsalary);
	this->m_frameDlg.m_list.SetItemText(nCount, 7, str);
	//转正薪资
	str.Format(L"%.2f", dlg.m_fTempsalary);
	this->m_frameDlg.m_list.SetItemText(nCount, 8, str);

	//入职时间
	str = dlg.m_joinTime.Format(L"%Y-%m-%d");
	this->m_frameDlg.m_list.SetItemText(nCount, 9, str);

	//转正时间
	str = dlg.m_officialTime.Format(L"%Y-%m-%d");
	this->m_frameDlg.m_list.SetItemText(nCount, 10, str);

	str = dlg.m_leaveTime.Format(L"%Y-%m-%d");
	this->m_frameDlg.m_list.SetItemText(nCount, 11, str);

	//联系电话
	this->m_frameDlg.m_list.SetItemText(nCount, 12, dlg.m_tel);

	//家庭住址

	this->m_frameDlg.m_list.SetItemText(nCount, 13, dlg.m_strAddress);
}

MFC管理系统,mfc,c++

删除员工

//删除
void CStudentSystemDlg::OnBnClickedBtnDelete()
{
	POSITION pos=m_frameDlg.m_list.GetFirstSelectedItemPosition();//获取删除位置
	int nSel=m_frameDlg.m_list.GetNextSelectedItem(pos);//获取选中
	if (nSel < 0)//没有选
	{
		MessageBox(L"请您选中之后在删除");
		return;
	}
	m_frameDlg.m_list.DeleteItem(nSel);

	//删除所有
	//m_frameDlg.m_list.DeleteAllItems();

}

修改员工信息

做一个和添加一样的对话框
MFC管理系统,mfc,c++添加类
MFC管理系统,mfc,c++

修改

//修改
void CModifyDlg::OnBnClickedBtnModify()
{
	//判断工号
	UpdateData(TRUE);
	if (m_nWorkNum.IsEmpty() || m_strName.IsEmpty())
	{
		MessageBox(L"请先填写工号或者姓名");
		return;
	}
	//获取到下拉框的值
	CString str;
	M_department.GetWindowText(str);
	m_strDepartment = str;


	m_position.GetWindowText(str);
	m_strPosition = str;


	//添加玩后关闭窗口
	EndDialog(IDOK);
}

初始化

BOOL CModifyDlg::OnInitDialog()
{
	CDialogEx::OnInitDialog();

	M_department.AddString(L"研发部");
	M_department.AddString(L"人事部");
	M_department.AddString(L"行政部");
	M_department.AddString(L"财务部");
	M_department.AddString(L"销售部");
	
	m_position.AddString(L"C++");
	m_position.AddString(L"Java");
	m_position.AddString(L"人事专员");
	m_position.AddString(L"行政专员");
	m_position.AddString(L"会计");
	m_position.AddString(L"销售经理");
	


	M_department.SetWindowText(m_strDepartment);
	m_position.SetWindowText(m_strPosition);
	return TRUE;
}

完成修改员工

//修改
void CStudentSystemDlg::OnBnClickedBtnModify()
{
	//选中
	POSITION pos = m_frameDlg.m_list.GetFirstSelectedItemPosition();//获取删除位置
	int nSel = m_frameDlg.m_list.GetNextSelectedItem(pos);//获取选中
	if (nSel < 0)//没有选
	{
		MessageBox(L"请您选中之后在修改");
		return;
	}
	
	//读取数据
	CModifyDlg dlg;
	dlg.m_nWorkNum = m_frameDlg.m_list.GetItemText(nSel,0);
	dlg.m_strName = m_frameDlg.m_list.GetItemText(nSel, 1);

	//性别
	if (m_frameDlg.m_list.GetItemText(nSel, 2) == L"男")
		dlg.m_nSex = 0;
	else
		dlg.m_nSex = 1;
	dlg.m_nAge = m_frameDlg.m_list.GetItemText(nSel, 3);
	//兴趣爱好
	dlg.m_bClimb = FALSE;
	dlg.m_bPlay = FALSE;
	dlg.m_bKsing = FALSE;
	dlg.m_bRead = FALSE;
	CString strInterset= m_frameDlg.m_list.GetItemText(nSel, 4);
	if (strInterset.Find(L"打游戏") != -1)
	{
		dlg.m_bPlay = TRUE;
	}
	if (strInterset.Find(L"爬山") != -1)
	{
		dlg.m_bClimb = TRUE;
	}
	if (strInterset.Find(L"唱歌") != -1)
	{
		dlg.m_bKsing = TRUE;
	}
	if (strInterset.Find(L"读书") != -1)
	{
		dlg.m_bRead = TRUE;
	}
	
	//部门
	dlg.m_strDepartment = m_frameDlg.m_list.GetItemText(nSel, 5);
	//设置部门显示
	//dlg.M_department.SetWindowText(dlg.m_strDepartment);

	//职位
	dlg.m_strPosition= m_frameDlg.m_list.GetItemText(nSel, 6);
	//dlg.m_position.SetWindowText(dlg.m_strPosition);

	dlg.m_fTempsalary= _wtof(m_frameDlg.m_list.GetItemText(nSel, 7));

	dlg.m_fFormalsalary= _wtof(m_frameDlg.m_list.GetItemText(nSel, 8));

	//入职时间
	dlg.m_joinTime.ParseDateTime(m_frameDlg.m_list.GetItemText(nSel, 9));//时间字符串转换
	dlg.m_officialTime.ParseDateTime(m_frameDlg.m_list.GetItemText(nSel, 10));//时间字符串转换
	dlg.m_leaveTime.ParseDateTime(m_frameDlg.m_list.GetItemText(nSel, 11));//时间字符串转换
	dlg.m_tel = m_frameDlg.m_list.GetItemText(nSel, 12);
	dlg.m_strAddress = m_frameDlg.m_list.GetItemText(nSel, 12);

	if (IDCANCEL == dlg.DoModal())
	{
		return;
	}

	//m_frameDlg.m_list.DeleteItem(nSel);

	//工号数据添加到列表中
	//CString str;
	//str.Format(L"%0.5d", dlg.m_nWorkNum);
	this->m_frameDlg.m_list.SetItemText(nSel,0, dlg.m_nWorkNum);

	//姓名插入
	this->m_frameDlg.m_list.SetItemText(nSel, 1, dlg.m_strName);

	//性别
	CString strSex = dlg.m_nSex == 1 ? L"女" : L"男";//如果是1就是女,是0就是男
	this->m_frameDlg.m_list.SetItemText(nSel, 2, strSex);

	//年龄
	CString str;
	//str.Format(L"%0.5d", dlg.m_nAge);
	this->m_frameDlg.m_list.SetItemText(nSel, 3, dlg.m_nAge);

	//兴趣
	str.Empty();
	if (dlg.m_bClimb)
		str += L"爬山;";
	if (dlg.m_bKsing)
		str += "唱歌;";
	if (dlg.m_bPlay)
		str += "打游戏;";
	if (dlg.m_bRead)
		str += "读书;";
	this->m_frameDlg.m_list.SetItemText(nSel, 4, str);

	//部门
	this->m_frameDlg.m_list.SetItemText(nSel, 5, dlg.m_strDepartment);

	//职位
	this->m_frameDlg.m_list.SetItemText(nSel, 6, dlg.m_strPosition);

	//试用薪资
	str.Format(L"%.2f", dlg.m_fTempsalary);
	this->m_frameDlg.m_list.SetItemText(nSel, 7, str);
	//转正薪资
	str.Format(L"%.2f", dlg.m_fTempsalary);
	this->m_frameDlg.m_list.SetItemText(nSel, 8, str);

	//入职时间
	str = dlg.m_joinTime.Format(L"%Y-%m-%d");
	this->m_frameDlg.m_list.SetItemText(nSel, 9, str);

	//转正时间
	str = dlg.m_officialTime.Format(L"%Y-%m-%d");
	this->m_frameDlg.m_list.SetItemText(nSel, 10, str);

	str = dlg.m_leaveTime.Format(L"%Y-%m-%d");
	this->m_frameDlg.m_list.SetItemText(nSel, 11, str);

	//联系电话
	this->m_frameDlg.m_list.SetItemText(nSel, 12, dlg.m_tel);

	//家庭住址

	this->m_frameDlg.m_list.SetItemText(nSel, 13, dlg.m_strAddress);

}

MFC管理系统,mfc,c++

保存数据

MFC管理系统,mfc,c++

//员工信息
typedef struct _Staff
{
	int worknum; //工号
	wchar_t  name[10];//姓名
	char  sex[4]; 
	int age;
	wchar_t interest[30];//兴趣
	wchar_t department[20];
	wchar_t position[20];
	float tempsalary;
	float formalsalary;
	wchar_t joinTime[12];
	wchar_t officialTime[12];
	wchar_t leaveTime;
	wchar_t tel[15];
	wchar_t address;
}Staff;

关闭窗口进行保存
MFC管理系统,mfc,c++

void CStudentSystemDlg::OnDestroy()
{
	CDialogEx::OnDestroy();

	//打开文件
	CFile file;
	if ( FALSE==file.Open(L"system.txt", CFile::modeCreate | CFile::modeWrite) )
	{
		MessageBox(L"打开文件失败");
		return;
	}


	//获取总行数
	int nCount=m_frameDlg.m_list.GetItemCount();
	for (int i = 0; i < nCount; i++)
	{
		Staff staff = { 0 };


		staff.worknum = _wtoi(m_frameDlg.m_list.GetItemText(i, 0));
		wcscpy(staff.name ,m_frameDlg.m_list.GetItemText(i, 1));

		//性别
		wcscpy(staff.sex,m_frameDlg.m_list.GetItemText(i, 2));
		staff.age = _wtoi(m_frameDlg.m_list.GetItemText(i, 3));
		//兴趣爱好
		wcscpy(staff.interest,m_frameDlg.m_list.GetItemText(i, 4));
		//部门
		wcscpy(staff.department,m_frameDlg.m_list.GetItemText(i, 5));
		//职位
		wcscpy(staff.position,m_frameDlg.m_list.GetItemText(i, 6));
		

		staff.tempsalary = _wtof(m_frameDlg.m_list.GetItemText(i, 7));

		staff.formalsalary = _wtof(m_frameDlg.m_list.GetItemText(i, 8));

		//入职时间
		wcscpy(staff.joinTime,m_frameDlg.m_list.GetItemText(i, 9));//时间字符串转换
		wcscpy(staff.officialTime,m_frameDlg.m_list.GetItemText(i, 10));//时间字符串转换
		wcscpy(staff.leaveTime,m_frameDlg.m_list.GetItemText(i, 11));//时间字符串转换
		wcscpy(staff.tel, m_frameDlg.m_list.GetItemText(i, 12));
		wcscpy(staff.address, m_frameDlg.m_list.GetItemText(i, 13));

		file.Write(&staff, sizeof(staff));


	}
	file.Close();
	
}

MFC管理系统,mfc,c++

打开时显示读取内容

BOOL CStudentSystemDlg::OnInitDialog()
{
	CDialogEx::OnInitDialog();

	// 设置此对话框的图标。  当应用程序主窗口不是对话框时,框架将自动
	//  执行此操作
	SetIcon(m_hIcon, TRUE);			// 设置大图标
	SetIcon(m_hIcon, FALSE);		// 设置小图标

	m_frameDlg.Create(IDD_FRAME_DLG,this);
	//获取客户去的宽和高
	CRect rect;
	GetClientRect(&rect);

	m_frameDlg.MoveWindow(100, 90, rect.Width() - 150, rect.Height() - 150);
	m_frameDlg.ShowWindow(SW_SHOW);


	//循环读取文件
	CFile file;
	if (file.Open(L"system.txt", CFile::modeRead)==FALSE)
	{
		MessageBox(L"打开文件失败");
		return TRUE;
	}
	Staff staff;
	int i = 0;
	while (file.Read(&staff,sizeof(staff)))
	{
		CString str;
		str.Format(L"%d", staff.worknum);
		m_frameDlg.m_list.InsertItem(i,str);
		m_frameDlg.m_list.SetItemText(i,1, staff.name);

		i++;
	}
	file.Close();



	return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}

全部代码

MFC管理系统,mfc,c++MFC管理系统,mfc,c++MFC管理系统,mfc,c++MFC管理系统,mfc,c++MFC管理系统,mfc,c++
// CAddDlg.h 对话框

#pragma once


// CAddDlg 对话框

class CAddDlg : public CDialogEx
{
	DECLARE_DYNAMIC(CAddDlg)

public:
	CAddDlg(CWnd* pParent = nullptr);   // 标准构造函数
	virtual ~CAddDlg();

// 对话框数据
#ifdef AFX_DESIGN_TIME
	enum { IDD = IDD_ADD_DLG };
#endif

protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持

	DECLARE_MESSAGE_MAP()
public:
	CString m_nWorkNum;
	CString m_strName;
	int m_nSex;
	CString m_nAge;
	BOOL m_bPlay;
	BOOL m_bClimb;
	BOOL m_bKsing;
	BOOL m_bRead;
	CComboBox M_department;
	CString m_strDepartment;
	CComboBox m_position;
	CString m_strPosition;
	float m_fTempsalary;
	float m_fFormalsalary;
	COleDateTime m_joinTime;
	COleDateTime m_officialTime;
	COleDateTime m_leaveTime;
	CString m_tel;
	CString m_strAddress;
	afx_msg void OnBnClickedBtnAdd();
	virtual BOOL OnInitDialog();
};

//CAddDlg.cpp: 实现文件

// CAddDlg.cpp: 实现文件
//

#include "pch.h"
#include "StudentSystem.h"
#include "CAddDlg.h"
#include "afxdialogex.h"


// CAddDlg 对话框

IMPLEMENT_DYNAMIC(CAddDlg, CDialogEx)

CAddDlg::CAddDlg(CWnd* pParent /*=nullptr*/)
	: CDialogEx(IDD_ADD_DLG, pParent)
	, m_nWorkNum(_T(""))
	, m_strName(_T(""))
	, m_nSex(0)
	, m_nAge(_T(""))
	, m_bPlay(FALSE)
	, m_bClimb(FALSE)
	, m_bKsing(FALSE)
	, m_bRead(FALSE)
	, m_fTempsalary(0)
	, m_fFormalsalary(0)
	, m_joinTime(COleDateTime::GetCurrentTime())
	, m_officialTime(COleDateTime::GetCurrentTime())
	, m_leaveTime(COleDateTime::GetCurrentTime())
	, m_tel(_T(""))
	, m_strAddress(_T(""))
{

}

CAddDlg::~CAddDlg()
{
}

void CAddDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialogEx::DoDataExchange(pDX);
	DDX_Text(pDX, IDC_EDIT1, m_nWorkNum);
	DDX_Text(pDX, IDC_EDIT2, m_strName);
	DDX_Radio(pDX, IDC_RADIO1, m_nSex);
	DDX_Text(pDX, IDC_EDIT3, m_nAge);
	DDX_Check(pDX, IDC_CHECK2, m_bPlay);
	DDX_Check(pDX, IDC_CHECK3, m_bClimb);
	DDX_Check(pDX, IDC_CHECK4, m_bKsing);
	DDX_Check(pDX, IDC_CHECK5, m_bRead);
	DDX_Control(pDX, IDC_COMBO1, M_department);
	DDX_Control(pDX, IDC_COMBO2, m_position);
	DDX_Text(pDX, IDC_EDIT4, m_fTempsalary);
	DDX_Text(pDX, IDC_EDIT6, m_fFormalsalary);
	DDX_DateTimeCtrl(pDX, IDC_DATETIMEPICKER1, m_joinTime);
	DDX_DateTimeCtrl(pDX, IDC_DATETIMEPICKER3, m_officialTime);
	DDX_DateTimeCtrl(pDX, IDC_DATETIMEPICKER2, m_leaveTime);
	DDX_Text(pDX, IDC_EDIT7, m_tel);
	DDX_Text(pDX, IDC_EDIT5, m_strAddress);
}


BEGIN_MESSAGE_MAP(CAddDlg, CDialogEx)
	ON_BN_CLICKED(IDC_BTN_ADD, &CAddDlg::OnBnClickedBtnAdd)
END_MESSAGE_MAP()


// CAddDlg 消息处理程序

//添加
void CAddDlg::OnBnClickedBtnAdd()
{
	
	//判断工号
	UpdateData(TRUE);
	if (m_nWorkNum.IsEmpty() || m_strName.IsEmpty())
	{
		MessageBox(L"请先填写工号或者姓名");
		return;
	}
	//获取到下拉框的值
	CString str;
	M_department.GetWindowText(str);
	m_strDepartment = str;

	
	m_position.GetWindowText(str);
	m_strPosition = str;


	//添加玩后关闭窗口
	EndDialog(IDOK);
}


BOOL CAddDlg::OnInitDialog()
{
	CDialogEx::OnInitDialog();

	M_department.AddString(L"研发部");
	M_department.AddString(L"人事部");
	M_department.AddString(L"行政部");
	M_department.AddString(L"财务部");
	M_department.AddString(L"销售部");
	M_department.SetCurSel(0);
	m_position.AddString(L"C++");
	m_position.AddString(L"Java");
	m_position.AddString(L"人事专员");
	m_position.AddString(L"行政专员");
	m_position.AddString(L"会计");
	m_position.AddString(L"销售经理");
	m_position.SetCurSel(0);
	return TRUE; 
}

// CFrameDlg.h 对话框

#pragma once


// CFrameDlg 对话框

class CFrameDlg : public CDialogEx
{
	DECLARE_DYNAMIC(CFrameDlg)

public:
	CFrameDlg(CWnd* pParent = nullptr);   // 标准构造函数
	virtual ~CFrameDlg();

// 对话框数据
#ifdef AFX_DESIGN_TIME
	enum { IDD = IDD_FRAME_DLG };
#endif

protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持

	DECLARE_MESSAGE_MAP()
public:
	afx_msg void OnBnClickedOk();
	virtual BOOL OnInitDialog();
	CListCtrl m_list;
	afx_msg void OnSize(UINT nType, int cx, int cy);
	
};

//CFrameDlg.cpp: 实现文件

// CFrameDlg.cpp: 实现文件
//

#include "pch.h"
#include "StudentSystem.h"
#include "CFrameDlg.h"
#include "afxdialogex.h"


// CFrameDlg 对话框

IMPLEMENT_DYNAMIC(CFrameDlg, CDialogEx)

CFrameDlg::CFrameDlg(CWnd* pParent /*=nullptr*/)
	: CDialogEx(IDD_FRAME_DLG, pParent)
{

}

CFrameDlg::~CFrameDlg()
{
}

void CFrameDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialogEx::DoDataExchange(pDX);
	DDX_Control(pDX, IDC_LIST, m_list);
}


BEGIN_MESSAGE_MAP(CFrameDlg, CDialogEx)
	ON_BN_CLICKED(IDOK, &CFrameDlg::OnBnClickedOk)
	ON_WM_SIZE()
	
END_MESSAGE_MAP()


// CFrameDlg 消息处理程序


void CFrameDlg::OnBnClickedOk()
{
	// TODO: 在此添加控件通知处理程序代码
	//CDialogEx::OnOK();
}


BOOL CFrameDlg::OnInitDialog()
{
	CDialogEx::OnInitDialog();

	m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);//拓展风格
	m_list.InsertColumn(0, L"工号", LVCFMT_LEFT, 100);
	m_list.InsertColumn(1, L"姓名", LVCFMT_LEFT, 100);
	m_list.InsertColumn(2, L"性别", LVCFMT_LEFT, 100);
	m_list.InsertColumn(3, L"年龄", LVCFMT_LEFT, 100);
	m_list.InsertColumn(4, L"兴趣爱好", LVCFMT_LEFT, 100);
	m_list.InsertColumn(5, L"部门", LVCFMT_LEFT, 100);
	m_list.InsertColumn(6, L"职位", LVCFMT_LEFT, 100);
	m_list.InsertColumn(7, L"试用薪资", LVCFMT_LEFT, 100);
	m_list.InsertColumn(8, L"转正薪资", LVCFMT_LEFT, 100);
	m_list.InsertColumn(9, L"入职时间", LVCFMT_LEFT, 100);
	m_list.InsertColumn(10, L"转正时间", LVCFMT_LEFT, 100);
	m_list.InsertColumn(11, L"离职时间", LVCFMT_LEFT, 100);
	m_list.InsertColumn(12, L"联系电话", LVCFMT_LEFT, 100);
	m_list.InsertColumn(13, L"家庭住址", LVCFMT_LEFT, 100);
	return TRUE;  
}


void CFrameDlg::OnSize(UINT nType, int cx, int cy)
{
	CDialogEx::OnSize(nType, cx, cy);

	if (m_list.GetSafeHwnd())
	{
		m_list.MoveWindow(0,0,cx,cy);
	}
}

// CLoginDlg.h 对话框

#pragma once


// CLoginDlg 对话框

class CLoginDlg : public CDialogEx
{
	DECLARE_DYNAMIC(CLoginDlg)

public:
	CLoginDlg(CWnd* pParent = nullptr);   // 标准构造函数
	virtual ~CLoginDlg();

// 对话框数据
#ifdef AFX_DESIGN_TIME
	enum { IDD = IDD_LOGIN_DLG };
#endif

protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持

	DECLARE_MESSAGE_MAP()
public:
	afx_msg void OnBnClickedBtnLogin();
	CString m_strUsername;
	CString m_strPassword;
};

// CLoginDlg.cpp: 实现文件

// CLoginDlg.cpp: 实现文件
//

#include "pch.h"
#include "StudentSystem.h"
#include "CLoginDlg.h"
#include "afxdialogex.h"


// CLoginDlg 对话框

IMPLEMENT_DYNAMIC(CLoginDlg, CDialogEx)

CLoginDlg::CLoginDlg(CWnd* pParent /*=nullptr*/)
	: CDialogEx(IDD_LOGIN_DLG, pParent)
	, m_strUsername(_T("admin"))
	, m_strPassword(_T("123456"))
{

}

CLoginDlg::~CLoginDlg()
{
}

void CLoginDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialogEx::DoDataExchange(pDX);
	DDX_Text(pDX, IDC_USENAME, m_strUsername);
	DDX_Text(pDX, IDC_PASSWORD, m_strPassword);
}


BEGIN_MESSAGE_MAP(CLoginDlg, CDialogEx)
	ON_BN_CLICKED(IDC_BTN_LOGIN, &CLoginDlg::OnBnClickedBtnLogin)
END_MESSAGE_MAP()


// CLoginDlg 消息处理程序


void CLoginDlg::OnBnClickedBtnLogin()
{
	UpdateData(TRUE);
	if (m_strUsername.IsEmpty() || m_strPassword.IsEmpty())
	{
		MessageBox(L"用户名或者密码为空", L"提示");
		return;
	}

	if (m_strUsername == L"admin" && m_strPassword == L"123456")
	{
		//成功
		EndDialog(IDOK);
	}
	else
	{
		MessageBox(_T("登陆失败"), L"提示");
		return;
	}

}

//framework.h

#pragma once

#ifndef VC_EXTRALEAN
#define VC_EXTRALEAN            // 从 Windows 头中排除极少使用的资料
#endif

#include "targetver.h"

#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS      // 某些 CString 构造函数将是显式的

// 关闭 MFC 的一些常见且经常可放心忽略的隐藏警告消息
#define _AFX_ALL_WARNINGS

#include <afxwin.h>         // MFC 核心组件和标准组件
#include <afxext.h>         // MFC 扩展


#include <afxdisp.h>        // MFC 自动化类



#ifndef _AFX_NO_OLE_SUPPORT
#include <afxdtctl.h>           // MFC 对 Internet Explorer 4 公共控件的支持
#endif
#ifndef _AFX_NO_AFXCMN_SUPPORT
#include <afxcmn.h>             // MFC 对 Windows 公共控件的支持
#endif // _AFX_NO_AFXCMN_SUPPORT

#include <afxcontrolbars.h>     // MFC 支持功能区和控制条


//员工信息
typedef struct _Staff
{
	int worknum; //工号
	wchar_t  name[10];//姓名
	wchar_t  sex[4];
	int age;
	wchar_t interest[30];//兴趣
	wchar_t department[20];
	wchar_t position[20];
	float tempsalary;
	float formalsalary;
	wchar_t joinTime[12];
	wchar_t officialTime[12];
	wchar_t leaveTime[12];
	wchar_t tel[15];
	wchar_t address[20];
}Staff;






#ifdef _UNICODE
#if defined _M_IX86
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
#elif defined _M_X64
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"")
#else
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
#endif
#endif

// CModifyDlg 对话框

#pragma once


// CModifyDlg 对话框

class CModifyDlg : public CDialogEx
{
	DECLARE_DYNAMIC(CModifyDlg)

public:
	CModifyDlg(CWnd* pParent = nullptr);   // 标准构造函数
	virtual ~CModifyDlg();

// 对话框数据
#ifdef AFX_DESIGN_TIME
	enum { IDD = IDD_MODIFY_DLG };
#endif

protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持

	DECLARE_MESSAGE_MAP()
public:
	CString m_nWorkNum;
	CString m_strName;
	int m_nSex;
	CString m_nAge;
	BOOL m_bPlay;
	BOOL m_bClimb;
	BOOL m_bKsing;
	BOOL m_bRead;
	CComboBox M_department;
	CString m_strDepartment;
	CComboBox m_position;
	CString m_strPosition;
	float m_fTempsalary;
	float m_fFormalsalary;
	COleDateTime m_joinTime;
	COleDateTime m_officialTime;
	COleDateTime m_leaveTime;
	CString m_tel;
	CString m_strAddress;
	//afx_msg void OnBnClickedBtnAdd();
	virtual BOOL OnInitDialog();
	afx_msg void OnBnClickedOk();
	afx_msg void OnBnClickedBtnModify();
};

// CModifyDlg.cpp: 实现文件

// CModifyDlg.cpp: 实现文件
//

#include "pch.h"
#include "StudentSystem.h"
#include "CModifyDlg.h"
#include "afxdialogex.h"


// CModifyDlg 对话框

IMPLEMENT_DYNAMIC(CModifyDlg, CDialogEx)

CModifyDlg::CModifyDlg(CWnd* pParent /*=nullptr*/)
	: CDialogEx(IDD_MODIFY_DLG, pParent)
	, m_nWorkNum(_T(""))
	, m_strName(_T(""))
	, m_nSex(0)
	, m_nAge(_T(""))
	, m_bPlay(FALSE)
	, m_bClimb(FALSE)
	, m_bKsing(FALSE)
	, m_bRead(FALSE)
	, m_fTempsalary(0)
	, m_fFormalsalary(0)
	, m_joinTime(COleDateTime::GetCurrentTime())
	, m_officialTime(COleDateTime::GetCurrentTime())
	, m_leaveTime(COleDateTime::GetCurrentTime())
	, m_tel(_T(""))
	, m_strAddress(_T(""))
{

}

CModifyDlg::~CModifyDlg()
{
}

void CModifyDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialogEx::DoDataExchange(pDX);
	DDX_Text(pDX, IDC_EDIT1, m_nWorkNum);
	DDX_Text(pDX, IDC_EDIT2, m_strName);
	DDX_Radio(pDX, IDC_RADIO1, m_nSex);
	DDX_Text(pDX, IDC_EDIT3, m_nAge);
	DDX_Check(pDX, IDC_CHECK2, m_bPlay);
	DDX_Check(pDX, IDC_CHECK3, m_bClimb);
	DDX_Check(pDX, IDC_CHECK4, m_bKsing);
	DDX_Check(pDX, IDC_CHECK5, m_bRead);
	DDX_Control(pDX, IDC_COMBO1, M_department);
	DDX_Control(pDX, IDC_COMBO2, m_position);
	DDX_Text(pDX, IDC_EDIT4, m_fTempsalary);
	DDX_Text(pDX, IDC_EDIT6, m_fFormalsalary);
	DDX_DateTimeCtrl(pDX, IDC_DATETIMEPICKER1, m_joinTime);
	DDX_DateTimeCtrl(pDX, IDC_DATETIMEPICKER3, m_officialTime);
	DDX_DateTimeCtrl(pDX, IDC_DATETIMEPICKER2, m_leaveTime);
	DDX_Text(pDX, IDC_EDIT7, m_tel);
	DDX_Text(pDX, IDC_EDIT5, m_strAddress);


}


BEGIN_MESSAGE_MAP(CModifyDlg, CDialogEx)
	ON_BN_CLICKED(IDOK, &CModifyDlg::OnBnClickedOk)
	ON_BN_CLICKED(IDC_BTN_MODIFY, &CModifyDlg::OnBnClickedBtnModify)
END_MESSAGE_MAP()


// CModifyDlg 消息处理程序


void CModifyDlg::OnBnClickedOk()
{
	// TODO: 在此添加控件通知处理程序代码
	//CDialogEx::OnOK();
}


//修改
void CModifyDlg::OnBnClickedBtnModify()
{
	//判断工号
	UpdateData(TRUE);
	if (m_nWorkNum.IsEmpty() || m_strName.IsEmpty())
	{
		MessageBox(L"请先填写工号或者姓名");
		return;
	}
	//获取到下拉框的值
	CString str;
	M_department.GetWindowText(str);
	m_strDepartment = str;


	m_position.GetWindowText(str);
	m_strPosition = str;


	//添加玩后关闭窗口
	EndDialog(IDOK);
}


BOOL CModifyDlg::OnInitDialog()
{
	CDialogEx::OnInitDialog();

	M_department.AddString(L"研发部");
	M_department.AddString(L"人事部");
	M_department.AddString(L"行政部");
	M_department.AddString(L"财务部");
	M_department.AddString(L"销售部");
	
	m_position.AddString(L"C++");
	m_position.AddString(L"Java");
	m_position.AddString(L"人事专员");
	m_position.AddString(L"行政专员");
	m_position.AddString(L"会计");
	m_position.AddString(L"销售经理");
	


	M_department.SetWindowText(m_strDepartment);
	m_position.SetWindowText(m_strPosition);
	return TRUE;
}

// StudentSystemDlg.h: 头文件


// StudentSystemDlg.h: 头文件
//

#pragma once
#include "CFrameDlg.h"

// CStudentSystemDlg 对话框
class CStudentSystemDlg : public CDialogEx
{
// 构造
public:
	CStudentSystemDlg(CWnd* pParent = nullptr);	// 标准构造函数

// 对话框数据
#ifdef AFX_DESIGN_TIME
	enum { IDD = IDD_STUDENTSYSTEM_DIALOG };
#endif

	protected:
	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV 支持


// 实现
protected:
	HICON m_hIcon;
	CFrameDlg m_frameDlg;

	// 生成的消息映射函数
	virtual BOOL OnInitDialog();
	afx_msg void OnPaint();
	afx_msg HCURSOR OnQueryDragIcon();
	DECLARE_MESSAGE_MAP()
public:
	afx_msg void OnSize(UINT nType, int cx, int cy);
	afx_msg void OnBnClickedBtnAdd();
	afx_msg void OnBnClickedBtnDelete();
	afx_msg void OnBnClickedBtnModify();
	afx_msg void OnDestroy();
};

// StudentSystemDlg.cpp: 实现文件文章来源地址https://www.toymoban.com/news/detail-547847.html

// StudentSystemDlg.cpp: 实现文件
//

#include "pch.h"
#include "framework.h"
#include "StudentSystem.h"
#include "StudentSystemDlg.h"
#include "afxdialogex.h"
#include "CAddDlg.h"
#include "CModifyDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// CStudentSystemDlg 对话框



CStudentSystemDlg::CStudentSystemDlg(CWnd* pParent /*=nullptr*/)
	: CDialogEx(IDD_STUDENTSYSTEM_DIALOG, pParent)
{
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CStudentSystemDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialogEx::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(CStudentSystemDlg, CDialogEx)
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_WM_SIZE()
	ON_BN_CLICKED(IDC_BTN_ADD, &CStudentSystemDlg::OnBnClickedBtnAdd)
	ON_BN_CLICKED(IDC_BTN_DELETE, &CStudentSystemDlg::OnBnClickedBtnDelete)
	ON_BN_CLICKED(IDC_BTN_MODIFY, &CStudentSystemDlg::OnBnClickedBtnModify)
	ON_WM_DESTROY()
END_MESSAGE_MAP()


// CStudentSystemDlg 消息处理程序

BOOL CStudentSystemDlg::OnInitDialog()
{
	CDialogEx::OnInitDialog();

	// 设置此对话框的图标。  当应用程序主窗口不是对话框时,框架将自动
	//  执行此操作
	SetIcon(m_hIcon, TRUE);			// 设置大图标
	SetIcon(m_hIcon, FALSE);		// 设置小图标

	m_frameDlg.Create(IDD_FRAME_DLG,this);
	//获取客户去的宽和高
	CRect rect;
	GetClientRect(&rect);

	m_frameDlg.MoveWindow(100, 90, rect.Width() - 150, rect.Height() - 150);
	m_frameDlg.ShowWindow(SW_SHOW);


	//循环读取文件
	CFile file;
	if (file.Open(L"system.txt", CFile::modeRead)==FALSE)
	{
		MessageBox(L"打开文件失败");
		return TRUE;
	}
	Staff staff;
	int i = 0;
	while (file.Read(&staff,sizeof(staff)))
	{
		CString str;
		str.Format(L"%d", staff.worknum);
		m_frameDlg.m_list.InsertItem(i,str);
		m_frameDlg.m_list.SetItemText(i,1, staff.name);

		i++;
	}
	file.Close();



	return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}

// 如果向对话框添加最小化按钮,则需要下面的代码
//  来绘制该图标。  对于使用文档/视图模型的 MFC 应用程序,
//  这将由框架自动完成。

void CStudentSystemDlg::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 CStudentSystemDlg::OnQueryDragIcon()
{
	return static_cast<HCURSOR>(m_hIcon);
}



void CStudentSystemDlg::OnSize(UINT nType, int cx, int cy)
{
	CDialogEx::OnSize(nType, cx, cy);

	if (m_frameDlg.GetSafeHwnd())
	{
		//获取客户去的宽和高
		CRect rect;
		GetClientRect(&rect);
		m_frameDlg.MoveWindow(100, 90, rect.Width() - 150, rect.Height() - 150);
	}
}


//添加员工
void CStudentSystemDlg::OnBnClickedBtnAdd()
{
	CAddDlg dlg;
	if (IDCANCEL == dlg.DoModal())
	{
		return;
	}


	//获取列表总函数
	int nCount = this->m_frameDlg.m_list.GetItemCount();
	//工号数据添加到列表中
	//CString str;
	//str.Format(L"%0.5d", dlg.m_nWorkNum);
	this->m_frameDlg.m_list.InsertItem(nCount, dlg.m_nWorkNum);

	//姓名插入
	this->m_frameDlg.m_list.SetItemText(nCount, 1, dlg.m_strName);

	//性别
	CString strSex = dlg.m_nSex ==1? L"女" : L"男";//如果是1就是女,是0就是男
	this->m_frameDlg.m_list.SetItemText(nCount, 2, strSex);

	//年龄
	CString str;
	//str.Format(L"%0.5d", dlg.m_nAge);
	this->m_frameDlg.m_list.SetItemText(nCount, 3, dlg.m_nAge);

	//兴趣
	str.Empty();
	if (dlg.m_bClimb)
		str += L"爬山;";
	if (dlg.m_bKsing)
		str += "唱歌;";
	if (dlg.m_bPlay)
		str += "打游戏;";
	if (dlg.m_bRead)
		str += "读书;";
	this->m_frameDlg.m_list.SetItemText(nCount, 4, str);

	//部门
	this->m_frameDlg.m_list.SetItemText(nCount, 5,dlg.m_strDepartment);

	//职位
	this->m_frameDlg.m_list.SetItemText(nCount, 6, dlg.m_strPosition);

	//试用薪资
	str.Format(L"%.2f", dlg.m_fTempsalary);
	this->m_frameDlg.m_list.SetItemText(nCount, 7, str);
	//转正薪资
	str.Format(L"%.2f", dlg.m_fTempsalary);
	this->m_frameDlg.m_list.SetItemText(nCount, 8, str);

	//入职时间
	str = dlg.m_joinTime.Format(L"%Y-%m-%d");
	this->m_frameDlg.m_list.SetItemText(nCount, 9, str);

	//转正时间
	str = dlg.m_officialTime.Format(L"%Y-%m-%d");
	this->m_frameDlg.m_list.SetItemText(nCount, 10, str);

	str = dlg.m_leaveTime.Format(L"%Y-%m-%d");
	this->m_frameDlg.m_list.SetItemText(nCount, 11, str);

	//联系电话
	this->m_frameDlg.m_list.SetItemText(nCount, 12, dlg.m_tel);

	//家庭住址

	this->m_frameDlg.m_list.SetItemText(nCount, 13, dlg.m_strAddress);
}


//删除
void CStudentSystemDlg::OnBnClickedBtnDelete()
{
	POSITION pos=m_frameDlg.m_list.GetFirstSelectedItemPosition();//获取删除位置
	int nSel=m_frameDlg.m_list.GetNextSelectedItem(pos);//获取选中
	if (nSel < 0)//没有选
	{
		MessageBox(L"请您选中之后在删除");
		return;
	}
	m_frameDlg.m_list.DeleteItem(nSel);

	//删除所有
	//m_frameDlg.m_list.DeleteAllItems();

}

//修改
void CStudentSystemDlg::OnBnClickedBtnModify()
{
	//选中
	POSITION pos = m_frameDlg.m_list.GetFirstSelectedItemPosition();//获取删除位置
	int nSel = m_frameDlg.m_list.GetNextSelectedItem(pos);//获取选中
	if (nSel < 0)//没有选
	{
		MessageBox(L"请您选中之后在修改");
		return;
	}
	
	//读取数据
	CModifyDlg dlg;
	dlg.m_nWorkNum = m_frameDlg.m_list.GetItemText(nSel,0);
	dlg.m_strName = m_frameDlg.m_list.GetItemText(nSel, 1);

	//性别
	if (m_frameDlg.m_list.GetItemText(nSel, 2) == L"男")
		dlg.m_nSex = 0;
	else
		dlg.m_nSex = 1;
	dlg.m_nAge = m_frameDlg.m_list.GetItemText(nSel, 3);
	//兴趣爱好
	dlg.m_bClimb = FALSE;
	dlg.m_bPlay = FALSE;
	dlg.m_bKsing = FALSE;
	dlg.m_bRead = FALSE;
	CString strInterset= m_frameDlg.m_list.GetItemText(nSel, 4);
	if (strInterset.Find(L"打游戏") != -1)
	{
		dlg.m_bPlay = TRUE;
	}
	if (strInterset.Find(L"爬山") != -1)
	{
		dlg.m_bClimb = TRUE;
	}
	if (strInterset.Find(L"唱歌") != -1)
	{
		dlg.m_bKsing = TRUE;
	}
	if (strInterset.Find(L"读书") != -1)
	{
		dlg.m_bRead = TRUE;
	}
	
	//部门
	dlg.m_strDepartment = m_frameDlg.m_list.GetItemText(nSel, 5);
	//设置部门显示
	//dlg.M_department.SetWindowText(dlg.m_strDepartment);

	//职位
	dlg.m_strPosition= m_frameDlg.m_list.GetItemText(nSel, 6);
	//dlg.m_position.SetWindowText(dlg.m_strPosition);

	dlg.m_fTempsalary= _wtof(m_frameDlg.m_list.GetItemText(nSel, 7));

	dlg.m_fFormalsalary= _wtof(m_frameDlg.m_list.GetItemText(nSel, 8));

	//入职时间
	dlg.m_joinTime.ParseDateTime(m_frameDlg.m_list.GetItemText(nSel, 9));//时间字符串转换
	dlg.m_officialTime.ParseDateTime(m_frameDlg.m_list.GetItemText(nSel, 10));//时间字符串转换
	dlg.m_leaveTime.ParseDateTime(m_frameDlg.m_list.GetItemText(nSel, 11));//时间字符串转换
	dlg.m_tel = m_frameDlg.m_list.GetItemText(nSel, 12);
	dlg.m_strAddress = m_frameDlg.m_list.GetItemText(nSel, 12);

	if (IDCANCEL == dlg.DoModal())
	{
		return;
	}

	//m_frameDlg.m_list.DeleteItem(nSel);

	//工号数据添加到列表中
	//CString str;
	//str.Format(L"%0.5d", dlg.m_nWorkNum);
	this->m_frameDlg.m_list.SetItemText(nSel,0, dlg.m_nWorkNum);

	//姓名插入
	this->m_frameDlg.m_list.SetItemText(nSel, 1, dlg.m_strName);

	//性别
	CString strSex = dlg.m_nSex == 1 ? L"女" : L"男";//如果是1就是女,是0就是男
	this->m_frameDlg.m_list.SetItemText(nSel, 2, strSex);

	//年龄
	CString str;
	//str.Format(L"%0.5d", dlg.m_nAge);
	this->m_frameDlg.m_list.SetItemText(nSel, 3, dlg.m_nAge);

	//兴趣
	str.Empty();
	if (dlg.m_bClimb)
		str += L"爬山;";
	if (dlg.m_bKsing)
		str += "唱歌;";
	if (dlg.m_bPlay)
		str += "打游戏;";
	if (dlg.m_bRead)
		str += "读书;";
	this->m_frameDlg.m_list.SetItemText(nSel, 4, str);

	//部门
	this->m_frameDlg.m_list.SetItemText(nSel, 5, dlg.m_strDepartment);

	//职位
	this->m_frameDlg.m_list.SetItemText(nSel, 6, dlg.m_strPosition);

	//试用薪资
	str.Format(L"%.2f", dlg.m_fTempsalary);
	this->m_frameDlg.m_list.SetItemText(nSel, 7, str);
	//转正薪资
	str.Format(L"%.2f", dlg.m_fTempsalary);
	this->m_frameDlg.m_list.SetItemText(nSel, 8, str);

	//入职时间
	str = dlg.m_joinTime.Format(L"%Y-%m-%d");
	this->m_frameDlg.m_list.SetItemText(nSel, 9, str);

	//转正时间
	str = dlg.m_officialTime.Format(L"%Y-%m-%d");
	this->m_frameDlg.m_list.SetItemText(nSel, 10, str);

	str = dlg.m_leaveTime.Format(L"%Y-%m-%d");
	this->m_frameDlg.m_list.SetItemText(nSel, 11, str);

	//联系电话
	this->m_frameDlg.m_list.SetItemText(nSel, 12, dlg.m_tel);

	//家庭住址

	this->m_frameDlg.m_list.SetItemText(nSel, 13, dlg.m_strAddress);
}


void CStudentSystemDlg::OnDestroy()
{
	CDialogEx::OnDestroy();

	//打开文件
	CFile file;
	if ( FALSE==file.Open(L"system.txt", CFile::modeCreate | CFile::modeWrite) )
	{
		MessageBox(L"打开文件失败");
		return;
	}


	//获取总行数
	int nCount=m_frameDlg.m_list.GetItemCount();
	for (int i = 0; i < nCount; i++)
	{
		Staff staff = { 0 };


		staff.worknum = _wtoi(m_frameDlg.m_list.GetItemText(i, 0));
		wcscpy(staff.name ,m_frameDlg.m_list.GetItemText(i, 1));

		//性别
		wcscpy(staff.sex,m_frameDlg.m_list.GetItemText(i, 2));
		staff.age = _wtoi(m_frameDlg.m_list.GetItemText(i, 3));
		//兴趣爱好
		wcscpy(staff.interest,m_frameDlg.m_list.GetItemText(i, 4));
		//部门
		wcscpy(staff.department,m_frameDlg.m_list.GetItemText(i, 5));
		//职位
		wcscpy(staff.position,m_frameDlg.m_list.GetItemText(i, 6));
		

		staff.tempsalary = _wtof(m_frameDlg.m_list.GetItemText(i, 7));

		staff.formalsalary = _wtof(m_frameDlg.m_list.GetItemText(i, 8));

		//入职时间
		wcscpy(staff.joinTime,m_frameDlg.m_list.GetItemText(i, 9));//时间字符串转换
		wcscpy(staff.officialTime,m_frameDlg.m_list.GetItemText(i, 10));//时间字符串转换
		wcscpy(staff.leaveTime,m_frameDlg.m_list.GetItemText(i, 11));//时间字符串转换
		wcscpy(staff.tel, m_frameDlg.m_list.GetItemText(i, 12));
		wcscpy(staff.address, m_frameDlg.m_list.GetItemText(i, 13));

		file.Write(&staff, sizeof(staff));


	}
	file.Close();
	
}

到了这里,关于MFC管理系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于MFC的图书馆图书管理系统 VC++操作Excel文档的方法,读取,查询,写入,修改,删除

    VS2017加装MFC以及创建第一个MFC程序_赵满刚的博客-CSDN博客 MFC读取Excel文件+数据处理+写入Excel_土豪gold的博客-CSDN博客 VS2013 MFC连接Access数据库(ADO)详细版实例操作(含Combo Box读取数据库内容,附源码)_土豪gold的博客-CSDN博客_mfc连接access数据库 MFC 导入EXCEL到数据库_weixin_338

    2024年02月06日
    浏览(47)
  • 基于MFC的图书馆图书管理系统 VC++操作Excel文档的方法,读取,查询,写入,修改,删除

    VS2017加装MFC以及创建第一个MFC程序_赵满刚的博客-CSDN博客 MFC读取Excel文件+数据处理+写入Excel_土豪gold的博客-CSDN博客 VS2013 MFC连接Access数据库(ADO)详细版实例操作(含Combo Box读取数据库内容,附源码)_土豪gold的博客-CSDN博客_mfc连接access数据库 MFC 导入EXCEL到数据库_weixin_338

    2024年02月06日
    浏览(45)
  • 安装vcpkg管理opencv的安装+MFC缺失的解决

    在VC的提示下,安装了vcpkg,然后用vcpkg命令来帮助安装opencv,过程十分顺利。 1. cmd 到命令行窗口; 2. 建立src文件夹,并进入该文件夹clone vcpkg git clone https://github.com/Microsoft/vcpkg.git 3. 再运行 .vcpkgbootstrap-vcpkg.bat 脚本,从而建立vcpkg命令; 4. 运行后就可以执和行vcpkg命令,

    2024年02月20日
    浏览(26)
  • vs2019(MFC)--简单登录系统(1)

    (接上一条ado连接数据库)(关于ado接数据库的使用,见登录程序) 1.建立数据库access   2.在mfc对话框中添加控件  (我这里选择的是每个按钮登录到对应界面,也可以添加限制条件,通过一个按钮转到对应身份的对应界面,道理一样) 关于身份编辑框中下拉框内容的设置

    2024年02月09日
    浏览(37)
  • MFC扩展库BCGControlBar Pro v34.0 - 图形管理器功能升级

    BCGControlBar库拥有500多个经过全面设计、测试和充分记录的MFC扩展类。 我们的组件可以轻松地集成到您的应用程序中,并为您节省数百个开发和调试时间。 BCGControlBar专业版 v34.0已正式发布了,该版本包括新的主题任务对话框、图像效果、旋转圆形刻度、新的多链接控件以及

    2024年01月25日
    浏览(42)
  • MFC - 给系统菜单(About Dialog)发消息

    做了一个对话框程序, 在系统菜单(在程序上面的标题栏右击)中有\\\"关于\\\"的菜单. 这个是程序框架自带的, 自己没写代码. 这个Dlg程序, 因为简单, 没加啥菜单. 将授权也放到\\\"关于\\\"对话框中一并处理. 怕用户看不到咋进入\\\"关于\\\"菜单, 在UI上加了一个\\\"关于\\\"的按钮. 在这个按钮实现中

    2024年02月03日
    浏览(36)
  • C++基于MFC的通讯录系统(链表)

    深入理解面向对象技术的封装性、继承性和多态性,掌握面向对象程序设计方法。 综合应用C++基础知识实现小型应用程序开发。 掌握使用C++流类库实现数据文件访问的操作方法。 熟悉基于对话框的MFC应用程序创建过程,掌握ClassWizard工具和常 windows 11, visual studio 2022 设计一个

    2024年01月25日
    浏览(91)
  • 操作系统——MFC实现进程创建和通信2

    我接着上篇博客讲,如果没有构建项目的童鞋请移步到操作系统——MFC实现进程创建和通信1 实现进程通信的方法有很多,我们先用一个比较简单的方法实现一下。 window.postMessage() 方法可以安全地实现跨源通信。通常,对于两个不同页面的脚本,只有当执行它们的页面位于具

    2024年02月07日
    浏览(39)
  • [系统安全19] 面向对象逆向-虚函数、MFC逆向

    虚函数存在是为了克服类型域解决方案的缺陷,以使程序员可以在基类里声明一些能够在各个派生类里重新定义的函数。 代码示例: 反汇编代码: 如果没有Debug的符号文件,或者逆向过程中代码不是我们自己写的,那就要先判断它是否是一个类的应用。 跟进函数内部情况:

    2024年02月07日
    浏览(39)
  • MFC扩展库BCGControlBar Pro v33.6新版亮点 - 图形管理器改造升级

    BCGControlBar库拥有500多个经过全面设计、测试和充分记录的MFC扩展类。 我们的组件可以轻松地集成到您的应用程序中,并为您节省数百个开发和调试时间。 BCGControlBar专业版 v33.6已正式发布了,此版本包含了对图表组件的改进、带隐藏标签的单类功能区栏,标签控制通知徽章

    2024年02月07日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包