国土局土地档案管理软件系统(Java+SSH+MySQL)

旧城等待, 2024-04-01 16:00 122阅读 0赞

目录
摘 要 i
Abstract ii
1 绪论 1
1.1 可行性研究编写目的 1
1.2 项目背景 1
1.3 土地管理现状 1
1.4 土地档案管理研究方向 2
1.5 项目目标 2
1.6 项目设计原则 3
1.6.1 实用性原则 3
1.6.2 经济性原则 3
1.6.3 合法性原则 3
2 相关技术介绍 4
2.1 三层架构的选择 4
2.2 编程语言的选择 5
2.3 主要技术、框架的选择 6
2.4 数据库的选择 7
2.5 技术选择方向 7
3 需求分析 9
3.1 编写目的 9
3.2 系统需求分析简述 9
3.3 系统需求分析详细描述 9
3.3.1 用户管理模块 9
3.3.2 文件查找模块 9
3.3.3 文件添加模块 9
3.3.4 文件修改模块 10
3.3.5 文件删除模块 10
4 总体设计 11
4.1 系统功能模块结构设计 11
4.2 数据库设计 11
5 详细设计 14
5.1 登陆模块设计 14
5.2 注册模块设计 14
5.3 文件查询模块设计 14
5.4 文件添加模块设计 15
5.5 文件修改模块设计 15
5.6 文件删除模块设计 15
6 系统实现 16
6.1 用户相关 16
6.1.1 登陆界面 16
6.1.2 注册页面 17
6.2 档案相关 19
6.2.1 档案列举 19
6.2.2 档案查询 22
6.2.3 档案修改 24
6.2.4 档案删除 26
6.2.5 档案添加 27
6.2.6 报表功能 30
6.3 Service层的实现 30
6.3.1 Service层实现介绍 30
6.3.2 Service层实现的相关代码 31
6.4 持久层的实现 32
6.4.1 持久层功能实现的介绍 32
6.4.2 持久层实现的代码 32
7 测试 34
7.1 测试目的 34
7.2 测试原则 34
7.3 测试内容 34
7.4 测试过程 35
7.4.1 登录模块 35
7.4.2 查询模块 35
7.5 测试结果 36
7.5.1 功能性 36
7.5.2 易用性 36
结 论 37
参考文献 39
致 谢 40
外文原文 41
外文翻译 47
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系统总体功能框架图
2.5 技术选择方向
在日常的实际数据库操作中,因为数据库架设在服务器上,而服务器的处理能力远优于客户端的处理能力,所以更多地把逻辑放在服务端将成为趋势,而存储过程就是其中一个常用的项目。
存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。
在大型数据库系统中,存储过程和触发器具有很重要的作用。无论是存储过程还是触发器,都是SQL 语句和流程控制语句的集合。就本质而言,触发器也是一种存储过程。存储过程在运算时生成执行方式,所以,以后对其再运行时其执行速度很快。SQL Server 2005 不仅提供了用户自定义存储过程的功能,而且也提供了许多可作为工具使用的系统存储过程。
同样,触发器也是很重要的对象。
触发器是一种特殊类型的存储过程,它不同于我们前面介绍过的存储过程。触发器主要是通过事件进行触发而被执行的,而存储过程可以通过存储过程名字而被直接调用。当对某一表进行诸如Update、 Insert、 Delete 这些操作时,SQL Server 就会自动执行触发器所定义的SQL 语句,从而确保对数据的处理必须符合由这些SQL 语句所定义的规则。
触发器的主要作用就是其能够实现由主键和外键所不能保证的复杂的参照完整性和数据的一致性。除此之外,触发器还有其它许多不同的功能:
(1) 强化约束(Enforce restriction)
触发器能够实现比CHECK 语句更为复杂的约束。
(2) 跟踪变化Auditing changes
触发器可以侦测数据库内的操作,从而不允许数据库中未经许可的指定更新和变化。
(3) 级联运行(Cascaded operation)。
触发器可以侦测数据库内的操作,并自动地级联影响整个数据库的各项内容。例如,某个表上的触发器中包含有对另外一个表的数据操作(如删除,更新,插入)而该操作又导致该表上触发器被触发。
(4) 存储过程的调用(Stored procedure invocation)。
为了响应数据库更新,触发器可以调用一个或多个存储过程,甚至可以通过外部过程的调用而在DBMS(数据库管理系统)本身之外进行操作。
由此可见,触发器可以解决高级形式的业务规则或复杂行为限制以及实现定制记录等一些方面的问题。例如,触发器能够找出某一表在数据修改前后状态发生的差异,并根据这种差异执行一定的处理。此外一个表的同一类型(Insert、 Update、 Delete)的多个触发器能够对同一种数据操作采取多种不同的处理。
总体而言,触发器性能通常比较低。当运行触发器时,系统处理的大部分时间花费在参照其它表的这一处理上,本文转载自http://www.biyezuopin.vip/onews.asp?id=11185因为这些表既不在内存中也不在数据库设备上,而删除表和插入表总是位于内存中。可见触发器所参照的其它表的位置决定了操作要花费的时间长短。

  1. 档案列举功能核心代码:
  2. java.sql.Connection sqlCon;
  3. java.sql.Statement sqlStmt;
  4. java.sql.ResultSet sqlRst;
  5. java.lang.String strCon;
  6. java.lang.String strSQL;
  7. int intPageSize;
  8. int intRowCount;
  9. int intPageCount;
  10. int intPage;
  11. java.lang.String strPage;
  12. int i;
  13. intPageSize = 5;
  14. strPage = request.getParameter("page");
  15. if(strPage==null){
  16. intPage = 1;
  17. }
  18. else{
  19. intPage = java.lang.Integer.parseInt(strPage);
  20. if(intPage<1) intPage = 1;
  21. }
  22. java.sql.DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
  23. strCon = "jdbc:oracle:thin:@localhost:1521:orcl";
  24. sqlCon = java.sql.DriverManager.getConnection(strCon,"dsg","dsg");
  25. sqlStmt=sqlCon.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
  26. strSQL = "select gnum,squre,type,usedfor,people,location from files";
  27. sqlRst = sqlStmt.executeQuery(strSQL);
  28. sqlRst.last();
  29. intRowCount = sqlRst.getRow();
  30. intPageCount = (intRowCount+intPageSize-1) / intPageSize;
  31. if(intPage>intPageCount) intPage = intPageCount;
  32. %>
  33. <html>
  34. <head>
  35. <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
  36. <title>档案分页显示</title>
  37. </head>
  38. <body>
  39. <table border="1" cellspacing="0" cellpadding="0">
  40. <tr>
  41. <th>土地号</th>
  42. <th>面积(单位:平方米)</th>
  43. <th>土地类型</th>
  44. <th>土地用途</th>
  45. <th>拥有者</th>
  46. <th>地址</th>
  47. </tr>
  48. <% if(intPageCount>0){
  49. sqlRst.absolute((intPage-1) * intPageSize + 1);
  50. i = 0;
  51. while(i<intPageSize && !sqlRst.isAfterLast()){
  52. %>
  53. <tr>
  54. <td width="150" align="center"><%=sqlRst.getString(1)%></td>
  55. <td width="150" align="center"><%=sqlRst.getString(2)%></td>
  56. <td width="150" align="center"><%=sqlRst.getString(3)%></td>
  57. <td width="150" align="center"><%=sqlRst.getString(4)%></td>
  58. <td width="150" align="center"><%=sqlRst.getString(5)%></td>
  59. <td width="150" align="center"><%=sqlRst.getString(6)%></td>
  60. </tr>
  61. <%
  62. sqlRst.next();
  63. i++;}}
  64. %>
  65. </table>
  66. 第<%=intPage%>页 共<%=intPageCount%>页 <%if(intPage<intPageCount){
  67. %><a href="sele.jsp?page=<%=intPage+1%>">下一页</a><%}%> <%if(intPage>1){
  68. %><a href="sele.jsp?page=<%=intPage-1%>">上一页</a><%}%>
  69. </body>
  70. </html>
  71. <% sqlRst.close();
  72. sqlStmt.close();
  73. sqlCon.close(); %>

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

发表评论

表情:
评论列表 (有 0 条评论,122人围观)

还没有评论,来说两句吧...

相关阅读