毕业设计基于三层结构的bs模式的设备管理系统.docx
-
资源ID:1954130
资源大小:996.83KB
全文页数:74页
- 资源格式: DOCX
下载积分:16金币
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
毕业设计基于三层结构的bs模式的设备管理系统.docx
基于三层结构的B/S模式的设备管理系统用户、部门、日志和系统维护的设计与实现学 科、专业 计算机科学与技术 研 究 方 向 软件开发 摘要本文介绍的是设备管理系统的开发与设计,系统采用B/S模式的三层结构,应用Java的servlet技术,因此有较高的安全性、扩展性和可移植性。系统按照功能模块划分为设备管理维护模块、部门管理维护模块、用户管理维护模块、日志管理维护、系统维护模块和查询模块。本文主要论述了系统中的用户管理,部门管理,日志管理及系统维护模块的设计及实现。部门管理采用二叉树的数据结构对部门树形结构进行管理,保证系统部门间关系的正确。用户管理维护是基于部门结构对用户进行管理维护,一个用户可属于多个部门。日志是记录用户使用系统的操作情况,日志的存储采用触发机制,系统维护是对系统数据库的备份与恢复,日志管理和系统维护保证了系统安全运行。根据各功能模块的特点,采用Java面向对象的思想将各模块抽象为Java类。根据系统功能的需求,设计并实现相应的功能接口。使得各功能模块间相对独立,保证系统的安全性、稳定性和可扩展性。关键字:B/S模式,三层结构,Java语言,servlet技术,部门树,触发机制AbstractThe paper has introduced the development and design of Device Management System. This system base on the Browser/Server model triple-layer structure and use servlet technology of java, therefore there is higher safety, expandability and portability. According to the function the system is divided into five parts, which are the Device Management Module, the Department Management Module, the User Management Module, the Log Management Module, the System Maintenance Module and the Search module.The major idea of the paper is introduction that the design and realization of the User Management, the Department Management, the Log Management and the Department Management. The Department Management adopts binary tree structure to manage the structure of departments, in order to guarantee relation among departments. The User Management base on departments structure and guarantee that relation of user and department are correct. Log is used to record users operation in the system. The log saving adopt Touch off the mechanism. The system maintenance is to backup the systems database, the log management and the system maintenance is used to guarantee system safety movement.According to the characteristic of every function module, abstracting each function model as class base on Java Object Oriented thought. According to the requirement of the system function, design and realize each function models interface. Therefore each function model of system is independence and the system is higher safety, expandability and portability.Keyword:B/S model,triple-layer structure,Java programming language,servlet technology,department tree,touch off the mechanism目 录摘要IABSTRACTII目 录III1. 系统概述12. 设备管理系统的设计22.1系统整体设计22.2部门管理维护的设计42.2.1 部门管理维护功能概述42.2.2 部门管理维护详细设计82.2.3. 部门结构与用户维护管理间联系的设计与实现122.2.4. 部门类接口算法设计142.3用户管理维护设计202.3.1. 用户管理维护功能概述202.3.2. 用户管理维护的详细设计222.4日志管理维护的设计252.4.1 系统日志管理维护功能概述252.4.2. 日志管理维护详细设计262.5系统维护的设计282.5.1. 系统维护功能概述282.5.2. 系统维护详细设计293. 设备管理系统的实现323.1部门管理维护模块的实现323.2.1查看部门信息功能实现323.2.2添加部门功能实现333.2.3修改部门功能实现343.2.4删除部门功能实现353.2.5移动/合并部门功能实现363.2用户管理维护模块的实现383.2.1用户个人信息维护功能实现383.2.2添加新用户功能实现393.2.3查看用户信息功能实现423.2.4修改用户信息功能实现433.2.5添加用户到其他部门功能实现443.2.6删除用户功能实现463.3日志管理维护模块的实现473.3.1日志查询功能实现473.3.2日志删除功能实现483.4系统维护模块的实现503.4.1系统备份功能实现503.4.2系统备份文件查看功能实现513.4.3删除备份文件功能实现523.4.4还原备份文件功能实现534. 总结554.1系统小结554.2系统不足554.3心得体会55致谢56参考文献57附录:(类的函数清单)581. 系统概述当前设备系统存在的主要问题是对设备的管理缺乏灵活性,对部门结构与用户权限的管理比较混乱,缺乏很好的安全性。由于当前系统中设备属性划分固定,缺乏灵活性。当设备属性发生变化时,就会出现类型不匹配的问题,在对设备进行录入,修改和查询操作时,会带来诸多的不便。而且当前系统中用户权限和部门结构的管理比较混乱,当用户所属部门或部门结构发生变化时,例如某一用户从一个部门调到另一部门,或系统部门中的某一部门新增加或删除下级部门时,这时对该部门设备和用户权限的管理就比较混乱。除此之外,当前系统还存在安全性的问题,如:系统的备份与还原,系统日志的记录等。在功能上还缺乏对部门,用户的维护操作功能,如:合并部门,移动部门,将某部门用户添加至其它部门等操作。基于系统灵活性和安全性的考虑,系统构建是基于B/S模式的三层结构,采用JAVA的servlet技术的设备管理系统。开发此系统的核心思想就是保证设备管理的灵活性和独立性,系统运行的安全性。系统中的所有设备的属性均由用户决定。即设备的结构是随着用户的需求变化的,因此大大提高了系统对设备管理的灵活性。将不同类型的用户分配不同的操作权限,并增加不同类型用户的身份验证。当用户使用系统操作时,将该用户的操作情况记入日志,保证用户能够安全的使用系统。为保证系统的正常运行,增加了对系统的维护功能:备份系统和还原系统。当系统遇到问题时,能够及时恢复系统。为了很好的管理系统部门结构,还增加了对部门的合并和移动操作,而且部门结构发生变化时,不会影响该部门的设备管理与维护,因此可以很好地避免对于设备管理的混乱,保证设备管理的独立性。而且出于系统的跨平台性和安全性的考虑,本系统的开发采用Java的servlet技术。java语言是目前非常流行的一种面向对象的程序开发语言。servlet技术是其中非常重要的组成部分,是开发B/S模式系统的有力工具。使用servlet技术开发系统,继承了java的一贯风格,不但效率高而且具有很高的安全可靠性。而后台数据库采用Microsoft SQL Server数据库,Microsoft SQL Server数据库是目前十分流行的数据库管理系统,不但有很高的安全性而且还具备十分强大的网络功能。2. 设备管理系统的设计本文只讨论设备管理系统的部门、用户、日志和系统维护部分的设计与实现。2.1系统整体设计本设备管理系统是基于Java的servlet技术的B/S模式的系统。从系统结构的设计来看,该系统可划分为三个逻辑层:数据库操作层,中间层以及页面交互层。如下图所示:采取这种三层结构的好处在于:每一层都是相对独立的,它们之间只能通过相应的接口进行通信,从而保证了系统的安全性和可扩展性。当其中一层的结构发生变化时,由于通信接口的统一不会影响到其它层次结构。对于用户来说只有页面交互层是可见的,中间层和数据库层对于用户是透明的,这样就提高了系统的安全性。l 页面交互层:用户通过页面交互层完成对系统维护操作(如:设备管理维护,用户管理维护,部门管理维护等等)。通过相应的通信接口将用户所要完成操作提交给中间层,由中间层完成相对应的逻辑操作。l 中间层:中间层主要完成对相应抽象类的逻辑操作和提供相应的操作接口。通过相应的通信接口提交给数据库层,来完成对数据库的相应操作。l 数据库操作层:数据库操作层主要完成对数据库的操作和提供相应的对数据口修改的接口。数据库层将从上层模块获得的数据进行处理后修改相应的数据库信息,避免了上层各模块直接对数据库进行操作,从而提高了系统的安全性。l 数据库:底层数据库主要用于存储系统中设备,用户,部门,日志的基本信息。使用的是SQL Server 2000数据库。SQL Server 2000数据库除了具有强大的存储功能外,最重要的是其具有强大的管理功能。为数据的存储及管理提供了强大的数据支持。本系统从功能上分为:设备管理维护模块,用户管理维护模块,部门管理维护模块,日志管理维护模块,系统维护模块,查询功能模块。如下图所示。l 设备管理维护模块:维护操作包括对设备管理维护和对设备属性的管理维护;设备信息管理维护提供对设备信息的添加、查询、修改及删除。设备属性的管理维护提供对设备属性的添加、查询、修改及删除。l 用户管理维护模块:是基于部门结构对某部门用户进行管理维护,保证用户与部门所属关系的正确。维护操作包括对用户的添加、修改、按部门查询、删除及添加到其它部门的操作。用户管理维护是基于部门的管理维护,主要是对用户权限、所属部门、用户名及用户密码的管理维护。l 部门管理维护模块:部门的管理维护是对部门树型结构的管理维护,保证系统部门间关系的正确。维护操作包括对部门的添加、修改、删除、移动和合并操作。l 日志管理维护模块:日志是记录用户使用系统进行操作的情况,保证用户能够安全,合理的使用系统,日志的存储采用触发机制。维护操作包括对日志的查询及删除,查询分为按日期查询、按操作类型查询、按设备ID查询、按未经批准操作查询和默认查询。删除包括按日志ID删除和按日期删除。l 系统维护模块:是对系统数据库的备份与恢复和备份文件的管理维护,在系统遇到问题时能够及时恢复,保证系统的正常运行。维护操作包括备份系统,还原系统和备份文件的查询,删除。备份文件是对系统数据库数据备份和数据库日志备份。l 查询功能模块:该模块的提供对设备信息进行复杂逻辑查询的功能,保证用户能够查询到准确的设备信息。根据系统功能模块的划分,将各层按功能细分如下图所示2.2部门管理维护的设计2.2.1 部门管理维护功能概述系统中部门管理主要是对系统部门树形结构的管理维护,其次是对部门基本信息的管理维护。其中对部门结构的维护包括:添加新部门,删除部门,移动部门和合并部门;对部门基本信息的维护包括:修改部门信息。部门结构的管理维护在整个系统中起到十分关键的作用,因为系统中的设备管理,用户管理和日志管理都是基于部门结构的。系统部门结构示意图(图1):图1系统部门结构示意图部门1:为系统中部门树的根部门。部门5,部门6,部门7,部门8,部门9,部门10:为系统中部门树的叶子节点。部门信息管理维护功能包括:l 添加新部门:添加新部门到操作用户所管辖部门树中的某一部门下级(如图2,3所示)。图2 添加新部门前操作用户所管辖部门树示意图图3 添加新部门后操作用户所管辖部门树示意图l 修改部门信息:修改操作用户所管辖部门树中的某部门的名称。l 移动部门:将操作用户所管辖部门树中的某部门及其下级所有部门移动到操作用户所管辖部门树中的另一部门的下级。除整个系统部门树的根部门以外所有部门都可执行该操作。(如图4,5所示)图4 移动前操作用户所管辖部门树示意图图5 移动后操作用户所管辖部门树示意图l 合并部门:将操作用户所管辖部门树中的某部门的用户和设备合并到操作用户所管辖部门树中的另一部门中,并将合并部门下级部门移动到目的部门的下级,然后删除合并部门。除整个系统部门树的根部门以外所有的部门都可执行该操作。(如图6,7所示)图6 合并前操作用户所管辖部门树示意图图7 合并后操作用户所管辖部门树示意图l 删除部门:删除操作用户所管辖部门树中的某一叶子节点部门。(如图8,9所示)图8 删除前操作用户所管辖部门树示意图图9 删除后操作用户所管辖部门树示意图l 查看部门信息:列出操作用户所管辖部门树中的所有部门信息和所属部门的部门结构。普通用户只能查看其所在部门的部门结构。添加新部门,修改部门信息,移动部门,合并部门,删除部门功能只限于系统管理员和部门高级用户2.2.2 部门管理维护详细设计2.2.2.1部门类详细设计根据部门管理维护功能的需求和部门结构的特点,将部门信息维护抽象为类。部门类主要负责维护管理系统中部门树的结构和记录部门的基本信息,为该系统的部门管理维护和其它功能模块提供相应的接口。目的是为了保证系统中部门结构的准确,保证部门与用户之间的联系简单,清楚,安全,合理。本系统中部门类采用二叉树结构表示系统中部门树的结构,主要负责对部门结构和信息的管理维护,为其它功能模块提供相应的接口。1).部门类属性设计:部门类属性用于记录系统部门的基本信息,是以二叉树形式表示部门的树形结构。Ø 部门ID(DepID):部门唯一标识(主索引)。表示与数据库中的部门信息之间的联系。Ø 部门名称(DepName):系统中部门的名称标识。 Ø 直接上级部门ID(SuperID):该部门的直接上级部门ID。根部门的直接上级部门ID属性为-1。Ø 二叉树的左孩子(ChildDep):该部门下级部门子树的根节点,该类型为部门类对象。叶子节点的下级部门子树的根节点为null。Ø 二叉树的右孩子(BrotherDep):该部门兄弟部门子树的根节点,该类型为部门类对象。如果该部门没有直接右兄弟部门,则该属性为null。部门类属性列表属性名属性标识属性类型部门IDDepIDint部门名称DepNameString直接上级部门IDSuperIDint该部门下级部门子树的根节点(二叉树的左孩子)ChildDepDepartment该部门兄弟部门子树的根节点(二叉树的右孩子)BrotherDepDepartment举例说明图10 系统部门树结构如图10所示:根部门:u 直接上级部门ID(SuperID)属性为-1。u 该部门下级部门子树的根节点(左孩子)ChildDep属性为1级部门1的部门类对象。u 该部门兄弟部门子树的根节点(右孩子)BrotherDep属性为null。1级部门1:u 直接上级部门ID(SuperID)属性为根部门IDu 该部门下级部门子树的根节点(左孩子)ChildDep属性为2级部门1的部门类对象。u 该部门兄弟部门子树的根节点(右孩子)BrotherDep属性为1级部门2的部门类对象。2级部门5:u 直接上级部门ID(SuperID)属性为1级部门3的IDu 该部门下级部门子树的根节点(左孩子)ChildDep属性为null。u 该部门兄弟部门子树的根节点(右孩子)BrotherDep属性为2级部门6的部门类对象。以二叉树形式表示为图11图112).部门类功能接口设计部门类接口主要分为:用户信息维护接口和为其它功能模块提供的接口。部门信息维护接口是为了实现部门信息和结构的管理维护功能。为其它功能模块提供的接口是根据其它模块的需求提供相应的功能,主要为用户管理维护模块提供接口。如图12所示图12Ø 部门信息维护接口1>. 添加新部门接口:将新部门对象信息写入数据库中。添加部门时调用。2>. 更新部门信息接口:根据部门类对象更新该对象在数据库中的基本信息。修改部门信息时调用。3>. 移动部门接口:根据移动部门ID和移动目的部门ID,将移动部门对象的直接上级部门域的值设置为移动目的部门ID,调用更新部门信息接口更新该移动部门对象在数据库中的信息。移动部门时调用。4>. 合并部门接口:根据合并部门ID和目的部门ID,将合并部门的设备和用户合并到目的部门,将合并部门的所有直接下级部门移动到目的部门的下级,然后删除合并部门信息。合并部门时调用。5>. 删除部门接口:根据部门类对象删除该部门在数据库中的基本信息,删除部门时调用。6>. 获得用户所能管辖部门树接口:通过用户ID获得该用户所能管辖的部门树,根据用户所属部门ID循环调用根据部门ID获得部门树接口实现。查看部门信息,添加新用户和设备查询时调用。Ø 为其它功能模块提供的接口1>. 根据部门ID获得部门类对象接口:通过部门ID获得该部门类用户对象。修改部门,删除部门时调用。2>. 获得某部门直接下级部门ID数组:通过部门ID获得该部门直接下级部门ID数组。获得用户所能操作的所有部门ID和获得某部门所有下级部门ID时调用。3>. 获得某一部门的所有下级部门ID:根据部门ID获得该部门下级所有部门ID,递归调用获得某部门直接下级部门ID数组接口实现。查询日志时调用。4>. 获得用户所能操作的所有部门ID:通过用户ID获得该用户所能操作的部门ID,根据用户所属部门ID循环调用获得某一部门的所用下级部门ID接口实现。设备维护时调用。5>. 获得某部门直接下级部门对象数组:通过部门ID获得该部门直接下级部门对象数组。查询用户信息和获得部门树时调用。6>. 获得某部门所有下级部门ID:根据部门ID获得该部门所有下级部门ID数组。获得用户所能管理部门ID时调用。7>. 根据部门ID获得部门树接口:根据部门ID某部门一概部门为根节点的部门树。获得用户所能操作的部门树时调用。8>. 获得能够添加用户到其它部门的部门树:根据操作用户所属部门ID和添加用户所属部门ID获得能够添加到的部门树。添加用户到其它部门时调用。9>. 获得移动部门能够移动到的部门树:根据操作用户所属部门ID和移动部门ID获得能够移到的部门树。移动部门时调用。10>. 获得合并部门能够合并到的部门树:根据操作用户所属部门ID和合并部门ID获得能够合并到的部门树。移动部门时调用。11>. 获得根部门到某部门的树结构:根据部门ID获得根部门到该部门的树形结构。查看部门和用户信息时调用。12>. 设置部门基本信息接口:通过部门类对象设置该对象的基本信息。数据库层调用。13>. 获得部门类对象的基本信息接口:通过部门类对象获得该对象的基本信息。查看部门基本信息时调用。14>. 判断该部门是否存在子部门接口:判断该对象是否存在子部门。如果没有子部门,则允许删除该部门。查看部门信息时调用。15>. 判断系统根部门是否存在接口:判断系统部门树的根部门是否存在,如果不存在,则允许添加系统根部门。系统初始化时调用。16>. 获得批准部门ID:根据当前部门ID和操作用户所属部门ID获得批准部门ID,写日志时需调用该接口获得批准部门ID。Ø 部门类与部门维护数据库操作类之间的接口调用如图13所示。图 13部门类与部门维护数据库操作类之间的接口调用关系2.2.3. 部门结构与用户维护管理间联系的设计与实现用户维护管理是基于部门结构的用户管理,因此部门结构与用户维护管理间的联系十分重要。要求用户管理维护部分能够简单的调用获得部门结构的接口。1).获得用户所能管辖部门树根据用户ID获得该用户所能管辖的部门,使用该接口的用户类型为系统管理员和部门高级用户,系统管理员通过该接口获得管辖部门树为整个系统部门树。如图14所示。图14 用户所属部门示意图l 系统管理员1获得的管辖部门树为整个系统部门树。l 部门高级用户1属于部门2和部门4。他所管辖部门为:部门2及其下级所有部门和部门4及其下级所用部门,要获得它所管辖部门树,则需将以部门2和部门4为根的子树合并为一棵树。获得管辖部门树,如图15,16所示。图15 部门高级用户1管辖部门树图16 部门高级用户1管辖部门树二叉树形式2).获得操作用户能够添加用户到其它部门的部门树根据操作用户所属部门ID和添加用户所属部门ID获得能够添加到的部门树,保证添加用户所属的多个部门不在同一部门子树上。l 如果操作用户为系统管理员,则获得能够添加用户到其它部门的部门树为整个系统部门树,除了以添加用户所属部门为根节点的部门子树。以图19为例,系统管理员1要将部门高级用户1添加到其它部门。则系统管理员1所获得的添加用户到其它部门的部门树为以部门3为根节点的部门子树(如图17所示)。图 17l 如果操作用户为部门高级用户,则获得能够添加用户到其它部门的部门树为该部门高级用户所管辖部门树,除了以添加用户所属部门为根节点的部门子树。以图19 为例,部门高级用户员1要将普通用户1添加到其它部门。则部门高级用户1所获得的添加用户到其它部门的部门树为以部门2,部门6,部门4,部门8,部门9,部门10组成的部门树(如图18所示)。图 182.2.4. 部门类接口算法设计1).获得用户所能操作的所有部门ID接口的算法设计根据用户所属部门ID循环调用获得某一部门的所用下级部门ID接口实现。l 算法描述:Vector allDepID; 用于存放用户所能操作的所有部门ID的向量.int UserDepID; 调用用户类接口通过用户ID获得该用户所属部门ID数组。for(int I=0;I<UserDepID.length;I+) 调用部门类接口获得根据UserDepIDi获得其直接下级所有部门ID并将其放入向量allDepID中.2).获得某部门所有下级部门ID根据部门ID获得该部门所有下级部门ID向量。l 算法描述:Vector vector; 用于存放下级部门ID。Integer childID; 调用部门类根据该部门ID获得该部门直接下级部门ID数组。 if(childID.length!=0) 判断该部门是否存在子部门。 如果存在子部门。 for(int j=0;j<childID.length;j+) vector.add(childIDj); 将下级部门ID加入向量中。 递归调用此接口,然后将childIDj的下级部门ID加入到vector中;3).根据部门ID获得部门树接口根据部门ID递归调用该接口获得该部门以该部门直接下级部门为根的部门树,然后将下级子部门树的森林组成完整部门树。l 算法描述:Department childdDep ; 调用部门类接口根据部门ID获得该部门直接下级部门对象数组。if(subdep.length!=0) 判断该是否存在子部门。 如果存在子部门; for(int j=0;j<childDep.length;j+) 递归调用此接口,根据childDepj的ID获得该部门以该部门直接下级部门为根的部门树的部门树。 将该部门和其直接下级部门为根的部门树的森林合并为一棵完整部门二叉树。l 举例说明:如图19所示图19 部门结构图通过该接口获得以部门4为根的部门树。先获得以部门4的直接下级为根的部门树的森林,如图20所示。图20 以部门4的直接下级为根的部门树的森林然后将部门4和他下级部门子树的森林合并成一棵以部门4为根节点部门二叉树,如图21所示。图21 以部门4为根的部门二叉树4).获得用户所能管辖部门树接口根据用户ID获得该用户所能管辖的部门,使用该接口的用户类型为系统管理员和部门高级用户,系统管理员通过该接口获得管辖部门树为整个系统部门树。l 算法描述:int UserdepID; 通过用户类接口获得该用户所属部门ID数组。for(int i=0;i<UserdepID.length;i+)调用部门类接口,根据用户所属部门ID获得以该部门为根节点的部门树。 如果用户所属于多个部门时,则将其所属部门的森林合并成一棵二叉树。l 举例说明:图22所示,获得部门高级用户1管辖部门树。图22 用户所属部门示意图调用部门类根据部门ID获得部门树接口,根据用户所属部门ID获得以该部门为根节点的部门树的森林。如图23所示图23 部门高级用户1管辖部门树森林然后将部门高级用户1所属部门树的森林合并成一棵部门二叉树,如图24所示。图24 部门高级用户1管辖部门树5).获得操作用户能够添加用户到其它部门的部门树根据操作用户所属部门ID和添加用户所属部门ID获得能够添加到的部门树,保证添加用户所属的多个部门不在同一部门子树上。l 算法描述:mverUserDepID 移动用户所属部门ID数组UserDepID 操作用户所属部门ID数组for(int j=0;j<moveUserDepID.length;j+) if(UserDepIDi!=moveUserDepIDj)判断移动用户所属部门ID与操作用户所属部门是否相等 若不相等,调用部门类根据部门ID(UserDepIDi)和添加用户所属部门ID获得以该部门为根节点的添加用户到其它部门子树.然后将添加部门子树的森林合并为一棵部门二叉树。排除该二叉树上引起添加用户所属部门在同一棵部门子树上的部门。说明:根据部门ID和添加用户所属部门ID获得以该部门为根节点的添加用户到其它部门子树.该算法与本算法基本一致。不同点在于:当移动用户所属部门ID与调用部门类接口通过参数部门ID获得该部门的直接下级部门ID不等时,则递归调用自己。l 举例说明:以图22为例,部门高级用户1将普通用户1添加到其它部门。调用部门类接口获得以部门高级用户1,获得以部门高级用户所属部门为根节点的添加用户到其它部门的部门树,如图25所示。图25然后排除该二叉树上引起添加用户所属部门在同一棵部门子树上的部门,应排除部门2。如图26所示。图266).获得移动部门能够移动到的部门树根据操作用户所属部门ID和移动部门ID获得能够移动到的部门树。l 算法描述:int UserDepID;操作用户所属部门ID数组int moveDepID; 移动部门IDfor(int i=0;i<UserDepID.length;i+)if(UserDepIDi!=moveDepID) 判断用户所属部门ID与移动部门ID是否相等 若不等,则调用部门类的根据部门ID获得以该部门为根节点能够移动到的部门子树。 如果操作用户所属与多个部门,则将能够移动到的部门子树的森林合并为一棵部门二叉树说明:根据部门ID和移动部门ID获得以该部门为根节点的能够移动到的部门子树.该算法与本算法基本一致。不同点在于:当移动部门与调用部门类接口通过参数部门ID获得该部门的直接下级部门ID不等时,则递归调用自己。l 举例说明:如图22所示,部门高级用户1移动部门5.获得可移动到部门的部门树(如图27所示)图 27 部门5移动到部门的部门树7).获得合并部门能够合并到的部门树根据操作用户所属部门ID和合并部门ID获得能够合并到的部门树。l 算法描述:该算法与获得移动部门能够移动到的部门树的算法一样。只是比较用户所属部门ID与移动部门ID是否相等。l 举例说明:如图22所示,部门高级用户1合并部门8。获得可移动到部门的部门树(如图33所示)图 28 部门8合并到部门的部门树8).获得根部门到某部门的树结构根据部门ID获得根部门到该部门的树形结构。l 算法描述:Vector depObject; 用于存放部门节点的向量。Department dep; 通过该部门ID获得该部门对象。int super_dep_id=dep.getSuperID(); 获得该部门上级部门ID。while(super_dep_id!=-1) 遍历到根部门时,退出循环。Department super_dep; 通过部门类接口根据上级部门ID获得该部门上级部门对象。depObject.add (super_dep);将该对象反向存入向量depObject中。super_dep_id=super_dep.getSuperID(); 获得该部门上级部门ID。然后,反向取出向量中节点,将各部门节点组成部门树。l 举例说明:如图22所示,获得部门5到根部门的树形结构。通过该接口执行过程为:先获得部门5到根部门的节点反向放入向量中(如图29所示)。图29 将部门节点反向放入向量 然后从向量中反向取出各节点,将各节点合并成一棵部门树(如图30所示)。图30 将各节点合并为部门树2.3用户管理维护设计2.3.1. 用户管理维护功能概述系统中的用户管理维护是基于部门结构对某部门的用户进行管理和维护(如图31 所示),因此部门与用户之间的联系非常紧密。系统中用户根据不同类型分为:系统管理员,部门高级用户,普通用户三类;其中普通用户具有对设备维护的不同权限。系统中任何用户都必须所属于一个或多个部门;所属多个部门时,不允许多个部门所属于同一棵部门子树。图31 部门用户结构图以用户5为例,用户5所属部门子树如图32所示。用户5的所属部门不在一棵部门子树上。图32 用户5所属部门树当用户所属多个部门时,不允许出现以下这种情况,如图33所示。用户所属的多个部不允许在同一棵部门子树上。图33 所属多个部门不能在同一棵部门子树上用户信息维护功能包括:l 用户登陆验证:用户登录系统时,验证该登录用户是否为系统合法用户。l 用户个人信息维护:修改用户的个人用户名和个人密码l 添加新用户到某部门:根据操作用户所能管辖部门,为该操作用户管辖部门中的某一部门添加新用户。l 按部门结构查看用户信息:根据操作用户所能管辖部门,查看该操作用户管辖部门中某一部门的所有用户。l 删除某部门用户:根据操作用户所能管辖部门,删除该操作用户管辖部门中某一部门的某个用户。l 修改某部门用户信息:根据操作用户所能管辖部门,修改该操作用户管辖部门中某一部门的某个用户。l 将某部门用户添加到其它部门:根据操作用户所能管辖部门,将该操作用户管辖部门中某一部门的某个用户添加到该操作用户所管辖的其它部门中;保证添加用户所属的多个部门不在同一部门子树上。其中添加新用户,删除用户,修改用户信息和将某部门用户添加到其它部门操作只限于系统管理员和部门高级用户。任何系统用户都能进行个人信息维护。2.3.2. 用户管理维护的详细设计2.3.2.1用户类详细设计根据用户管理维护功能的需求和用户信息的特点,将用户信息管理维护抽象为类。用户类主要负责维护管理系统用户信息,为该系统的用户信息管理维护和其它功能模块提供相应的接口。目的是为了保证用户能够安全,合法的使用系统。1).用户类属性设计:用户类属性用于记录系统用户的基本信息。Ø 用户ID:用户唯一标识(主索引)。表示与数据库中用户信息之间的联系。Ø 用户名:用户使用系统时的名称标识。Ø 用户密码:登录系统时所需的密码。保证用户合法的登陆和使用设备管理系统。Ø 用户类型:分为系统管理员,部门高级用户及普通用户。用以区分不同类型用户的操作权限。1>.系统管理员拥有系统最高权限,可对整个系统进行操作维护。包括:用户,部门,设备,日志信息的管理维护和系统的维护。2>.部门高级用户只能对其管辖部门的用户,部门和设备进行维护。部门高级用户的权限由系统管理员指定。3>.普通用户对所在部门设备具有一定的操作维护权限,只能查看所在部门的部门结构和进行个人信息维护。普通用户权限由其所在部门的高级用户指定。Ø 普通用户权限:用以区分普通用户对设备维护操作权限。 权限0: 查询,浏览. 低权限1: 查询,浏览,打印权限2: 查询,浏览,修改 权限3: 查询,浏览,打印,修改权限4: 查询,浏览,打印,修改,添加 高Ø 所属部门ID:用户所属部门ID,表示用户与部门之间的联系。一个用户可属于多个部门;属于多个部门时,不允许多个部门在同一棵部门子树上。系统管理员只能属于系