【摘要】 随着信息自动化处理技术的日益发展,如何科学,全面,高效的对单位纷繁复杂的档案管理事务进行计算机的自动化管理是个热门话题,当前企事业单位为了提升自身的竞争力,各单位都在定制和购买各项业务应用软件,运用高科技手段进行科学,规范的管理。作为房屋租赁公司的管理者,希望能够对房屋租赁事务管理的整个流程状态,信息资料的情况了如指掌,使其可以做出科学的决策。作为工作人员期望能够避免繁琐的手工操作,甩掉传统的手工记录方式,达到事半功倍的效果。一个能够使其实现管理系统化、规范化、自动化的计算机系统就显得很有必要。利用计算机技术,实现管理系的自动化,规范化就是这个问题最好的解决方法.
论文主要探讨“房屋租赁管理系统”的理论基础和设计思想,根据系统的开发过程和系统的功能实现为主线来论述数据库管理软件的开发过程。主要阐述以软件工程理论作为系统开发的理论基础,以客户机/服务器模式的关系型数据库作为后台,以专业数据库开发语言作为实现手段的数据库管理软件的开发过程分析和理论研究。
本系统以JSP 2.0和 SQL为开发工具,通过后台数据库的建立与设置,软件界面的设计与实现,程序的编写与调试等几个阶段来完成对房屋租赁管理系统的开发。
本论文详细地介绍了开发系统的具体步骤,以及应用的技术,以配图例的方式详尽说明,并在文中对一些源程序作了详细的解释。
【关键词】 数据库 管理软件 房屋租赁管理 查询
House Agency Soft
【Abstract】 As the basic tool of information age, computer has been widely used in every part of modern life. With the increasing demands of IT specialist by the society, computer software ability examinations grow too. The application of “House Agency Management Information System” can greatly reduce registrants' workload , the high error rates caused by handwork and avoid unnecessary repeating work. All these can make the register and statistic more convenient ,fast and efficient。 This dissertation mainly discussed the basic theory and designation of “House Agency Management Information System”., and the developing procedure according to system developing procedure and function realization. The essay also mentioned database management software's developing procedure analyse and theory study by using software project theory as the theoretic basis of system developing , the C/S model relating database as the background and the professional database as the developing language applying method. This System uses JSP 2.0 and Microsoft accsse2003 as developing kit. By building and setting up background database, designing and applying software interface, programme writing and debugging, developed “House Agency Management Information System”. This dissertation introduced the specific steps in developing the system ,as well as the technical skill applied, presented with graphics and specific instruction and some source code has been explained particularly
【Keywords】 database managed currency estate agent query
目 录
绪 论
随着我国社会主义市场经济体制的确立和发展,商业流通领域进入了一个空前的发展阶段,面临商界的激烈竞争,只有在多变的商品和顾客中挖掘并掌握市场需求,即淘汰“卖不出去的商品”,购进“卖得快、利润高的商品”的经营者才会获利,企业也才能在竞争中生存和发展,如果能够选择一个好的管理系统,把大量繁杂的、看似毫无关系的数据,有机的结合起来,形象的反映出市场的供求关系,就能够为得出正确的决策做出事半功倍的效果。在过去,销售业的操作一般都靠人工操作,如靠人工登记卡片、填写表格资料,然后根据不同的分类入帐,销售额的日结算和每月的盘点都需花费大量的人力和物力来完成。即使前几年,有些商家开始使用电脑管理,但也只是进行一些简单的数据计算的操作。这是一项极其繁琐的工作。通过人手工计算不仅容易出错,而且不能够及时把数据之间的关系形象化表现出来,也就不能够进一步掌握市场的最新动态。而通过本系统基本可解决以上问题,并且能够方便、灵活地对数据库的资料进行查询、统计、打印等操作,所有这些对数据库进行的操作都受到管理级别的限制,确保数据的安全性。 数据库技术是一门历史弥坚的学科,不像其它的计算机技术会随着时间的推移而变得越来越没有声息。考虑其原因,则是因为信息的爆炸对数据库技术的要求只增不减。在互联网日益发展、壮大的背景下,在因特网热潮不减的情况下,如何让原来在单机中使用的数据库可供多机使用,也成了必然的趋势。企业要在竞争中求得生存,就应使自己的产品资料销售、管理等方面科学化。
此“房屋租赁管理系统”的开发定位于一个能够满足数据库管理软件,即具备一个数据库管理软件的基本功能,包括数据的增加,删除,修改,查询,统计等,便于用户查看,操作,和查询房屋登记信息。同时能够提供高质量的套打及快速生成统计分析报表。此外,系统具有用户登录功能,不同用户有不同的权限,这样可以提高数据的安全性和可靠性。该系统符合各房屋租赁公司和各地房管局规定的各项数据项上报汇总统计的要求。系统采用JSP程序设计语言的程序设计与数据库相结合的手段进行开发,结构紧凑、运行速度快、操作简单,更因为拥有自己的源代码,所以保证了软件具有高度的保密、安全性,本系统将房屋租赁公司工作人员方便、安全、高效的进行管理。
第一章 系统概述
1.1数据库管理软件概述
1.1.1管理信息系统
管理信息系统(Management Information Systems 简称MIS),最早是J。D。Gallagher在EDPS的基础上于1961年提出的,起产生已有三十多年的历史。其定义是“MIS系统是一个利用计算机软硬件,手工作业,分析计划。控制和决策模型以及数据库的人一机系统,它能够提供信息,支持企业或组织的运行,管理功能。” 它对管理信息进行收集、传递、储存与处理,形成多用户共享系统,直接为基层和各级管理部门服务。MIS应用了相关的经济数学模型,如运筹学、数理统计等对管理的过程信息进行监控和处理,并提供辅助决策支持。管理信息系统可以有广义和狭义之分。狭义的MIS是指企业计算机网络管理信息系统,是指运用现代化计算机网络技术和企业管理学方法,系统地实现企业经营生产目标的一种综合管理系统。广义的MIS指所有运用计算机网络技术为其管理服务的政务部门和企事业单位,是指应用计算机网络技术和系统集成实现各项业务、技术、工作自动化及高水平管理的方法和模式。建设MIS主要包括三方面的内容:一是管理模式的确立。就狭义MIS而言,主要是现代企业管理技术和模式的选择和应用,如制造资源计划MRPⅡ、计算机集成制造系统(CIMS)等管理理念的贯彻;对广义的MIS来说,则包括了管理模式和方法、商业规则、办公自动化OA的程序等的确定,总体要求是管理工作程序化,管理业务标准化,管理流程科学化,数据资料代码化。二是计算机网络系统的建设,包括系统软硬件平台的选择,管理信息系统的集成,局域网的建设及互联,局域网和广域网的互联等。三是MIS的实施,如管理环境的适应性调整、人员培训、系统维护、信息源的组织等等。
在现代社会已深入到各行各业,由于计算机技术的迅速发展和普及,MIS 事实上已成为计算机MIS。MIS 是一个不断发展的新型学科,MIS的定义随着计算机技术和通讯技术的进步也在不断更新,在现阶段普遍认为MIS 是由人和计算机设备或其他信息处理手段组成并用于管理信息的系统。MIS的对象就是信息,信息是经过加工的数据,信息是对决策者有价值的数据。信息的主要特征是来源分散,数量庞大。信息来源于生产第一线,来源于社会环境,来源于市场,来源于行政管理等部门。信息具有时间性。信息的加工方式有多种形式。---- 企业从信息管理的角度可划分为物流和信息流。生产过程是一个物流的投入产出过程,且是不可逆的过程。管理过程是信息流的过程,且具有信息反馈的特征。
管理信息系统作为企业进行整体信息处理的支柱,应具有如下五个方面的作用或特点:
1.是一个人一机结合的系统。
2.因为建立的系统要成为整个组织的心脏和信息交换中心,因此它要包括企业各种数据输入,存储,加工,查询,生成计划,物资供应,帐务帐目,生产,销售等日常信息处理。
3.数据处理要速度高,成本低。
4.因为信息模型,处理过程相对确定,所以数据(而不是业务目标,不同用户)成为系统工作的驱动力。
5.系统设计要符合企业实际情况,求解过程和结果达到最优化。
一个管理信息系统的工作过程可大致描述如下:首先人们从观察客观事物(具体应用)入手,收集到大量信息,在对这些信息进行记录、整理和分类后送入有关的数据库中保存起来。随后,MIS的使用者根据各自的需求向数据库发出相应的访问请求,系统响应这些请求,从数据库中筛选出所需数据,并对数据进行加和处理,形成用户所需的计划、控制等决策信息。由些可见,一个管理信息系统不仅是一个简单的统计系统(如企业的产品统计)、一个数据更新系统(如图书馆中的借阅系统)、一个工作状态报告系统(如商场中的服务监视、人员排班表),而且要包含计划、控制和决策的功能。一个管理信息系统除依靠数据库系统作为数据处理的核心外,还需要知识库系统、方法库系统等支持。如图1-1所示:
图1-1 管理信息系统的构成
目前管理信息系统已成为计算机应用中的一个重要领域。特别是随着现代管理信息技术的日益发展,这个领域已涉及到专家系统、知识系统、决策系统等人工智能技术及计算机网络技术的应用。
1.1.2数据库管理信息系统的形成
图书管理员在查找一本书时,首先要通过目录检索找到那本书的分类号和书号,然后在书库找到那一类书的书架,并在那个书架上按照书号的大小次序查找,这样很快就能找到我所需要的书。
数据库里的数据像图书馆里的图书一样,也要让人能够很方便地找到才行。
如果所有的书都不按规则,胡乱堆在各个书架上,那么借书的人根本就没有办法找到他们想要的书。同样的道理,如果把很多数据胡乱地堆放在一起,让人无法查找,这种数据集合也不能称为"数据库"。
数据库的管理系统就是从图书馆的管理方法改进而来的。人们将越来越多的资料存入计算机中,并通过一些编制好的计算机程序对这些资料进行管理,这些程序后来就被称为"数据库管理系统",它们可以帮我们管理输入到计算机中的大量数据,就像图书馆的管理员。
1.1.3数据库管理信息系统的简介
数据库是存储在一起的相关数据的集合,这些数据是结构化的,无有害的或不必要的冗余,并为多种应用服务;数据的存储独立于使用它的程序;对数据库插入新数据,修改和检索原有数据均能按一种公用的和可控制的方式进行。当某个系统中存在结构上完全分开的若干个数据库时,则该系统包含一个“数据库集合”。
数据库的优点
使用数据库可以带来许多好处:如减少了数据的冗余度,从而大大地节省了数据的存储空间;实现数据资源的充分共享等等。此外,数据库技术还为用户提供了非常简便的使用手段使用户易于编写有关数据库应用程序。特别是近年来推出的微型计算机关系数据库管理系统dBASELL,操作直观,使用灵活,编程方便,环境适应广泛(一般的十六位机,如IBM/PC/XT,国产长城0520等均可运行种软件),数据处理能力极强。数据库在我国正得到愈来愈广泛的应用,必将成为经济管理的有力工具。
数据库是通过数据库管理系统(DBMS-DATA BASE MANAGEMENT SYSTEM)软件来实现数据的存储、管理与使用的dBASELL就是一种数据库管理系统软件。
1.1.4关系型数据库
数据库这一概念提出后先后出现了几种数据模型,其中基本的数据模型有三种:层次模型系统,网络模型系统和关系模型系统.60 年代末期提出的关系模型具有数据结构简单灵活,易学易懂且具有雄厚的数学基础等特点.从70 年代开始流行,发展到现在已成为数据库的标准,目前广泛使用的数据库软件都是基于关系模型的关系数据库管理系统.
关系模型把世界看作是由实体Entity 和联系Relationship 构成的。所谓实体就是指现实世界中具有区分与其它事物的特征或属性,并与其它实体有联系的。对象在关系模型中实体通常是以表的形式来表现的,表的每一行描述实体的一个实例,表的每一列描述实体的一个特征或属性,所谓联系就是指实体之间的关系,即实体之间的对应关系。联系可以分为三种:� 一对一的联系如一个人只有一种性别一个人性别为一对一的联系;� 一对多的联系如相同性别的人有许多个性别人为一对多的联系;多对一的联系如很多人有同一个性别人性别为多对一的联系。
通过联系就可以用一个实体的信息来查找另一个实体的信息关系模型把所有的数据都组织到表中。表是由行和列组成的,行表示数据的记录,列表示记录中的域。表反映了现实世界中的事实和值。
所谓关系数据库就是基于关系模型的数据库,关系数据库管理系统就是管理关系数据库的计算机软件,关键字Key:关键字是关系模型中的一个重要概念它是逻辑结构不是数据库的物理部分;侯选关键字Candidate Key:如果一个属性集能惟一地标识表的一行而又不含多余的属性那么这个属性集称为侯选关键字。主关键字Primary Key:主关键字是被挑选出来作表的行的惟一标识的侯选关键字,一个表只有一个主关键字。主关键字又可以称为主键。公共关键字Common Key:在关系数据库中关系之间的联系是通过相容或相同的属性或属性组来表示的,如果两个关系中具有相容或相同的属性或属性组,那么这个属性或属性组被称为这两个关系的公共关键字。外关键字Foreign Key:如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外关键字,由此可见外关键字表示了两个关系之间的联系,以另一个关系的外关键字作主关键字的表被称为主表,具有此外关键字的表被称为主表的从表,外关键字又称作外键。
1.2系统介绍
本系统是一套功能简单,操作简单而又实用的房屋租赁管理软件,主要针对房屋租赁管理中需要解决的具体问题进行开发,并能提供良好的功能扩展接口。在系统的设计中采用了模块化设计方法,即按照功能,将整个系统划分为多个相对独立的功能模块,包括:二手房出售登记模块,二手房出售查询模块,二手房出租登记模块,二手房出租查询模块,出租报表统计模块,出售报表统计模块和系统维护模块。
在编程时,尽可能从用户操作的角度出发,力求使得操作简单、容易掌握,并尽可能考虑到对误操作的提示和容错处理,使系统有一个友好的用户界面。
1.3 课题意义
随着当今科学技术的飞速发展,尤其是计算机技术的出现,使得人类进入了信息化社会,利用计算机,可以代替人进行很多复杂劳动,从而节省大批的人力,可以大大提高工作效率,而且计算机有更高的准确性和更安全的保密措施。计算机技术凭着自己无与伦比的优越性,已经迅速成为各个领域不可或缺的工具。在各行各业中离不开数据处理,这正是计算机被广泛应用于数据库管理系统的环境。计算机的最大好处在于利用它能够进行数据管理。使用计算机进行数据控制,不仅提高了工作效率,而且大大的提高了其安全性。
在之前的房屋租赁管理过程中,各地房管局往往采用的是通过粘贴板的方式用用户贴出本地房屋出售或者出租的情况,不仅不便于用户快速的查询房源情况,而且手工操作难免带来各种误差和错漏,尤其是在数据信息处理工作量大时容易出错;数据繁多时,容易丢失,且不易查找,出错后又不易修改。
基于以上问题,有必要建立房屋租赁管理系统,使管理工作规范化,系统化,程序化,避免的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询、修改房源基本信息,并能根据用户的不同需要,准确,迅速找到合适的二手房,而且管理者也迅速的统计出本月二手房出租出售情况等。
第二章 系统开发方法选择
2.1 软件工程介绍
软件工程是用科学知识和技术原理来定义、开发、维护软件的一门学科。它涉及计算机科学、工程科学、管理科学、数学等领域,计算机科学着重于原理和理论,而软件工程着重于如何建造一个软件系统。软件工程在软件开发过程中占有不可动摇的重要地位,
一个软件从开始计划起,到废弃不用止,称为软件生存周期。一般来说,软件生存周包括计划、开发、运行三个时期,每一时期又可分为若干更小的阶段。计划时期的主要任务是分析用户要求,分析新系统的主要目标以及开发该系统的可行性。开发时期要完成设计和实现两大任务具体。具体分为需求分析、概要设计、详细设计、编码、测试。其中编码和测试是软件开发期的最后两个阶段。运行时期是软件生存周期的最后一个时期,软件人员在这一时期的工作,主要是做好软件维护。
“房屋租赁管理信息系统”虽然只是一个比较小的项目,但是为了做的更规范,也尽量按照软件工程的指导来做,事实上,不管一个多小的工程,都是离不开软件工程的指导思想的。
2.2开发环境及工具
2.1.1选择JSP 2.0作为开发语言
JSP(JavaServer Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML文件)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件
用JSP开发的Web应用是跨平台的,即能在Linux下运行,也能在其他操作系统上运行。
JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。
(1)一次编写,到处运行。在这一点上Java比PHP更出色,除了系统之外,代码不用做任何更改。
(2)系统的多平台支持。基本上可以在所有平台上的任意环境中开发,在任意环境中进行系统部署, 在任意环境中扩展。相比ASP/PHP的局限性是显而易见的。
(3)强大的可伸缩性。从只有一个小的Jar文件就可以运行Servlet/JSP,到由多台服务器进行集群和负载均衡,到多台Application进行事务处理,消息处理,一台服务器到无数台服务器,Java显示了一个巨大的生命力。
(4)多样化和功能强大的开发工具支持。这一点与ASP很像,Java已经有了许多非常优秀的开发工具,而且许多可以免费得到,并且其中许多已经可以顺利的运行于多种平台之下。
2.2.3选择SQL2000 作为后台数据库
SQL是Structured Quevy Language(结构化查询语言)的缩写。SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。在使用它时,只需要发出“做什么”的命令,“怎么做”是不用使用者考虑的。SQL功能强大、简单易学、使用方便,已经成为了数据库操作的基础,并且现在几乎所有的数据库均支持SQL。
2.3 JSP数据库开发技术
2.3.1.JDBC开发数据库
JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为工具/数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯 Java API 编写数据库应用程序,同时,JDBC也是个商标名。
有了JDBC,向各种关系数据发送SQL语句就是一件很容易的事。换言之,有了JDBC API,就不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,或为访问Informix数据库又编写另一个程序等等,程序员只需用JDBC API写一个程序就够了,它可向相应数据库发送SQL调用。同时,将Java语言和JDBC结合起来使程序员不必为不同的平台编写不同的应用程序,只须写一遍程序就可以让它在任何平台上运行,这也是Java语言“编写一次,处处运行”的优势。
Java数据库连接体系结构是用于Java应用程序连接数据库的标准方法。JDBC对Java程序员而言是API,对实现与数据库连接的服务提供商而言是接口模型。作为API,JDBC为程序开发提供标准的接口,并为数据库厂商及第三方中间件厂商实现与数据库的连接提供了标准方法。JDBC使用已有的SQL标准并支持与其它数据库连接标准,如ODBC之间的桥接。JDBC实现了所有这些面向标准的目标并且具有简单、严格类型定义且高性能实现的接口。
Java 具有坚固、安全、易于使用、易于理解和可从网络上自动下载等特性,是编写数据库应用程序的杰出语言。所需要的只是 Java应用程序与各种不同数据库之间进行对话的方法。而 JDBC 正是作为此种用途的机制。
JDBC 扩展了 Java 的功能。例如,用 Java 和 JDBC API 可以发布含有 applet 的网页,而该 applet 使用的信息可能来自远程数据库企业也可以用 JDBC 通过 Intranet 将所有职员连到一个或多个内部数据库中(即使这些职员所用的计算机有 Windows、 Macintosh 和UNIX 等各种不同的操作系统)。随着越来越多的程序员开始使用Java 编程语言,对从 Java 中便捷地访问数据库的要求也在日益增加。
MIS 管理员们都喜欢 Java 和 JDBC 的结合,因为它使信息传播变得容易和经济。企业可继续使用它们安装好的数据库,并能便捷地存取信息,即使这些信息是储存在不同数据库管理系统上。新程序的开发期很短。安装和版本控制将大为简化。程序员可只编写一遍应用程序或只更新一次,然后将它放到服务器上,随后任何人就都可得到最新版本的应用程序。对于商务上的销售信息服务, Java 和JDBC 可为外部客户提供获取信息更新的更好方法。
2.3.2.BDE开发数据库
BDE是负责用户和数据库交流的中间媒介。事实上,应用程序是通过数据访问组件和BDE连接,再由BDE去访问数据库,完成对数据库的操作,而并非直接操作BDE。这样用户只需关心JSP中的数据组件即可,不用直接和BDE打交道。
数据库组件主要分为两类:“数据访问组件”和“数据控制组件”,它们和数据库的关系可用下面的关系图来示意:
图2-1:数据库组件与数据库关系图
其中,数据访问组件在JSP组件面板的Data SQL组件页上。其中的Table、Query和Storedproc三个控件,它们称为“数据集组件”,用于和数据库连接。这些组件功能如下:
(1)DataSource控件是数据集组件和数据控制组件的连接媒介。数据控制组件是用户操作数据库中数据的界面,只有通过DataSource控件才能和数据集组件连接,从而对数据进行显示、修改、维护等操作。
(2)Table控件是通过数据库引擎——BDE来存取数据库中的数据的。通过BDE将用户对数据库的操作(如添加、删除、修改等)传递给数据库。
(3)Query控件是利用SQL(Structured Query Language,结构化查询语言)通过BDE来操作数据库的,和Table控件完成的功能相似,它只是采用了SQL来实现。
(4)Storedproc控件是通过BDE对服务器数据库进行操作的,常用于客户/服务器(C/S)结构的数据库应用程序。
(5)DataBase控件一般用于建立远程的数据库服务器——客户/服务器结构的数据库应用程序和数据库之间的连接。
(6)Session控件是用于控制数据库应用程序和数据库连接的,主要用于复杂功能的实现,例如:多线程数据库程序设计。
而数据控制组件也可以称为数据显示组件或数据浏览组件。它们的主要功能是与数据访问组件相配合,提供给用户一个对数据进行浏览、编辑等操作的界面。数据控制组件在组件板上的DataControl页上。
从上图可以看出,BDE负责与具体的数据库相连,通过BDE,几乎可以操作目前所有类型的数据库。但是BDE也有很大的缺点,当然,在对于一些比较简单的数据库,例如ASCII,BDE可以直接访问。另外它也可以通过一些相应的驱动,访问特定的数据库,例如通过DAO访问SQL数据库。不同类型的驱动程序都具有不同的特征,主要是表现在:数据库的安全性,事务,数据字典和完整性验证,存储过程和触发器。对于不能直接支持的数据库,BDE还可以连接到ODBC,通过ODBC进行访问,所以BDE有时效率很低。
在JSP提供的所有数据库访问方式中,BDE的历史最长,因此提供的功能也最多,包括大量的和数据库交互的API。使用它访问PARJDBCX和DBASE时效率最高。同时,针对Oracle的访问也有专门的优化,效率也最高。JSP目前正逐步放弃BDE,已经不再为BDE增加新的功能,只是对现有的功能进行维护,排除BUG。BDE包含如下组件:
TDATABASE
TTABLE
TQUERY
TSTOREDPROC
TSESSION
TBATCHMOVE
TUPDATESQL
TNESTEDTABLE
2.4 体系结构
2.4.1 系统体系机构的一般阐述
MIS系统平台结构模式大体上分为4种:主机终端模式、文件服务器模式、客户机/服务器模式(Clint/Server,简称C/S)、web浏览器/服务器模式(Browser/Server,简称B/S)。主机终端模式由于硬件选择有限,已被逐步淘汰。而文件服务器模式由于硬件选择有限,硬件投资得不到保证,已被逐步淘汰。而文件服务器模式只适合小规模的局域网,对于用户多,数据量大的情况就会产生网络瓶颈,特别是在互联网上不能满足用户要求。因此,现代企业级平台结构模式应主要考虑C/S模式和B/S模式。
2.4.2 C/S模式与B/S模式的比较分析
C/S系统又被称作分布式计算系统,它的含义是程序的数据处理并不像通常在基于小型机或基于主机的计算机系统(终端方式)中那样在单个的计算机上发生,而是把程序的不同部分在多台计算机上同时运行。例如,对于SQL Server来讲,将数据存放在服务器计算机上,客户端界面作为程序的另一部分(完成商业逻辑和显示逻辑)存在于客户端桌面计算机上。客户/服务器系统的这两个部件通过网络连接相互通信,并且可以扩展到任意规模。SQL Server是一个真正的客户/服务器关系型数据库系统。它使企业可以设计出能够满足不断改变的信息需求的分布式数据库系统。客户端通过网络向服务器发送SQL语句,服务器返回客户端结果集。对于Client/Server模式而言,其主要特点为:
1.具有成熟的设计开发方法和工具。经过多年的研究和积累,基于Client/Server模式的系统设计开发方法已被用户所熟悉和掌握。并且,众多的数据库和软件生产商提供了各种可是化工具和编程语言来支持它的开发。相对而言,目前的基于Browse/Server模式的应用及其开发方法仍然处于发展阶段。
2.交互性强,界面友好。各个Client机上运行的应用程序是针对待定的用户和任务设计,同时具有在线帮助和出错提示等辅助功能。这些优势是Browse/Server模式所不具备的。
3.数据通信量小,安全性高。Client/Server模式中前后台传递的仅仅是查询请求SQL语言或查询结果,而不象Browse/Server模式中在前台的Browse和后台Server之间传递程序或主页模块:Client/Server模式一般采用基于局域网点对点式的结构和安全性较好的网络协议,而Browse/Server是一种开放式的结构,面向众多的用户,其防火墙技术并不能完全屏蔽网络黑客和内部人员对系统的恶意侵袭。
C/S模式主要由客户应用程序(Client)、服务器管理程序(Server)和中间件(middleware)三个部件组成。客户应用程序是系统中用户与数据进行交互的部件。服务器程序负责有效地管理系统资源,如管理一个信息数据库,其主要工作是当多个客户并发地请求服务器上的相同资源时,对这些资源进行最优化管理。中间件负责联结客户应用程序与服务器管理程序,协同完成一个作业,以满足用户查询管理数据的要求
B/S模式即Brower/Server结构模式,是基于Internet/Intranet的结构模式,分为三层,第一层为表示层,用户通过浏览器完成和后台的交互及最终查询结果的输出功能。第二层为具有ODBC接口的WEB服务器,属功能层,主要利用服务器完成客户的应用功能。第三层为数据层,根据客户的请求独立地进行各种运算。即前台客户端采用浏览器,中间件服务器为Web服务器,后台为数据库服务器。此种结构由客户端在Web页面发出请求至Web Sever,再由Web Sever向数据库服务器发出请求,而最后中间件服务器接受到数据库服务器的应答后,最终返回给客户端的仍然是页面形式。这样实现了客户端不直接和数据库服务器发生关系,保证了数据安全性。对Browse/Server模式而言,其主要特点为:
1.其在逻辑上采用了3层结构,它在前台Browse和后台Server之间增加了一层Web Server层,所有的应用程序模块都安装在它上面,在Browse上只需安装一个通用的浏览器软件,因此,这种模式简化了客户端,使用户的操作更加方便。
2.开放性好,Intranet/Intenet完全兼容。
3.扩展性好,根据发展需要,可对系统随时进行扩展,降低了系统的开发和维护的开销
2.4.3 B/S模式的优势
首先它简化了客户端。它无需象C/S模式那样在不同的客户机上安装不同的客户应用程序,而只需安装通用的浏览器软件。这样不但可以节省客户机的硬盘空间与内存,而且使安装过程更加简便、网络结构更加灵活。假设一个企业的决策层要开一个讨论库存问题的会议,他们只需从会议室的计算机上直接通过浏览器查询数据,然后显示给大家看就可以了。甚至与会者还可以把笔记本电脑联上会议室的网络插口,自己来查询相关的数据。其次,它简化了系统的开发和维护。系统的开发者无须再为不同级别的用户设计开发不同的客户应用程序了,只需把所有的功能都实现在Web服务器上,并就不同的功能为各个组别的用户设置权限就可以了。各个用户通过HTTP请求在权限范围内调用Web服务器上不同处理程序,从而完成对数据的查询或修改。现代企业面临着日新月异的竞争环境,对企业内部运作机制的更新与调整也变得逐渐频繁。相对于C/S,B/S的维护具有更大的灵活性。当形势变化时,它无须再为每一个现有的客户应用程序升级,而只需对Web服务器上的服务处理程序进行修订。这样不但可以提高公司的运作效率,还省去了维护时协调工作的不少麻烦。如果一个公司有上千台客户机,并且分布在不同的地点,那么便于维护将会显得更加重要。
再次,它使用户的操作变得更简单。对于C/S模式,客户应用程序有自己特定的规格,使用者需要接受专门培训。而采用B/S模式时,客户端只是一个简单易用的浏览器软件。无论是决策层还是操作层的人员都无需培训,就可以直接使用。B/S模式的这种特性,还使MIS系统维护的限制因素更少。
最后,B/S特别适用于网上信息发布,使得传统的MIS的功能有所扩展。这是C/S所无法实现的。而这种新增的网上信息发布功能恰是现代企业所需的。这使得企业的大部分书面文件可以被电子文件取代,从而提高了企业的工作效率,使企业行政手续简化,节省人力物力。
鉴于B/S相对于C/S的先进性,B/S逐渐成为一种流行的MIS系统平台。各软件公司纷纷推出自己的Internet方案,基于Web的财务系统、基于Web的ERP。一些企业已经领先一步开始使用它,并且收到了一定的成效。
B/S模式的新颖与流行,和在某些方面相对于C/S的巨大改进,使B/S成了MIS系统平台的首选,也使人忽略了B/S不成熟的一面,以及C/S所固有的一些优点。下面让我们来看C/S相对于B/S的一些优势。
2.4.4 C/S模式的优势
首先,交互性强是C/S固有的一个优点。在C/S中,客户端有一套完整的应用程序,在出错提示、在线帮助等方面都有强大的功能,并且可以在子程序间自由切换。B/S虽然由JavaScript、VBScript提供了一定的交互能力,但与C/S的一整套客户应用相比是太有限了。
其次,C/S模式提供了更安全的存取模式。由于C/S是配对的点对点的结构模式,采用适用于局域网、安全性比较好的网络协议(例如:NT的NetBEUI协议),安全性可以得到较好的保证。而B/S采用点对多点、多点对多点这种开放的结构模式,并采用TCP/IP这一类运用于Internet的开放性协议,其安全性只能靠数据服务器上管理密码的数据库来保证。现代企业需要有开放的信息环境,需要加强与外界的联系,有的还需要通过Internet发展网上营销业务,这使得大多数企业将他们的内部网与Internet相连。由于采用TCP/IP,他们必须采用一系列的安全措施,如构筑防火墙,来防止Internet的用户对企业内部信息的窃取以及外界病毒的侵入。
再次,采用C/S模式将降低网络通信量。B/S采用了逻辑上的三层结构,而在物理上的网络结构仍然是原来的以太网或环形网。这样,第一层与第二层结构之间的通信、第二层与第三层结构之间的通信都需占用同一条网络线路。而C/S只有两层结构,网络通信量只包括Client与Server之间的通信量。所以,C/S处理大量信息的能力是B/S所无法比拟的。
最后,由于C/S在逻辑结构上比B/S少一层,对于相同的任务,C/S完成的速度总比B/S快。使得C/S更利于处理大量数据。
2.5 开发方法整体选择
根据用户的实际情况和需要,最终决定采用在Windows xp下使用JSP+SQL开发,采用C/S结构,使用JDBC连接数据库。这样的好处是:
1.使用JSP+SQL灵活方便,可扩充性、可移植性较好。
2.JDBC与SQL同为微软开发,兼容性好,同时存取效率高,且较成熟,目前许多数据库应用系统都采用这种方式。
3.采用 C/S结构是能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器。对应的优点就是客户端响应速度快。
JDBC是Microsoft主要数据存储技术,JDBC主要让应用程序或WEB应用程序存取各种不同的数据源。JDBC封装了OLE-DB复杂的接口,以极为简单的COM接口存储数据,简化了程序员数据存取的工作。JDBC架构图:
图2-2 JDBC加构图
第三章 系统总体规划分析
3.1 系统总体结构设计
3.1.1 应用需求分析
房屋租赁管理系统需求主要来自房屋登记,管理房源和管理人员。房屋登记将用户需要登记的房屋的信息输入系统,由系统自动归类储存,随时可以查阅修改。房屋管理人员可利用本系统,输出房屋名单,自动生成统计报表、房屋出售合同、房屋出租合同。一般情况下,普通用户只能浏览查询房屋具体信息,而超级用户除了能查询房屋具体信息以外,还能够直接登记房屋信息,但是不能随意修房屋数据,尤其是房屋出售合同和房屋出租合同等敏感信息。因此,用户, 超级用户和房屋管理人员的的权限要明确区分开来,防止操作时因操作错误产生的数据丢失和数据错误,因此,
这就需要在设计模块时加以考虑。房屋管理人员还有一个任务是对各个人员的使用权限进行管理,对数据库中的房屋信息进行实地考核和协助客户填写房屋出售合同和房屋出租合同,并将其打印出来存档管理,在出租合同到期后即时的回收房屋使用权,并再次将此房屋出租,进入下一个出租循环中。
因此,确定本系统的功能有:房屋出租登记输入处理,房屋出售登记输入处理,房屋登记表修改处理(有输入、取消、确认、修改、删除等功能),房屋查询处理(按地址,面积,使用权查询等),房屋出租情况报表统计处理,房屋出售情况报表统计处理(包含打印功能),房屋出租合同录入和打印功能,房屋出售合同录入和打印功能,购买房屋基本常识介绍功能。
3.1.2 系统处理流程图
本系统基本设计按系统规划的要求规定设计,其处理流程如图(3-1)所示
3.2 各模块功能介绍
二手房租售登记模块,主要实现的是管理员以及超级用户(当地房地产公司),即时将拥有的房源具体情况(如地址,面积,户主,联系方式等)登记,经过房屋租赁公司实地考察属实后,向客户出售或者出租。
二手房租售查询模块,主要是对房源的查询,了解房源情况,在浏览房源资料的时候,在选定房源的时候,可以进行登记管理,也便于管理员修改,添加和删除,对房源进行管理。对房源的查询方式可分为:房源编号,户主,房源地址,面积,朝向和出售价格,出租时间等。
房源租售报表统计模块,主要是管理员对当日或者当月房屋出租或者出售情况的统计,便于管理和存档,可以及时将本日或者本月情况打印出来。
二手房租售合同管理模块,主要是针对客户在选择好房屋后,及时快捷的填写租售合同,便于管理机构管理。
用户管理模块,是便于管理员了解当前几个大客户的情况。
购房常识管理模块,是对不熟悉房屋租售情况的客户详细的介绍购房程序等等各类方便客户的各种介绍。
3.3总体结构设计
系统的概要设计中最重要的就是系统的模块化。模块化是指解决一个复杂问题时自项向下逐层把软件系统划分成若干个模块的过程。每个模块完成一个特定的功能,所有的模块按某种方法组织起来,成为一个整体,完成整个系统所要求的功能。
将系统划分为多个模块是为了降低软件系统的复杂性,提高可读性、可维护性,但模块的划分不能是任意的,应尽量保持其独立性。也就是说,每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单,即尽量做到高内聚低耦合,提高模块的独立性,为设计高质量的软件结构奠定基础。
通过对整个系统的规划分析,对数据的具体要求的分析,以及对系统功能的综合考虑,提出一个基本的总体结构框架。
房屋中介管理系统的层次划分为几个方面:用户界面,数据缓冲,数据库,输出等。
用户界面层次:距离用户最近的层次,以图形化界面显示给用户,便于用户进行基本操作,用户可以在这里输入数据,修改数据,删除数据,设定选配标准,设定查询条件等。用户对系统的所有输入内容在此层次上操作。
数据缓冲层次:在这个层次中,用户所做的修改尚未提交到数据库中,而是保存在一个临时缓冲区中。此时,所有操作是由系统本身操作,包括在数据缓冲区内增加信息,修改信息,删除信息等,也包括执行选配过程,判断查询条件的合法性等。这一层次中,系统主要执行提交数据库之前的所有工作,确保提交数据的合法性和准确性,尽量减少数据库错误。
数据库层:主要操作在数据库中执行,主要工作是:将缓冲区的数据存入数据库,执行查询语句等。由于数据是经过缓冲区检查的,所以可以大大减少数据库的非法操作,减少数据出错的情况,查询时的非正常情况大大减少。
输出层:在这个层次中,不需要进行数据库操作和用户输入操作,这个层次的主要工作是把结果显示给用户,包括查询结果,统计图,错误信息,提示信息等。
3.4数据库设计
3.4.1 数据基本操作
数据的基本操作功能是“房屋中介管理系统”的最基本功能,指的是一个数据库管理系统软件的最基本的数据操作。
数据的基本操作包括房屋的增加,删除,修改等。
房屋信息增加功能:用户手动增加房屋信息
房屋删除功能:由用户选择要删除的房屋信息,点击删除后,删除该房屋信息,首先在缓冲区中删除,此时如果没有提交到数据库,则可以撤销删除操作,但如果提交到数据库了,删除后将不能恢复该信息。
房屋修改功能:用户选择要修改的房屋信息,可以重新修改房屋的登记信息。
3.4.2 查询功能
查询功能是一个数据库管理软件的必备辅助功能,当数据量大的时候,呈现给用户所有信息,肯定有很多信息是冗余的或者是无效的甚至是用户不需要的。此时,根据用户的需要进行必要的过滤是十分必要的。查询功能通常是根据数据的信息中不同的字段来查询。
“房屋中介管理系统”中,查询功能也是一个十分重要的功能,当有很多房屋信息时,如何给用户呈现出需要的信息和过滤掉不用的信息是一个需要解决的问题。因此,考虑到用户的需求,系统应该具有一个比较人性化的查询系统,可以根据不同的要求来进行查询。查询的速度要快捷,查询的结果要准确。“房屋中介信息系统”的查询系统可以分成下面几个方面来进行查询:根据房屋地址,根据房屋状态,根据户主,根据房屋朝向等来查询。
3.4.3打印和统计功能
“房屋中介管理信息系统”的一个重要功能是房屋租售报表统计和房屋租售报表的打印。房屋租售报表统计和房屋租售合同均有一定的格式,特别是房屋出租和出售合同,严格按照当地房管部分的要求。因此高质量的套打也是软件的重要功能
3.4.4 其他辅助功能
“房屋租赁管理信息系统”除了具备上述所有主要功能之外,还应该具有一些必要的辅助性功能,包括用户管理,数据库连接功能,购买常识介绍功能等等。
用户管理功能:为了保证系统的可靠性和安全性,系统应该采用用户登录的方式进入,防止非法用户的进入。每个用户具有自己的权限,主要是管理权限和一般权限。只有管理权限才允许增加用户,删除用户等管理功能。而一般权限则只能进行一般的工作,没有管理用户的功能。
用户登录:系统的启动同时要求用户根据自己的操作员号码和密码进行登录,通过验证用户的密码,达到确定用户合法性的目的。
增加用户:只有系统管理员权限的身份才具备此功能,为系统增加一个新用户,包括用户登录名,密码,权限等信息。其中,可以设置新增用户的权限,系统管理员、报名管理员或者报名登记员,当设定成系统管理员身份时,该拥护具有和系统管理员同样的权限。
删除用户:只有系统管理员权限的身份才具备此功能,从系统删除一个用户,被删除的用户将不能登录本系统。
重新登录:退出系统重新登录。一般在新增用户后或者修改密码之后使用验证增加用户或者修改密码是否成功。或者以不同权限登录,换一个不同的用户名登录等等。
数据库连接功能:数据库连接信息保存在系统中,再次登陆系统不必设置数据库,但当数据库发生变动时,用户可以配置输入本机或者局域网上的数据服务器名和数据库名。如果应用程序与数据库连接成功,下次运行程序就不会再弹出此配置窗口,除非数据库服务器有变更时会弹出。
购买常识介绍功能:主要是针对用户对于不熟悉购买房屋或者租房屋流程,以及各种购房常识等介绍。
3.4.5概念设计
在概念设计阶段中,设计人员从用户的角度看待数据及处理要求和约束,产生一个反映用户观点的概念模式。然后再把概念模式转换成逻辑模式。将概念设计从设计过程中独立开来,使各阶段的任务相对单一化,设计复杂程度大大降低,不受特定DBMS的限制。
在系统设计的开始,首先考虑的是如何用数据模型来数据库的结构与语义,以对现实世界进行抽象。目前广泛使用的数据模型可分为两种类型,一种是独立于计算机系统的“概念数据模型”,如“实体联系模型”;另一种是直接面向数据库逻辑结构的“结构数据模型”。 在系统的数据库设计中,先要对系统分析得到的数据字典中的数据存储进行分析,分析各数据存储之间的关系,然后才能得出系统的关系模式。可以采用E-R图的方法来进行数据结构分析。E-R设计方法是一种通过E-R图来描述现实世界信息结构的DB设计方法。E-R图由实体、属性、联系三部分组成。在本系统中采用“实体联系模型”(ER模型)来描述数据库的结构与语义,以对现实世界进行第一次抽象。ER模型直接从现实世界抽象出实体类型及实体间联系,然后用ER图来表示数据模型。它有两个明显的优点:接近于人的思维,容易理解;与计算机无关,用户容易接受。ER图是直观表示概念模型的工具,它有四个基本成分:
矩形框,表示实体类型(考虑问题的对象)。
菱形框,表示联系类型(实体间的联系)。
椭圆形框,表示实体类型和联系类型的属性。
对于关键码的属性,在属性名下划一横线。
直线,联系类型与其涉及的实体类型之间以直线连接。
在得到全局ER模式后,为了提高数据库系统的效率,还应进一步依据处理需求对ER模式进行优化。一个好的全局ER模式,除能准确、全面地反映用户功能需求外,还应满足下列条件:实体类型的个数要尽可能的少;实体类型所含属性个数尽可能少;实体类型间联系无冗余。
3.4.6数据表的设计
在完成系统的ER图之后,需要将ER模型转化为关系模型,也就是说,要设计出数据库所需要的表格。在这里,选用的是关系数据库。因为关系数据库中的二维表格可以很清楚地描述数据之间的联系。在这里不得不提到一个概念——范式。其实在上一节的ER图设计中,已经运用了范式的思想,不仅如此,在数据库的表格设计中更离不开范式的思想,它是数据库设计的基础,如果不注意这个问题将会导致一系列问题的出现。
设计原则如下:
1.进行规范化设计,尽可能地减少数据冗余和重复
2.合理的数据库表的设计应该是在满足需求的前提下,使数据的重复量最小,就尽量按照关系数据库系统理论方法去设计一个数据库,减少数据的冗余。
3.结构设计与操作设计相结合
在设计数据库结构时,有时为了编程实现的简捷和思路的清晰,往往故意增加一些冗余数据。这虽然有悖于传统的关系数据库理论,但是考虑到选择的机器型号和档次等因素,如果增加的冗余不会明显增加存储空间和降低处理效率,并且对编程实现有很大帮助,往往可以采用这种方法。
数据结构具有相对的稳定性
数据结构的相对稳定性,可以作为新、旧系统转换的依据。无论采用何种方法或手段去处理日常事务,都应该能完成相应的功能,决不会因为采用了计算机而丢失了必要的功能,或彻底改变了原有的工作流程和模式。计算机系统的建成是建立在原系统充分调研的基础上的,它既不能脱离原系统的大框架,也不是简单的重复和替代。所以数据库表结构设计应保证数据的相对稳定,这样才能考虑在新的数据结构下的业务处理方式。
在系统中定义的表格都严格地按照范式的思想和要求去完成,数据库中的所有表格都达到了三范式的要求。基于以上三条设计原则,根据系统ER图,针对本系统的特点,在对所搜集的数据进行规范化之后,我选用Microsoft Accsse数据库来进行数据库的逻辑设计。
表3-1 系统数据库目录
序号 | 表名 |
1 | 常识信息表 |
2 | 中介信息表 |
3 | 用户信息权限表 |
4 | 单位信息表 |
5 | 房屋出售合同表 |
6 | 房屋租赁合同表 |
以下是两张主要的表:
用户信息表User:
表3-2 用户信息表
字段名称 | 类 型 | 长 度 | 必填字段 |
用户 | CHAR | 20 | YES |
密码 | CHAR | 12 | YES |
权限 | SMALLINT | 10 | YES |
中介信息表:
表3-3 中介信息表
项次 | 字段名称 | 字段大小 | 数据类型 | 必填字段 |
01 | 编号 | 长整型 | 自动编号 | |
02 | 收件号 | 10 | 文本 | NO |
03 | 类型 | 10 | 文本 | NO |
04 | 房屋地址 | 100 | 文本 | NO |
05 | 房型 | 20 | 文本 | NO |
06 | 朝向 | 20 | 文本 | NO |
07 | 楼层 | 长整型 | 数字 | NO |
08 | 产别 | 20 | 文本 | NO |
09 | 价格 | 货币 | NO | |
10 | 区域 | 20 | 文本 | NO |
11 | 竣工日期 | 日期/时间 | NO | |
12 | 产权证号 | 50 | 文本 | NO |
13 | 房屋设施 | 200 | 文本 | NO |
14 | 装修情况 | 100 | 文本 | NO |
15 | 交通情况 | 100 | 文本 | NO |
16 | 使用年限 | 货币 | NO | |
17 | 房屋面积 | 货币 | NO | |
18 | 周围环境 | 200 | 文本 | NO |
19 | 备注 | 200 | 文本 | NO |
20 | 联系人 | 50 | 文本 | YES |
21 | 联系人电话 | 40 | 文本 | YES |
22 | 联系人电话2 | 40 | 文本 | NO |
23 | 联系人身份证号码 | 17 | 文本 | YES |
24 | 创建用户 | 20 | 文本 | NO |
25 | 创建日期 | 日期/时间 | NO | |
26 | 成交人姓名 | 20 | 文本 | YES |
27 | 成交人电话 | 20 | 文本 | YES |
28 | 成交人身份证号 | 20 | 文本 | YES |
29 | 成交价格 | 货币 | YES | |
30 | 成交日期 | 日期/时间 | YES | |
31 | 成交截止日期 | 日期/时间 | NO | |
32 | 成交备注 | 200 | 文本 | NO |
33 | 合同号 | 20 | 文本 | NO |
34 | 佣金金额 | 货币 | YES | |
35 | 受理用户 | 20 | 文本 | NO |
36 | 受理日期 | 日期/时间 | NO | |
37 | 状态 | 10 | 文本 | YES |
第四章 系统详细设计
4.1 设计原则
人机交互子系统是用户所能直接看到的,是给用户的第一感觉,他现在已经成为判断一个软件好坏的重要标准。在设计人机交互子系统的时候,必须遵循以下原则:
设计出一个易用、低错、适应、美观的界面,能够使用户自如的完成操作,而用户不需要有较高的计算机专业知识和技能。
主要特点:
(1)易用性。
前期对项目的大量细致的分析,以及对用户群的调查,充分考虑实际操作的各项细节,使得普通用户在不需要查看用户手册的情况下亦能很自如的操作系统,并对操作流程有清晰的了解。
(2)低出错率
为了防止用户在操作中出现各种失误,界面的设计在各个环节都给与用户必要的提示,同时也在空间排布上引导用户按照正确的顺序进行操作,大大减少操作出错的几率,也减低了操作者的劳动强度。
(3)合理性
父窗体应该在屏幕的中心位置,子窗体应该在父窗体的左上角或中心,界面退出或关闭的按钮不应该放在易点的位置,对数据进行无法恢复的操作,应有提示信息,给用户有选择放弃的机会。对错误的提示要准确、清楚、有足够多的信息。
(4)高适应性
系统面向的用户群有三类,对于不同的用户,他们拥有不同的操作目的、操作流程以及不同的权限,如何考虑系统的适应性也是界面设计时的重要部分,本系统可以面向不同的用户提供不同的界面,实现高适应性。
(5)美观性
系统界面以白色和灰色为主色调,辅助以少量鲜艳的小图,给人的感觉是清晰明了,赏心悦目,长时间工作于此系统不会有视觉疲劳感,充分考虑色彩与结构的关系,并通过精心的点缀引导用户的视线顺序完成操作。
设计出一个易用、低错、适应、美观的界面,能够使用户自如的完成操作,而用户不需要有较高的计算机专业知识和技能。
4.2 用户登陆窗体设计
用户登陆窗体使为了保证系统的安全性,只有许可用户才可进入,如果输入密码和用户名不匹配则不允许进入系统。如图
图4-1 用户登陆窗口
本窗体是为三种不同的用户(一般用户,超级用户,管理员)提供选择以进入不同的模块,满足不同用户的需求,采用了常用的登录框来界面显示,其中,接收用户名采用下拉选择框,选项来自数据库中用户表格,主要流程如下图:
图 4-2 用户登陆流程图
该窗体是在Application运行前,以模态对话框的形式显示出来。Dialog分为模态和非模态两种,模态对话框是指用户必须对对话框进行操作才可以继续。非模态对话框可以不必对它进行任何操作。这里我们必须要使用模态对话框,因为我们只有当用户输入用户名和密码相匹配的时候,点击“确定”按钮进入系统。口令Edit是要求用户输入密码,输入的字符都已‘*’的形式显示出来,这就需要调整Edit的PasswordChar属性设置为‘*’。在“确定”按钮的激发事件里写入验证代码:
procedure TFrm_Login.bbtnokClick(Sender: TObject);
begin
//录入检验
if cbUserId.text='' then
begin
messagedlg('请 选 择 用 户 名 !',mtInformation,[mbok],0);
cbUserId.SetFocus();
exit;
end;
//登录验证
with JDBCQ_Temp do
begin
close;
SQL.Clear;
SQL.Add('SELECT * From 用户信息表 Where 用户名='+''''+cbUserId.Text+'''');
Open;
//用户有效性
IF not IsEmpty then
begin
//登录失败
If edtPassword.Text <> Fieldbyname('密码').AsString then
begin
messagedlg('口令错误,请修改 !',mterror,[mbok],0);
LoginNum:=LoginNum+1;
if LoginNum=3 then
begin
messagedlg('非法用户!你无权使用本系统',mterror,[mbok],0);
application.Terminate ;
end;
edtPassword.Text :='';
edtPassword.SetFocus;
exit;
end
//登录成功
else
begin
//保存登录的用户信息
gs_login_userid :=fieldbyname('用户名').asstring;
gs_login_username :=fieldbyname('用户名').asstring;
gs_login_userlevel :=fieldbyname('用户等级').asstring;
gs_login_Password :=fieldbyname('密码').asstring;
gt_login_time:=now();
Login:=true;
self.close;
end;
end
else
begin
messagedlg('指定的用户已被注销!你无权使用本系统!',mterror,[mbok],0);
Login:=False;
self.close;
end;
end;
end;
procedure TFrm_Login.edtPasswordKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=VK_RETURN then
bbtnOk.SetFocus ;
end;
procedure TFrm_Login.FormCreate(Sender: TObject);
begin
//
Login:=false;
// 初始化用户选择列表
with JDBCQ_Temp do
begin
close;
SQL.Clear;
SQL.Add('SELECT 用户名 From 用户信息表');
Open;
while not eof do
begin
cbUserId.Items.Add(FieldByName('用户名').AsString);
Next;
end;
close;
end;
cbUserId.ItemIndex:= 0;
end;
4.3 主窗体设计
根据以上原则,和数据流程图子做了下面的主窗体,主菜单分为业务操作,购房常识,统计报表和系统维护。下边为快捷操作栏,提供了方便用户操作的接口(房屋出租登记,房租出租查询,房屋出售登记,房屋出售查询,购房常识管理,退出系统)。为了实现工具条的拖动,利用了JSP的CoolBar控件,控制TBMenu和TBTool两个ToolBar控件,并且在主窗体最下边利用了StatusBar,显示用户信息和时间信息。
图4-3 主窗口设计
在MDI程序中,MDI主窗体的功能是提供子窗口显示的位置和提供菜单、工具条、状态条等。
4.4房屋租售登记表模块设计
4.4.1房屋租售登记表输入
房屋登记表的流程图如下:
图4-4 房屋登记流程图
房屋管理输入界面如图:
图4-5 房屋出租管理界面
房屋登记表输入举例:具体输入:收件号:001 房屋地址:杭州市下沙高教圆杭州电子科技大学 建筑面积:500 楼层:5,租金:5000元/月。
其中,租金,产权证号,联系人,联系人电话,身份证号为必须填写内容,其实竣工日期为标准格式,身份证号码位数必须在1位一内,其余内容可不填写。代码如下:
function TFrm_LendDetail.f_CheckValue:Boolean;
begin
//
if dbePrice.Text='' then
begin
MessageBox(handle,'请输入租金!','提示',MB_OK+MB_ICONINFORMATION);
dbePrice.SetFocus;
Result :=False;
Exit;
end;
//
if dbeLinkName.Text='' then
begin
MessageBox(handle,请输入联系人!','提示',MB_OK+MB_ICONINFORMATION);
dbeLinkName.SetFocus;
Result :=False;
Exit;
end;
当客户在确定租用此房后,点“房屋出租”按钮的激发承租方信息填写部分。简要代码如下:
begin
inherited;
//
strCommandName := TButton(Sender).Caption;
//
with JDBCQ_Data do
begin
edit;
//
if strCommandName ='房屋出租' then
begin
FieldByName('状态').AsString:='已处理';
FieldByName('受理用户').AsString :=gs_login_username;
FieldByName('受理日期').AsString :=FormatDateTime('yyyy-mm-dd',f_GetNow());
end else if strCommandName ='房屋作废' then
begin
FieldByName('状态').AsString:='已作废';
FieldByName('受理用户').AsString :=gs_login_username;
FieldByName('受理日期').AsString :=FormatDateTime('yyyy-mm-dd',f_GetNow());
end else
begin
FieldByName('状态').AsString:='未处理';
FieldByName('成交人姓名').AsString:='';
FieldByName('成交人电话').AsString:='';
FieldByName('成交人身份证').AsString:='';
FieldByName('成交价格').AsString:='';
FieldByName('成交日期').AsString:='';
FieldByName('成交截止日期').AsString:='';
FieldByName('成交备注').AsString:='';
FieldByName('合同号').AsString:='';
FieldByName('佣金金额').AsString:='0';
FieldByName('受理用户').AsString:='';
FieldByName('受理日期').AsString:='';
end;
//
post;
end;
//
f_StatusChangeProc();
//
if pnlBargain.Enabled =true then
begin
dbeBargainName.SetFocus;
end;
end;
在出租方放弃出租此房屋,点“房屋作废”将此房屋消去,客户将无法查询此房屋情况。
当房屋租期满以后,可根据出租方要求,将此房屋继续出租。
4.4.2房屋出租查询
“房屋中介管理系统”中,查询功能也是一个十分重要的功能,当有很多房屋信息时,如何给用户呈现出需要的信息和过滤掉不用的信息是一个需要解决的问题。因此,考虑到用户的需求,系统应该具有一个比较人性化的查询系统,可以根据不同的要求来进行查询。查询的速度要快捷,查询的结果要准确。“房屋中介信息系统”的查询系统可以分成下面几个方面来进行查询:根据房屋地址,根据房屋状态,根据户主,根据房屋朝向等来进行模糊查询。
主要流程见下图:
条件非法
条件合法
图4-6 房屋信息查询流程图
图4-7 房屋查询界面
简要代码如下:
begin
inherited;
// 构造过滤条件
strFilter := '';
if trim(edtNo.text)<>'' then
strFilter := strFilter + ' (收件号 like '+'''%'+edtNo.text+'%'')'+' AND ';
//
if cboStatus.itemindex=1 then
begin
strFilter := strFilter + ' 状态='+'''未处理'''+' AND ';
end
else if cboStatus.itemindex=2 then
begin
strFilter := strFilter + ' 状态='+'''已处理'''+' AND ';
end
else if cboStatus.itemindex=3 then
begin
strFilter := strFilter + ' 状态='+'''已作废'''+' AND ';
end;
//
if trim(edtHouseAddr.text)<>'' then
strFilter := strFilter + ' (房屋地址 like '+'''%'+edtHouseAddr.text+'%'')'+' AND ';
if trim(cbHouseType.text)<>'' then
strFilter := strFilter + ' 房型='+''''+cbHouseType.text+''''+' AND ';
if trim(cbHouseWay.text)<>'' then
strFilter := strFilter + ' 朝向='+''''+cbHouseWay.text+''''+' AND ';
if trim(cbHouseArea.text)<>'' then
strFilter := strFilter + ' 区域='+''''+cbHouseArea.text+''''+' AND ';
if trim(edtLinkName.text)<>'' then
strFilter := strFilter + ' (联系人 like '+'''%'+edtLinkName.text+'%'')'+' AND ';
if chkStartDate.Checked then
strFilter := strFilter + ' 创建日期 >= #'+FormatDateTime('yyyy-mm-dd',dtpStartDate.DateTime)+'# AND ';
if chkEndDate.Checked then
strFilter := strFilter + ' 创建日期 <= #'+FormatDateTime('yyyy-mm-dd', dtpEndDate.DateTime)+'# AND ';
//
if strFilter<>'' then
strFilter :=copy( strFilter,0,Length(strFilter)-5 );
//查询
if strFilter='' then
begin
ParmJDBCqData.Filtered:=false;
end
else
begin
ParmJDBCqData.Filtered:=true;
ParmJDBCqData.Filter:=strFilter;
end;
//
close;
end;
end.
这样方便于客户在最短时间内找到,符合自己条件,满意的房屋。
4.5房屋租售报表的统计和打印
房屋租售报表的打印均使用了JSP 2.0的QuickReport控件,使用该控件可以快速准确的生成房屋出租或者出售情况,如图所示。需要说明的是,由于没有安装打印机,未能进行测试。由于QuickReport支持预览,预览得到的结果如上两图所示,可视为打印结果。
图4-8 房屋报表打印界面
第五章 系统测试
5.1 测试的原则
软件测试(Software testing)是软件生存期(Software life cycle)中的一个重要阶段,是软件质量保证的关键步骤。通俗地讲,软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码进行最终复审的活动。1983年IEEE提出的软件工程术语中给软件测试下的定义是:“使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别”。这个定义明确指出:软件测试的目的是为了检验软件系统是否满足需求。
在G.J.Myers的经典著作《软件测试技巧》中,给出了测试的定义: "程序测试是为了发现错误而执行程序的过程"。测试的目的是发现程序中的错误,是为了证明程序有错,而不是证明程序无错。在软件开发过程中,分析、设计与编码等工作都是建设性的,惟独测试是带有"破坏性",测试可视为分析、设计和编码3个阶段的"最终复审",在软件质量保证中具有重要地位。为了确保软件的质量,较理想的做法应该是对软件的开发过程,按软件工程各阶段形成的结果,分别进行严格的审查。
当设计工作完成以后,就应该着手测试的准备工作了,一般来讲,由一位对整个系统设计熟悉的设计人员编写测试大纲,明确测试的内容和测试通过的准则,设计完整合理的测试用例,以便系统实现后进行全面测试。
5.2 测试的方法
1.基本数据的测试:
在数据测试的过程中,主要根据一些数据的临界值,从数据类型,数据范围,数据长度等多方面考虑,列举了一系列的测试用例,重点测试了一些危险数据和边缘数据,尽量做到系统的可靠性。针对每一种情况,包括正常情况和非正常情况都举了很多测试用例。从用户的角度考虑,可能出现的操作错误和数据输入错误,也都进行了一系列的测试。
2.系统的测试:
在测试系统整个流程的过程中,针对系统的主要流程,进行用户的模拟操作。针对系统各个功能模块,对照功能的流程图,对每一个操作都进行了分析,得出了各种可能出现的情况,并对各种情况的不同处理进行了测试,包括正常情况和错误处理情况。对应各种错误,不管是常见的错误和可能发生的错误,都进行了相应的测试。
3.其他测试:
在系统的可移植性上,把编译成可执行文件的程序拿到不同的软件环境和硬件平台下进行测试。包括不同的操作系统(仅限于常用的几种Microsoft的Windows系列),以及常见的一些硬件环境中都进行了测试。对客户机/服务器模式的工作情况进行了测试,不只在本地机器,还在服务器上也进行了测试。在数据的安全保密性方面,也做了相应的测试。
由于测试的过程中,时间比较少,在测试的方法和测试用例的选择方面可能还存在各种不足之处,系统的某些方面难免存在不足或者漏洞,只能在现有的水平上来解决所有这些现有的问题。不过,系统的可维护性还是很高的,如果以后发现新的问题,应该可以及时解决。
通过对基本数据的测试,发现了一些问题,例如:输入数据超过范围,输入数据类型不符,数据长度不符等等,针对每一种错误,进行了相应的错误处理,在数据的安全性方面,系统增加了很多约束,例如:通过不可编辑的下拉单来防止用户输入非法的数据,通过灰化动态文本框来保证数据的安全等等。经过反复的测试和修改,基本达到了数据方面的准确性,可靠性和安全性的要求。
在测试系统的整个流程的过程中,针对系统的不同分支结构,不同功能模块,都发现了或大或小的问题,例如,退出窗口提示数据保存信息,非法用户的越权操作,以及一些逻辑顺序错误。在改正这些错误的同时,对整个系统的结构又进行了比较完善的修改,尽量做到了没有系统错误,没有异常退出等情况出现。经过多次修改并测试,基本能够达到功能完备,无异常错误,数据安全,用户权限可靠等目的。
结 论
本系统通过不断改善,已经可以正常运行,基本实现所设计的功能。系统运行稳定,操作简单,维护方便,实现对房源的管理。本系统充分考虑人性化设计,每个模块都仅可能的简化用户和操作员的输入,并有各种的系统提示,以方便用户的使用。由于本身水平有限,时间仓促,本系统还有很多不尽人意的地方。比如统计比较粗糙,设计时没有过多的考虑数据库查找效率等等。
对用户需求了解的正确与否,直接影响程序设计、系统测试、系统维护的进度和工作量。即使开发软件工作组怎么优秀,团队合作如何融洽,需求这块都是绝对不容忽视的。比如以下几种心理或现象都是比较普遍的:一是与用户合作不如编写代码有意思;二是因为开发人员觉得已经明白用户的需求了;三是“画蛇添足”,开发人员力图增加一些“用户欣赏”但需求规格说明中并未涉及的新功能;四是用户提供过于简单的规格说明;等等。这都是我们要避免的。对需求了解的错误导致的返工是软件工程的大忌。
做这个系统,首先要深入的调查需求,然后参考一些类似的系统。永远都不要觉得自己已经能够完全独立的开发一个系统了,那样只能让你裹足不前。只有结合别人的心得、示例、自己的经验、创新,你才会进步。由于以前软件工程课的学习,因此写流程图、结构图的时候相对比较轻松,有明确的方向,这就是所谓的经验。
数据库设计是一个很关键的步骤,表与表之间清晰的关系,表内部的主码设计的好坏,数据的累加数据项的添加等都是不容忽视的问题。有些可能在理论上不需要的字段,但实际应用中往往把它添上去。比如说:报考登记表模块,并不要求把考生的报名的那个时间写进去,但我们添一个时间字段,在数据库中自动添加当前系统日期。这样我们就可以轻松的统计出每天的报考人数,哪一天报考的人数最多等等,可根据这个生成日报表、周报表等等。
接下来是程序设计。首先根据先前的经验和用户的需求,搭好一个整体的框架。在这里考虑的问题为一、降低软件模块间的耦合度 ,高耦合度的系统是很难维护的。一处的修改引起另一处甚至更多处的变动。 你可以通过以下方法降低程序的耦合度:隐藏实现细节,强制构件接口定义,不使用公用数据结构,不让应用程序直接操作数据库(经验法则是:当应用程序员在写SQL代码的时候,你的程序的耦合度就已经很高了)。耦合度低的软件可以很容易被重用、维护和扩充。 二、 提高软件的内聚性,如果一个软件的模块只实现一个功能,那么该模块具有高内聚性。高内聚性的软件更容易维护和改进。 判断一个模块是否有高的内聚性,看一看你是否能够用一个简单的句子描述它的功能就行了。如果你用了一段话或者你需要使用类似“和”、“或”等连词,则说明你需要将该模块细化。 只有高内聚性的模块才可能被重用。
系统测试其实和系统设计基本是同步的,在其中得到的体会、心得在前面已经提到,这里就不重复了。
在整个系统的设计过程中,遇到过很多障碍,挫折,然而当整个系统完整的展现在自己的面前时,这种喜悦是只可意会的。
原文档内含文档内各种作图,如需原文档参考学习,请关注微信公众号
回复文章标题即可免费获取。文档仅供参考学习使用。