项目报告
基于java的合同管理系统设计与实现毕业设计
目 录
摘要
随着信息科学技术的飞速发展,人们逐渐意识到对信息管理软件的运用可以使日常工作更加方便、快捷和高效。论文详细论述了公司合同管理系统的开发设计过程。软件采用JSP开发技术,Tomcat作容器, SQL Server 作数据库管理系统,实现了创建合同、修改合同、删除合同、合同收款提醒、合同时间管理、合同查询等几大功能。。软件符合公司合同管理的需求,能够帮助公司切实提高工作效率。软件的开发符合一般管理软件的开发流程,对开发其他类似的管理软件具有相当的参考价值。
论文组织如下:首先阐述了该系统的开发背景、意义;其次介绍了相关的理论基础;接着对系统的需求进行了分析,并提出了具体的设计方案;然后展现了系统各功能模块的实现;最后对该软件进行了严格的测试。
合同管理;JSP;Tomcat;SQL server
1、引言
1.1 开发背景
在人类的文明历史中,一直以来合同管理都是手工作业,由于涉及部门众多,需要管理的合同要素也各不相同。因此造成信息不集中,实时性不强,不断的出现各个部门间合同流转时间过长,监督制度执行方面效率不高,并且容易出错的一系列费时费力问题,具体表现在如下方面:
1) 文档管理困难:传统纸质合同和电子版合同共存,但对于不同的人员想阅读参考合同时,存在查阅不方便的问题,尤其是领导需要了解某合同内容时,就要耗费很多时间在查找合同,而不是阅读合同上。
2) 进度控制困难:由于合同的数量会随着时间的流逝而不断累积,参与的人员也会越来越多,合同进度的控制靠手工和Word、Excel等办公软件管理已经很难满足公司的发展需求,并且当领导想全局或全程了解合同进展情况时存在很大障碍。财务人员的付款依据也跟进度有着密切的关联,但同样存在障碍。
3) 信息汇总困难:采用人手或Excel等办公软件管理时,由于不同部门的数据格式不统一,采集也不能够及时继续,汇总工作需要耗费大量时间,也不一定准确。对于领导的决策会有一定的影响。
4) 缺少预警机制:缺少对合同进度、结款等关键时刻的预警,不能准确地预测近期可能的收支项目,不能有效帮助公司进行财务规划,掌控现金流量,更好地达到资金运作的最大效益。
1.2 课题研究的意义
在背景里已经合同管理的现状,在这种大环境下,公司对合同管理也变的十分重要了,怎么提高管理效率,实现员工的工作智能化,成为迫切需要解决的问题,而此管理软件正是为满足公司的管理而出现的。
虽然合同管理软件这块,中国远远比不上做了几十年的欧美,但是欧美软件的成本却让中国本土的公司望而却步,这就对国内软件行业提出了要求,谁能占得先机就能拥有更多的市场竞争力,谁能针对行业开发出更适应公司的合同管理软件就拥有更多的技术竞争里,所以,开发公司合同管理软件不只能提高公司的管理和办公的效率,更重要的是,中国本土开发的软件,成本上就有竞争力,对整个行业都有很大的贡献。
1.3 发展趋势
完善的合同管理是公司运作的一个主要标志。然而,完善的合同管理需要公司的许多资源,如何去解决格式不统一而带来的文档管理困难,让不同人员想阅读参考合同时,查找不方便的问题,减少领导了解合同文本时的时间。如何去解决进度控制的困难,减少合同数量多而引发参与的人员众多的显现,从而减少公司的成本。如何去解决信息汇总的困难,让不同格式的合同得以汇总,解决以前手工管理时不能够及时汇总的问题。如何去解决缺少预警机制而不能掌控现金流、不能更好的发挥资金的运作等一系列问题。解决这些问题能有效的提高公司的经济效益。
目前国内主流的软件开发基于两种模式:客户机/服务器(Client/Server,简称C/S)模式和Web浏览器/服务器(Browser/Server,简称B/S)模式。虽然出于安全性等方面的因素,C/S结构的管理信息系统仍然占据企业管理信息系统的主流,但是,由于B/S系统更适合维护,而且起安全性正在不断完善,所以当前企业信息管理系统正在从C/S结构向B/S结构转移。而现在开发B/S系统的主流技术就是ASP.net和JSP,虽然ASP.net为新兴技术正不断抢占JSP的市场,但出于系统的移植性的考虑,本系统还是运用JSP技术开发,因为JAVA的跨平台性能给我们带来更多的用户。
服务器上我们选择Tomcat,是因为它小巧却功能强大,更重要的是,它是开源的,如今,开源软件越来越受到人们的重视,Linux就是一个成功的典型,虽然这对我们的开发没有实际的用处,但是顾客会优先选择用流行工具开发的软件,这也是我们选择Tomcat的原因。
现在主流的数据库就三种:Access, Oracle和SQL Server。Access短小精干,操作方便,是开发小型系统的首选;Oracle功能强大,适合开发大型系统;但是我们选择SQL Server,它兼备Access和Oracle优点,强大的可视化操作和不亚于Oracle的功能是我们选择它的理由。
1.4 系统开发方法
本系统是以Browser/Server(浏览器/服务器)结构和JSP语言及SQL Server2000数据库和TOMCAT作为服务器开发的管理系统。首先,使用JSP具有较好的安全性和可移植性,具有动态页面和静态页面分离,能够脱离硬件平台的束缚,而使用Browser/Server结构是因为这种结构可以减少客户端很大维护工作量,且具有很强的使用范围的伸缩性,客户端通过浏览器统一界面,就可以完成内部的信息处理和外部环境的信息查询,而使用SQL Server2000主要是由于它有快捷而健全的数据库查询引擎,能够保护数据库以防止不合法的使用所造成的数据泄露,更改或破坏,SQL Server提供多层用户身份验证的安全保证,其次,公司要求用JSP来实现系统功能,基于以上两方面的原因,我采用了JSP来实现系统的建设。
1.6 可行性研究
该阶段通过对系统目标的初步调研和分析,提出可行性方案并进行论证。我们在这里主要从技术可行性、经济可行性和操作可行性等方面进行分析。
1.6.1 经济可行性
开发该系统所需的相关资料可以通过已存在的相关系统进行调查采集,所需的其他应用软件、硬件系统也易于获得.因此,开发成本较低。而引进使用本系统后,与传统方式相比,具有高效率、低成本、高质量的特点,可以节省不少人力、物力及财力。所以,从经济的角度来看,该系统可行。
1.6.2 技术可行性
技术可行性要考虑现有的技术条件是否能够顺利完成开发工作,软硬件配置是否满足开发的需求等。本网站用的是JSP开发语言,调试相对简单,当前的计算机硬件配置也完全能满足开发的需求,因此在技术上是绝对可行的。软件方面:由于目前单机模式相对发展成熟,故软件的开发平台成熟可行,它们速度快、容量大、可靠性能高、价格低,完全能满足系统的需求。
1.6.3运行可行性
运行可行性是对组织结构的影响,现有人员和机构和环境对系统的适应性及人员培训补充计划的可行性。当前信息化技术已经相当普及,各类操作人员水平都有相当的高度,所以在运行上是可行性的。
本系统的开发,是典型的Mis开发,主要是对数据的处理,包括数据的收集,数据的变换,及数据的各种报表形式的输出。采用流行的JSP+SQLSERVER 2000体系,已无技术上的问题。
1.6.4 时间可行性
从时间上看,在两个月的时间里学习相关知识,并开发系统,时间上是有点紧,但是不是不可能实现,通过两个多月的努力功能基本实现。
1.6.5 法律可行性
① 所有技术资料都为合法。
② 开发过程中不存在知识产权问题。
③ 未抄袭任何网站,不存在侵犯版权问题。
④ 开发过程中未涉及任何法律责任。
综上所述,本系统的开发从技术上、从经济上、从法律上都是完全可靠的。
2、相关技术简介
2.1 JSP技术简介
JSP(Java Server Page服务器网页)是从1998年开始出现的新技术。由Sun公司倡导、许多公司参与一起建立的一种动态网页技术标准,是基于JavaServlet以及整个Java体系的web开发技术。在传统的网页HTML文件(*.htm,*.html)中加入脚本片段和JSP标记(Tag),构成JSP网页(*.jsp)。JSP技术为创建显示动态生成内容的web页面提供了简便的方法。JSP作为Java家族的一员,承袭了Java的特点,即跨平台的特性,也即一次编译,到处运行。
在国外,己经大量使用JSP作为网络应用程序的开发工具,而在国内,尽管JSP还不是主流开发技术,但是由于JSP的强大优势,许多网站都已经准备转向JSP,利用JSP来开发动态网站。
2.2 JSP工作原理
JSP是面向服务器的,因此支持任何浏览器。当Web服务器和JSP引擎遇到访问JSP网页的请求时,JSP引擎将请求对象发送给服务器端的相关组件,比如JavaBean组件、Servlet或EJB等,然后由服务器端组件处理这些请示,可能需要从数据库或数据存储中检索信息,然后服务器端组件再将响应对象返回JSP引擎。JSP引擎将响应对象传递给JSP页面,根据JSP页面的HTML格式完成数据编排,最后Web服务器和JSP引擎将格式化后的JSP页面以HTML格式返回客户浏览器。这就是当前网站构建中广泛采用的浏览器——Web服务器——后台数据库的三层架构模式。因为JSP所有程序操作都在服务器端执行,网络上传送给客户端的仅是得到的结果。
2.3 JSP体系结构
JSP网站开发标准给出了两种使用JSP的技术,可以归纳为模式一、模式二。
模式一:JSP+JavaBeans技术 在这种模式中,JSP页面独自响应请求并将处理结果返回给客户。Bean处理所有数据访问,JSP实现页面的表现,以实现内容生成与显示相分离。当处理复杂的大型应用时,页面被嵌入大量的脚本或Java代码段,当需要处理的商业逻辑复杂时,这种情况会变得非常糟糕,大量的内嵌代码使得页面程序变得复杂,对于前端界面设计人员,这是不可思议的事情。所以模式一可用于小型应用,不能够满足大型应用的需要。
模式二:JSP+Servlet+JavaBeans技术 Servlet技术是一种采用Java技术来实现CGI功能的一种技术,Servlet技术非常适于服务器端的处理和编程,并且Servlet会长期驻留在内存。
从开发的观点看,模式二具有更清晰的页面表现,清楚的开发者角色划分,在大规模项目开发中,模式二更被采用,模式二也更符合当前流行的MVC结构(Model/view/controller),其中Servlet对应controller,处于控制者的位置,处理HTTP请求,负责生成JSP中使用的Beans组件或对象,并判断应将请求传递给哪个JSP等,JSP对应view,负责生成最终的动态网页并返回给浏览器。而JavaBeans对应的是Model,实现各个具体的应用逻辑与功能。
2.4 JSP的特点
- 简化的页面生成技术。
JSP页面用标准的HTML或XML命令来处理页面的格式化和布局设计,而用类似HTML、XML的标记和Java语言编写的脚本程序生成页面内容。这使得页面形式与页面内容互相独立,非常有利于大型项目的分工合作。
- 与Java平台有机集成。
JSP技术是Java 2平台的重要组成部分,JSP使用Java语言作为它的脚本语言。在JSP页面中可以使用几乎所有的Java组件和Java API,这就能充分发挥出Java语言的强大功能。使用JSP技术可以创建具有高度可伸缩性和可靠性的Web应用程序。
- 硬件平台和服务器无关性。
JSP作为Java家族的一员,秉承了Java技术的“一次编写,随处可用(Write Once,Rum Anywhere)”的特性,可以运行于大多数流行的操作系统平台及Web服务器,这种与服务器硬件和操作系统平台的无关性是JSP相对于其它动态网页技术最大的一个优点。
- 功能可扩展性。
如同Microsoft的JSP技术可以通过ActiveX/COM组件来扩展功能一样,JSP可以通过JavaBean和EJB(Enterprise JavaBean)以及自定义的标记来扩展功能。
JSP可以通过JDBC,与诸如Oracle、SQL Server这样的大型关系数据库进行连接。
JSP提供了一些隐含对象。这些隐含对象在JSP页面中可以直接引用,而不必首先声明。利用JSP提供的这些隐含对象,可以使脚本功能更加强大,并且编程更加容易、方便。例如,利用request对象,可以很容易地接收用户在HTML表单中提交的信息。
2.5 SQLSERVER 2005
SQL Server是由Microsoft开发和推广的关系数据库管理系统(DBMS),它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同开发的,并于1988年推出了第一个OS/2版本。 SQL Server近年来不断更新版本,1996年,Microsoft 推出了SQL Server 6.5版本;1998年,SQL Server 7.0版本和用户见面;SQL Server 2005是Microsoft公司于2005年推出的最新版本。 SQL Server 特点:
1.真正的客户机/服务器体系结构。
2.图形化用户界面,使系统管理和数据库管理更加直观、简单。
3.丰富的编程接口工具,为用户进行程序设计提供了更大的选择余地。
4.SQL Server与Windows NT完全集成,利用了NT的许多功能,如发送和接受消息,管理登录安全性等。SQL Server也可以很好地与Microsoft BackOffice产品集成。
5.具有很好的伸缩性,可跨越从运行Windows 95/98的膝上型电脑到运行Windows 2000的大型多处理器等多种平台使用。
6.对Web技术的支持,使用户能够很容易地将数据库中的数据发布到Web页面上。
7.SQL Server提供数据仓库功能,这个功能只在Oracle和其他更昂贵的DBMS中才有。
2.6系统数据库连接
JDBC技术是Java DataBase Connectivity的缩写,它是SUN公司提供的一种支持基本SQL功能的通用的应用程序接口(Application Programming Interface)。它由一组用Java语言编写的类和接口组成。通过这些类和接口,程序开发人员可以在Java语言中方便地建立与数据库的链接,通过执行相应SQL语句,完成对不同数据库的访问。因此,开发人员使用JDBC API可以不必编写一个应用程序来访问Sybase数据库,又另外编写一个应用程序去访问Oracle数据库,再写一个应用程序访问Microsoft的SQL Server。不但如此,使用Java语言编写的应用程序可以在任何支持Java的平台上运行,不必在不同的平台上开发不同的应用程序。
简单地说,JDBC能完成下列三件事:
- 同一个数据库建立连接;
- 向数据库建立连接;
- 处理数据库返回的结果。
JDBC是一种通用低层的应用程序编程接口,它在不同的数据库功能模块的层次上提供一个统一的用户界面。说JDBC是一处低级的API,是指它直接调用SQL命令,它比其他的一些数据库连接API要容易使用些,但它有同样可以作为更高级的,用户办面更友好的API或开发工具基础。
很多可视化的Java开发工具,如Visual Age For Java、Visual Café、J++等都提供了基于JDBC的更面向用户的类和包,直接将关系数据库的表或视图映射为Java类,程序员通过可视化工具直接对Java对象进行操作,而真正需要的SQL调用则根据程序员发出的对对象的各种属性、方法的操作来自动产生。另一种使用JDBC API 的方式为,用户程序可以提供一个界面(如菜单等)让用户选择对数据库进行的操作,选中一个任务后,提示用户输入一些必要的信息,然后根据用户的输入产生相应的SQL命令以及Java程序。通过这处方式,用户可以完成对数据库的操作,即使他并不了解SQL语法以及JDBC编程。
数据库访问的三层结构如图5.1所示,浏览器端程序要访问数据库,首先通过中间件,然后由中间件对数据库操作权限进行认证,认证通过才能对数据库进行操作。
图5.1 使用中间件的数据库访问三层结构
用户对数据库的存取权限认证是中间件中完成,对数据库的查询、插入、更新和删除操作等都封装在中间件中,该中间件位于服务器端,中间件对数据库进行操作后,再将处理结果通过Web服务器返回到浏览器端用户。这样,在用户端输入的用户名和密码,可以通过加密算法进行加密后在网络上传输,在中间件中进行解密认证,然后再进行数据库的存取操作,数据库存取权限的用户名和密码出现在位于服务器端的中间件中,这样就更加安全。本系统采用的正是这样的三层结构的数据库访问模式。
在三层模型中,命令将被发送到服务的”中间层”,而”中间层”将SQL语句发送到数据库。数据库处理SQL语句并将结果返回”中间层”,然后”中间层”将它们返回用户。其模型如图5.2所示。
图5.2 JDBC的三层模型
因为”中间层”可以进行对访问的控制并协同数据库的更新,并且可以使用一个易用的高层API,这个API可以由“中间层”进行转换,转换成低层的调用。所以在许多种情况下,三层模型可以提供更好的性能,本系统中所采用的就是此种模型。
JDBC是JAVA应用程序与数据库的沟通桥梁。它提供了三项服务功能:一、与数据库建立连接。二、将SQL语句传递给数据库。三、从数据库取得SQL语句的执行结果。当JDBC要与数据库建立连接前,首先,它必须先取得连接此数据库的JDBC驱动程序,Class.forName()即是在执行此项工作。建立数据库连接的第一步骤就是将JDBC驱动程序的类载入至JVM(Java VirtualL Machine)中,本系统中利用java.lang.Class类内的forName()静态函数依据指定的类名称,将JDBC驱动程序载入进来。完成载入驱动程序的步骤后,必须使用java.sal.DriverManager类所提供的getConnection()静态函数,取得与数据库间的连接对象。此连接对象的类类型为java.sal.Connection,必须通过它才能将SQL指令传递给数据库,而执行结果也需要通过连接对象来取得。当取得连接对象后,还必须取得Statement对象才能对数据库执行SQL指令。Statement主要实现两个功能:执行SQL语句以及取得执行结果。在java.sql.Statement的sql对象中执行查询或修改命令的函数后传回的是一个ResultSet 对象,这个对象提供了一个存取SQL执行结果的管道,以便通过它将表格数据从数据库中取出。每个Statement对象只能产生一个ResultSet 对象。
数据库连接如图5.3所示:
图5.3 数据库的连接处理
数据库的连接处理具体实现如下:
//建立JDBC——ODBC桥
sun.jdbc.odbc.JdbcOdbcDriver;
//桥建立不成功时的错误处理
catch(ClassNotFoundException event){}
//建立与数据库的连接,并发送SQL查询语句,将结果保存到rs对象中
Con=建立JDBC——ODBC桥
Sql=SQL查询语句
执行查询
Rs=返回结果
//SQL出错处理
catch(SQLException e1){}
有了JDBC,向各种关系数据发送SQL语句就是一件很容易的事。换言之,有了JDBC API,就不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,或为访问Informix数据库又编写另一个程序等等,程序员只需用JDBC API写一个程序就够了,它可向相应数据库发送SQL调用。同时,将Java语言和JDBC结合起来使程序员不必为不同的平台编写不同的应用程序,只须写一遍程序就可以让它在任何平台上运行,这也是Java语言“编写一次,处处运行”的优势。
Java数据库连接体系结构是用于Java应用程序连接数据库的标准方法。JDBC对Java程序员而言是API,对实现与数据库连接的服务提供商而言是接口模型。作为API,JDBC为程序开发提供标准的接口,并为数据库厂商及第三方中间件厂商实现与数据库的连接提供了标准方法。JDBC使用已有的SQL标准并支持与其它数据库连接标准,如ODBC之间的桥接。JDBC实现了所有这些面向标准的目标并且具有简单、严格类型定义且高性能实现的接口。
Java 具有坚固、安全、易于使用、易于理解和可从网络上自动下载等特性,是编写数据库应用程序的杰出语言。所需要的只是 Java应用程序与各种不同数据库之间进行对话的方法。而 JDBC 正是作为此种用途的机制。
JDBC 扩展了 Java 的功能。例如,用 Java 和 JDBC API 可以发布含有 applet 的网页,而该 applet 使用的信息可能来自远程数据库企业也可以用 JDBC 通过 Intranet 将所有职员连到一个或多个内部数据库中(即使这些职员所用的计算机有 Windows、 Macintosh 和UNIX 等各种不同的操作系统)。随着越来越多的程序员开始使用Java 编程语言,对从 Java 中便捷地访问数据库的要求也在日益增加。
MIS 管理员们都喜欢 Java 和 JDBC 的结合,因为它使信息传播变得容易和经济。企业可继续使用它们安装好的数据库,并能便捷地存取信息,即使这些信息是储存在不同数据库管理系统上。新程序的开发期很短。安装和版本控制将大为简化。程序员可只编写一遍应用程序或只更新一次,然后将它放到服务器上,随后任何人就都可得到最新版本的应用程序。对于商务上的销售信息服务, Java 和JDBC 可为外部客户提供获取信息更新的更好方法。
简单地说,JDBC 可做三件事:与数据库建立连接、发送 SQL 语句并处理结果。下列代码段给出了以上三步的基本示例:
Connection con = DriverManager.getConnection("jdbc:odbc:wombat","login",
"password");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table1");
while (rs.next()) {
int x = rs.getInt("a");
String s = rs.getString("b");
float f = rs.getFloat("c");
}
上述代码对基于JDBC的数据库访问做了经典的总结。
2.7 BS模式与C/S模式的比较分析
C/S模式主要由客户应用程序(Client)、服务器管理程序(Server)和中间件(middleware)三个部件组成。客户应用程序是系统中用户与数据进行交互的部件。服务器程序负责有效地管理系统资源,如管理一个信息数据库,其主要工作是当多个客户并发地请求服务器上的相同资源时,对这些资源进行最优化管理。中间件负责联结客户应用程序与服务器管理程序,协同完成一个作业,以满足用户查询管理数据的要求。
B/S模式是一种以Web技术为基础的新型的MIS系统平台模式。把传统C/S模式中的服务器部分分解为一个数据服务器与一个或多个应用服务器(Web服务器),从而构成一个三层结构的客户服务器体系。
第一层客户机是用户与整个系统的接口。客户的应用程序精简到一个通用的浏览器软件,如Netscape Navigator,微软公司的IE等。浏览器将HTML代码转化成图文并茂的网页。网页还具备一定的交互功能,允许用户在网页提供的申请表上输入信息提交给后台,并提出处理请求。这个后台就是第二层的Web服务器。
第二层Web服务器将启动相应的进程来响应这一请求,并动态生成一串HTML代码,其中嵌入处理的结果,返回给客户机的浏览器。如果客户机提交的请求包括数据的存取,Web服务器还需与数据库服务器协同完成这一处理工作。
第三层数据库服务器的任务类似于C/S模式,负责协调不同的Web服务器发出的SQ请求,管理数据库。
B/S模式的优势
首先它简化了客户端。它无需象C/S模式那样在不同的客户机上安装不同的客户应用程序,而只需安装通用的浏览器软件。这样不但可以节省客户机的硬盘空间与内存,而且使安装过程更加简便、网络结构更加灵活。假设一个企业的决策层要开一个讨论库存问题的会议,他们只需从会议室的计算机上直接通过浏览器查询数据,然后显示给大家看就可以了。甚至与会者还可以把笔记本电脑联上会议室的网络插口,自己来查询相关的数据。其次,它简化了系统的开发和维护。系统的开发者无须再为不同级别的用户设计开发不同的客户应用程序了,只需把所有的功能都实现在Web服务器上,并就不同的功能为各个组别的用户设置权限就可以了。各个用户通过HTTP请求在权限范围内调用Web服务器上不同处理程序,从而完成对数据的查询或修改。现代企业面临着日新月异的竞争环境,对企业内部运作机制的更新与调整也变得逐渐频繁。相对于C/S,B/S的维护具有更大的灵活性。当形势变化时,它无须再为每一个现有的客户应用程序升级,而只需对Web服务器上的服务处理程序进行修订。这样不但可以提高公司的运作效率,还省去了维护时协调工作的不少麻烦。如果一个公司有上千台客户机,并且分布在不同的地点,那么便于维护将会显得更加重要。
再次,它使用户的操作变得更简单。对于C/S模式,客户应用程序有自己特定的规格,使用者需要接受专门培训。而采用B/S模式时,客户端只是一个简单易用的浏览器软件。无论是决策层还是操作层的人员都无需培训,就可以直接使用。B/S模式的这种特性,还使 MIS系统维护的限制因素更少。
最后,B/S特别适用于网上信息发布,使得传统的MIS的功能有所扩展。这是C/S所无法实现的。而这种新增的网上信息发布功能恰是现代企业所需的。这使得企业的大部分书面文件可以被电子文件取代,从而提高了企业的工作效率,使企业行政手续简化,节省人力物力。
鉴于B/S相对于C/S的先进性,B/S逐渐成为一种流行的MIS系统平台。各软件公司纷纷推出自己的Internet方案,基于Web的财务系统、基于Web的ERP。一些企业已经领先一步开始使用它,并且收到了一定的成效。
B/S模式的新颖与流行,和在某些方面相对于C/S的巨大改进,使B/S成了MIS系统平台的首选。
3、需求分析和设计方案
3.1 需求分析
根据客户的需要,本软件系统是公司合同管理系统,用户仅限于公司内部员工,需求功能主要是员工或者公司的管理层能通过软件系统,进行一系列的操作,从而实现管理公司的目的,下面是具体的需求:
(1)既然软件系统的用户仅限于公司内部的员工,所以就必须要有判断是否内部员工的功能。
(2)员工应该能从软件系统上查看合同,管理合同
(3)有一些突发事件随时有可能发生,如地址和联系方式的变化,这就要求员工能通过系统对自己的一些资料进行修改。
(4)员工不可能记的住公司所有合同等,所以要有通过查询得知一些合同的具体资料的功能。
(5)公司随时都可能根据合同的变化,删除,废止,修改合同。
3.1 功能模块图
需求分析是从客户的需求中提取出软件系统能够帮助用户解决的业务问题,而设计方案则是根据需求分析,规划出系统的功能模块,具体的划分如下:
编写企业合同管理系统,让其能创建合同、修改合同、删除合同、合同变更标识、合同收款提醒、合同时间管理、合同废止标识、结束合同、合同统计、合同查询等几大功能。
(1) 创建合同
管理人员将签订后的合同的各项信息存入数据库中,使合同进入开始执行的状态。
(2) 修改合同
让管理的人员能对数据库里的合同的各项信息进行修改。
(3) 删除合同
管理人员能对无用的合同,进行删除。
(4) 合同变更标识
合同被修改后,系统会有标识指明合同曾被修改。
(5) 合同收款提醒
系统会标识到期收款的合同,方便用户对合同的收款。
(6) 合同查询
以合同的各项信息为关键字来对数据库进行查询。如图1所示:
图1 合同管理系统功能模块示意图
3.2 处理流程设计
3.2.1 系统操作流程图
系统登录界面 |
输入操作员及密码 |
系统主界面 |
系统管理 |
错误信息 |
|
|
|
密码正确 |
功能界面 |
功能处理 |
3.2.2 数据增加流程
添加信息时,编号字段由系统自动生成,且不能修改,其他信息由用户输入,之后对数据进行合法判断,合法则写入保存至数据库,不合法则重新输入数据。数据增加流程图:
开始 |
自动生成编号 |
输入数据 |
是否合法 |
写入数据库 |
结束 |
图3.2 数据增加流程图
3.2.3 数据修改流程
在修改信息时,先选中一条待修改的记录,然后直接输入数据,判断合法性,合法则保存至数据库,不合法重新输入。数据修改流程图如图3.3所示。
开始 |
选择需要修改记录 |
输入数据 |
是否合法 |
写入数据库 |
结束 |
图3.3 数据修改流程图
3.2.4 数据删除流程
当用户选定一条记录时,单击删除按钮,会提示用户是否确定删除,然后删除数据库相关内容。数据删除流程图如图3.4所示。
开始 |
选择需要删除记录 |
是否删除 |
更新数据库 |
图3.4 数据删除流程图
4、数据库设计
4.1 数据库的概念设计
数据库的概念结构设计是反映全组织信息需求的整体数据库概念结构(概念模式)。概念模式必须是独立于计算机硬件和具体数据库管理系统,不受特定DBMS(数据库管理系统)的限制,不考虑计算机软硬件技术细节。在需求分析阶段得到的数据流程图对数据的动态运动轨迹进行了描述,数据库需求分析定义了数据本身的静态特征,但他们反映的仅是应用需求,并无反映出数据之间的本质联系(即数据的内在特征)。他们之间存在着数据关联并且靠数据库关键字段进行索引,建立表关联。
E-R图如下:
用户名 |
密码 |
查看 |
合同管理 |
合同收款提醒 |
合同统计 |
合同查询 |
修改密码 |
添加管理员 |
修改用户名 |
删除管理员 |
操作 |
系统维护 |
管理员 |
信息 |
4.2 数据库逻辑结构设计
设计逻辑结构应该选择最适于描述与表达相应概念结构的数据模型,然后选择最合适的DBMS。设计逻辑结构时一般要分三步进行:将概念结构转换为一般的关系、网状、层次模型,并将转化来的关系、网状、层次模型向特定DBMS支持下的数据模型转换,关系模型的逻辑结构是一组关系模式的集合。而E-R图则是由实体、实体的属性和实体之间的联系三个要素组成的。所以将E-R图转换为关系模型实际上就是要将实体、实体的属性和实体之间的联系转化为关系模式。
本管理系统所存在的数据库中有不同的表结构,这些物理表中存放着各种网站所调用的数据,为整个网站的流程提供最基本的数据来源。本网站采用MYSQL数据库它是由Microsoft公司开发。对于它的安全性和易操作性来说是开发者首选。
4.3 数据库物理结构设计
数据库在整个进销存管理系统中占据重要的地位,数据库结构设计的好坏直接影响系统和实现的效果。好的数据库结构设计会减少数据库的存储量,数据的完整性和一致性比较高,系统具有较快的响应速度。本系统采用MYSQL 的数据库,根据分析阶段对实体和联系的分析结果,进行表结构设计,可以得到以下数据表。
表4-1 管理员信息表(t_admin)
列名 | 数据类型 | 字段大小 | 必填字段 | 默认值 | 说明 |
UserId | int | 20 | 是 | 无 | 管理员帐号(主键) |
UserName | varchar | 50 | 是 | 无 | 管理员姓名 |
UserPw | varchar | 50 | 是 | 无 | 管理员密码 |
表4-2为合同信息表,记录系统中合同的详细信息。
表4-2 合同信息表(t_hetong)
列名 | 数据类型 | 字段大小 | 必填字段 | 默认值 | 说明 |
id | int | 20 | 是 | 无 | 合同编号(主键) |
Mingcheng | varchar | 50 | 是 | 无 | 合同名称 |
jiafangfuzeren | varchar | 50 | 是 | 无 | 甲方负责人 |
yifangfuzeren | varchar | 50 | 是 | 无 | 乙方负责人 |
kaishishijian | varchar | 50 | 是 | 无 | 开始时间 |
jieshushijian | varchar | 50 | 是 | 无 | 结束时间 |
jine | Int | 20 | 是 | 无 | 金额 |
beizhu | varchar | 50 | 是 | 无 | 备注 |
表4-3为合同提醒信息表,记录系统中已有合同提醒的信息。
表4-3 合同提醒信息表(t_tixing)
列名 | 数据类型 | 字段大小 | 必填字段 | 默认值 | 说明 |
id | int | 20 | 是 | 无 | 编号(主键) |
hetongId | Int | 50 | 是 | 无 | 合同编号 |
shoukuanshijian | varchar | 50 | 是 | 无 | 收款时间 |
shoukuanjine | varchar | 50 | 是 | 无 | 收款金额 |
4.4 输入输出设计
输入输出设计是系统设计中很容易被忽视的环节,又是一个重要的环节。一个好的输出系统设计可以为用户和系统双方带来良好的工作环境,一个好的输出设计可以为管理者提供简捷、明了、有效、实用的管理和控制信息。本管理系统输入设计数据根据输出的要求来选择。输出类型设计是根据需求设计为打印输出,这是用户通常要求的最主要的形式。输入内容设计主要是根据数据库设计和输出设计的结果来确定的。外部输入主要是键盘输入,内部输入只要是数据库中调用的信息,如会员资料信息的注册,在后台对帖子管理,用户信息,重要通知的添加。
4.5 代码设计
设计的好坏,不仅关系到计算机的处理效率,而且直接影响人们的接受与使用。代码设计必须从整个企业MIS的高度,统筹规划、全面考虑代码设计关系到系统的可扩展性、一致性、完整性和可维护性的重要问题。设计代码的目的是为了便于计算机和人识别和处理,更方便的进行分类和排序,使计算机对数据进行快速的查询。对客观实体,通过代码进行识别、分类。从计算机信息处理而言,使用代码节省处理时间与空间,提高处理速度与效率。代码设计在系统中,它是人与计算机的共同语言,起着沟通人与计算的作用。采用代码,可以使数据表达标准化、简化程序设计、加快输入、减少出错率、节省存储空间、提高处理速度。代码设计是一项重要的基础工作。因此,代码设计有他特有的意义。
5、系统模块设计
5.1 登陆模块
登录模块图示如图5-1所示:
图5-1 系统登录界面
页面程序说明,如表5-1所示:
表5-1页面程序说明
程序名称 | |
程序文件 | Login.jsp |
页面传入参数 | Username,password |
页面提交URL | |
页面传出参数 | Session["username"] Session["group"] |
功能说明 | 登录系统 |
特殊注解 | 无 |
5.2 系统主界面
5.3 合同管理模块设计
5.3.1 合同管理
5.3.2 合同添加
5.4 合同收款提醒模块设计
5.5 合同查询模块设计
5、系统调试与测试
5.1 程序调试
在设计系统的过程中,存在一些错误是必然的。对于语句的语法错误,在程序运行时自动提示,并请求立即纠正,因此,这类错误比较容易发现和纠正。但另一类错误是在程序执行时由于不正确的操作或对某些数据的计算公式的逻辑错误导致的错误结果。这类错误隐蔽性强,有时会出现,有时又不出现,因此,对这一类动态发生的错误的排查是耗时费力的。
5. 2 程序的测试
5.2.1 测试的重要性及目的
(1)测试的重要性
软件的测试在软件生命周期中占据重要的地位,在传统的瀑布模型中,软件测试学仅处于运行维护阶段之前,是软件产品交付用户使用之前保证软件质量的重要手段。近来,软件工程界趋向于一种新的观点,即认为软件生命周期每一阶段中都应包含测试,从而检验本阶段的成果是否接近预期的目标,尽可能早的发现错误并加以修正,如果不在早期阶段进行测试,错误的延时扩散常常会导致最后成品测试的巨大困难。
事实上,对于软件来讲,不论采用什么技术和什么方法,软件中仍然会有错。采用新的语言、先进的开发方式、完善的开发过程,可以减少错误的引入,但是不可能完全杜绝软件中的错误,这些引入的错误需要测试来找出,软件中的错误密度也需要测试来进行估计。测试是所有工程学科的基本组成单元,是软件开发的重要部分。自有程序设计的那天起测试就一直伴随着。统计表明,在典型的软件开发项目中,软件测试工作量往往占软件开发总工作量的40%以上。而在软件开发的总成本中,用在测试上的开销要占30%到50%。如果把维护阶段也考虑在内,讨论整个软件生存期时,测试的成本比例也许会有所降低,但实际上维护工作相当于二次开发,乃至多次开发,其中必定还包含有许多测试工作。
在实践中,软件测试的困难常常使人望而却步或敷衍了事,这是由于对测试仍然存在一些不正确的看法和错误的态度,这包括:
① 认为测试工作不如设计和编码那样容易取得进展难以给测试人员某种成就感;
② 以发现软件错误为目标的测试是非建设性的,甚至是破坏性的,测试中发现错位是对责任者工作的一种否定;
③ 测试工作枯燥无味,不能引起人们的兴趣;
④ 测试工作是艰苦而细致的工作;
⑤ 对自己编写的程序盲目自信,在发现错误后,顾虑别人对自己的开发能力的看法。
这些观点对软件测试工作是极为不利的,必须澄清认识、端正态度,才可能提高软件产品的质量。
(2)测试的目的
如果测试的目的是为了尽可能多地找出错误,那么测试就应该直接针对软件比较复杂的部分或是以前出错比较多的位置。
① 软件测试是为了发现错误而执行程序的过程;
② 测试是为了证明程序有错,而不是证明程序无错误;
③ 一个好的测试用例是在于它能发现至今未发现的错误;
④ 一个成功的测试是发现了至今未发现的错误的测试。
这种观点可以提醒人们测试要以查找错误为中心,而不是为了演示软件的正确功能。但是仅凭字面意思理解这一观点可能会产生误导,认为发现错误是软件测试的唯一目,查找不出错误的测试就是没有价值的,事实并非如此。
首先,测试并不仅仅是为了要找出错误。通过分析错误产生的原因和错误的分布特征,可以帮助项目管理者发现当前所采用的软件过程的缺陷,以便改进。同时,这种分析也能帮助我们设计出有针对性地检测方法,改善测试的有效性。其次,没有发现错误的测试也是有价值的,完整的测试是评定测试质量的一种方法。
5.2.2 测试的步骤
与开发过程类似,测试过程也必须分步骤进行,每个步骤在逻辑上是前一个步骤的继续。大型软件系统通常由若干个子系统组成,每个子系统又由若干个模块组成。因此,大型软件系统的测试基本上由下述几个步骤组成:
(1)模块测试 在这个测试步骤中所发现的往往是编码和详细设计的错误。
(2)系统测试 在这个测试步骤中发现的往往是软件设计中的错误,也可能发现需求说明中的错误。
(3)验收测试 在这个测试步骤中发现的往往是系统需求说明书中的错误。
5.2.3 测试的主要内容
为了保证测试的质量,将测试过程分成几个阶段,即:代码审查、单元测试、集成测试、确认测试和系统测试。
(1)单元测试
单元测试集中在检查软件设计的最小单位—模块上,通过测试发现实现该模块的实际功能与定义该模块的功能说明不符合的情况,以及编码的错误。
(2)集成测试
集成测试是将模块按照设计要求组装起来同时进行测试,主要目标是发现与接口有关的问题。如一个模块与另一个模块可能有由于疏忽的问题而造成有害影响;把子功能组合起来可能不产生预期的主功能;个别看起来是可以接受的误差可能积累到不能接受的程度;全程数据结构可能有错误等。
(3)确认测试
确认测试的目的是向未来的用户表明系统能够像预定要求那样工作。经集成测试后,已经按照设计把所有的模块组装成一个完整的软件系统,接口错误也已经基本排除了,接着就应该进一步验证软件的有效性,这就是确认测试的任务,即软件的功能和性能如同用户所合理期待的那样。
(4)系统测试
软件开发完成以后,最终还要与系统中其他部分配套运行,进行系统测试。包括恢复测试、安全测试、强度测试和性能测试等。
单独对系统的测试主要从以下几方面入手:
① 功能测试:测试是否满足开发要求,是否提供设计所描述的功能,是否用户的需求都得到满足。功能测试是系统测试最常用和必须的测试,通常还会以正式的软件说明书为测试标准。
② 强度测试及性能测试:测试系统能力最高实际限度,即软件在一些超负荷情况下功能实现的情况。
③ 安全测试:验证安装在系统内的保护机构确实能够对系统进行保护,使之不受各种非常的干扰。针对本系统主要是对权限系统的测试和对无效数据、错数据、和非法数据干扰的能力的测试。
经过上述的测试过程对软件进行测试后,软件基本满足开发的要求,测试宣告结束。
结束语
几个月来忙碌紧张而又有条不紊的毕业设计,使我有机会对本专业的基本理论、专业知识和基本技术有了更深入的了解和体会,使我在四年中所学到的知识得到了系统和升华,真正达到了学以致用。
对管理信息系统的体会
管理信息系统是一门融管理科学、信息科学、系统科学、计算机科学与现代通信技术为一体的一门综合性边缘学科。它是运用系统的方法以计算机和现代通信技术为基本信息处理手段和工具的,能为管理决策提供信息服务的人—机系统.它可以实现数据处理功能、预测功能、计划功能、控制功能和辅助决策功能。管理信息系统的开发是一项复杂的系统工程,必须严格的按照系统规划、系统分析、系统设计、系统实施、系统运行与评价的开发步骤来进行。
管理信息系统旨在提供一个全面的信息加工处理进一步利用的工具,以提高管理水平。在系统开发之前,必须了解该系统的特点、适用范围以及使用者需要一个什么样的系统,以此作为基础为开发系统准确定位,然后对使用者所需实现的功能进行分析总结,根据使用者的实际要求来给系统设计一个初步方案。系统的开发不仅是要实现对数据处理的及时与正确,而且要考虑系统是否具有控制功能,及时将数据反馈给操作者,以进行监测和协调,保证系统的正常运行;也要考虑是否具有预测功能,运用一定的数学方法利用历史的数据对未来进行预测的工作。
设计实践上的体会
在设计的过程中,我掌握了很多了很多关于本系统的编程知识,并对这种成熟并广泛应用的技术进行了深入的学习。设计的过程也是一个再学习的过程,在遇到问题的时候我尽量自己想办法解决,这在很大程度上激发了我们的自学能力;在没有办法解决的情况下,认真的向老师请教,从老师那里我学到了很多的知识,老师对我的指导起到了画龙点睛的作用。
以往我们曾经有过多次设计的体会,但只是设计一个模块或一个小系统,而这一次毕业设计是综合所学的管理和计算机的知识来设计一个适合运行管理的系统软件。要想设计使用户满意,就需要我们付出更多的努力。我在设计中经常出现一些问题不知该如何解决,在此时许多同学给予了我们帮助。在设计的过程中增加了于实际接触的机会,不仅培养了我的自学和编程能力,让我在即将离开学校进入社会之前有了一定的资本,提高了我与人沟通的能力。
程序设计中的体会
在我的程序设计过程中,我充分的体会到了“实践出真知”这一点,书本上的知识是不够的,只有把理论与实践相结合才能够真正的学到知识。一个管理信息系统的设计,不可能一步到位,还需要不断的完善和补充。同时,系统中还存在许多问题,有待在日后的使用中发现和解决。编程前的深思熟虑是减少程序调试工作量的重要方法,只有进行充分考虑,才会减少调试过程中的工作量。虽然在开始写程序之前我们做了多的准备工作,但在真正的写程序时仍然发现许多问题,有些问题是分析时的疏漏,有些则是如果不做无论如何也想不到的。
参考文献
[1] BruceEckel.《JAVA编程思想》. 机械工业出版社,2003年10月:1-378
[2]赛奎春.《JAVA工程应用与项目实践》. 机械工业出版社, 2002年8月:23-294
[3]FLANAGAN.《JAVA技术手册》. 中国电力出版社,2002年6月:1-465
[4]孙一林,彭波.《JSP数据库编程实例》. 清华大学出版社,2002年8月:30-210
[5]LEE ANNE PHILLIPS.《巧学活用 JSP》.电子工业出版社,2004年8月:1-319
[6]飞思科技产品研发中心.《JSP应用开发详解》.电子工业出版社,2003年9月:32-300
[7]耿祥义,张跃平.《JSP实用教程》. 清华大学出版社,2003年5月1日:1-354
[8]孙涌.《现代软件工程》.北京希望电子出版社,2003年8月:1-246
[9]萨师煊,王珊.《数据库系统概论》.高等教育出版社,2002年2月:3-460
[10]Brown等.《JSP编程指南(第二版)》. 电子工业出版社 ,2003年3月:1-268
[11]清宏计算机工作室.《JSP编程技巧》. 机械工业出版社, 2004年5月:1-410
[12]朱红,司光亚.《JSP编程指南》.电子工业出版
参考资料:
基于jsp的合同管理系统毕业设计(项目报告+源代码+数据库+部署视频)https://download.csdn.net/download/dwf1354046363/87813534Java毕业设计174例,包含部署视频_易小侠的博客-CSDN博客https://cv2022.blog.csdn.net/article/details/124463185?spm=1001.2014.3001.5502