房屋出租系统
摘要
房屋是人类生活栖息的重要场所,城市中的大量的流动人口随着日益升温的房屋出租产业注入了无限的发展空间。但在房屋管理上存在着大量的缺陷,如繁重的数据流量,复杂的合同管理,以及繁多的报表等等。为了跟上社会的发展,为此,在考查了社会现状和对现有人员的分析之后,提出了我们的课题——房屋出租系统。我们的房屋出租系统就在此市场环境下孕育而生。
企业房屋出租系统是在 J2EE 技术的基础上实现的,它与敏捷的开发方式相融合,完成了整套系统的检验。该管理系统界面简单、操作简便、灵活、实用性强,可以有效的实现房屋出租的管理过程,并大大提高了房屋出租的工作效率,使得房屋出租系统更加系统化、自动化、规范化,并且可用性、可靠性、安全性非常良好。此系统采用标准的三层框架,将复杂的功能模块分为表示层、控制层、业务层等三层结构,降低了系统开发的复杂性。采用的开发技术符合 J2EE 规范,提升系统的运行性能和安全性能,也便于运行期维护。本系统主要分为住户、房主、管理员三个角色。管理员实现租房信息管理、房屋信息管理、合同信息管理、注册用户管理、留言板管理、基本信息管理等功能。房主实现租房信息管理、查看租房信息、基本信息管理功能。住户实现信息管理以及基本信息管理功能。
关键词:人事管理;B/S 模式;J2EE 架构;MVC
Abstract
Housing is an important place for human life habitat , cities with a large number of floating population in the rental industry heats up into the infinite space for development. But there are a lot of housing management deficiencies , such as heavy traffic , complex contract management, as well as numerous reports and so on. To keep up with the development of society , for which , after examining the situation and analysis of existing social workers , made our task - rental system . Our rental system in this market environment born out .
Enterprise rental system is based on J2EE technology to achieve it with agile development methods of integration, complete inspection of the entire system . The management system interface is simple and easy to operate, flexible , practical, effective management process to achieve rental , and greatly improve the efficiency of rental , making rental system more systematic, automated , standardized, and availability, reliability, security is very good . This system uses a standard three-tier framework , complex modules into the presentation layer , control layer structure layer, business layer , reducing the complexity of system development . Development of technology used in compliance with the J2EE specification , improve operational performance and safety performance of the system , but also easy to maintain runtime . The system consists of tenants , homeowners , administrators three roles. Administrators realize rental information management , housing information management, contract information management, subscriber management , message boards, management, information management, and other basic functions . Homeowners realize rental information management , view rental information , basic information management functions. Household achieve information management and basic information management functions.
Keywords : Personnel Management ; B / S mode ; J2EE architecture ; MVC
目 录
第一章 绪论
1.1 课题研究背景
1.2 课题研究意义
1.3 本课题主要工作
第二章 房屋出租系统相关技术
2.1 J2EE技术
2.2 MVC模式
2.3 B/S结构
2.4 数据库技术
2.5 本章小结
第三章 房屋出租系统需求分析
3.1 系统总体目标
3.2 系统可行性分析
3.3 系统功能需求分析
3.4 系统非功能需求分析
3.5 系统开发环境与开发工具
第四章 系统设计与实现
4.1 设计目标与原则
4.2 系统架构设计
4.3 数据库设计
4.4 系统实现
4.5 界面运行效果
第五章 系统测试
5.1 软件测试及工具
5.2 测试方法
5.3 系统配置要求
5.4 测试内容
5.5 测试结果
5.6 本章小结
总结
致谢
参考文献
第一章 绪论
随着社会的信息化,信息资源已成为非常宝贵的一种财富,因此一个即时有效的信息管理系统是一个企业得到良好发展的基础。所以作为信息系统的基础和核心的数据库技术在各个方面得到了更广泛的应用,其中有从联机事务处理到联机分析处理,从一般的企业管理到计算机辅助设计、集成制造系统等等。数据的规模、信息量、使用频率更是代表一个国家信息化发展的程度。但是我国目前的信息化程度并不高,道路漫长而曲折,在经济迅猛发展的今天,信息系统的管理已成为各行各业关注的焦点。
1.1 课题研究背景
利用计算机实现物业管理中的房屋租赁管理势在必行。对于物业管理企业来说,利用计算机支持企业高效率完成房屋租赁管理的日常事务,是适应现代企业制度要求、推动企业劳动型管理走向科学化、规范化的必要条件;而房屋租赁管理是一项琐碎、复杂而又十分细致的工作,房屋的基本资料,客户资料的管理,房屋租赁管理,各项收费以及统计报表的管理,一般不允许出错,如果实行手工操作,须手工填制大量的表格,这就会耗费工作人员大量的时间和精力,计算机进行房屋租赁工作的管理,不仅能够保证各项信息准确无误、快速输出,同时计算机具有手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高物业管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。 开发本系统就是为了解决物业管理企业在房屋租赁信息管理中的一些不规范,使房屋租赁信息的管理向着规范化、简单化、有效化的方向发展。
1.2 课题研究意义
随着经济的快速发展,企事业单位面对的压力也越来越大,当代的竞争就是效率的竞争,而往往一个公司管理的好坏就直接影响到工作效率,所以在这种前提下,一个即方便又管理严密的方法迫在眉睫,而尤其对于房屋租赁,要处理和管理的事物烦琐,没有一个好的管理系统是非常麻烦的,费力不讨好。本课件就是针对这种现状而编写的一个可在实际中解决问题的管理系统,重点是对房屋租赁的添加,修改,查询,读取和删除的管理,同时也可以节省大量的时间和工作量,还可以提高工作效率,对房屋租赁的租赁及管理一目了然,使公司在整体上的效率都提高不少,从而在竞争中立与不败之地随着我国市场经济的快速发展和信息化水平的不断提高,如何利用先进的管理手段,提高物业管理的水平,是当今社会所面临的一个课题。提高企业的管理水平,必须全方位地提高企业的管理意识。只有高标准、高质量的管理才能满足企业的发展需求。面对信息时代的挑战,利用高科技手段来提高房屋租赁管理无疑是一条行之有效的途径。在某种意义上,信息与科技在企业管理与现代化建设中显现出越来越重要的地位。房租租赁管理方面的信息化与科学化,已成为现代化生活水平步入高台阶的重要标志。
房屋租赁信息管理是各个房管局及房屋出租中介赖以生存的基础,原始的房屋租赁管理从房屋资料、住户档案、月租金收取到各种报表全部采用人工管理方式,此种管理方式,存在很大的问题和局限:管理不规范,效率低,容易出错,资料查询不方便,人工报表提供慢,房管员上门收取月租金不安全且不能有效控制房管员在收费过程中的人为不良因素。
现在,各种房屋中介如雨后春笋般在大街小巷遍布开来,要经营这样的店必须依赖于大量的房屋信息,且要具有很大的灵活性,这样才能立于竞争的不败之地。鉴于房管局及房屋中介的实际业务情况,且在当今电脑与网络通信技术普遍的前提下,开发这一房屋租赁管理信息系统是有一定现实意义的。它实现了从房屋资料、住户档案、月租金收取到报表的电脑化管理,其中包括房屋图纸、住户照片的电脑文档管理,从而,基本实现了房屋及相关资料的无纸化办公,大大提高了工作效率,减少了人为错误,丰富的报表为领导全面了解房管所当前月租金收取状况提供了非常快捷的管理方式。
1.3本课题主要工作
本文依据面向对象的软件开发流程,对需求分析到实施检测都进行了全方面的阐述。本人主要做了一下工作:
1. 对需求进行分析。对采集系统的需求进行分析,了解该系统的主要特点和要实现的目标,和用户交流之后对用户的特点和系统的业务流程进行分析,全面掌握业务流程,理清系统的功能性需求和非功能性需求。
2. 选择合适的技术方案。建立一个系统的开发平台,再对关键技术进行详细的研究。按照实用、开放、开源的原则,从数据库平台、系统平台、开发平台、应用服务器这几个方面,设计出既保证满足需求,又开源可扩展的系统架构。利用大量的扩展产品要比传统的开发方式更灵活且成熟。
3. 系统的设计和系统的实现。系统的设计原则依据 MVC 的设计思想,使得系统的外观、业务逻辑与数据存储处于分离的状态。详细分析系统的功能、业务流程、用户角色,以此为根据设计系统的结构,还详细地分析设计系统。
4. 测试系统。本文对系统的测试方法进行了详细论述。
第二章 房屋出租系统相关技术
2.1 J2EE技术
J2EE 技术属于一种简化方案,即采用 Java 技术来完成对方案开发、部署、管理等问题的简化。这种技术允许设计者采用以下手段进行控制:例如采用具有一致化特点的模型、多次使用同一组件等方法,甚至在事务控制上采取多变的手段。
由于这种技术,在面对不同的用户需求时,开发商给出的应对策略变化十分灵活,方案各不相同,更重要的是各种策略不会循规蹈矩,此外,软件开发商给出解决方案所需周期大大下降。
下面对 J2EE 平台在企业方面的优势进行说明:
1.通常来讲,企业级的运算涉及到很多方面的综合,要想很好地完成运算,就必须具有相应的标准,而 J2EE 则对标准进行了规定,使得企业在 Web 相关组件、通信协议、数据库的连接、企业的业务组件、面向消息的中间件、互操作性等方面的运算很容易进行。
由开放标准开发软件构建的系统具有很大优势,例如更为安全可靠,性能更加良好等,而这正是 J2EE 平台所倡导的开发模式,所以 J2EE 的应用前景十分广泛。
1) 采用 J2EE 平台开发出的软件具有很广的通用性:即适用于不同软件开发商的不同产品,这就避免了某一开发商的垄断。
2) 另外,J2EE 平台的出现使得产品生产周期降低成为现实。主要原因在于,软件在开发中,大部分的基本框架、结构属于固定模式,即可以直接调用,而无需进行重新编写。从而,使得开发周期大大降低,而对于软件开发人员而言,不但能够更快地掌握编写技术,而且具有更高的工作效率。由于采用 J2EE 技术,使得当前在结构上不同的系统之间的互操作性有很大的提高。
一般来讲,J2EE 主要从高层获得有关基础技术,然后进行抽象化处理。在进行技术的利用前应给出详细的方案,并进行相关模型的建立。而采用 J2EE 则可以很好地完成以上任务。
J2EE 设计模式首先完全继承了一般模式的优点,其次还具有起独特的优势。对此,对于 J2EE 更为形象化,能够将问题简单化,在使用时更为恰当、便利。J2EE 最主要的模式分为两种:第一种是 TheServerSide.com,另一种是 Sun JavaCenter,具体分为 15 种不同的模式。
从以上可以看出,J2EE 拥有无可比拟的优势:及其适合多层分布式企业应用程序的开发,不但具有很高的稳定性、而且在可移植性、可伸缩性方面也十分突出。另外,采用 J2EE 模式可以大量缩短软件开发周期,提高企业效益。
2.2 MVC模式
MVC 是一种目前广泛流行的软件设计模式。由于 J2EE 技术逐步走向完善,在实际生产中,MVC 设计被越来越多的使用,逐渐成为主流应用模型。与其它模式相比,MVC 模式不但在显示、功能两大模块的分离上存在优势,而且支持以下
功能:扩展性、维护性、移植性,此外使得组件具有可复用性。
所谓 MVC ,即 Model——模型、View——视图、Controller——控制器的缩写。具体将,就是将依照视图、模型、控制器的方式对输入、处理、输出流程进行分离处理。所以一般将应用分成三个不同的层次:模型层、视图层、控制层。事件至少会引起三者中的一个发生变化。因此,只要控制层将模型层的属性或有关数据进行改变,就会导致新的视图层得出现。同理,控制层导致视图层得变化,也会使得模型层发生变动。图 2-1 显示的是 Model、View、Controller 之间的相互关系。
图 2-1 MVC 模式体系结构与工作原理
2.3 B/S结构
B/S 结构是 Browser/Server 的缩写,汉语中指的是浏览器以及服务器结构。B/S的基础是 C/S,经过对 C/S 的修改、升级得到的。在 B/S 下,具有三层结构:首先,用户的操作界面通过浏览器实现;其次,大部分事务逻辑的实现基于服务器端;最后,少部分的事务逻辑的实现由前端完成。采用这种结构,不但使整体成本下降,而且将电脑的负载大大降低,从而减少工作量与工作强度。在现阶段,采用B/S 模式结构,是很容易实现的。这种技术属于一次性开发,允许不同的工作人员从不同的地点,以不同的接入方式,随时随地的对数据库进行管理,还能有效的保护数据平台和管理访问权限,保证有关数据的安全。
1. B/S 架构软件的优点和缺点
(1) 容易,升级方便。随着技术的进步,一般来讲,对于软件的修改原来越多,软件的升级周期越来越短。而采用 B/S 结构就能够很容易避免这方面的麻烦。
对于一般的结构而言,在一个企业中,若电脑数量较多,维修人员会因维修与软件升级而来会奔波,工作强度极其巨大。而对于采用 B/S 结构的软件来讲,由于客户端(电脑)仅起到浏览器的作用,因此维修人员只需要维护好服务器就可以了。无论客户端多么庞大,都丝毫不会增加工作强度。另外,B/S 结构支持异地协助,可以实现异地的软件升级、维护。采用 B/S 结构会大大降低所需的人力物力,从而提升工作效率。
(2) 低成本,更多的选择。由于最常使用的操作系统是 windows,因此浏览器似乎成了必不可少的。然而在服务器操作系统竞争中,微软公司的产品未必是最好的。现在逐渐形成新的模式,即用 B/S 结构与 Linux 服务器进行匹配,这样带来的好处是更为安全可靠,另外还有一点非常重要,即 Linux 的数据库也是不收费的。这也说明了 B/S 结构对操作系统的选择不唯一,而是支持多种操作系统的。
(3) 应用服务器的运行数据负荷重。根据分析我们知道,B/S 的三层结构分工明确,即绝大多数的事务逻辑由服务器端处理,另外客户端只起到浏览器的作用。这样虽然优势很多,但是也具有一定的缺点:即应用服务器上的负荷比较大,若服务器稍微出现问题,就会导致非常严重的后果,为了避免这种现象的出现,一般采取保护措施——配备专门的数据库服务器。
2. C/S 与 B/S 结构在技术上的比对
C/S 结构软件——客户机/服务器模式可以分为两层:首先是客户机,其次是服务器。客户机不但承担着对数据的输入、输出,而且在一定程度上要对相关数据进行处理、分析,还要对数据进行判断,合理分配,从而将通信的数据量、服务器上进行的计算量进行减轻。然而,服务器在连接数量上一级通信信息量上不是没有上限的,所以 C/S 结构仅适用于连接量较小的情况,比如财务软件等。
B/S——浏览器/服务器模式是在 C/S 的基础上发展起来的,要想完成软件应用业务的处理,仅需通过浏览器就能很容易的实现,是一种全新的软件系统构造技术。采用 B/S 结构是今后的趋势,一般来讲,e 通管理软件就采用了 B/S 结构。
(1) 在数据安全性方面的对比。对于采用 C/S 结构的软件而言,C/S 的结构决定了要求在各地都安装服务器,还要实现服务器间的数据同步,一旦某一点出现安全问题,势必造成整个系统的安全受到严重影响。因此,C/S 结构不适用于服务器较多的类型。而采用 B/S 结构恰恰可避免这一缺点,因为 B/S 结构的数据存放在专门的服务器内,客户端不保存任何业务数据和数据库连接信息,并且无需数据同步,因此不存在安全上的问题。
(2)在数据实时性上的对比。由于 C/S 结构无法保证随时随地的看到当前业务发生情况,因此得到的都是已经存在的数据,不是即时数据。而 B/S 结构则可以得到当前发生所有业务的实时数据,可以以此进行即时决策,有效地避免了企业的损失。
(3) 在数据一致性上的对比。要实现异地经营,对于 C/S 结构软件,需要安装区域级服务器,并实现数据上的同步,在服务器完成同步后总部才能得到最终数据。首先这就要求所以的服务器必须正常运行,其次由于存在的微小差异,在理论上无法实现数据同步。而采用 B/S 结构,这种结构的数据属于集中存放,无不同步问题,数据始终一致。
(4)在服务响应及时性方面的对比。企业的业务流程、业务模式不是一成不变的,由于要适应市场的需求,这就要求企业要实时进行调整、改革,业务的流程也在发生大大小小的变化,为了使企业正常运行,就必须对相关软件进行即时更新、维护。对于采用 C/S 结构的软件,由于所有的客户端都需要进行更新、维护,因此工作量巨大,很难做到所有的程序版本一致,所需要很长的时间重新部署。而对于采用 B/S 结构一类软件,服务器的作用与浏览器相当,所以软件的更新、维护只需在总部进行即可,大大节省了时间,很容易实现版本的一致性。
(5)在数据溯源性上的比对。对于 C/S 结构,由于数据不是采用集中存放模式,仅仅上传中间报表数据,因此很难查找原始数据的出处。而我们知道在 B/S 结构中,数据属于集中存放,因此便于总部对数据的来源进行查询,可以很详细地查询所有原始数据的来源。
(6)在网络应用限制上的对比。采用 C/S 结构的软件对网络要求较高:适用于局域网以及宽带(要求带宽不低于 1 兆)。对于采用 B/S 结构的软件而言,对网络要求很低,适应范围很广,甚至可以不采用宽带。
3. C/S 与 B/S 结构软件在运用上的对比
无论采用哪种软件,其目的是为了更好地让企业运转,因此,在选择软件时,不但要注意所采用的技术,还应关注在商业上的运用。我们将在商业运用方面进行对比:
(1) 在投入成本上的对比。对于 C/S 来讲,后期维护、更新费用巨大;对于B/S 而言,属于一次性投资,成本较低。
(2) 在企业快速扩张支持方面的对比。发展中的企业的主要特点是扩张的速度极其迅速。为了使企业的扩张能够顺利进行,就要求在部署软件时具有准确、及时的特性。对于 C/S 结构,一般要保证客户端、服务器、工作人员的同步性,因此与快速扩张不协调。而对于 B/S 结构而言,由于安装属于一次性,因此要想使企业扩展较快,就必须解决人才问题。
(3) 在硬件投资保护方面的对比。对于如何维护已经存在的硬件,两种结构采取的手段存在着非常大的区别:对于 C/S 而言,主要是更换中央服务器,采用更为高级的类型;而对于 B/S 来讲,可以采取逐渐增加服务器数量的方法,并使服务器间的负载逐渐趋于平衡,从而做到保护原有硬件。
若采用 C/S 结构,不但无法解决巨大的人力物力的消耗,而且无法保证拥有足够的人才,所以考虑到企业的发展前景,C/S 结构是不适应的。另外,C/S 结构无法保证安全性,并且要求中央服务器性能非常好。对于 B/S 结构而言,在用户的数量上是没有限制的。
根据上述分析,我们可以看到,在各个方面上,B/S 结构的管理软件都要优于C/S 结构软件。另外,当前的趋势也是逐渐用 B/S 代替 C/S。从国内诸多软件商积极投入开发 B/S 结构软件的趋势来看, B/S 结构的大型管理软件势必在将来的几年内占据管理软件领域的主导地位。
2.4 数据库技术
数据库是数据和数据库对象的集合,其中数据库对象指表(Table)、视图(View)、存储过程(Stored Procedure)和触发器(Trigger)等。数据库通过SQL(Structured Query Language)来对数据进行操作和管理,这里包括一些基本的操作如select、delete、insert、update语句。
ADO(ActiveX Data Objects)是微软开发数据库应用程序的数据库访问技术。它被设计用来同新的数据库访问层OLE DB Provider一起协同工作,以提供通用数据访问(Universal Data MySQL)。OLE DB是一个底层的数据库访问接口,用它可以访问各种数据源,包括传统的关系数据库。ADO封装了OLE DB程序中使用的大量COM接口,所以是一种高层访问技术。关于数据库管理系统和接口的原理如图2所示。
MySQL是一个快速、多线程、多用户的小型关系型数据库管理系统。它支持正规的SQL查询语言和采用多种数据类型,能对数据进行各种详细的查询等。MySQL提供了一全套的数据库创建和访问机制,通过很直观的方式就可以创建、访问、修改数据库的表和项,并且能建立它们之间的各种数据关系。MySQL系列从90年代就发展起来,经过了多年的反展,它已经成为非常成熟的技术,面向中小型企业级应用。
MySQL数据库的特点是数据库文件小而简单,不需要运行或者启动数据库服务进程就可以使用。通常MySQL数据库文件可以随网页文件一起方便地放在网站的目录中,正是由于这些特点,MySQL数据库通常被用来作为网站开发的数据库支持技术。
对MySQL数据库的管理采用图形化管理工具phpMyAdmin 。phpMyAdmin是一个用PHP编写的、基于Web的、跨平台的MySQL管理程序,支持简体中文,使用Web浏览器作为管理界面。通过phpMyAdmin可以进行绝大部分的MySQL操作,包括对数据库级操作,表级操作,以及数据管理等。
图2-2数据库管理系统和接口的原理
2.5 本章小结
本章介绍了房屋出租系统用到的相关技术,针对系统中使用到的技术做了简单的介绍。
第三章 房屋出租系统需求分析
3.1 系统总体目标
(1)数据共享
建立统一的房屋信息数据库,使数据信息标准化和规范化,实现数据的一致性和共享性,提高信息查询的效率和准确度。
(2)实现房屋出租的各项业务功能
系统主要分为住户、房主、管理员三个角色。管理员实现租房信息管理、房屋信息管理、合同信息管理、注册用户管理、留言板管理、基本信息管理等功能。房主实现租房信息管理、查看租房信息、基本信息管理功能。住户实现信息管理以及基本信息管理功能。
(3)规范房屋出租业务流程
实现房屋出租的规范化,全面、科学、系统地进行管理;提供多种信息咨询渠道,最大程度地发挥本系统的作用;提高工作效率和管理水平,完善人事管理工作中的不足之处。
(4)实现现代化的管理手段
系统应具有清晰的界面,简单易操作;系统的不同用户应具有不同的操作权限;系统应具有数据库备份和恢复功能,提高数据的安全性;系统的运行应基于Internet,只要有网络就可以随时随地办公。
论文中涉及的系统,其实质对支持以下功能:首先,管理员可以对系统访问;其次,对于相关信息,管理员有权限进行完善、修改、删减,从而实现了管理整个企业的人员信息。为了方便管理员的操作,要求系统简捷明了,登录界面具有人性化,此外,要注意下面各点:
1、实现功能手段:决定着系统性能的好坏。
2、程序的运行速度:速度的快慢意味着效率的高低。
3、及时的单元测试:能否做到第一时间发现、解决问题。
4、安全问题的性能可靠性:能否确保用户的安全使用。
3.2 系统可行性分析
1 操作的可行性分析
为了尽量便于用户的使用,登录界面尽量简捷、人性化。采取常见的 Window界面作为登录界面,而整个系统的开发业使用常见的 Java。这些策略使得用户不需很长时间就能很快对系统非常熟悉,可以熟练掌握操作方法。除此之外,系统为了方便维修人员,添加了数据字典等,并在界面登录上给出一定的提示,使得整个系统更具人性化,用户操作起来更为简单。
2 管理的可行性分析
企业要想长久地生存下去,首先必须具有良好的企业文化,其次在管理上体制要完善、制度要合理,再次要采用可持续发展的科学方法,最后还应与时俱进,不断进行企业改革,使得企业时刻适应社会的变革。其中最重要的就是管理方法一定要科学,只有这样企业的竞争力才能上升,才能得到长久的发展。
3 技术的可行性分析
(1)硬件可行性分析
论文中系统对于硬件方面的要求不存在特殊的地方,只要求硬件的配置一般即可,只需保证系统可以正常运行、具有较高的效率。若硬件水平较低,可能导致系统性能较低,效率较差,导致无法实现整个设计程序。目前看来,对硬件的要求很容易实现。因此,经过分析,硬件具有可行性。
(2)软件可行性分析
Java 语言可以提供常见的类似机制、动态的借口模型,设计较为集中。另外,采用 Java 语言可以很容易实现模块化以及信息的隐藏。另外,代码的复用也可以得到很好的体现。因此,考虑到系统的实际情况,论文将其作为开发语言。经过以上分析可知,软件具有可行性。
由此,我们从三个方面进行了可行性的分析,可以知道,系统的开发不具有问题。
3.3 系统功能需求分析
企业房屋出租系统主要分为住户、房主、管理员三个角色。管理员实现租房信息管理、房屋信息管理、合同信息管理、注册用户管理、留言板管理、基本信息管理等功能。房主实现租房信息管理、查看租房信息、基本信息管理功能。住户实现信息管理以及基本信息管理功能。
3.4 系统非功能需求分析
非功能性需求,指的是在达到用户要求后必须具备的非功能需求的特征。对于软件类产品而言,经常涉及到以下几个方面:系统是否兼容、系统是否完整、系统功能是否可靠、系统是否适应技术要求等。这些特征不但直接决定了软件的性能,而且对功能性需求产生巨大的影响,然而系统的非功能性需求却是最容易被轻视的。
1 稳定性要求
整个应用软件系统能够连续7x24小时不间断工作。系统运行每1000小时中可用时间至少不小于999小时,故障间隔时间应大于1000小时。
系统要保证数据的一致性,完整性,准确性要求达到99.99%。
对用户输入的数据进行合法性检查,确保流程的通畅性,并且能够对错误数据进行自动纠错处理。
2 系统响应时间
一般性操作最长不超过5秒,对一般性统计不超过100秒。当操作员做一些处理时间较长的操作时,在界面上能给出提示信息。在返回数据量过大导致响应时间过长时,能提供部分响应,例如分页取数据等,减少等待的时间。
3 数据处理要求
系统做到不但能支持定期的自动数据备份操作,而且还要提供人工备份的操作;提供多种数据输出格式(EXCEL、XML、TEXT等文件形式),而且该输出格式可以方便快捷的倒回原来系统中。真正做到使系统能在数据损坏,丢失等情况下将备份数据倒回,实现数据恢复。且要求系统的数据在线保留三年。
4 系统的完整性
系统正常运行、达到用户要求的前提保障。此类功能一般为必备的。主要包括下面几点:数据的管理、用户的管理、联机帮助、软件发布管理以及软件的在线升级。
5 系统的可扩充性与可维护性
系统是否支持技术、业务需求上的改变。我们知道,在这两方面出现变动时,必将导致整个系统的调整,为了减少修改系统的麻烦,这就要求系统在最初设计时就应当提前考虑,留有一定的改进措施。
所谓适应性,其实类似于可扩充性以及可维护性,主要体现在对变化的处理手段。不同点在于,适应性的前提是整个系统不进行变动。如软件具备较好的适应性,当一些技术上、业务需求上出现变动时,系统依然可以正常运行。这就要求,在设计之初,在各种条件、方式上就应该有所考虑。论文采用的开发平台为J2EE,经大量验证,此平台适应于系统的开发。
6 界面友好要求
系统采用多媒体技术,综合图、文、声、像及影视等多种信息手段,使用户操作起来轻松自如,界面美观,富有动感。办公系统软件中所有办公事宜应该按照角色划分并细化到个人,系统能够根据每个用户的身份提供个性化的信息服务,保证组织每个成员不仅能根据自身角色完成工作流程要求的工作内容,还能对个人的工作信息进行管理(登记、查询、打印)。
3.5 系统开发环境与开发工具
1 系统的实现平台
硬件平台:
CPU:酷睿双核CPU;
内存:1G以上。
软件平台:
操作系统:Windows xp/ Windows 2003/ Windows 7/ Windows 2008;
数据库:MySQL;
浏览器:IE8.0,推荐使用IE8.0;
Web服务器:IIS5。0;
分辨率:1024*768以上。
2 开发工具的选择
用到的工具:
Myeclipse :用于前台应用程序的编写
PowerDesigner :制作数据流程图、概念数据模型、物理数据模型
MySQL :用于数据库的建立,为前台提供服务
第四章 系统设计与实现
在设计体系的时候要做到全方位的站在客户的立场上考虑问题,让最终的产品能够顺应大众用户的需求;同时也是为了给企业自身内部的发展埋下伏笔。这一章节将重点突出对于体系的结构框架的设计描述上,以详细的标明每一个数据库的主体结构框架。
4.1 设计目标与原则
这一个体系的架构的设计要能够体现出和用户之间良好的交互性,且整个的板块界面要非常的清晰明了,能够为后期的数据扩展和保障数据安全护航,只有达到这一个目标才能够有更好的扩展空间,适应企业将来的发展需要。
1. 就整个体系的设计而言,这一系统必须要达到下述的要求:
(1) 数据的安全性
房屋出租系统中存贮的数据都是企业内部的一些非常保密的不应该被外界发现的数据,为了保证这些数据的安全性,整个的体系必须要有相关的安全防范措施来应对这些潜在的问题。
(2) 容易使用性
该系统的使用者应当对人力资源相关的业务流程有一个大概的认知程度,而且还必须对计算机相关的操作熟悉。所以在设计系统操作窗口的时候应该顺应大众使用者的习惯,在相关的语句上也尽量的做到专一和专业。
(3) 灵活性
由于房屋出租管理这一块上涉及到各种各样的业务,而且主要包含的是对已有业务的一些更新和细化,另外还不断接受新的业务,因此设计出来的系统必须有能够接纳处理这些变化的能力。
(4) 可拓展延伸性
管理的模式会随着时代和业务量的变化而发生变化,因此这一系统就必须有可拓展延伸性,从而来达到引进新业务板块目的。
2. 从系统实际操作的层次来看,该系统应满足以下原则:
(1) 可靠性
实际中使用的系统每天都会处理很多的比较保密的资料,体系中的每一个小的缺陷会让用户的资料面临着泄漏的危险,因此要大力确保系统非常的可靠。
(2) 后期的维护保障性
企业内部项目经营的扩大,使得这一体系的后来的维护保障的工作量激增,所以在设计的初期要使得体系内部相关参数在后期维护时候便于操作。
(3) 经济高效性
在考虑了用户条件的前提下,还应该实现经济的高效性,尽量的少花钱多办事,为大众的投资降低相应的危险系数。
4.2 系统架构设计
4.2.1 总体架构设计
系统总体架构设计是将一个整体的任务量肢解成很多个细小而又非常详细的分量,把这些分量进行整合又可以得到整个大任务。其大概的任务步骤是:
1. 把系统细分成每一个子板块
2. 预先设计好各个子板块的作用
3. 设计好每一个子板块之间的逻辑关系
4. 设计好子板块的界面及模块间信息的传输
总体设计过程先确定可能达到最终目的的每一个小的具体方案,对于每一个小的方案而言,就得先找出在需求分析阶段的一些相关的资料。然后初步的设计出这些数据对应的软件,进行一些优化,得到一个相对可行的结构框架,做一些数据库设计模型,根据相关的标准做出最终的计划。系统运行流程如图4-1所示。
图4-1系统运行流程图
由图4-1 分析所示,房屋出租系统的本系统主要分为住户、房主、管理员三个角色。管理员实现租房信息管理、房屋信息管理、合同信息管理、注册用户管理、留言板管理、基本信息管理等功能。房主实现租房信息管理、查看租房信息、基本信息管理功能。住户实现信息管理以及基本信息管理功能。
4.2.2系统网络拓扑结构图
本系统采用先进的B/S架构,该架构具有开发简、单共享性强、维护简单方便等诸多优点。本系统的网络拓扑图如图4-2所示:
图4-2房屋出租系统的网络拓扑图
4.3 数据库设计
4.3.1 数据库的选定
目前主流数据库主要有Oracle、SQL Server、Mysql、Access等。本系统运行在windows服务器上故而选择了Microsoft SQL Server。Microsoft SQL Server是一个关系型数据库,它的数据库引擎为关系型数据和结构化数据提供了更为安全而且可靠的存储功能。Mysql与 Microsoft Visual Studio、Microsoft Office System 以及新的开发工具包(包括 Business Intelligence Development Studio)紧密集成。
4.3.2 数据库概念模型设计
数据库概念模型即房屋出租系统的实体—关系模型。房屋出租系统的整体E-R图如图4-4所示。
图4-4房屋出租系统的整体E-R图
具体属性如下:
用户:ID、用户名、用户类别、姓名、性别、联系QQ、联系电话、联系邮箱、注册时间、审核状态。
资讯:ID、标题、作者、发布时间等。
房屋:ID、标题、户型、面积、装修、交通状况、配套设施、楼层、当前状态、发布时间等。
合同:ID、住户、房主、申请内容、房屋、申请时间、房主回复、合同书等
留言:ID、留言人、留言时间、留言内容、回复人、回复内容、回复时间等。
然后根据具体的功能需求,对本系统的E-R图进行细化从而得到几种实体—关系模型,以下为部分实体—关系模型。
(1)系统使用用户实体,如图4-5所示。
图4-5用户实体图
(2)资讯类实体图,如图4-6所示。
图4-6资讯类实体图
4.3.4 数据库逻辑设计
本系统主要用到了以下几张数据表。
1、applyinfo表。
表4-1 applyinfo表
字段名称 | 数据类型 | 长度 | 是否允许空 | 是否为主键 |
id | int | 11 | 否 | 是 |
uname | varchar | 255 | 是 | 否 |
touname | varchar | 255 | 是 | 否 |
ncontent | varchar | 255 | 是 | 否 |
fid | varchar | 255 | 是 | 否 |
savetime | varchar | 255 | 是 | 否 |
recontent | varchar | 255 | 是 | 否 |
docname | varchar | 255 | 是 | 否 |
status | varchar | 255 | 是 | 否 |
2、applyinfo表。
表4-2 applyinfo表
字段名称 | 数据类型 | 长度 | 是否允许空 | 是否为主键 |
id | int | 11 | 否 | 是 |
title | varchar | 255 | 是 | 否 |
author | varchar | 255 | 是 | 否 |
filename | varchar | 255 | 是 | 否 |
content | varchar | 255 | 是 | 否 |
savetime | varchar | 255 | 是 | 否 |
3、hbnews表。
表4-3 hbnews表
字段名称 | 数据类型 | 长度 | 是否允许空 | 是否为主键 |
id | int | 11 | 否 | 是 |
uname | varchar | 255 | 是 | 否 |
ptitle | varchar | 255 | 是 | 否 |
addrs | varchar | 255 | 是 | 否 |
hx | varchar | 255 | 是 | 否 |
mj | varchar | 255 | 是 | 否 |
zx | varchar | 255 | 是 | 否 |
jt | varchar | 255 | 是 | 否 |
ptss | varchar | 255 | 是 | 否 |
floor | varchar | 255 | 是 | 否 |
filename | varchar | 255 | 是 | 否 |
filename2 | varchar | 255 | 是 | 否 |
filename3 | varchar | 255 | 是 | 否 |
lxr | varchar | 255 | 是 | 否 |
te | varchar | 255 | 是 | 否 |
| varchar | 255 | 是 | 否 |
status | varchar | 255 | 是 | 否 |
price | varchar | 255 | 是 | 否 |
savetime | varchar | 255 | 是 | 否 |
4.4系统实现
(1)数据库连接代码实现
public Connection getConn()
{
try
{
String d = new Date().toLocaleString().substring(0,9);
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/rentingsys","root","123");
}
catch(Exception e)
{
e.printStackTrace();
}
return conn;
}
(2)系统公共方法实现代码
public HashMap getmap(String id,String table)
{
List<HashMap> list = new ArrayList();
try {
Statement st = conn.createStatement();
System.out.println("select * from "+table+" where id="+id);
ResultSet rs = st.executeQuery("select * from "+table+" where id="+id);
ResultSetMetaData rsmd = rs.getMetaData();
while(rs.next())
{
HashMap map = new HashMap();
int i = rsmd.getColumnCount();
for(int j=1;j<=i;j++)
{
if(!rsmd.getColumnName(j).equals("ID"))
{
String str = rs.getString(j)==null?"": rs.getString(j);
if(str.equals("null"))str = "";
map.put(rsmd.getColumnName(j), str);
}
else
map.put("id", rs.getString(j));
}
list.add(map);
}
rs.close();
st.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list.get(0);
}
public String insert(HttpServletRequest request,HttpServletResponse response, String tablename,HashMap extmap,boolean alert,boolean reflush)
{
extmap.put("savetime", Info.getDateStr());
if(request.getParameter("f")!=null){
HashMap typemap = new HashMap();
ArrayList<String> collist = new ArrayList();
String sql = "insert into "+tablename+"(";
Connection conn = this.getConn();
try {
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("select * from "+tablename);
ResultSetMetaData rsmd = rs.getMetaData();
int i = rsmd.getColumnCount();
for(int j=1;j<=i;j++)
{
if(rsmd.getColumnName(j).equals("id"))continue;
typemap.put(rsmd.getColumnName(j)+"---", rsmd.getColumnTypeName(j));
collist.add(rsmd.getColumnName(j));
sql+=rsmd.getColumnName(j)+",";
}
sql = sql.substring(0,sql.length()-1);
sql+=") values(";
rs.close();
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
Enumeration enumeration = request.getParameterNames();
String names = ",";
while(enumeration.hasMoreElements())
{
names += enumeration.nextElement().toString()+",";
}
try {
Statement st = conn.createStatement();
for(String str:collist)
{
if(names.indexOf(","+str+",")>-1)
{
String[] values = request.getParameterValues(str);
String value="";
for(String vstr:values)
{
if(vstr==null)vstr="";
if(vstr.equals("null"))vstr="";
if(vstr.trim().equals(""))continue;
if(request.getParameter(vstr)!=null&&!"".equals(request.getParameter(vstr))&&request.getParameter("dk-"+str+"-value")!=null)
{
String dkv = request.getParameter(vstr);
String dknamevalue = request.getParameter("dk-"+str+"-value");
vstr+=" - "+dknamevalue+":"+dkv;
}
value+=vstr+" ~ ";
}
if(value==null)value="";
if(value.equals("null"))value="";
if(value.length()>0)value=value.substring(0,value.length()-3);
if(typemap.get(str+"---").equals("int"))
{
sql+=(value.equals("")?-10:value)+",";
}else{
sql+="'"+(value.equals("null")?"":value)+"',";
}
}else{
if(typemap.get(str+"---").equals("int"))
{
sql+=(extmap.get(str)==null?"":extmap.get(str))+",";
}else{
sql+="'"+(extmap.get(str)==null?"":extmap.get(str))+"',";
}
}
}
sql=sql.substring(0,sql.length()-1)+")";
System.out.println(sql);
this.commOper(sql);
st.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
String str = "";
if(!reflush)
str += "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"> \n";
str += "<script language=javascript>\n";
if(alert){
str+="alert('操作成功');\n";
}
if(reflush){
str+="parent.location=parent.location;\n";
}
str+="</script>";
PrintWriter wrt = null;
try {
wrt = response.getWriter();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
wrt.write(str);
}
return "";
}
public void delete(HttpServletRequest request,String tablename)
{
int i = 0;
try {
String did = request.getParameter("did");
if(did==null)did = request.getParameter("scid");
if(did!=null){
if(did.length()>0){
Statement st = conn.createStatement();
st.execute("delete from "+tablename+" where id="+did);
st.close();
}
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
(3)系统登录实现代码
public List findByExample(Sysuser instance) {
log.debug("finding Sysuser instance by example");
try {
List results = getHibernateTemplate().findByExample(instance);
log.debug("find by example successful, result size: "
+ results.size());
return results;
} catch (RuntimeException re) {
log.error("find by example failed", re);
throw re;
}
}
public List findByProperty(String propertyName, Object value) {
log.debug("finding Sysuser instance with property: " + propertyName
+ ", value: " + value);
try {
String queryString = "from Sysuser as model where model."
+ propertyName + "= ?";
return getHibernateTemplate().find(queryString, value);
} catch (RuntimeException re) {
log.error("find by property name failed", re);
throw re;
}
}
public List findAll() {
log.debug("finding all Sysuser instances");
try {
String queryString = "from Sysuser";
return getHibernateTemplate().find(queryString);
} catch (RuntimeException re) {
log.error("find all failed", re);
throw re;
}
}
(4)房屋出租信息查询实现代码
public Houseinfo findById(java.lang.Integer id) {
log.debug("getting Houseinfo instance with id: " + id);
try {
Houseinfo instance = (Houseinfo) getHibernateTemplate().get(
"Houseinfo", id);
return instance;
} catch (RuntimeException re) {
log.error("get failed", re);
throw re;
}
}
public List findByExample(Houseinfo instance) {
log.debug("finding Houseinfo instance by example");
try {
List results = getHibernateTemplate().findByExample(instance);
log.debug("find by example successful, result size: "
+ results.size());
return results;
} catch (RuntimeException re) {
log.error("find by example failed", re);
throw re;
}
}
public List findByProperty(String propertyName, Object value) {
log.debug("finding Houseinfo instance with property: " + propertyName
+ ", value: " + value);
try {
String queryString = "from Houseinfo as model where model."
+ propertyName + "= ?";
return getHibernateTemplate().find(queryString, value);
} catch (RuntimeException re) {
log.error("find by property name failed", re);
throw re;
}
}
public List findAll() {
log.debug("finding all Houseinfo instances");
try {
String queryString = "from Houseinfo";
return getHibernateTemplate().find(queryString);
} catch (RuntimeException re) {
log.error("find all failed", re);
throw re;
}
}
4.5 界面运行效果
4.5.1 系统登录界面效果如图4-8所示。
图4-8 系统登录界面效果
4.5.2房屋资讯管理界面效果如图4-8所示。
图4-8 房屋资讯管理界面效果
4.5.3房屋信息管理效果如图4-9所示。
图4-9 房屋信息管理效果
4.5.4合同信息管理界面效果如图4-10所示。
图4-10 合同信息管理界面效果
4.5.5注册用户管理效果如图4-11所示。
图4-11 注册用户管理界面效果
4.5.6留言板管理界面效果如图4-12所示。
图4-12留言板管理界面效果
4.5.7基本信息管理界面效果如图4-13所示。
图4-13 基本信息管理界面效果
第五章系统测试
5.1 软件测试及工具
5.1.1 软件测试
系统的测试不仅要检验系统是否实现了相应的功能,还需要检查系统的功能是否存在缺陷。在执行测试之前,根据系统的整体情况,拟定测试计划,并严格按照计划来进行测试。为更加真实的模拟实际环境,对测试用例的设计力求完美。不仅要考虑到正确的输入输出,同时也要对系统处理错误信息的能力进行检查。在性能方面,通过场景的设置,模拟真实环境下,系统对用户请求的响应情况,以此来发现系统存在的性能瓶颈,提出相应的修改意见。
5.1.2 软件工具
软件测试工具就是通过一些工具能够使软件的一些简单问题直观的显示在读者的面前,这样能使测试人员更好的找出软件错误的所在
软件测试工具也分为自动化软件测试工具和测试管理工具。
软件测试工具存在的价值是为了提高测试效率,用软件来代替一些人工输入。
常用的软件测试工具分为:
[开源测试工具]:
开源测试管理工具:Bugfree、Bugzilla、TestLink、mantis
开源功能自动化测试工具:Watir、Selenium、MaxQ、WebInject
开源性能自动化测试工具:Jmeter、OpenSTA、DBMonster、TPTEST、Web Application Load Simulator
[TestDirector]:企业级测试管理工具,也是业界第一个基于Web的测试管理系统。
[Quality Center]:基于Web的测试管理工具,可以组织和管理应用程序测试流程的所有阶段,包括指定测试需求、计划测试、执行测试和跟踪缺陷。
[QuickTest Professional]:用于创建功能和回归测试。
[LoadRunner]:预测系统行为和性能的负载测试工具。
[其他工具与自动化测试框架]:Rational Functional Tester、Borland Silk系列工具、WinRunner、Robot等。
5.2 测试方法
5.2.1功能测试
功能测试从用户的角度出发,对系统提供的各种功能进行测试,主要是黑盒测试。它把系统看作一个黑盒子,不考虑系统内部结构以及系统的具体实现方法P[3]P。通过逐项测试,来检查系统的各个功能是否完善,输入正确的数据能否得到期望的输出结果,输入错误的信息时系统能否进行相应的处理。
5.2.2 性能测试
性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。
5.3 系统配置要求
CPU:酷睿双核CPU;
内存:1G以上。
或者
CPU:AMD Athlon(tm) 64 X2 Dual Core Processor 3800+
内存:1G
操作系统:Microsoft windows XP Professional 版本 2002 Service Pack 3
5.4 测试内容
登录模块测试
管理员登录界面如图5-1所示,管理员需要输入正确的用户名和密码才能登录系统。不同权限的管理员可以进入系统之后,将有不同的操作。
图5-1 系统登录界面
测试用例设计
因为登录时输入的情况可能存在差异,有可能用户输入了错误的用户名和密码,或者正确的用户名和错误的密码等,所有在设计测试用例时,主要采用等价类划分和边界值测试的方法。测试用例如表5-1所示。
表5-1(a) 管理员登录模块测试用例表头
项目名称 | 管理员登录模块测试 | ||||
开发人员 | XXX | 模块名称 | 管理员登录模块 | ||
用例作者 | XXX | 参考信息 | 需求规格说明书、设计说明书 | ||
测试类型 | 功能测试 | 设计日期 | 2013-12-16 | 测试人员 | XXX |
测试方法 | 手动测试+自动测试 | 测试日期 | 2013-12-16 | 优先级 | 1 |
测试对象 | 测试管理员能否正常登录 | ||||
前置条件 | 正确的用户名admin和密码admin |
表5-2(b)管理员登录模块测试用例
用例编号 | 操作 | 输入数据 | 预期结果 | 实际结果 | 测试状态(P/F) |
1-1 | 输入正确的用户名和密码,点击“登录”按钮 | 用户名:admin 密码:admin | 成功登录 | 成功登录,进入系统 | P |
1-2 | 输入正确的用户名、正确的密码,点击键盘的“确定”键 | 用户名:test 密码:test | 成功登录 | 成功登录,进入系统管理主页 | P |
1-3 | 输入错误的用户,点击“登录”按钮 | 用户名:jjj 密码:123 | 显示提示信息“您输入的用户不存在!请重新输入” | 显示提示信息“您输入的用户不存在!请重新输入” | P |
1-4 | 用户名和密码为空,点击“登录”按钮 | 用户名: 密码: | 显示提示信息“您输入的用户不存在” | 显示提示信息“您输入的用户不存在” | P |
1-5 | 用户名为空,密码不为空,点击“登录”按钮 | 用户名: 密码:123 | 显示提示信息“您输入的用户不存在” | 显示提示信息“您输入的用户不存在” | P |
1-6 | 用户名不为空,密码为空,点击“登录”按钮 | 用户名:admin 密码: | 显示提示信息“您输入的密码不正确” | 显示提示信息“您输入的密码不正确” | P |
注:实际结果和输出状态在测试完成之后填写。
5.5 测试结果
从测试的结果来看,登录模块可以正常满足登录的需求。
5.6 本章小结
本章完成了房屋出租系统的测试,测试结果在预计的范围内,运行效果良好。本章首先介绍了软件测试相关方法以及相关的测试工具,然后再拿系统的登录模块进行了测试与讲解。
总结
本次毕业设计到这里已经基本完成,虽然实施过程不是很长,但也编写的的同时学到了不少知识,也意识到了自己还有很多的不足之处。对于这些控件是必须要在实践中应用才能够掌握的,通过在使用过程中摸索和参考MSDN已经基本掌握这些控件的常用属性和方法,感觉获易非浅。从系统调查到查资料再到系统的分析设计,经历了几个月的时间,经过这几个月的努力,这个系统总算是完成了。显然这个系统还是有很多不成熟、不完善的地方,在程序的编写过程主要意识到我技术方面有很多的不足,碰到问题还要上“百度”、“谷歌”搜索,上专业网站和论坛找答案,在碰到问题时MSDN帮了我很大忙,尤其有些问题给出了示例。
由于时间和能力有限本系统只完成了基本的功能部分,一些真正实用的外围功能还来不及完善,美工方面也不够漂亮。但这毕竟是自己独立完成的第一个运行正常的系统,从敝帚自珍的角度来讲,还是颇觉欣慰的。
还有就是英语水平还及有待提高,遇到很多英文的技术文档还无法完全看懂,还需要开着类似“金山词霸”的实时翻译软件。同时意识到英语水平直接影响着编程水平。在以后的编程学习工作中,树立信心更加努力的加强学习各方面的知识。使技术掌握得更全面,更深入。
最后,恳请各位评审老师不吝赐教,多提宝贵意见。
致谢
紧张而忙碌的毕业设计就要结束了,在完成了系统的功能设计后,我感到由衷的喜悦和自豪。在我做毕业设计期间,许多老师,同学和朋友给我我无私的关怀和帮助,在此,我要向他们表示衷心的感谢。
首先,我要感谢学校的老师在毕业设计期间给了我悉心的关怀与帮助,并且给了我许多关键的,建设性的指导。
这次的毕业设计让我受益匪浅。可以这样说,用计算机来解决繁重而低效的手工管理工作,计算机发展史上的必然。在理论课的学习中,我掌握了基础课和专业课的理论知识,也曾经做过一些程序设计的联系和计算机综合试验,但真正动手设计一个管理软件,还是第一次。在这次的毕业设计中,我曾遇到了许多困难,而在克服这些困难的过程中,我的各方面的能力又有了很大的提高,使我的理论知识更好的与实践相结合,增强了专业技能的可实践性。从调研,需求分析到查找资料,结构设计,详细设计以及调试程序,到最后的写使用说明书,我终于设计出了一个比较完整的,周密的,可使用的房屋出租系统。通过这次的毕业设计,我真正了解了软件工程设计的整个过程,既巩固了以前的理论知识,也为我以后的工作奠定了良好的基础。
当然,由于时间的短促,我所完成的系统并不是尽善尽美的,还有待进一步的修改和完善。最后,请允许我再一次向毕业期间无私帮助过我的老师,同学和朋友表示最衷心的感谢。
参考文献
[1] 李金海,张景元.Struts,Spring 和 Hibernate 的 J2EE 架构的研究和实现[J].山东理工大学学报(自然科学版)2006,(06).
[2] 明日科技. Java从入门到精通(第3版)[M]. 北京:清华大学出版社,2012.
[3] 蒋宗礼,马涛,唐好魁,闫明霞等.数据库技术及应用(第2版)[M].电子工业出版社,2010:43-65.
[4] 李兴华;Java开发实战经典 [M];北京:清华大学出版社;2009,8:30-40.
[5] 唐汉明,翟振兴,兰丽华,关宝军,申宝柱.深入浅出MySQL数据库开发、优化与管理维护[M].人民邮电出版社出版,2006-2.
[6] 李盛恩,王珊.数据库基础与应用(第二版)[M].北京:人民邮电出版社,2009:14-78.
[7] 孙卫琴:《精通Hibernate:Java对象持久化技术详解[M].电子工业出版社出版
[8] 刘瑞新,张兵义.大学计算机规划教材:SQL Server数据库技术及应用教程[M].电子工业出版社,2012,8.
[9] 夏昕, 曹晓钢 , 唐勇. 深入浅出Hibernate[M].电子工业出版社, 2005-6.
[10] 张德详.J2EE架构下校园网用户管理系统的分析与部分实现[J].青岛大学学报,2010,19(4):86-89.
[11] 邬继成.J2EE 开源编程精讲15讲[M],电子工业出版社,2008.1:41-114.
[12] 王珊,萨师煊.数据库系统概论[M].高等教育出版社,2006.5:198-235.
[13] 张孝祥.深入Java Web开发内幕——核心基础[M].北京:电子工业出版社.北京.2006.10.
[14] 舒红平.Web 数据库编程-java[M],西安电子科技大学出版社,2005:97-134.
[15] Stephanie Bodoff, Dale Green, Kim Haase et al. The J2EE Tutorial[M].Addison-Wesley Professional,2003.7(02)
[16] Wendy Boggs,Michael Boggs.Mastering UML with Rational XDE[M].Publishing House Of Electronics Industry,2003:11-56.
[17] Cay S.Horstmann,Gary Cornell著,叶乃文,邝劲筠,杜永萍.JAVA核心技术卷I:基础知识,程序设计教程[M].人民邮电出版社,2008.5:87-234.
[18] Bruce Eckel,饶若楠等译.Java 编程思想机械工业出版社[M],2005:124-234.
[19] 庞丽娜.Java 应用开发技术详解[M],科学出版社,2007:126-235.