三层系统架构方案Word文件下载.docx

上传人:b****5 文档编号:19708812 上传时间:2023-01-09 格式:DOCX 页数:12 大小:694.54KB
下载 相关 举报
三层系统架构方案Word文件下载.docx_第1页
第1页 / 共12页
三层系统架构方案Word文件下载.docx_第2页
第2页 / 共12页
三层系统架构方案Word文件下载.docx_第3页
第3页 / 共12页
三层系统架构方案Word文件下载.docx_第4页
第4页 / 共12页
三层系统架构方案Word文件下载.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

三层系统架构方案Word文件下载.docx

《三层系统架构方案Word文件下载.docx》由会员分享,可在线阅读,更多相关《三层系统架构方案Word文件下载.docx(12页珍藏版)》请在冰豆网上搜索。

三层系统架构方案Word文件下载.docx

客户端基类图:

主要界面演示:

应用服务器:

客户端主界面:

打开的子窗体:

系统功能调整界面:

主从操纵表

客户端目录及配置文件:

客户端自动更新界面:

角色权限分配:

用户角色分配:

基类及公共类简要说明:

1、权限基类:

TbaseSecurityfrm

权限基类主要有二大功能,一:

初始化窗体的权限点(如:

添加、删除等);

二:

初始化窗体的菜单相关属性(如:

双亲、功能名、位置)。

有以下属性:

propertyRightList:

TFuncRigthreadFRightList;

//权限管理列表

propertyFunctionID:

stringreadFFunctionIDwriteFFunctionID;

//功能ID

propertyParentID:

stringreadFParentIDwriteFParentID;

//菜单的双亲ID

propertyFunctionName:

stringreadGetFunctionName;

//功能名称

propertyPosIndex:

IntegerreadFPosIndex;

//菜单中同一级的顺序号

propertyImageIndex:

IntegerreadFImageIndex;

//菜单中的图标序号

以上属性,除RightList、FunctionName外,其它属性都需要在继承窗体的OnCreate中初始化值,其中FunctionID必须在项目中唯一。

有以下方法:

procedureInitFunctionRight;

virtual;

//初始化Form的权限参数

procedureGetUserFunctionRight;

//取得用户功能权限

窗体可以自定义权限点,需在InitFunctionRight中添加,

如:

FRightList.AddRight('

Access'

'

访问'

);

如何保存登录用户对窗体的使用权限,需要覆盖GetUserFunctionRight来实现,

FRightList.AddHasRight(psName);

2、单表操纵基类:

TbaseDatafrm

单表操纵基类,主要实现对数据表的操纵和严格控制操纵时各控制的状态。

propertyEditClass:

TBaseDataEditClassreadFEditClasswriteSetEditClass;

//编辑Form类propertyTableName:

stringreadFTableNamewriteFTableName;

//表名

propertyPKFields:

stringreadFPKFieldswriteFPKFields;

//主键名,如有多个用;

隔开

propertyQuerySQL:

StringreadFQuerySQLwriteFQuerySQL;

//表名、视图名、查询语句

propertyPageSize:

integerreadFPageSizewriteFPageSize;

//每页的大小(行数)

propertyCurrPage:

integerreadFCurrPagewriteFCurrPage;

//要显示的当前页

propertyPageCount:

integerreadFPageCount;

//总页数

propertyTotleRecord:

IntegerreadFTotleRecord;

//总记录数

propertyGridCanEdit:

BooleanreadFGridCanEditwriteFGridCanEdit;

//Grid能够编辑

propertyCanEditGridCol:

Boolean;

//Grid列是否可编辑保存

propertySpiltGetPage:

BooleanreadFGetPagewriteFGetPage;

//是否分页取数据

propertyNoUpdateFields:

stringreadFNoUpdateFieldswriteFNoUpdateFields;

//不更新的字段列表,如有多个字段用;

如果要对数据表进行编辑操作,必须对TableName、PKFields赋值,如果只是查询操作,则只需对QuerySQL赋值即可。

如果想在Grid中进行数据编辑,需对GridCanEdit赋值true,否则,需对EditClass赋值,EditClass必须是继承于TbaseDataEditfrm的子类。

如果想重新设置页大小,需设置PageSize的值,所有属性如要赋值都需在窗体的OnCreate中赋值。

procedureChangeMasterStates(pbCanModify:

Boolean);

//改变编辑表的控件状态

procedureGetPageData;

//取得分页数据

procedureGetUserAction(psName:

string);

//取得登录用户拥有的权限

如果用户想调整操纵数据时各控件的使用状态,需要覆盖ChangeMasterStates方法,对相关状态进行控制。

3、主从表操纵基类:

TbaseMasterDetailfrm

主从表操纵基类主要实现了对主从数据表的操纵控制处理。

propertyGridDetEdit:

//从表GRID可以编辑

propertyDetTableName:

string;

//从表名

propertyDetEditClass:

TbaseDataEditClass;

//编辑从表的窗体类

propertyDetPKFields:

stringreadFDetPKFieldswriteFDetPKFields;

//从表主键

继承于TbaseMasterDetailfrm的子类,除了要对它的父类相关属性赋值外。

