ESM的详细设计.docx
ESM的具体设计ESM具体设计一、总则:具体设计是在架构的基础上对概要设计的细化,即刻架构中的类的具体描述,产生设计模型,它可以干脆指导编码。具体设计主要表达:各个类的存放路径:静态的设计类图;对各个类的具体描述,包括:属性和方法的说明,关键方法的实现伪代码;各用例的操作依次、系统执行依次的描述:配置文件的描述等。以下为各模块的具体设计二、组织结构管理模块(一)文件列表及存放路径(根据包图的设计填写)名称类型存放位置说明超级用户新建/删除/查询/更新岗位postquery,jsJSP页面WebRoot/jsp/zzjg/post_query.jsppost_add.jspJSP页面WebRoot/jsp/zzjg/postadd.jsp超级用户保存岗位信息post_relationship_add.jspJSP页面WebRootZjspZzzjg/postrelationshipadd.jsp超级用户添加上级/添加H级关系post_reIationship_add_updown.jspJSP页面WebRoot/jszzjgpostrelationshipaddupdown.jsp超级用户添加为上级/添加为下级post_relationship_delete.jspJSP页面WebRootjspzzjgpostrelationshipdelete,jsp超级用户删除上级/删除下级关系postrelationshipdeleteupdown.jspJSP页面WcbRootjspzzjgpost-relationshipdelete_updown.jsp超级用户删除上下级关系post_relationship_query.jspJSP页面WebRootZjsp/zzjgpost_relationship_query.jsp超级用户查询上级/下级关系post_reIationship_querydown,jspJSP页面WebRootZjspZzzjg/post_relationship_query_down.JspWebRoot/jspzzjgpost_reIationship_queryup.jsp显示下级关系post-relationship_query_up.jspJSP页面显示上级关系ESM主页面ESM组织index,jspJSP页面WcbRoot/jsp/index.jspexception.jspJSP页面WebRoot/jspzzjgexception,jsp结构模块异样页而NewPositionAction.javaJava类Src/action/zzjg/NewPosition?ction.java新建面位ActionDcletePositionAction.javaJava类Src/action/zzjg/DeIetePositionction.java删除岗位ACtiOnUpdatePositionAction.javaJava类Src/action/zzjg/UpdatePositionction.java更新岗位ACtionQueryPositionAction.javaJava类Src/action/zzjg/QueryPositionction.java查询岗位ActionAddUpDownAction.JavaJava类Src/action/zzjg/AddUpDownAction.java添加岗位上下级关系ActionDeleteUpDownAction.JavaJava类Src/action/zzjg/De1.eteUpDownAction.java删除岗位上下级关系ActionQucryUpDownAction.javaJava类Srcactionzzjg/QueryllpDownAction.java查询岗位上下级关系Action业务接口interfaceZzjgServicc.javaJava类Src/service/zzjg/ZzjgService.javaZzjgServiceImp.javaJava类Src/servicezzjg/ZzjgServiceimp.java业务接口的实现类DO接口DAO组件PO值对象VO值对象iIiterfaceZzjgDaointerface.JavaJava类Src/dao/zzjg/ZzjgDaointerface.javaJava类Src/dao/zzjg/ZzjgDao.javaJava类SrcPOzzjg/Position.javaJava类Src/VO/zzjg/PositionVO.javaZzjgDao.javaPosition,javaPositionVO.javaConnection,javaJava类Src/JDBC/Connection.java连接数据库类公共类过滤器类公共组件类Zzjgfilter.javaJava类Src/utilzzjgJava类Src/uti1/zzjg/fiIterZZzjgfi1ter.javazzjg.css样式文件WcbRoot/css/zzjg/zzjg.css控制页面样式JavaScriptzzjg.jsJS文件WebRoot/js/zzjg/zzjg.js代码struts,xml配置文件Src/struts.xml配StrUtS2.O置框架(二)数据库具体设计数据库名:ESMDBPOSITION(岗位)表:序号1pld2PositionName列名PKYesFK类型IntegerVarchar16(根长度8备注岗位主键,自增岗位名据数据字典填写)3departmentId4dutyDescribe5positionllp说明:岗位的上下级关系这样体现:在岗位表中增加一个字段,存放本岗位的上级岗位名称,就可以表达岗位之间的树形上下级关系,所以,增加字段positionUp.DEPARTMENT(部门)表:序号1depldYesInteger82departmentNameVarcharEVP1.oYEE(员工)表:将Employee与AdClreSS反规划为一张表。序号1eldYesInteger2employeeIdVarchar3empIoyeeNameVarchar4idCardNoVarchar5birthdateDate6emailVarchar7depldYesInteger8pldYesInteger9IevIdYesInteger10phone1Varchar11phone2Varchar12stateVarchar13provinceVarchar14cityVarchar15streetVarchar16zipVarcharYesVarchar16Varchar100Varchar16岗位所属部门名岗位职责描述上级闵位名列名PKFK属性长度备注部门主键,日增部门名列名PKFK属性长度备注8员工主键,自增员工号员工姓名员工身份证号员工诞生口期员工电子邮箱员工所在部门员工所在岗位员工级别员工电话1员工电话2员工地址:国家员工地址:省员工地址:城市员工地址:街道员工地址:邮编总经理出纳甲财务经理出纳乙会计甲人事经理1.EVE1.(级别)表:序号列名PKFK属性长度备注1IeVld2level3IevelDescribeUSER(用户)表:序号1Uld2UserName3password4role5eld表之间的关系图(PDV)(建表后,可由工具导出得到)(三)功能实现逻辑1、新建岗位(用例ID:BM-ZZJG-1)(八)功能描述:超级用户新建岗位。YesIntegerVarcharVarchar级别主键,自增级别名称级别描述列名PKYesFK属性Integer长度8备注用户主键,自增用户名用户口令用户角色用户对应的员工VarcharVarcharVarcharYesInteger(b)操作依次:(这个图将有助于配置文件struts.xml的编写)post_add.jspurl:/jsp/zzjg/post_add.jsppost_query.jspurl:/jsp/zzjg/post_query.jspClickI.inkNewPositionctionname:newpositionclass:action,zzjg.NewPositionAction.javasuccessexception,jspurl:jspzzjgexceptio11.jspinput注:这个图的画法是用类图画,在属性栏中手工输入url:xxxxxxx,然后关闭类的方法栏:右击类OPtiOnS选中SuppressOperations项,如下图所示:(c)主要页面:岗位信息杳询岗位信息列表新建删除更新岗位名部门岗位名岗位描述提交重置所在部门职责post_query.jsp岗位名部门岗位职贡*(标*为必填项)保存取消*PoSjadd.jsp系统执行逻辑设计::SuperUser:post_add.jsp:post_query.jsp:NewPositionAction:ZzjgService:ZzjgDao:Connection!:Click新建2:Click保存4:executeO5:NewPosition()6:saveO7:DbConnO3:信息检查8:findByID()10:11:9:2、删除岗位(用例ID:ESM-ZZJG-2)功能描述:超级用户删除岗位。操作依次:post-query.jspurl:/jsp/zzjg/post_query.jspDeIetePositionctionname:deletepositionclass:action,zzjg.DeletePositionAction.Javasuccessexception.jspur1:jspzzjgexccption.jspinput主要页面:岗位信息查询岗位信息列表新建删除更新岗位名部门行政主管行政出纳财务岗位名岗位描述提交重置所在部门职贡负贡制订公司的各项行政管理制度post_query.jsp系统执行逻辑设计::SuperUser:post_query.jsp:DeletePoSitJonAclion:ZzjgService:ZzjgDao:Connection!:Click删除3:execute()4:DeletePosition()5:delete()6:DbConn()2:确认删除7:find()8:9:10:3、更新岗位(用例ID:ESM-ZZJG-3)功能描述:超级用户更新向位。操作依次:UpdatePositionActionname:updatepositionclass:action.zzjg.UpdatePositionAction.javapost_add.jspurl:/jspzzjgpost_add.jsppost_query.jspurl:/jsp/zzjg/post_query.jspClick1.inksuccessexception.jspurl:jspzzjgexccption.jspinput主要页面:岗位信息查询岗位信息列表新建删除更新岗位名部门岗位名岗位描述提交重置所在部门职责post_query.jsp岗位名部门岗位职责*(标*为必填项)保存取消*行政主管行政部1、负责制订公司的各项行政管理制度,使公司的管理工作规范化。2、负责公司各项制度的执行与监督。3、制定合同的标准文本,对全部往来合同进行规范管理。4、负责车辆调度、保养的管理,使车辆能够平安、高效地利用。post_add.jsp系统执行逻辑设计::SuperUser:post_add.jsp:post_query.jsp:UpdatePositionction:ZzjgService:ZzjgDao:Connection!:Click更新2:CIiCk保存4:execute。11:5:UPdatePoSition()10:6:save()9:7:DbConn()3:信息检查8:find()4、查询岗位(用例ID:ESM-ZZJG-4)功能描述:用户查询岗位。操作依次:QucryPositionAction(fromaction.zzjg)name:querypositionclass:action,zzjg.QueryPositionAction.javapost_qucry.jspurl:/jspzzjgpost_query.Jspsuccessexception.jspurl:jspzzjgexccption.jspinput主要页面:岗位信息查询岗位信息列表新建删除更新岗位名部门岗位名岗位描述提交重置所在部门职责post_query.jsp系统执行逻辑设计::User:PoS1.qUery.jsp:QueryPositionAction:ZzjgService:ZzjgDao:Connection!:Click查询2:execute()3:QueryPosition()4:find()5:DbConnO6:7:8:5、添加岗位上下级关系(用例ID:ESM-ZZJG-5)功能描述:超级用户添加岗位上下级关系。操作依次:post_reIationship_add_updown.jspurl:/jsp/zzjg/post_relationship_add_updown.jsppost_relationship_add.jspurl:jspzzjgpost-relationship_add.jSpAddUpDownAction(fromaction,zzjg)name:addupdownclass:action.zzjg.AddUpDownAction.javaexception,jspurl:jspzzjgexception.Jspsuccessinput主要页面:岗位信息查询岗位名部门财务主管财务出纳财务岗位名岗位描述提交重置所在部门职责岗位信息列表添加上级添加下级post_reIationship_add.jsp为岗位财务主管添加下级:岗位信息查询岗位名部门岗位名岗位描述提交重置所在部门职责岗位信息列表添加为上级添加为下级财务主管财务出纳财务post_re1ationship_add_updown.jsp系统执行逻辑设计::post_relationship_add.Jsp:SuperUser:post_reIationship_add_updown.jsp:AddUPDOWnACtiOn:ZzjgService:ZzjgDao:Connectionl:Click添加下级/添加上级2:Click添加为下级/添加为上级3:execute()4:AddUpDown()5:addUp()6:DbConn()7:刷新6、删除岗位上下级关系(用例ID:ESM-ZZJG-6)功能描述:超级用户删除岗位上下级关系。操作依次:post_reIationship_delete.jspurI:jspzzjg/post_relationship_de1ete.jspDe1eteUpDownctionname:deleteupdownclass:action.zzjg.De1eteUpDownction.javapost_relationship_delete-updown.jspurl:/jsp/zzjg/post_relationship_delete_updown.jspsuccess主要页面:岗位信息查询岗位名部门岗位名岗位描述提交重置所在部门职贡岗位信息列表删除上级删除下级财务主管财务出纳财务post_relationship_delete.jsp为岗位财务主管删除下级:岗位信息查询岗位名部门出纳财务岗位名岗位描述提交重置所在部门职责岗位信息列表删除postrelationship_delete_updown.jsp系统执行逻辑设计::SuperUser:post_relationship_delete.jsp:post_relationship_delete_updown.jsp:DeleteUpDownAction:ZzjgService:ZzjgDaol:Click添加下级/添加上级2:Click添加为下级/添加为上级3CxccuteO4:delCteUpDown()5:deleteUp()6:7:刷新7、查询岗位上下级关系(用例1D:ESM-ZZJG-7)功能描述:用户查询岗位上下级关系。操作依次:post_reIationship_query_down.jspurl:/jsp/zzjg/post_reIationship_query_down.jsppost_relationship_query.jspurl:jspzzjgpost-relationshipquery.jSpQueryUpDownAction(fromaction.zzjg)name:qucryupdownclass:action.zzjg.QueryUpDownAction.javamethod:queryDown查询下级胜利查询下级查询上级胜利post_reIationship_query.jspurl:/jspzzjgpost_reIationship_query.jSpQueryUpDownAction(fromaction.zzjg)name:qucryupdownclass:action.zzjg.QueryUpDownAction.javamethod:qucryUppost_relationship_query_up.jspurl:/jsp/zzjg/post_re1ationship_query_up.jsp查询上级说明:考虑到数据库中仅保存上级岗位的状况,查询上级与查询下级是不同的算法,故在业务层须要分开为两个方法,所以,在Action中也分别用两个方法去调用业务层的对应方法。假如只用一个executeO方法,则在execute。中要推断用户点击的是查询下级还是查询上级,进而对应业务层中的不同方法。主要页面:岗位信息查询岗位名部门岗位名岗位描述提交重置所在部门职责岗位信息列表查询上级查询下级财务主管财务出纳财务post_reIationship_query.Jsp岗位财务主管的下级岗位:岗位名部门职责岗位信息列表出纳财务post_relationship_query_down.jsp岗位出纳的上级岗位:岗位名部门职责肉位信息列表财务主管财务post_reIationship_query_up.jsp系统执行逻辑设计::post_relationship_query_down.jsp:User:post_relationship_query.jsp:QueryUpDownAction:ZzjgService:ZzjgDaol:Click查询下.级2:queryDown()3:QueryDown()4:queryDown()5:6:7:8:查询下级:post_relationship_query.jsp:User:post_reIationship_query_up.jsp:QueryUpDownAction:ZzjgService:ZzjgDao:Connection!:Click查询上级2:queryUp()8:3:QueryUpO7:4:queryUp()6:5:DbCOnn查询上级(四)类的具体描述1、ActionSupport名称功能描述属性ActionSupport全部Action的基类,由Struts2框架供应。见StrUtS2的文档描述+execute():String;见Struts2的文档描述说明方法关键算法实现描述:(可选,单纯增、删、改、查的弊法不用描述)2、NewPositionAction类名称NewPositionAction新建岗位Action类,接收来自页面的超级用户新建岗位的恳求。属性(待填)方法+execute():String;3、De1etePositionAction类的具体描述名称DeletePositionAction删除岗位Action类,接收来自页面的超级用户删除岗位的恳求。属性(待填)方法+execute():String;(其它Action类)8、QueryUpDownAction类的具体描述名称DeIetePoSitiOnACtion查询岗位上下级关系Action类,接收来自页面的用户查询岗位上下级关系的恳求。属性(待填+queryDown():String;+queryUp():String:9、ZzjgService类的具体描述名称ZZjgSerViCe(实现类ZzjgServiceInip.java)功能描述岗位管理操作逻辑业务屈性(待填)NewPositionO:BooleanDelctePosition():Boo1eanUpdatePosition():Boo1eanQucryPosition():1.istPositionVOAddUpDownO:BooleanDeleteUpDown():BooleanQueryDownO:1.istPositionVOQueryUpO:PositionVO说明功能描述说明功能描述说明功能描述查询下级查询上级方法说明新建岗位删除岗位更新岗位查询岗位添加岗位上下级关系删除岗位上下级关系查询下级岗位杳询上级岗位方法关键算法实现描述:、添加岗位上下级关系publicBooleanAddUpDown(PositionVOa>PositionVOb)将a传递给Positionap;将b传递给Positionbp:if(a将作为上级,b将作为下级)ZzjgDao.addUp(ap,bp);elseif(b将作为上级,a将作为下级)ZzjgDao.addUp(bp,ap);!(2)删除岗位上下级关系publicBooleanDcleteUpDown(PositionVOa,PositionVOb)将a传递给Positionap:将b传递给Positionbp;if(a是上级,b是下级)ZzjgDao.deleteUp()(bp);elseif(b是上级,a是下级)ZzjgDao.deletelp(ap);(3)、查询下级岗位public1.istPositionVOQueryDown(PositionVOa)(查询a的下级岗位将a传递给Positionap:ZzjgDao.queryDown(Positionap)将结果再传递给一个泛型为PositionVO的对象集合,返回它(4)、/查询上级岗位publicPositionVOQueryUp(PositionVOa)查询a的上级岗位将a传递给Positionap;ZzjgDao.queryUp(ap);将结果再传递给一个PositionVO对象,返回它10、ZzjgDao类的具体描述名称功能描述属性+ZzjgDao数据库访问类(待填)+save0:Boolean+deleteO:Boolean+find():1.istPosition+findBylD():Position+addUpO:Boolean+deIeteUpO:Boolean+query)own():1.istPosition+queryUp():Position说明保存岗位删除岗位查询岗位按主键查询岗位添加上级岗位删除上级岗位查询下级岗位查询上级岗位方法法关键第法实现描述:(1)、/添加上级publicBooleanaddUp(Positionx,Positiony)/x将是y的上级在y的positio11Up字段中填写X的岗位名:)、删除上级publicBooleandcleteUp(Positiony)将删除y的上级在y的PoSitiOnUP字段中填写空值(3)、查询下级public1.istPositionqueryDown(Positionx)将杳询X的下级查找全部对象,它们的PositionUp字段值为X的岗位名:(4)、查询上级publicPositionqueryUp(Positionx)将查询x的上级Stringupname=查找X对象的positionUp字段值:findByID(upname):按主键查找11、Connection类的具体描述名称功能描述属性方法(五)模块类图+Connection数据库链接类(待填)+DbConnO:Connection;说明连接数据库ActionSupport(fromaction.zzjg)NewPositionAction(fromaction.zzjg)executeOUpdatePositionction(fromaction.zzjg)execute()DcletelpDownAction(fromaction.zzjg)executeOQueryPositionAction(fromaction.ZZjg)executc()AddlIpDownAction(fromaction.zzjg)executeODeletePositionAction(fromaction.ZZjg)execute()QueryUpDownAction(fromaction.zzjg)queryDownOqueryUp()PositionVO(fromVO.ZZjg)posiIionNaniedepartmentNainedutyDescribeUti!Class(fromutil,zzjg)ZzjgServiceInterface(fromservice,zzjg)NewPosition.DeletePositio.UpdatcPositio.QueryPositio.AddUpDown.DeleteUpDow.QueryDownOQueryUpOZzjgService(fromservice.zzjg)实现ZzjgDaoInterfacesaveOdeleteOfindOfindBylDOaddUpOdeleteUp.queryUpOqueryDow.(fromdao.ZZjg)ZZjgDaO(fromdao.zzjg)实现Connection(fromJDBC)DbConn()Position(fromPO.zzjg)三、其它模块(略)系统实现的依次是:从底层到高层,即:建立数据库编写连接类编写DAO类(包括PO和VO)编写业务接口类编写业务实现类编写Action类及struts配置文件编写页面。下次讲软件工程实践时,举例:编写客户端程序,调用已经编写好的低层代码类,进行编程调试。是否肯定要用JUnil的测试程序做为客户端程序?还是写一个MainO程序就行?要试一下。