一、 初始页面
当页面没有数据时,把修改、删除、查询按钮置为不可用状态
string s;
//以只读的方式打开文件,如果不存在则进行创建
ifstream ifs("staff.txt");
while (getline(ifs, s)) {
Staff st = getStaff(s);
allStaff.push_back(st);
}
ifs.close();
if (allStaff.size() == 0) {
(&btnDelete)->EnableWindow(FALSE);
(&btnUpdate)->EnableWindow(FALSE);
(&btnQuery)->EnableWindow(FALSE);
}
二、 新增页面
单击新增按钮弹出新增对话框,在编辑框中输入数据后点击确定按钮即可完成添加
//IDOK代表单击了确定按钮
if (IDOK == a.DoModal()) {
//获取总行数
int totalCount = mList.GetItemCount();
Staff st(a.tNumber, a.tName, a.tSex, a.tSFZ, a.tDT, atof(a.tSalary));
//向文件中追加员工
insertStaff(st);
//容器也要追加员工
allStaff.push_back(st);
string strStaff[] = { st.number,st.name,st.sex,st.sfz,st.dt,a.tSalary };
mList.InsertItem(totalCount, strStaff[0].c_str());
for (int i = 1; i < 6; ++i) {
mList.SetItemText(totalCount, i, strStaff[i].c_str());
}
}
//当前存放员工的容器如果不为空,就把修改、删除、查询按钮设置为可用
if (allStaff.size() != 0) {
(&btnDelete)->EnableWindow(TRUE);
(&btnUpdate)->EnableWindow(TRUE);
(&btnQuery)->EnableWindow(TRUE);
}
三、修改页面
//当前行
int currentRow = mList.GetNextSelectedItem(pos);
Add a;
//IDOK代表单击了确定按钮
if (IDOK == a.DoModal()) {
Staff st(a.tNumber, a.tName, a.tSex, a.tSFZ, a.tDT, atof(a.tSalary));
insertStaff(st);
string strStaff[] = { st.number,st.name,st.sex,st.sfz,st.dt,a.tSalary };
for (int i = 0; i < allStaff.size(); ++i) {
//把容器中对应行的数据进行修改
if (currentRow == i) {
allStaff[i].number = st.number;
allStaff[i].name = st.name;
allStaff[i].sex = st.sex;
allStaff[i].sfz = st.sfz;
allStaff[i].dt = st.dt;
allStaff[i].salary = st.salary;
}
//更新文件中员工数据
updateStaff(allStaff[i]);
}
for (int i = 0; i < 6; ++i) {
mList.SetItemText(currentRow, i, strStaff[i].c_str());
}
}
四、删除功能
//当前行
int currentRow = mList.GetNextSelectedItem(pos);
//把该行数据从容器中删除
allStaff.erase(allStaff.begin() + currentRow);
//删除选中行
mList.DeleteItem(currentRow);
//清空文件数据
ClearFielData();
//更新员工
for (int i = 0; i < allStaff.size(); ++i) {
insertStaff(allStaff[i]);
}
if (allStaff.size() == 0) {
(&btnDelete)->EnableWindow(FALSE);
(&btnUpdate)->EnableWindow(FALSE);
(&btnQuery)->EnableWindow(FALSE);
}
五、查询页面
输入工号或者姓名,单击查询按钮就可以实现查询了
//控件中的内容更新到变量中
UpdateData(1);
if (inputValue == "") {
MessageBox(_T("工号或姓名不能为空!"), "人事管理系统");
return;
}
string s;
ifstream ifs("staff.txt");
vector<Staff> allStaff;
while (getline(ifs, s)) {
Staff st = getStaff(s);
allStaff.push_back(st);
}
ifs.close();
for (int i = 0; i < allStaff.size(); ++i) {
if (allStaff[i].number == inputValue || allStaff[i].name == inputValue) {
......
UpdateData(0);
return;
}
}
MessageBox(_T("查无此人!"), "人事管理系统");