OA协同办公系统详细设计说明书_第1页
OA协同办公系统详细设计说明书_第2页
OA协同办公系统详细设计说明书_第3页
OA协同办公系统详细设计说明书_第4页
OA协同办公系统详细设计说明书_第5页
已阅读5页,还剩43页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

协同办公系统详细设计说明书日期:日期:日期:是日期:日期:日期:日期:是日期:变更记录日期版本变更说明作者签字确认系统模块对应章节对应部门负责人签字TOC\o"1-5"\h\z\o"CurrentDocument"引言4\o"CurrentDocument"编写目的4\o"CurrentDocument"背景4\o"CurrentDocument"基线4\o"CurrentDocument"范围4\o"CurrentDocument"定义4\o"CurrentDocument"参考资料4\o"CurrentDocument"总体设计5\o"CurrentDocument"概述5功能描述5\o"CurrentDocument"运行环境5软件环境5\o"CurrentDocument"硬件环境5开发环境6服务器软件环境6服务器硬件环境6\o"CurrentDocument"开发机器软件环境6\o"CurrentDocument"开发机器硬件环境6设计思想错误!未定义书签。系统构思错误!未定义书签。关键技术与算法错误!未定义书签。关键数据结构错误!未定义书签。人工处理过程错误!未定义书签。TOC\o"1-5"\h\z\o"CurrentDocument"子系统模块设计7工作管理模块7\o"CurrentDocument"在线信息子系统13\o"CurrentDocument"模块114\o"CurrentDocument"模块214\o"CurrentDocument"模块315\o"CurrentDocument"模块415\o"CurrentDocument"模块515\o"CurrentDocument"模块616\o"CurrentDocument"模块716\o"CurrentDocument"公司通讯录子功能19\o"CurrentDocument"个人文件夹管理模块23系统管理模块27名片夹管理模块32\o"CurrentDocument"个人信息管理模块35\o"CurrentDocument"会议室管理模块39\o"CurrentDocument"会议管理421引言1.1编写目的本说明书目的在于详细说明系统各功能的功能及其实现方式,指导程序员进行编码。本说明书的预期读者为:项目经理,系统分析员,系统设计人员,开发工程师,测试经理以及测试设计人员等。1.2背景待开发软件系统的名称:协同办公系统此软件系统任务提出者:此软件系统任务开发者:此软件系统任务用户:1.3基线协同办公系统需求分析说明书v1.0范围系统包括的范围:个人办公、会议管理,系统管理。定义系统管理员:是指在系统中具有最高权限的员工。他能够改变系统中任意员工的相关信息,如个人信息,通讯录,名片夹,会议室使用记录,在线信息状况等。员工:是指在系统中拥有普通权限的人员。该人员所能处理的事物有:个人信息的完善,名片夹、文件夹的管理,通讯录的更新,在线信息的提醒,会议室的使用情况的查看等。经理:是指在系统中拥有较高权限的员工。该人员不仅能处理普通员工所能处理的事物,还能处理如会议室的申请,会议室的管理等事物。权限管理:是指在系统中用户为了保护自己的隐私,对某些信息项的公开程度加以限制的行为。具体的有:日程安排中读者设置和代办设置,共享名片夹中共享名片夹的设置,个人文件夹中共享文件夹的设置等参考资料需求分析说明书、概要设计说明书_v1.0.doc、Oracle数据库使用教程、Ora9iSQLRef.chm、Oracle数据库使用帮助文档、CSS中文教程、HTML开发手册、JAVA高级编程指南、JSP应用开发详解、功能结构图。2总体设计概述功育的函述系统分为三个主要流程:1、个人办公2、会议管理3、系统管理个人办公:普通职员登陆到系统后,通过点击个人办公连接,进入个人办公页面。之后可以选择个人信息、日程安排、名片夹、公司通讯录、待办事项、在线信息、个人文件夹进行办公。会议管理:部门领导登陆到系统后选择会议管理,进入会议管理页面。在会议管理页面中可以增、删、改、查会议。其中发起会议需首先预约会议室,然后将输入与会人名单,开会议信息通过邮件发送到每个与会人的信箱里。系统管理:系统管理员登陆到系统后,点击系统管理,进入系统管理页面。可以选择部门管理、角色管理、职员管理、文件夹管理进行系统维护。运行环境软件环境分类名称版本语种操作系统Microsoftwindows2003中文操作系统的附加功能无数据库平台Oracle10g中文数据库平台补丁无应用平台tomcat6.5英语应用平台补丁无客户端软件无硬件环境服务器最低配置推荐配置应用和数据库服务器Tomcat4.0IBMWebSphere

开发环境服务器软件环境分类名称版本语种操作系统Microsoftwindows2003中文操作系统的附加功能无数据库平台Oracle9.2i中文数据库平台补丁无应用平台应用平台补丁无版本控制系统CVS2.6英文客户端软件无服务器硬件环境服务器最低配置推荐配置应用服务器、数据库服务器、邮件服务器、目录服务器Tomcat4.0IBMWebSphereSQLServer2000Oracle10g开发机器软件环境分类名称版本语种操作系统Microsoftwindows2003中文「操作系统的附加功能无数据库平台Oracle10g中文应用平台开发平台客户端软件开发机器硬件环境分类最低配置推荐配置开发机器

