物业管理信息系统的研究与实现

 

社区物业管理信息系统的研究与实现

 

作者:沈飞跃 指导教师:蒋伟钢

 

 

【摘要】本设计社区物业管理信息系统是在Windows 2003 Server(IIS 6.0)+SQL server 2000环境下,采用Visual Studio 2005(C#)语言实现的基于ASP.Net 2.0具有比较完善的信息查询和管理功能的实用性系统,它结合小区物业公司的实际需求和物业公司网点分布的发散性采用了最为流行的B/S构架,从而在管理各小区信息的时候节省大量的人力和资源。本系统包括六大部分:用户登录、房产管理系统、人口管理系统、维修登记管理、水电煤气费用的收取和管理、系统设定等功能。该文详细地介绍了系统的各个组织结构及其实现。

 

【关键词】B/S结构 ASP.Net  MD5 加密算法 物业管理


 

 

Research & Realization on Community Property Management System

 

 Author: Shen Feiyue Tutor: Jiang Weigang

Abstract: This Community Management Aided System is a relatively practical & completed information query & management system, which is realized with ASP .NET 2.0 & is running under Windows 2003 Server & SQL Server 2005.  Combining the requirement of community property management firms & the separation of braches of property management firms, and taking the most popular B/S structure, it saves lots of manpower and resources on managing community information. This system includes 6 major parts: User login interface, Real estate property management system, Population management system, Repair registration system, Water/electricity/gas bill payment & management system, System setup. This paper particularly introduces the structure of each part and its realization.

Keywords: Browser/Server, ASP.NET, MD5 encrypt algorithm, 4-layer structure, Property Management


目录

前言... 1

1. ASP.Net概述... 2

1.1什么是ASP.Net 2

1.2 ASP.Net所独具的一些特点... 3

1.3 Visual Studio .NETC#ASP.NET的关系... 4

1.4 ASP.NETIISASP 之间的比较... 4

2. 需求分析... 6

2.1 系统和目标范围说明书... 6

2.2 系统体系结构... 7

2.3 系统业务模型... 8

2.4 系统关系模型... 9

2.5数据描述... 10

2.5.1数据流图... 10

2.5.2数据字典... 10

3. 总体设计... 12

3.1 任务分析... 12

3.2 数据库结构设计... 13

4. 详细设计... 19

4.1 系统描述... 19

4.2 功能描述... 20

5. 系统实现... 21

5.1社区物业管理系统默认页面... 21

5.2社区物业管理系统——系统登录... 21

5.3社区物业管理系统——系统设定模块实现... 23

5.4 社区物业管理系统——大楼登记模块实现... 23

5.4 社区物业管理系统——大楼查询模块实现... 25

6. 关键技术... 27

6.1 MD5加密算法... 27

6.1.1综述... 27

6.1.2算法的应用... 27

6.1.3算法描述... 27

6.2数据库技术... 30

6.2.1 ASP.NET 2.0数据缓存功能——SqlCacheDependency. 30

6.2.2 GridViewDetailsView控件... 31

7. 讨论... 33

7.1优化ASP.NET应用程序性能研究与探讨... 33

8. 结论... 36

致谢... 37

参考文献... 38

 

 

 


前言

 

           作为一种新兴产业,物业管理适合现代人的居住理念已昭示出巨大的发展潜力,并在中国得到了广泛的认同。物业管理的含义也从住宅小区的管理,扩大到包括各类办公楼宇、商业中心旅游酒店以及学校、医院的管理。

 

物业管理公司大都存在着业务覆盖范围广、客户数量多等特征,需要处理相当多的大量长期繁琐的日常工作。而要高效、正规地进行物业管理,就必需引进计算机技术,这样才能在物业管理中形成良性循环,提高工作效率。在物业管理中,计算机能帮助物业管理公司处理大量数据,非常方便地进行文件资料的存储、处理、传输、打印、分析,实现信息的共享与高速交换,从而提高工作效率和服务水平,让物业管理走向正规化、程序化、决策科学化,同时引入计算机能更好地宣传企业形象、提高企业声誉。总之,对于整个物业管理发展来讲,物业管理的计算机化、信息化是一个势在必行的趋势。

 

物业管理信息系统的设计特点

1、无纸化管理

应实现物业管理各种文件在电脑上的编辑、发送、接收,在电脑上取代以往的人工报审,有纸操作;提供一个足够开放的平台,实现充分的数据共享和内部通讯。如对于内部的多个部门以及分布在不同地方的多个管理处,可以突破层次和部门分隔导致的沟通障碍来实现信息的实时共享。

2、灵活方便的万能查询功能

对于用户来讲,查询的要求是千变万化的,为了适应用户的这种要求,系统应支持对所有的事件记录、费用数据等进行检索、统计、总览,从而对日常管理的计划、控制和决策起到实际的支持作用。

3.敏感数据修改的日志跟踪和分级的权限控制

对应保密或较敏感的数据修改提供跟踪,能清楚地记录数据每次更改的情况(更改人、时间、值、数额等),提供敏感数据更改的依据。根据操作人员的不同限,财务经理有权修改费用单价,收费员只能录入读数进行计算,管理处的工作人员仅能看到本管理处的数据。

4、形象丰富的决策分析

系统快速、自动、强大的统计汇总功能和丰富的报表打印系统,使各种数据的统计汇总、分析表格一应俱全,物业公司的领导可以随时查阅最新的详细情况,并依次快速、准确地做出决策。

 

应用计算机信息系统,能使物业管理走向正规化、程序化、决策科学化。鉴于物业管理信息化建设的复杂性,实施过程中进行全面、有效的系统分析,首先制定好正确的实施步骤和技术方法是十分重要的。针对物业管理覆盖范围广、客户量大、系统设施复杂的特征,如何构建先进的计算机物业管理系统平台,实现对物业的动态控制和各种资源的集约与优化,丰富社区服务内容,提升基础管理水平,高效、规范、优质地实施物业管理,已经成为各物业管理公司急待重点思考和解决的问题。


 

1. ASP.Net概述

 

ASP.NET 不仅仅是 Active Server Page (ASP) 的下一个版本;它还提供了一个统一的 Web 开发模型,其中包括开发人员生成企业级 Web 应用程序所需的各种服务。ASP.NET 的语法在很大程度上与 ASP 兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。可以通过在现有 ASP 应用程序中逐渐添加 ASP.NET 功能,随时增强 ASP 应用程序的功能。

 

1.1什么是ASP.Net

ASP.NET 是一个已编译的、基于 .NET 的环境,可以用任何与 .NET 兼容的语言(包括 Visual Basic .NETC# JScript .NET.)创作应用程序。另外,任何 ASP.NET 应用程序都可以使用整个 .NET Framework。开发人员可以方便地获得这些技术的优点,其中包括托管的公共语言运行库环境、类型安全、继承等等。

ASP.NET 可以无缝地与 WYSIWYG HTML 编辑器和其他编程工具(包括 Microsoft Visual Studio .NET)一起工作。这不仅使得 Web 开发更加方便,而且还能提供这些工具必须提供的所有优点,包括开发人员可以用来将服务器控件拖放到 Web 页的 GUI 和完全集成的调试支持。

当创建 ASP.NET 应用程序时,开发人员可以使用 Web 窗体或 XML Web services,或以他们认为合适的任何方式进行组合。每个功能都能得到同一结构的支持,使您能够使用身份验证方案,缓存经常使用的数据,或者对应用程序的配置进行自定义。

·                   使用 Web 窗体可以生成功能强大的基于窗体的 Web 页。生成这些页时,可以使用 ASP.NET 服务器控件来创建公共 UI 元素,以及对它们进行编程以用于执行常见的任务。这些控件使您能够用可重复使用的内置或自定义组件生成 Web 窗体,从而简化页面的代码。

·                   XML Web services 提供了远程访问服务器功能的途径。使用 XML Web services,企业可以公开数据或业务逻辑的编程接口,而客户端和服务器应用程序则可以获取和操作这些编程接口。通过使用诸如 HTTP XML 消息传递之类的标准跨越防火墙移动数据,XML Web services 可在客户端-服务器或服务器-服务器方案下实现数据的交换。XML Web services 不用依靠特定的组件技术或对象调用约定。因此,用任何语言编写、使用任何组件模型并在任何操作系统上运行的程序,都可以访问 XML Web services

·                   ASP.NET 利用 .NET Framework 和公共语言运行库中的性能增强功能。另外,它还可以提供相对于 ASP 和其他 Web 开发平台来说显著的性能改进。所有 ASP.NET 代码都是编译的,而不是解释的,这就允许对本机代码采用早期绑定,强类型处理,以及实时 (JIT) 编译,这里只列举几个优点而已。ASP.NET 还可方便地分解,即开发人员可以移除那些与他们开发的应用程序不相关的模块(例如,会话模块)。ASP.NET 还提供丰富的缓存服务(包括内置服务和缓存 API 两种)。ASP.NET 还提供性能计数器,开发人员和系统管理员可以监视这些性能计数器,以测试新的应用程序和搜集有关现有应用程序的度量标准。

·                   .NET Framework ASP.NET Web 应用程序提供默认授权和验证方案。可以方便地移除、添加或者替换这些方案,这取决于应用程序的需要。

·                   ASP.NET 配置设置存储在基于 XML 的文件中,这些文件都是人可读和可写的。每一个应用程序都可以有不同的配置文件,可以扩展配置方案,以适应您的要求。

·            当应用程序安装在同一台计算机上,但使用不同的 .NET Framework 版本时,就说应用程序是并行运行的。

·           IIS 6.0 使用一个称为辅助进程隔离模式的新进程模型,它不同于 IIS 早期版本中使用的进程模型。当在 Windows Server 2003 上运行时,默认情况下 ASP.NET 使用该进程模型。

 

1.2 ASP.Net所独具的一些特点

1. 语言的独立性

ASP中只能使用简单的脚本语言来编写程序代码,而在ASP.NET中允许使用编译式的语言,提供了较好的执行效率和跨语言的兼容性,比如C#Visual Basic.NET等,另外也支持一些第三方厂商提供的语言,如CobolPascal等。

2. 简单的开发操作,分离程序代码和网页内容。

ASP.NET可以将页面逻辑与业务逻辑分开,实用代码分离技术(Code Behind)分离程序代码与显示内容,使程序的可读性更强,简化开放操作。

3. 提高了执行效率

所有ASP.NET代码(包括服务器脚本)都经过编译,可提供强类型、性能优化和早期邦定及其他有点。代码一旦经过编译,运行库会进一步将ASP.NET编译为本机代码,从而提供增强的性能。

4. 简化部署与组态的操作

ASP.NET中无需考虑组建注册的问题,只需要将文件复制到指定的应用程序目录或使用更为专门化的可设置部署项目。

在组态方面,ASP.NET采用易读的XML组态文件(Web.config),只要将此文件放在Web应用程序的相关目录中就可以完成组态的操作。

5. 支持客户端类型

ASP.NET提供了许多服务器控件(Server Control),在网页执行期间,能自动检测浏览器所支持的功能,并自动产生浏览器可用网页。对于不同的客户浏览器,只需编写一份代码。

6. 支持下一代的Web服务

Web服务是指可以跨越Internet调用的应用程序,提供应用程序重复使用的功能,它能使两个不同的系统拥有一个沟通的管道。

7. 增进适用性

ASP.NET能解决应用程序故障。一旦ASP.NET程序检测到某条线程运行实效,他就将新的请求导向新的线程,不再河这条有问题的线程进行互交,这条有问题的线程也会被自动收回,使用此线程的请求也会被毁灭。

8. 增进延展性

ASP.NET采用全新的会话状态(Session-State)管理方式,使应用程序可以很容易地在一台服务器上有多个处理线程时使用会话。

9. 更多的支持工具

提供更丰富的、以组建为基础的程序化模型。使开发Web应用程序的过程就像开发传统的应用程序一样。

10.             更佳的安全机制

ASP中唯一能使用的验证方式是Windows身份验证,而ASP.NET则提供3种不同的登录验证方式:Windows身份验证,护照和Cookie。也可以使用模拟功能,使用登录者的权限执行一些程序代码或存取资源。

11.             会话可以跨进程,跨机器

使用ASP.NET,会话的状态可以在不同的计算机的不同进程(Process)中维护,以解决Web窗体中会话的维护问题。

 

1.3 Visual Studio .NETC#ASP.NET的关系

  Visual Studio .NET是用于创建和集成XML Web服务和应用程序的综合开发工具。它为C#ASP.NET提供了一个运行的环境。C#是程序语言,ASP.NET是服务器端的动态网页技术。C#ASP.NETCode Behind语言。Code Behind就是代码分离,在一般的ASP.NET文件中,Code Behind主要是用二个文件来创建一个ASP.NET的页面,其中一个是设计文件,一般以.aspx或者.ascx做为扩展名,而另外一个是程序代码文件,一般以.vb或者.cs做为扩展名,其程序设计语言主要是VB.Net或者是C#。 本系统采用C#作为程序设计语言。

 

1.4 ASP.NETIISASP 之间的比较

ASP.NET 应用程序与 Internet 信息服务 (IIS) 之间的关系如下:IIS 通过 aspnet_isapi.dllASP.NET 的进程模型)对可发布的 ASP.NET 文件的所有请求提供服务。IIS 不会处理服务器端的代码;而 ASP.NET 引擎则会处理服务器端代码,然后将输出返回给 IIS(如果可能,或另一个 Web 服务器)。
ASP.NET
并非仅仅是下一代的ASP,它为创建利用 Internet 的网络应用程序提供了全新的编程模型。ASP.NETASP比较的特点如下:
  1、改进的性能和可伸缩性
  1)编译后执行:ASP.NET 比传统 ASP 的运行速度更快,同时保留了 ASP"只需点击保存"的更新模型。无需显式的编译步骤。ASP.NET 自动检测变化,根据需要动态编译文件,并且保存编译结果以便后续的请求再次使用。动态编译保证了用户的应用程序总是最新的,并且编译后执行的操作会使其运行速度更快。对于多数从传统的 ASP 迁移到 ASP.NET 的应用程序,其处理的页数增长了 3 5 倍。
  2)大容量输出缓存:ASP.NET 输出缓存极大地改进了应用程序的性能和可伸缩性。当在页面中启用输出缓存时,ASP.NET 就会执行一次该页并将结果在发送至用户之前保存在内存中。当其他用户请求同一页面时,ASP.NET 使用内存中的缓存结果向用户提供服务,而不是重新执行该页面。输出缓存是可配置的,并且可以用来缓存单个区域或整个页面。
  3Web 场会话状态:ASP.NET 会话状态允许我们在 Web 场中的所有计算机之间共享会话数据。现在,用户可以通过多个请求访问 Web 场中不同的服务器,并且仍然具有完全访问会话数据的权限。
  2、增强的可靠性
  内存泄漏、死锁和故障保护:ASP.NET 自动检测错误(例如,死锁和内存泄漏)并进行恢复以确保我们的应用程序始终可用。例如,当检测到内存泄漏时,ASP.NET 将自动启动新的 ASP.NET 工作进程副本,并将所有的新请求定向到该进程。当旧进程完成挂起请求的处理后,会经过适当的处置并释放泄漏的内存。
  3、部署简单
  1"非接触式"应用程序部署:使用 ASP.NET,我们可以通过将其复制到服务器来进行整个应用程序的部署。配置设置将存储在应用程序的 XML 文件中。
  2)动态更新运行的应用程序:ASP.NET 允许我们不必重新启动 Web 服务器而更新已编译的组件。与传统的 COM 组件(这些组件需要在部署更新后手动重新启动 Web 服务器)不同,ASP.NET 自动检测更改并使用新的代码启动。
  3)迁移路径简单:ASP.NET 可以和传统的 ASP 应用程序一起在 Microsoft Windows 2000Windows XP、以及 Windows Server 2003 家族成员的 IIS 上运行。我们可以一次迁移一个应用程序,甚至是单独的页面。ASP.NET 甚至允许我们继续使用现有的传统 COM 商务组件。
  4、新的应用程序模型
  1XML Web 服务:XML Web 服务允许应用程序通过 Internet 进行通信和共享数据,而不管操作系统和编程语言如何。ASP.NET 使得公开和调用 XML 网络服务变得简单。
  2)移动 Web 设备支持:ASP.NET 移动控件允许我们处理超过 80 台使用 ASP.NET 的移动 Web 设备。我们只需一次性写入应用程序,移动控件就能自动生成请求设备的页面。
  5、开发人员的效率
  1)简单的编程模型:具有服务器控件(这些控件允许我们使用比传统 ASP 更少的代码来构建效果极佳的页面)的 ASP.NET 使得动态构建真实的 Web 应用程序变得更加容易。
  2)灵活的语言选项:ASP.NET 不仅支持 Microsoft Visual Basic Scripting Edition (VBScript) Microsoft JScript,而且支持 25 种以上的 .NET 语言,包括对 Visual Basic .NETMicrosoft C# JScript .NET 的内置支持。
  3)丰富的类框架:.NET Framework 类库提供了 4500 多种类,这些类封装了大量的功能,诸如 XML、数据访问、文件上载、正则表达式、图像生成、性能监视和日志记录、事务、消息队列和 SMTP 邮件。


