员工教师通讯录应用系统

石河子大学--Delphi课程设计 2012年11月2日

4.1.7 删除教师组

在主窗口左侧的树控件中选择一个组名,然后单击“删除”按钮即可删除指定组,“删除”按钮事件响应函数OnButtonRemove首先取得当前选定的项及保存在其中的ID,然后判断当前选定项为组还是教师。如果为教师,则调用RemovePeople函数执行教师删除操作;如果为组,则先识别要删除的组是否为“未分组”,“未分组”被设计为不可删除的组,因此当选择项为组“未分组”时(“未分组”在数据库设计阶段已经写入数据库,并且其组ID为1),程序将弹出警告框,并拒绝删除该组;而如果选择其他组,则调用RemoveGroup执行组的删除工作。

函数OnButtonRemove的部分代码如下:

if(m_tree_list.ItemHasChildren(hSelItem))

{// 选中组

// 组[未分组]不能删除 if(1 == nID) { }

if(MessageBox(\您确信要删除当前选中的组及组下所有教师吗?\, \确认\,

MB_OK | MB_YESNO | MB_ICONQUESTION) == IDYES)

MessageBox(\未分组]不能删除!\, \警告\, MB_OK | MB_ICONWARNING); return;

石河子大学--Delphi课程设计

{ }

RemoveGroup(nID); RefurTree();

2012年11月2日

}

此处,当判断选中的节点没有子节点时,还不能断定选中的就是教师。因为当一个分组下没有教师时,此时选中的也可能是组节点。因此在下面还要再加一次判断:既没有子节点也没有父节点的节点才是教师节点。代码如下所示:

if(m_tree_list.GetParentItem(hSelItem) == NULL)

{

if(MessageBox(\您确信要删除当前选中的组及组下所有教师吗?\, \确认\, MB_OK | MB_YESNO | MB_ICONQUESTION) == IDYES)

} else {

{ }

RemoveGroup(nID); RefurTree();

石河子大学--Delphi课程设计

2012年11月2日

if(MessageBox(\您确信要删除当前选中的教师吗?\, \确认\, { }

RemovePeople(nID); RefurTree();

MB_OK | MB_YESNO | MB_ICONQUESTION) == IDYES)

}

实际执行组删除工作的是函数RemoveGroup,它可以将传入的组ID对应的组从数据库中删除,其执行机理类同于此前介绍的RemovePeople。不过,要特别说明一点的是,在数据库设计阶段,在设定表groupInfo与表people之间的关系时,选中了层叠的“删除规则”,所以函数RemoveGroup删除参数传入的组ID对应的组时,在表people中所有属于该组的记录也将被全部删除。

函数RemoveGroup的代码如下:

bool CAddressListDlg::RemoveGroup(int id) {

CDatabase database;

database.Open(_T(\)); CString strSql;

strSql.Format(\, id); database.ExecuteSQL(strSql);

石河子大学--Delphi课程设计

database.Close(); return true;

2012年11月2日

}

4.1.8 修改密码

修改密码功能是专为应用员设置的,当注册教师进入主界面时,修改密码按钮将会被禁用。

当应用员点击修改密码按钮时,会弹出一个修改密码对话框。应用员需要输入旧密码、新密码以及确认新密码。然后应用员点击确定按钮时,系统将先判定三个文本框是否为空以及新密码和确认密码是否一致,如果没问题了则再对旧密码进行核对。由于应用员的教师名为admin,所以查询语句可以这么写:

CString change_sql;

change_sql.Format(\

and pwd = '%s'\

如果旧密码输入正确了,那么系统再将确认密码更新到数据库里面去。更新语句如下所示:

change_sql.Format(\

db.ExecuteSQL(change_sql);

4.1.9 更改组名

石河子大学--Delphi课程设计 2012年11月2日

当应用员想对组名进行更改时,就可以点击此按钮。

应用员需要先选择一个需要更改组名的组,然后点击“更改组名”按钮。在之前说明的OnSelchangedTreeList函数中,添加了一些代码,使得当教师点选的是教师的话,更改组名按钮将被禁用,教师再点回组的话,按钮就又重新启用。然后,为了使未分组不被更改组名,当系统检测到教师点击左侧的未分组时,更改组名按钮会被禁用。实现这个功能的代码如下所示:

if(m_tree_list.GetParentItem(hItem) == NULL) //如果没有父节点

{// 选中组

??

// 更新按钮禁用

GetDlgItem(IDC_BUTTON_EDIT)->EnableWindow(FALSE); // 增加按钮启用

GetDlgItem(IDC_BUTTON_APPEND)->EnableWindow(TRUE); //获取当前选择组的id int nID;

nID = m_tree_list.GetItemData(hItem); if(1 == nID) //如果是“未分组” // 更改组名按钮禁用

GetDlgItem(IDC_ChangeGroupName)->EnableWindow(FALSE); else

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4