系统功能模块划分根据对客户需求的理解,系统功能划分为如图i所示:3子系统模块设计3.1日程安排模块模块名称权限管理功能描述为员工提供工作安排维护和查询功能,系统根据设定时间将提示内容发布到该员工的工作安排中。员工可以设置自己的工作安排的读者,以便别人知道自己的安排;也可以将自己的工作安排权限开放给指定的人,以便别人替自己安排工作。此模块包含的功能有:读者设置、代办设置、日历查看。接口与属性用户与接口ManageWork交互进行相关的操作。ManageWork接口中包含的操作有:代办管理功能:ProxyAdd():添加代办功能。该函数通过与Proxy对象类关联得到操作所需要的数据。其中Proxy类中的属性有:privateStringsender_id;//将要设置代办的系统用户idprivateStringuse_id;〃将要被设置为代办的系统用户idProxy类中包含的主要方法有:上述各属性的get()、set()方法ManageWork类中的ProxyAdd()方法将通过Proxy类的实例调用相应的get()、set()方法得到或传入数据ProxyAdd()方法中将实例化数据库的对象,完成添加代办的工作。在添加代办之前方法将优先进行加入人员id的检测,若用户已在代办列表中则将提示用户并拒绝重复加入代办。如果欲加入的代办不在该用户的代办列表中则加入该代办,并进行相应的页面跳转,显示该用户所有的代办列表。ProxyDelete。:删除代办功能。该函数通过与Proxy对象类关联得到操作所需要的数据。其中Proxy类中的属性有:privateStringsender_id;//将要设置代办的系统用户idprivateStringuse_id;〃将要被设置为代办的系统用户idProxyDelete()方法中将实例化数据库的对象,完成删除代办的工作。在删除代办之前系统将给出相应删除提示,在用户确认删除后对数据库进行删除操作,并进行相应的页面跳转,显示该用户删除该代办后的所有的代办列表。②.读者管理功能:ReaderAdd():添加读者功能。该函数通过与Reader对象类关联得到操作所需要的数据。其中Reader类中的属性有:privateStringicus_user_id;〃将要设置读者的系统用户idprivateStringiaro_role_id;〃将要被设置为读者的系统用户idReader类中包含的主要方法有:上述各属性的get()、set()方法ReaderManage类中的ReaderAdd()方法将通过Reader类的实例调用相应的get()、set()方法得到或传入数据ReaderAdd()方法中将实例化数据库的对象,完成添加读者的工作。在添加读者之前方法将优先进行加入人员id的检测,若用户已在读者列表中则将提示用户并拒绝重复加入读者。由于根据系统规格说明的相关说明,代办的权限大于读者的权限,即代办自动拥有读者的全部权利,因此如果欲加入读者是当前用户的代办则系统同样拒绝加入该读者。如果欲加入的代办不在该用户的读者列表中则加入该读者,并进行相应的页面跳转,显示该用户所有的读者列表。ReaderDelete():删除读者功能。该函数通过与Reader对象类关联得到操作所需要的数据。其中Reader类中的属性有:privateStringicus_user_id;〃将要设置读者的系统用户idprivateStringiaro_role_id;〃将要被设置为读者的系统用户idprivateStringicus_user_name;//将要被设置为读者的系统用户的姓名privateStringicde_department_name;//将要被设置为读者的系统用户所在的部门privateStringuser_position_name;//将要被设置为读者的系统用户的职位Reader类中包含的主要方法有:上述各属性的get()、set()方法ReaderManage类中的ReaderDelete()方法将通过Reader类的实例调用相应的get()、set()

方法得到或传入数据ReaderDelete()方法中将实例化数据库的对象,完成删除读者的工作。在删除读者之前系统将给出相应删除提示,在用户确认删除后对数据库进行删除操作,并进行相应的页面跳转,显示该用户删除该读者后的所有的读者列表。③.采用日历控件输入时间功能:根据需求规格说明书的要求,系统将提供给用户日历查询功能,以方便其对于工作的管理。在此通过javascript语言实现日历的显示与查询功能。用户可以通过在textbox中输入所需的年份,在下拉列表中选择相应的月份,提交察看所需日期的具体情况。数据结构与算法.判断欲加入代办的存在性:判断欲加入代办是否已在用户的代办列表中主要通过session中存储的登陆用户信息及数据库中表间外键联系,构造sql语句得到相应的结果集。若该查询的结果集为空则说明欲加入代办不在用户的代办列表中,进行加入操作。否则系统给出提示信息。.通过页面加入代办的主要数据结构:根据需求规格说明书的相应要求,用户提出相应的代办操作申请后,系统将给出组织结构图,只有通过组织结构图用户才能进行相应的操作。组织结构图的每个系统用户名的前部都将设有复选框。用户通过勾取所需的用户进行相关的增加或删除操作。系统采用struts架构,页面的复选框属性将作为String型的数组传入系统后台的功能模块层。通过相应的函数确定是否选重的属性。根据该属性关联的icus_user_id系统用户id对相关的数据库表格进行操作。.利用javascript实现日历功能的设计因素:在工作管理的多个模块的需求描述中都明确提到了需要日历的查询和使用功能。但从系统的整体出发,日历的使用范围基本局限于工作管理部分,因此考虑使用javascript减轻系统负担,方便用户使用。模块名称日程维护功能描述为员工提供工作安排维护和查询功能,系统根据设定时间将提示内容发布到该员工的工作安排中。此模块包含的功能有:工作安排、综合查询。接口与属性所有的的操作基于Schedule实体类完成。Schedule类中的属性包括:PrivateIntegerSchedul,〃系统为工作自动分配的ID号PrivateuserID;//工作执行人的ID号PrivateFromID;//工作安排人的ID号privateStringSchedul_bdate;//工作开始日期privateStringSchedul_edate;//工作结束日期privateStringSchedul_content;//工作内容privateStringSchedul_name;//工作名称Schedule类中包含的主要方法有:上述各属性的get()、set()方法①工作维护功能:Add_schedule:添加工作功能。该函数通过与对象类关联得到操作所需要的数据。Schedule类中包含的主要方法有:上述各属性的get()、set()方法ScheduleManage类中的ScheduleAdd()方法将通过Schedule类的实例调用相应的get()、set()方法得到或传入数据ScheduleAdd():方法中将实例化数据库的对象,完成添加工作的工作。在添加工作之前进行申请加入操作人员id的检测,若工作执行人为登陆用户本身,或者登陆用户的被执行代办人,则在该用户提交申请后系统自动进行工作冲突的检测。若工作检测后系统返回值为非冲突,则加入该工作,否则系统提示用户相关的信息并拒绝加入工作。Schedule_delete():删除工作功能。该函数通过与Work对象类关联得到操作所需要的数据。ScheduleManage类中的ScheduleDelete()方法将通过Schedule类的实例调用相应的get()、set()方法得到或传入数据Scheduledelete()方法中将实例化数据库的对象,完成删除工作。在删除工作之前方法将优先进行申请删除操作人员id的检测,若工作执行人为登陆用户本身,或者工作的安排人,则系统将给出相应删除提示,在用户确认删除后对数据库进行删除操作,并进行相应的页面跳转,显示该用户删除该工作后的所有的工作列表。ScheduleSearch():包括综合查询的日历查询查询工作功能。该函数通过与Schedule对象类关联得到操作所需要的数据。ScheduleManage类中的ScheduleSearch()方法将通过Schedule类的实例调用相应的get()、set()方法得到或传入数据ScheduleSearch()方法中将实例化数据库的对象,完成查询工作的工作。根据需求规格说明书的要求:可以通过:1,时间查询,根据时间进行查询2,字查询,根据内容或者标题的关键字查询字段查找相应的工作。从在系统进行工作查询后将通过页面显示工作列表。在用户输入查询条件的情况下进行查询ScheduleEdit():修改工作功能。该函数通过与Schedule对象类关联得到操作所需要的数据。ScheduleManage类中ScheduleEdit()方法将通过Schedule类的实例调用相应的get()、set()方法得到或传入数据ScheduleEdit()方法中将实例化数据库的对象,完成修改工作的工作。在修改工作之前方法将优先进行申请加入操作人员id的检测,若工作执行人为登陆用户本身,或者原工作的安排人且依然则在该用户提交申请后系统自动进行工作冲突的检测。若工作检测后系统返回值为非冲突,则修改该工作,否则系统提示用户相关的信息并拒绝加入工作。数据结构①.检测工作冲突功能:与算法根据需求规格说明书的要求,系统将提供给用户工作冲突检测功能,以方便其对于工作的管理。检测工作冲突主要侧略为:优先检测工作执行人欲安排的工作与其已有的工作安排的冲突。检测过程中需要三步判断:欲安排工作起始日期之间是否有其它的工作安排欲安排工作起始日期是否在其它已安排工作之间欲安排工作结束日期是否在其他已安排工作之间若有没有冲突则安排工作否则系统给出错误信息。

