首页 > 编程学习 > 基于B/S架构的合同信息管理系统(Java+Web+MySQL)

目 录
摘要 3
Abstract 4
1、引言 4
1.1 开发背景 4
1.2 课题研究的意义 5
1.3 发展趋势 5
1.4 系统开发方法 6
1.6 可行性研究 7
1.6.1 经济可行性 7
1.6.2 技术可行性 7
1.6.3运行可行性 7
1.6.4 时间可行性 7
1.6.5 法律可行性 8
2、相关技术简介 8
2.1 JSP技术简介 8
2.2 JSP工作原理 9
2.3 JSP体系结构 9
2.4 JSP的特点 10
2.5 SQLSERVER 2005 11
2.6系统数据库连接 11
2.7 BS模式与C/S模式的比较分析 16
3、需求分析和设计方案 19
3.1 需求分析 19
3.1 功能模块图 19
3.2 处理流程设计 20
3.2.1 系统操作流程图 21
3.2.2 数据增加流程 21
3.2.3 数据修改流程 22
3.2.4 数据删除流程 23
4、数据库设计 24
4.1 数据库的概念设计 24
4.2 数据库逻辑结构设计 24
4.3 数据库物理结构设计 25
4.4 输入输出设计 26
4.5 代码设计 26
5、系统模块设计 27
5.1 登陆模块 27
5.2 系统主界面 28
5.3 合同管理模块设计 28
5.3.1 合同管理 28
5.3.2 合同添加 28
5.4 合同收款提醒模块设计 29
5.5 合同查询模块设计 29
5、系统调试与测试 30
5.1 程序调试 30
5. 2 程序的测试 30
5.2.1 测试的重要性及目的 30
5.2.2 测试的步骤 32
5.2.3 测试的主要内容 32
结束语 34
致谢 36
参考文献 37
3、需求分析和设计方案
3.1 需求分析
根据客户的需要,本软件系统是公司合同管理系统,用户仅限于公司内部员工,需求功能主要是员工或者公司的管理层能通过软件系统,进行一系列的操作,从而实现管理公司的目的,下面是具体的需求:
(1)既然软件系统的用户仅限于公司内部的员工,所以就必须要有判断是否内部员工的功能。
(2)员工应该能从软件系统上查看合同,管理合同
(3)有一些突发事件随时有可能发生,如地址和联系方式的变化,这就要求员工能通过系统对自己的一些资料进行修改。
(4)员工不可能记的住公司所有合同等,所以要有通过查询得知一些合同的具体资料的功能。
(5)公司随时都可能根据合同的变化,删除,废止,修改合同。

3.1 功能模块图
需求分析是从客户的需求中提取出软件系统能够帮助用户解决的业务问题,而设计方案则是根据需求分析,规划出系统的功能模块,具体的划分如下:
编写企业合同管理系统,让其能创建合同、修改合同、删除合同、合同变更标识、合同收款提醒、合同时间管理、合同废止标识、结束合同、合同统计、合同查询等几大功能。
(1) 创建合同
管理人员将签订后的合同的各项信息存入数据库中,使合同进入开始执行的状态。
(2) 修改合同
让管理的人员能对数据库里的合同的各项信息进行修改。
(3) 删除合同
管理人员能对无用的合同,进行删除。
(4) 合同变更标识
合同被修改后,系统会有标识指明合同曾被修改。
(5) 合同收款提醒
系统会标识到期收款的合同,方便用户对合同的收款。
(6) 合同查询
以合同的各项信息为关键字来对数据库进行查询。如图1所示:

在这里插入图片描述

