MFC管理系统

news2024/11/22 20:59:02

文章目录

  • 登录
    • 设置登录界面
    • 登录用户判断
  • 界面设计
    • 嵌入对话框
  • 添加列表
  • 添加员工
    • 添加按钮
  • 完成添加员工
  • 删除员工
  • 修改员工信息
    • 修改
  • 完成修改员工
  • 保存数据
  • 打开时显示读取内容
  • 全部代码

登录

设置登录界面

在这里插入图片描述
初始化窗口实列
在这里插入图片描述添加控件变量
在这里插入图片描述

登录用户判断

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;
	}

}

请添加图片描述

界面设计

在这里插入图片描述

嵌入对话框

在这里插入图片描述
在这里插入图片描述

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
}

在这里插入图片描述

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);
	}
}

请添加图片描述

添加列表

在这里插入图片描述
在这里插入图片描述

初始化列表

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;  
}

在这里插入图片描述

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);
	}
}

添加员工

添加员工对话框
在这里插入图片描述
添加类
在这里插入图片描述> 添加控件变量
在这里插入图片描述

设置按钮

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

请添加图片描述

添加下拉框内容

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; 
}

请添加图片描述

添加按钮

判断工号是否为空

//添加
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);
}

请添加图片描述

完成添加员工

//添加员工
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 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);

}

请添加图片描述

保存数据

在这里插入图片描述

//员工信息
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;

关闭窗口进行保存
在这里插入图片描述

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();
	
}

请添加图片描述

打开时显示读取内容

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
}

全部代码

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
// 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: 实现文件

// 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();
	
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/722012.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言程序环境和预处理

本章主要以图片和文字的形式给大家讲解 程序的翻译环境和程序的执行环境 在ANSI C的任何一种实现中&#xff0c;存在两个不同的环境。 第1种是翻译环境&#xff0c;在这个环境中源代码被转换为可执行的机器指令。 第2种是执行环境&#xff0c;它用于实际执行代码 2. 详解编译…

visio常用功能

1.常规对象&#xff0c;鼠标左键操作进行旋转、下图旋转柄是鼠标左键拖动可以任意改变方向&#xff0c;改变大小&#xff08;长度、宽度、等比例&#xff09;。 2.注意&#xff1a;用大小和位置定量改变形状的大小和角度 在选中形状对象后&#xff0c;页面底部会出现该形状的大…

【Spring Boot】Spring Boot日志详情:基于lombok的日志输出

文章目录 1. 何为日志文件&#xff1f;2. 日志文件的作用3. 日志文件的基本使用3.1 Spring Boot中的日志3.2 自定义日志打印 4 日志级别4.1 日志级别的作用4.2 日志级别的分类4.3 日志级别的设置 5 日志持久化6 基于lombok的日志输出6.1 lombok 简单输出日志案例6.2 浅谈 lombo…

如果遇到洪灾导致网络瘫痪,对讲机能起到什么作用?

当我们遇到洪灾这种突发事件时&#xff0c;网络基本就会处于瘫痪状态&#xff0c;人们的安全和生命也将面临着极大的威胁。而在这种时候&#xff0c;一种看似普通的通讯工具&#xff0c;却能够成为拯救生命的关键&#xff0c;它就是——对讲机&#xff01; 网络已经成为我们生…

使用3D Slicer进行图像配准

在3D Slicer官网上&#xff08;https://www.slicer.org/&#xff09;下载最新版本的软件 下载完成后按照指示安装软件&#xff0c;并在安装目录下打开软件 打开后在插件市场搜索并安装需要的配准插件 安装完成后重新打开软件&#xff0c;进行图像配准操作&#xff0c;首先需…

FreeRTOS ~(四)同步互斥与通信 ~ (1/3)同步的缺陷

举例子说明&#xff1a;同步的缺陷 首先创建两个任务&#xff1a;Task1和Task2; 让Task1执行一个比较耗时的计算,计算完成之后,通知Task2; Task1&#xff1a;求和,sum,累加10000000次,然后标志位置1 Task2&#xff1a;检测到标志位置1,打印sum值 为了可以在逻辑分析仪上更准确…

Kibana的对索引库的操作(2)

使用Kibana对文档操作 1.新增文档 新增文档并随机生成id: POST /索引库名/类型名{"key","value"} 新增文档并自定义id:POST /索引库名/类型名/id值 {"key","value"} 2.查看文档 如果查询的文档不存在则返回false 3.修改文档 这里需…

【Telephony】SIM单卡到双卡的变化

