石河子大学--Delphi课程设计 2012年11月2日
的话将会弹出提示。密码和确认密码输入不一致也会进行提示。注册成功是,教师信息将被保存到数据库的user表中,同时如果教师填写了密保问题,相关信息也会被保存到user表中。
密码保护问题采用了一个组合框控件,当教师点击组合框的三角箭头时,将弹出可供选择的问题。这些问题是通过AddString方法向组合框中添加数据的,如下所示:
r_question.AddString(\请选择密保问题\
为了将“请选择密保问题”显示在界面中,还需要调用CComboBox提供的SetCursel方法,如下所示:
r_question.SetCurSel(0); //默认显示第一个文本
另外为了避免组合框中的数据无序地显示在组合框中,还需要在资源视图里面,将CComboBox控件的属性中,Sort项设定为False。这样组合框中数据的排序才会按照我们添加的顺序来。
4.2.3 密码找回模块实现
当教师忘记了自己的密码时,可以通过验证密保问题来获取自己的密码。 在找回密码界面设置了两个文本输入框以及两个静态文本。文本框一个是用来输入需要找回密码的教师名,另一个用来输入和此教师名相对应的密保问题的答案。静态文本一个是用来显示和此教师名相对应的密保问题,默认状态下会显示:请在输入教师名之后点击<我的问题>。当教师点击我的问题按钮时,系统会根据教师输入的教师名到数据库里进行查找,如果找到相关记录,此时第一个静态文本将显示教师的密保问题。第二个静态文本是用来显示教师的密码以及提示信息的。当教师输入的答案和数据库里存储的答案相匹配的话,此静态文本将显示出教师的密码。如果不匹配,则显示出错信息。
找回密码界面如图4-5所示:
石河子大学--Delphi课程设计 2012年11月2日
图 4-5 找回密码界面
在登录界面点击“找回密码”,就回进入找回密码界面。教师在里面输入教师名之后点击“我的问题”按钮就会看到密保提示问题,然后在答案一栏输入正确的答案,就会显示教师的密码是什么。此时调用了CStatic的SetWindowText函数。代码如下所示:
if (g_answer == str_answer)
{ }
g_showPwd.SetWindowText(\回答正确,您的密码是:\
当然如果一开始注册时没有设置密保,那么点击“我的问题”按钮时就会提示此教师没有设置密保问题。为了防止有的人用穷举方法破解密保问题,本系统还实现了次数限制。在构造函数初始化一个整型变量count = 3,然后验证密保问题,如果不匹配,则count减一,直到count < 0,则退出找回密码界面,回到登录
石河子大学--Delphi课程设计 2012年11月2日
界面。
代码如下所示:
//将int型转化为cstring型,便于输出 }
count--;
CString str_count;
str_count.Format(\
g_showPwd.SetWindowText(\回答错误!再想想看?剩余点击次数:\if(count < 0) {
g_showPwd.SetWindowText(\//清除文本 CDialog::OnCancel();
//退出“找回密码”界面
MessageBox(\不好意思,你没机会了,休息一下,下次再来\//返回登录窗口 CLoginDlg dlg; dlg.DoModal();
在这个界面,程序还为界面右上角的叉叉重载了一个函数,当教师点击叉叉时将会回到登录界面而不是直接退出,重载的函数名为OnClose,代码如下所示:
石河子大学--Delphi课程设计
void CFind::OnClose() { }
CLoginDlg dlg; CDialog::OnCancel(); dlg.DoModal();
2012年11月2日
// TODO: 在此添加消息处理程序代码和/或调用默认值
石河子大学--Delphi课程设计 2012年11月2日
5 总结和展望
经过对系统的研究和设计,整个系统实现了课题的要求。但同时还是存在着一些不足之处:
1. 在注册模块中,由于密码保护问题采用的是组合框控件,为了给教师提示,所以在可供选择项里面插入了这样一行数据:“请选择密保问题”,并且是作为默认选项显示在界面中的。这样的话“请选择密保问题”也作为一个问题存进了教师信息,因此即使教师不选择密保问题,只要输入答案,系统也默认注册教师填写了密保问题。后来将代码进行修改,首先对密保问题进行判断,如果教师没有选择密保问题,即默认选择的是“请选择密保问题”,这时就对答案输入框的输入字符进行检测,如果教师输入了答案,就弹出一个提示让教师选择一个密保问题;如果教师没有输入答案,就把密保问题设置为空,然后存进数据库。
2. 教师注册模块中,存在注册新教师的不合理。之前的设计中,不但任何人都可以进行注册,而且注册教师还可以对教师的信息进行修改,这样就失去了应用员存在的意义。后来进行修改之后,当教师需要注册时,首先需要输入应用员密码,也就是需要通过应用员的同意之后注册的教师。当教师注册成功之后进入到主界面,也对注册教师进行了限制。除了应用员,其他的注册教师都只能对教师信息进行查看而不能修改,这样就防止了除应用员以外的其他人对教师信息进行修改。
3. 还有就是系统未能实现打印,导出,上传头像功能。总体功能偏少。 在以后的改进中,希望可以实现以下功能:
1. 系统能自动检测教师的QQ,MSN,邮箱,并能进行相应绑定,当教师选择教师的时候,可以对教师进行“QQ聊天”“发送邮件”功能。
2. 当想把教师从某一组分到另外一组时,直接在左侧点住教师的名字不放,然后拖到另一分组下即可。
3. 可以对教师的信息导出到word或者excel中,也可以进行打印,上传教师图片等等。