基于javaEE+SSH+oracle的土地档案管理系统设计与实现(毕业论文+程序源码)
大家好,今天给大家介绍基于javaEE+SSH+oracle的土地档案管理系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦。需要下载开题报告PPT模板及论文答辩PPT模板等的小伙伴,可以进入我的博客主页查看左侧最下面栏目中的自助下载方法哦
文章目录:
基于javaEE+SSH+oracle的土地档案管理系统设计与实现(毕业论文+程序源码)1、项目简介2、资源详情3、关键词:4、毕设简介:5、源码下载:
1、项目简介
研究土地档案管理关系即为实现一个土地档案管理系统。土地档案管理系统是将现有的历史纸质档案资料进行数字化加工处理,建成标准化的网络基础资料数据库,同时建成一套基于计算机网络应用的档案管理软件系统。不仅要在技术上符合国家关于档案信息化建设的有关要求,在标准化程度上符合国土行业档案管理规范的专业性要求,而且还要能够与当前现有其他业务信息管理系统进行整合,在档案和业务数据间建立互换和抽取机制,达到信息的顺利交换,便于信息的一致性获取,减少重复劳动工作量。
本文对系统进行了可行性研究、需求分析、前台界面的设计、后台数据库建设以及系统测试等相关工作。基于三层架构的思想,前台使用jsp技术,后台使用了Oracle 11g平台,主要使用Hibernate的设计模式访问数据库,采用B/S架构,实现此土地档案管理系统。
技术:java、jsp、struts、spring、hibernate
数据库:oracle
集成开发工具:eclipse
2、资源详情
项目难度:中等难度
适用场景:相关题目的毕业设计
配套论文字数:22706个字54页
包含内容:整套源码+完整毕业论文+答辩PPT+任务书+辅导视频+运行截图
3、关键词:
纸质档案;数字化;三层架构;java;javaEE;Spring;sturst4、毕设简介:
提示:以下为毕业设计的简略介绍,项目源码及完整毕业论文下载地址见文末。
绪论
1.1 可行性研究编写目的
可行性研究的目的是为了对问题进行研究,以最小的代价在最短的时间内确定问题是否可解。
经过对此项目进行详细调查研究,初拟系统实验报告,对软件开发中将要面临的问题及解决方案进行初涉设计及合理安排。明确开发风险极其所带来的经济效益以及为工作带来的便利性。本报告合身后,交软件经理审查。
1.2 项目背景
省略
从本质上来讲,建立土地管理信息就是用现代化的技术来获取、分析、处理、管理和利用土地信息,就是要依靠计算机技术和现代化科学理论及数学模型的应用,如地理信息系统、遥感学、计算机科学(包括互联网技术……)等对土地信息进行管理。其中,土地管理的许多业务工作,如,动态监测、建设用地管理、土地监察、地价评估都必须建立在地籍、土地详查系统的基础之上,或者说与其有着千丝万缕的联系。因此,土地信息系统的核心问题是建立地籍管理信息系统和土地详查系统,这是土地管理各项业务工作的基础,必须先行。
1.3 土地管理现状
省略
1.4 土地档案管理研究方向
省略
1.5 项目目标
建立地、市、县级的土地信息系统,开发以土地登记为核心的地籍信息系统,以土地利用现状调查为核心的土地资源信息系统,为以服务社会为目标的地、市、县级数字国土信息系统奠定基础,从而实现土地管理工作的计算机化,实现土地管理信息的共享;提高土地管理的质量、效率和水平,更好地为上级领导和有关部门提供准确快速的土地信息查询服务、为土地使用者提供快捷的、全面的服务,为各级政府部门和有关机构的土地管理和决策提供技术支持。
1.6 项目设计原则
1.6.1 实用性原则
省略
1.6.2 经济性原则
省略
1.6.3 合法性原则
省略
2 相关技术介绍
2.1 三层架构的选择
MVC开始是存在于桌面程序中的,M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据可以分别用柱状图、饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。
MVC 模式同时提供了对 HTML、CSS 和 JavaScript 的完全控制。
Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。
View(视图)是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的。
Controller(控制器)是应用程序中处理用户交互的部分。
通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
MVC 分层有助于管理复杂的应用程序,因为您可以在一个时间内专门关注一个方面。例如,您可以在不依赖业务逻辑的情况下专注于视图设计。同时也让应用程序的测试更加容易。
MVC 分层同时也简化了分组开发。不同的开发人员可同时开发视图、控制器逻辑和业务逻辑。MVC的层次结构如图2-1所示。
图2-1 MVC层次图
2.2 编程语言的选择
Java 平台是基于 Java 语言的平台。这样的平台非常流行。因此微软公司推出了与之竞争的.NET平台以及模仿Java的C#语言。
Java是功能完善的通用程序设计语言,可以用来开发可靠的、要求严格的应用程序。
省略
2.3 主要技术、框架的选择
首先,Hibernate是数据持久层的一个轻量级框架。主要有以下优点:
1.使用简介的hql语句(Hibernate query language)。可以不使用传统的insert,update等sql语句。比如insert一个对象,原来的做法是:insert into 表名称 alue(值1,值2,值3,……),而现在的做法是:save(对象)。
2.使用or映射。对象到关系数据库之间的映射。是从对象的角度操作数据库,再次体现了面向对象思想。原来的实体抽取方法:首先有了表,然后表映射实体对象。而现在Hibernate做法是:直接由对象映射到表。
3.没有侵入性,移植性比较好。什么是没有侵入性?就是Hibernate采用了pojo对象。所谓的pojo对象就是没有继承Hibernate类或实现Hibernate接口。这样的话,此类就是一个普通的java类,所以移植性比较好。
4.支持透明持久化。透明是针对上层而言的。三层架构的理念是上层对下层的依赖,只是依赖接口不依赖具体实现。而Hibernate中的透明是指对业务逻辑层提供了一个接口session,而其他的都封装隐藏。持久化是指把内存中的数据存放到磁盘上的文件中。
2.4 数据库的选择
ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。
省略
选择ORACLE,是因为其具备一下优势:
1、处理速度快,非常快。
2、安全级别高。支持快闪以及完美的恢复,即使硬件坏了 也可以恢复到故障发前的1s。
3、几台数据库做负载数据库,可以做到30s以内故障转移。
4、网格控制,以及数据仓库方面也非常强大。
3 需求分析
3.1 编写目的
本土地项目管理系统在可行性研究的基础上,是为了进一步明确土地项目管理系统的软件需求,以便安排项目规划和进度,组织软件开发和测试,撰写本文档。
本文档供项目经理、设计人员、开发人员参考。
3.2 系统需求分析简述
省略
3.3 系统需求分析详细描述
3.3.1 用户管理模块
若要使用该系统,需注册用户登录系统才可以使用。
用户管理模块主要包括登录和注册两个部分,只是简单的实现其功能,对权限分配等暂无需求。
注册模块实现用户注册功能。
登陆模块实现用户登录功能。
3.3.2 文件查找模块
文件查找模块,是要根据文件号进行文件的查找。
3.3.3 文件添加模块
在需要向系统中添加文件的时候,通过该模块手工录入文件各项详细信息,完成对文件的录入。
3.3.4 文件修改模块
根据文件号查找到文件,在能看到该文件信息的情况下,进行文件信息的修改操作,修改完成后进行储存。
3.3.5 文件删除模块
通过文件号查找到文件,然后进行文件的删除操作。
4 总体设计
本系统是采用B/S体系的三层结构,使用java编程语言,应用Hibernate开发模式。三层结构即Model层、View层和Service层的分离,层次分明的设计结构让整个系统显得层次分明,在实现和后期维护等方面将带来极大的方便。
总体来说,对于土地档案管理系统主要是实现用户管理方面即用户的登录和注册功能,以及对于文件档案的管理工作,即对文件档案的增删改查工作。在实现这些基本功能的基础上,在实现一些其他的功能,诸如页面的导航显示。
4.1 系统功能模块结构设计
本系统主要分为两大功能模块,即用户管理模块和档案管理模块,这两个模块下又细分为多个子模块,本系统的功能模块结构如图4-1所示。
图4-1系统总体功能框架图
4.2 数据库设计
表结构设计:
all_categories表是所有档案文件表父表信息,本表结构如图4-2所示。
图4-2档案父表设计图
user表是用户表信息,本表结构如图4-3所示。
图4-3用户表设计图
files表是土地登记表信息,本表结构如图4-4所示。
图4-4档案表设计图
all_categories表是土地类别相关的表,可用于后期的档案归属方面工作的管理,本表的结构如图4-5所示。
图4-5土地类别表设计图
土地档案管理系统的数据库存放应与传统的存档方式相似,有两种方案的选择:第一种是只有一个父表,也只有一个子表,父表中存放各层父结点,以本表自联结的方式可查询,而子表中存放所有最底层目录的文件,通过主外键的方式关联;第二种是每级目录都建一张表,多张表将文档的层次关系明确表示出来。
鉴于本设计是将该系统的部分功能实现出来,在数据量不够大的情况下选择第二种设计方式,以更直观的展现数据。而实际中将所有数据放在一个Model中的方式更加高效。
5 详细设计
5.1 登陆模块设计
Login.java
接受登录页面传送来的用户登录信息,对输入信息访问数据库判定是否允许登陆,允许则调到主页面,否则跳转回之前的登录页面。
UserServerImpl.java
继承IUserServer接口,实现login()方法,开启数据库事务,调用dao层方法,实现登录功能。
UserDaoImpl.java
继承IUserDao接口,通过对数据库的直接操作,将数据传输给上层,完成登录功能。
5.2 注册模块设计
Register.java
接受注册页面所传送来的用户注册信息,对输入的信息传给server层进行逻辑处理。
UserServerImpl.java
继承IUserServer接口,实现register()方法,开启数据库事务,调用dao层方法,实现注册功能。
UserDaoImpl.java
继承IUserDao接口,通过对数据库的直接操作,将数据传输给上层,完成注册功能。
5.3 文件查询模块设计
FindFiles.java
接受查询页面传来的土地号数据,以土地号信息为依据,调用server层的方法进行处理。
FileServerImpl.java
继承IFileServer接口,实现getAllFiles()方法,开启数据库事务,调用dao层方法,实现按土地号查询功能。在接收到dao层传回的数据后将数据传给页面显示。
UserDaoImpl.java
继承IFileDao接口,通过对数据库的直接操作,将数据传输给上层,完成查询功能。
5.4 文件添加模块设计
AddFiles.java
接受添加页面传来的土地文件信息,调用server层的方法进行处理。
FileServerImpl.java
继承IFileServer接口,实现addFile()方法,开启数据库事务,调用dao层方法,先验证数据库是否有相同信息,在没有的情况下向数据库中添加数据。并返回显示添加成功后的数据库中存储的信息。
UserDaoImpl.java
继承IFileDao接口,通过对数据库的直接操作,执行对数据库的增加操作,完成添加新文件功能。
5.5 文件修改模块设计
UpdateFiles.java
接受修改页面传来的土地文件信息,调用server层的方法进行处理。
FileServerImpl.java
继承IFileServer接口,实现addFiles1()方法,开启数据库事务,先验证对象是否为空,在非空的条件下,调用dao层的方法。并返回显示修改成功后的数据库中存储的信息。
UserDaoImpl.java
继承IFileDao接口,通过对数据库的直接操作,把新数据覆盖原始数据,完成修改文件的功能。
5.6 文件删除模块设计
DelFiles.java
接受删除文件的请求,调用server层的方法进行处理。
FileServerImpl.java
继承IFileServer接口,实现delFiles()方法,开启数据库事务,先验证对象是否为空,在非空的条件下,调用dao层的方法。并返回显示删除的结果。
UserDaoImpl.java
继承IFileDao接口,通过对数据库的直接操作,把数据删除。
6 系统实现
6.1 用户相关
6.1.1 登陆界面
登录功能介绍:
上面的截图为登录页面的一部分,通过该页面实现登录过程。当使用者有一个用户的时候,可以通过其已拥有的用户名和密码来进行登录,只有在用户名和密码都正确的时候才可以成功登陆。如果没有本系统的账户时,可以通过注册功能注册一个用户,然后通过注册完成的用户登录本系统。
系统登陆界面如图6-1所示。
图6-1登陆界面
登录功能核心代码:
Login.javapackage com.ex.web;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import com.ex.bean.Users;import mon.BeanFactory;import mon.exception.UserServiceException;import com.ex.service.imp.UserServiceImpl;public class Login extends HttpServlet {private static final long serialVersionUID = 1L;private UserServiceImpl service = (UserServiceImpl)BeanFactory.getBean("userService");public Login() {super();}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String name = request.getParameter("username");String password = request.getParameter("password");try {Users users = service.login(name, password);HttpSession session = request.getSession();session.setAttribute("users", users);request.getRequestDispatcher("/host.jsp").forward(request, response);} catch (UserServiceException e) {e.printStackTrace();request.setAttribute("message", "<script laguage='JavaScript'> alert('用户名或密码错误,请重新输入!') </script>");request.getRequestDispatcher("/login.jsp").forward(request, response);}}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}
6.1.2 注册页面
注册功能介绍:
当某人要使用本系统的时候,需要有一个账户来进行登录,登陆之后才可以进行系统的操作。当没有账户时,可以快捷的通过登录页面的注册链接进入系统的注册页面,输入一个任意的符合规则的用户名和密码,以及一些其他的个人信息。当填写完信息之后想要对已填写的信息进行重新编辑,可以点重置按钮清空已填写的信息,然后可以重新录入你个人的注册信息。注册成功后则会成功跳转到登录页面使用新注册的账户进行登录。
用户注册页面如图6-2所示。
图6-2注册页面
注册功能核心代码:
Register.java package com.ex.web;import java.io.IOException;import java.util.List;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.hibernate.Session;import com.ex.bean.Files;import com.ex.bean.Users;import mon.HibernateSessionFactory;import mon.exception.UserServiceException;import com.ex.dao.imp.UserDaoImpl;import com.ex.service.imp.UserServiceImpl;public class Register extends HttpServlet {private static final long serialVersionUID = 1L;private UserServiceImpl service = new UserServiceImpl();protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("UTF-8");String name = request.getParameter("name");String password = request.getParameter("password");String email = request.getParameter("email");String zip = request.getParameter("zip");String address = request.getParameter("address");String phonenumber = request.getParameter("phonenumber");// System.out.println(name + address + telephone);Session session = HibernateSessionFactory.getSession();List list = session.createQuery("from Users").list();Users users = new Users();users.setId(list.size()+1);users.setAddress(address);users.setEmail(email);users.setPassword(password);users.setName(name);users.setZip(zip);users.setPhoneNumber(phonenumber);try {service.register(users);request.getRequestDispatcher("/login.jsp").forward(request,response);} catch (UserServiceException e) {request.getRequestDispatcher("/register.jsp").forward(request,response);e.printStackTrace();}}protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}
6.2 档案相关
6.2.1 档案列举
代码列举功能的介绍:
在左侧的导航树中点击想要查询的文件档案分类的模块,进入其功能的详细显示页面。在这个页面上将直接显示本分类下所有文件的基本信息,通过对于本页面显示的文件档案的简要信息,了解其基本信息之后可以进行后续操作。比如要进行档案的查询时需要先知道其土地号,通过土地号来进行土地档案的查询。
档案列表页面如图6-3所示。
图6-3档案列表
档案列举功能核心代码:
java.sql.Connection sqlCon; java.sql.Statement sqlStmt; java.sql.ResultSet sqlRst; java.lang.String strCon; java.lang.String strSQL; int intPageSize; int intRowCount;int intPageCount; int intPage; java.lang.String strPage;int i;intPageSize = 5;strPage = request.getParameter("page");if(strPage==null){intPage = 1;}else{intPage = java.lang.Integer.parseInt(strPage);if(intPage<1) intPage = 1;}java.sql.DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());strCon = "jdbc:oracle:thin:@localhost:1521:orcl";sqlCon = java.sql.DriverManager.getConnection(strCon,"dsg","dsg");sqlStmt=sqlCon.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);strSQL = "select gnum,squre,type,usedfor,people,location from files";sqlRst = sqlStmt.executeQuery(strSQL);sqlRst.last();intRowCount = sqlRst.getRow();intPageCount = (intRowCount+intPageSize-1) / intPageSize;if(intPage>intPageCount) intPage = intPageCount;%><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>档案分页显示</title></head><body><table border="1" cellspacing="0" cellpadding="0"><tr><th>土地号</th><th>面积(单位:平方米)</th><th>土地类型</th><th>土地用途</th><th>拥有者</th><th>地址</th></tr><% if(intPageCount>0){sqlRst.absolute((intPage-1) * intPageSize + 1);i = 0;while(i<intPageSize && !sqlRst.isAfterLast()){%><tr><td width="150" align="center"><%=sqlRst.getString(1)%></td><td width="150" align="center"><%=sqlRst.getString(2)%></td><td width="150" align="center"><%=sqlRst.getString(3)%></td><td width="150" align="center"><%=sqlRst.getString(4)%></td><td width="150" align="center"><%=sqlRst.getString(5)%></td><td width="150" align="center"><%=sqlRst.getString(6)%></td></tr><%sqlRst.next();i++;}}%></table>第<%=intPage%>页 共<%=intPageCount%>页 <%if(intPage<intPageCount){%><a href="sele.jsp?page=<%=intPage+1%>">下一页</a><%}%> <%if(intPage>1){%><a href="sele.jsp?page=<%=intPage-1%>">上一页</a><%}%></body></html><% sqlRst.close();sqlStmt.close();sqlCon.close(); %>
6.2.2 档案查询
土地档案查询功能的介绍:
一般情况下要进行土地档案查询的时候,都要先知道土地号的。在已经知道土地号的情况下,输入要查询的土地档案的土地号,如果该土地档案在系统中存在,则会显示其具体的土地档案信息。若是不存在的话,则不会显示任何信息。在查询的结果的页面有修改和删除的相关功能的按钮,对于已经查询到的文件档案信息要进行修改或者删除的操作是可以通过其按钮进行操作。
先对土地档案进行查询操作,通过查询页面输入要查询的档案的土地号,进行查询,档案查询页面如图6-4所示。
图6-4档案查询
在输入要查询的土地号之后,进入档案的查询结果页面查看其具体信息,查询结果如图6-5所示。
图6-5档案查询结果
档案查询功能核心代码:
Findfiles.javapackage com.ex.web;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import org.apache.catalina.startup.SetAllPropertiesRule;import com.ex.bean.Files;import mon.exception.UserServiceException;import com.ex.service.imp.FileServiceImpl;public class FindFiles extends HttpServlet {private static final long serialVersionUID = 1L;private FileServiceImpl service = new FileServiceImpl();protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String gNum = request.getParameter("tudi");Files files = new Files();files.setGnum(gNum);try{Files files2= service.getAllFiles(files);request.setAttribute("files", files2);request.getRequestDispatcher("/queryrs.jsp").forward(request, response);}catch(Exception e){e.printStackTrace();request.setAttribute("message1", "<script laguage='JavaScript'> alert('文件不存在') </script>");request.getRequestDispatcher("/query.jsp").forward(request, response);}}public FindFiles() {}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request,response);}}
6.2.3 档案修改
档案修改功能的介绍:
在文件档案查询的页面完成档案的查询之后,点击修改,会将查到的档案的所有信息传到页面的修改页面,然后在其本来的信息的基础上进行修改,只需要在原有的基础上进行自己想进行的修改,修改完成之后提交,通过档案土地号在查询页面中进行查询,则可看到其修改后的信息。
档案修改页面如图6-6所示。
图6-6档案修改
档案修改功能核心代码:
UpdateFiles.javapackage com.ex.web;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.ex.bean.Files;import mon.exception.UserServiceException;import com.ex.service.imp.FileServiceImpl;public class UpdateFiles extends HttpServlet {private static final long serialVersionUID = 1L;private FileServiceImpl service = new FileServiceImpl();protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("UTF-8");String pid = request.getParameter("flh");String gnum = request.getParameter("tdh");String squre = request.getParameter("mj");String type = request.getParameter("lx"); String usedfor = request.getParameter("tdyt");String people = request.getParameter("yyz");String location = request.getParameter("wz");String whenuse = request.getParameter("kssysj");String remark = request.getParameter("bz");String content = request.getParameter("nr");Files files = new Files();files.setPid(pid);files.setGnum(gnum);files.setSqure(squre);files.setType(type);files.setUsedfor(usedfor);files.setPeople(people);files.setLocation(location);files.setWhenuse(whenuse);files.setRemark(remark);files.setContent(content);try{service.addFiles(files);request.getRequestDispatcher("/query.jsp").forward(request, response);}catch(UserServiceException e){//request.getRequestDispatcher("/register.jsp").forward(request, response);e.printStackTrace();}}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request,response);}}
6.2.4 档案删除
档案删除功能介绍:
在查询到要查询的档案信息之后,通过其页面下方的删除按钮,完成是否删除的提示框确认之后,可完成对文件档案的删除。在查询页面对刚才删除的档案进行查询,删除成功后将不会显示刚才的文件信息。
档案删除页面如图6-7所示。
图6-7档案删除
档案删除功能核心代码:
DelFiles.javapackage com.ex.web;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import org.apache.catalina.startup.SetAllPropertiesRule;import com.ex.bean.Files;import mon.exception.UserServiceException;import com.ex.service.imp.FileServiceImpl;public class DelFiles extends HttpServlet {private static final long serialVersionUID = 1L;private FileServiceImpl service = new FileServiceImpl();protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {String gNum = request.getParameter("tdh");Files files = new Files();files.setGnum(gNum);Files files2 = service.getAllFiles(files);if (!files2.equals(null)) {try {service.delFiles(files2);request.getRequestDispatcher("/query.jsp").forward(request,response);} catch (Exception e) {e.printStackTrace();}} elserequest.getRequestDispatcher("/queryrs.jsp").forward(request,response);;}protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}
6.2.5 档案添加
档案添加功能的介绍:
如果要进行档案的添加,点击档案的添加按钮,进入档案添加页面,通过输入要添加的档案信息,可以完成对档案的添加。其中的分类号是档案所属类的序号,每一类的档案拥有同一个序号。其中分类号、土地号和面积是非空的,因为每个土地信息这三个方面的信息是必不可少的。
档案添加页面如图6-8所示。
图6-8档案添加
档案添加功能核心代码:
AddFiles.javapackage com.ex.web;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.ex.bean.Files;import mon.exception.UserServiceException;import com.ex.service.imp.FileServiceImpl;public class AddFiles extends HttpServlet {private static final long serialVersionUID = 1L;private FileServiceImpl service = new FileServiceImpl();protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("UTF-8");String pid = request.getParameter("flh");String gnum = request.getParameter("tdh");String squre = request.getParameter("mj");String type = request.getParameter("lx"); String usedfor = request.getParameter("tdyt");String people = request.getParameter("yyz");String location = request.getParameter("wz");String whenuse = request.getParameter("kssysj");String remark = request.getParameter("bz");String content = request.getParameter("nr");Files files = new Files();files.setGnum(gnum);Files files2= service.getAllFiles(files);if(files2.equals(null)){files.setPid(pid);files.setSqure(squre);files.setType(type);files.setUsedfor(usedfor);files.setPeople(people);files.setLocation(location);files.setWhenuse(whenuse);files.setRemark(remark);files.setContent(content);try{service.addFiles1(files);request.getRequestDispatcher("/queryrs.jsp").forward(request, response);}catch(UserServiceException e){//request.getRequestDispatcher("/register.jsp").forward(request, response);e.printStackTrace();}}else{files2.setPid(pid);files2.setSqure(squre);files2.setType(type);files2.setUsedfor(usedfor);files2.setPeople(people);files2.setLocation(location);files2.setWhenuse(whenuse);files2.setRemark(remark);files2.setContent(content);try{service.addFiles1(files2);request.setAttribute("files", files2);request.getRequestDispatcher("/queryrs.jsp").forward(request, response);}catch(UserServiceException e){//request.getRequestDispatcher("/register.jsp").forward(request, response);e.printStackTrace();}}}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request,response);}}
6.2.6 报表功能
在数据库中的数据存放表只占到很小的一部分,而大多数的业务处理应用到的是视图,以下是其中统计同一个人在不同地区土地面积的报表,只有不少于2块土地的人才会出现在记录中。
报表结果如图6-9所示。
图6-9 报表图
以下是该视图的设计代码:
create or replace view baobiao asselect people,sum(decode(location,'山西省太原市小店区',squre,null)) as xd,sum(decode(location,'山西省太原市迎泽区',squre,null)) as yz,sum(decode(location,'山西省太原市晋源区',squre,null)) as jyfrom filesgroup by peoplehaving count(people)>1;
6.3 Service层的实现
6.3.1 Service层实现介绍
下面介绍的文件处理相关的Service层。这一层的方法是由Servlet调用的。就拿文件处理相关的FileServiceImpl.java来说,通过判断Servlet中调用的方法,然后执行调用持久层的方法,来实现与数据库的交互。而与数据库的交互的的持久层方法并不是在这里实现的。
6.3.2 Service层实现的相关代码
FileServiceImpl.javapackage com.ex.service.imp;import java.util.Map;import javax.servlet.http.HttpSession;import com.ex.bean.Files;import com.ex.bean.Users;import mon.exception.UserServiceException;import mon.transaction.HibernateTransaction;import com.ex.dao.imp.UserDaoImpl;import com.ex.dao.imp.FileDaoImpl;import com.ex.service.iFileServer;public class FileServiceImpl implements iFileServer{private FileDaoImpl dao = new FileDaoImpl();public Files getAllFiles(Files files){HibernateTransaction ht = new HibernateTransaction();ht.beginTransaction();Files files2 =new Files();try {files2 = dao.findFilesByGnum(files.getGnum());} catch (Exception e) {e.printStackTrace();}return files2;}public void addFiles(Files files) throws UserServiceException {HibernateTransaction ht = new HibernateTransaction();ht.beginTransaction();try {Files files2 = dao.findFilesByGnum(files.getGnum());if (files2 != null) {throw new UserServiceException("已经存在");}dao.saveOrupdateFiles(files);mit();} catch (Exception e) {ht.rollback();e.printStackTrace();throw new UserServiceException("失败");}}public void addFiles1(Files files) throws UserServiceException {HibernateTransaction ht = new HibernateTransaction();ht.beginTransaction();try {Files files2 = dao.findFilesByGnum(files.getGnum());dao.saveOrupdateFiles1(files);mit();} catch (Exception e) {ht.rollback();e.printStackTrace();throw new UserServiceException("失败");}}public void delFiles(Files files) throws UserServiceException {HibernateTransaction ht = new HibernateTransaction();ht.beginTransaction();try {Files files2 = dao.findFilesByGnum(files.getGnum());dao.deleteFiles(files2);mit();} catch (Exception e) {ht.rollback();e.printStackTrace();throw new UserServiceException("失败");}}}
6.4 持久层的实现
6.4.1 持久层功能实现的介绍
持久层则是实现数据的持久化,完成数据在数据库中的增删改查还是要靠这一层的方法。这里是直接调用底层的方法,并没有自己专门去实现这些方法,这些方法就可以由service来调用最终实现数据的持久化。下面的的代码是文件档案相关的数据持久代码。
6.4.2 持久层实现的代码
package com.ex.dao.imp;import java.util.HashMap;import java.util.List;import java.util.Map;import org.hibernate.Session;import com.ex.bean.Files;import com.ex.bean.Users;import mon.HibernateSessionFactory;import com.ex.dao.IFileDao;public class FileDaoImpl implements IFileDao{public void saveOrupdateFiles(Files files) throws Exception {Session session = HibernateSessionFactory.getSession();session.save(files);}public void saveOrupdateFiles1(Files files) throws Exception {Session session = HibernateSessionFactory.getSession();session.update(files);}public void deleteFiles(Files files) throws Exception {Session session = HibernateSessionFactory.getSession();session.delete(files);}public Files findFilesByGnum(String gNum) throws Exception {Session session = HibernateSessionFactory.getSession();List list = session.createQuery("from Files where gNum= ?").setString(0, gNum).list();if (list.size() != 0) {return (Files) list.get(0);} else {return null;}} }
7 测试
7.1 测试目的
省略
7.2 测试原则
省略
7.3 测试内容
省略
7.4 测试过程
7.4.1 登录模块
登陆模块的等价类划分如表7-1所示。
表7-1 登录等价类划分
登陆模块为等价类设计测试用例如表7-2所示。
表7-2 登录测试用例
7.4.2 查询模块
查询模块的等价类划分如表7-3所示。
表7-3 查询等价类
查询模块为等价类设计测试用例如表7-4所示。
表7-4 查询测试用例
7.5 测试结果
7.5.1 功能性
现在的系统基本实现了登陆、注册和文件档案的管理,但是对于权限先关的设计使得功能上有所缺陷
7.5.2 易用性
增删改查的操作比较方便。
登陆界面还算可以,但是其他的页面还比较简单。
输入的内容缺乏解释性注释。
结 论
作为典型的档案管理系统,本土地档案管理系统实现了基本的登录、注册、档案查询、档案修改、档案增添、档案删除的经典功能,而正式使用的土地档案管理系统无外乎就是这些核心的功能在做多种优化以及个性化的功能而实现的。
省略
省略
参考文献
[1] 陈天培. 建立动态化土地档案 实现土地信息合理流转[J]. 河南农业. (11)
[2] 李淑琴,陈秀梅. 浅析土地档案信息资源开发与利用[J]. 内蒙古科技与经济. (09)
[3] 张玲玲 .深入体验Java Web项目开发[M].清华大学出版社.(07)
[4] 韩义亭,张成宇. SSH架构及其在Web开发中的应用[J]. 网络安全技术与应用. (10)
[5] 张玉华,段德亮. 第二次土地调查省级数据库方案探讨[J]. 地理空间信息. (S1)
[6] 张洪斌.例解JAVA WEB开发技术精髓[M].清华大学出版社.(10)
[7] Eric Armstrong .The Java Web services tutorial [M].Beijing : Higher Education Press..
[8] Bruce Eckel.Thinking in Java[M].Prentice Hall.(02)
[9] Craig Walls,Ryan VreidenBach.Spring In Action[M].Manning Publication.
[10] Joshua Bloch.Effective Java[M].Piscataway,N.J:IEEE Press.
致 谢
省略
外文原文
省略
外文翻译
省略
5、源码下载:
本项目源码及论文如下,有需要的朋友可以点击进行下载。如果链接失效可点击下方卡片扫码自助下载。
【java毕业设计】基于javaEE+SSH+oracle的土地档案管理系统设计与实现(毕业论文+程序源码)——土地档案管理系统