2. 需求分析

 

需求分析是数据库设计的第一阶段。不断的调查与研究,了解组织机构的情况,了解部门的业务流程等系统与需求,对于设计好概念模型是非常重要的。在需求分析中,应该对现实世界要处理的对象进行详细地调查;在确定系统功能中,收集支持系统功能目标的数据及分析数据之间的关系和处理流程。可以说,需求分析的质量直接影响到系统设计的成败。

 

2.1 系统和目标范围说明书

物业管理作为房地产商品的消费环节,是房地产综合开发的延续和完善,是房地产开发经营中为完善市场机制而逐步建立起来的一种服务方式。物业管理是顺应房地产综合开发的发展而派生出来的产物。物业管理作为一种专业化的管理,首要的就是使物业保持完好和正常的使用,延长建筑物的使用寿命,从而达到保值和增值的目的。

1.物业的基础管理

主要指房屋建筑管理和房屋设备维修管理。由于物业人员对居住区在使用和管理过程中可能会出现的细节问题比较了解并且比较敏感,如果物业管理公司能够早期介入,在接管物业之前就参与物业的规划、设计和建设,可以从物业管理的角度提出意见和建议,更能较直接的把物业开发中“先天不足”造成的影响反映出来,使物业既满足国家技术指标,又能满足使用者的需要,并考虑到交付后的管理要求,便于管理。此外,物业管理人员也可以了解熟悉基础隐蔽工程,管道线路的铺设等日后难以从外观察觉的施工情况,利于今后的维修管理。“物业管理从图纸开始”正是这种思想的体现。建筑物维修管理是物业重要的、基础性的工作。为保证建筑正常发挥其使用功能,延长使用寿命,必须经常的、有计划的对建筑物进行维修养护,防止或减缓建筑物的损耗。包括预防性维修、例常维修和周期性维修。在物业投入使用后,对建筑物的维修、维护以及装修范围、时间等内容都要有详细的计划和要求。如住户不得拆改原房屋的承重墙、柱、梁板等主体结构部件,不得随意改动水、电等管线的走向等。

2.物业的综合管理

是对居住区内的公共区域进行的日常管理,目的是维护良好的公共环境和秩序。主要包括清洁管理,绿化管理,消防管理,保安管理,停车场管理。清洁管理要明确物业管理保洁的范围,具体规定清洁的程序、次数和时间,确实做到有法可依,有章可循。物业公司还应对保洁员的职责、服务规范及考勤有详细的规定和检查要求。绿化管理则要负责对辖区内的所有装饰树、果树、灌木、绿化地、爬藤、草皮等植物进行养护。包括种植、浇水、防护、修剪和保养,并制定相应的服务规范及详细的规定和检查要求。

随着计算机和地理信息技术的发展与应用, 我国高校和大型厂矿等企事业单位迫切需要用现代技术进行综合管理、规划设计、事故处理和决策分析。然而, 令人遗憾的是, 目前很多单位仍使用账本式管理方法, 即便使用计算机管理, 也只是采用一般的纯数据库管理方法。尽管这种管理模式基本上能够满足日常工作的需要, 但这种管理方法存在着直观性差、操作不便等诸多缺点。随着微电子、计算机、通讯和空间等技术的发展, 人类对世界的认识更加全面和深入; 数字地球时代的到来, 又导致了整个世界的市场体系、技术体系和管理体系的大调整。因此, 物业管理也面临着新的机遇和挑战。只有改变传统的观念, 采用新的管理模式和技术手段, 才能保住已有的市场, 并占领新的市场。

在物业管理的市场竞争中,采用计算机信息管理技术和手段,对物业进行综合管理是非常有必要的;因此,设计开发物业管理系统在本着信息化、科学化、网络化的同时,能够遵循以人为本的设计与开发理念,全面的考虑系统的实用性,做到既有效管理又提高效益。

物业管理系统应完成如下的主要功能:

(1) 能够全面解决人工管理带来的不便和困难,充分体现微机化管理的优势;

(2) 能够快速、自动、准确的查询、统计、汇总和打印各种所需的报表,为物业公司领导提供可靠的决策依据;

(3) 能够实现系统内部信息及数据资源的共享,以加强企业内部的信息沟通,提高整个企业的团队协同工作能力和工作效率,构建企业整体管理架构;

(4) 采用ERP 软件思想设计的物业管理系统,能够实现企业动态资源的过程控制。

系统目标和范围说明书

I.项    目:小区物业管理辅助系统

2.问    题:账本式管理方法对于分布式的小区信息管理造成很大麻烦。

3.项目目标:建立一个集中式的小区物业信息管理管理模块。

4.项目范围:结合现阶段物业公司的业务使用状块。

5.初步想法:实现通过B/S方式在同各物业公司的各个分离的小区间实行信息的共享和查询。继而和物业公司的网站相联合以提供更多人性化的服务项目。

2-2 系统目标和范围说明

 

2.2 系统体系结构

1Browser/Server 结构

小区物业信息系统是利用Browser/Server结构,实现信息的登记、查询、管理和修改。这种系统的优势在于功能强大、扩展能力良好以及跨地域的操作性能。可以使分散的各小区可以十分快捷的访问整个物业公司所属小区的各类信息。

Client/Server模式与Browser/Server模式是比较流行的两种数据库应用模式单独用哪一种模式都将受其自身弱点的限制。Client/Server模式主要是在局域网为基础的环境下展开应用的,它受到地域的限制。而Browser/Server模式通过InternetVPN进行通信,可以不受地域的限制。

传统的信息系统开发中,大多数采用具有两层结构的B/S模式或者具有三层体系结构的US模式。虽然两层结构的系统具有交互性强的特点,但随着网络规模的扩大以及应用程序复杂度的不断提高,其存在的固有缺陷就不断地暴露出来,如开发成本较高,移植困难,使用繁杂,维护复杂,升级麻烦,客户端与后台数据库服务器数据交换频繁等。而在具有三层分布式体系的结构中,虽然克服了两层结构的一些不足,但也存在着一定的缺陷,既没有将数据的生成与表现有效地分离,又没有将应用的表现与逻辑处理有效地分离,这样给系统的开发和维护带来了不少麻烦。而基于微软.NET技术的具有四层结构的信息系统解决方案,有效地克服了两层以及三层体系结构中的一些不足:实现了将不同的信息系统融合在一起;使得前端机安装方便,对系统的要求降低;安全性高,用户端只能通过数据人口层来访问数据层;系统的可维护性;. NET中具有强大的组件,使得系统具有很大的扩展性和伸缩性,即用户可以定制自己的系统。其中四层体系结构包括表现层(ASP. NET Web Forms)、业务逻辑层、数据访问层和数据层,如图2-1所示。

2-1四层体系结构

 

(1)数据层。它是整个系统要访问的数据源,其主要功能有数据的存储、安全模式的管理、数据库中数据流进出的管理及查询和存储过程的存储和执行。用户可根据实际需要选择数据库存放类型,如DB2, Oracle, SQL Server, Microsoft Access等。

(2)数据访问层。在VS. NET中提供了ADO. NET访问数据存储器技术,其中包括OLE DB .NET, SQL Server .NET以及ODBC.NET三种数据提供者,由此为业务逻辑层和数据层之间的通信提供了渠道。用户选择了具体的数据层后无需改变业务逻辑层以及表现层的设计,只需修改数据访问层中的数据提供者即可,这样提高了系统的灵活性。

经过业务逻辑层分析后,如果要从数据层中读取所需要的数据,那么在数据访问层中,先通过ADO. NET Connection对象指定数据源以及传递安全信息的提供者;并由ADO. NET Command对象指定数据读取器或数据适配器;再由数据提供者对数据源和ADO. NET格式之间的信息进行转换,转换后的信息再通过Command对象传送给数据读取器或数据适配器,即通过ADO. NET DataReader:对象快速读取数据并传送给业务逻辑层,或通过ADO. NET DataAdapter对象为ADO. NET DataSet对象准备数据,再通过DataSet建立表间关系,然后将数据传送给业务逻辑层。如果是为数据层写人数据,那么在数据访问层中,通过DataAdapter对象为数据源准备由表现层经业务逻辑层传送过来的数据,再通过Connection对象和Command对象,在ADO. NET格式和数据源格式之间进行信息转换,进而将数据写入数据层。

(3)业务逻辑层。它主要负责业务的逻辑处理。由Web服务器接收客户端发送来的HTTP请求,对请求进行分析转换,并调用相应的逻辑处理程序;而该逻辑处理程序与数据访问层进行通信,并将处理结果返回给Web服务器,再由Web服务器以XMLHTML形式通过.NET中的用户接口(User Interface, UI)将结果发送给客户端浏览器。

(4) ASP. NET Web Forms。它为应用的表现,而其页面包含ASP. NET中使用数据的控件以及脚本变量<SPAN > ,< DIV >。终端用户直接通过浏览器调用Web Forms,直接与业务逻辑层通过UI进行通信。

B/S结构开发还具有另外的一个重要的优势,即面向对象编程的特性——“封装性”。在客户端需要进行某项与数据库之间的访问和操作的地方,只需要调用一个函数,至于函数如何编写,如何与数据库打交道,以至访问的是何种数据库都与其无关(否则,很可能出现在一种数据库系统上运行的很好的SQL语句,有时换到另一种数据库上必须加以修改);在中间层DLL中实现这个函数,如果用户对具体操作的要求发生改变,只需要修改这个函数就可以了,只要此函数的入口参数和返回内容不变,客户端不需要做任何改动。

 

2.3 系统业务模型

下面画出系统的业务模型(如图2-4所示)

2-2 系统总体业务模型

 

2.4 系统关系模型

最常用的表示概念性数据模型的方法,是实体—联系方法(EntityRelationship Approach)。这种方法用E-R图描述现实世界中的实体,而不涉及这些实体在系统中的实现方法。这种方法表示的概念性数据模型又称E-R模型。图2-3为房产管理的E-R模型图。人口管理、维修管理、投诉管理、费用管理与房产管理E-R图类似,这里不再重复。

2-3 房产管理系统E-R图表示

 

 

 

 

2.5数据描述

2.5.1数据流图

数据流图是软件系统逻辑模型的一种图形表示(Graphic Representation )。任何软件都从根本上说,都是对数据进行加工(Processing)或变换(Transform)的工具。下面将逐步分解考研网站系统的逻辑模型,画出系统的分层DFDData Flow Diagram)图,如图2-4所示。

 

2-4 本系统数据流图

 

 

它把整个系统看作是一个数据的加工和调用中心,标明系统的输入与输出,以及数据的源点与终点。他表明了本系统是为了查询和各种情况的提醒而建立的,而可以省去人工统计报表的繁琐工作,使人力资源的浪费大大降低。

 

2.5.2数据字典

以下仅以房产管理模块的数据紫癜为例详细介绍一些本系统的一些数据结构:

 

小区信息表={小区编号+小区名称+负责人+楼栋数+地址+绿化面积+竣工日期+建筑面积}

 

大楼信息表={大楼编号+大楼名称+小区编号+大楼结构+单元数+房屋数+竣工日期+总户数+总人口数+建筑面积+大楼位置}

大楼结构={大楼结构ID,大楼结构描述}

大楼位置={大楼位置}ID,大楼位置描述}

 

房屋信息表={房屋ID+所属大楼ID+建筑面积+竣工日期+房主ID+房屋结构ID+房间号+朝向ID+房屋结构ID+使用面积+配套设施ID+房屋状态ID}

房屋状态={状态ID+状态名称}

房屋结构={房屋结构ID+结构名称}

朝向={朝向ID+朝向}

配套设置={配套设置ID+配套设置描述}

 

人口信息表 = {人口编号+姓名+性别ID+出生年月+文化程度+与户主关系ID+籍贯+国籍+婚姻状况ID+工作单位+职业+职务+职称+家庭电话+单位电话+手机+家庭住址+小区名+大楼名+房间号+证件名ID+证件号+户口所在地+暂住证号+房间代号+备注+照片+是否业主}

性别 = {性别ID+性别}

与户主关系 = {与户主关系ID+与户主关系描述}

婚姻状况 = {ID+婚姻状况描述}

投诉信息表 = {编号+投诉编号+居住位置+投诉人+性别ID+联系方式+投诉时间+被投诉方+ 被投诉方联系方式+投诉原因+状况描述+投诉方式ID+投诉性质ID+处理意见}

投诉方式 = {投诉方式ID+投诉方式描述}

投诉性质 = {投诉性质ID+投诉性质描述}

 

水费表 = {水表ID+户主ID+收费标准+计费起始日期+计费终止日期+本月读数+上月读数+使用数+应收金额+实收金额+剩余金额+是否收缴+上月使用数+上月应收+上月实收+本月余额}

 

煤气费表 = {煤气表编号+户主ID+收费标准+收费金额+计费起始日期+收费终止日期+本月读数+上月读数+使用数+应收金额+实收金额+剩余金额+是否收缴+上月使用数+上月应收+上月实收+上月余额+本月余额}

 

维修信息表 = {编号+维修编号+居住位置+维修项目+维修人员+维修方式ID+材料费用+维修金额+维修用料+报修时间+完工时间+业主意见+状态ID}

维修方式 = {维修方式ID+维修方式}

维修状态 = {状态ID+状态描述}


3. 总体设计

经过对用户的需求分析做了详细、认真的分析之后,小区信息管理系统的各项功能和系统目标已基本明确,下面对系统总体设计做详细说明。总体设计说明书应包括:

·以图表形式表示的软件总体结构:

·模块的外部设计,包括关于各模块功能、性能与接口的简要描述;

·数据结构设计,包括数据模式、访问方法和存储要求等。

·开发语言的描述

3.1 任务分析

物业管理行业是在传统的房屋管理基础上演变而来的新兴行业,国内同行的发展存在着各种差异,层次差距也很大。已有的方案还远远不能满足不同用户的不同需求,因此,必须在积累丰富的物业管理经验的同时,根据不同的用户量体裁衣,在求同存异的基础上大力发展和普及物业管理的信息化、微机化水平。特别是随着人们生活水平的不断提高,住宅多样化的不断发展,使得物业管理作为一门科学的内涵已经超出了传统定性描述和评价的范畴,发展成为集多种手段为一体的综合性物业管理系统,并可进行相关物业资料的归类汇总、整理分析、定性与定量评价、发展预测等。充分展示了物业管理行业正在朝着正规化、系统化、专业化的方向发展。

 

1.系统的设计原则

在物业管理的市场竞争中,采用计算机信息管理技术和手段,对物业进行综合管理是非常有必要的;因此,设计开发物业管理系统在本着信息化、科学化、网络化的同时,能够遵循以人为本的设计与开发理念,全面的考虑系统的实用性,做到既有效管理又提高效益。

物业管理系统应完成如下的主要功能:

(1) 能够全面解决人工管理带来的不便和困难,充分体现微机化管理的优势;

(2) 能够快速、自动、准确的查询、统计、汇总和打印各种所需的报表,为物业公司领导提供可靠的决策依据;

(3) 能够实现系统内部信息及数据资源的共享,以加强企业内部的信息沟通,提高整个企业的团队协同工作能力和工作效率,构建企业整体管理架构;

(4) 采用ERP 软件思想设计的物业管理系统,能够实现企业动态资源的过程控制。

 

2.系统的功能

分析各种物业管理系统,其大致的模式主要有:

房产管理、住户管理、费用管理、档案管理、查询和统计、维修管理等功能模块,其总体功能如图3-1 所示。

(1) 房产管理:包括小区信息、楼宇信息、房屋信息维护四个子系统。主要用于登记居民住房环境的基本资料,可以输入小区、楼房、房屋的基本信息,包括对房产管理的增加、删除、保存、住户入户和出户,对小区、楼房、单元的增加和删除等,形成对物业公司所管理的各个小区房产进行统—管理。

(2) 住户管理:包括住户基本信息、住户家庭信息两个个子系统。记录住户的若干信息,包括姓名、出身日期、职业等等;

(3) 收费管理:对纳入社区收费管理的收费项目进行电子收费管理(主要是指对煤气表、电表、水表) ,提供网上应缴费用的查询,定期催缴,对没有上网能力的住户提供电话查询或者到物业管理中心进行查询,具有收费的登记、转帐、统计功能,及收费项目、记费方式的变更登记等功能,同时将其它各子系统相应的收费信息递交,使收费信息系统进行统一结算,居民可通过小区电子银行或IC 卡缴费。

(4) 维修管理:对业主提出的维修要求进行回应,对于个人维修采取有偿维修的方式,而对于公共设施的维修只结算成本费进行无偿的维修。对于所有的维修进行登记和进行各种形式的查询操作,对于每页的维修进行报表的生成工作。

(5) 投诉管理:包括对于业主以及各类投诉进行登记和分析,密切监视投诉的处理状态。接收住户对

3-1 小区信息管理系统功能分析

 

物业部门工作中的意见,即时做出处理,若未能马上妥善处理的投诉,及时按投诉申报程序,直到给住户—个满意的答复。

(6) 系统设定:对于各个模块之间的编码的设定和系统数据的设定。对于收费系统中的各项费用的收费标准进行适时的调整。对于其他模块的设定根据现实的使用情况进行实用化的设定。

 

3  系统的主要特点及优势

科学的分类和快速查询,减少重复劳动物业管理中房产资料、住户资料、收费项目及服务档案的数量庞大,手工查询整理、统计汇总工作量大、速度慢、而且繁琐。系统可按多种条件查询,形成不同的报表和图形,可大大减少重复工作量,以提高工作效率。公司领导可以随时查阅最新的详细记录和统计数据,并依次快速、准确地做出决策,提高物业公司的管理水平与竞争力。

 

3.2 数据库结构设计

自从引入关系型数据库以来,构建数据模型的目标就是创建管理信息系统的规范数据库。规范化的结构可在最小的空间中存储最多的数据,因此“规范化”(Normalization)是设计数据库的一种方法。

规范化的过程是建立在“范式”(Normal Form)这一概念之上的,一般分为以下四种范式:

(1)第一范式 (INF)

当且仅当一个关系变量的所有合法值中,每一个元组的属性只含有一个值时,该关系变量属于INF。也就是说满足INF的关系变量的每个属性值都必须是原子值。

(2)第二范式(2NF)

当且仅当一个关系变量属于1NF,且该关系变量的每一个非关键字都完全函数依赖(Functional Dependency)于关键字时,该关系变量属于2NF。也就是说满足2NF的关系变量都满足INF,且每个非关键字属性都由整个关键字决定。

(3)第三范式(3NF)

当且仅当一个关系变量属于2NF,且该关系变量的所有的非关键字属性都不传递依赖于(Transitive Dependency)关键字时,该关系变量属于3NF。也就是说满足3NF的关系变量都满足2NF,且每个非关键字属性都仅由关键字决定,而且一个非关键字不能仅仅是对另一个非关键字属性的进一步描述。

(4) BCNF

当且仅当一个关系变量属于2NF,且每个非平凡函数依赖的自变量是超关键字时,该关系变量满足BCNF

在本系统的数据库设计过程中,尽量避免数据冗余同时也考虑到应用程序的实现难易程度。表的结构如下:

 

1) 小区信息表(t_d_xqxx):小区的各项信息,主键为字段[小区编号]

字段名

数据类型

长度

小区编号

nvarchar

20

小区名

nvarchar

20

负责人

nvarchar

10

楼栋数

int

4

总户数

int

4

总人口数

int

4

建筑面积

float

8

绿化面积

int

4

地址

nvarchar

50

竣工日期

datetime

8

备注

ntext

16

照片

image

16

 

2) 楼宇信息表(t_d_dlxx):楼宇的各项信息,主键为字段[大楼编号]

字段名

数据类型

长度

大楼编号

nvarchar

20

大楼名称

nvarchar

20

大楼位置

nvarchar

50

房屋数量

int

4

总户数

int

4

总人口数

int

4

负责人

nvarchar

10

小区编号

nvarchar

20

建筑面积

int

4

竣工日期

datetime

8

大楼结构ID

smallint

2

单元数

int

4

朝向

nvarchar

10

备注

ntext

16

照片

image

16

 

3) 房屋信息表(t_b_dlxx):房屋的各项信息,主键为字段[房屋编号]

字段名

数据类型

长度

房间代号

nvarchar

20

大楼ID

nvarchar

20

单元

nvarchar

10

楼层

nvarchar

5

房间号码

nvarchar

10

房主代号

smallint

2

房主姓名

nvarchar

10

朝向

smallint

2

房屋结构ID

smallint

2

配套设施

smallint

2

房屋状态ID

smallint

2

建筑面积

real

4

使用面积

real

4

备注

ntext

16

 

4) 维修信息表(t_b_wxxx):关于维修单的各项信息,主键为字段[维修编号]

字段名

数据类型

长度

编号

smallint

2

维修编号

nvarchar

20

居住位置

nvarchar

20

维修项目

nvarchar

30

维修人员

nvarchar

10

维修方式ID

smallint

2

材料费用

money

8

维修金额

money

8

维修用料

ntext

16

报修时间

datetime

8

完工时间

datetime

8

业主意见

ntext

16

状态ID

smallint

2

 

5) 人口信息表(t_b_rkxx):关于人口资料的各项信息,主键为字段[人口编号]

字段名

数据类型

长度

人口编号

smallint

2

姓名

nvarchar

10

性别

smallint

2

出生年月

datetime

8

文化程度

smallint

2

与户主关系ID

smallint

2

籍贯

nvarchar

10

国籍

nvarchar

10

婚姻状况ID

smallint

2

工作单位

nvarchar

50

职业

nvarchar

5

职务

nvarchar

5

职称

nvarchar

5

家庭电话

nvarchar

15

单位电话

nvarchar

15

手机

nvarchar

15

家庭住址

nvarchar

30

小区名

nvarchar

20

大楼名

nvarchar

15

房间号

nvarchar

10

证件名ID

smallint

2

证件号

nvarchar

30

户口所在地

nvarchar

20

暂住证号

nvarchar

20

房间代号

nvarchar

20

备注

ntext

16

照片

image

16

是否业主

int

4

 

6) 投诉信息表(t_b_tsxx),关于投诉的各类信息。主键[投诉编号]

字段名

数据类型

长度

编号

smallint

2

投诉编号

nvarchar

20

居住位置

nvarchar

30

投诉人

nvarchar

10

性别ID

smallint

2

联系方式

nvarchar

20

投诉时间

datetime

8

被投诉方

nvarchar

10

被投诉方联系方式

nvarchar

20

投诉原因

ntext

16

状况描述

smallint

2

投诉方式ID

smallint

2

投诉性质ID

smallint

2

处理意见

nvarchar

50

 

7) 水费表(t_b_sf),居于水表的关于水费的各类信息。主键[水表编号]

字段名

数据类型

长度

水表ID

nvarchar

20

户主ID

smallint

2

收费标准

money

8

计费起始日期

datetime

8

计费终止日期

datetime

8

本月读数

int

4

上月读数

int

4

使用数

int

4

应收金额

money

8

实收金额

money

8

剩余金额

money

8

是否收缴

int

4

上月使用数

money

8

上月应收

money

8

上月实收

money

8

本月余额

money

8

 

8) 煤气费表(t_b_mqf),居于煤气表的关于煤气费费的各类信息。主键[煤气表表编号]

字段名

数据类型

长度

煤气表编号

nvarchar

20

户主ID

smallint

2

收费标准

money

8

收费金额

money

8

计费起始日期

datetime

8

收费终止日期

datetime

8

本月读数

int

4

上月读数

int

4

使用数

int

4

应收金额

money

8

实收金额

money

8

剩余金额

money

8

是否收缴

int

4

上月使用数

int

4

上月应收

money

8

上月实收

money

8

上月余额

money

8

本月余额

money

8

 

9) 登陆表(t_b_login),描述操作员登陆参数和权限的标单。其中密码用MD5加密。

字段名

数据类型

长度

ID

smallint

2

[user]

nvarchar

20

pass

nvarchar

40

porm

int

4

 

 

下图为网站数据库实现后的模型图:

一个共有26张表,主要表分别是小区信息表、大楼信息表、房屋信息表、人口信息表、业主信息视图、投诉信息表、维修信息表、登陆表等……别的表是用来配合主要表进行数据库约束和统一,防止产生冗余又便于使用。

 

表之间的关系也在下图中有很好的描述,我们可以看到一些附表示为了进行配合主表而设立的,在实际情况下、可以按照使用要求进行各个属性的添加、修改与删除。

3-2 数据库主要关系图


 

4. 详细设计

 

       详细设计是本系统开发的第三个阶段,也是设计的第二步。总体设计阶段已经确定了本系统的总体结构,给出了系统中各个组成模块的功能和模块间的联系。进一步的工作是在上述结果基础上,考虑“怎样实现”这个系统,直到对系统中的每个模块给出足够详细的过程性描述。需要指出,这些描述应该用详细设计的表达工具来表示,但它们还不是程序,不能在一般的计算机上运行。

       详细设计是编码的先导。这个阶段产生的设计文档的质量,将直接影响到下一阶段程序的质量。为了提高文档的质量和可读性,说明书除了说明详细设计的目的、任务与表达工具外,还要介绍结合程序设计的基本原理,以及如何有这些原理来指导模块内部的逻辑设计,提高模块控制结构的清晰度。

 

4.1 系统描述

       本系统实现了对小区各项信息的登记、修改、删除以及查询等,操作员的操作能快捷的反映在数据库以及别的终端,使得各终端通过InternetVPN可以十分方便的查询数据库中的变动。及时的传递信息,突出了B/S系统的优势。下面详细地介绍以下它们的具体情况和其实现方法。

       本系统的所有操作都可以在主界面用Banner上的导航菜单进入各模块进行相应的设置和查询、登记、修改等各类操作。但是进入主界面时需要进行登陆。图4-1描述了登陆的详细步骤。

4-1 登陆的Activity

 

       1 系统主页面(default.aspx

       该主页面有一个导航条,点击就可以进入相应模块的具体菜单,如房产管理(FangCGLLeft.aspx)、人口管理(RenKGLLeft.aspx)、投诉管理(tsleft.aspx)、维修管理(WeiXGLLeft.aspx)、费用管理(fyleft.aspx)。在点击各模块中的菜单后会在右边的主区域显示相对于该功能的界面。在这些界面中你可以进行各类功能,包括登记、浏览、查询、修改等等。

      

2 注册新操作员

       要对本系统进行全面的操作,必须是该站的操作员,才能进行有关的操作。要注册新的操作员,必须由已存在管理员(系统权限>1)来添加,注册新操作员的数据流如图4-2所示:

 

           

 

    
 

4-2 添加新操作员数据流

 
 

4-3操作流程图

 
 
 

 

 


4.2 功能描述

       本系统目的是对信息处理和查询,体现出B/S体系动态的特点。在本系统中对信息的处理可用下图表示:

 
 

4-4对信息处理的数据流

 
 

 


5. 系统实现

 

 

5.1社区物业管理系统默认页面

       社区物业管理系统默认页面是整个系统的访问界面,是用户访问整个系统的接口,通过次界面用户可以浏览整个系统的房产管理、人口管理、维修管理、投诉管理以及系统管理等各部分功能。

 

5-2 社区物业管理系统默认页面

 

5.2社区物业管理系统——系统登录

       系统登录是本系统的重要组成部分,也是系统安全的基础。在本系统中,系统登录的设计思想是:首先在系统登录界面中让用户输入用户名、用户密码以及系统随机产生的验证码,然后先比较用户输入的验证码是否与系统随机产生的一致,如果一致,再在管理员数据库中查找用户名及密码,如果找到用户名,而且输入的密码(经过MD5加密后的)与数据库中的密码(数据库中存放的是经过MD5加密的密码)一致,用户可以登录管理员管理界面,否则将继续显示管理员登录界面。

系统登录界面如图5-3所示。该界面主要用于获得用户输入。

5-3 系统管理后台登录界面

       在该界面输入用户名、密码和验证码进行登陆。如果用户名、密码和验证码有一项或多项为空则出现相应的提示。

如果都填写了就校对验证码的正确性。验证码不正确弹出消息窗口进行提示。验证码无误就验证操作员用户名与密码的配对。

系统成功登录后的房产管理界面如下图:

5-4 系统成功登录后的房产管理登记界面

系统成功登录后的维修管理查询界面如下图:

5-5 系统成功登录后的维修管理的查询界面

 

5.3社区物业管理系统——系统设定模块实现

       房产管理、人口管理、维修管理、投诉管理、收费管理和系统设定六个模块是整个系统的主要部分,前五个个模块具有大同小异的结构,而最后一个模块是为了系统的正常运行而设。其作用是设定系统参数,增加和删除操作员以及数据备份等各类操作。

5-5 系统设定之房产参数设定

 

5.4 社区物业管理系统——大楼登记模块实现

       信息登记是各个模块中都必须拥有的功能,现在以大楼登记这个模块来对此功能进行详细的描述和分析。

大楼登记的Activity图:

 

5-6大楼信息登记的Activity

大楼登记的时序图:

 

5-7 大楼信息登记的时序图

 

如图所示:

要进行大楼信息的登记,操作员必须登陆本系统。然后才可以进行本项操作。

在进行尝试登记大楼信息的时候,系统先要进行输入数据的合法性检查。对于不符合数据库结构的输入进行出错提示来提醒操作员进行审查和再输入。又因为由于可能存在以进登记过的大楼资料。所以先在写入数据库前进行数据的查询与比较。如果存在相同的记录就对操作员进行提示。操作员根据所给的提示可以很好的了解到自己输入信息的正确与否和错在哪里。

在数据库修改成功后,系统也会提示操作员该记录已经添加到数据库,如果该输入的信息编号是系统生成的,那系统就返回该记录的编号以被书面信息的登记。

 

大楼登记页面:

 

5-8 大楼信息登记界面

 

其他的信息登记也是按照这个过程进行的,不同的是对数据的约束和数据库的构造之间的不同。可以从大楼信息登记这个例子中可以知道各类信息登记中大致的结构和类型。

 

5.4 社区物业管理系统——大楼查询模块实现

       信息查询与修改也是各个模块中都必须拥有的功能,而在查询中我们可以我们可能有各种不同的要求和条件。所以必须按照物业管理的实际需要进行十分好的查询条件及信息的设定。在此以大楼查询这个模块来对此功能进行详细的描述和分析。

 

大楼查询的Activity图:

 

5-9大楼信息查询的Activity

如图所示:

要进行大楼信息的查询,操作员也必须登陆本系统。然后才可以进行本项操作。

在进行尝试查询大楼信息的时候,系统先对操作员权限进行检查,条件符合进行查询操作。系统把符合查询条件的记录全部呈现在分页的页面上,以备校对和修改。


 

6. 关键技术

 

6.1 MD5加密算法

6.1.1综述

MD5的全称是Message-Digest Algorithm 5(信息-摘要算法),在90年代初由MIT Laboratory for Computer Science RSA Data Security, Inc.Ronald l. Rivest开发出来,经MD2MD3MD4发展而来。它的作用是让大容量信息在用数字签名软件签署私人密匙前被“压缩”成一种保密的格式(就是把一个任意长度的字节串变换成一定长的大整数)。它需要获得一个随机长度的信息并产生一个128位的信息摘要。

Rivest1989年开发出MD2算法。为了加强算法的安全性,Rivest1990年又开发出MD4算法。由于MD4中存在的漏洞,可以利用一部普通的个人电脑在几分钟内找到MD4完整版本中的冲突(这个冲突实际上是一种漏洞,它将导致对不同的内容进行加密却可能得到相同的加密后结果),MD4就此被淘汰掉了。一年以后,即1991年,Rivest开发出技术上更为趋近成熟的MD5算法。它在MD4的基础上增加了"安全-带子"safety-belts)的概念。虽然MD5MD4稍微慢一些,但却更为安全。Den boerBosselaers曾发现MD5算法中的假冲突(pseudo-collisions),但除此之外就没有其他被发现的加密后结果了。

