土地档案管理关系[源码+文档]

目录

摘  要

Abstract

1  绪论

1.1  可行性研究编写目的

1.2  项目背景

1.3  土地管理现状

1.4  土地档案管理研究方向

1.5  项目目标

1.6  项目设计原则

1.6.1  实用性原则

1.6.2  经济性原则

1.6.3  合法性原则

2  相关技术介绍

2.1  三层架构的选择

2.2  编程语言的选择

2.3  主要技术、框架的选择

2.4  数据库的选择

2.5  技术选择方向

3  需求分析

3.1  编写目的

3.2  系统需求分析简述

3.3  系统需求分析详细描述

3.3.1  用户管理模块

3.3.2  文件查找模块

3.3.3  文件添加模块

3.3.4  文件修改模块

3.3.5  文件删除模块

4  总体设计

4.1  系统功能模块结构设计

4.2  数据库设计

5  详细设计

5.1  登陆模块设计

5.2  注册模块设计

5.3  文件查询模块设计

5.4  文件添加模块设计

5.5  文件修改模块设计

5.6  文件删除模块设计

6  系统实现

6.1  用户相关

6.1.1  登陆界面

6.1.2  注册页面

6.2  档案相关

6.2.1  档案列举

6.2.2  档案查询

6.2.3  档案修改

6.2.4  档案删除

6.2.5  档案添加

6.2.6  报表功能

6.3  Service层的实现

6.3.1  Service层实现介绍

6.3.2  Service层实现的相关代码

6.4  持久层的实现

6.4.1  持久层功能实现的介绍

6.4.2  持久层实现的代码

7  测试

7.1  测试目的

7.2  测试原则

7.3  测试内容

7.4  测试过程

7.4.1  登录模块

7.4.2  查询模块

7.5  测试结果

7.5.1  功能性

7.5.2  易用性

结    论

参考文献

致    谢

外文原文

外文翻译

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所示。


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.java

package 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 com.ex.common.BeanFactory;

import com.ex.common.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 com.ex.common.HibernateSessionFactory;

import com.ex.common.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.java

package 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 com.ex.common.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.java

package 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 com.ex.common.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.java

package 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 com.ex.common.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();

}

} else

request.getRequestDispatcher("/queryrs.jsp").forward(request,

response);;

}

protected void doPost(HttpServletRequest request,

HttpServletResponse response) throws ServletException, IOException {

doGet(request, response);

}

}

6.3  Service层的实现

6.3.1  Service层实现介绍

下面介绍的文件处理相关的Service层。这一层的方法是由Servlet调用的。就拿文件处理相关的FileServiceImpl.java来说,通过判断Servlet中调用的方法,然后执行调用持久层的方法,来实现与数据库的交互。而与数据库的交互的的持久层方法并不是在这里实现的。

6.3.2  Service层实现的相关代码

FileServiceImpl.java

package com.ex.service.imp;

import java.util.Map;

import javax.servlet.http.HttpSession;

import com.ex.bean.Files;

import com.ex.bean.Users;

import com.ex.common.exception.UserServiceException;

import com.ex.common.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);

ht.commit();

} 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);

ht.commit();

} 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);

ht.commit();

} 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 com.ex.common.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;

}

}

}


结    论

土地档案系统作为将传统的纸质化档案管理方式进行数字化电子化的一项工程,将人类历史上的传承千年的档案管理工作进行数字化的封装,将土地档案管理工作进行了优化,在档案的查询、修改、删除等方面带来了极大的便利。

作为典型的档案管理系统,本土地档案管理系统实现了基本的登录、注册、档案查询、档案修改、档案增添、档案删除的经典功能,而正式使用的土地档案管理系统无外乎就是这些核心的功能在做多种优化以及个性化的功能而实现的。当然,从目前所实现的功能来说,当然不得以支撑正式的土地档案管理工作的日常实现,在日常的土地档案管理工作中,结合其实际当然少不了对于权限的设置,比如在各级地方的土地档案查阅权限是不尽相同的;再如现在的GPS定位系统的结合,使得在土地勘查工作的结果能够直接进入土地档案管理系统之中,为土地将两份工作有机地结合起来,简化了工作流程,节省了人力物力;又如土地档案的存储并不是简单地通过前台的页面直接录入系统,而是要经过层层的审核,在审核无误之后才能成功存入系统。但是,复杂的工作带来极大的工作量,以及现在的技能水平还无法达到这一层次的水平,所以现在实现其核心功能,以为以后的设计打下夯实的基础。