图1 合同管理系统功能模块示意图
2.6系统数据库连接
JDBC技术是Java DataBase Connectivity的缩写,它是SUN公司提供的一种支持基本SQL功能的通用的应用程序接口(Application Programming Interface)。它由一组用Java语言编写的类和接口组成。通过这些类和接口,程序开发人员可以在Java语言中方便地建立与数据库的链接,通过执行相应SQL语句,完成对不同数据库的访问。因此,开发人员使用JDBC API可以不必编写一个应用程序来访问Sybase数据库,又另外编写一个应用程序去访问Oracle数据库,再写一个应用程序访问Microsoft的SQL Server。不但如此,使用Java语言编写的应用程序可以在任何支持Java的平台上运行,不必在不同的平台上开发不同的应用程序。
简单地说,JDBC能完成下列三件事:
1.同一个数据库建立连接;
2.向数据库建立连接;
3.处理数据库返回的结果。
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服务器返回到浏览器端用户。这样,在用户端输入的用户名和密码,可以通过加密算法进行加密后在网络上传输,本文转载自http://www.biyezuopin.vip/onews.asp?id=11181在中间件中进行解密认证,然后再进行数据库的存取操作,数据库存取权限的用户名和密码出现在位于服务器端的中间件中,这样就更加安全。本系统采用的正是这样的三层结构的数据库访问模式。
在三层模型中,命令将被发送到服务的”中间层”,而”中间层”将SQL语句发送到数据库。数据库处理SQL语句并将结果返回”中间层”,然后”中间层”将它们返回用户。

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
		<meta http-equiv="pragma" content="no-cache">
		<meta http-equiv="cache-control" content="no-cache">
		<meta http-equiv="expires" content="0">
		<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
		<meta http-equiv="description" content="This is my page">
		<style type="text/css">
            body
            {  
                 background:url('img/liu3718.jpg');  
                 background-position:center; 
                 background-repeat:no-repeat;  
                 background-color:  #CCCCCC;
            }


        </style>
		
		<script type='text/javascript' src='<%=path %>/dwr/interface/loginService.js'></script>
        <script type='text/javascript' src='<%=path %>/dwr/engine.js'></script>
        <script type='text/javascript' src='<%=path %>/dwr/util.js'></script>
        
		<script language="javascript">
		function check1()
		{                                                                                         
		     if(document.ThisForm.userName.value=="")
			 {
			 	alert("请输入用户名");
				document.ThisForm.userName.focus();
				return false;
			 }
			 if(document.ThisForm.userPw.value=="")
			 {
			 	alert("请输入密码");
				document.ThisForm.userPw.focus();
				return false;
			 }
			 
			 document.getElementById("indicator").style.display="block";
			 loginService.login(document.ThisForm.userName.value,document.ThisForm.userPw.value,0,callback);
		}
		
		function callback(data)
		{
		    document.getElementById("indicator").style.display="none";
		    if(data=="no")
		    {
		        alert("用户名或密码错误");
		    }
		    if(data=="yes")
		    {
		        alert("通过验证,系统登录成功");
		        window.location.href="<%=path %>/loginSuccess.jsp";
		    }
		    
		}
	    </script>

	</head>

	<body>
		<div id="Layer1" style="position:absolute; left:550px; top:247px; width:360px; height:131px; z-index:1">
			<form action="" name="ThisForm" method="post">
				<table width="100%" border="0" cellspacing="0" cellpadding="0">
					<tr>
						<td width="100%" colspan="2" align="left">
							<font style="font-size: 40px;color: white;font-weight: bolder;display: block;text-align: left">
							    &nbsp;&nbsp;&nbsp;合同信息管理系统
				            </font>
						</td>
					</tr>
					<tr>
						<td width="100%" colspan="2" height="20">
							
						</td>
					</tr>
					<tr>
						<td width="15%" height="22">
							<span style="font-size: 15px;font-weight: 700;font-family: 楷体">账号:</span>
						</td>
						<td width="85%" height="22">
							<input name="userName" type="text" style="height:20px;width:130px; border:solid 1px #bbbbbb">
						</td>
					</tr>
					<tr>
						<td width="15%" height="22">
							<span style="font-size: 15px;font-weight: 700;font-family: 楷体">密码:</span>
						</td>
						<td width="85%" height="22">
							<input name="userPw" type="password" style="height:20px;width:130px; border:solid 1px #bbbbbb">
						</td>
					</tr>
					<tr>
						<td width="15%" height="22">
							
						</td>
						<td width="85%" height="22">
							<br/>
							<input type="button" value="登录" style="width: 60px;" onClick="check1()">
							<input type="reset" value="重置" style="width: 60px;">
                            <img id="indicator" src="<%=path %>/img/loading.gif" style="display:none"/>
						</td>
					</tr>
				</table>
			</form>
		</div>
	</body>
</html>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Copyright © 2010-2022 dgrt.cn 版权所有 |关于我们| 联系方式