欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    基于WEB的房屋出租管理系统的设计与实现精品资料.doc

    • 资源ID:96697589       资源大小:322.93KB        全文页数:20页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于WEB的房屋出租管理系统的设计与实现精品资料.doc

    基于WEB的房屋出租管理系统的设计与实现摘 要随着互联网技术的迅猛发展,越来越多的商业活动都从传统的现实社会中发展到了网络上。房屋的出租业务也从现实生活中走上了网络空间。伴随着这类业务的开展,如何对出租房屋进行高效,合理的管理这个问题越来越凸现出来。针对这一需求,本文设计并实现了一套基于Web的房屋出租管理系统,力求能简洁高效地解决房屋出租管理方面的问题。本系统采用B/S模式,基于ASP.net平台开发,后台数据库采用SQL Server2000,WEB服务器采用IIS 5.0。系统主要由以下几个模块组成:数据发布模块,数据查询模块,数据管理模块,身份验证模块,系统管理模块,数据计算模块。系统实现了用户登录,信息发布,信息修改,房屋收费项设置,房屋收费计算,信息查询,用户留言,管理员发布公告等功能。使用本系统,客户端用户只需要通过浏览器访问就可以实现对房屋出租信息管理的操作。关键词:基于Web的房屋出租;管理系统;数据库Design and Implementation of Web-based House Renting Management System AbstractWith rapidly developing of the Internet technology, commercial activities are developing from the traditional society to the network. For example, the house renting business is dealing online, which used to appear in real life. With such business developing, how to manage the house renting efficiently and rationally become important. In response to this demand, the paper designed and implemented a Web-based house renting management system; it strives to solve problems of house renting management simply and efficiently.The system uses B/S model, based on the ASP.net development platform, database server is SQL Server 2000, Web server is IIS 5.0. System is mainly composed of the following modules: information publication module, data query module, data management module, authentication module, system management module, and data counting module. System achieves the following functions: users login, information publication, information modification, setting up charges on housing, calculating house renting fees, information inquiries, user messages, and administrators issued a public notice, etc. By using this system, the client users can achieve the house renting information management operation through the browser. Key words: web-based house renting; management system; Database目 录论文总页数:22页1引言11.1课题背景11.2 国内外研究现状11.3 本课题研究的意义11.4 本课题的研究方法12 开发工具和采用技术介绍22.1 开发工具简介22.1.1 Sql Server200022.1.2 Dreamweaver 822.1.3 IIS 5.022.2 采用技术简介32.2.1 ASP技术简介32.2.2 B/S(Browser/Server)结构32.2.3 Web数据库访问原理33 系统总体设计43.1系统概要43.2 系统构成43.3身份验证模块53.3.1会员登陆53.3.2 管理员登陆53.4信息发布53.4.1 游客留言发布53.4.2 会员发布信息53.4.3 管理员发布公告消息53.5 数据查询53.5.1 查看所有房屋信息和留言信息53.5.2 模糊查询房屋信息53.5.3 会员查看自己发布的信息63.6 数据管理63.6.1 密码修改63.6.2 删除留言63.6.3 编辑房屋信息63.7 数据计算63.7.1 会员设定收费标准63.7.2 计算所有收费项目并详细显示63.8 数据库设计73.8.1 管理员信息表admin73.8.2 房屋管理表 house_manage73.8.3 房屋留言表 house_note73.8.4 房屋信息表 info83.8.5 新闻表 news83.8.6 留言表 note93.8.7 用户表 user93.8.8 房屋推荐表 tuijian93.9 系统工作流程93.9.1 用户工作流程93.9.2 管理员工作流程104 系统详细设计与实现114.1数据库访问的实现114.1.1 WEB数据库连接代码114.2 登陆模块代码实现124.2.1 会员登陆实现124.3查询模块的实现144.4 数据插入更新删除164.4.1 数据插入164.4.2数据更新174.4.3 数据删除174.4.4 数据计算174.5 开发中所遇到的问题及解决办法194.5.1 开发中遇到的问题194.5.2 解决办法195系统测试195.1测试内容195.2测试结果和分析19结 论20参考文献20致 谢21声 明223.2 系统构成图3-1 系统构成在各个模块中,数据管理模块和数据计算模块的操作需要通过身份验证后才能进行。信息发布模块里的会员信息发布和管理员发布公告信息也需要通过身份验证。数据查询模块对所有用户开放,方便用户查询相关留言信息以及房屋出租等信息。3.3身份验证模块3.3.1会员登陆会员登陆主要是通过对“session”变量赋值来实现会员用户的身份验证,确保非法用户不能进入会员操作页面进行非法操作。作为收费的信息发布平台,只有通过了会员登陆验证的用户才能发布信息。通过登陆验证功能极大的提高了系统的安全性。3.3.2 管理员登陆同会员登陆验证方式类似,管理的登陆验证也是通过对“session”赋值以及在后面的操作中对这个变量进行验证来确保管理员的合法身份。本系统的身份验证都是通过对“session”变量的赋值和后续操作中对该变量的检验来实现的。3.4信息发布3.4.1 游客留言发布游客留言的发布是通过表单提交来实现的,当用户在填写留言页面写好了相关的留言信息后。选择提交留言,刚才的留言内容就通过表单传递到表单处理页面,通过表单处理页的程序功能就可以把留言内容插入到数据库的留言表中。3.4.2 会员发布信息会员信息发布也是采用的表单提交处理方式来实现的。不过在将会员信息提交到数据库的时候,系统会自动插入会员ID编号,信息发布时间等内容以方便对其他模块信息数据表的处理。3.4.3 管理员发布公告消息管理员登陆成功后可以发布网站的公告消息,管理员可以利用公告消息功能发一些通知,注意事项,或者其它的紧急信息之类的消息。消息发布后先是提交到数据库的公告表里面,网站的公告栏会自动从数据库的读取一条最新公告并在网站首页滚动显示出来。用户点击滚动公告可以查看该公告的相信内容。4.2 登陆模块代码实现4.2.1 会员登陆实现图4-1 会员登陆页面4.3查询模块的实现图4-2 房屋查询页面4.4.4 数据计算图4-3数据计算页面声 明本论文的工作是 2007年2月至2007年6月在成都信息工程学院网络工程 系完成的。文中除了特别加以标注地方外,不包含他人已经发表或撰写过的研究成果,也不包含为获得成都信息工程学院或其他教学机构的学位或证书而使用过的材料。除非另有说明,本文的工作是原始性工作。关于学位论文使用权和研究成果知识产权的说明本人完全了解成都信息工程学院有关保管使用学位论文的规定,其中包括:(1)学校有权保管并向有关部门递交学位论文的原件与复印件。(2)学校可以采用影印、缩印或其他复制方式保存学位论文。(3)学校可以学术交流为目的复制、赠送和交换学位论文。(4)学校可允许学位论文被查阅或借阅。(5)学校可以公布学位论文的全部或部分内容(保密学位论文在解密后遵守此规定)。除非另有科研合同和其他法律文书的制约,本论文的科研成果属于成都信息工程学院。特此声明! 作者签名: 年 月 日Powered by 计算机毕业论文网 http:/ 重要提示:本论文由大学论文网毕业论文下载网: 提供如果需要详细内容请与QQ:4991024联系附录资料:从 XML 生成可与 Ajax 共同使用的 JSON时下,非常流行使用 JavaScript 代码为数据驱动的 Web 应用程序添加互动性。若能将数据编码成 JavaScript Object Notation(JSON)的格式,您就可以更轻松地通过 JavaScript 语言使用它。通过本文,发掘使用 XSLT V2 从 XML 数据生成 JSON 的几种不同方法。几年前,许多开发人员很看好 XML、XSLT、Extensible HTML (XHTML)和其他一些基于标记的语言。现在,Asynchronous JavaScript and XML(AJAX)成了新的热点,人们又将目光转向了使用 JavaScript 代码的数据驱动的富 Internet 应用程序。但是开发人员是否已经消除了 XML 和这一新技术之间的鸿沟呢?当然,您可以在 Web 客户机中使用 XML 解析器来读取数据,但这种做法会带来两个问题。第一,出于安全方面的原因,XML 数据只能从与此页面相同的那个域中读取。这虽然不是什么大的限制因素,但它的确会引起部署方面的问题,还会阻碍 DHTML 小部件的创建。第二,读取和解析 XML 会非常慢。另一种做法是让服务器执行 XML 的解析工作,方法是设置服务器,使之向浏览器发送以 JavaScript 代码或时下流行的 JavaScript Object Notation(JSON)编码的数据。本文将展示如下三种使用 XSLT V2 语言和 Saxon XSLT V2 处理器从 XML 数据生成 JSON 的技巧: l 简单编码 l 通过函数调用加载数据 l 编码对象 JSON 简介要学习如何将数据编码成 JSON(它只是 JavaScript 的一个子集),最好的方法是从数据开始。清单 1 显示了书籍列表的一个示例 XML 数据集。清单 1. 基本的图形化图书馆<?xml version="1.0" encoding="UTF-8"?><books> <book id="1"> <title>Code Generation in Action</title> <author><first>Jack</first><last>Herrington</last></author> <publisher>Manning</publisher> </book> <book id="2"> <title>PHP Hacks</title> <author><first>Jack</first><last>Herrington</last></author> <publisher>O'Reilly</publisher> </book> <book id="3"> <title>Podcasting Hacks</title> <author><first>Jack</first><last>Herrington</last></author> <publisher>O'Reilly</publisher> </book></books>这个数据集很简单,只包含三本书,每本书都具有惟一的 ID、书名、作者姓名及出版商的名字。(没错,我只选择了我自己的书作为数据集,但能怨我吗?这些书实在是不可多得的节日和生日礼物。)清单 2 显示了这些数据在 JSON 中的效果。清单 2. JSON 中的示例数据集 id: 1, title: 'Code Generation in Action', first: 'Jack', last: 'Herrington', publisher: 'Manning' , . 方括号 () 表明这是一个数组。大括号 () 则表明这是一个散列表,该散列表由一组名称和值对组成。在本例中,我创建了一个散列表的数组 用来存储这类结构式数据的一种常见方法。另外一点值得注意的是字符串是通过单引号或双引号被编码的。所以,如果我想用单引号编码 O'Reilly,我就必须使用反斜杠对它进行转义:'O'Reilly'。 这让我编写的这个 XSLT 样式表更为有趣了一些。我并未在本例中放上任何日期,但您也可以通过如下两种方法来编码日期。第一种方法是将日期作为字符串,该字符串必须在后面被解析。第二种方法是将日期作为一个对象,比如:publishdate: new Date( 2006, 6, 16, 17, 45, 0 )这段代码将 publishdate 的值设置为6/16/2006 5:45:00 p.m.。简单编码接下来我将陆续介绍 JSON 编码的几种技巧。第一种也是其中最简单的一种,此样式表如 清单 3 所示。清单 3. simple.xsl 样式表<?xml version="1.0" encoding="UTF-8"?><xsl:stylesheet xmlns:xsl="http:/www.w3.org/1999/XSL/Transform" version="2.0" xmlns:js=""> <xsl:output method="text" /><xsl:function name="js:escape"><xsl:param name="text" /><xsl:value-of select='replace( $text, "'", "'" )' /></xsl:function><xsl:template match="/">var g_books = <xsl:for-each select="books/book"><xsl:if test="position() > 1">,</xsl:if> id: <xsl:value-of select="id" />,name: '<xsl:value-of select="js:escape(title)" />',first: '<xsl:value-of select="js:escape(author/first)" />',last: '<xsl:value-of select="js:escape(author/last)" />',publisher: '<xsl:value-of select="js:escape( publisher )" />'</xsl:for-each></xsl:template></xsl:stylesheet>要理解此样式表,不妨先来看一下 清单 4 所示的输出。清单 4. simple.xsl 的输出var g_books = id: 1,name: 'Code Generation in Action',first: 'Jack',last: 'Herrington',publisher: 'Manning', id: 2,name: 'PHP Hacks',first: 'Jack',last: 'Herrington',publisher: 'O'Reilly', id: 3,name: 'Podcasting Hacks',first: 'Jack',last: 'Herrington',publisher: 'O'Reilly'这里,我将名为 g_books 的变量设置为一个包含三个散列表的数组,每个散列表包含关于该书的信息。再回过头来看看 清单 3,您会发现第一个模板匹配 "/" 路径,它也是首先应用到输入数据集的模板,该模板使用 for-each 循环来遍历每本书。之后,它使用 <value-of> 标记来将文本从该数据输出到 JavaScript 输出代码。对于字符串,我使用名为 js:escape() 的定制函数,它在模板之前定义。该函数使用一个正则表达式将一个单引号标记更改为带有反斜杠的单引号标记。最后一个重要的元素是 <xsl:output> 标记,它告知处理器要输出的是文本而不是 XML。要检验此过程是否可以正常工作,我加入了一个 simple .html 文件,该文件引用我在 simple.js 保存的 XSL 样式表的输出。这个 HTML 文件如 清单 5 所示。清单 5. simple.html 文件<html><head><title>Simple JS loader</title><script src="simple.js"></script></head><body><script>document.write( "Found "+g_books.length+" books" );</script></body></html>.html 文件使用 <script> 标记简单地加载已编码了的 JavaScript 代码。之后,第二个 <script> 标记将数组的长度写出到浏览器页面,如 图 1 所示。图 1. simple.html 的输出好了!数据文件包含三本书,相应的 JavaScript 文件也包含三本书。它真的可以工作!通过函数加载上述第一个示例很简单,而且在大多数情况下可以发挥其作用,但它存在一些问题。第一个问题是对于数据何时被加载没有任何提示。如果数据是像页面那样被静态加载的,这不成问题。但是如果页面动态创建了一个 <script> 标记来按需加载数据,那么就很有必要知道 <script> 标记是何时完成的。实现此功能的最好的方法是让编码了的数据调用一个 JavaScript 函数,而不是只设置数据。这个概念很重要,所以我将花一些时间来介绍一下为什么您必须要通过动态生成的 <script> 标记来加载数据。页面加载后,从服务器获得数据是 Web 2.0 的核心功能。一种方法是使用 AJAX 机制通过到服务器的调用来加载 XML。然而,出于安全性的原因,AJAX 机制只限于从单一域获取数据。这在大多数情况下都没有问题,但有时,您可能需要 JavaScript 代码运行在他人的页面上(例如,Google Maps)。在这种情况下从服务器获得数据的惟一方法是通过动态加载 <script> 标记。获悉 <script> 标记何时加载的最好的方法是让 <script> 标记返回的脚本调用函数而不是简单地加载数据。清单 6 显示了在函数调用中编码的数据。清单 6. Function1.jsAddBooks( id: 1,name: 'Code Generation in Action',first: 'Jack',last: 'Herrington',publisher: 'Manning', id: 2,name: 'PHP Hacks',first: 'Jack',last: 'Herrington',publisher: 'O'Reilly', id: 3,name: 'Podcasting Hacks',first: 'Jack',last: 'Herrington',publisher: 'O'Reilly' );清单 7 给出了相应的 .html 文件。清单 7. Function1.html<html><head><title>Function 1 JS loader</title><script>var g_books = ;function AddBooks( books ) g_books = books; </script><script src="function1.js"></script><script src="drawbooks.js"></script></head><body><script>drawbooks( g_books );</script></body></html>稍后将详细介绍 drawbooks 函数。这里重要的是了解一下页面如何定义 AddBooks 函数,该函数随后会由 function1.js 文件中的脚本调用。该 AddBooks 函数负责处理数据。而且被调用的 AddBooks 函数会向页面指示 <script> 标记被正确加载,并已加载完成。要创建 function1.js 文件,我只对样式表稍微做了一点修改,如 清单 8 所示。清单 8. function1.xsl 样式表<xsl:template match="/">AddBooks( <xsl:for-each select="books/book"><xsl:if test="position() > 1">,</xsl:if> id: <xsl:value-of select="id" />,name: '<xsl:value-of select="js:escape(title)" />',first: '<xsl:value-of select="js:escape(author/first)" />',last: '<xsl:value-of select="js:escape(author/last)" />',publisher: '<xsl:value-of select="js:escape( publisher )" />'</xsl:for-each> );</xsl:template>这里,我调用了一个函数,而不是简单地设置一个变量。这就是我所做的惟一更改。回到页面,我使用了 drawbooks 函数来构建书的表格,这样我就能够确认数据被正确编码和正确显示。此函数是在 drawbooks.js 内定义的,如 清单 9 所示。清单 9. Drawbooks.jsfunction drawbooks( books ) var elTable = document.createElement( 'table' ); for( var b in books ) var elTR = elTable.insertRow( -1 ); var elTD1 = elTR.insertCell( -1 ); elTD1.appendChild( document.createTextNode( booksb.id ) ); var elTD2 = elTR.insertCell( -1 ); elTD2.appendChild( document.createTextNode( booksb.name ) ); var elTD3 = elTR.insertCell( -1 ); elTD3.appendChild( document.createTextNode( booksb.first ) ); var elTD4 = elTR.insertCell( -1 ); elTD4.appendChild( document.createTextNode( booksb.last ) ); var elTD5 = elTR.insertCell( -1 ); elTD5.appendChild( document.createTextNode( booksb.publisher ) ); document.body.appendChild( elTable );这个简单函数创建了一个表格节点,然后循环访问书的列表并为每本书创建一行,为每个数据元素分配一个单元格。此页面上的代码的结果如 图 2 所示。图 2. function1.html 的结果现在我就可以查看一下此页面的输出并确认来自原始 .xml 文件的一切均已被正确转换成 JavaScript 代码,且数据被发送到 AddData 函数并被正确添加到页面。细化函数调用技术我很喜欢函数调用这一技术,但我并不赞同将所有图书数据都放入一个块中。另一种方式是为每条记录采用一个调用,如 清单 10 所示。清单 10. Function2.jsAddBook( id: 1,name: 'Code Generation in Action',first: 'Jack',last: 'Herrington',publisher: 'Manning' );AddBook( id: 2,name: 'PHP Hacks',first: 'Jack',last: 'Herrington',publisher: 'O'Reilly' );.对 .html 页面只需做少许修改,如 清单 11 所示。清单 11. Function2.html.<script>var g_books = ;function AddBook( book ) g_books.push( book ); </script>.这里更改了 XSLT,以使函数调用驻留在 for-each 循环体内。清单 12 显示了更新后的样式表。清单 12. function2.xsl.<xsl:template match="/"><xsl:for-each select="books/book">AddBook( id: <xsl:value-of select="id" />,name: '<xsl:value-of select="js:escape(title)" />',first: '<xsl:value-of select="js:escape(author/first)" />',last: '<xsl:value-of select="js:escape(author/last)" />',publisher: '<xsl:value-of select="js:escape( publisher )" />' );</xsl:for-each></xsl:template>.对这个给定示例来说,这种更改看起来有些随意。但如果原始的 XML 数据集有多种数据类型,要为每种类型分配一个单独的函数调用会使 XSL 和页面上的 JavaScript 代码更为简单、更易于维护。编码对象对小的页面来讲,使用 JavaScript 函数没有问题。但对于大型项目,就需要使用 JavaScript 语言的一些面向对象特性。是的,JavaScript 语言可以处理对象而且可以处理得很好。清单 13 显示了如何创建带有数据的对象。清单 13. Object1.jsg_books.push( new Book( id: 1,name: 'Code Generation in Action',first: 'Jack',last: 'Herrington',publisher: 'Manning' ) );g_books.push( new Book( id: 2,name: 'PHP Hacks',first: 'Jack',last: 'Herrington',publisher: 'O'Reilly' ) );在本例中,我只简单地向名为 g_books 的数组添加了 Book 对象。JavaScript 的对象创建与 Java、C# 或 C+ 编程语言的对象创建十分相似。都是一个 new 操作符后跟一个类名。参数放到随后的括号内。在本例中,我传入了一个带值的单一散列表,并将其分割成单独的一些参数。创建此对象的代码如 清单 14 所示。清单 14. Object1.xsl<xsl:template match="/"><xsl:for-each select="books/book">g_books.push( new Book( id: <xsl:value-of select="id" />,name: '<xsl:value-of select="js:escape(title)" />',first: '<xsl:value-of select="js:escape(author/first)" />',last: '<xsl:value-of select="js:escape(author/last)" />',publisher: '<xsl:value-of select="js:escape( publisher )" />' ) );</xsl:for-each></xsl:template>此页面内最值得注意的是定义 Book 类的那部分代码。清单 15 显示了该页面。清单 15. object1.html.<script>var g_books = ;function Book( data ) for( var d in data ) thisd = datad; </script>.Book 类的构造函数循环访问散列表的所有数据。对于每个键,会在对象上创建一个具有对象名称和数据的实例变量。不需要对 drawbooks 函数做任何修改,因为对象都有与原始的散列表相同的键和值。JavaScript 语言并不区分访问的是散列表内的命名值还是对象上的命名值。当然,Book 类应该有像 set 和 get 这样的访问程序。 清单 16 显示了我是如何对 JavaScript 数据进行编码的。清单 16. Object2.jsvar b1 = new Book();b1.setId ( 1 );b1.setTitle ( 'Code Generation in Action' );b1.setFirst ( 'Jack' );b1.setLast ( 'Herrington' );b1.setPublisher ( 'Manning' );g_books.push( b1 );var b2 = new Book();b2.setId ( 2 );b2.setTitle ( 'PHP Hacks' );.没错,这有些大同小异。它也是先创建一个对象,设置其值,然后将它添加到数组,等等。首先,我对样式表做了一些较大的修改,如 清单 17 所示。清单 17. Object2.xsl.<xsl:function name="js:createbook"><xsl:param name="book" /><xsl:variable name="b" select="concat( 'b', $book/id )" />var <xsl:value-of select="$b" /> = new Book();<xsl:value-of select="concat( $b, '.setId' )" />( <xsl:value-of select="$book/id" /> );<xsl:value-of select="concat( $b, '.setTitle' )" />( '<xsl:value-of select="js:escape( $book/title )" />' );<xsl:value-of select="concat( $b, '.setFirst' )" />( '<xsl:value-of select="js:escape( $book/author/first )" />' );<xsl:value-of select="concat( $b, '.setLast' )" />(

    注意事项

    本文(基于WEB的房屋出租管理系统的设计与实现精品资料.doc)为本站会员(封****n)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开