目 录
摘 要 ................................................................. I Abstract ............................................................... II 第1章 前 言 ........................................................ 1
1.1 课题背景 ..................................................... 1 1.2 研究的目的及意义 ............................................. 1 1.3 项目描述 ..................................................... 1 第2章 技术与原理 .................................................... 2
2.1 数据库存储技术 ............................................... 2 2.2 面向对象的分析与设计 ......................................... 2 2.3 Ajax异步请求技术 ............................................. 2 2.4 AOP面向方面编程 .............................................. 2 第3章 需求建模 ...................................................... 3
3.1 现状调查 ..................................................... 3 3.2 需求分析 ..................................................... 3 3.3 需求建模 ..................................................... 3 3.4 可行性分析 ................................................... 6 第4章 架构设计 ...................................................... 7
4.1 系统核心功能架构 ............................................. 7 4.2 MVC编程架构 .................................................. 8 4.3 SSH系统框架 .................................................. 8 4.4 数据结构设计 ................................................. 9 第5章 模块设计 ..................................................... 17
5.1 登录系统的设计与实现 ........................................ 17 5.2 系统访问安全性设计与实现 .................................... 17 5.3 业主信息管理设计与实现 ...................................... 20 5.4 社区救助信息管理设计与实现 .................................. 21 5.5 小区流动人口信息管理设计与实现 .............................. 21 5.6 物业管理员信息管理设计与实现 ................................ 21 5.7 个人信息详情设计与实现 ...................................... 22 第6章 部署与应用 ................................................... 24
6.1 系统模式 .................................................... 24
6.2 系统环境 .................................................... 24 第7章 结论 .......................................................... 25 附录 .................................................................. 27
小区人口信息管理系统的设计与实现
摘 要
随着人口的迅速增长、居住形式的小区化、人口的不断流动、迁入、迁出给小区人口的管理带来极大不便,迫切的需要一种更加高效的管理方式代替传统的手工管理模式。利用计算机技术进行人口的管理与信息的统计,就能提供给人们一种更加高效的管理方式。
小区人口管理系统利用计算机技术,结合数据库系统,搭建一个网络管理平台,对人口流动以及迁入迁出进行统计与计算、存储居民基本信息,服务于人口普查、记录弱势群体的生活状况,给予爱心援助、为物业提供更加高效的小区人口管理模式。系统能够智能化分析,提供人口变动的相关报表依据,掌握人口动态,有利于更加清晰便捷的掌握人口的发展规律,给今后的人口发展策略的调整提供有利的依据。
关键词:人口流动;数据库系统;效率;统计报表;计算机技术
I
The Design and Implement of Community Population
Information Management System
Abstract
With the rapid growth of the population, live in the form of a community, the constant flow of population, immigration and emigration to the management district's population has caused great inconvenience, the urgent need for an alternative to the traditional manual management mode more efficient management . Use of computer technology for population management and statistical information to be able to provide people a more efficient management.
Community population management system using computer technology, combined with a database system, to build a network management platform, and moved to vacate on migration statistics and computing, storage residents basic information services in the census, the living conditions of vulnerable groups recorded, giving love and assistance, provide more efficient management model for population management community property. Intelligence analysis system can provide the relevant statements of changes in population control population dynamics, conducive to the development of a clearer grasp of the law and convenient population, to adjust future population development strategy to provide a favorable basis.
Key words: Population movements;Database system;Efficiency;Statistical reports;Computer technology
II
第1章 前 言
1.1 课题背景
随着人口的快速增长、以及外出务工人员的增多,使得对流动人口的信息管理变得困难,流动人口信息更新不及时。另一方面,传统的人工管理的方式,在大数据量、信息更新频繁的情况下,凸显出其效率以及保密性低下等问题。除此之外,人工管理的方式,很容易出错,甚至可能是资源文件的遗失。并且,随着时间的推移,堆积的资料会越来越多,保存难是一方面,更重要的是管理的难度成倍增长、效率低、更容易出错;传统的纸质文档管理,给查找、更新、以及资料的维护带来更多的困难。所以,需要引入一种更加高效便捷的方式去处理这些问题。
利用计算机的现代化处理方式,通过数据库系统对数据进行存储,程序对业务逻辑进行计算及处理,可以更好的弥补传统的人工管理方式的不足,使得数据的保存以及维护更加便捷高效。
1.2 研究的目的及意义
实现小区人口信息的计算机管理,能更好的提高工作效率,避免人为的失误造成不必要的后果,也使得数据的保存更加安全便捷。通过计算机处理,对人口信息进行统计和分析,可以对今后的人口发展趋势、人口分布进行相关科学预测等。
1.3 项目描述
系统基于J2EE技术,利用SSH(struts2、spring、hibernate)进行框架搭建的Web项目。系统通过配置Filter对访问链接进行安全过滤;另外对登录安全进行相关管理,不允许单个用户在多个地方进行登录操作,保证数据的一致性等。本系统核心模块:小区业主管理、物业工作人员管理、社区救助对象的管理、系统后台管理。其中,系统后台管理包括对系统常量的相关维护。
1
第2章 技术与原理
2.1 数据库存储技术
数据库系统承载着系统数据的存储、更新、查询等重要功能,是人口信息管理系统的核心组成部分。本系统采取Mysql数据库,对于小型的B/S系统简单实用、功能完善,是一个比较成熟的数据库系统。
2.2 面向对象的分析与设计
OOAD(Object Orient Analysis & Design,面向对象的分析与设计)是现代软件企业广为采用的一项有效技术,OOAD方法要求在设计中映射现实世界中指定问题域的对象和实体。面向对象技术能够构建与现实世界对应的问题模型,并保持他们的结构、关系和行为模式。面向对象编程,能够简化编程思想,更加适应需求变化。
2.3 Ajax异步请求技术
AJAX即“Asynchronous JavaScript and XML”(异步的JavaScript与XML技术),指的是一套综合了多项技术的浏览器端网页开发技术。
传统的表单验证,是当提交一个表单的时候就向Web服务求提交一个请求,然后Web服务器响应并返回一个处理页面。这种方式不仅浪费带宽,而且没有很好的用户体验。用ajax技术,进行异步请求,实现页面无刷新效果,对表单数据异步校验,给用户更佳体验。
2.4 AOP面向方面编程
面向方面的程序设计(aspect-oriented programming,AOP)通过预编译方式和运行期动态代理实现程序功能的统一维护,是函数式编程的一种衍生范型。
系统利用AOP编程,将公共部分抽象出来(如操作日志记录、性能统计、安全控制、事务处理、异常处理等),利用AOP动态组建技术集成到系统中,更加专注于核心业务的开发,避免大量重复代码,使得系统更加干净高效。
2
第3章 需求建模
3.1 现状调查
随着信息时代的发展,对效率的要求日益提高。人口不断的流动、迁入、迁出,不仅给管理带来了不便,而且不能及时的查询、登记所需的信息,使各种数据得不到充分的利用。因此,必须加强管理,积极采用先进的科学技术和管理方法来提高人口信息管理的工作效率。
3.2 需求分析
本系统核心模块:小区业主管理、物业工作人员管理、社区救助对象的管理、流动人口及常住人口的管理、系统后台管理。其中,系统后台管理包括对系统常量的相关维护。
人口信息的网络化管理,对提高人口管理的办事效率、加大信息资源的共享、规范行政办事手续、提供准确的统计分析具有划时代的意义。针对人口信息管理涉及的信息查询、录入、分析等进行管理;以人口信息管理业务为背景,通过调研、分析现有的管理模式和已有的管理软件,建立系统模型。本系统的诞生是为人口管理工作提供方便、便捷的信息管理方式,较好的满足各物业对小区人口管理的实际需求。
系统需要满足一定的信息统计和分析的功能,为今后小区物业的发展提供一定的数据支持;系统设计能够实现对小区人口信息的录入、编辑、查询和删除等功能,针对人口信息管理涉及的信息录入、查询分析等进行有效的管理;系统界面友好、简介、便于客户操作,给予客户一流的体验,能真正提高人口管理的工作效率。
3.3 需求建模
3
信息导出系统信息维护超级管理员居民通讯录管理登录系统小区业主信息管理弱势群体救助管理退出登录流动人口管理普通管理员业主车辆管理物业工作人员管理
图3-1 系统基本用例图
账号密码以及验证码输入验证判断是否为空存在空值重新进行登录,并给出提示验证当前账号是否已经登录已经在线进入系统
图3-2 系统登录活动图
4
actions通知,记录操作日志、登录信息以及错误信息等session动作监听,销毁保存用户信息的session对象advices页面值对象listenersvo提供服务系统安全访问过滤器filterservices提供安全登录方法,存储登录信息数据库访问方法daosecurityutils数据库持久化对象po图3-3 系统核心包图
SecurityUserHolder+getCurrentUser(): ManagerInfoVO+securityLogin(ManagerInfoVO): String+isOtherUserLogin(String): boolean+loginOut(): boolean+constraintOffline(): boolean+constraintOffline(String): boolean+repeatLogin(String): boolean+loginEffective(): boolean+loginEffective(String): boolean-currentUserHasLogin(): boolean-userHasLogin(String): boolean-currentSessionIdEffective(): boolean-currentUserName(): String
图3-4 系统用户登录安全类图
PaginationUtils-DEFAULT_PAGESIZE: static final Integer-currentPageNumber: static Integer-total: static Integer-request: static HttpServletRequest-hibernateTemplate: static HibernateTemplate+PaginationUtils()+initPaginationUtilsRequest(HttpServletRequest)+countStatistic(String, Object[]): Integer+exeutePagingQuery(): List+exeutePagingQuery(String, Object[]): boolean+setPageNumber(Integer)+getPageNumber(): Integer+setTotal(Integer)+getTotal(): String+setHibernateTemplate(HibernateTemplate)+getHibernateTemplate(): HibernateTemplate
图3-5 基于hibernate的分页工具类图
5
3.4 可行性分析
通过各个方面的深入了解和分析后,现对此人口信息管理系统进行可行性分析。
3.4.1 技术可行性
使用Mysql数据库存储管理数据,操作方便,适用于小型的应用管理系统; 掌握eclipse工具的使用,会使用快捷键以提高开发速度、以及JavaEE的开发流程;
SSH(struts2、spring3.x、hibernate3.x)框架的整合使用,提高应用程序的可扩展性,更好的对系统进行升级改造;加强系统的安全性能;
Java的基本api的使用;Java Servlet、Filter等技术的应用,提高系统的开发速度,利用最合适的方法完成开发任务;
数据输入验证:据输入时通过Javascript进行本地输入验证(Ajax异步校验),提高用户体验的同时,合理的利用网络带宽,避免表单的无效提交(如用户注册功能的用户名重复判断,通过ajax技术,只需要异步提交用户名,并获取反馈的判断信息即可);
数据交换格式:Json格式,易于阅读和编写,同时也易于机器解析和生成,网络上存在很多UI框架,可直接解析json,构造数据表格,用户界面更加美观,同时也提高了开发速度,确保系统能够顺利进行下去;
系统的MVC三层架构,代码逻辑与业务分离,更方便日后的维护和扩展,在对业务逻辑进行修正或更改的时候不需要设计到表现层的代码和数据库逻辑代码;
系统权限控制、日志记录等功能作为一个切面进行编程,利用AOP技术动态的组建到services层代码中,这样更能专注于sevices层的代码开发。业务逻辑更加清晰;
使用接口开发等Java开发规范等,规范开发是为了日后更加方便维护,同时,也能够提高代码的可读性,提高开发效率以及代码的质量;
以上涉及的技术不是很难,技术上完全可以实现。 3.4.2 经济可行性
Mysql数据库可免费使用,能够满足基本的需求;eclipse做为开源的IDE工具;系统的使用很简单,只需要简单的培训即可;
综上所述,此人口信息管理系统的开发在技术、经济上是可行的。
6
第4章 架构设计
4.1 系统核心功能架构
图4-1 系统核心功能架构图
系统核心是对常住的业主进行管理、流动人口管理以及对弱势群体的爱心援助管理。因为对弱势群体的救助是一个很重要的方面,也是国家很重视的一块,一个高效的管理方式,能够更好的落实对弱势群体的救助工作。流动人口管理也是很重要的一个环节,流动人口的急剧增长,使得管理起来更加麻烦。所以,需要更加高效的管理方式来应对当前常住人口管理以及流动人口管理不便的现状,更好的服务于社会。
7
4.2 MVC编程架构
图4-2 MVC编程架构图
MVC(Model View Controller),是指模型(model)- 视图(view)- 控制器(controller)。是一种软件设计典范,用一种业务逻辑和数据显示分离的方法组织代码,将业务逻辑集聚到一个部件里,在界面和用户围绕数据的交互能被改进和个性化定制的同时而不需要重新编写业务逻辑,MVC被独特的发展起来用于映射传统的输入、处理以及输出功能在同一个逻辑的图形化用户界面的结构中。
4.3 SSH系统框架
基于J2EE技术,利用SSH(struts2、spring3.x、hibernate3.x)框架搭建的Web项目。考虑到系统的可维护性,前期对系统整体框架进行优化以及对代码的重构,抽象出公共的部分作为公共服务,提高代码的质量,使整体架构更加清晰。
利用Struts2作为MVC中的Controller层,分离表现与业务逻辑;利用Spring基于JavaBeans的采用控制反转(Inversion of Control,IoC)原则的配置管理,使得应用程序的组建更加快捷简单,程序设计更加灵活,能更好的适应需求的变化。其架构如下图所示:
8
图4-3 Spring功能架构图
利用Hibernate,采用面向对象的方式,操作数据库。简化查询语句,更能适用多种数据库,能够跨数据库平台,加强了系统的可移植性。
4.4 数据结构设计
4.4.1 系统数据库部分E-R图
9
姓名 收入 户口 类别 户口编号号 居住 身份证号 居民 N M 1 家庭 联系方式 M 手机 居民通讯录 QQ 身份证号 电子邮箱 图4-3 常住居民基本信息E-R模型
4.4.2 系统数据库表及关系
数据库包括小区物业管理人员信息表(manager_info)、居民基本信息表(resident_base_info)、居民家庭信息表(resident_family_info)、居民扩展信息表(resident_extension_info)、居民通讯录(resident_contact)、常量信息表(constant_info)、社区救助两劳人员信息表(CA_two_labor_officers_info)、社区救助优抚对象信息表(CA_preferential_treatment_info)、社区救助低保人员信息表(CA_subAllowance_info)、社区救助失业人员信息表(CA_unemployed_info)、社区救助残疾人信息表(CA_disability_info)、社区救助老年人信息表(CA_old_people_info)、系统页面信息表(system_page_info)。
10
图4-5 表之间的引用关系
11
4.4.3 主要数据表结构
表4-1 居民基本信息表(resident_base_info)
名称 居民基本信息Id 低保人员信息Id 居民扩展信息Id 两劳人员信息Id 残疾人信息Id 优抚对象信息Id 失业人员信息Id 老年人信息Id 居民通讯录Id
楼号 户(门)号 户口类别(此处为常量引用)
姓名 曾用名 户主姓名(可查
询选择) 与户主关系(作为常量引用) 身份证号 出生日期(自动通过身份证号计
算) 签发机关 签发日期 户籍状态(作为
代码 resident_base_info_id sub_allowance_info_id resident_extension_info
_id
two_labor_officers_info
_id
disability_info_id preferential_treatment_
id
unemployed_info_id old_people_info_id resident_contact_info_i
d
building_number site_number
residence_registration_
code name original_name householder_name householder_relation_co
de
identity_card_number
birth_date issuing_authority
sign_date
residence_status_code
数据类型 int int int int int int int int int int varchar(12) varchar(12)
int varchar(12) varchar(12) varchar(12)
int varchar(20) char(10) varchar(50) char(10) int
长度 主要的 12 12 12 12 12 20 10 50 10
TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
居民家庭信息Id resident_family_info_id
12
常量引用) 登记日期 文化程度(可作为常量引用) 出生地(现不做自动化处理) 性别(作为常量
引用) 身高(m) 血型(作为常量
引用) 健康状况(作为常量引用) 户籍所在地
籍贯 民族(作为常量
引用) 住址 联系电话 其他住址 宗教信仰 婚姻状况(此处作为常量引用) 兵役情况(此处作为常量引用)
职业 政治面貌(此处作为常量引用)
备注 添加时间 添加人ID 修改时间 修改人ID 是否启用
register_date degree_of_education
birth_address sex_code height blood_type_code health_status_code residence_address native_place nation_code address contact_phone other_address religion_faith marital_status_code military_service_status
_code professional politics_status_code
remark add_time add_user_id modify_time modify_user_id is_enable
char(10) int varchar(50)
int char(4) int int varchar(50) varchar(50)
int varchar(50) varchar(12) varchar(50) varchar(20)
int int varchar(20)
int text datetime int datetime int bool
10 50 4 50 50 50 12 50 20 20
FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
13
表4-2 社区救助低保人员信息表(CA_subAllowance_info)
名称 低保人员信息
Id 居民基本信息
Id 低保证号 低保原因(此处可以作为常量) 开始时间 结束时间 保障金额 备注 添加时间 添加人ID 修改时间 修改人ID 是否启用
代码 sub_allowance_info_id resident_base_info_id sub_allowance_number sub_allowance_cause_code sub_allowance_startDate sub_allowance_endDate sub_allowance_money sub_allowance_remark
add_time add_user_id modify_time modify_user_id is_enable
数据类型 int int varchar(20)
int char(10) char(10) float(8,2)
text datetime int datetime int bool
长度 主要的 20 10 10 8
TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
表4.3 社区救助失业人员信息表(CA_unemployed_info)
名称 失业人员信息Id 居民基本信息Id 失业档案号 失业日期 原职业Code(此处作为常量引
用) 原工作单位 就业状况Code(此处作为常量引用) 求职意向Code(此处作为
代码 unemployed_info_id resident_base_info_id
unemployed_FN unemployed_date original_professional_co
de
original_work_unit employment_status_code
数据类型 int int varchar(20) char(10) int varchar(50)
int
长度 主要的 20 10 50
TRUE FALSE FALSE FALSE FALSE FALSE FALSE
job_intension_code int FALSE
14
常量引用) 要求月收入
备注 添加时间 添加人ID 修改时间 修改人ID 是否启用
required_monthly_income
remark add_time add_user_id modify_time modify_user_id is_enable
表 4-4 社区救助老年人信息表(CA_old_people_info)
float(8,2)
text datetime int datetime int bool
8
FALSE FALSE FALSE FALSE FALSE FALSE FALSE
名称 老年人信息Id 居民基本信息
Id 工作时间 退休时间 退休金(pension) 居住情况(此处作为常量引用) 退休单位(此处作为常量) 配偶情况(此处作为常量引用) 目前状况(此处作为常量引用,同上即可) 经济来源(此处作为常量引用) 特殊情况(此处作为常量引用)
备注 添加时间 添加人ID
代码 old_people_info_id resident_base_info_id
start_work_date retire_date pension reside_status_code retirement_unit_code partner_status_code
数据类型 int int char(10) char(10) float(8,2)
int int int
长度 主要的 10 10 8
TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
current_status_code int FALSE
source_of_finance_code special_situation_code
remark add_time add_user_id
int int text datetime int
FALSE FALSE FALSE FALSE FALSE
15
修改时间 修改人ID 是否启用
modify_time modify_user_id is_enable
datetime int bool
FALSE FALSE FALSE
表4-5 社区救助残疾人信息表(CA_disability_info)
名称 残疾人信息Id 居民基本信息Id
残疾证号 残疾状况(作为常量引用) 监护人 劳动能力(作为常量引用) 技能特长 备注 添加时间 添加人ID 修改时间 修改人ID 是否启用
代码 disability_info_id resident_base_info_id disability_number disablitiy_status_code
guardian
labour_capacity_code
skill remark add_time add_user_id modify_time modify_user_id is_enable
数据类型 int int varchar(20)
int varchar(10)
int varchar(50)
text datetime int datetime int bool
长度 主要的 20 10 50
TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
16
第5章 模块设计
系统模块概述:能够实现对小区业主信息的录入、维护、查询以及删除的功能;完成对物业工作人员信息的录入、维护、查询和删除功能;生成对小区业主资料和物业工作人员信息的报表;维护管理员的信息;可对系统的基本常量进行维护等。
5.1 登录系统的设计与实现
功能描述:对登录系统的用户进行验证,只有合法的用户才能登入系统,否则弹出对话框提示错误信息;此外,加入验证码验证,首先对验证码进行校验,正确则对数据库查询并验证用户是否合法;支持单用户安全登录操作,同一个会话是不能有两个用户同时存在的,也就是说,在浏览器多个窗口中不能登录多个用户,会强制下线上一个登录的用户,避免session的混乱带来的严重后果;用户强制下线实现,可选择强制下线当前登录的用户。
具体设计与实现:考虑到系统访问安全,在没有登录系统的情况下,会通过url重定向跳转到登录界面,并取得用户名输入框的焦点;在登录超时后,系统自动跳转到登录界面,重新进行登录;系统监听键盘回车事件,会对输入进行不为空验证,并对验证码、用户名和密码进行匹配。并给出相应的响应。
在不同的浏览器中登录同一个用户是不允许的,通过每个会话的sessionId的不同进行判断,每次登录后在上下文环境(ServletContext)保存登录用户名、当前登录用户的sessionId(key,value形式),存储登录用户的信息,并在session对象中,存储当前sessionId以及登录名;然后查询重复登录或非法操作时,通过sessionId取得对应的登录名,最后在ServletContet对象中判断通过用户名查询对应的sessionId是否能和当前的sessioId 进行匹配;如果重复登录,此系统采取提示强制前一个用户下线的确认选择策略,以达到模拟单点登录的效果。
验证码的获取:设计并实现验证码的模块,利用BufferedImage对象生成图片对象,通过Graphics2D画图,前台通过动态方法调用的方式取得验证码图片。
5.2 系统访问安全性设计与实现
功能描述:当用户被强制下线,也就是当前登录失效的情况下,用户操作需要阻止并跳转到登录界面。
利用filter(过滤器)对访问的请求进行过滤,如果当前非法操作(如已经下线等)则主动跳转到登录界面。代码如下:
public class SecurityVisitFilter implements Filter {
17
private HttpSession session; //context
private ServletContext context;
private static final String REDIRECT = \
('login.action','_top')