C++项目开发全程实录(第2版)
上QQ阅读APP看书,第一时间看更新

2.7 登录模块设计

视频讲解

2.7.1 登录模块概述

在本系统中,登录模块的功能是判断用户是不是合法用户,以及根据登录用户的权限开放相应的模块,是保障系统安全的第一道关卡。登录模块的运行效果如图2.32所示。

图2.32 登录模块的运行效果

2.7.2 登录模块技术分析

在登录模块中,为了避免个别人恶意猜测他人的用户名和密码,笔者在系统中添加了密码错误次数限制,如果密码输入错误次数超过3次,就会退出程序。

为了实现以上功能,需要在登录类中添加一个全局变量计算输入错误密码的次数,因为本系统登录时调用的是模块对话框,所以在关闭时就必须先关闭当前的登录模块,再关闭程序主界面。在登录类的OK按钮的代码中加入对次数的判断,如果次数等于3就调用本对话框的退出事件;再在主界面的“登录”按钮代码中对错误次数进行判断,如果次数等于3就调用主对话框的退出事件。要实现这一功能,需先在主对话框的“登录”按钮代码中加入如下代码:


     if(Logindlg.i==3) CDialog::OnCancel();  //Logindlg是登录模块的一个实例

判断登录模块中的i值是否为3,如果i值为3则调用主窗体的退出事件。在调用前应该先关闭登录模块对话框,所以在登录模块对话框的“确定”按钮中加入如下代码:


     if(i==3) OnCancel();  //当i=3时调用“退出”按钮事件

当i=3时调用登录模块对话框中的“退出”按钮事件关闭对话框,OnCancel方法是登录对话框的“退出”按钮事件。

2.7.3 登录模块实现过程

 本模块使用的数据表:Login

(1)在Resources选项卡中插入一个对话框资源,向对话框中添加两个静态文本控件、两个编辑框控件、两个按钮控件和一个图片控件,打开图片控件的属性窗口给其关联一幅图片。控件的属性及变量如表2.3所示。

表2.3 控件属性及变量设置

(2)为登录模块新建一个CLogindlg类,在类中定义一个_RecordsetPtr类型变量m_pRs,在窗口类中添加代码导入全局变量theApp,如图2.33所示,代码如下:


     extern CMyApp theApp;

图2.33 定义theApp

(3)为“登录”按钮的单击事件添加代码,在“登录”按钮的单击事件下,系统应自动将用户输入的数据与数据表中的数据进行比较,如果都一致则提示成功登录;如果不一致则提示用户名、密码错误,代码如下: