asp.net小区物业综合管理系统论文_第1页
asp.net小区物业综合管理系统论文_第2页
asp.net小区物业综合管理系统论文_第3页
asp.net小区物业综合管理系统论文_第4页
asp.net小区物业综合管理系统论文_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

-PAGE5-绪论本课题提出的背景是我国“十二五”规划建设的城镇化工作部署,根据党的十八大报告所提出的城镇化建设的质量目标,为了适应现代化建设的需要和日益增加的用户群体,我们提出了开发小区物业管理系统的课题。随着我国经济发展和城市开发,住宅小区越来越成为居住的主流,小区物业管理是针对当代社会这一市场需要应运而生的。用计算机操作的小区物业管理网是为小区管理者和小区用户更好的维护各项物业管理业务处理工作而开发的一个平台,根据需求分析,实现小区管理业务,效益已越来越明显。因此,开发这样一个小区物业管理网成为很有必要的事情。而要实现这一功能,就要求物业管理者配备一套高效率的管理网络系统,并以最快地速度响应用户地要求,及时为用户提供服务,为住户提供一个高效、舒适地居住、生活环境。住宅小区的物业管理准确地讲应是指对以居住为主要功能的物业进行管理。除住宅还应包括公寓、别墅等。本网站系统可以彻底解决手工计算、抄写物业管理中房产资料、业主资料、住户资料以及文件档案等操作时数量庞大地难题,也可以有效避免长时间无法即时查询某房产或业主资料的繁琐性。随时按照业主名称、房号、房屋类型、房间朝向、面积等多种条件任意查询,减少重复,提高工作效率。小区物业管理开发的意义随着市场经济的发展和人们生活水平的提高,住宅小区已经成为人们安家置业的首选,几十万到几百万的小区住宅比比皆是。人们花的钱越多,不但对住宅的本身的美观、质量要求越来越高,同时对物业小区的服务和管理也要求很高,诸如对小区的维修维护,甚至对各项投诉都要求小区管理者做的好,做的完善。这样要求小区管理者对物业管理进行宏观的和微观的细致管理,其中最好的办法是用计算机操作的小区物业管理系统来实现对小区物业的管理,这就为我们设计小区物业管理系统提供了市场需要。而我们设计的小区物业管理系统在现代社会是最热门的行业,是最关切老百姓实际生活的设计,各种人性化的配置,使管理者和业主对住宅小区中的事物能更方便、更快捷、更满意的得到答复。伴随着小区的规模不断扩大和住户的不断增多,像小区中的汽车,小区附带设施,小区的各项维修、投诉等都将越来越复杂,工作量也将越来越大。但一直以来人们使用传统人工的方式管理各种数据,这种管理方式存在着许多缺点,比如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。随着科学技术的不断提高,计算机科学技术日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对企业单位的各项信息进行管理,具有手工管理所无法比拟的优点。例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高工作的效率,也是企业的科学化、正规化管理与世界接轨的重要条件。因此,开发这样一套小区物业管理系统软件成为很有必要的事情,在下面的各章中我们将就本次毕业设计我所开发的小区物业管理系统,谈谈其开发过程和所涉及到的问题及解决方法。小区物业管理的发展过程传统意义上的物业管理起源于19世纪60年代的英国。由于工业革命的发展,大量农村人口涌入工业城市,引起了对城市房屋需求的增加,但对其缺乏管理导致了诸如房屋破损严重、居住环境日趋恶化等社会问题。当时,英国有一位名叫奥克维娅•希尔(OctaviaHill)的女士迫不得已为其名下出租的物业制订了一套规范租户行为的管理办法,出乎意料地收到了良好效果,招致当地人士纷纷效仿。这可以说是世界上最早的“物业管理”。随着现代科学技术的进步和市场经济的迅速发展,小区物业管理的范围日益扩大,管理程度也日益复杂。面对激烈的市场竞争和人民群众对改善物业环境的渴望,物业管理单凭依靠物业管理者的丰富管理经验和高超的管理艺术已经远远不能适应21世纪对科技进步和小区物业管理飞速发展的客观要求,小区物业管理全面实现管理现代化的势头已是势不可当。伴随着物业管理的现代化进程,小区管理信息系统也经历了3个发展过程。单项数据处理阶段该阶段由于计算机硬件本身的局限,软件系统及外部设备发展不够完善,此时的小区管理系统仅能模仿手工管理方式,多用于简单的处理物业、计划、统计等的事务性工作,是小区管理系统用于管理的低级阶段。2.2数据综合处理阶段该阶段的主要特点是:小区管理系统由单项数据处理发展到具有一定反馈功能的子系统管理,小区管理系统出现分时系统,单级发展成网络,信息处理由批处理方式发展为实时处理方式。管理信息系统阶段随着计算机广泛应用于管理,以及信息论、控制论、系统工程等优化理论在软件程序中的应用,使计算机具有存储数据的功能,即数据库的出现和各种通讯网的建立,促使小区管理信息系统由管理某个子系统而发展为全面管理系统,由简单的运算,发展到控制制订计划、编制报表、提供高层决策等的管理信息系统阶段。该管理信息系统的特点是强调从系统的角度来处理事务,力求达到全面最优,建立以人为主体,计算机为助手的人-机自动化管理系统;依靠计算机对各种信息处理和综合,使管理做到有序的实时处理。综上所述,从三个发展阶段中,我们不难看出,当前的小区物业在信息管理系统的应用,还处于第二个阶段向第三阶段发展与完善的时期。因此,小区管理信息系统在小区物业管理中的应用还真是任重而道远。小区管理信息系统的发展趋势小区管理信息系统在我国很多小区已经得到了应用,其效果是明显的。一方面是取得了可计量的直接效果,如节省了人力,减少了费用,防止损失,增加收益等;另一方面取得的效果是无形的,是无法直接计量的。如提高了企业的管理水平,提高了管理人员的素质,促进了管理的现代化等,而这些效果的取得正是由于小区管理信息系统应用于企业管理的各个方面、各个层次的结果。如决策、计划、生产过程等。同样,要使小区管理信息系统在小区物业管理中发挥其应有的效果,就要不断地拓宽小区管理信息系统在物业管理中的应用范围,使小区管理信息系统真正成为管理的助手。因此,从小区管理信息系统应用范围的趋势看,应在下述3个方面进行开发。大力开发物业管理的规划与决策软件不言而喻,物业管理不仅是为房屋及其设备设施等进行维修保养,对治安、环卫、小区绿化等进行定期管理,而且它还要为住户提供全方位的管理服务,如建立商场、医院、学校及一些家庭生活上的需求服务等。这就要涉及到整个物业管理的规划和决策。为此,不仅需要管理者具备管理经验,还需要依赖管理者对信息的处理、投资理财、大量的原始信息、资料整理以及严格的投资计划可行性分析等能力,如若没有计算机的协助处理,管理人员要在短期内提出规划和决策方案是相当困难的,而采用微机情况就不一样了,它可对各种方案进行计算机模拟并加以评价,很快就可以为管理者提供出快捷的科学决策依据。开发出这样一套规划与决策软件,马上会使物业管理在短时间内达到一个较高的水平。大力开发物业管理范围的计划管理软件在计算机模拟结束和决策方案制定后,管理的任务就是依据模拟结果,选用最佳决策方案,然后就是具体地执行计划。可以说,包括收集、统计资料在内的绝大部分工作都可以由计划管理软件来完成。由于物业管理与服务项目较多,以往通过人工去制定计划,还有赖于对有关资料的收集、记录和分析十分繁琐。若是有了软件程序使用计算机就可以完成统计预测,以便管理人员在掌握所需情况后,有的放矢地制订出房屋、设备与设施的维修计划,通过信息反馈系统,计算机还可对维修计划执行情况,做出统计分析,并且能够提供房屋、设备、设施的完好率、故障率和其他具体情况。开发出这样的计划管理系统软件,已是计划管理工作的多年愿望。大力开发财务会计系统软件物业管理作为自主经营、自负盈亏、自我发展的经济实体,其资金的运营状况是其存在和发展的关键。作为小区物业及其物业管理的资金来源,一方面来自管理服务收入;另一方面还要开展多种企业化服务流动,借以扩宽资金来源渠道。由于小区物业管理涉及的业务范围,多而杂,管理人员要详细、全面了解其资金的收支状况,并不是件易事,若大力开发物业财务会计系统软件,就使物业管理的财务状况一目了然,不仅使管理者对具体业务的资金收支状况了如指掌,而且还可借助计算机进行新的投资计划决策和及时调整原有计划中的失误。然而,以计算机为信息处理工具,使财务会计进入全面的电算化编程系统,替代手工核算,尚存在较多的困难,除经济条件的限制外,包括小区物业财务会计在内的企业会计系统不是独立存在的系统,它不仅与企业内部发生直接联系,它还要和外部、上级主管、财税、银行等发生经济往来,所以难度很大,但根据实际需要,大力开发内部财务会计系统软件的范围、目标是可以积极探索的。总之,对小区物业管理信息系统应用及其发展趋势的认识,应持机遇与挑战并存的态度。办公自动化、小区服务信息化,是社会科技进步赋予物业及其物业管理的历史必然,是人类社会进入21世纪之后,所要经历的必由之路。但人类社会要全面实现电脑社会,矛盾也是客观存在的。迎接挑战,探索适合小区物业管理信息系统管理的新路,应是我们追求的最终目标。相关技术简介ADO.NET技术ADO.NET是与数据库访问操作有关的对象模型的集合,它基于.NETFramework,在很大程度上封装了数据库访问和数据操作的动作。[1]从本质上来讲,ADO.NET就是一组类库,这组类库可以让我们通过程序的方式访问、操作数据库。System.Data这组类是用来操作数据库,它提供了统一的编程接口,主要由两部分组成:数据提供程序(DataProvider)和数据集(DataSet)。数据提供程序(DataProvider)是专门为数据处理以及快速地只进、只读访问数据的组件,主要包括四大类常用对象(如下图2-1所示):(1)Connection:负责建立一条从应用程序到数据库的连接通道;(2)Command:负责向数据库提交一条命令(SQL语句),可以完成对数据库数据的查询和修改等操作,并返回相应的结果集;(3)DataReader:在保证数据库连接为Open状态下,负责提供只进、只读地方式快速读取Command对象获得的数据集,适合从数据库中读取大量数据;(4)DataAdapter:主要用来承接Connection对象和DataSet对象。图2-1ADO.Net结构图数据集(DataSet)对象用来将查询结果填充到本地内存中,这样连接断开、服务器断开都不影响数据的读取,提供的是一种断开式数据访问。数据集(DataSet)本身不与数据发生联系,而是由DataAdapter对象负责填充或更新DataSet对象,通过对DataSet对象的操作也可以完成对数据库的相关操作。因此,与数据库里的表结构类似,DataSet对象的结构如下图2-2所示。图2-1DataSet对象模型.NET框架与ASP.Net简介(1)(2)ASP.Net是一种动态网页技术,在服务器端运行.Net代码,动态生成HTML,然后响应给浏览器。ASP.Net主要包括:一般处理程序、WebForm和MVC4(Model、View、Controler)等。一般处理程序(HttpHandler)是一个实现System.Web.IHttpHandler接口的特殊类,它主要负责处理它所对应的URL的访问请求,并接收客户端发出的访问请求信息(请求报文)和产生响应内容(响应报文),访问服务器端的文件系统,连接数据库并开发基于数据库的应用,调用其他类等。WebForm分为两个文件aspx(前台页面)和aspx.cs(后台页面),aspx是页面模板,服务端的C#代码是定义在aspx.cs中。aspx控制页面的展示,cs控制程序逻辑。aspx最终也会被编译生成一个类,这个类是继承自aspx.cs的类。(3)浏览器向服务器发送请求主要通过两种方式:GET请求和POST请求。GET是通过URL传递表单值,POST传递的表单值是隐藏到HTTP报文中,URL中看不到。GET传递的数据量是有限的,如果要传递大数据量不能用GET,POST则没有这个限制。GET方式发送的URL格式请求中,在服务端文件名后跟着“?”,由于客户端可能向服务器端提交多个键值对,键值对之间用“&”进行分割。(4)ASP.NET状态的传递和保存主要与Session和Cookies有关。Cookie是和站点相关的,并且每次向服务器请求的时候除了发送表单参数外,还会将和站点相关的所有Cookie都提交给服务器,是强制性的。Cookie也是保存在浏览器端的,而且浏览器会在每次请求的时候都会把和这个站点的相关的Cookie提交到服务器,并且将服务端返回的Cookie更新回数据库,因此可以将信息保存在Cookie中,然后在服务器端读取、修改。服务器返回数据除了普通的html数据以外,还会返回修改的Cookie,浏览器把拿到的Cookie值更新本地浏览器的Cookie就可以。Session是存在服务器端,目的是一样的:保存和当前客户端相关的数据(当前网站的任何一个页面都能取到Session、Cookie)。Session(会话)有自动销毁机制,如果一段时间内浏览器没有和服务器发生任何的交互,则Session会定时销毁。这也就是为什么一段时间不操作,系统就会自动退出。JavaScript与jQuery技术JavaScript是一种脚本语言,它的出现使得网页和用户之间实现了一种实时的、动态的和交互的关系,使网页包含更多活跃的元素和更多精彩的内容。[2]由于每种控件的操作方式不统一,不同浏览器下又存在区别,要编写跨浏览器的JS程序非常麻烦。为了解决这些问题,出现的很多对JavaScript的封装库,比如:Protorype、Dojo、ExtJs、MooTools和jQuery等,极大地方便了开发。jQuery是一个轻量级的JavaScript库,凭借着其出色的DOM操作、可靠的事件处理、简洁的语法、完美的跨平台兼容性等优点,吸引了很多开发人员的关注。DOM(DocumentObjectModel)对象是一种独立的访问、操作HTML文档内容和结构的文档对象模型,每一个DOM都可以表示成一棵树;jQuery对象是通过jQuery包装DOM对象后产生的对象,二者可以相互转换。Ajax技术Ajax(AsynchronousJavaScriptAndXML)是一种新型的基于JavaScript的进行页面局部异步刷新的技术。普通的页面每次执行服务端的方法的时候都要刷新当前的页面,极大地降低了用户的操作方便性和交互体验度,被视为一种不友好的交互方式。在使用Ajax向服务器发送请求和获得服务器返回的数据并且更新到界面中,不是整个页面刷新,而是在HTML页面中使用JavaScript创建XMLHttpRequest对象来向服务器发出请求以及获得返回的数据,这样页面就不会全部刷新了,只在需要更新的位置刷新数据即可。XMLHttpRequest是AJAX的核心对象,发送异步请求、接收响应以及执行回调函数都由它来完成。Ajax的工作原理相当于在浏览器和服务器之间添加了一个中间件,使得浏览器的请求和服务器的响应异步化,使得用户可以在浏览页面的同时在后台向服务器发送请求,同时静默的返回服务器的处理结果,并更新到当前页面元素的相应位置处。Ajax拥有一个数据传输标准JSon,它是一个规定了以什么样的格式将复杂对象序列化为一个字符串的标准,在浏览器端再将字符串反序列化为JavaScript可以读取的对象,与XML相比具有明显的简洁性和方便性。VisualStudio2012集成开发环境本章小结本章主要介绍了小物业管理系统设计过程中所使用的相关技术,主要包括:ADO.NET的数据库技术,ASP.NET的状态保持机制,异步刷新的Ajax技术和微软的集成开发环境VisualStudio2012等。本章主要挑选了较为常用的技术,以期达到较好的用户体验。系统需求分析需求分析活动是软件开发过程中的关键活动之一,它的主要目的是在产品构建前确定系统需要符合的条件或者具备的功能。“边建边改”的系统设计方法无法满足整体设计的需求,非常容易产生错误或者功能不完善的系统,也容易使程序开发人员陷入困境。在没有完全掌握系统需求的情况下,不应盲目地着手编码。本章主要通过面向对象的需求分析建模方法,通过统一建模语言(UML)和数据流程图(FDD)的方法,展现小区物业管理系统系统需求概述传统的手工管理模式不仅效率低,而且非常容易产生错误;不仅浪费大量的人力、物力资源,而且难以实现管理的规范化、标准化,这些都极大地阻碍了社会经济的发展。然而,计算机的出现极大地方便了人们的生活,依附于计算机的各种管理系统也应运而生,随之产生的则是各种社会管理效率的显著提高。因此,本系统的设计初衷之一便是极大地方便小区物业管理的工作,提高管理的效率,为人们的生活营造一个健康、方便、舒适的环境。功能性需求分析本系统的设计目的是面向小区的各项日常事物管理,旨在借助本系统,以最大的程度满足大多数人的工作、生产和生活需求,以最完备的视角应对可能产生的各种需求。从所涉及的对象上来看,本系统主要包括两大主体人群:物业公司和业主。下面分别对每个主体在各个不同方面的功能性需求进行分析。(可以扩充)物业方面需求分析物业公司作为小区管理的实际执行着,承担着艰巨而重要的责任,其管理职能是否完善,管理效率是否高,以及管理水平是否合格都是检测一个管理组织的重要指标。根据实际的调研和相关资料的分析,我所确定的物业公司在管理方面的需求主要包括以下几个方面:小区工作人员身份验证。作为一个系统,安全性必然是非常重要的,因此在访问每个页面之前都需要做一次安全性检测(身份验证),以保证不同级别的用户能够访问到相应权限的资源,并防止因为权限不清而导致错误的产生。小区基础设施的信息管理。大多数的小区物业管理系统所涉及的业主的基本信息都是户主的基本资料,也就是说,基本上是“一户一主”的情况。我们应该设法实现通过户主直接就可以找到其所居住的详细位置;同样,也可以通过不同的房屋信息直接找到相应家庭的户主信息。因此,我们在进行后续的设计时应该尽量将楼房(房间)的信息管理精确到每一个房间的具体地址,即可以以类似于“楼栋编号-单元编号-房间编号”的形式呈现。原则上这些基本信息在小区落成以后应该就是固定不变的,但是考虑到小区工作人员在实际开始录入这些信息的时候可能存在失误,可以只允许超级管理员进行修改,一般的工作人员只能浏览这些信息。通过有效的权限划分,保证信息的安全性与准确性。小区住户信息管理。住户(业主)作为小区物业管理的核心人群,他们的基本个人资料在整个管理系统的运行过程中起着非常关键的作用。根据目前小区管理系统的实际情况,我们只需要记录每个房间所对应的户主的基本信息即可,这些信息不仅应该可以涵盖户主的基本资料,而且应该能够应对大多数可能与户主产生联系的活动与事件,以便在第一时间找到(或者联系到)户主。为了能更全面的掌握小区里每一位住户的具体入住情况,并且能够最大程度地保护每一位住户的个人隐私,我们可以设计一个映射到每一位户主的家庭信息表,将每一位户主家里的每一位家庭成员都能包括在内,这样便可以将小区内的每一位住户都纳入管理的范围之内。住户信息的管理,必须能够实现住户信息的增加、删除、查询,并且能够及时更新户主的各项基本资料。小区物业工作人员信息管理。和小区住户的基本信息管理类似,我们也需要掌握每一位工作人员的基本信息,来实现管理的科学性、完整性和安全性。相对于住户的信息而言,物业工作人员的信息管理则属于人力资源管理的范畴,对于这些人员信息的管理只限在必要的时候能够查阅到相关人员即可,不需要涉及太多的逻辑控制方面的功能和需求。同样,对于这些人员的信息管理也应该实现最基本的增加、删除、修改和查询的操作,从而更好地实现有效地管理。小区收费管理。根据目前各地小区物业管理的现状和相关资料的分析,我们发现与用户日常生活紧密相关的传统收费项目(如:水费、电费、暖气费和天然气费等)都不需要物业公司的介入,只需要住户按月及时在网上银行支付即可。因此,这里需要物业公司来管理的收费项目只有诸如电梯费、卫生费、停车费、物业管理费等一些公共基础设施的费用。为了公平起见,我们不妨考虑为每一项费用设置不同的单价(每人次),并结合每一户的家庭成员人数信息进行相应的折算,最后给住户呈现出不同收费项目的实际所需缴费数额。小区停车管理。随着人们生活水平的提高,家家户户开始考虑购置私家车,车辆已经逐步成为人们日常生活的必需品,在人们的日常生活中处于举足轻重的地位。杂乱无章的随便停车不仅影响小区住户的出行,而且影响小区的整体环境,不符合现代住宅小区的建设目标和建设标准。因此,我们考虑将停车管理纳入小区物业管理的职能范围之内。一个良好的停车管理系统应该能够随时监测所有空闲停车位的位置,以方便新驶入车辆的停靠和登记;同样,当有车辆离开停车位时,系统也应该能够及时地更改相应的车位信息和停车信息。小区报修管理。虽然物业公司的职能是负责小区的各项基本食物的管理,并不负责小区建成之前的规划和建设工作,但是我们很难保证没一间房屋的都是符合最佳标准的,很难保证没一个房间里的设施都不会出现这样或者那样的状况;同时,考虑到每家每户的不同实际情况,我们考虑可以将报修管理纳入小区物业管理的职能范围之内。我们可以大致把需要报修的项目分为几个大的类别,供住户进行选择,同时考虑到不同的实际需求,可以允许住户可以在提交报修申请的同时简要介绍一下需要保修的内容,供物业工作人员参考。小区投诉管理。任何一个管理部门在开展工作的过程中都会出现或多或少的问题,有些问题难免会引起住户的反感。但是物业管理的职能不仅仅是管理,更多的应该是服务职能,应该认真听取住户的反馈意见,及时纠正工作过程出现的各种问题,从而实现小区物业管理的科学化。考虑到这一点,我们决定增加一个投诉管理模块,以接受住户的投诉和监督,更好的提高自身的管理水平。工作人员在接收到新的投诉请求时,应该及时受理,在确认了实际情况之后,及时答复住户相应的处理结果。小区公告信息管理。虽然水、电、暖、气等基础资源不由物业管理,但是这些资源的供应方很有可能因为施工等原因需要在某个时间段临时中断输送。如果在用户毫不知情的情况下,很容易给用户的不必要的麻烦;如果能够提前通知先关受影响的住户,则可以将影响有效降低。因此,我们不妨引入一个公告管理模块,将相关通知及时发布,让用户及时做好准备。除此之外,如果遇到国家、政府发布相关政策时,也可以通过这个模块进行发布,供用户参考。管理员在发布相关公告时应该尽可能提供一个简明扼要的标题,并提供公告的详细内容,以供住户进行仔细查阅。小区流动人口管理。流动人口的出入在一定程度上影响着小区住户的安全,为了将小区内外来人员犯罪的几率降到最低,我们考虑引入流动人口登记管理功能。外来人员(非小区内的固定住户)在进入小区时应该登记自己的主要个人信息,以方便在日后需要的时候查找相应时段的监控录像,寻找相应的可疑人员。系统用户管理。为了进行统一的认证管理,出于考虑系统安全性,我们为每一位户主分配一对用于用户身份验证的用户名和密码,住户和小区管理人员都可以凭借这个账号和密码登陆系统,完成不同的操作需求。业主方面需求分析相对于物业公司复杂而繁重的管理职能来讲,处于被服务方面的住户的需求则要简单许多。其所需要的功能主要集中在报修、投诉、查询收费和修改部分个人信息方面,但是这些需求在本质上都是与物业公司的相关功能性需求对应的。业主身份验证。与物业工作人员身份验证的目的一致,必要的安全性验证能够保障系统稳定、良好得运行,以最佳的状态为住户提供优质的服务。业主修改个人信息。作为物业管理系统中被管理的主体,用户个人的基本信息在整个系统中处于非常核心的地位,能否及时获得用户最新的个人信息,在一定程度上关系到整个系统的运行情况。如果用户每次需要更改个人信息时,都需要寻求物业工作人员帮助,这样做是非常浪费资源的,我们应该尽量允许用户及时更新自己过时的信息(如:联系方式等)。考虑到安全性问题,我们只允许住户修改除了姓名和性别以外的其他信息,在遇到需要变更户主的情况,需要有相关人员持相关证明和相关证件到物业管理部门申请变更。业主投诉管理。业主在遇到对于物业工作人员的服务不满意时,或者对于小区物业管理的现状存在异议时,可以提出自己的建议,对于物业提供的服务不满意时也可以投诉相关工作人员。以期更好地提高物业管理的水平,消除管理工程中出现的各种各样弊端,更好地服务于业主。业主报修管理。这里业主的报修需求来源与前述物业报修功能模块类似,业主在实际生活过程中,难免会遇到像水管破裂、电线短路等状况,在用户无法自行解决相关问题时,可以向物业管理部门提交报修申请,并简要介绍一下需要保修的内容,供物业工作人员参考。业主查看收费情况。业主在使用电梯、停车位等公共设施时,需要按照每户人数支付不同的使用费用。因此,用户需要能够随时查阅每个季度(或:每月/每年/每半年)的缴费情况,以便及时缴纳相应费用,不影响自己的日常生活。业主查看公告。在物业管理人员发布新的系统公告时,住户应该能够及时看到相应的公告及内容;此外,住户还应该在允许的情况下能够查阅历史公告。非功能性需求分析(需要修改/不像“需求”了、、、)作为一个有用户参与的小区物业管理系统,如果使用C/S模式架构,则每个用户的电脑都需要安装相应的客户端软件,并且只能在电脑面前进行操作;在没有电脑的情况,则很难进行相关的操作,不能够应对所有可能出现的情况;及时考虑可以做成APP手机客户端应用软件的形式,相信并不是每一位用户都愿意安装这样一个客户端软件。而如果采用B/S模式架构,只要用户能够上网,就可以自由、便捷的操作,完成相应操作需要。在智能机非常普遍的情况下,手机上网已经成为普通用户的日常必备需求,因此操作起来也是非常简单、易用的。综上考虑,我们决定采用B/S模式架构本系统,使用基于ASP.NET和IIS的“浏览器-服务器-数据库”的三层结构。本小区物业管理系统的设计目标是,提高物业管理人员的工作效率,营造舒适、安全的生活和满足业主及其家人的多方面的服务需求。系统有6个具体的设计目标:实用性。本系统是为了更好的管理小区的日常业务而设计的,因此所有的实际需求都是我们进行设计的最原始和最根本的需求,因此,它可以而且应该具有实用性。安全性。并不是每一个用户都可以进入本系统的,只有拥有得到许可的口令的用户才可以登录和进行相关操作,这也是一般系统所必须具备的最基本的条件。友好性。一个好的管理系统,应该能够给用户带来很好的用户体验。比如这里我们使用Web方式展现的系统,如果用户每次执行完一个操作,页面都会进行一次啊刷新,这必然是非常令人失望的。正是基于这一点,本系统在设计过程应该极力避免这种情况的产生。先进性。本系统采用B/S模式架构,使用当前比较流行的Ajax异步刷新技术,使用了基于JavaScript的jQuery技术等,在设计和实现上都具有先进性。开放性。本系统采用了C#语言编码,使用ASP.NET呈现,所以它构建的应用程序可以运行在几乎全部的平台上,具有良好的跨平台特性。本章小结需求分析能够确定系统要实现什么样的功能、完成什么样的操作。没有完善的需求分析,一切都是徒劳的;不能满足用户需求的系统,必然是一个失败的产品。因此本章着重对小区物业管理系统在功能性和非功能性方面的需求做了的详细分析,以期为后面的系统设计与实现奠定良好的基础。系统设计设计活动是软件开发过程的关键活动之一,它的主要任务是在产品设计过程中解决“如何做”的问题,即将软件的用户需求合理地变换成目标系统的体系结构、接口特征、模块逻辑、数据结构等。[3]张斌-软件工程-P103。系统设计原则与目标设计应该选择合适的技术。最先进的技术并不一定是最好的,也不一定是最合适的,最符合系统需求的技术才是最佳的选择。系统技术架构设计系统物理架构设计在需求分析中,我们已经讨论过,小区物业管理系统使用B/S架构设计更符合实际的需要,能更好地满足各种需求。因此,这里我们主要介绍一下B/S架构的特点和优势。B/S结构(Browser/Server,浏览器/服务器模式)是随着Internet技术的兴起而发展成的一种对C/S结构改进的系统架构模式。这种模式将系统功能实现的核心部分集中到服务器(Server)上,表现层(Browser)只实现少数的非关键性功能,用户只需要通过表现层(Browser)就可以与数据库进行交互,极大地简化了系统的开发、维护和使用。B/S架构的基本模型如下图4-1所示。图4-1B/S架构模式图B/S结构的主要优点有:操作简便,对用户要求较低。任何一位会上网的用户,肯定会使用网页浏览器,用户完全可以想浏览普通网站一样使用本系统。因此,任何新用户都能够很快适应B/S模式架构的系统,并且取得良好的用户体验;维护和升级方式简便。B/S模式将服务器与浏览器区分开来,所有因为升级或者维护所带来的更改操作,都只需要在服务器端进行即可。相对于C/S模式,省去了很大一部分软件升级所带来的不必要的麻烦。系统逻辑架构设计本系统使用了“界面层UI(UserInterface)—业务逻辑层BLL(BusinessLogicLayer)—数据访问层DAL(DataAccessLayer)”的三层逻辑架构模式,如图4-2所示。图4-2三层逻辑架构模式图在上面的三层模型中,Model(实体类)是在三层之间进行数据传递的,它并不占据一个具体的层。UI层调用BLL、BLL调用DAL;数据用Model传递,UI不能直接调用DAL。UI层与BLL层直接相关联,不用处理SQL语句,主要负责相关结果的呈现和采集,这一层是实际呈现给用户的具体操作界面以及接收用户请求的媒介。BLL主要完成系统所涉及的业务逻辑操作,作为本系统,最基本的操作就是增加、删除、修改和查询等。此外,BLL层还可以包含相关的逻辑判断。DAL层只有SQL语句和数据处理,其他层一般不应该出现SQL语句以及和ADO.NET相关的类。DAL层中只需要和数据库进行相关的操作,BLL中才有具体的业务逻辑。使用上述的三层结构不仅开发方便、不容易出错,而且三层的代码完全可以只需要一个人完成;UI层中没有复杂的代码,解耦,容易改变UI层技术;如果由WinForm改成ASP.NET只需要修改UI即可,如果由SQLServer改成MySQL只要修改DAL即可。系统功能架构设计物业的主要职能设计根据前面的需求分析,我们确定的物业公司的主要管理职能包括以下几个大的方面:基本资料管理、公共服务管理、公共服务管理、停车管理等。如图3.1所示。图4-3小区物业管理系统(物业)功能图各个功能模块的基本功能如下:(1)基本资料管理:主要负责公司员工的基本资料管理以及房屋基本资料进行管理。其中,员工资料管理主要是对员工资料进行建立档案;房产资料管理则是对已完工的房屋进行相应的数据资料登记,便于日后查询。(2)综合服务管理:管理处的日常事务以及小区住户的接待等工作由该部负责管理。负责管理的主要工作有:收取物业费、处理业主的投诉、管理住户信息等基本数据、发布小区规章及各种收费信息等。业主入住管理是对所有业主及其入住成员建立详细的个人档案,以供管理员方便地对相关信息进行查询、修改、维护和打印;投诉管理是对业主提出的不满意服务的投诉进行管理,并根据业主所投诉的对象、内容的不同,及时地反馈处理意见。同时,可对所有投诉进行统计和分析,以帮助改善和提高服务水平。(3)公共服务管理:主要负责小区内各项公共基础设施的正常使用,对用户的报修请求进行处理。以确保水电供给与供热、供气、排水、道路、场地、消防和安全监控等设备设施的正常运转。创造提供一个良好的学习环境和生活环境,让小区住户感到安全、舒适、文明、方便。业主的主要功能业主的主要功能需求包括:个人基本信息管理、公共服务使用、查询管理等。如图4-3所示。图4-3小区物业管理系统(业主)功能图(1)住户信息管理:该模块主要为了便于每一位业主及时更新自己的私人信息,每位业主都有一个登陆密码,他们可根据自己的需求随时修改自己的登陆密码,同时可以更改部分诸如联系方式之类的信息;管理员具有全部控制权限,可修改所以用户信息。(2)服务管理模块:可以使业主可以不必亲临客户服务部,而是通过上网实现各项服务的申请、投诉和报修登记。系统管理员将根据不同主的ID所申请的服务,进行审核。对于存在问题而导致不能按时为用户提供服务的,管理员将通知用户;反之,管理员将根据已审核服务单,通知相关部门进行处理。(3)查询模块:可以使业主根据物业管理处所分配的网络用户名和密码登陆网络,查询自己所需缴纳水、电、物业等相关费用。同时,业主可以随时查看小区所发布的一些公告。系统数据库设计本系统采用SQLServer2008R2作为数据库,数据库名为db_Property,其中包括12张数据表。下面分别详细介绍:系统E-R模型设计根据前面对于物业和住户两大用户群体的功能性需求分析,我们所确定的实体对象主要包括以下10个方面:住户信息实体,物业员工信息实体,楼房(房间)信息实体,收费信息实体,报修信息实体,投诉信息实体,公告信息实体,流动人口信息实体,停车信息实体,系统用户信息实体等。下面我们给出各实体所对应的E-R模型,为后续的数据表设计奠定基础。住户信息实体主要用于存储小区住户的基本信息,包括编号、姓名、性别、联系电话、身份证号、住址和头像等,其中编号(ID)作为唯一识别不同住户的标志。住户信息实体的E-R模型如图4-X所示:图4-x住户个人信息实体图物业工作人员信息实体主要用于存储小区物业工作人员的基本信息,包括编号、姓名、性别、联系电话、身份证号和头像等,其中编号(ID)作为唯一识别不同工作人员的标志。物业工作人员信息实体的E-R模型如图4-X所示:图4-x物业工作人员信息实体图楼房(房间)信息实体主要用于存储小区所有楼房(房间)的基本信息,包括编号、状态(是否入住)、面积、房屋图纸、详细地址等,其中编号(ID)作为唯一识别不同房间的标志。楼房信息实体的E-R模型如图4-X所示:图4-X楼房(房间)信息实体图收费信息实体主要用于存储小区的各项收费记录,包括编号、收费名称、收费相关的户主ID、收费日期和状态(是否欠费)等,其中编号(ID)作为唯一识别不同收费记录的标志。收费信息实体的E-R模型如图4-X所示:图4-x收费信息实体图报修信息实体主要用于存储小区住户申请报修的记录,包括编号、申请报修的住户ID、报修项目名称、保修内容简述、报修处理状态和处理结果等,其中编号(ID)作为唯一识别不同报修记录的标志。报修信息实体的E-R模型如图4-X所示:图4-x报修信息实体图投诉记录信息实体主要用于存储小区住户的投诉(建议)记录,包括编号、投诉(建议)日期、投诉(建议)内容和提交投诉(建议)的业主ID等,其中编号(ID)作为唯一识别不同投诉(建议)记录的标志。投诉记录信息实体的E-R模型如图4-X所示:图4-x投诉信息实体图系统公告信息实体主要用于存储小区管理员所发布的公告记录,包括编号、公告内容、公告发布日期和公告标题等,其中编号(ID)作为唯一识别不同公告记录的标志。公告信息实体的E-R模型如图4-X所示:图4-x公告信息实体图流动人口信息实体主要用于存储小区来访人员(非小区固定住户)的来访纪录,包括编号、姓名、身份证号和来访日期等,其中编号(ID)作为唯一识别不同来访纪录的标志。流动人口信息实体的E-R模型如图4-X所示:图4-x流动人口信息实体图停车信息实体主要用于存储和管理小区的停车记录,包括编号、车牌号、车位编号和停车业主的ID等,其中编号(ID)作为唯一识别不同停车记录的标志。停车信息实体的E-R模型如图4-X所示:图4-x停车信息实体图系统用户信息实体主要用于存储使用本系统的用户的登陆口令,包括编号、用户名和密码等,其中编号(ID)作为唯一识别不同用户的标志。系统用户信息实体的E-R模型如图4-X所示:图4-x系统用户信息实体图系统数据表设计还有“家庭表”!根据E-R实体模型,并结合实际情况,我们设计出下面的数据表。zhuhu(住户信息表):主要用于存储小区内业主的基本个人信息,鉴于小区里庞大的住户数量,很有必要建立一张来有效地进行管理。该表的结构如表4-1所示。表4-1住户信息表字段名数据类型描述主键外键zhIdint户主编号YesNozhNamevarchar(50)户主姓名NoNozhSexvarchar(50)户主性别NoNozhTelvarchar(50)户主联系电话NoNozhlfIdint户主编号房间NoYeszhUidvarchar(50)户主身份证号NoNozhImgvarchar(50)户主头像NoNozhIsDelbit是否(软)删除NoNowuye(物业工作人员信息表):主要用于存储物业工作人员的基本个人资料,这里的存储本质上相当于为每一位员工建立一份档案,目的仍然是对物业公司自身进行有效的管理。该表的结构如表4-2所示。表4-2物业工作人员信息表字段名数据类型描述主键外键wyIdint物业员工编号YesNowyNamevarchar(50)物业员工姓名NoNowySexvarchar(50)物业员工性别NoNowyTelvarchar(50)物业员工联系电话NoNowyUidvarchar(50)物业员工身份证号NoNowyImgvarchar(50)物业员工头像NoNowyIsDelbit是否(软)删除NoNoloufang(楼房基本信息表):主要用于有效管理本小区内的各个房间的基本房屋资料,原则上表中的各项信息是不允许随便更改的。该表的结构如表4-3所示。表4-3楼房信息表字段名数据类型描述主键外键lfIdint房间编号YesNolfAddressvarchar(50)房间详细地址NoNolsScareint房间面积NoNolfStatebit房间状态(是否入住)NoNolfImgvarchar(50)房间平面图纸NoNolfIsDelbit是否(软)删除NoNosftype(收费类型信息表):主要用于有效管理物业公司的收费项目,这里并不包括水电费等,只包括一些公共基础服务使用费。该表的结构如表4-4所示。表4-4收费类型信息表字段名数据类型描述主键外键sftIdint收费项目编号YesNosftNamevarchar(50)收费项目名称NoNosftPriceint收费项目价格/人NoNosftIsDelbit是否(软)删除NoNoshoufei(收费信息表):主要用于有效管理小区内各项收费情况,为业主和小区的财务提供一份详细的依据。该表的结构如表4-5所示。表4-5收费信息表字段名数据类型描述主键外键sfIdint房间编号YesNosfTypeint收费项目名称NoYessfDatevarchar(50)收费日期NoNosfzhIdint收费条目对应的住户IdNoNosfStatebit收费状态(是否欠费)NoNosfIsDelbit是否(软)删除NoNoliudong(流动人口信息表):主要用于有效管理本小区内的各个房间的基本房屋资料,原则上是不允许随意进行更改的。该表的结构如表4-6所示。表4-6楼房信息表字段名数据类型描述主键外键ldIdint房间编号YesNoldNamevarchar(50)来访人员姓名NoNoldUidvarchar(50)来访人员身份证号NoNoldDatevarchar(50)来访日期NoNoldIsDelbit是否(软)删除NoNochewei(车位状态管理):主要用于管理车位的使用状态,为停车管理提供依据和信息。该表的结构如表4-6所示。表4-6车位状态表字段名数据类型描述主键外键cwIdint车位编号YesNocwStatebit车位状态(是否空闲)NoNocwIsDelbit是否(软)删除NoNotingche(停车信息表):主要用于有效管理本小区内的停车状况,应在一个和谐有序的公共停车秩序。该表的结构如表4-3所示。表4-3停车信息表字段名数据类型描述主键外键tcIdint停车编号YesNotccwIdint车位编号NoYestczhIdint停车的户主IdNoYestcPidvarchar(50)车牌号NoNotcIsDelbit是否(软)删除NoNobaoxiu(报修信息表):主要用于处理业主的报修请求,为用户提供更完善的服务。该表的结构如表4-3所示。表4-3报修信息表字段名数据类型描述主键外键bxIdint房间编号YesNobxNamevarchar(50)报修类型NoNobxzhIdint申请报修的业主IdNoYesbxDatevarchar(50)报修日期NoNobxContentvarchar(MAX)报修项目简述NoNobxStatebit报修是否受理NoNobxResponsevarchar(MAX)报修处理结果bxIsDelbit是否(软)删除NoNotousu(投诉信息表):主要用于有效管理本小区内的各个房间的基本房屋资料,原则上是不允许随意进行更改的。该表的结构如表4-3所示。表4-3投诉信息表字段名数据类型描述主键外键tsIdint投诉编号YesNotsContentvarchar(MAX)投诉内容NoNotsResponsevarchar(MAX)投诉处理意见NoNotsDatevarchar(50)投诉日期NoNotszhIdint提交投诉的业主IdNoYestsIsDelbit是否(软)删除NoNogonggao(公告信息表):主要用于有效管理本小区内的各个房间的基本房屋资料,原则上是不允许随意进行更改的。该表的结构如表4-3所示。表4-3公告信息表字段名数据类型描述主键外键ggIdint公告编号YesNoggTitlevarchar(50)公告标题NoNoggDatevarchar(50)公告发布日期NoNoggContentvarchar(MAX)公告内容NoNoggIsDelbit是否(软)删除NoNosuser(系统用户信息表):主要用于有效管理本小区内的各个房间的基本房屋资料,原则上是不允许随意进行更改的。该表的结构如表4-3所示。表4-3系统用户信息表字段名数据类型描述主键外键suIdint系统用户编号YesNosuNamevarchar(50)系统用户名NoNosuPwdvarchar(50)系统用户密码NoNosuIsDelbit是否(软)删除NoNo数据表关系图根据上面对各个实体的属性分析和数据表的设计,可以确定各个信息实体之间的引用关系。因此,我们有如下图4-X所示的数据表关系图。(换掉!!!)图4-X数据表关系图本章小结本章详细介绍了小区物业管管理系统的系统概要设计。首先,我们根据系统设计的一般原则和目标,详细介绍本系统所采用的物理架构模式和逻辑架构模式,然后介绍了本系统主要实现的功能模块,最后,对本系统所使用的数据库进行了详细的设计。系统实现软件开发的最终目的是生产出符合用户需求的功能完善的高质量产品,有了前面对于系统所进行的需求分析和设计,下面需要完成的任务就是将系统“做出来”,即系统的实现。系统实现主要完成对于设计阶段所设计的功能模块在代码级别上的实现,是软件开发过程中最基础和关键的步骤。下面分别对本系统功能模块的实现过程进行详细阐述。系统公共模块实现公共类的设计是程序开发过程中非常常见一种设计模式,它把一些常用的方法函数以类的形式进行封装成一个类库,并可以让不同的项目以using的方式引用并使用这些类,从而极大地降低了代码冗余和不必要的资源浪费。母版页的使用在Web开发过程中,总会遇到外观和行为都相同的页面,如果能够利用一个页定义所有页或者一组页面的相同外观和通用行为,将会减轻开发人员的编码负担。[XXX]母版页的使用正是为了实现这一功能,它不仅提供了共享的代码,供系统内所有页面使用,而且提供一个content标签,供内容页进行填充。使用母版页可以集中处理页的通用功能,以便通过一处修改实现整个系统的修改。母版页本质上就是一种特殊的ASP.NET控件,在母版页中通过使用ContentPlaceHolder控件,为内容页划定一个可以填充展示的区域。而对于待填充的内容页,本质上和普通的.aspx页面没有区别,只是在新建的时候需要选择母版页进行绑定,然后在母版页定义的占位符(子页面对应为content标签)处填充相应的代码即可,这里需要注意的是,内容页里的Content服务器控件的ContentPlaceHolder属性值必须与母版页中ContentPlaceHolder服务器控件的属性值匹配。当浏览器请求子页面时,子页面相当于是把母版页的代码取出来,并将内容页的局部代码添加到母版页中,合成一个新的页面的HTML代码,经浏览器解析后呈献给用户,与独立重复编写每一个页面的代码没有任何区别。本系统主要在母版页创建应用与所有页面的菜单,以方便物业工作人员快捷的进行相关操作的选择。我们将系统页面大致分为两部分:母版页部分和内容页填充部分,如下图5-1所示。图5-x数据库操作类的设计作为一个管理系统,最基本的需求就是频繁的与数据库进行交互,即不断地向数据库发送查询、修改等操作请求和返回操作结果的过程。因此,我们考虑将这些操作封装一个数据库操作类—DbHelperSql.cs,这个类主要包括以下X种操作:查询数据表功能(GetTable()),执行单条非查询(增删改)功能(ExcuteNonQuery()),执行多条非查询(增删改)功能(ExcuteNonQuerys()),执行查询单个值功能(ExcuteScalar())等。GetTable():主要负责根据SQL查询语句返回相应的数据表,并将结果存储在DataTable中。ExecuteNonQuery():主要负责执行单条非查询语句,即执行Insert/Delete/Update三种基本语句,返回的是数据库中受影响行数。ExecuteNonQuerys():主要负责执行多条非查询语句,本质上与执行单条非查询语句是一样的,只是接受多个SQL语句参数,返回的也是数据库中受影响行数,这里虽然是执行多条非查询语句,但实际实现上仍然是分条执行的,即先将参数存储到数组中,然后循环取出各个参数,分别执行。ExecuteScalar():主要负责执行单个值的查询,取得结果集的首行、首列的值。因为这一列的类型不确定,所以返回的是Object类型,需要我们自己进行类型转换。需要注意的是,这里我们所设计的数据库操作语句都是采用参数化查询的方式进行的,即:在交给Command对象的SQL语句中,用一个@加上几个字符,组成的一个参数名字,如:@name;然后借助Parameter类,来创建参数对象,并且交给Command对象,一起发送到数据库引擎执行。此外,为了程序的稳定性,在所有设计数据库相关操作代码部分,我们都是用try/catch语句进行容错处理。验证码的使用Ajax分页生成缩略图系统登录模块的实现父页面验证登陆出于安全角度考虑,在用户访问每一个页面时,我都们都需要做一个安全性检测(登录验证),如果未登录或者登陆超时,则跳转到登陆页面,否则允许用户继续操作。我们最开始想法时在母版页后台代码中的Page_Load()里面进行统一的身份验证,但是在实际测试时发现,内容页后台代码中的Page_Load()函数先于母版里的Page_Load()函数执行,也就是说,在执行完内容页的Page_Load()函数之后才执行身份验证,这种设计方式实际上是不起作用的。因此,不能将身份验证放在母版页中进行验证。我们考虑在内容页进行身份验证,但是如果在每一个内容页面都写一个身份验证的操作,显然会造成非常大的代码冗余,因此,我们考虑降身份验证写在一个父页面类中,并让每个内容页都继承自这个父类,从而很好地解决了身份验证的问题。关于身份验证函数的具体位置,我们首先考虑的实在父页面类的构造函数中进行,但是这与ASP.NET的请求机制有冲突。当前Page类中的Session是在处理管道的第9-11个事件时才会为页面对象的Session属性赋值,而页面对象是在第8个事件时被创建的,即:使用构造函数进行验证时,在第8个事件就已经执行了构造函数,此时Session属性还未被赋值,无法验证身份权限。因此,不能使用构造函数验证登陆权限。此时,只能在父页面的Page_Load()函数中进行身份验证,此时父类的Page_Load()会被Page类的页面生命周期调用,即在页面生命周期的第3个事件中就执行当前页面的Page_Load()。此时内容页没有Page_Load(),只有父页面类中有Page_Load(),因此这是可以实现的。我们新建一个名为BasePage的父页面类,该类自身继承于Page类,然后在每个内容页都修改为继承自BasePage类。同时,考虑到不同内容页所需要展示的数据并不一样,可以使用模板模式,即将父页面类更改为抽象类,并提供一个抽象方法SonLoad(),并在内容页中重载SonLoad()函数,这样就可以在父页面类的Page_Load()函数中进行访问了。Session验证Session提供了一种把信息保存在服务器内存中的方式,它能存储包括自定义对象在内的任何数据类型。ASP.NET内置了Session机制,负责维护了一个名为Session池的键值对集合,其中每一个键值对中的Session对象本质上又相当于一个键值对。Session对象用于存储有关用户的信息,每个客户端的Session是独立存储。在整个用户会话过程中(浏览器关闭之前)都会保留此信息,当用户在应用程序中从一个网页浏览到另一个网页时,存储在Session对象中的变量不会被丢弃。当会话(Session)过期或终止时,服务器就会清除Session对象。Session本身也有超时销毁的机制。当浏览器发送页面请求时,首先检查是否有SessionID值。如果存在,则根据SessionID去Session池中寻找对应的Session对象;如果找到便会将找到的Session的引用,则将这个对象的应用交给当前页面额Session属性,并通过身份验证,允许继续执行操作。如果未提供任何SessionID值,则表明当前会话已过期或尚未开始,在服务器判断登陆口令正确后,由ASP.NET创建一个新的会话,并将相应的SessionID和Session对象保存到Session池中。创建并保存好之后,该会话的SessionID值会以Cookie的形式随响应报文一起被发送到浏览器。Cookie验证Cookie是一种能够让网站服务器把少量数据(4KB左右)储存到客户端的硬盘或内存,并且读取出来的一种技术。当用户浏览某页面时,浏览器接收到服务器的一个命令,在本地临时文件夹创建一个Cookie文件,该文件记录了用户ID、浏览历史等简单信息。当用户再次访问该页面时,浏览器会自动将属于该页面的Cookie对象以字符串的形式发送到服务器,服务器通过读取Cookie,得知用户的相关信息,就可以做出相应的动作。服务器返回的数据除了普通的HTML数据以外,还会返回修改的Cookie,并更新本地浏览器的Cookie。本系统负责接收用户登陆信息的页面为Login.html,负责处理前台所提交的登录信息的页面为user.ashx。在用户点击“登陆”按钮后,系统会将接收到的用户名、密码和验证码连接成字符串,使用jQuery的post请求将数据发送到后台的一般处理程序。$.post(targetUrl,dataStr+"&t=l",function(obj){//处理json返回值},"json");}此外,为了方便用户的操作,我们使用Ajax方式对用户输入的数据进行验证,比如当用户输入完用户名并将光标移到下一个文本框时,前台页面会向后台的一般处理程序页发送Ajax请求,验证输入的数据是否合法,并及时反馈显示给用户。本系统的登录过程同时使用了Session验证和Cookie验证,流程图如图5-X所示。图5-x系统登陆流程图基本资料管理模块实现住户基本资料管理根据实际的调研和查阅相关资料,并结合目前小区管理系统的实际情况,我们所确定的住户基本资料管理功能只需要记录户主的基本信息即可。住户信息的管理,必须能够实现住户信息的增加、删除、查询,并且能够及时更新户主的各项基本资料。增加住户信息。此功能主要在小区建成伊始、用户逐渐开始搬入的过程中大量使用到,操作本质是向数据库的zhuhu表插入一条新的记录。该功能的实现仍然包括前台的数据采集页面zhgl.aspx和后台的一般处理程序zhmgr.ashx。这里我们使用了jQuery的一个名为dialog的模态窗口插件,通过给“新增”按钮绑定onclick事件,在当前页面上一层弹出添加住户信息对话框。但是由于我们在设计住户表的数据库时,设置了一个zhImg(住户头像)属性,而该插件本身只支持文本数据传送,图片又只能以表单的形式进行提交。因此,我们考虑对模态窗口进行改造,在模态窗口中添加一个“提交”按钮,并将其type属性设置为submit,这样在新增用户信息的时候,就会把文本和图片一起提交到服务器。提交的过程主要通过下面这行代码实现:$("#fModify").submit();在后台的一般处理程序中,我们是根据前台页面传送过来的type字段的值来确定操作的类型,因为是使用submit方式提交,因此只能在模态窗口中增加一个名为type的隐藏字段,并将其value值指定为“a”,供后台处理程序进行检测和处理。这里还需要为模态窗口添加action属性,以指定请求提交处理的位置,同时enctype属性需要设置为“multipart/form-data”,否则无法成功提交。<formid="fModify"action="/manage/Action/zhmgr.ashx"method="post"enctype="multipart/form-data">在后台的一般处理程序中,文本字段的处理比较容易,这里主要说一下图片的处理。首先,我们需要验证上传的文件是否是图片,这个可以通过下面的语句实现:uploadFile.ContentType.Contains("image/");然后,需要限制一下上传的图片大小,当图片大小小于2B或者大于4MB时不允许上传,这个通过uploadFile.ContentLength来进行检测;最后,我们通过对上传过来的图片进行等比例的压缩,生成一张缩略图,并将该缩略图的名称存储在数据库中。这个过程通过调用前面设计的保存和生成缩略图函数FileHelper.SaveImgAndThumb()来实现。删除住户。此功能主要在用户搬离小区时使用,为了保存数据库的历史记录,这里我们使用“软删除”方式来实现,即在zhuhu表中设置一个zhIsDel属性,在需要删除用户时,将这个属性字段设置为true,从而不会再住户列表中出现。此外,考虑到用户交互的友好性,这里我们通过对页面DOM树的操作,来完成删除过程。即在用户点击“删除”时,onclick事件触发负责删除的函数,向后台的一般处理程序发送删除请求;同时,前台页面根据“删除”按钮所在的行,通过this传递改行的id值,并通过$(btn).parent().parent().remove()实现页面的无刷新删除。此外,我们还提供了批量删除的功能。批量删除的原理在本质上与删除单条记录的原理相同,只是此时需要获取的待删除ID数以字符串的形式传递到后台的一般处理程序。这里有一个非常关键的地方,就是在获取需要删除的行记录时,使用jQuery选择器来实现:varcks=$("input[name=chkId]:checked"),这里的chkId属性实是在生成表格行时为checkbox分配的name值。获取选中行的ID值通过下列代码来实现:$(cks).each(function(){//循环执行删除$nowRow=$(this).parent().parent();//获取当前被选中行的var$tds=$nowRow.children("td");//获取ID所在行记录data+=$tds[1].innerHTML+",";//获取ID所在列的元素值})然后使用data.substring(0,data.length-1)把最后一个“,”符号截掉,使用post请求传递给后台的一般处理程序;同时,与删除单条记录的DOM操作类似,这里通过对cks使用each(function())循环删除每条记录的DOM行元素。修改住户信息。这应该是住户信息管理过程中比较常见的一项功能。考虑到小区住户和小区工作人员职能的不同,我们只允许住户修改除了姓名和性别以外的其他信息,在遇到需要变更户主的情况,需要有相关人员持相关证明和相关证件到物业管理部门申请变更。与删除操作的设计目标一样,这里我们在设计修改功能时,对住户信息的修改也是通过对页面DOM树的操作来实现的。即在用户点击“修改”时,onclick事件触发负责修改的函数,向后台的一般处理程序发送修改请求。因为用户在执行修改时可能修改头像、重新上传图片,因此关于住户信息的修改操作应该与住户信息的新增一样,使用表单方式提交。后台处理表单提交的修改信息的操作函数如下:voidDoModifyWithImg(){//接收传过来的图片,并验证是否为图片;if(本次修改传了新的图片){//获取原来的图片路径//去数据库查询要删除的原来的图片if(图片大小<2B||图片大小>4MB)“ERROR!”//生成新的图片名//生成缩略图变名//保存图片和生成缩略图,直接覆盖原图FileHelper.SaveImgAndThumb(uploadFile,strOldSrc,"/upload",145,145);}//将其他数据更新到数据库}同时,前台页面根据“修改”按钮所在的行,通过this传递改行的id值,并通过$(btn).parent().parent().remove()实现页面的无刷新删除。查询住户。查询功能主要用于物业工作人员根据某项需求需要查询某个住户的资料的情况。这里我们只提供根据用户姓名执行的查询操作。在用户输入完需要查询的关键字并点击查询之后,页面会将查询请求发送到后台的一般处理程序,并调用相应的业务层(BLL)函数执行相关的数据库查询操作,最后返回查询操作的结果集,以列表的形式展现给用户。物业员工基本资料管理物业员工基本资料的管理本质上属于人力资源管理的范畴,主要是对物业工作人员建立一个基本资料库,只限在有必要的时候进行查阅和操作,这项功能不像住户基本信息管理一样,具有非常广泛的使用价值,这项功能的操作仅仅局限于wuye表操作本身。增加物业人员信息。此功能主要用于在物业公司有新员工加入时使用,操作的本质是向数据库的wuye表插入一条新的纪录,并将操作结果(成功/失败)返回。此功能实现的主要由前台的数据采集页wygl.aspx和后台的一般处理程序wymgr.ashx组成。因为我们为物业员工设置了wyImg(物业员工头像)属性,所以,新增物业人员信息的操作与新增住户信息的操作类似。关于处理表单提交头像信息的操作在前面已经详细介绍了,这里主要介绍一下其他文本信息的实现过程。后台的一般处理程序中与新增功能相关的函数是DoAddWithImg(),这个函数的伪代码如下:voidDoAddWithImg(){//处理图片数据(略)//处理文数据MODEL.wuye物业实体对象=new一个物业实体对象;{//从请求中查询各个属性对应的参数值,赋值给新建的物业实体对象wyName=请求字符串中查询到的与“姓名”相关的值;wySex=请求字符串中查询到的与“性别”相关的值;……//下同};try{bllwy.AddWithImg(modelzh);//调用业务逻辑层函数完成新增操作}catch(Exceptionex){//异常处理}}删除物业人员信息。此功能主要在物业员工辞职或离职时使用,这里我们使用的是“软删除”方式进行数据库的维护,操作的实质是将待删除记录里的wyIsDel属性值设置为true,这样就不会再物业人员列表中出现了。同样,我们对于物业人员信息的删除也提供批量删除功能,操作原理与住户信息的操作相同。修改物业人员信息。从实际需求来讲,此项功能只限必要时提供,并且应该由超级管理员负责执行比较合适,普通的物业工作人员只能够执行查看和查询操作。该操作的目的是及时更新过期的物业人员信息,以便能够及时掌握物业工作人员的信息。该操作的本质是对数据库中的一条记录执行update操作,并将修改结果更新到DOM行中对应的元素位置处。查询物业人员信息。查询功能主要用于在需要时查询某个物业工作人员的资料。这里我们只提供根据物业工作人员姓名执行的查询操作。在用户输入完需要查询的姓名关键字并点击“查询”之后,页面会将查询请求发送到后台的一般处理程序,并调用相应的业务层(BLL)函数执行相关的数据库查询操作,最后返回查询操作的结果集,以列表的形式展现给用户。楼房基本资料管理楼房基本资料的管理主要是为小区内的房间建立一个基本资料库,以便在需要的时候进行查阅和执行相关操作,这项功能是与住户信息表密切相关的。楼房基本资料的操作流程如下图5-X所示:图5-x楼房基本资料管理操作流程图增加楼房信息。此功能主要用于在物业公司有新员工加入时使用,操作的本质是向数据库的loufang表插入一条新的纪录,并将操作结果(成功/失败)返回。此功能实现的主要有前台的数据采集页lfgl.aspx和后台的一般处理程序lfmgr.ashx组成。因为我们为楼房设置了lfImg(房屋图纸)属性,因次,新增楼房信息的操作与新增住户的操作在原理是一样的。删除、修改楼房信息。因为楼房的相关资料和房屋布局在小区建成并投入使用之后就已经确定了,而且楼房是属于一种相对比较固定的资料设施,因此,不允许随意更改,这里我们只允许超级管理员执行删除和修改操作。原理和具体实现同上。查询住户信息。查询功能主要用于在需要时查询某个房屋户主的资料。因为小区内的楼房的编号(楼栋-单元-房间)都是非常有规律的,因此这里不再提功能,通过快速翻页就可到达。这里为了方便管理,我们在点击查看房屋“详细”资料的时候,系统会将相应房间的住户信息一起展示出来,如下图5-X所示:图5-x查看房屋详细信息其实上述功能的实现也非常方便,我们在设计住户信息表(zhuhu)时为住户设置了一个楼房编号(zhlfId)的属性,与楼房信息表的楼房编号(lfId)一一对应。通过向数据库发送一条查询请求,根据楼房编号去zhuhu表查询,返回相应的实体数据并展示在模态窗口面板上。实现此功能的后台代码如下:voidGetLoufang(){if(查询字符串传递的楼房编号=null){AjaxMsgHelper.AjaxMsg("err","参数异常!");}新建zhuhu实体对象=使用BLL层函数执行查询;}公共服务管理模块实现投诉管理投诉功能主要用于住户对小区物业所供的服务进行的反馈,住户可以在对小区工作人员的服务态度不满意的时候递交投诉,也可以对小区的反沾沾状况或者小区物业工作人员的工作方式、方法提供自己的意见和建议。投诉管理的操作流程如下图5-X所示:图5-x投诉管理操作流程图提交投诉请求。从系统功能设置角度来讲,提交投诉的请求由住户来完成,操作的本质是向数据库的投诉表(tousu)插入一条记录。在用户编辑好投诉表的相关内容并点击提交之后,系统会将相关内容以post请求方式提交到后台的一般处理程序,并执行插入(DoAdd())操作。插入操作的函数的代码原理与前面类似,即新建一个投诉实体并未实体对象的属性赋值,然调用BLL的插入方法将数据提交到数据库中。为了提高工作效率,这里我们不再提供投诉修改功能,即一旦提交之后便无法修改;同时,为了更好地提高物业管理的质量,我们考虑保留历史的投诉记录,因此也不再提供删除功能,但是普通的物业工作人员只能看到新提交的投诉,只有系统维护人员或者超级管理员才可以浏览历史投诉记录。用户提交投诉的界面如下图5-X所示:图5-x住户提交投诉处理投诉请求。该项功能主要由物业工作人员来完成,在用户递交投诉申请之后,会在物业工作人员的管理端显示出来,这里由物业工作人员对用户所做的回复,实质上是对用户所提交的投诉请求中的“处理回复(tsRes

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论