对于整个系统来说,页面的设计并不是难点,但是想要做成让人赏心悦目的效果还是简单的,鉴于时间有限,在登录页面做出较多效果,其他页面进行略微调整。而对于系统的逻辑结构,基于MVC模式的开发并且使用Hibernate将系统的层次性以及代码的层次性清晰地呈现了出来,在开发过程中只是略微体现其好处,只是感觉代码的结构很漂亮。待到系统基本实现的时候,对系统进行细节性的调整的,很快地就找到了相应的代码方位,而且在修改的过程当中,应为逻辑的层层分离,不会因为一点点的东西带来大的问题,这就是提高可读性带来的好处。

当然,作为一个档案管理系统,当然上不了对数据的处理,简单地来说就是包括增删改查。之前完成过的设计使用的是SQL SERVER或者MYSQL这样商业化程度低或者小型的数据库,而这次有机会接触并实际操作商业化程度高的大型数据库Oracle,对数据库也有了更加深刻的认识。

通过对于Oracle的实际操作以及实际应用,已经把初始认为的只是用来存放数据的一个东西得到了改变。它并不仅仅是一个存放数据的东西,当然存放数据是其核心功能。数据库编程,能为程序带来意想不到的效果。

就拿当前完成的土地档案系统来说,也只是简单的实现了利用Oracle来存放档案信息,仅仅是放进去而已。虽然数据库中已经建好了部分权限的相关的表,但是目前还没有启用。现在的主流的系统都是将数据持久层架设在Linux上的,鉴于Linux的特性,如果把数据处理的过程放在数据库中进行(比如一个Procedure),这样可以极大地减轻本地资源的消耗,而这看似简单的实现不仅仅减少了服务端的资源浪费,还使得客户端的资源得到极大的施放,毕竟现在使用相关软件的终端并不是配置很高的终端,所以需要这样的优化来为系统的使用带来更大的便利。

而作为这样的一个系统,土地档案管理系统在使用的过程中避免不了升级优化或者开发新系统。这样就无可避免的要进行数据迁移相关的工作。对于数据迁移工作来说,其复杂程度是和之前系统的设计的好坏成正比的。合理的、意义明确的系统,将为后期工作带来极大的便利,而随意而为之的系统将为后来的工作带来极大的隐患。比如,表名是随便起的,这样在实施迁移的时候就会使得很难去对应数据,使得更多的时间是去跟业务人员做不必的交流,会是整个项目的跨度加长,并不利于其开发。

还有在开发出的系统中,由于逻辑或者未知的原因,往往造成数据出错或者丢失之类的情况。而数据实施相关的工作又能解决很多开发遗留的的问题或者突发性问题。所以,对于这个土地档案管理系统,可以将部分的精力置于数据库的设计上,可以把部分的逻辑处理放在数据库中,只要在代码中调用这样的存储过程,这样既减少了代码开发人员的工作,又使得系统得以优化。

对于传统的土地档案管理工作有一定的了解,知道其在实际操作中在很大的仓库进行调阅是一个很繁杂的工作,而且经常因为工作人员的原因而无法及时查阅,造成的很大的不便。而当前电子化的土地档案管理系统虽说在也在用,但是目前只限于一线城市、二线城市,而对于更低行政等级的,却是更需要这样的系统,但是却没有得到普及,因为低行政等级的才是最直接接触的到基本土地档案的单位。而且现在的很多类似系统功能设计的非常的完善,但是80%的功能在实际应用中并不能狗被使用到。所以,一个功能更简单更适合实际应用的、操作起来更简单的系统才是真正需要的。所以朝着这个方向进行开发才是正确的方向,只有实用的的才是需要的,并不是说它的功能有多么全面有多么好就真真正正的时候好的。


参考文献

[1]   陈天培. 建立动态化土地档案 实现土地信息合理流转[J]. 河南农业. 2011(11)

[2]   李淑琴,陈秀梅. 浅析土地档案信息资源开发与利用[J]. 内蒙古科技与经济. 2011(09)

[3]   张玲玲 .深入体验Java Web项目开发[M].清华大学出版社2011.(07) 

[4]   韩义亭,张成宇. SSH架构及其在Web开发中的应用[J]. 网络安全技术与应用. 2007(10)