Van oorschotWiener曾经考虑过一个在散列中暴力搜寻冲突的函数(brute-force hash function),而且他们猜测一个被设计专门用来搜索MD5冲突的机器(这台机器在1994年的制造成本大约是一百万美元)可以平均每24天就找到一个冲突。但单从1991年到2001年这10年间,竟没有出现替代MD5算法的MD6或被叫做其他什么名字的新算法这一点,我们就可以看出这个瑕疵并没有太多的影响MD5的安全性。上面所有这些都不足以成为MD5的在实际应用中的问题。并且,由于MD5算法的使用不需要支付任何版权费用的,所以在一般的情况下(非绝密应用领域。但即便是应用在绝密领域内,MD5也不失为一种非常优秀的中间技术),MD5怎么都应该算得上是非常安全的了。

 

6.1.2算法的应用

MD5还广泛用于加密和解密技术上。比如在考研网站系统中管理员的密码就是以MD5经加密后存储在文件系统中。当用户登录的时候,系统把用户输入的密码计算成MD5值,然后再去和保存在文件系统中的MD5值进行比较,进而确定输入的密码是否正确。通过这样的步骤,系统在并不知道用户密码的明码的情况下就可以确定用户登录系统的合法性。这不但可以避免用户的密码被具有系统管理员权限的用户知道,而且还在一定程度上增加了密码被破解的难度。

正是因为这个原因,现在被黑客使用最多的一种破译密码的方法就是一种被称为"跑字典"的方法。有两种方法得到字典,一种是日常搜集的用做密码的字符串表,另一种是用排列组合方法生成的,先用MD5程序计算出这些字典项的MD5值,然后再用目标的MD5值在这个字典中检索。我们假设密码的最大长度为8位字节(8 bytes),同时密码只能是字母和数字,共26+26+10=62个字符,排列组合出的字典的项数则是p(62,1)+p(62,2).+p(62,8),那也已经是一个很天文的数字了,存储这个字典就需要tb级的磁盘阵列,而且这种方法还有一个前提,就是能获得目标账户的密码MD5值的情况下才可以。这种加密技术被广泛的应用于unix系统中,这也是为什么unix系统比一般操作系统更为坚固一个重要原因。

 

6.1.3算法描述

 MD5算法简要的叙述可以为:MD5512位分组来处理输入的信息,且每一分组又被划分为1632位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。

MD5算法中,首先需要对信息进行填充,使其字节长度对512求余的结果等于448。因此,信息的字节长度(bits length)将被扩展至n*512+448,即n*64+56个字节(bytes),n为一个正整数。填充的方法如下,在信息的后面填充一个1和无数个0,直到满足上面的条件时才停止用0对信息的填充。然后,在在这个结果后面附加一个以64位二进制表示的填充前信息长度。经过这两步的处理,现在的信息字节长度=n*512+448+64=(n+1)*512,即长度恰好是512的整数倍。这样做的原因是为满足后面处理中对信息长度的要求。

MD5中有四个32位被称作链接变量(chaining variable)的整数参数,他们分别为:a=0x01234567b=0x89abcdefc=0xfedcba98d=0x76543210

当设置好这四个链接变量后,就开始进入算法的四轮循环运算。循环的次数是信息中512位信息分组的数目。

将上面四个链接变量复制到另外四个变量中:aabbccdd

主循环有四轮(MD4只有三轮),每轮循环都很相似。第一轮进行16次操作。每次操作对abcd中的其中三个作一次非线性函数运算,然后将所得结果加上第四个变量,文本的一个子分组和一个常数。再将所得结果向右环移一个不定的数,并加上abcd中之一。最后用该结果取代abcd中之一。

以一下是每次操作中用到的四个非线性函数(每轮一个)。

f(x,y,z) =(x&y)|((~x)&z)

g(x,y,z) =(x&z)|(y&(~z))

h(x,y,z) =x^y^z

i(x,y,z)=y^(x|(~z))

&是与,|是或,~是非,^是异或)

这四个函数的说明:如果xyz的对应位是独立和均匀的,那么结果的每一位也应是独立和均匀的。

f是一个逐位运算的函数。即,如果x,那么y,否则z。函数h是逐位奇偶操作符。

