实战案例:使用ADO和三层架构完成登录实例

实战案例:使用ADO和三层架构完成登录实例

ID:38697885

大小:293.00 KB

页数:19页

时间:2019-06-17

实战案例:使用ADO和三层架构完成登录实例_第1页
实战案例:使用ADO和三层架构完成登录实例_第2页
实战案例:使用ADO和三层架构完成登录实例_第3页
实战案例:使用ADO和三层架构完成登录实例_第4页
实战案例:使用ADO和三层架构完成登录实例_第5页
资源描述:

《实战案例:使用ADO和三层架构完成登录实例》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、实战案例:使用ADO技术和三层架构实现用户登录案例【案例描述】现在我们将会通过一个简单的登录案例体会三层架构的开发。登录是大部分的软件都会拥有的重要功能之一,虽然它不是在软件设计的功能用例之内,但它却是软件不可缺少的一部分,通过登录功能我们可以有效的阻止非授权的用户访问软件中保存的信息。首先用户通过软件的提示输入用户名和密码,接下来软件将会通过ADO在数据库中使用select语句查询对应的信息,检测数据表中是否有满足用户输入的用户名和密码,并将检测出来的结果返回到记录集中,软件通过读取记录集中保存的信息,检测用户是否可以登录,如果可以登录则显示“允许登录”的

2、提示,否则显示“不允许登录”的提示。运行效果如下:【三层架构的描述】清楚了上面的需求之后我们可以使用三层架构来描述一下这个简单的功能。首先我们从表示层出发。表示层负责提示用户输入用户名和密码,并且接收用户输入的用户名和密码。接下来通过调用事务层的函数Login,通过Login的形参将用户名和密码传递到事务层进行处理。接下来事务层将传递的用户名和密码整理到SQL语句中,并调用数据库访问层的函数ExcuteSelect函数将这条SQL语句传递到数据库访问层。数据库访问层通过ADO技术和数据库建立连接并且执行该SQL语句,将数据库执行出的结果通过RecordSet

3、对象保存起来并且返回RecordSet对象的指针,通过该指针将RecordSet对象传递到事务层。接下来事务层通过对该RecordSet对象进行“拆包”获取记录集中保存的结果,并判断该结果是否可以满足允许用户登录的条件,如果允许则返回true,否则返回false。表示层中通过事务层的Login函数的返回值判断用户是否可以登录,如果可以则提示“允许登录”,否则提示“不允许登录”。在VisualStudio中生成的关系依赖图如下:(具体可见工程中的体系结构图)【数据结构的设计】该案例是一个非常简单的使用用户名和密码设计的案例,因此我们可以设计一个用于保存某个用户

4、的用户名和密码的数据结构,在C++中,用户自定义的数据结构有很多种描述方案,我们此处选择面向对象的描述方法,使用类进行描述,例如User类,其类图如下:【数据库设计】接下来我们可以进行该项目的数据库设计了。该数据库我们可以命名为Test,而数据库中只有一张数据表Login_Inf。这张数据表中仅仅记录了可以登录软件的用户名和密码。为了防止用户名有重复,我们规定用户名作为主键(作为主键的列不能为空,且值要唯一)。同时为了防止非授权的用户登录软件(例如盗用密码或者清除密码),我们规定每个用户的密码文件不能够为空。表格效果如下图:建立数据库和数据表的代码如下:cr

5、eatedatabaseTest--创建名称为Test的数据库gouseTest--使用该数据库gocreatetableLogin_inf--创建登录信息表(UserNamevarchar(20)primarykey,--创建用户名列,为主键PasswordKeyvarchar(20)notnull,--创建密码列,要求该列单元格添加数据不能为空值)goinsertintoLogin_infvalues('jianghanxin','jiang_1994221')--添加一个元组运行之后在SQLServerManagementStudio的“对象资源管理器

6、”中可以查看到我们所建立的数据库Test和数据表Login_inf。如下图:【第一步:从数据库访问层开始】接下来我们设计完成数据库之后我们可以开始对C++代码的设计。首先我们从最基本的也是最底层的数据库访问层开始。由于我们所有的操作都是要通过数据库访问层执行SQL语句完成的,因此数据库访问层我们可以这样描述。数据库访问层用于和数据库打交道,用于将应用程序和SQLServer数据库建立连接,并且执行相应的数据操作。如果有类似于查询的返回结果,则返回带有查询结果的记录集。在完成数据库操作之后我们可以关闭数据库连接。小提示:每次执行数据库操作都必须要先打开数据库连

7、接,完成操作之后,再将数据库连接关闭。否则程序将会报错。在了解了上述的功能描述后我们可以建立一个类描述数据库访问层,例如DataBase。声明的代码如下:#pragmaonce#ifndefDATABASE_H#defineDATABASE_H#include#include#include#include#import"C:ProgramFilesCommonFilesSystemadomsado15.dll"no_namespacerename("EOF","adoEOF"

8、)usingnamespacestd;classDa

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。