基于java的土地档案管理系统设计与实现(项目报告+答辩PPT+源代码+数据库+部署视频)
项目报告
土地档案管理关系
研究土地档案管理关系即为实现一个土地档案管理系统。土地档案管理系统是将现有的历史纸质档案资料进行数字化加工处理,建成标准化的网络基础资料数据库,同时建成一套基于计算机网络应用的档案管理软件系统。不仅要在技术上符合国家关于档案信息化建设的有关要求,在标准化程度上符合国土行业档案管理规范的专业性要求,而且还要能够与当前现有其他业务信息管理系统进行整合,在档案和业务数据间建立互换和抽取机制,达到信息的顺利交换,便于信息的一致性获取,减少重复劳动工作量。
本文对系统进行了可行性研究、需求分析、前台界面的设计、后台数据库建设以及系统测试等相关工作。基于三层架构的思想,前台使用jsp技术,后台使用了Oracle 11g平台,主要使用Hibernate的设计模式访问数据库,采用B/S架构,实现此土地档案管理系统。
纸质档案;数字化;三层架构
目录
摘 要.................................................................................................... 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
1 绪论
1.1 可行性研究编写目的
可行性研究的目的是为了对问题进行研究,以最小的代价在最短的时间内确定问题是否可解。
经过对此项目进行详细调查研究,初拟系统实验报告,对软件开发中将要面临的问题及解决方案进行初涉设计及合理安排。明确开发风险极其所带来的经济效益以及为工作带来的便利性。本报告合身后,交软件经理审查。
1.2 项目背景
1.3 土地管理现状
1.4 土地档案管理研究方向
1.5 项目目标
1.6 项目设计原则
1.6.1 实用性原则
1.6.2 经济性原则
建立合适的土地档案管理系统,提供了全面的功能,,数据处理方式灵活且满足需求,减少了人力物力的过度投入。同时基于web开发的系统,能够自主对系统进行修改,也节省了运营成本。
1.6.3 合法性原则
2 相关技术介绍
2.1 三层架构的选择
模型-视图-控制器(MVC)是Xerox PARC在二十世纪八十年代为编程语言Smalltalk-80发明的一种软件设计模式,已被广泛使用。后来被推荐为Oracle旗下Sun公司Java EE平台的设计模式,并且受到越来越多的使用ColdFusion和PHP的开发者的欢迎。模型-视图-控制器模式是一个有用的工具箱,它有很多好处,但也有一些缺点。
MVC 模式同时提供了对 HTML、CSS 和 JavaScript 的完全控制。
Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。
View(视图)是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的。
Controller(控制器)是应用程序中处理用户交互的部分。
通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
MVC 分层有助于管理复杂的应用程序,因为您可以在一个时间内专门关注一个方面。例如,您可以在不依赖业务逻辑的情况下专注于视图设计。同时也让应用程序的测试更加容易。
MVC 分层同时也简化了分组开发。不同的开发人员可同时开发视图、控制器逻辑和业务逻辑。MVC的层次结构如图2-1所示。
图2-1 MVC层次图
2.2 编程语言的选择
与传统程序不同,Sun 公司在推出 Java 之际就将其作为一种开放的技术。全球数以万计的 Java 开发公司被要求所设计的 Java软件必须相互兼容。“Java 语言靠群体的力量而非公司的力量”是Sun公司的口号之一,并获得了广大软件开发商的认同。这与微软公司所倡导的注重精英和封闭式的模式完全不同。
Sun 公司对 Java 编程语言的解释是:Java 编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言。
Java 平台是基于 Java 语言的平台。这样的平台非常流行。因此微软公司推出了与之竞争的.NET平台以及模仿Java的C#语言。
Java是功能完善的通用程序设计语言,可以用来开发可靠的、要求严格的应用程序。
选择JAVA主要是因为其8大优势:
1. Java是目前使用最为广泛的网络编程语言之一。它具有简单,面向对象,稳定,与平台无关,解释型,多线程,动态等特点。
2.简单 Java 语言简单是指这门语言既易学有好用。不要将简单误解为这门语言很干瘪。你可能很赞同这样的观点 英语要比阿了伯语言容易学。但这并不意味着英语就不能表达丰富的内容和深刻的思想,许多文学若贝尔奖的作品都是英文写的。如果你学习过 C++语言,你会感觉 Java很眼熟,因为 Java中许多基本语句的语法和 C++一样,像常用的循环语句,控制语句等和 C++几乎一样,但不要误解为 Java 是 C++的增强版,Java 和 C++是两种完全不同的语言,他们各有各的优势,将会长期并存下去,Java 语言和 C++语言已成为软件开发者应当掌握的语言。如果从语言的简单性方面看,Java要比 C++简单,C++中许多容易混淆的概念,或者被Java弃之不用了,或者以一种更清楚更容易理解的方式实现,例如,Java不再有指针的概念。
3.面向对象 基于对象的编程更符合人的思维模式,使人们更容易编写程序。在实际生活中,我们每时每刻都与对象在打交道。我们用的钢笔,骑的自行车,乘的公共汽车等。而我们经常见到的卡车,公共汽车,轿车等都会涉及以下几个重要的物理量 可乘载的人数,运行速度,发动机的功率,耗油量,自重,轮子数目等。另外,还有几个重要的功能 加速功能,减速功能,刹车,转弯功能等。我们也可以把这些功能称作是他们具有的方法,而物理量是它们的状态描述。仅仅用物理量或功能不能很好的描述它们。在现实生活中,我们用这些共有的属性和功能给出一个概念 机动车类。一个具体的轿车就是机动车类的一个实例 对象 .Java 语言与其它面向对象语言一样,引入了类的概念,类是用来创建对象的模板,它包含被创建的对象的状态描述和方法的定义。
4.与平台无关 与平台无关是 Java 语言最大的优势。其它语言编写的程序面临的一个主要问题是 操作系统的变化,处理器升级以及核心系统资源的变化,都可能导致程序出现错误或无法运行。Java的虚拟机成功地解决了这个问题,Java编写的程序可以在任何安装了 Java虚拟机 JVM 的计算机上正确的运行,Sun公司实现了自己的目标 “一次写成,处处运行”。
5.解释型 我们知道C,C++等语言,都是只能对特定的CPU芯片进行编译,生成机器代码,该代码的运行就和特定的CUP有关。例如,在C语言中,我们都碰到过类似下面的问题 int 型变量的值是10 ,那么下面代码的输出结果是什么呢 printf(“%d,%d”,x,x=x+1) 如果上述语句的计算顺序是从左到右,结果是 10,11 但是,有些机器会从右到左计算,那么结果就是11,11.Java不像C++,它不针对特定的CPU芯片进行编译,而是把程序编译为称做字节码的一个“中间代码”。字节码是很接近机器码的文件,可以在提供了 Java 虚拟机 JVM 的任何系统上被解释执行。Java 被设计成为解释执行的程序,即翻译一句,执行一句,不产生整个的机器代码程序。翻译过程如果不出现错误,就一直进行到完毕,否则将在错误处停止执行。同一个程序,如果是解释执行的,那么它的运行速度通常比编译为可执行的机器代码的运行速度慢一些。但是,对Java来说,二者的差别不太大,Java的字节码经过仔细设计,很容易便能使用JIT 即时编译方式 编译技术将字节码直接转化成高性能的本地机器码,Sun 公司在 Java 2发行版中提供了这样一个字节码编译器——JIT(Just In Time),它是Java虚拟机的一部分。Java运行系统在提供JIT的同时仍具有平台独立性,因而“高效且跨平台”对Java来说不再矛盾。如果把 Java 的程序比做“汉语”的话,字节码就相当于“世界语”,世界语不和具体的“国家”关,只要这个“国家”提供了“翻译”,就可以再快速地把世界语翻译成本地语言。
6.多线程 Java 的特点之一就是内置对多线程的支持。多线程允许同时完成多个任务。实际上多线程使人产生多个任务在同时执行的错觉,因为,目前的计算机的处理器在同一时刻只能执行一个线程,但处理器可以在不同的线程之间快速地切换,由于处理器速度非常快,远远超过了人接收信息的速度,所以给人的感觉好象多个任务在同时执行。C++没有内置的多线程机制,因此必须调用操作系统的多线程功能来进行多线程程序的设计。
7.安全 当你准备从网络上下载一个程序时,你最大的担心是程序中含有恶意的代码,比如试图读取或删除本地机上的一些重要文件,甚至该程序是一个病毒程序等。当你使用支持Java的浏览器时,你可以放心地运行Java的小应用程序 Java Applet ,不必担心病毒的感染和恶意的企图,Java小应用程序将限制在 Java运行环境中,不允许它访问计算机的其它部分。
8.动态 Java 程序的基本组成单元就是类,有些类是自己编写的,有一些是从类库中引入的,而类又是运行时动态装载的,这就使得 Java 可以在分布环境中动态地维护程序及类库,而不像 C++那样,每当其类库升级之后,相应的程序都必须重新修改,编译。
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体系结构的数据库之一。比如SilverStream就是基于数据库的一种中间件。ORACLE数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。但它的所有知识,只要在一种机型上学习了ORACLE知识,便能在各种类型的机器上使用它。
Oracle数据库最新版本为Oracle Database 12c。Oracle数据库12c 引入了一个新的多承租方架构,使用该架构可轻松部署和管理数据库云。此外,一些创新特性可最大限度地提高资源使用率和灵活性,如Oracle Multitenant可快速整合多个数据库,而Automatic Data Optimization和Heat Map能以更高的密度压缩数据和对数据分层。这些独一无二的技术进步再加上在可用性、安全性和大数据支持方面的主要增强,使得Oracle数据库12c 成为私有云和公有云部署的理想平台。
选择ORACLE,是因为其具备一下优势:
- 处理速度快,非常快。
2、安全级别高。支持快闪以及完美的恢复,即使硬件坏了 也可以恢复到故障发前的1s。
3、几台数据库做负载数据库,可以做到30s以内故障转移。
4、网格控制,以及数据仓库方面也非常强大。
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)的多个触发器能够对同一种数据操作采取多种不同的处理。
总体而言,触发器性能通常比较低。当运行触发器时,系统处理的大部分时间花费在参照其它表的这一处理上,因为这些表既不在内存中也不在数据库设备上,而删除表和插入表总是位于内存中。可见触发器所参照的其它表的位置决定了操作要花费的时间长短。
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-1所示。
4.2 数据库设计
all_categories表是所有档案文件表父表信息,本表结构如图4-2所示。
all_categories表是土地类别相关的表,可用于后期的档案归属方面工作的管理,本表的结构如图4-5所示。
鉴于本设计是将该系统的部分功能实现出来,在数据量不够大的情况下选择第二种设计方式,以更直观的展现数据。而实际中将所有数据放在一个Model中的方式更加高效。
5 详细设计
5.1 登陆模块设计
接受登录页面传送来的用户登录信息,对输入信息访问数据库判定是否允许登陆,允许则调到主页面,否则跳转回之前的登录页面。
继承IUserServer接口,实现login()方法,开启数据库事务,调用dao层方法,实现登录功能。
继承IUserDao接口,通过对数据库的直接操作,将数据传输给上层,完成登录功能。
5.2 注册模块设计
接受注册页面所传送来的用户注册信息,对输入的信息传给server层进行逻辑处理。
继承IUserServer接口,实现register()方法,开启数据库事务,调用dao层方法,实现注册功能。
继承IUserDao接口,通过对数据库的直接操作,将数据传输给上层,完成注册功能。
5.3 文件查询模块设计
接受查询页面传来的土地号数据,以土地号信息为依据,调用server层的方法进行处理。
继承IFileServer接口,实现getAllFiles()方法,开启数据库事务,调用dao层方法,实现按土地号查询功能。在接收到dao层传回的数据后将数据传给页面显示。
继承IFileDao接口,通过对数据库的直接操作,将数据传输给上层,完成查询功能。
5.4 文件添加模块设计
接受添加页面传来的土地文件信息,调用server层的方法进行处理。
继承IFileServer接口,实现addFile()方法,开启数据库事务,调用dao层方法,先验证数据库是否有相同信息,在没有的情况下向数据库中添加数据。并返回显示添加成功后的数据库中存储的信息。
继承IFileDao接口,通过对数据库的直接操作,执行对数据库的增加操作,完成添加新文件功能。
5.5 文件修改模块设计
接受修改页面传来的土地文件信息,调用server层的方法进行处理。
继承IFileServer接口,实现addFiles1()方法,开启数据库事务,先验证对象是否为空,在非空的条件下,调用dao层的方法。并返回显示修改成功后的数据库中存储的信息。
继承IFileDao接口,通过对数据库的直接操作,把新数据覆盖原始数据,完成修改文件的功能。
5.6 文件删除模块设计
继承IFileServer接口,实现delFiles()方法,开启数据库事务,先验证对象是否为空,在非空的条件下,调用dao层的方法。并返回显示删除的结果。
继承IFileDao接口,通过对数据库的直接操作,把数据删除。
6 系统实现
6.1 用户相关
6.1.1 登陆界面
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.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");
String name = request.getParameter("username");
String password = request.getParameter("password");
Users users = service.login(name, password);
HttpSession session = request.getSession();
session.setAttribute("users", users);
request.getRequestDispatcher("/host.jsp").forward(request, response);
} catch (UserServiceException e) {
request.setAttribute("message", "<script laguage='JavaScript'> alert('用户名或密码错误,请重新输入!') </script>");
request.getRequestDispatcher("/login.jsp").forward(request, response);
6.1.2 注册页面
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
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.setPhoneNumber(phonenumber);
request.getRequestDispatcher("/login.jsp").forward(request,
} catch (UserServiceException e) {
request.getRequestDispatcher("/register.jsp").forward(request,
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
6.2 档案相关
6.2.1 档案列举
strPage = request.getParameter("page");
intPage = java.lang.Integer.parseInt(strPage);
java.sql.DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
strCon = "jdbc:oracle:thin:@localhost:1521:orcl";
sqlCon = java.sql.DriverManager.getConnection(strCon,"dsg","dsg");
strSQL = "select gnum,squre,type,usedfor,people,location from files";
sqlRst = sqlStmt.executeQuery(strSQL);
intRowCount = sqlRst.getRow();
intPageCount = (intRowCount+intPageSize-1) / intPageSize;
if(intPage>intPageCount) intPage = intPageCount;
"sele.jsp?page=<%=intPage+1%>">下一页</a><%}%> <%if(intPage>1){%><a href="sele.jsp?page=<%=intPage-1%>">上一页</a><%}%>
6.2.2 档案查询
先对土地档案进行查询操作,通过查询页面输入要查询的档案的土地号,进行查询,档案查询页面如图6-4所示。
在输入要查询的土地号之后,进入档案的查询结果页面查看其具体信息,查询结果如图6-5所示。
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.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();
String gNum = request.getParameter("tudi");
Files files2= service.getAllFiles(files);
request.setAttribute("files", files2);
request.getRequestDispatcher("/queryrs.jsp").forward(request, response);
request.setAttribute("message1", "<script laguage='JavaScript'> alert('文件不存在') </script>");
request.getRequestDispatcher("/query.jsp").forward(request, response);
6.2.3 档案修改
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
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();
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");
request.getRequestDispatcher("/query.jsp").forward(request, response);
}catch(UserServiceException e){
// request.getRequestDispatcher("/register.jsp").forward(request, response);
6.2.4 档案删除
在查询到要查询的档案信息之后,通过其页面下方的删除按钮,完成是否删除的提示框确认之后,可完成对文件档案的删除。在查询页面对刚才删除的档案进行查询,删除成功后将不会显示刚才的文件信息。
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.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 files2 = service.getAllFiles(files);
request.getRequestDispatcher("/query.jsp").forward(request,
request.getRequestDispatcher("/queryrs.jsp").forward(request,
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
6.2.5 档案添加
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.ex.common.exception.UserServiceException;
import com.ex.service.imp.FileServiceImpl;
public class AddFiles extends HttpServlet {
private static final long serialVersionUID = 1L;
private FileServiceImpl service = new FileServiceImpl();
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 files2= service.getAllFiles(files);
request.getRequestDispatcher("/queryrs.jsp").forward(request, response);
}catch(UserServiceException e){
// request.getRequestDispatcher("/register.jsp").forward(request, response);
request.setAttribute("files", files2);
request.getRequestDispatcher("/queryrs.jsp").forward(request, response);
}catch(UserServiceException e){
// request.getRequestDispatcher("/register.jsp").forward(request, response);
6.2.6 报表功能
在数据库中的数据存放表只占到很小的一部分,而大多数的业务处理应用到的是视图,以下是其中统计同一个人在不同地区土地面积的报表,只有不少于2块土地的人才会出现在记录中。
create or replace view baobiao as
select people,sum(decode(location,'山西省太原市小店区',squre,null)) as xd,
sum(decode(location,'山西省太原市迎泽区',squre,null)) as yz,
sum(decode(location,'山西省太原市晋源区',squre,null)) as jy
6.3 Service层的实现
6.3.1 Service层实现介绍
6.3.2 Service层实现的相关代码
import javax.servlet.http.HttpSession;
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();
files2 = dao.findFilesByGnum(files.getGnum());
public void addFiles(Files files) throws UserServiceException {
HibernateTransaction ht = new HibernateTransaction();
Files files2 = dao.findFilesByGnum(files.getGnum());
throw new UserServiceException("已经存在");
throw new UserServiceException("失败");
public void addFiles1(Files files) throws UserServiceException {
HibernateTransaction ht = new HibernateTransaction();
Files files2 = dao.findFilesByGnum(files.getGnum());
dao.saveOrupdateFiles1(files);
throw new UserServiceException("失败");
public void delFiles(Files files) throws UserServiceException {
HibernateTransaction ht = new HibernateTransaction();
Files files2 = dao.findFilesByGnum(files.getGnum());
throw new UserServiceException("失败");
6.4 持久层的实现
6.4.1 持久层功能实现的介绍
6.4.2 持久层实现的代码
import com.ex.common.HibernateSessionFactory;
public class FileDaoImpl implements IFileDao{
public void saveOrupdateFiles(Files files) throws Exception {
Session session = HibernateSessionFactory.getSession();
public void saveOrupdateFiles1(Files files) throws Exception {
Session session = HibernateSessionFactory.getSession();
public void deleteFiles(Files files) throws Exception {
Session session = HibernateSessionFactory.getSession();
public Files findFilesByGnum(String gNum) throws Exception {
Session session = HibernateSessionFactory.getSession();
List list = session.createQuery("from Files where gNum= ?")
7 测试
7.1 测试目的
7.2 测试原则
一,测试应该尽早进行,最好在需求阶段就开始介入,因为最严重的错误不外乎是系统不能满足用户的需求。
二,程序员应该避免检查自己的程序,软件测试应该由第三方来负责。
三,设计测试用例时应考虑到合法的输入和不合法的输入以及各种边界条件,特殊情况下要制造极端状态和意外状态,如网络异常中断、电源断电等。
五,对错误结果要进行一个确认过程。一般由A测试出来的错误,一定要由B来确认。严重的错误可以召开评审会议进行讨论和分析,对测试结果要进行严格地确认,是否真的存在这个问题以及严重程度等。
六,制定严格的测试计划。一定要制定测试计划,并且要有指导性。测试时间安排尽量宽松,不要希望在极短的时间内完成也有一个高水平的测试。
7.3 测试内容
软件测试主要工作内容是验证(verification)和确认(validation),下面分别给出其概念:
验证(verification)是保证软件正确地实现了一些特定功能的一系列活动, 即保证软件以正确的方式来做了这个事件(Do it right)
1.确定软件生存周期中的一个给定阶段的产品是否达到前阶段确立的需求的过程。
2.程序正确性的形式证明,即采用形式理论证明程序符合设计规约规定的过程。
3.评审、审查、测试、检查、审计等各类活动,或对某些项处理、服务或文件等是否和规定的需求相一致进行判断和提出报告。
确认(validation)是一系列的活动和过程,目的是想证实在一个给定的外部环境中软件的逻辑正确性。即保证软件做了你所期望的事情。(Do the right thing)
1.静态确认,不在计算机上实际执行程序,通过人工或程序分析来证明软件的正确性。
2.动态确认,通过执行程序做分析,测试程序的动态行为,以证实软件是否存在问题。
软件测试的对象不仅仅是程序测试,软件测试应该包括整个软件开发期间各个阶段所产生的文档,如需求规格说明、概要设计文档、详细设计文档,当然软件测试的主要对象还是源程序。
7.4 测试过程
7.4.1 登录模块
输入 |
有效等价类 |
无效等价类 |
用户名 |
(1)长度在0~10之间的varchar2型 |
(2)长度小于0或大于10 |
密码 |
(3)长度在0~16之间的varchar2型 |
(4)长度小于0或大于16 |
测试数据 |
期望结果 |
覆盖用例 |
用户名:dhc 密码:dhc |
输入正确 |
(1)(3) |
用户名:1236547896541236547896541236547896 密码:1234 |
长度大于50 |
(2) |
用户名:qy 密码:12365478965412365478965412365478 |
长度大于50 |
(4) |
7.4.2 查询模块
输入 |
有效等价类 |
无效等价类 |
查询的内容 |
(1)长度在0~15之间的varchar型 |
(2)长度小于0或大于15 |
测试数据 |
期望结果 |
覆盖用例 |
土地号:10000001 |
输入正确 |
(1) |
土地号:124124124124124124124 |
输入错误 |
(2) |
7.5 测试结果
7.5.1 功能性
现在的系统基本实现了登陆、注册和文件档案的管理,但是对于权限先关的设计使得功能上有所缺陷
7.5.2 易用性
结 论
通过对于Oracle的实际操作以及实际应用,已经把初始认为的只是用来存放数据的一个东西得到了改变。它并不仅仅是一个存放数据的东西,当然存放数据是其核心功能。数据库编程,能为程序带来意想不到的效果。
参考文献
[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
孟加拉国是适合地籍测绘垂直空中摄影技术的的地方。它的主要优势在于它的平整度和小区边界空气能见度。一个规模1:12000将大部分地区是足够的。在航空测量的主要步骤包括:
1.确保所存储的数据可以被用于各种应用,如:备案,土地登记,变更,物业税和资本得利,征收,解决纠纷。
3.确保有目的的信息检索系统,使所有的数据为当前和未来的应用要求实现。
数据库是由多个用户共享。处在不同级别的用户有不同的用户模式。将开发并检查所需的视图的数据库的整体逻辑模型。最后,对于数据库的逻辑模型,将转化为相应的物理数据库,完成物理设计。
基本信息包括如何将数据的存储和关联,以及它们将如何被访问。以及用户如何报告和用户模式怎样将相关的逻辑模型和物理设计进行关联。
土地信息管理系统软件将是一个集成的系统,其中用户将提供设施,导航和执行从数据输入到数据验证的记录,以及显示一个界面上的所有操作。LIMS提供主要模块如下:
数据录入模块:数据录入模块将不得不进入,保持收到数据的目的寄存器的数据接口。设备将为每个寄存器提供与选择视图和列表,将寄存器的内容打印。
安全模块:考虑到土地记录的机密性,软件的安全问题是最高优先权而设计。安全设置的重要特征是:限制用户访问,其中只有授权的人员有权限编辑数据库中的记录。
*数字认证签名,所有相关的员工将有权选择加密数字签名的文件,他们会处理的。
*备份设备来帮助存储过去的记录,使得不再发生意外或故意删除。而整个系统软件的安全性将保持在三个单独的水平:
该系统将允许用户用正确的密码或授权密码进入系统或数据库的一个特定部分。将有至少三种不同的安全级别的访问:
1)1级:在最高水平的人员将被允许查看所有保存的土地记录。他们将被允许添加、删除和修改土地记录,以及相关的购买,销售和变更的土地。他们也将被允许查看某一块土地的税务记录。
2)2级:在第二级的员工将被允许查看,添加和编辑现有的数据,它们将能够存储土地出售和变更的记录。然而,从数据库中删除任何土地记录,他们将需要特殊的权限,或者他们将不得向1级用户申请权限。
3)3级:数据库的每个条目的部分为“只读”。要查看任何一个土地的购买和销售,任何一块土地记录,需要通过向政府部门支付一定的费用来实现查阅。
参考资料:
基于java的土地档案管理系统设计与实现(项目报告+答辩PPT+源代码+数据库+部署视频)相关推荐
- 基于jsp的记账管理系统设计与实现(项目报告+答辩PPT+源代码+数据库+部署视频)
项目报告 基于Jsp的记账管理系统 近年来由于生活节奏的加快,好像每个人都被很多难以启齿的问题困惑,然而关于随意消费是大多数人头疼的问题,没有任何计划和筹备的情况下随意消费,导致现实生活中我们所称为的 ...
- 基于java的宠物管理系统设计与实现(项目报告+答辩PPT+源代码+数据库+截图+部署视频)
基于JAVA的宠物网站的设计与实现 本系统是采用Java技术来构建的一个基于Web技术的B/S结构的宠物网站,该网站建立在Spring和Struts2框架之上,前台使用JSP作为开发语言,后台使用My ...
- 基于java的连连看游戏系统设计与实现(项目报告+答辩PPT+源代码+数据库+截图+部署视频)
项目说明报告 基于Java的连连看游戏设计与实现 连连看是一种消除类益智游戏,核心要求是在规定的时间内,消除游戏界面中选中的两张相同的图案,直至完全消除所有图案.这款游戏操作简单(只需单击鼠标左键操作 ...
- 基于java的出租车计价器系统设计与实现(项目报告+答辩PPT+源代码+数据库+截图+部署视频)
项目报告 出租车计价器设计与实现 在我国,出租车行业是八十年代初兴起的一项新兴行业,随着出租车的产生,计价器也就应运而生.但当时在全国没有一家企业能够生产,因而那个时期的计价器是由台湾引进.台湾是计价 ...
- 基于java的俄罗斯方块游戏系统设计与实现(项目报告+答辩PPT+源代码+数据库+截图+部署视频)
基于Java的俄罗斯方块游戏的设计与实现 俄罗斯方块是一款风靡全球,从一开始到现在都一直经久不衰的电脑.手机.掌上游戏机产品,是一款游戏规则简单,但又不缺乏乐趣的简单经典小游戏,上手容易,适用范围广泛 ...
- [计算机毕设]基于java的酒店管理系统系统设计与实现(项目报告+答辩PPT+源代码+数据库)
项目报告 酒店管理系统的设计与实现 摘 要 中国经济近几年来取得蓬勃飞速发展,使得人民生活水平的要求和生活的质量有了很高的要求.因此人们对外出旅游和就餐的需求也越来越大.同时,随着我国科技水平的兴起和 ...
- [计算机毕设]基于java的项目管理平台系统设计与实现(项目报告+答辩PPT+源代码+数据库)
项目报告 基于Java EE平台项目管理系统的设计与实现 随着社会信息化的发展,很多的社会管理问题也一并出现了根本性变化,项目公司的报表及文件管理也发生了变化,以前的管理是一个分布式的信息,然后围绕中 ...
- [计算机毕设]基于java的连连看游戏系统设计与实现(项目报告+答辩PPT+源代码+数据库)
项目说明报告 基于Java的连连看游戏设计与实现 连连看是一种消除类益智游戏,核心要求是在规定的时间内,消除游戏界面中选中的两张相同的图案,直至完全消除所有图案.这款游戏操作简单(只需单击鼠标左键操作 ...
- 基于java的校园二手平台系统毕业设计(项目报告+答辩PPT+源代码+数据库+截图+部署视频)
以下是一个基于Java的校园二手平台系统的毕业设计建议: 1. 系统概述: 校园二手平台系统是一个用于学生之间进行二手物品交易的应用程序.通过该系统,学生可以方便地发布和浏览二手物品的信息,并进行交流 ...
最新文章
- 用maven创建Spring MVC项目
- Matlab GUI 设计(3):edit、slider、table数据同步
- windows安装anaconda_[计算机科学工具系列] Anaconda和conda
- 让用户故事真的像故事那样
- C++反转字符串的算法(附完整源码)
- 【拔刀吧少年】之条件语句
- [转]自然语言处理中的Attention Model:是什么及为什么
- MySql应用原理分析系列文章目录
- 使TextView里面的文字滚动起来
- postgresql 加载参数文件
- 拓端tecdat|R语言:逻辑回归ROC曲线对角线分析过程及结果
- [2018.10.31 T2] 电梯
- KeyCue Mac 快捷键辅助工具
- html 判断undefined,JS中 “is not defined” 如何判断defined,defined和undefined 的区别
- win10如何删除输入法_顽固输入法exe文件无法删除,一招教你如何删除,原来这么简单...
- LC5454.统计全1子矩阵(矩阵统计)
- 生物智能与AI——关乎创造、关乎理解(上) 1
- docker的privileged 与 k8s的privileged 设置方式
- 入侵服务器挖矿和诈骗事件频发 | 零时科技区块链安全周报
- 如何在SATA驱动装WinPE
热门文章
- 微信公众号h5游戏核销流程
- Navicat for Oracle 11.2.11 64位 简体中文破解版
- 阀门定位器调节阀的特点及校验步骤
- 驾校考试秘笈 不用看书就能通过!! 暂时不考也先留着 别等着急的时候没处找去!!!速记方法!...
- 车机CAN总线模拟器的自制
- 鉴别器 discriminator
- 统一信用代码n开头_加工中心代码小数点问题 斜杠作用 GOTO意思
- 唯品会api_sign与mars_cid逆向分析
- August, 24(R)
- 教你把视频、文案、音频素材合并出新视频