[5]   张玉华,段德亮. 第二次土地调查省级数据库方案探讨[J]. 地理空间信息. 2009(S1)

[6]   张洪斌.例解JAVA WEB开发技术精髓[M].清华大学出版社.2008(10) 

[7]   Eric Armstrong .The Java Web services tutorial [M].Beijing : Higher Education Press.2003.

[8]   Bruce Eckel.Thinking in Java[M].Prentice Hall.2006(02)

[9]   Craig Walls,Ryan VreidenBach.Spring In Action[M].Manning Publication.2006

[10]  Joshua Bloch.Effective Java[M].Piscataway,N.J:IEEE Press.2009


致    谢

作者在设计(论文)期间都是在全面、具体指导下完成进行的。老师渊博的学识、敏锐的思维、民主而严谨的作风使学生受益非浅,并终生难忘。

感谢老师在毕业设计工作中给予的帮助。

    感谢我的学友和朋友对我的关心和帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/64406.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用C语言编写UDP循环接收并打印消息的程序

使用C语言编写UDP循环接收并打印消息的程序 前提条件程序概述伪代码C语言实现编译和运行C改进之自由设定端口注意事项在本文中,我们将展示如何使用C语言编写一个简单的UDP服务器程序,该程序将循环接收来自指定端口的UDP消息,并将接收到的消息打印到控制台。我们将使用POSIX套…

Audiocraft智能音频和音乐生成工具部署及使用

1、概述 Facebook开源了一款名为AudioCraft的AI音频和音乐生成工具。 该工具可以直接从文本描述和参考音乐生成高质量的音频和音乐。AudioCraft包含MusicGen、AudioGen和EnCodec三个模型&#xff0c;分别实现音乐生成、音频生成和自定义音频模型构建。 2、项目地址 https://…

vulnhub靶场【DriftingBlues】之7

前言 靶机&#xff1a;DriftingBlues-6&#xff0c;IP地址192.168.1.65 攻击&#xff1a;kali&#xff0c;IP地址192.168.1.16 都采用虚拟机&#xff0c;网卡为桥接模式 主机发现 使用arp-scan -l或netdiscover -r 192.168.1.1/24 信息收集 使用nmap扫描端口 SSH服务&…

SCAU期末笔记 - Linux系统应用与开发教程样卷解析(2024版)

我真的不理解奥&#xff0c;为什么会有给样卷不自带解析的&#xff0c;对答案都没得对&#xff0c;故整理一篇 样卷1 一、选择题 1、为了遍历shell脚本调用时传入的参数&#xff0c;需要在shell脚本中使用_____。 A.$#表示参数的个数B.S表示所有参数C.$0表示脚本名D.$1表示…

spring\strust\springboot\isp前后端那些事儿

后端 一. 插入\更新一条数据&#xff08;老&#xff09; Map<String, Object> parameterMap MybatisUtil.initParameterSave("Send_ProjectFrozenLog", sendProjectFrozenLog); commonMapper.insert(parameterMap);parameterMap MybatisUtil.initParameter…

对golang的io型进程进行off-cpu分析

背景&#xff1a; 对于不能占满所有cpu核数的进程&#xff0c;进行on-cpu的分析是没有意义的&#xff0c;因为可能程序大部分时间都处在阻塞状态。 实验例子程序&#xff1a; 以centos8和golang1.23.3为例&#xff0c;测试下面的程序&#xff1a; pprof_netio.go package m…

CSS Grid 布局:属性及使用详解

CSS Grid 布局&#xff1a;属性及使用详解 一、CSS Grid 布局的基础概念二、主要的 CSS Grid 属性1、display: grid / display: inline-grid声明 Grid 容器2、grid-template-columns / grid-template-rowsGrid 容器中列和行的尺寸3、 grid-template-areas命名布局区域4、gap/ g…

【数学建模】利用Matlab绘图(2)

一、Matlab中plot函数的基本用法 在matlab中&#xff0c;函数的基本用法主要包括以下几种 第一类&#xff1a; plot(X,Y,LineSpec) 第二类&#xff1a; plot(tbl,xvar,yvar) 1.1 第一类 1.1.1x-y坐标 x和y的选择取决于绘图所需的数据类型以及图像的类型。下表列出了几种…

编写工具模块

