企业合同管理系统的开发设计文档

上传人:痛*** 文档编号:97151254 上传时间:2022-05-26 格式:DOC 页数:33 大小:5.61MB
返回 下载 相关 举报
企业合同管理系统的开发设计文档_第1页
第1页 / 共33页
企业合同管理系统的开发设计文档_第2页
第2页 / 共33页
企业合同管理系统的开发设计文档_第3页
第3页 / 共33页
点击查看更多>>
资源描述
目录第一章 引言.1第二章 合同管理系统需求分析.22.1. 用户概述.22.2. 现有业务流程及分析.22.3. 效益分析.3第三章 .合同管理系统概要设计 53.1. 系统开发目标53.2. 系统开发环境53.3. 系统功能分析63.4. 系统模块设计63.5. 数据库的设计7第四章 合同管理系统的详细设计及实现 . .104.1用户管理.104.2群组管理.154.3权限配置.164.4系统日志.204.5查询.214.6动态菜单.254.7排序.274.8可视的日历.284.9合同信息.29 引言 合同,又称契约,它是当事人双方或数方设立、变更和中止相互权利和义务关系的协议。合同制度在我国有着悠久的历史,合同作为一种企业之间横向联系的工具,是现代生产和商品交换高度发展的结果。合同管理即合同行为的监督管理,是规范、制约、完善合同行为的一种活动,是国家法律赋予管理主体的一种职能,是企业在经济活动中保证企业利益的重要环节。改革开放以来,我国的经济建设取得了长足的发展,然而长期以来,由于在合同管理中实行手工作业,合同审批流程不明确,造成合同管理过程中业务处理效率低,浪费了大量的人力、物力,各部门之间合同流转时间长而且特别容易出错等问题。为了解决这一问题,需要开发一套功能完整的智能化的合同管理系统软件,用于各行各业的大中小型企业的合同制定、评审、实施动态控制等方面的具体应用需求,并以先进成熟的计算机网络和通信技术为手段,覆盖整个企业的各部门,实现该企业合同管理智能化,提高办公效率及人员的利用率成为促进企业迅速发展的一支很好的催化剂。合同管理系统需求分析2.1用户概述“禹洲集团建筑工程公司”包括好几个部门,下属有人事部、财务部、质量部等部门。现在除了个别的部门实现微机辅助管理外,其他各部门尚未实现微机管理,同时已实现微机管理的部门也没有很好的进行合同资源共享。而且已经实现微机管理的部门因工作升级、部门工作的变动和重新分工,原有系统已经不能满足当前工作的需要。我们提出基于禹洲集团建筑工程公司扩大业务的整体考虑,规划实施禹洲集团建筑工程公司合同管理系统,此套合同管理系统的最终用户是禹洲集团建筑工程公司的所有员工和董事长,要充分满足当前用户需求,按照合同管理思想规范禹洲集团建筑工程公司合同的签定,变更,索赔,保险,审核等管理,减少了人为主观因素的干预,通过系统的实施使禹洲集团建筑工程公司合同管理达到智能化,为企业节省许多的管理费用,为禹洲集团建筑工程公司的发展战略的实现奠定基础。2.2 现有业务分析合同管理系统的主要功能有系统管理、客户管理、合同管理和系统帮助。其中合同管理的流程如下图1所示:部门签定合同递 送信 息 合同索赔信息合同管理员合同变更信息输入信息合同是否到期索赔申请变更申请提交是审核是否通过删除合同进行合同变更或合同索赔是否 删除变更或索赔信息图1 合同管理业务流程图 流程说明:各部门签定好合同后,合同管理员将合同信息输入系统,交由合同管理系统统一管理。如果在合同履行过程中碰到不可克服的困难而需要变更合同时,就上交一份合同变更申请,由公司主管领导进行审核,若审核通过,则开始进行合同变更,若审核不通过,则退回申请。如果在合同履行过程中对方未履行合同所规定的义务,就上交一份合同索赔申请,由公司主管领导进行审核,若审核通过,则开始进行合同索赔,若审核不通过,则退回申请。如果合同到期,则删除该合同。2.3 效益分析1规范了合同管理的业务流程,增强了合同业务处理过程的透明度 系统通过设置用户权限,定义了不同组别的用户在系统中的功能,从而规范了合同管理过程中各个岗位的职能,避免了业务处理时责任不明确的现象,使得每个岗位(即用户)能够各司其责,杜绝了人为干预的现象。系统中工作流的定义,使得合同管理的业务流程更加合理、科学。去掉了原有手工合同管理流程中不必要的审批环节,增加了审批过程中不可缺少的业务处理环节。2对合同的执行情况做到了动态控制系统存储了与合同相关的所有数据,通过各种提醒等功能的设置从合同的签定开始,系统便对合同执行了监控,可以对合同的执行情况进行具有实用价值的监督。例如:随时查看已生效和即将结束的合同,提醒用户下一步的操作,并可以检查合同执行过程中是否有因出现了某些问题而无法完成的合同,既而采取必要的解决办法,最大限度的减少企业的损失。3提高了工作效率,降低了管理成本通过系统的实施,业务人员可方便地进行业务操作、资料查阅、相关业务进展查询、接收业务指令等各种日常业务处理;领导人员可方便地进行各种业务查询、事务审批等。使各级人员摆脱了原有手工操作的束缚,大大地提高了工作效率,使得将更多的时间和精力钻研业务成为可能。总之系统实现了合同管理的信息化,从而减少了公司的人力、物力,进一步降低了公司的管理成本。合同管理系统概要设计3.1系统开发目标合同管理系统可用于支持企业完成合同管理工作,有如下3个方面的目标:l 支持企业实现规范化和智能化的合同管理。l 支持企业高效率完成合同管理的日常业务,包括合同签定后合同信息的 建立,合同变更,合同索赔,合同审核等。l 支持企业进行合同管理及其相关方面的科学决策,如企业领导根据合同 的变更信息或解除信息来决定是否变更或解除合同,以便更好地解决合同的纠纷。3.2 系统开发环境l 开发工具的选择Borland 公司的Jbuilder2005是运用功能强大的JAVA程序设计语言的应用程序开发工具。它提供了很多可视的和不可视的控件,还提供可视化的编程环境,开发人员可以直接运用这些控件在可视化的界面进行用户界面布局,大大地减少了开发人员的工作量。这种开发工具对网络安全和其它网络方面的应用也有很大的支持,用这种工具开发出来的应用程序可运行多种操作平台。所以相对于其他的开发工具,Jbuilder2005是一个较好的选择。l 关系数据库的实现微软公司提供的Access2000 就是一种关系数据库开发工具,它用于开发中小型关系数据库,开发人员可以在它的可视化界面方便地创建数据库,表,视图等等,简单易用,不用花费开发人员的很多时间,Access2000的优点还在于它能使用数据表示图或自定义窗体收集信息。数据表示图提供了一种类似于 Excel 的电子表格,可以使数据库一目了然。另外,Access 允许输出数据库中的信息。Access也提供了数据存储库,可以使用桌面数据库文件把数据库文件置于网络文件服务器,与其他网络用户共享数据库。经分析,该合同管理系统使用了一个包括十几张表的数据库,属于小型的关系数据库,而且信息维护也不怎么复杂,所以对该系统来说,Access2000是一个较好的数据库开发工具。l Jbuilder2005和Access2000的结合Jbuider2005提供了不同的程序接口用于连接数据库和执行SQL语句。利用它提供的JDBC API(JAVA数据库互连应用程序接口)接口,可以执行通常的SQL语句(用Statement 类),动态SQL语句(用PreparedStatement 类),以及带IN和OUT参数的存储过程。其中ResultSet类和QueryDataSet类用于保存系统从数据库表中检索出来的记录集,这两个类都可以建立动态的或静态的记录集合,利用这两个类可以很方便地将检索结果显示于用户界面,也可以新增或修改数据库表里的记录。3.3. 系统功能分析合同管理涉及合同的多个方面,如工程信息、合同信息、合同变更信息、合同索赔信息等等。根据这些信息完成合同管理的日常业务。本系统需要完成的功能主要有:l 合同信息和具体内容的建立。l 合同变更、索赔等方面信息的输入。l 工程信息和客户信息的输入与查询。l 对各种信息的查询、添加、删除和编辑。l 系统管理员对不同组别的用户权限的配置。l 系统日志的建立。3.4. 系统模块设计在系统功能分析的基础上,得到如图2所示的功能模块图。合 同 管 理 系 统客户管理系统帮助合同管理系 统管理用户管理合同信息合同变更合同索赔关于系统客户信息查询工程信息客户信息录入退出系统重新登录系统日志修改密码权限配制群组管理图2 功能模块图3. 5. 数据库设计(库表设计)表1.XTGL_YHXX(用户信息表)字段含义字段名数据类型主键非主键用户编号yhbhVarchar(10)YESNO用户名称yhmcVarchar(8)NOYES部门编号bmbhVarchar(10)NONO用户组别yhzbchar(2)NOYES性别xbVarchar(2)NOYES用户密码yhmmVarchar(10)NOYES注册标识zcbschar(1)NOYES表2.XTGL_ZBXX(组别维护表)字段含义字段名数据类型主键非主键组别编号zbbhVarchar(2)YESNO组别名称zbmcVarchar(10)NOYES组别备注zbbzVarchar(20)NOYES 表3.XTGL_CDGL(菜单管理表)字段含义字段名数据类型主键非主键菜单编码cdbmVarchar(8)YESNO菜单英文名称cdywmcVarchar(16)NOYES菜单中文名称cdzwmcVarchar(16)NOYES表4. XTGL_ZBQXWH(组别权限维护表)字段含义字段名数据类型主键非主键用户组别编号YHZBVarchar(2)YESNO菜单编号CDBMVarchar(8)YESNO是否选择SFXZBooleanNOYES 表5. XTGL_ZZJG(组织机构表)字段含义字段名数据类型主键非主键组织机构代码zzjgdmVarchar(10)YESNO组织机构名称zzjgmcVarchar(20)NOYES上级机构代码sjjgdmVarchar(10)NONO组织机构级别zzjgjbVarchar(10)NOYES表6. XTGL_XTRZ(系统日志表)字段含义代码数据类型主键非主键日志编号rzbh自动编号YESNO操作内容czmcVarchar(10)NOYES操作用户czyhVarchar(10)NOYES操作时间czsjdatetimeNOYES表7.KHGL_KHXX(客户信息表)字段含义字段名数据类型主键非主键客户编号KHID自动编号YESNO姓名XMVarchar(8)NOYES客户呢称KHNCVarchar(10)NOYES客户性别KHXBVarchar(10)NOYES关系类型编号GXLXBHVarchar(2)NONO传真CZHMVarchar(20)NOYES家庭电话JTDHVarchar(12)NOYES办公电话BGDHVarchar(12)NOYES移动电话YDDHVarchar(15)NOYESOICQOICQVarchar(10)NOYESE_MAILE_MAILVarchar(20)NOYES邮政编码YZBMVarchar(10)NOYES职务ZWVarchar(10)NOYES国家地区GJDCVarchar(10)NOYES省自治区ZZQVarchar(10)NOYES所在城市SZCSVarchar(10) NOYES工作单位GZDWVarchar(20) NOYES所在部门SZBMVarchar(20)NOYES办公室BGSVarchar(20)NOYES单位地址DWZZVarchar(50)NOYES公司网址GSWZVarchar(20)NOYES家庭住址JTZZVarchar(50)NOYES客户备注BZSMVarchar(100)NOYES出生年月CSNYdatetimeNOYES籍贯JGVarchar(10)NOYES月收入YSRfloatNOYES银行帐号YHZHVarchar(30)NOYES开户银行KHYHVarchar(20)NOYES登记人DJRVarchar(8)NOYES表8.KHGL_KHLX(客户类型表)字段含义字段名数据类型主键非主键类型编号lxbhVarchar(2)YESNO客户类型名称khlxmcVarchar(14)NOYES表9.HTGL_GCXX(工程信息表)字段含义字段名数据类型主键非主键工程编号gcbhVarchar(3)YESNO工程名称gcmcVarchar(20)NOYES开工日期kgrqdatetimeNOYES竣工日期jgrqdatetimeNOYES表10.HTGL_HTXX(合同信息表)字段含义字段名数据类型主键非主键合同编号HTBHVarchar(3)YESNO合同名称HTMCVarchar(20)NOYES客户编号KHBHVarchar(6)NOYES工程项目编号GCXMVarchar(12)NOYES签定日期QDRQdatetimeNOYES开始日期KSRQdatetimeNOYES结束日期JSRQdatetimeNOYES完成标志WCBZVarchar(10)NOYES合同金额HTJEfloatNOYES核审标志HSBZVarchar(1)NOYES负责人FZRVarchar(8)NOYES变更标志BGBZVarchar(1)NOYES审核意见SHYJVarchar(100)NOYES审核时间SHSJDatetimeNOYES审核人SHRVarchar(8)NOYES合同文件 HTNRVarchar(20)NOYES表11. HTGL_HTBGXX(合同变更信息表)字段含义字段名数据类型主键非主键变更编码BGBMVarchar(3)YESNO合同编号HTBHVarchar(3)NOYES变更名称BGMCVarchar(10)NOYES变更类型BGLXVarchar(8)NOYES变更日期BGRQDatetimeNOYES生效日期SXRQDatetimeNOYES变更原因BGYYVarchar(50)NOYES变更通过标志BGTGBZVarchar(1)NOYES表12. HTGL_HTSPXX(合同索赔信息表)字段含义字段名数据类型主键非主键索赔编号SPBHVarchar(3)YESNO索赔类型SPLXVarchar(8)NOYES索赔项目SPXMVarchar(20)NOYES工程编号GCBHVarchar(3)NONO 索赔日期SPRQdatetimeNOYES索赔生效日期SPSXRQdatetimeNOYES索赔原因SPYYVarchar(50)NOYES索赔通过标志SPTGBZVarchar(1)NOYES合同管理系统的详细设计及实现4.1用户管理图3 用户管理4.1.1 组织机构与用户的显示4.1.1.1用户信息显示的算法在左边的树型窗口中(JTree)显示组织机构以及用户,有多层结构,l 第一层显示数据是组织机构名称(ZZJGMC)检索数据:组织机构代码(ZZJGDM) 数据来源:XTGL_ZZJG 检索条件:length(ZZJGDM)=2 (说明每两位代表一个层次)l 第二层显示数据是组织机构名称(ZZJGMC)检索数据:组织机构代码(ZZJGDM) 数据来源:XTGL_ZZJG 检索条件:length(ZZJGDM)=4 and substr(ZZJGDM,0,2)=第一层检索数据 (说明每两位代表一个层次)l 第三层显示数据是组织机构名称(ZZJGMC)检索数据:组织机构代码(ZZJGDM) 数据来源:XTGL_ZZJG检索条件:length(ZZJGDM)=6 and substr(ZZJGDM,0,4)=第二层检索数据 (说明每两位代表一个层次) 依此类推。l 用户作为部门结点的子结点 检索数据:用户编号(YHBH),部门编号(BMBH) 数据来源:XTGL_YHXX检索条件:length(YHBH)=length(父结点部门ZZJGDM )+2 and BMBH =父结点部门的ZZJGDM (说明每两位代表一个层次) 4.1.1.2 树结构的建立l 树的结点在点击树结点时为了在JdbTable中显示对应的用户信息,需要在该结点保存所对应的部门编号、部门名称或用户编号、用户名称,以便数据检索时可以利用这些保存的信息进行检索。针对这个问题,该系统创建了一个新的结点类Node类,它继承DefaultMutableTreeNode类,这个类实现MutableTreeNode接口,它是TreeNode的子接口(如下图所示):JTreeTreeModelDefaultTreeModel DefaultMutableTreeNodeMutableTreeNodeTreeNode 图4 Node各类间与TreeNode各接口间的关系Node类的属性: dm用于保存部门或用户的编号,mc用于保存部门或用户的名称。Node类定义如下: class Node extends DefaultMutableTreeNode public String dm,mc; public Node(String id,String name)super(name); /调用父类的构造函数,将部门或用户的名称显示在树的节点上dm=id;mc=name;l 树的建立从XTGL_ZZJG(组织机构表)检索出所有部门的zzjgdm和zzjgmc字段的值存于name_bm(Vector组件),XTGL_YHXX(用户信息表) 检索出所有部门的yhbh和yhmc字段的值存于name (Vector组件),再从这两个Vector组件取出每个部门的zzjgdm、zzjgmc字段值或每个用户的yhbh、yhmc字段值作为参数来产生新的部门结点或用户结点。树的建立要注意树的多层结构,哪一个部门结点或用户结点作为哪一个部门结点的子结点,这就需要有一个好的编码方法来建立部门结点与部门结点、部门结点与用户结点之间的父子关系,考虑到这个问题,在数据库设计中部门或用户的编号用两位数字来表示一个层次,比如福州公司编号为01(总公司的上层机构编号设为00表示没有上层机构)、子公司Rady编号为0101、Rady里的用户编号为010101。该模块的建树过程是:先产生一个node数组用于保存新产生的部门结点,并允许这些结点可以有子结点,从name_bm搜索出符合上层机构编号=00的部门结点作为树的第一层结点,再建立树的第二层,第三层等等,建立部门与部门之间的关系,最后产生新的用户结点并建立用户与部门之间的关系。l 树的显示当显示树的时候,每一个结点都有一个图标。实际上共有三种图标:叶结点图标,打开的非叶结点图标,关闭的非叶结点图标,我们就将后两种称为文件夹图标。但结点渲染器需要知道结点用什么图标来显示。缺省的判断过程是:如果结点的isLeaf()方法返回true,那么使用叶结点图标;否则使用文件夹图标。如果某个结点没有子结点,那么DefaultMutableTreeNode类的isLeaf()方法返回true。这样,具有子结点的结点使用文件夹图标,没有子结点的结点使用叶结点图标。有时,这种行为不太适合,从概念上讲,没有子结点的结点应使用文件夹图标,因为它不是真正的叶结点。JTree类对什么结点是叶结点图标一无所知。它会询问树模型,如果一个没有子结点的结点不是概念上的叶结点,可要求树模型使用一种不用的准则定义叶结点,即查询“允许有子结点”的结点属性。对于不应有子结点的结点,调用node.setAllowsChildren(false);然后,通知树模型查询“允许有子结点”属性域的值,以决定某个结点旁是否应显示叶结点图标。使用DefaultTreeModel类的setAsksAllowsChildren()方法来设置这种行为: model. setAsksAllowsChildren(true);以此准则为标准,则允许有子结点的结点旁显示文件夹图标,而不允许有子结点的结点旁显示叶结点图标。也可以在JTree()构造方法中用根结点及“AsksAllowsChildren”属性的设置做参数,来确定某个结点是否应拥有子结点。 JTree tree=new JTree(root,true);4.1.2. 人员基本信息的显示数据来源:XTGL_YHXX (相关的字段见数据库设计)检索条件:YHBH like 当前选择树节点的检索字段+”%” 在左树型窗口选择一个节点,获得该节点的编号作为传入参数,然后利用该参数在XTGL_YHXX表中检索符合检索条件的记录,并将查询结果保存于QueryDataSet中,通过设置JdbTable的DataSet属性为该QueryDataSet控件,将检索结果显示在右数据窗口中。4.1.3.JTree和JdbTable的刷新l 删除用户当用户更新数据库时,为了及时反映各种最新的信息,需要刷新JTree和JdbTable控件所显示的内容。比如当系统管理员在JdbTable选中一个用户后点击“删除”按钮删除该用户,JTree和JdbTable控件也要分别删除相应的用户节点和用户记录。在JTree中删除用户节点需要查找该节点在树中的节点位置(递归算法),其代码如下:/用递归算法查找被删除节点在树中的位置 public void searchnode(Node pp)/初始时pp为根节点 if(pp.dm.equals(yhbm) /如果找到被删除的节点就返回 delnode=pp; /保留被删除节点在树中的位置 return; if(pp.isLeaf() return; /如果没有找到被删除的节点且遇到叶节点/就返回 for(int i=0;i”按钮,将字段名添加到右边查询条件的数据窗口中的项目列,在数据窗口的比较符列,值列和条件列中分别输入比较符,值和条件进行查询条件组合。选择数据窗口的一个查询条件,点击“”按钮,将该查询条件从数据窗口中删除。点击“确定”,将数据窗口的所有记录从头到尾组合起来形成查询组合条件,然后利用该查询组合条件对相关的数据库表进行查询,并将查询的结果显示在其父窗口相关的数据窗口中,点击“取消”按钮关闭“查询”窗口,不进行任何的条件组合和查询。4.5.2 JTable组件JTable组件显示两维的对象网格,和树的控制技术一样,JTable并不贮存自己的数据,但是它可以从一表模型(table model)中获取数据。而且你可以用对象的二维对象数组创建一个表。它自动将数组封装到一个缺省模型,表数据被当作Object值贮存在二维数组中,它激活每个对象上的toString()方法来显示它。在一般情况下,JTable 组件用缺省表模型构造表:JTable( Object data, Object columnNames);参数: data 表中的单元 columnNames 列名可以利用AbstractTableModel类轻松实现表模型,因为这个类实现了大多数的必需的方法。如果不提供列名称,AbstractTableModel的getColumnName()方法将条目命名为:A、B、C等。JTable将表列信息存储在类型TableColumn的对象中,由TableColumnModel类管理列(如下图展示了重要表中类的关系)。DefaultTableModelAbstractTableModelTableModelTableColumnTableColumnModelJTable 图10 AbstractTableModel类与JTable等之间的关系 如果你不想动态插入或删除列,就不必常使用列模型。但是要得到一个特别的TableColumn对象,需要使用列模型寻找列对象。比如:TableColumnModel columnmodel=jTable_cxtj.getColumnModel(); TableColumn column_bj=columnmodel.getColumn(1);TableColumn column_tj=columnmodel.getColumn(3);4.5.3 单元的编辑要编辑单元,表模型必须通过定义isCellEditable()方法指明哪一个单元可以编辑。缺省情况下,表的单元编辑器为DefaultCellEditor。DefaultCellEditor可以由JTextField、JCheckBox和JcomboBox构造。JTable类自动为Boolean单元安装复选框编辑器,为没有给自己提供渲染工具的可编辑单元安装文本域编辑器。文本域编辑器可编辑下列字符串:toString()方法的返回值及表模型getValueAt()方法的返回值。当编辑结束,单元编辑程序通过调用setValueAt()方法将结果传递到模型。也可以自定义编辑器,这就要实现TableCellEditor接口,这个接口有一个getTableCellEditorComponent()方法,其用法与JTree的getTreeCellRendererComponent()方法类似。4.5.4添加或删除缺省表模型中的行DefaultTableModel类是实现TableModel接口的具体类,它具有增加新数据行列和删除行的方法。addRow()和addColumn()方法增加一行或一列数据,应给它提供一个容纳新数据的矢量或Object数组。对于addColumn()方法,除了提供上述数据外,还需提供一个新的列名。这些方法将新数据增加到网格的末端。如要在中间插入行,可使用insertRow()方法。相反,removeRow()方法删除模型中的行。查询条件数据窗口(jTable_cxtj)的实现:该数据窗口使用的是JTable组件,它用缺省表模型构造表。DefaultTableModel dm = new Defau
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 成人自考


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!