- 浏览: 899399 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (537)
- Java SE (114)
- Struts (18)
- Hibernate (25)
- Spring (3)
- Page_Tech (41)
- Others (87)
- Database (29)
- Server (24)
- OpenSource_Tools (15)
- IDE_Tool (22)
- Algorithm (28)
- Interview (22)
- Test (28)
- Hardware (1)
- Mainframe (25)
- Web application (4)
- Linux (3)
- PHP (17)
- Android (1)
- Perl (6)
- ubuntu (1)
- Java EE (9)
- Web Analysis (5)
- Node.js (2)
- javascript (2)
最新评论
-
一键注册:
request.getRequestURL()和request.getRequestURI() -
SuperCustomer:
...
SED的暂存空间和模式空间 -
juyo_ch:
讲得挺好理解的,学习了
java 死锁及解决 -
chinaalex:
最后一题答案正确,但是分析有误.按照如下过程,上一行为瓶,下一 ...
zz智力题 -
liaowuxukong:
多谢博主啦,弱弱的了解了一点。
C++/Java 实现多态的方法(C++)
1. 引言
随着计算机应用领域的不断扩展和计算机使用部门与人员的不断普及,使大型计算机应用系统的使用权限和系统权限管理的设计与实现成为人们关注的焦点。每一个较成熟的大型管理信息系统一定有一个权限管理系统来支撑,通过该系统严格分配进入系统的用户的使用范围与操作权限,以保证系统操作的安全性和合法性。
由于权限的分配不仅要求指定到任何一级菜单,而且要求定义到具体的窗口,甚至指定到一个窗口的某个按钮上。而不同的应用系统,对使用权限的控制要求是不同的,针对以上问题,研究权限管理的基本规律,采用面向对象的软件设计方法来实现通用权限管理系统,是本文要解决的问题。
2. 面向对象的权限管理系统主要设计思想
众所周知,面向对象,应用系统面向最终用户的操作界面,都是由一个个的窗口构成。因此,我们定义两个基本类,一个是业务窗口基本类:TChildForm,在这个基类里,我们实现如下的几个过程:定义基本的窗口界面:SetDisplayStyle,捕获窗口不可操作的控件:HandControlsAuthrity。那么只要继承于TchildForm类型的窗口,我们都可以控制其窗口上的所有控件。假设应用程序之间的继承关系是图一的一种方式。主窗口的继承关系为图二的一种方式。主窗口基类里必须有一个过程,即设置菜单权限。
应用系统主要包括两种形式的主要窗口,只要具体的业务窗口继承于以上两类窗口,就能够实体对窗口上的菜单、按钮、组合框等的统一控制。
我们采用数据库定义与面向对象编程方法来实现通用权限管理,重点考虑两点。
(1)建立面向对象的权限管理数据库,对包括应用系统模块信息,系统功能菜单信息,系统权限定义信息、用户操作权限信息、权限角色信息等直接与系统操作类型与操作权限紧密相关的信息进行分类,并建立相应的数据基表。
(2)面向对象的应用系统模块都是通过继承某一个最基本的模块来实现其操作的,我们利用面向对象编程所具有的继承特性,通过子类对象继承父类对象的属性和方法,将实现权限控制的函数和过程写在一个最基本的父类里,来实行操作权限的管理。
3.面向对象的权限管理系统的设计与实现
一般来说,大型的应用系统都是由若干个相对独立的子系统组成,他们的关联是通过数据访问与交换来实现的。利用这一特点,将权限管理系统设计成一个独立的子系统。他在功能上是不依赖于其它的子系统,对应用系统的权限控制,是通过访问相关子系统的菜单,各子系统的窗口,以及窗口的控件来实现的。为了实现这些功能,权限管理系统应具有相对独立的操作界面和系统的数据库。
3.1面向对象的系统数据库设计
使用数据库来记录每一角色或每一用户的权限,以实现每个不同的角色或者用户具有不同的操作权限。系统登录时采集用户号,与数据表中该用户分配的角色或者角色的权限,在业务窗口基本类TchildForm,用一个过程来设置窗口上所有定义了权限的控件的可见性与可视性。数据表的描述如下:
3.2面向对象的角色目录
名称 |
别名 |
类型与长度 |
角色ID |
ROLE_ID(pk) |
Numeric(8) |
子系统ID |
SYSTEM_ID |
Numeric(8) |
角色名称 |
ROLENAME |
VARCHAR(50) |
角色类型 |
ROLETYPE |
CHAR(1) |
创建者ID |
CREATORID |
Numberic |
3.3面向对象的权限目录定义
名称 |
别名 |
类型与长度 |
权限ID |
AUTH_ID(pk) |
Numeric |
子系统ID |
SYSTEM_ID |
Numeric |
窗口名称 |
FORM_NAME |
Varchar(20) |
本级的父ID |
PARENT_ID |
Numeric |
类型 |
ITEM_TYPE |
char(1) |
控制类型 |
CONTROL_TYPE |
char(1) |
权限名称 |
AUTH_NAME |
Varchar(50) |
权限别名 |
AUTH_CODE |
varchar(20) |
3.4面向对象的子系统目录
名称 |
别名 |
类型与长度 |
子系统ID |
SYSTEM_ID(PK) |
Numeric |
子系统代码 |
SYSTEM_CODE |
varchar(10) |
子系统名称 |
SYSTEM_NAME |
varchar(50) |
3.5面向对象的角色权限定义表
名称 |
别名 |
类型与长度 |
角色ID |
ROLE_ID(pk) |
Numeric |
权限ID |
AUTH_ID(pk) |
Numeric |
3.6面向对象的用户具有角色定义
名称 |
别名 |
类型与长度 |
用户ID |
User_ID(pk) |
numeric |
角色ID |
Role_ID(pk) |
numeric |
3.7面向对象的用户目录
名称 |
别名 |
类型与长度 |
用户ID |
USER_ID(PK) |
numeric |
用户编号 |
USER_NO |
varchar(10) |
口 令 |
PASSWORD |
varchar(10) |
是否为超级用户 |
ISSUPER |
char(1) |
子系统ID |
system_id |
numeric |
创建者ID |
Creatorid |
numeric |
3.8面向对象的用户权限目录
名称 |
别名 |
类型与长度 |
权限ID |
AUTH_ID(pk) |
Numeric |
用户ID |
USER_ID(pk) |
Numeric |
增、减类型 |
TYPE |
char(1) |
3.9面向对象的视图的建立
建立了上述基表之后,再建下列视图表,以利于系统程序的优化,提高可读性和系统性能。
3.10系统操作视图
CREATE VIEW AUTH_V_USERS_LOGIN (user_id, user_no, password, system_id, system_code) AS SELECT a.USER_ID, a.USER_NO, a.PASSWORD, b.SYSTEM_ID, b.SYSTEM_CODE FROM AUTH_USERS a, AUTH_SYSTEM b WHERE a.system_id = b.system_id
3.11系统权限视图
CREATE VIEW AUTH_V_USERSET (auth_id, system_id, auth_code, auth_name, form_name, parent_id, item_type, control_type, user_id, type) AS SELECT a.AUTH_ID, a.SYSTEM_ID, a.AUTH_CODE, a.AUTH_NAME, a.FORM_NAME, a.PARENT_ID, a.ITEM_TYPE, a.CONTROL_TYPE, b.USER_ID, b.TYPE FROM AUTH_ITEM a, AUTH_USERSET b WHERE a.auth_id = b.auth_id
3.12角色权限视图
CREATE VIEW AUTH_V_ROLESET (auth_id, system_id, auth_code, auth_name, form_name, parent_id, item_type, control_type, role_id) AS SELECT a.AUTH_ID, a.SYSTEM_ID, a.AUTH_CODE, a.AUTH_NAME, a.FORM_NAME, a.PARENT_ID, a.ITEM_TYPE, a.CONTROL_TYPE, b.ROLE_ID FROM AUTH_ITEM a, AUTH_ROLESET b WHERE a.auth_id = b.auth_id
通过数据库的建立和数据的定义,对各系统的编号、名称,每个系统具有的用户,每个用户所拥有的角色,每个角色所拥有的操作权限进行了规定。这样当用户登录到某一个具体的子系统时,该用户是否合法,它具有哪些操作权限,都可以通过权限管理系统来进行控制。
3.13系统程序设计
通过数据库的设计,我们规定了每个用户所拥有的系统功能操作权限。在得到每个用户所有的系统功能权限以后,怎样控制其具体的菜单,甚至窗口中指定的控件,是权限管理系统要解决的另一个主要问题。根据每一个子系统均存在严格的继承关系这一特性,我们使用两个基类窗口来进行编程控制。
3.14主窗口(TMainBaseForm)
对主窗口,主要考虑控制菜单的可见性或可用性。在窗口引导的同时,执行以下几个过程:
(1)ReadUserMenuAuthrity (Auth_ID,Systm_ID:string var Flist:TList):读取某一个子系统下,某一用户能够操作的菜单权限,并把权限存放在一个列表对象fList中。
(2)ReadSubSystemMenu (System_ID:string;aList:TList):读取某一个子系统所有可以操作的菜单,并把它存放在列表对象aList中。
(3)SetMenuEnableVisible (aList,Flist):根据取得的两种结果,循环比较,如果alist中的一个项在fList中找不到,则肯定此人不具有操作此菜单的权限,从而由3.1.2的控制类型控制其可用还是可见。
3.15业务窗口(TChildForm)
对业务窗口,在基类TchildForm里的引导事件中增加如下几个过程:
(1)ReadUserControlAuthority (Userid,SystemId,AformName:string;var Flist:TList):读取某一个子系统、某一用户、某一窗口名下不能够操作的控件,并把它存放到对象Flist中。这里读取的是某一用户不能操作的控件对象,这样在定义这个用户的控件权限时也只要定义他的不能操作的控件。因为大部份控件对象肯定是可以操作的,所以定义不能操作的控件比定义可操作的控件要容易得多。
(2)SetUserControlEnableVisible (UserID,SystemId,AformName :string):循环读取窗口下所有的控件对象并与Flist对象中的项比较,如果窗口对在Flist找到,说明该控件对象不可以操作或不可显示(由控制类型决定)。
面向对象的权限管理系统设计结束语
通用权限管理解决了通过权限管理系统来控制大型应用系统中各子系统操作权限的问题。权限管理系统与大型应用系统是相对独立的两个系统,与传统的权限管理是子系统中的一个模块相比,它克服了系统权限定义复杂、管理控制繁琐、修改调整困难的弊端。
通用权限管理系统可以对菜单一级的权限进行控制,还可以对窗口中所有可视控件进行控制,包括按钮、文本输入框、面板、标签等。进一步对受控系统可以进行增加,删除等数据库记录级的控制操作。系统还可以根据用户需要,对受控对象提供可视(Visible)、可用(Enable)两种方式的控制。
根据本文讨论的设计思想和方法开发的通用权限管理系统,已在多个CIMS系统和< P>
发表评论
-
iPhone5s插件推荐 越狱后必装的50个插件
2014-12-31 16:58 15351. Activator (没有之一的强大手势操作软件)2. ... -
JS automation 环境迁移备注
2014-11-15 11:17 0此次迁移涉及的问题记录如下: 1) Jenkins 直接把 ... -
MacOS 怎么写NFS移动硬盘
2014-11-14 19:13 26671、打开命令行终端。 2、插上移动硬盘,这时候你在Find ... -
How can I resize a partition with Disk Utility (Bottom-up)
2014-10-10 14:30 447Create a new volume in the bla ... -
Outlook 邮件提醒长期显示
2012-08-30 10:38 1309I thought it was one of th ... -
chrome 背景色的设置
2012-07-17 09:56 2990最近换了浏览器,开始喜欢上chrome。 为了保护眼睛 ... -
日常生活中练习右脑
2012-07-12 10:16 1229成年人在日常琐细的生活中,同样可以采取各种方法锻炼右脑。 ... -
大公司面试集锦
2012-06-18 10:23 1322微软十五道面试题 1、有一个整数数组,请求出两两之差绝对值最 ... -
商务英语中的委婉表达
2012-06-18 10:19 12151. 委婉: 1) 动词:think、hope、re ... -
放松颈椎的几个动作
2012-05-29 12:41 1154随时放松颈部肌肉 ... -
drupal简单的体验
2012-05-24 15:41 837第一步: 到 drupal.org下下载最新的Drupal ... -
HtmlParser进行解析原理
2012-05-23 13:48 1141这两天准备做一些网站编程的工作,于是对HtmlParse小研究 ... -
使用HtmlParser提取HTML文本块
2012-05-23 13:46 1435听人介绍说HtmlParser(Java版本)在网页预处理 ... -
[zz] Opencms vs Magnolia
2012-05-22 10:35 1984最近一直在挑选CMS,Opencms和Magnolia是考察的 ... -
面向对象的三个基本特征
2012-04-25 14:56 784面向对象的三个基本特征是:封装、继承、多态。 ... -
Maven vs Ant
2012-04-23 14:35 1169Ant 将提供了很多可以重用的task,例如 copy, mo ... -
zz智力题
2012-03-26 22:50 12231、有两根不均匀分布 ... -
几种开源Portal的简单介绍分析
2012-02-21 22:42 2402主要包括:Pluto,Liferay,eXo,Jetsp ... -
Portal top ten
2012-02-21 22:37 969TOP1 独立网店系统 Sh ... -
英文面试须知
2012-02-16 15:11 952英语面试需要好好准备 ...
相关推荐
系统采用面向对象的软件开发方法进行开发,根据用户需求进行系统设计,综合应用了J2EE系统开发技术,结合MySQL数据库开发技术。前端系统主要实现了用户的注册登录、查看职位、投递简历、企业信息维护、职位发布、...
系统采用面向对象的软件开发方法进行开发,根据用户需求进行系统设计,综合应用了J2EE系统开发技术,结合MySQL数据库开发技术。前端系统主要实现了用户的注册登录、查看职位、投递简历、企业信息维护、职位发布、...
设计一个基于Web的新闻发布系统,该系统的用户分别是:用户和系统管理员,不同的用户拥有不同的权限,各自完成各自的管理功能,不同的用户看到不同的系统功能,用户创建后台数据库,然后利用DAO设计模式编写程序...
该系统进行B/S 设计的是通用模块,包含了个性化界面设计、权限管理设计、通用数据库操作设计等方面,在本项目完成过程中所涉及的知识点有:html、javascript、jsp、javabean、面向对象程序设计、Oracle 数据库、...
于 web的文档管理系统,它包括管理员的权限管理、文档管理、文件夹 管理、用户管理、密码管理和一般用户对文档的查询查看管理等子系统。 系统的设计与实现,严格遵循软件工程思想,进行了细致的需求和系统 分析工作...
本人事管理系统采用面向对象语言 JavaWeb 进行设计与实现,数据库采用 SQL Server 2005。开发之前,首先经 过调研,得到系统功能需求,根据需求分析确定开发的内容,其次对系统功 能进行模块化设计,得到初步的系统...
对于模块设计,主要采用面向对象的方法来实现,包括系统数据库的实现、打卡/销卡、友好人机界面、用户权限的域划分等模块,并给出了该上位机的控制功能流程图。 (4)对所设计系统进行了系统测试以及结果分析。通过...
在对现有旅游查询网站的分析和比较的基础上,依循面向对象软件开发过程,设计出客户端基于Web浏览器,服务器端基于JSP和Servlet,数据源基于关系型数据库的三层框架,完成JSP页面设计、服务器端核心请求的处理以及对...
大一时写的大作业,主要实现银行的基本功能,希望对大家有帮助,请大家多多支持
基于WEB的工作计划流程管理系统的设计与实现 信息技术的飞速发展,尤其是网络通讯技术、数据库技术及自动化技术的日新月异,为单位、企业的办公带来了极大的便利。但是由于单位、企业的工作性质众多,工作流程各有...
教务信息管理系统的设计与实现 随着我国教育事业的不断发展,各级教育层次的教学规模日益扩大,采用传统的教务信息管理方法(如直接手工管理或者开发程度不高的管理系统)不但浪费大量人力、物力和财力资源,而且...
全文设计开发教务信息管理系统,结合面向对象的思想,采用典型的管理信息系统,其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。通过系统实现,用户可以在网络环境下直接访问操作权限范围内的...
二、介绍数据库技术、面向对象技术和基于B/S结构的WEB程序设计技术;三、对系统进行需求分析并提出解决方案;四、根据解决方案对系统进行设计;五、对项目报告提交系统进行测试并得到测试结果。
工作计划流程管理系统主要分为工作计划的创建区、工作人员的工作区与工作的审查区三个模块,其中工作区是整个工作计划流程管理系统的核心。 本文共五章,第一章对当前背景与国内外现状进行分析;第二章对数据库技术...
设计和实现一个基于Java的物业管理系统可以涉及以下方面: 系统模块: 用户管理模块:包括管理员、物业员工、业主等角色的管理,实现用户信息的增删改查和权限控制。 房产管理模块:管理物业管理范围内的各类房产...
对于希望学习C、数据库设计和库存管理系统设计的开发者来说,这是一个实用的案例。通过参与这个项目,开发者不仅能提升C编程和软件开发技能,还能了解如何将现代软件工程技术应用于教育资源管理,提高教育机构的运营...
本文针对个人博客需求的了解与分析,采取了面向对象的设计方法,开发 了个人博客系统。该系统主要是信息管理系统,并使用node.js 进行开发,以 mongoDB 数据库和 Hbuilder 编辑器相结合实现了该系统。该系统分为注册...
本系统是基于JAVA开发平台,运用Socket网络编程,I/O文件流,线程,Swing图形界面等技术,实现的一套标准化考试系统。通过该系统可以完成多个科目的标准化考试工作。 该系统共分为三个模块:考生客户端,服务器端和...
在对现有旅游查询网站的分析和比较的基础上,依循面向对象软件开发过程,设计出客户端基于Web浏览器,服务器端基于JSP和Servlet,数据源基于关系型数据库的三层框架,完成JSP页面设计、服务器端核心请求的处理以及对...
某企业信息管理系统的设计与实现 信息管理系统就是我们常说的MIS(Management Information System),它是一个计算机软硬件资源以及数据库的人-机系统。经过对题目和内容的分析,选用了Microsoft公司的ASP.NET开发工具...