- 浏览: 919906 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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 15781. Activator (没有之一的强大手势操作软件)2. ... -
JS automation 环境迁移备注
2014-11-15 11:17 0此次迁移涉及的问题记录如下: 1) Jenkins 直接把 ... -
MacOS 怎么写NFS移动硬盘
2014-11-14 19:13 27051、打开命令行终端。 2、插上移动硬盘,这时候你在Find ... -
How can I resize a partition with Disk Utility (Bottom-up)
2014-10-10 14:30 490Create a new volume in the bla ... -
Outlook 邮件提醒长期显示
2012-08-30 10:38 1375I thought it was one of th ... -
chrome 背景色的设置
2012-07-17 09:56 3033最近换了浏览器,开始喜欢上chrome。 为了保护眼睛 ... -
日常生活中练习右脑
2012-07-12 10:16 1270成年人在日常琐细的生活中,同样可以采取各种方法锻炼右脑。 ... -
大公司面试集锦
2012-06-18 10:23 1379微软十五道面试题 1、有一个整数数组,请求出两两之差绝对值最 ... -
商务英语中的委婉表达
2012-06-18 10:19 12781. 委婉: 1) 动词:think、hope、re ... -
放松颈椎的几个动作
2012-05-29 12:41 1200随时放松颈部肌肉 ... -
drupal简单的体验
2012-05-24 15:41 886第一步: 到 drupal.org下下载最新的Drupal ... -
HtmlParser进行解析原理
2012-05-23 13:48 1183这两天准备做一些网站编程的工作,于是对HtmlParse小研究 ... -
使用HtmlParser提取HTML文本块
2012-05-23 13:46 1477听人介绍说HtmlParser(Java版本)在网页预处理 ... -
[zz] Opencms vs Magnolia
2012-05-22 10:35 2023最近一直在挑选CMS,Opencms和Magnolia是考察的 ... -
面向对象的三个基本特征
2012-04-25 14:56 831面向对象的三个基本特征是:封装、继承、多态。 ... -
Maven vs Ant
2012-04-23 14:35 1205Ant 将提供了很多可以重用的task,例如 copy, mo ... -
zz智力题
2012-03-26 22:50 12791、有两根不均匀分布 ... -
几种开源Portal的简单介绍分析
2012-02-21 22:42 2467主要包括:Pluto,Liferay,eXo,Jetsp ... -
Portal top ten
2012-02-21 22:37 1004TOP1 独立网店系统 Sh ... -
英文面试须知
2012-02-16 15:11 991英语面试需要好好准备 ...
相关推荐
人事管理系统设计与实现[D]. 河南科技大学,2020. [2] 王某. 基于JavaWeb的人事管理系统的设计与实现[D]. 河南科技大学,2020. [3] 张某. 人力资源管理系统的设计与实现[D]. 河南科技大学,2019. 关键词 人事...
面向对象学生管理系统是基于面向对象编程思想设计和开发的学生管理信息系统。该系统旨在提供一个高效、可靠、灵活的学生管理平台,满足高校学生处对学生信息管理的需求。 系统架构 面向对象学生管理系统采用了三层...
3. 面向对象程序设计:面向对象程序设计是一种软件设计方法,旨在提高软件系统的可维护性和可扩展性,在驾校信息管理系统设计与实现中,采用了面向对象程序设计和结构化的两种解决问题的方法。 4. MySQL数据库管理...
在面向对象设计中,我们需要将这些功能分解为一系列相互协作的对象,以实现系统的高效运行。 1. **对象识别**:首先,我们创建“用户”对象,该对象包含用户的基本信息如ID、姓名、权限等级等。此外,可能还需要一...
基于JavaWeb人事管理系统的设计与实现 本文主要介绍了基于JavaWeb的人事管理系统的设计与实现,旨在解决当前企业人事管理中存在的效率低下、信息孤岛等问题。通过使用JavaWeb语言和SQL Server 2005数据库,设计并...
总之,基于Java的医药管理系统设计与实现是一个综合性的项目,涉及到软件工程的多个方面,包括需求分析、系统设计、编程实现、测试和维护。通过使用Java语言和面向对象方法,可以构建出高效、稳定且易于扩展的医药...
面向对象的银行管理系统课程设计是计算机科学领域常见的一项实践任务,它旨在帮助学生理解软件工程中的核心概念,如面向对象编程、数据管理以及系统集成。在这个项目中,Python被选为实现语言,因为Python具有易读性...
系统采用面向对象的软件开发方法进行开发,根据用户需求进行系统设计,综合应用了J2EE系统开发技术,结合MySQL数据库开发技术。前端系统主要实现了用户的注册登录、查看职位、投递简历、企业信息维护、职位发布、...
【毕业设计管理系统设计】 针对高校毕业设计管理中存在的问题,如选题随意、过程管理不便、归档困难等,基于SSM框架的毕业设计管理系统提供了解决方案: 1. **选题管理**:系统可以实现在线选题功能,确保选题与...
系统采用面向对象的软件开发方法进行开发,根据用户需求进行系统设计,综合应用了J2EE系统开发技术,结合MySQL数据库开发技术。前端系统主要实现了用户的注册登录、查看职位、投递简历、企业信息维护、职位发布、...
《基于SSM的租车管理系统的设计与实现》是一个典型的计算机专业毕业设计项目,它结合了现代软件开发中的主流技术,如Spring、SpringMVC和MyBatis(SSM框架),为租车业务提供了一套完整的解决方案。这个系统的设计和...
《基于SSM的房屋租赁管理系统设计与实现》 在当今数字化时代,房屋租赁管理系统已经成为房产行业不可或缺的一部分。本文将深入探讨一个基于SSM(Spring、SpringMVC、MyBatis)框架的系统设计与实现,旨在提高房屋...
基于BNFW和ACCESS数据库BS架构的用户权限管理系统设计与实现 本文档介绍了基于BNFW和ACCESS数据库BS架构的用户权限管理系统的设计与实现。该系统的设计目标包括对应用系统的所有资源进行权限控制、完善用户、角色、...
综上所述,基于面向对象的教务管理系统设计需要全面考虑用户需求,明确系统参与者,详细描述用况及其行为,确保系统功能的完整性和实用性。这样的系统将极大地改善教务管理工作,提升教学管理的现代化水平。
SSM(Spring、SpringMVC、MyBatis)框架是Java Web开发中常见的技术栈,本项目"基于SSM的物流管理系统的设计与实现"利用这三个框架构建了一个完整的物流管理平台。下面将详细介绍SSM框架的核心概念及其在物流系统中...
本文档旨在详细阐述一个面向对象的学生成绩管理系统的分析过程,涵盖了系统介绍、需求分析以及用例描述等多个方面,为系统设计和开发提供基础。 第1章 引言 文档编写说明主要阐述了本分析文档的编写规范和意图,...
在本文中,我们将深入探讨如何使用Java开发语言来设计并实现一个智能二维码门禁...通过以上设计和实现,我们能够构建出一个高效、安全的基于Java的智能二维码门禁管理系统,满足现代办公环境或公共场所的门禁管理需求。
本文档详细介绍了基于SpringBoot的学生成绩管理系统的设计与实现。该系统旨在解决学校对学生信息和考试成绩管理的需求,通过集成SpringBoot框架、MySQL数据库以及JavaWeb技术,构建了一个包含管理员、教师和学生三个...