- 1、本文档共19页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实战案例:使用ADO和三层架构完成登录实例课案
实战案例:使用ADO技术和三层架构实现用户登录案例
【案例描述】
现在我们将会通过一个简单的登录案例体会三层架构的开发。登录是大部分的软件都会拥有的重要功能之一,虽然它不是在软件设计的功能用例之内,但它却是软件不可缺少的一部分,通过登录功能我们可以有效的阻止非授权的用户访问软件中保存的信息。
首先用户通过软件的提示输入用户名和密码,接下来软件将会通过ADO在数据库中使用select语句查询对应的信息,检测数据表中是否有满足用户输入的用户名和密码,并将检测出来的结果返回到记录集中,软件通过读取记录集中保存的信息,检测用户是否可以登录,如果可以登录则显示“允许登录”的提示,否则显示“不允许登录”的提示。
运行效果如下:
【三层架构的描述】
清楚了上面的需求之后我们可以使用三层架构来描述一下这个简单的功能。首先我们从表示层出发。表示层负责提示用户输入用户名和密码,并且接收用户输入的用户名和密码。接下来通过调用事务层的函数Login,通过Login的形参将用户名和密码传递到事务层进行处理。
接下来事务层将传递的用户名和密码整理到SQL语句中,并调用数据库访问层的函数ExcuteSelect函数将这条SQL语句传递到数据库访问层。
数据库访问层通过ADO技术和数据库建立连接并且执行该SQL语句,将数据库执行出的结果通过RecordSet对象保存起来并且返回RecordSet对象的指针,通过该指针将RecordSet对象传递到事务层。
接下来事务层通过对该RecordSet对象进行“拆包”获取记录集中保存的结果,并判断该结果是否可以满足允许用户登录的条件,如果允许则返回true,否则返回false。
表示层中通过事务层的Login函数的返回值判断用户是否可以登录,如果可以则提示“允许登录”,否则提示“不允许登录”。
在Visual Studio中生成的关系依赖图如下:
(具体可见工程中的体系结构图)
【数据结构的设计】
该案例是一个非常简单的使用用户名和密码设计的案例,因此我们可以设计一个用于保存某个用户的用户名和密码的数据结构,在C++中,用户自定义的数据结构有很多种描述方案,我们此处选择面向对象的描述方法,使用类进行描述,例如User类,其类图如下:
【数据库设计】
接下来我们可以进行该项目的数据库设计了。该数据库我们可以命名为Test,而数据库中只有一张数据表Login_Inf。这张数据表中仅仅记录了可以登录软件的用户名和密码。为了防止用户名有重复,我们规定用户名作为主键(作为主键的列不能为空,且值要唯一)。同时为了防止非授权的用户登录软件(例如盗用密码或者清除密码),我们规定每个用户的密码文件不能够为空。表格效果如下图:
建立数据库和数据表的代码如下:
create database Test --创建名称为Test的数据库
go
use Test --使用该数据库
go
create table Login_inf --创建登录信息表
(
UserName varchar(20) primary key, --创建用户名列,为主键
PasswordKey varchar(20) not null, --创建密码列,要求该列单元格添加数据不能为空值
)
go
insert into Login_inf values(jianghanxin,jiang_1994221) --添加一个元组
运行之后在SQL Server Management Studio的“对象资源管理器”中可以查看到我们所建立的数据库Test和数据表Login_inf。如下图:
【第一步:从数据库访问层开始】
接下来我们设计完成数据库之后我们可以开始对C++代码的设计。首先我们从最基本的也是最底层的数据库访问层开始。由于我们所有的操作都是要通过数据库访问层执行SQL语句完成的,因此数据库访问层我们可以这样描述。
数据库访问层用于和数据库打交道,用于将应用程序和SQL Server数据库建立连接,并且执行相应的数据操作。如果有类似于查询的返回结果,则返回带有查询结果的记录集。在完成数据库操作之后我们可以关闭数据库连接。
小提示:
每次执行数据库操作都必须要先打开数据库连接,完成操作之后,再将数据库连接关闭。否则程序将会报错。
在了解了上述的功能描述后我们可以建立一个类描述数据库访问层,例如DataBase。声明的代码如下:
#pragma once
#ifndef DATABASE_H
#define DATABASE_H
#include iostream
#include afx.h
#include comdef.h
#include conio.h
#import C:\Program Files\Common Files\System\ado\ms
您可能关注的文档
最近下载
- 3done赵州桥小课件.doc VIP
- 地球的公转(1)高二地理湘教版(2019)选择性必修1.pptx
- 幼儿园大班预防新冠病毒.pptx VIP
- 【两篇】2024年庆祝新中国成立75周年专题党课:高举爱国主义伟大旗帜为中华民族伟大复兴汇聚磅礴伟力与推动高质量发展专题党课讲稿:坚持“五个要”坚定不移以高质量发展扎实推进中国式现代化建设.docx VIP
- 图像模式识别全套教学课件.pptx
- GB 43704-2024 对外开放口岸边防检查现场标志-副本.pdf
- 植物生理学植物光合作用.doc VIP
- 发展数字经济培训课件PPT.pptx VIP
- NB∕T 47003.2-2022 常压容器 第2部分:固体料仓.pdf
- 大班美术《向日葵》(线条画)课件.pptx
文档评论(0)