文章目录 1.新建模块1.新建模块sun-common-tool2.sun-dependencies指定依赖3.sun-common统一管理sun-common-tool子模块4.sun-common-tool的pom.xml5.清除掉创建模块时默认sun-frame对sun-common-tool进行管理 2.常用工具类1.DateUtils.java2.EncodeUtils.java3.IpUtils.java4.…

构建一个rust生产应用读书笔记四(实战3)

从这一节开始&#xff0c;我们将继续完善邮件订阅生产级应用&#xff0c;根据作者的选型sqlx作为数据库操作的类库&#xff0c;它有如下优点&#xff1a; 它旨在提供高效、安全且易于使用的数据库交互体验。sqlx 支持多种数据库&#xff0c;包括 PostgreSQL、MySQL 和 SQLite&…

视频直播点播平台EasyDSS推拉流技术结合无人机推流在道路交通巡检场景中的应用

随着城市化进程的加速&#xff0c;交通网络日益复杂&#xff0c;交通巡检工作面临着前所未有的挑战。传统的巡检方式往往依赖于人工巡查或地面监控设备&#xff0c;但这些方法存在巡检范围有限、效率低下等缺点。 无人机凭借其高空视野、灵活机动、实时监控等优势&#xff0c;…

VBA技术资料MF238:ADO提取多文件区域指定数据到工作表

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套&#xff0c;分为初级、中级、高级三大部分&#xff0c;教程是对VBA的系统讲解&#…

Mapper代理开发

引入 Mybatis入门方式中&#xff0c;以下代码仍存在硬编码问题 Mapper 代理开发&#xff1a; 目的&#xff1a; 解决原生方式中的硬编码 简化后期执行sql ------下图中&#xff0c;第一段代码是原生硬编码代码块&#xff0c;第二个是引入了Mapper代理开发的代码块。 Mapper代…

ubuntu22.04编译安装Opencv4.8.0+Opencv-contrib4.8.0教程

本章教程,主要记录在Ubuntu22.04版本系统上编译安装安装Opencv4.8.0+Opencv-contrib4.8.0的具体过程。 一、下载opencv和opencv-contrib包 wget https://github.com/opencv/opencv/archive/refs/tags/4.8.0.zip wget https://github.com/opencv/opencv_contrib/archive/refs/…

使用C语言连接MySQL

库的准备 要使用C语言连接mysql&#xff0c;需要使用mysql官网提供的connect库&#xff0c;可以去官网下载&#xff0c;由于我们要下载到 Linux 操作系统中&#xff0c;也可以使用如下指令进行安装库 sudo apt-get install libmysqlclient-dev MySQL连接C/C的库通常会安装在/us…

【Android学习】RxJava

文章目录 资料连接1. Merge & Zip操作符: 合并数据源2. Map & FlapMap & ConcatMap & Buffer: 变换操作符3. retry & retryUntil & retryWhen : 错误处理操作符4. Transformer & Compose 转换操作符5. 网络请求嵌套回调 FlatMap6. 网络请求出错重连…

Mac配置 Node镜像源的时候报错解决办法

在Mac电脑中配置国内镜像源的时候报错,提示权限问题,无法写入配置文件。本文提供解决方法,青测有效。 一、原因分析 遇到的错误是由于 .npm 目录下的文件被 root 用户所拥有,导致当前用户无法写入相关配置文件。 二、解决办法 在终端输入以下命令,输入管理员密码即可。 su…

PyTorch基础入门

目录 前言一、[张量的广播&基本运算](https://www.bilibili.com/video/BV1Gg411u7Lr/?spm_id_from333.999.0.0)1. 张量的广播特性2. 逐点&规约&比较运算 二、张量的线性代数运算1. BLAS & LAPACK2. 矩阵形变及特殊矩阵构造3. 矩阵基本运算4. 矩阵的线性代数运…

【VSCode】常用插件汇总

1 Path Autocomplete&#xff08;路径提示的插件&#xff09; 步骤一&#xff1a;在vscode的扩展搜索中直接搜索Path Autocomplete&#xff0c;直接安装 步骤二&#xff1a;配置 配置 VS Code settings.json "path-autocomplete.pathMappings": {"": &q…

IOS通过WDA自动化中遇到的问题

IOS自动化遇到的问题 搭建WDA环境中遇到的问题1、XCode unsupport iphone xxx.2、创建Bundle Identifier出现问题&#xff1a;Communication with Apple failed3、创建Bundle Identifier出现问题&#xff1a;Automatic signing failed \Signing certificate is invalid4、创建B…