1、注册观察者 --> PhoneFactory.makeDefaultPhones() --> TelephonyComponentFactory.makeSubscriptionInfoUpdater() --> new SubscriptionInfoUpdater() --> PhoneConfigurationManager.registerForMultiSimConfigChange(this, EVENT_MULTI_SIM_CONFIG_CHAN…

linux下载安装jdk

1、一般linux系统会自带jdk&#xff0c;执行搜索命令&#xff0c;会查询到不同版本jdk。 2、执行yum install java-1.8.0-openjdk 命令下载对应版本jdk 3、java -version 验证

charles 如何获取电脑端微信小程序接口

安装证书 设置代理端口 即可抓取美团酒店小程序的数据 从charles 可以抓取出header 请求&#xff0c;没有所谓的通过遍历循环能简单的得到数据&#xff0c;请求包含加密信息 随便改下数据就是 所以如果要得到这些数据&#xff0c;还非得通过小程序模拟人滑动获取数据&…

Mysql数据库(五) Mysql命令行客户端:内连接查询、左连接查询、右连接查询、自连接查询、子查询

目录 一、 连接查询 对多个表进行查询 1.0 数据准备 1.1 连接查询 1.2 内连接 INNER JOIN 1.3 左连接 LEFT JOIN 1.4 右连接 RIGHT JOIN 1.5 FULL OUTER JOIN 1.6 自连接查询 1.7 子查询-嵌套在查询中 一、 连接查询 对多个表进行查询 1.0 数据准备 在之前的文章当中…

20-Linux 上搭建 Java Web 环境

目录 1.搭建 JDK 运行环境 ①查看所有的 Java 安装包&#xff1a; ②安装&#xff08;安装 Java 1.8 相关的软件包&#xff09;&#xff1a; PS&#xff1a;卸载使用 ③验证是否安装成功&#xff1a; 2.安装并运行 Tomcat ①去官网下载Tomcat压缩包至本地&#xff0c;再…

4.Nginx缓存设置和CDN

文章目录 Nginx缓存设置设置缓存取消不需要内容的缓存查看nginx缓存数据 CDN概念工作原理 Nginx缓存设置 设置缓存 ##在yum配置文件中添加nginx在线源vim /etc/yum.repos.d/nginx.repo[nginx-stable] namenginx stable repo baseurlhttp://nginx.org/packages/centos/7/$base…

28-大文件上传(了解)

一、是什么&#xff1f; &#x1f697;&#x1f697;&#x1f697;不管怎样简单的需求&#xff0c;在量级达到一定层次时&#xff0c;都会变得异常复杂。 文件上传简单&#xff0c;文件变大就复杂 上传时&#xff0c;以下几个注意点会影响用户体验 服务器处理数据的能力请求超…

AI PPT 一句话搞定PPT讲演搞

相信大家在职场中&#xff0c;一定会接触过写PPT&#xff0c;经常会把你搞得焦头烂额。在大部分的公司里&#xff0c;写PPT汇报又是不可能逃避的事情。但随着AI时代的到来&#xff0c;有很多AI帮你写PPT的工具也逐渐崭露头角&#xff0c;可以自动帮助你制作出华丽的PPT&#xf…

HOT47-从前序与中序遍历序列构造二叉树

leetcode原题链接&#xff1a;从前序与中序遍历序列构造二叉树 题目描述 给定两个整数数组 preorder 和 inorder &#xff0c;其中 preorder 是二叉树的先序遍历&#xff0c; inorder 是同一棵树的中序遍历&#xff0c;请构造二叉树并返回其根节点。 示例 1: 输入: preorder …

攻防演练中红队常用的攻击方法之横向移动(上)

横向移动&#xff0c;是攻击者侵入企业系统时&#xff0c;获取相关权限及重要数据的常见攻击手法。了解横向移动的原理有助于个人和企业更好地维护网络安全。 中安网星特此推出了横向移动科普系列&#xff0c;本系列共有三篇文章。 近年来&#xff0c;随着网络攻击、勒索事件…

B. Number Factorization - 数论

分析&#xff1a; 可以将n分解成质因数&#xff0c;要求是加和尽可能大&#xff0c;那么可以让所有的指数都是1&#xff0c;a*b>ab一定成立&#xff0c;所以要尽可能地将质因数乘在一起组成更大的数&#xff0c;加在一起得到最后的解。 代码&#xff1a; #include <bit…

Matlab中解常微分方程(组)的命令

常微分方程组求解命令与示例 线性常微分方程&#xff08;组&#xff09; ode45 4 order 龙格库塔法example odefun (t, y) [-2*y(1) y(2); y(1) - 2*y(2)]; tspan [0 10]; y0 [1; 0]; [t, y] ode45(odefun, tspan, y0); ode23 使用二三阶Bogacki-Shampine方法求解非刚性…

Devops系列二(使用helm chart,将java应用发布部署至k8s的示例)

一、接着上一篇的话 docker镜像已经有了&#xff0c;本文我们将接着演示如何使用helm部署应用到k8s。 分为两大部分&#xff1a; 制作helm chart&#xff0c;推送到私有仓库nexushelm拉取chart&#xff0c;部署到k8s 二、制作helm chart 要求你先安装helm&#xff0c;随便一…