假设mj表示消息的第j个子分组(从015),<<

 ff(a,b,c,d,mj,s,ti)表示a=b+((a+(f(b,c,d)+mj+ti)<<    gg(a,b,c,d,mj,s,ti)表示a=b+((a+(g(b,c,d)+mj+ti)<<    hh(a,b,c,d,mj,s,ti)表示a=b+((a+(h(b,c,d)+mj+ti)<<    ii(a,b,c,d,mj,s,ti)表示a=b+((a+(i(b,c,d)+mj+ti)<<

这四轮(64步)是:

第一轮

ff(a,b,c,d,m0,7,0xd76aa478)

ff(d,a,b,c,m1,12,0xe8c7b756)

ff(c,d,a,b,m2,17,0x242070db)

ff(b,c,d,a,m3,22,0xc1bdceee)

ff(a,b,c,d,m4,7,0xf57c0faf)

ff(d,a,b,c,m5,12,0x4787c62a)

ff(c,d,a,b,m6,17,0xa8304613)

ff(b,c,d,a,m7,22,0xfd469501)

ff(a,b,c,d,m8,7,0x698098d8)

ff(d,a,b,c,m9,12,0x8b44f7af)

ff(c,d,a,b,m10,17,0xffff5bb1)

ff(b,c,d,a,m11,22,0x895cd7be)

ff(a,b,c,d,m12,7,0x6b901122)

ff(d,a,b,c,m13,12,0xfd987193)

ff(c,d,a,b,m14,17,0xa679438e)

ff(b,c,d,a,m15,22,0x49b40821)

 

第二轮

gg(a,b,c,d,m1,5,0xf61e2562)

gg(d,a,b,c,m6,9,0xc040b340)

gg(c,d,a,b,m11,14,0x265e5a51)

gg(b,c,d,a,m0,20,0xe9b6c7aa)

gg(a,b,c,d,m5,5,0xd62f105d)

gg(d,a,b,c,m10,9,0x02441453)

gg(c,d,a,b,m15,14,0xd8a1e681)

gg(b,c,d,a,m4,20,0xe7d3fbc8)

gg(a,b,c,d,m9,5,0x21e1cde6)

gg(d,a,b,c,m14,9,0xc33707d6)

gg(c,d,a,b,m3,14,0xf4d50d87)

gg(b,c,d,a,m8,20,0x455a14ed)

gg(a,b,c,d,m13,5,0xa9e3e905)

gg(d,a,b,c,m2,9,0xfcefa3f8)

gg(c,d,a,b,m7,14,0x676f02d9)

gg(b,c,d,a,m12,20,0x8d2a4c8a)

 

第三轮

hh(a,b,c,d,m5,4,0xfffa3942)

hh(d,a,b,c,m8,11,0x8771f681)

hh(c,d,a,b,m11,16,0x6d9d6122)

hh(b,c,d,a,m14,23,0xfde5380c)

hh(a,b,c,d,m1,4,0xa4beea44)

hh(d,a,b,c,m4,11,0x4bdecfa9)

hh(c,d,a,b,m7,16,0xf6bb4b60)

hh(b,c,d,a,m10,23,0xbebfbc70)

hh(a,b,c,d,m13,4,0x289b7ec6)

hh(d,a,b,c,m0,11,0xeaa127fa)

hh(c,d,a,b,m3,16,0xd4ef3085)

hh(b,c,d,a,m6,23,0x04881d05)

hh(a,b,c,d,m9,4,0xd9d4d039)

hh(d,a,b,c,m12,11,0xe6db99e5)

hh(c,d,a,b,m15,16,0x1fa27cf8)

hh(b,c,d,a,m2,23,0xc4ac5665)

 

第四轮

ii(a,b,c,d,m0,6,0xf4292244)

ii(d,a,b,c,m7,10,0x432aff97)

ii(c,d,a,b,m14,15,0xab9423a7)

ii(b,c,d,a,m5,21,0xfc93a039)

ii(a,b,c,d,m12,6,0x655b59c3)

ii(d,a,b,c,m3,10,0x8f0ccc92)

ii(c,d,a,b,m10,15,0xffeff47d)

ii(b,c,d,a,m1,21,0x85845dd1)

ii(a,b,c,d,m8,6,0x6fa87e4f)

ii(d,a,b,c,m15,10,0xfe2ce6e0)

ii(c,d,a,b,m6,15,0xa3014314)

ii(b,c,d,a,m13,21,0x4e0811a1)

ii(a,b,c,d,m4,6,0xf7537e82)

ii(d,a,b,c,m11,10,0xbd3af235)

ii(c,d,a,b,m2,15,0x2ad7d2bb)

ii(b,c,d,a,m9,21,0xeb86d391)

常数ti可以如下选择:

在第i步中,ti4294967296*abs(sin(i))的整数部分,i的单位是弧度。(4294967296等于232次方)些完成之后,将abcd分别加上abcd。然后用下一分组数据继续运行算法,最后的输出是abcd的级联。

按照上面所说的方法实现MD5算法以后,就可以用以下几个信息测试,看看程序有没有错误。

MD5 ("") = d41d8cd98f00b204e9800998ecf8427e

MD5 ("a") = 0cc175b9c0f1b6a831c399e269772661

MD5 ("abc") = 900150983cd24fb0d6963f7d28e17f72

MD5 ("message digest") = f96b697d7cb7938d525a2f31aaf161d0

MD5 ("abcdefghijklmnopqrstuvwxyz") = c3fcd3d76192e4007dfb496cca67e13b

MD5 ("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789") =

4ab98d277d9f5a5611c2c9f419d9f

结果实例测试后,最后得出的结论和标准答案完全一样,考研网站的管理员密码截取abcd级联中的abcd级联作为最后的密码。

 

6.2数据库技术

6.2.1 ASP.NET 2.0数据缓存功能——SqlCacheDependency

ASP.NET 2.0,新增加了不少新的功能和控件。其中,在数据的缓存功能,比asp.net 1.1有了很大的改变。众所周知,数据的缓存功能是十分重要的,我们可以把一些在相对一段时间内不发生改变的数据放在缓存中,这样,就不必要每次去读取数据库,当下次再需要这些数据时,可以直接从缓存中取得,大大增强了效率。
  而在asp.net 1.1 中,已经比较好地实现了数据的缓存功能,但有一个小问题,那就是如果数据库中的数据发生了变化,缓存不能在指定的时间内更新,而必须等到缓存失效。比如,在网页中,如果你对商品的一些详细信息,如价格等使用了页面缓存,那么假如在后台修改了这些信息,用户不会马上看到这些信息,而要延迟一些时间才看到。在某些应用场合,如果你要做到对于数据库的任何更新,都能马上可以在缓存的变化生效的话,在asp.net 1.1中则是比较难实现的,而在asp.net 2.0中,则可以很方便地实现该功能。
  首先,在asp.net 2.0中,针对sql server 7/2000,以及即将发行的sql server 2005(Yukon),分别提供了新的缓存功能。这里着重介绍针对sql server 7/2000的缓存功能。这个新的数据缓存功能,叫做SqlCacheDependency,要实现该功能,需要采用如下步骤:
  1、在.net framework 2.0的安装目录下
(默认是Windows/Microsoft.NET/Framework/v2.0.40607),启动一个叫aspnet_regsql.exe的命令行工具,比如:
aspnet_regsql -S localhost –U Wy –P feison -d Wy –ed
  上面的意思是,指定了本地的数据库服务器localhost,并指定了登陆的用户名和密码,并用参数-d指定了要采用哪一个数据库(这里是指定了pubs)数据库,-ed参数表示是允许该数据库使用sqlcachedependency功能。
  接着,我们需要指定对哪一个表使用数据sqlcachedependency功能,如:
aspnet_regsql -S localhost –U sa -P 123456 -ed -d pubs -et -t authors
  上面语句的意思是,指定对pubs数据库中的authors表使用sqlcachedependency功能,-t参数后是表的名称,-et是允许该表使用sqlcachedependency功能。其他的有关参数简单介绍如下:

参数

参数意义

-?

显示该工具的帮助功能.

-S

后接的参数为数据库服务器的名称或者IP地址

-U

后接的参数为数据库的登陆用户名.

-P

后接的参数为数据库的登陆密码

-E

当使用windows集成验证时,使用该功能

-t

后接参数为对哪一个表采用SqlCacheDependency功能。

-d

后接参数为对哪一个数据库采用SqlCacheDependency功能

-ed

允许对数据库使用SqlCacheDependency功能

-dd

禁止对数据库采用SqlCacheDependency功能

-et

允许对数据表采用SqlCacheDependency功能

-dt

禁止对数据表采用SqlCacheDependency功能

-lt

列出当前数据库中有哪些表已经采用SqlCacheDependency功能


  Sqlcachedependency的的原理简单来说,是采用aspnet_regsql这个专门工具,预先设定要监视的数据库和表,并在数据库中增加一个专门的表,打开数据库,会发现多了一个数据表aspnet_sqlcachetablesforchangenotification,如下6-1图:

6-1 开启SqlDependency的数据库新增加项目


  这个表有三个字段,“tableName”记录要追踪的数据表的名称,“notificationCreated”记录开始追踪的时间,“changeId”是一个int类型的字段,每当追踪的数据表的数据发生变化时,这个字段的值就加1。 此外还会在指定的数据库中增加几个存储过程,用来让ASP.NET引擎查询追踪的数据表的情况,并给要使用 Sqlcachedependency 的表加上若干触发器,分别对应到InsertUpdateDelete操作。ASP.NET引擎通过执行它加上的存储过程“AspNet_SqlCachePollingStoredProcedure”,这个存储过程直接返回“AspNet_SqlCacheTablesForChangeNotification”表的内容,让ASP.NET引擎知道哪个表的数据发生的变化。

 

6.2.2 GridViewDetailsView控件

DataGridASP.NET中最受欢迎的控件之一,但在某些方面,它也成为自己成功的牺牲品:如此丰富的功能,以至于让ASP.NET开发人员不满足于此,而是希望它能提供更多功能。DataGrid控件在ASP.NET 2.0中并没有发生太大变化,只是添加了两个分别名为GridViewDetailsView的新控件,它们提供了通常要求DataGrid控件所具有的功能,并且还加入了一些属于它们自己的新功能。

    GridView呈现HTML表的方式与DataGrid一样,但与DataGrid不同的是,GridView可以完全依靠自己来分页和排序。GridView还支持比DataGrid种类更为丰富的列类型(在GridView用语中称为字段类型),并且它们具有更为智能的默认呈现行为,能够自动呈现Boolean值(例如,通过复选框)。GridView也可以容易地与DetailsView搭配使用,以创建主-从视图。GridView控件的主要缺陷是:像DataGrid一样,它通过将信息传回到服务器来完成它该做的大部分工作。

请注意GridViewDetailsView控件中用于定义字段类型的和元素。这些元素实际上等效于DataGrid控件中的元素。图6-2 列出了受支持的字段类型。特别重要的是ImageFieldDropDownListField,它们都可以有效地削减目前开发人员为在DataGrid中包含图像和数据绑定下拉列表而编写的大部分代码。

字段类型

描述

AutoGeneratedField

默认字段类型

BoundField

绑定到数据源指定列

ButtonField

显示一个按钮、图片按钮或者链接按钮

CheckBoxField

显示一个复选框

CommandField

显示一个用于选择或者编辑的按钮

DropDownListField

显示一个下拉列表

HyperLinkField

显示一个超级链接

ImageField

显示一个图片

TemplateField

内容由HTML模板来定义

6-2 GridView and DetailsView字段类型


 

7. 讨论

 

7.1优化ASP.NET应用程序性能研究与探讨

    网站的性能对于ASP.NET程序开发人员来说非常重要。一个优秀的网站虽然有美观的页面设计,完善的服务功能,但是打开网页时有长时间的延迟,用户最终将会无法忍受。尤其对于大型的电子商务网站而言,每秒钟有数万用户同时访问,没有良好的网站性能,根本无法满足庞大的需求。
  ASP.NET作为全新一代的动态网页生成系统,它在平台性能方面与原有的ASP相比已有了一个本质的提高。但要在此基础上开发出专业水准的、符合生产标准的、受用户欢迎的web应用程序,还需要开发人员从编程的角度在页面、数据访问和字符串处理等各方面进行优化处理,以提高网站的总体性能。一.有关ASP内置对象使用方面的优化方法

页面性能优化
  1、会话状态的恰当选择
  HTTP协议是一种无状态的通信协议,无法记录和识别来自不同客户端的请求,但在实际应用中系统却要维护来自客户端的不同请求之间的会话状态信息。ASP.NET通过将会话状态信息存储在进程、状态服务器或SQL Server数据库中来解决这个问题。
  将会话状态信息保存在WEB服务器的内存中具有最佳的性能,速度很快,但是却缺乏会话状态信息跨越多个服务器的能力。若要在多个WEB服务器之间维护会话信息,可以使用状态服务器进行存储,这种方式由于可以将应用程序部署到多台服务器上而提高了系统的伸缩性和可靠性,但是以降低性能为代价。对于极其重要的会话信息,需要使用SQL Server存储方式,从而避免丢失重要的会话信息,但由此产生的工作负载比前两者大得多。
  若不考虑状态信息的保留和多个服务器共享,应尽量选择保存在服务器的进程中,从而得到最佳的性能。
  会话状态信息的存储方式选择通过web.config文件:
  <sessionState
  mode="InProc/StateServer/SqlServer" //存储方式由此行选择
  stateConnectionString="tcpip=127.0.0.1:42424"
  ……
  timeout="20"/
  2、服务器控件的优化选择
  2.1 减少不必要的服务器控件

  服务器控件带来的方便和功能是html控件所不能比拟的。但是每一个服务器控件都需要在服务器端创建相应的对象,是以牺牲服务器端的资源为代价的,过多的使用服务器控件会极大的影响程序性能。
  很多情况下,简单地使用html标记或数据绑定即能够实现所需功能。比如<asp:Label>控件,若使用它来显示静态信息,则完全可用简单的标记来实现。如果html控件达不到所要实现的功能,而且在脚本语言如javascriptvbscript也不能实现的情况下,才考虑选择服务器控件。
  2.2 禁用不必要的状态视图
  服务器控件的状态视图属性能够自动的在页面往返过程中维护服务器控件的状态,减少开发者的工作量,但是需要占用大量的服务器内存资源。因此,在不需要服务器控件状态视图的情况下,应将其EnableViewState属性设置为false,如常用的<asp:Lable>和<asp:Button>控件。
  2.3 Page.IsPostBack的运用
  Page.IsPostBack用于记录页面是否从客户端返回,若为false表示初次运行,否则表示从客户端再次返回该页面。Page.IsPostBack的合理应用可以避免页面在往返过程中的一些不必要的操作。在Page_Load函数及一些只需要初始化一次的事件函数中均可以使用该属性来提高应用程序性能。


  void Page_Load(Object o, EventArgs e)
  {
  if(! Page.IsPostBack)
  {
  conn=new SqlConnection("server=localhost;uid=sa;pwd=;database=data");
  String sql="select * from student";
  cmd.Fill(ds,"stu");
  mydataGrid.DataBind();
  }
  }

  以上代码将保证只有在首次访问该页面时对数据库进行读取并绑定。
  2.4 合理使用DataGrid控件

  DataGrid控件带有最强大的数据显示功能,还内置了对数据的修改、删除、添加、分页等很多功能。如果只需简单的显示数据, DataGrid并非最佳选择。DataGrid控件的分页功能,数据的存储方式(存储在viewstate中)等,虽然让程序开发者使用方便快捷,但由此产生的性能开销不容小视。
  DataList控件比DataGrid功能少了很多。但自定义性强了很多。特有的多行数据显示还是比较方便的。DataGrid能实现的功能,它基本能实现。
  Repeater控件功能最少,但自定义性非常强。由于减少了很多功能,对服务器的性能带来消耗最小。
  因此,在只需简单显示数据列表时,选择RepeaterDataList控件同样可以达到目的,而且减轻了性能上的开销。
  数据库访问性能优化
  1、数据库的连接和关闭
  访问数据库资源需要创建连接、打开连接和关闭连接几个操作。这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源。ASP.NET中提供了连接池(Connection Pool)改善打开和关闭数据库对性能的影响。系统将用户的数据库连接放在连接池中,需要时取出,关闭时收回连接,等待下一次的连接请求。
  连接池的大小是有限的,如果在连接池达到最大限度后仍要求创建连接,必然大大影响性能。因此,在建立数据库连接后只有在真正需要操作时才打开连接,使用完毕后马上关闭,从而尽量减少数据库连接打开的时间,避免出现超出连接限制的情况。
  2、使用存储过程
  存储过程是存储在服务器上的一组预编译的SQL语句,类似于DOS系统中的批处理文件。存储过程具有对数据库立即访问的功能,信息处理极为迅速。使用存储过程可以避免对命令的多次编译,在执行一次后其执行规划就驻留在高速缓存中,以后需要时只需直接调用缓存中的二进制代码即可。
  另外,存储过程在服务器端运行,独立于ASP.NET程序,便于修改,最重要的是它可以减少数据库操作语句在网络中的传输。
  3、优化查询语句
  ASP.NETADO连接消耗的资源相当大,SQL语句运行的时间越长,占用系统资源的时间也越长。因此,尽量使用优化过的SQL语句以减少执行时间。比如,不在查询语句中包含子查询语句,充分利用索引等。
  字符串操作性能优化
  1、使用值类型的ToString方法
  在连接字符串时,经常使用"+"号直接将数字添加到字符串中。这种方法虽然简单,也可以得到正确结果,但是由于涉及到不同的数据类型,数字需要通过装箱操作转化为引用类型才可以添加到字符串中。但是装箱操作对性能影响较大,因为在进行这类处理时,将在托管堆中分配一个新的对象,原有的值复制到新创建的对象中。
  使用值类型的ToString方法可以避免装箱操作,从而提高应用程序性能。
  2、运用StringBuilder
  String类对象是不可改变的,对于String对象的重新赋值在本质上是重新创建了一个String对象并将新值赋予该对象,其方法ToString对性能的提高并非很显著。
  在处理字符串时,最好使用StringBuilder类,其.NET 命名空间是System.Text。该类并非创建新的对象,而是通过AppendRemoveInsert等方法直接对字符串进行操作,通过ToString方法返回操作结果。


 

8. 结论

 

通过对《社区信息系统》的独立设计,既使我提高了系统设计和程序编码的能力,也使我各方面的素质得到了提高。让我系统的回顾了和学习实践了软件设计各个阶段——需求分析、总体设计、详细设计、测试等各个阶段的必须经历的工作。

经过对系统进行需求分析、总体设计、详细设计、编码实现,现已基本满足了小区社区管理的各种基本功能。对于小区的房产信息、人口信息、维修和投诉信息可以进行系统的数据库存储和查询调用。但是由于时间和人力的限制,本系统可能存在很多的不足之处,以待在以后的时间中修正和改进。


 

致谢

 

在本文收笔之际,首先我要衷心感谢我的指导老师:蒋伟钢老师。在毕业设计期间,蒋老师给予了无数的帮助、鼓励和支持,十分关心我的设计进度,对设计和论文提出大量宝贵的意见和建议,在他悉心指导和大力支持下,我的毕业设计和毕业论文得以顺利完成。也使我在大学的最后阶段受益匪浅。

其次,感谢所有帮助过我的老师和同学们,以及网络上那些不知名的程序开放人员的无私奉献。他们的支持和指导给了我莫大的帮助和启迪。

最后,向评审本论文及参加论文答辩的各位老师表示衷心的感谢和诚挚的敬意。


参考文献

1. 廖信彦,ASP.net互交式Web数据库程序设计,中国铁道出版社,200410

2. 求是科技、张立科,Visual Basic 房产建筑应用系统开发实例导航,人民邮电出版社,2004 3

3. 季久峰,专家门诊——ASP.NET开发答疑200问,人民邮电出版社,20049

4. 萨师煊、王珊,数据库系统概论(第三版),高等教育出版社,20002

5. 张海藩,软件工程导论(第三版),清华大学出版社,19983

6. 孙赵林,中文版Dreamweaver MX经典范例教程,北京希望电子出版社,2003

7. []Joseph Schmuller 著、李虎、王美英、万里威译,UML基础、案例与应用,人民邮电出版社,20026

8. 何俊杰、李广锡,采用MD5加密算法保护用户口令,计算机工程,2000S1

9. 刘瑞新、马骏、何欣,C#网络编程及应用,机械工业出版社,20046

10.             塞奎春、郑晓鹏、郑齐心等,Delphi数据库开发实例解析,机械工业出版社,20042

11.             孙忠华,B/S模式的智能化小区物业管理系统的研究,20043

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页