②.检测人员权限功能:根据系统规格说明书的相关说明,不同权限的用户对于工作安排的操作的权限是不同的,检测的策略为:.根据session中的信息判断登陆用户是否工作管理相关操作的责任人.根据读者&代办表中的相关记录判断工作管理相关操作责任人是否具有代办的权限。补充说明bb模块名称待办事项模块功能描述此模块实现了对待办事项的增加、删除、显示以及所有日程安排清单的按日期排序显示功能。接口与属性类jobOperate:抽象方法sortAccordToTime()/按时间排序输入参数:要排序的代办列表输出参数:无返回值:排序好的代办列表Addjob()输入参数:要插入的待办事项对象的引用工作流输出参数:无返回值:bool类型,插入成功与否deletejob输入参数:要删除的待办事项的ID输出参数:无返回值:bool类型,删除成功与否display()://显示待办事项输入参数:无输出参数:要显示的对象列表返回值:bool类型,显示成功与否displayAll()输入参数:无输出参数:要显示的对象列表返回值:bool类型,显示成功与否数据结构与算法对象类job:与数据库中的job表的各个字段相对应序列号job_idInteger名称job_nameString负责人personString起始时间job_btimetime结束时间job_etimetime事项内容jobcontentString事项标题jobtitleString是否完成donebool补充说明

工作安排类图:权限设置类图readermanageproxymanage^addreader() •mddpmxyO^deletereader() *deleteproxy()job工作安排类图:权限设置类图readermanageproxymanage^addreader() •mddpmxyO^deletereader() *deleteproxy()id:int匚id:int晶person」。int^job_btime.date'^bjob_etime:date%obttle^jO'bcontentOdone:Boolean

序列图:工作安排维护序列图:UI□a忸口lanUIDermissionsUicheduieUDdaBcheduleQurA□a伯口后n□日口euitLoginO:1)7:Retu2ChoiceUIOilc&pertJIi)---PermissionSeltins03:Chir—5.ReturmnTo()rninroO'6:ReturninFot)卵uioglnfo()S:Chan-一112:Ret*9:upda11Retu10:Retuninfo{)irninfoonninfoOJL13;ChangeUIO17:Ret16:RetumiriToQy:Quer>'Sctieduai15:RetuminftjQJiminfoo1/x3.2在线信息子系统模块名称在线信息模块功能描述本子系统主要为用户提供留言交流的平台,用户可以发送留言,接收留言,查看留言以及对留言进行查询,回复,删除等操作接口与属性主要由MessageManage类通过操纵Message类实现对留言的管理、接收、发送等。1.其中Message类主要属性包括:IntfromID〃留言发送者员工号StringfromName〃留言发送者姓名InttoID〃留言接收者员工号StringtoName〃留言接收者姓名Stringtitle〃留言主题

Stringcontent〃留言内容Datedate〃留言日期IntmessageNumber〃留言编号intissent〃判断留言是否已经发送intisReaded〃判断留言是否已经被阅读intfrom_delete〃判断发送者是否将留言删除intto_delete〃判断接收者是否将留言删除主要接口与方法有:对类中每个属性的get()与set()方法2.MessageManage属性包括:BoolenisOK〃判断对留言的操作是否成功接口与方法包括:saveMessage()//保存留言editMessage()〃编辑留言seeMessage()〃查看留言sendMessage()//发送留言searchMessage()〃查询留言addMessage()//添加留言deleteMessage()〃删除留言replayMessage()〃回复留言数据结构与算法数据库SQL语句实现功能。补充说明3.2.1模块1模块名称发送留言功能描述指利用系统发送短消息。用户点击“发送”后,系统将留言写进数据库,并将intissent改为1。接口与属性MessageManage类通过Message类的get()与set()方法实现对留言的管理。sendMessage()函数实现发送留言功能。输入参数有inttoID,StringtoName,StringtitleStringcontent,Datedata。返回值为BooleanisOK.sendMessage(昉"法将实例化Message对象,通过调用该对象的方法,来获取留言的基本信息,然后实习留言的发送功能。数据结构与算法数据库SQL语句实现功能。补充说明3.2.2模块2模块名称保存留言