procedureChangeDetStates(pbCanModify:

//改变编辑从表的控件状态

procedureOpenDetDataSet;

virtual;

abstract;

//打开从表数据集

注意点:

主表数据集滚动时,会执行OpenDetDataSet方法,所以取主表的从表数据,需在这个方法中实现。

4、数据编辑基类:

TBaseDataEditfrm

数据编辑基类用于编辑单条数据记录。

propertyModifyState:

TModifyStatereadFModifyStatewriteSetModifyState;

//状态

propertyDataSet:

TDataSetreadFDataSetwriteSetDataSet;

//修改数据集

propertySoonSave:

BooleanreadFSoonSavewriteFSoonSave;

//立刻保存

procedureVerifySaveData;

//校验保存数据合法性

procedureSetDataValue;

//初始化其它信息

如果要在保存之前对数据进行校验,需覆盖VerifySaveData方法。

5、扩展菜单基类:

TBaseMenufrm

扩展菜单基类用于扩展每个模块功能的父级菜单和分隔符。

procedureAddDirAndSpile;

//添加目录和分隔符

procedureAdd(psFuncID,psParentID,psFuncName:

piPos,piImgIndex:

Integer;

piFuncType:

TFuncType);

//添加一个菜单功能

注意:

每一个子系统都必须实现一个TbaseMenufrm的子类,用于扩展该子系统的菜单功能树,每个继承子类都需覆盖AddDirAndSpile方法,添加相关菜单项。

6、本地数据操纵对象:

TLocalSQL

本地数据操纵对象是一个访问服务器对应服务方法的本地对象,在系统初始化时,就初始化了一个可以直接调用的实例。

它有以下调用方法:

//根据SQL语句取数据集

functionSelectData(constSQL:

String;

outData:

Variant;

outErrMsg:

String):

Integer;

//根据两条SQL语取两个数据集

functionSelectDupleData(constSQLA:

constSQLB:

outDataA:

outDataB:

//执行需要事务的SQL语句

functionExecuteSQL(constSQL:

//执行存储过程

functionExecuteProc(constProcName:

constParamArr:

ParamArray;

constRetRecord:

Boolean;

outRetParamArr:

outErrMsg:

//更新单表数据集

functionUpdateData(constDelta:

constTableName:

constKeyFields:

//更新两个表的数据集

functionUpdateDupleData(constDeltaA:

constTableNameA:

constKeyFieldsA:

constDeltaB:

constTableNameB:

constKeyFieldsB:

//执行SQL命令及更新另一个表的数据

functionUpdateSQLAndData(constSQL:

constDelta:

//根据SQL查询语句取得分页查询数据

functionGetQueryPageData(constSelectSQL:

varCurPage:

varPageSize:

outtotalRecords:

outtotalPages:

//取得唯一编号列表

functionGetUniqueID(consttableName:

constFieldName:

constCount:

varIDList:

//取得系统时间

functionGetDatetime(outAValue:

DateTime;

//根据SQL查询条件,取得查询到的记录数

functionGetRecordCount(constSQL:

outRecCount:

7、窗体注册管理类:

TManagerForm

窗体注册管理类主要负责注册并管理需要用菜单打开的Form,在它所在单元,提供两个全局承数,用来注册Form和反注册Form,方法如下:

procedureRegisterClassE(AClass:

TPersistentClass);

//注册窗体

procedureUnRegisterClassE(AClass:

//反注册窗体

因此,每个子系统下的子窗体,都需在pas文件的initialization段用方法RegisterClassE进行注册,在finalization段用方法UnRegisterClassE进行返注册,注意需要UsesFormManagerListUnt单元。

8、查询对话框类:

TdanngQryDlg

查询对话框是一个通用的生成SQL查询条件的对话框组件。

它有以下属性:

published

//生成的SQL查询条件,不带where

TdataSet;

//要查询的数据集

propertyFields:

TStrings;

//字段列表,格式为:

列标=字段名

propertyTitle:

stringreadFTitlewriteSetTitle;

//对话框标题

propertyIsFilter:

BooleanreadFIsFilterwriteFIsFilter;

//是否过滤查询SQL条件

propertyDatabaseType:

TdDataTypereadFDatabaseTypewriteFDatabaseType;

//数据库类型

propertyBoolList:

TStringsreadFBoolListwriteSetBoolList;

//字符串型逻辑字段列表,在属性的值格式为:

列标=标识假,标识真,如:

是否学生=’No’,’Yes’

propertyAssingedSink:

TAssingedSinkreadFAssingedSinkwriteFAssingedSink;

//指定皮肤事件,为了使新创建的窗体有皮肤,需写此事件。

它有一个方法:

functionExcute:

//返回值为真,则代表生成查询SQL条件正确,生成的查询条件为:

QuerySQL。

9.DBGrid列信息操纵类:

TxhGridCol

它用于初始化和保存DBGrid的列标信息,如一列改变长度,一列移到另一列前,改变后可以跟据登录用户保存起来。

propertyUserName:

string;

//当前登录用户,

propertyGrid:

TDBGridEh;

//操纵的DBGrid;

它有以下方法:

procedureSaveGridRowInfo;

//保存Grid列信息

procedureLoadGridRowInfo;

//装载Grid列信息

procedureClearGridRowInfo;

//消除保存的列信息

开发演示,请看演示文档。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1