员工教师通讯录应用系统 下载本文

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

}

// 更改组名按钮启用

2012年11月2日

GetDlgItem(IDC_ChangeGroupName)->EnableWindow(TRUE);

当判断完成以后,就要开始更新组名了,首先会弹出一个输入新组名的窗口,当教师输入新组名,点击确定按钮之后,系统首先将窗口上的数据更新到变量中,然后连接数据库,将输入的组名在记录集中先进行查询,如果发现已经有相关记录集,则弹出“组名已经存在”的警告;若没有,则可以对组名进行更新了,相关语句如下所示:

strsql.Format(\

db.ExecuteSQL(strsql); //执行SQL语句

由于未分组是不能被更改组名的,所以当教师点击到未分组上面时,更改组名按钮将被禁用,功能实现已经在上面有所介绍。

4.2 登录界面设计

教师登录模块式所有应用系统所应具备的基础模块之一,该模块实现了教师使用系统的检验工作,使没有权限的教师不能使用该系统,增加了系统的安全性。教师登录窗体是整个系统中创建并显示的第一个窗体,所以该窗体应在主窗体创建之前并显示。这个操作应在应用程序初始化方法中实现,该方法名为InitInstance,代码如下:

BOOL CAddressListApp::InitInstance()

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

{

??

2012年11月2日

//以上代码省略

//在主对话框之前先显示登录界面 CLoginDlg logindlg;

if (logindlg.DoModal() != IDOK)

return false;

//以下代码省略

}

4.2.1 登录模块实现

像大多数登录模块一样,登录对话框有两个编辑框,分别可以输入教师名和密码,当教师点击登录按钮时,系统将判断数据库中是否存在教师输入的教师名信息及密码信息,如果存在,则弹出主界面。登录界面如图4-3所示。

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

图 4-3 系统登录界面

关键代码如下:

//系统关键字,因此user要用[]括起来

strsql.Format(\ where username = '%s' and pwd = '%s'\,usr,pass);

user.Open(AFX_DB_USE_DEFAULT_TYPE,strsql); //没有在数据库里找到信息 if(user.GetRecordCount() == 0) { }

MessageBox(\教师信息不正确!\,\信息\,MB_OK); return;

其中,表user是用来存储登录教师信息的,但由于它是系统关键字,因此要用[]将其括起来,不然当教师在按下“登录”按钮的时候会提示错误:“关键字 ‘user’附近有语法错误,未能准备语句”。

在程序设计过程中,经常会用到对话框之间的数据传递,而有时数据却无法在两个对话框之间正确传递。其实在设计对话框之间的数据传递时,应该考虑所传递的对话框和系统弹出的对话框是否是同一个对象。例如,在本模块中系统要

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

将登录对话框中的教师名信息传递给主对话框时,使用如下代码: CAddressListDlg adddlg; adddlg.m_getusername = usr; CDialog::OnCancel(); adddlg.DoModal();

这里是先定义一个主对话框的实例,然后将教师名信息传递给对话框后再打开对话框,这个步骤是正确的。但有时候按照人的思维方式会将传递方法写成如下形式:

CLoginDlg dlg;

m_getusername = dlg.usr;

在主对话框的初始化消息中添加以下代码并使对话框接收上一个登录对话框中的信息,看上去好像并没有什么错误,其实在这犯下了不同对象的错误。

在上面正确的步骤中,先将信息传递给对话框对象,再直接打开这个对象的对话框,则信息就能够正确传送;但在下面的步骤中,已经打开了一个对话框,定义前一个对话框的对象想获取其中的信息。但是,定义的这个对象并不是刚刚打开对话框的那个对象,所以也并没有什么信息可以被传送。

这里将教师输入的教师名信息传递给主对话框是为了进行识别,如果教师使用了应用员账号admin登录,则可以使用系统的全部功能。如果是其他注册教师,除了查询和退出按钮,其他按钮都会处于禁用状态,此时教师就仅仅只能查看教师信息,不能对教师的信息进行更改。这也是对教师信息进行保护的一种措施。

在登录对话框,本系统还设置了一项功能,那就是限制教师名和密码文本框输入字符在16个以内。实现方法是新建一个继承自CEdit的类CMyEdit,然后在登录界面的初始化函数中添加如下代码:

//设置教师名,密码文本框输入字符的限制

CMyEdit *pEdit = (CMyEdit*)GetDlgItem(IDC_EDIT1); pEdit->SetLimitText(16);

//教师名限制

//都限定为16个字符,两种方法都可以

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

m_Password.SetLimitText(16); //密码限制

4.2.2 注册模块实现

本系统中的注册教师只能够查看教师的信息,不能对信息进行修改,在上一小节已经有说明。而且为了保证注册教师是经过应用员同意的,在注册之前还要输入应用员的密码,通过了才能进行注册,否则将不能注册,如图4-4所示。

图 4-4 注册新教师界面

注册界面要求教师输入教师名、密码、确认密码,然后还有可选的密码保护。密码保护是当教师忘记密码时,通过回答注册时填写的密保答案来找回密码的方式,具体实现将在下一节说明。

当教师点击注册按钮时,系统将判断教师名、密码、确认密码是否为空,是