模块名称保存留言功能描述指利用系统保存短消息。用户点击“保存”后,系统将留言写进数据库,并将intissent改为0。接口与属性MessageManage类通过Message类的get()与set()方法实现对留言的管理。saveMessageO®数实现保存留言功能。输入参数有inttoID,StringtoName,inttoID,inttoName,Datedate,Stringtitle,Stringcontent。返回值为Booleanok.saveMessage(昉"法将实例化数据库对象,然后对留言信息进行验证,验证通过后将其保存在数据库中,返回保存成功的信息。数据结构与算法数据库SQL语句实现功能。补充说明3.2.3模块3模块名称查找留言功能描述指利用系统查找短消息。用户输入查询条件,点击“查找”后,系统将从数据库中查找,并将结果返回。接口与属性MessageManage类通过Message类的get()与set()方法实现对留言的管理。searchMessage(旌i数实现查询留言功能。输入参数有Stringname,intfromID,inttoIDsearchMessage()M实例化数据库对象,通过查询条件对数据库进行查询操作,然后将查询结果以列表的实行返回给用户。数据结构与算法数据库SQL语句实现功能。补充说明3.2.4模块4模块名称查看留言功能描述指利用系统查看短消息。用户点击某条留言后,系统将具体内容返回,并将booleanisreaded改为true。接口与属性MessageManage类通过Message类的get()与set()方法实现对留言的管理。seeMessage(旌i数实现查看留言。输入的参数有intmessageNumberseeMessageQl各实例华数据库对象,通过intmessageNumber在数据库中查找信息,将结果返回给用户,进行查看数据结构与算法数据库SQL语句实现功能。补充说明3.2.5模块5模块名称删除留言功能描述指利用系统删除短消息。用户选定留言后,系统将booleanfrom_delete或to_delete改

为true。接口与属性MessageManage类通过Message类的get()与set()方法实现对留言的管理。deleteMessag()函数实现删除留言功能。输入参数有intmessageNumber。返回值为BooleanisOK.deleteMessag()^实例化数据库对象,在验证完用户要删除的留言之后回返回一个确认信息,如果用户确定删除,将删除留言在数据库中的记录。数据结构与算法数据库SQL语句实现功能。补充说明3.2.6模块6模块名称更改留言功能描述指利用系统更改未发送的短消息。用户选择某条未发送留言,点击详“细信息”后,系统将从数据库取出。再点击“编辑”,对该留言进行编辑接口与属性MessageManage类通过Message类的get()与set()方法实现对留言的管理。editMessage()函数实现编辑留言功能。输入的参数有inttoID,StringtoName,Stringtitle,StringcontenteditMessage()将实例化数据库对象,在获取用户的更改信息之后,返回确认信息,待用户确认更改后,进行数据库的更新操作。数据结构与算法数据库SQL语句实现功能。补充说明3.2.7模块7模块名称回复留言功能描述指利用系统回复短消息。用户查看某条留言,点击“回复”后,系统将留言引入到写留言中,并将留言的fromID付给新建留言的toID°fromName付给新建留言的toName。接口与属性MessageManage类通过Message类的get()与set()方法实现对留言的管理。replyMessage()函数实现回复留言功能。输入的参数有inttoID,StringtoNamereplyMessage()将实例化Message类对象,将收到的信息的发送人ID,Name作为新的参数写入新的回复留言,之后调用sendMessage(昉■法发送留言。数据结构与算法数据库SQL语句实现功能。补充说明类图:1.草稿箱时序图ClerkLogin()UIDraftBoxUIDraftsavedDraftBoxDBO\AChangeUI()1qAAddMessage()ReturnToUI()厂?SendDraft()qLReturnToClerk()fQueryBox()-%-ReturnToUI()LRetUlnloClelk()厂%AlterMessage()1TReturnToUI()SendDraft()LReturnToClerk()f—DeleteMessage()lReturnToUI()1SendDraft()$ReturnToClerk()r:pX.未阅留言模块的主要功能是列出系统或其他用户发送给自己d的还没有阅读的短信息。包含的操作有:查询留言、查看留言、回复留言、删除留言。未阅留言时序图

公司通讯录子功能模块名称公司通讯录功能描述为职员提供查询公司所有员工通讯录的功能,系统根据设定的查询条件将查询结果显示给用户中。职员可以将查询的结果导出为excel保存到自己本机选定的地址。此模块包含的功能有:查询通讯录导出位excelo接口与属性用户与接口UserMange交互进行查询的操作。在本子功能中只用到UserManage接口中包含的查询操作。该子功能包含的功能有:查询公司通讯录getAttribute():获得查询条件。该函数接受从页面传过来的参数作为查询条件,查询所需要的数据。getAttribute()调用UserManage接口的searchUser方法,查找用户要查询的用户通讯录,以列表的方式显示给用户。导出为Excel用户查询出通讯录之后可以点击“导出为Excel",弹出导出为Excel,用户指定文件导出路径,将表格导出。本功能用到jxl.jar包,具体实现方法为:publicbooleanexport(Stringsql,Stringname,OutputStreamos){targetFile+="/abc"+".xls";System.out.println("!!!!!!!!!!!!");content=getContent(sql);//以向量的形式存放所有的记录//Stringpath=context.getRealPath(targetFile);try{Vectorinner=null;Stringvalue="";//存放在cell中的文本值intnum=0;//存放在cell中的数字值//OutputStreamos=newFileOutputStream(path);WritableWorkbookworkbook=Workbook.createWorkbook(os);//创建工作薄WritableSheetworksheet=workbook.createSheet("record",0);//创建正-个工作表,name:工作表名称Labellabel=null;//用于与入文本内谷到工作表中去jxl.write.Numbernmb=null;//用于与入数值到工作表中去//开始写入第一行,即标题栏for(inti=0;i<title.length;i++){label=newLabel(i,0,title[i]);//参数依次代表列数、行数、内容worksheet.addCell(label);//写入单元格}//开始写入内容for(inti=0;i<content.size();i++){inner=(Vector)content.get(i);//获取一条记录for(intj=0;j<inner.size();j++){//一4'一■个字段的放入excel中去if(j==1||j==3){//插入的数值Integernum_=(Integer)inner.get(j);num=num_.intValue();nmb=newjxl.write.Number(j,i+1,num);worksheet.addCell(nmb);}else{value=(String)inner.get(j);label=newLabel(j,i+1,value);worksheet.addCell(label);}}}workbook.write();workbook.close();}catch(Exceptione){e.printStackTrace();returnfalse;}returntrue;}publicVectorgetContent(Stringsql){rs=dbase.executeQuery(sql);Vectoroutter=newVector();try{while(rs.next()){Vectorinner=newVector();//用于存放一条记录Stringname=rs.getString("NAME");//得

到学生姓名intstudId=rs.getInt("ID");//得到学号StringburseType=rs.getString("SEX");//得到奖学金类型intcolleage=rs.getInt("AGE");//得到所在院系inner.add(name);inner.add(studld);inner.add(burseType);inner.add(colleage);outter.add(inner);}}catch(Exceptione){e.printStackTrace();//rs.close();returnnull;}returnoutter;}数据结构与算法使用Vectorinner来存放表格的每一行记录。使用Vectoroutter来存放所有的inner。并使用jxl.jar包所带的Label来保存文本内容写入到Excel表格,用Integer来保存数字内容。补充说明类图ClerkClerk[1:Login()_L2:ChoiceUI()4:3:AddBook()Returninfo()6:Returninfo()7:r5:QuryBook()Returninfo()8:Returninfo()9:Output()10:Returninfo()11:Returninfo()、UIAddressBookUIAddress_BookDBO个人文件夹管理模块模块名称网络文件夹管理模块功能描述在本系统中为员工日常办公常用功能,包括个名文件夹的管理,文件上传,下载和删除以及将自己文件夹设为共享。被设为共享的文件夹可以被公司内其他员工所访问。接口与属性用户与接口FileManage和FolderManage交互进行相关的操作。File类中的属性有:privateintfileID;//文件的IDprivateintuserID;//文件的所人有IDprivateintfolderID;//文件所属文件夹的IDprivateblobfilecontent;//文件的内容privatestringfilename;//文件名privateintfiletype;//文件夹类型privatedoublefilesize://文件夹大小File类中包含的主要方法有:上述各属性的get(),set()方法。FileManage接口中包含的操作有:.个人文件上传操作uploadFile():上传文件。该函数提供从用户本机上传文件的文件选择对话框,并与File对象相关联,得到文件对象的属性。FileManage类中的uploadFile()方法将通过File类的实例调用相应的get()、set()方法得到或传入数据。FileManage()方法中将实例化数据库的对象,完成添加文件的工作。在添加文件之前方法将检查数据库表中ID字段,使用selectmax(ID)fromXX来获得最大的ID号,然后用ID+1来作为新加入到数据库中的记录的ID号。上传完文件后回到个人文件管理主页。.个人文件下载操作downloadFile():下载文件。用户点击要下载的文件,弹出文件下载对话框,用户选择要存放文件的位置,然后将文件写入指定的位置。FileManage类中的downloadFile()方法将通过File类的实例调用相应的get()、set()方法得到或传入数据。FileManage()方法中将实例化数据库的对象,完成下载文件的工作。在下载文件之前方法将先选择该文件所对应的文件ID号,查询出相应的filecontent的内容,并将内容以文件流的形式(FileOutputStream)发送到客户端。下载完文件后回到个人文件管理主页。Folder类中的属性有:privateintfolderID;//文件夹IDprivateintuserID;//所有人IDprivateintpfolderID;//上级文件夹IDprivateStringfoldername;//文件夹名Folder类中的方法主要有:上述各属性的get(),set()方法。FolderManage接口中包含的操作:1.对Folder的维护addFolder():增加文件夹。用户选择要增加文件夹的父文件夹,选择新建文件夹,输入新建文件夹的信息,后台检查输入信息的正确性,addFolder()方法将通过Folder类的实例调用相应的get()、set()方法得到或传入数据。deleteFolder():删除文件夹。用户选择要删除文件夹,选择删除文件夹,后台检查输入信息的正确性,deleteFolder()方法将通过Folder类的实例调用相应的

get()、set()方法修改数据。editFolder():修改文件夹。用户选择要修改的文件夹,选择修改文件夹,输入修改文件夹的信息,后台检查输入信息的正确性,editFolder()方法将通过Folder类的实例调用相应的get()、set()方法得到或传入数据。setShare():设为共享文件夹。用户选择要设为共享的文件夹,选择设为共享文件夹,后台检查输入信息的正确性,setFolder()方法将通过Folder类的实例调用相应的get()、set()方法得到或传入数据。setUnshare():设为共享文件夹。用户选择要设为共享的文件夹,选择设为共享文件夹,后台检查输入信息的正确性,setUnsharer()方法将通过Folder类的实例调用相应的get()、set()方法得到或传入数据。数据结构与算法利用FileOutputStream类的方法,获取文件夹,文件的信息,并且利用uploadFile和downloadFile的方法实现文件上传和下载。fileUpload()实现上传,fileDelete()实现文件删除,getFileAttribute()获取本地文件信息getFileAttribute(inti)获取服务器文件信息,setShare()实现共享设置文件夹表中标出文件夹ID和父文件夹ID,通过这两个字段实现动态树。在文件表中存储文件夹ID,在点击每一个文件夹的同时判断文件夹ID,在数据库中查询出其下的所有文件。补充说明个人文件夹类图模块名称系统管理模块:用户管理功能描述指管理员登陆后,进入用户管理分模块,对用户进行添加,删除,修改,查找四个功能添加用户时,包括用户帐号及用户密码(初始密码默认为111111)的添加,以及用户所在部门和职位的添加用户所属部门的添加通过addDepartment()方法实现。接口与属性User类中的属性有:privateintuserID;//用户IDprivateintroleID;//用户角色privateStringpassword;//用户密码privateStringusername;//用户姓名privateStringsex;〃用户性别privateStringage;〃用户年龄privateStringdepartment;〃用户所属部门privateStringpositon;〃用户职位privateStringintroduction;〃用户自我介绍privateStringinterests;〃用户爱好privateStringphone;〃用户固定电话privateStringmobilephone;〃用户移动电话privateStringemail;〃用户emailprivateStringaddress;//用户住址User类中的方法主要有:上述各属性的get(),set()方法。UserManagement类实现对用户的管理。addUser()实现对用户的添加功能。用户选择新建用户,输入新建用户的信息,后台首先查找数据库中用户的最大ID,selectmax(ID)fromUser,使max(ID)+1为新用户的ID号。系统验证新建信息完整且正确,addUser()方法将通过User类的实例调用相应的get()、set()方法得到或传入数据,并由系统管理员确认。DeleteUser()实现对用户的删除功能。用户选择删除用户,统获得要删除的用户的ID号,给出删除用户的提示,DeleteUser()方法将通过User类的实例调用相应的get()、set()方法得到或传入数据,并由系统管理员确认。用户确认后在数据库中删除信息。searchUser()实现列出用户信息的功能。用户选择查询用户,统获得要查询的用户的条件,searchUser()方法将通过User类的实例调用相应的get()、set()方法得到或传入数据,并由系统管理员确认。用户确认后在数据库中查找信息。editUser()实现编辑用户信息的功能。用户选择编辑用户,统获得要编辑的用户的ID号,editUser()方法将通过User类的实例调用相应的get()、set()方法得到或传入数据,并由系统管理员确认。用户确认后在数据库中修改信息。接口与其他对数据库实现的增删改查使用统一的接口数据结构与算法数据库SQL语句实现功能。补充说明模块名称系统管理模块:部门管理功能描述指管理员登陆后,对部门进行管理,进行部门的添加,删除,修改,查找。部门为树型结构展示接口与属性Department类中的属性有:privateintdepartmentID;//部门IDprivateStringdepartmentName;//部门名称privateStringdepartmentDuty;//部门职能privateStringdepartmentPhone;//部门电话Department类中的方法主要有:上述各属性的get(),set()方法。DepartmentManagement类实现对用户的管理。addDepartment()实现对部门的添加功能。用户选择新建部门,输入新建部门的信息,后台首先查找数据库中部门的最大ID,selectmax(ID)fromDepartment,使max(ID)+1为新用户的ID号。系统验证新建信息完整且正确,addDepartment()方法将通过Department类的实例调用相应的get()、set()方法得到或传入数据,并由系统管理员确认。DeleteDepartment()实现对部门的删除功能。用户选择删除部门,统获得要删除的部门的ID号,给出删除部门的提示,DeleteDepartment()方法将通过Department类的实例调用相应的get()、set()方法得到或传入数据,并由系统管理员确认。用户确认后在数据库中删除信息。searchDepartment()实现歹U出部门信息的功能。用户选择查询部门,统获得要查询的部门的条件,searchDepartment()方法将通过Department类的实例调用相应的get()、set()方法得到或传入数据,并由系统管理员确认。用户确认后在数据库中查找信息。editDepartment()实现编辑部门信息的功能。用户选择编辑部门,统获得要编辑的部门的ID号,editDepartment()方法将通过Department类的实例调用相应的get()、set()方法得到或传入数据,并由系统管理员确认。用户确认后在数据库中修改信息。接口与其他对数据库实现的增删改查使用统一的接口数据结构与算法数据库SQL语句实现功能。树型结构实现:

模块名称系统管理模块:角色管理功能描述指管理员登陆后,对系统角色进行分配接口与属性Role类中的属性有:privateintrolelD;//角色IDprivateStringroleName;//角色名称Department类中的方法主要有:上述各属性的get(),set()方法。RoleManagement类实现对角色的管理。assignRole()实现对系统角色的分配。用户选择分配角色,系统统获得要编辑的职员的ID号,系统列出相关角色以及用户信息,管理员进行修改,调整用户的角色,系统验证修改后信息完整且正确,assignRole()方法将通过Role类的实例调用相应的get()、set()方法得到或传入数据。用户确认后在数据库中修改信息。接口与其他对数据库实现的增删改查使用统一的接口数据结构与算法数据库SQL语句实现功能。补充说明StafICcntrolRdeControlStafICcntrolRdeControl系统管理类图^Add_staffO

^£tel_staflO

*Hxiate_staflO

^Manage_staffl

^QuefystaflO时序图♦Add_rote()

^Del_iole()

Hl0date_noteO

^Query_roleO

^Distrib_role()ManagerUISysUIRoleControlDepartControlStaffControlSysDBO1:Login。12:ChoiceUQ4:Add。6:Retur3:ChoiceUQninfo。5:Returninfo。T8:Del。7:Returninfo。11:Returninfo。10:Retui9:Returninfo。ninfo()iceUQnage()12:Che15:Returninfo。-13:Ma14:Returrninfo()16:Returninfo。17:ChoiceUQ20:Returiinfo()18:Manage。19:Returninfo。21:Returninfo。、X、¥、模块名称名片夹管理模块功能描述在本系统中为员工日常办公常用功能,包括名片夹分类操作:添加,删除修改;名片的添加,删除,修改,查询,移动,发送。接口与属性privateStringusername=null;//用户名privateStringsex=null;//性另UprivateIntegerdepartmentID=null;//部门编号privateStringposition=null;//职位privateIntegerroleID=null;//角色编号privateStringpassword=null;//密码privateStringintroduction=null;//自我介绍privateStringinterests=null;//兴趣爱好privateStringphone=null;//固定电话privateStringmobilephone=null;//移动电话privateStringEmail=null;//电子邮件privateIntegerage=null;//年龄privateStringmobile=null;//移动电话publicStringtype=null;//名片夹类别.publicvoidAddType();//实现了添加新的名片夹分类;该函数通过用户输入的数据判断新数据是否与数据库中的数据重复。不重复的话,就能成功地添加新类别。添加成功后,就跳转到名片夹主页面,显示添加新类别后的所有类别列表。2.publicvoidDelType();//实现了删除名片夹分类;在删除类别之前系统将给出相应删除提示,在用户确认删除后对数据库进行删除操作,并进行相应的页面跳转,显示该用户删除该类别后的所有的类别列表。publicvoidModifyType();〃实现了修改名片夹分类名称;简单地点击重命名链接,在对话框里输入要修改的名字,就完成修改分类名称。publicvoidAddCard();〃实现了添加我的名片;该函数通过用户输入的名片信息判断新数据是否与数据库中的数据重复。不重复的话,就能成功地添加新名片。添加成功后。就跳转到个人名片夹页面。privatevoidDelCard();////实现了删除名片;在删除名片之前系统将给出相应删除提示,在用户确认删除后对数据库进行删除操作,并进行相应的页面跳转,显示该用户删除该名片后的所有的名片列表。6.privatevoidModifyCard();〃实现了修改名片;进入修改页面时,该页面提供了每个名片属性的值,用户可以简单地修改每一个数据。修改完成后,系统提示修CardManageCardManage改成功,并跳转到个人名片夹首页。.privatevoidSearchCard();//实现查询名片的功能。根据用户输入的查询条件检索数据库,在查询界面下用分页显示列出查询结果。.privatevoidMoveCard();//实现移动名片的功能。把名片移动到另外一个部门。.privatevoidSendCard();〃实现发送名片。根据输入的员工号,数据库判断这个员工号是否存在的话,存在的话就能发送名片。数据结构与算法该模块采用统一的数据操作接口的设计模式,来对数据库进行增,删,改,查等操作。对名片夹分类和名片操作时,简单地运用数据库查询语言(select实现查询,insert插入新的数据,update实现更新)。补充说明类图•addca「d。^deletecardQ^altercard()•query。时序图

ClerkUIContactsUIClassfyCardUIContactsDBO1:Login()2:ChoiceUI()3:ChangUI()/5:Returninfo()4:AddClass()6:Returninfo()8:Returninfo()7:DeleteClass()10:Returninfo()12:Returninfo()9:AlterClass()11:Returninfo()——/\3.7个人信息管理模块模个人信息管理模块块名为员工提供包括密码、自我介绍、兴趣爱好、联系方式等个人信息查询和修改的功能与他人信息查询的功能。其中个人信息包括:员工号、登陆密码、姓名、性别、年龄、所属部门、职位、自我介绍、兴趣爱好、联系方式(移动电话、电子邮件、固定电话)、系统角色。本人信息的修改功能,本人信息的修改功能,除员工号外的所有本人信息爱好、联系方式(移动电话、他人信息的查询功能,人除密码外的所有个人信息提供员工包括本人信息里各种信息的修改功能,其中可以修改的本人信息包括,具体:为登陆密码、姓名、性别、年龄、所属部门、职位、自我介绍、兴趣电子邮件、固定电话)、系统角色。为查询他提供员工(登陆公司员工,即系统用户)查询他人信息的功能,具体,具体:员工号,姓名、性别、年龄、所属部门、职位、自我介绍、兴趣爱好、为查询他联系方式(移动电话、电子邮件、固定电话)、系统角色。用户(用户类User')通过唯一的一个UserID(即员工号)与控制类(UserInfoManage)交互,从而进行有接关的操作。口用户类包括的属性及操作有:①本人信息查询功能:SelectUserInfo(StringuserID):通过用户类的主码来标记每一条用户记录,即每个员工的所有信息。通过UserInfoManage类的该方法与数据库交互从而或者对应的员工的信息。其中User类的属性有:PrivateIntegeruserID;//用户的唯一标记,用户的ID号即员工号,是User类的主〃码PrivateStringusername;//用户的名字,即对应ID号的用户姓名。该属性为可该属〃性PrivateStringpassword;//用户的密码,该属性只有用户本人可以查看和修改。PrivateIntegersex;〃用户的性别PrivateIntegerage;〃用户的年龄PrivateIntegerdepartmentID;//用户所在部门的ID号,该属性是外键,关联到部门〃类的主码。部门的ID是对应几个部门的数字标识〃具体各部门的ID见下面补充说明。PrivateIntegerposition;//用户的职位,它是一个Integer值,即为每个对应的职位//定义成相应的数字标识//具体职位的相应标识见补充说明部分。PrivateIntegerroleID;//用户在系统中的角色,包括领导和员工,其中不是领导的〃就定义为员工。PrivateStringinterests;PrivateStringintroduction;//PrivateStringinterests;PrivateStringintroduction;〃员工的兴趣爱好,改信息由用户自己定义和修改。〃员工的个人介绍。〃员工的固定电话。〃员工的移动电话。PrivateString〃员工的固定电话。〃员工的移动电话。PrivateStringmobilephone;

PrivateStringemail;〃员工的电子邮件。其中用户类的主要方法有,上述个属性的set和get方法。注:userID属性不可使用set方法。UserInfoManage类通过selectUserInfo方法来查询用户的个人彳B息,这个方法是UserInfoManage类跟数据库进行交互的方法,获得个人信息后User类通过get方法显示各属性的具体信息内容。②本人修改查询功能:该功能通过UserInfoManage类的update方法与User类交互来实现。首先用户进入修改界面后,添入修改信息。其中包括密码的验证,修改信息之后,UserInfoManage类的updata方法把这些修改后的信息传到数据库,数据库根据对应的userID号找到对应的用户记录,并把该记录更新,与此同时UserInfoManage的select方法获取数据库中修改后的记录信息,User类通过set方法把页面的信息跟新为修改后的信息,并显示给用户。③他人信息查询功能:该功能通过UserInfoManage类的select方法与数据库交互。根据用户输入的查询条件,通过select方法同数据库中查询到相应的信息,并显示在他人信息查询的页面上,刚查询的记录在界面上只是显示为一条一条的记录。用户要查询对应的每条记录,即每个用户,的详细信息只要点击后面的详情即可,这个时候的click事件调用UserInfoManage类的select方法,首先方法获取改click方法对应的记录行的用户ID(userID),然后根据用户ID号与数据库交互或者对应这条记录的所有信息,最后在在他人信息查询的他人详细信息(detail)的界面上显示交互后的查询结果,查询结果的显示也是使用User类的set方法。但是获取的信息中不包括所查询用户的密码。Select(StringuserId,StringdetailInfo)Update(StringuserID,StringnewInfo)据结据结构与算本人信息,本人信息的查询中包括了本人的密码,他人信息的查询中包括了用户的一般信息(即除了密码外的信息)。系统通过用户的查询记录的ID号,与用户刚进入系统时的用户ID进行比较1:如果两个ID是相等的(因为这里用的是Integer的数据类型)那么他查询的记录是他本人的信息,数据库查询的结果中可以包含用户的密码信息;2:如果两个ID号不相等,那么返回的查询记录不包括用户的密码。法⑤.如何实现用户不能修改他本人的ID号:1:系统根据用户的操作,如果用户进入的是本人信息查询的界面,那么这个时候调用的是UserInfoManage的select方法,这个时候返回的结果包含用户的密码和ID号等信息。2:如果用户进入的是用户信息修改的界面,用户需要修改信息一定得提交,这个时候就要调用updata方法,该方法自动根据用户刚进入时候的ID号来标记在数据库中需要修改的记录,从而阻止用户无意或者恶意用户用户的ID。同时在界面实现上,当进入用户信息修改界面后,我们不让用户的ID号显示,这样用户就不会因为错误操作或有意操作改动了ID号。

补补充说明领导0员工1sex男0女1departmentID业务部1销售部2技术部3宣传部4组织部5财务部6人力资源部7后勤部84:position职位包括经理1主任2秘书3普通员工45:phone/mobilephone固定电话/移动电话补充:设计类图,时序图(1):类图UsBiIrt)Manage■三口ect()UsBiIrt)Manage■三口ect()*jplareQ%ddQ

•陶他teQ

^updated

^selectOu鲍降收期口lrtt«g»=nui^usernameStringsnull";:;再划void:String=null%sexImegfif=nul第ag白.Integer=nul4hdepartmenDD一Integer=nul^>posilion:Integer=null电SCIMq第〕nullWihtiDduGtion;String=nullWintMvtiQiins=null^phohe9ring=null%mobiIephone.String=nullW«irail:String=null3.8会议室管理模块模块名称会议室管理功能描述提供会议室维护和查询,添加功能,员工可以根据时间,会议室条件进行预约会议室。此模块包含的功能有:增加会议室、修改会议室、删除会议室,查询会议室,预约会议室,取消预约功能。接口与属性用户与接口MeetingRoomManage,BookManage交互进行相关的操作。MeetRoomManagement接口中包含的操作有:①添加会议室功能:AddMeetingRoom():添加会议室。该函数通过与MeetingRoom对象类关联得到操作所需要的数据。其中MeetingRoom类中的属性有:privateIntegerroomId;〃将要添加的会议室idprivateStringroomName;//将要添加的会议室名privateStringlocation;//将要添加的会议室地址privatebooleanairconditon;//将要添加的会议室是否有空调情况privatebooleancomputer;//将要添加的会议室是否有投影仪情况privateIntegeramount;〃记录会议室每月的使用次数MeetingRoom类中包含的主要方法有:上述各属性的get()、set()方法MeetingRoomManage类中的AddMeetingRoom()方法将通过MeetingRoom类的实例调用相应的get()、set()方法得到或传入数据AddMeetingRoom()方法中将实例化数据库的对象,完成添加会议室的工作。在添加会议室之前方法将优先进行加入会议室名称的检测,若会议室名称已在会议室列表中则将提示用户并要用户重新输入会议室名称。如果欲加入的会议室不在会议室列表中则加入该会议室。②删除会议室功能:deleteMeetingRoom():删除会议室功能。该函数通过与MeetingRoom对象类关联得到操作所需要的数据。其中MeetingRoom类中的属性有:privateIntegerroomId;〃会议室idprivateStringroomName;//会议室名称privateStringlocation;//会议室地址privatebooleanairconditon;//会议室是否有空调情况privatebooleancomputer;〃会议室是否有投影仪情况privateIntegeramount;〃记录会议室每月的使用次数MeetingRoom类中包含的主要方法有:上述各属性的get()、set()方法MeetingRoomManage类中的deleteMeetingRoom()方法将通过MeetingRoom类的实例调用相应的get()、set()方法得到或传入数据MeetingRoomManage类中的deleteMeetingRoom()方法将通过MeetingRoom类的实例调用相应的get()、set()方法得到或传入数据deleteMeetingRoom()方法中将实例化数据库的对象,完成删除会议室的工作。在删除会议室之前系统将给出相应删除提示,在用户确认删除后对数据库进行删除操作。③查询会议室功能:searchMeetingRoom():查询会议室功能。该函数通过与MeetingRoom对象类关联得到操作所需要的数据。其中MeetingRoom类中的属性有:privateIntegerroomId;〃会议室idprivateStringroomName;//会议室名称privateStringlocation;〃会议室地址privatebooleanairconditon;//会议室是否有空调情况privatebooleancomputer;〃会议室是否有投影仪情况privateIntegeramount;〃记录会议室每月的使用次数MeetingRoom类中包含的主要方法有:上述各属性的get()、set()方法MeetingRoomManage类中的searchMeetingRoom()方法将通过MeetingRoom类的实例调用相应的get()、set()方法得到或传入数据searchMeetingRoom()方法中将实例化数据库的对象,完成查询会议室的工作。在系统进行会议室查询后将通过页面显示会议室列表,并对已有的会议室提供相应的删除修改功能。④修改会议室功能:editMeetingRoom():修改会议室功能。该函数通过与MeetingRoom对象类关联得到操作所需要的数据。其中MeetingRoom类中的属性有:privateIntegerroomId;〃会议室idprivateStringroomName;//会议室名称privateStringlocation;//会议室地址privatebooleanairconditon;//会议室是否有空调情况privatebooleancomputer;〃会议室是否有投影仪情况privateIntegeramount;〃记录会议室每月的使用次数MeetingRoom类中包含的主要方法有:上述各属性的get()、set()方法MeetingRoomManage类中的editMeetingRoom()方法将通过MeetingRoom类的实例调用相应的get()、set()方法得到或修改数据editMeetingRoom()方法中将实例化数据库的对象,完成修改会议室的工作。⑤预约会议室功能:searchBookedMeetingRoom():查询已预约。该函数通过与Book对象类关联得到操作所需要的数据。其中Book类中的属性有:privateIntegerId;〃预^idprivateIntegerroomId;〃预约的会议室idprivateIntegeruserId;〃预约人idprivatedatestarttime;//预约开始时间privatedateendtime;//预约结束时间

Book类中包含的主要方法有:上述各属性的get()、set()方法BookManage类中的searchBookedMeetingRoom()方法将通过Book类的实例调用相应的get()、set()方法得到或传入数据searchBookedMeetingRoom()方法中将实例化数据库的对象,完成查询已有预约的工作。bookMeetingRoom():预约会议室。该函数通过与Book对象类关联得到操作所需要的数据。BookManage类中的bookedMeetingRoom()方法将通过Book类的实例调用相应的get()、set()方法得到或传入

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论