二手房中介管理系统需求分析Prepared on 24 November 2020呼伦贝尔学院计算机科学与技术学院数据库系统开发与应用课程设计题目:____二手房中介管理系统____学生姓名:__________梅广丽__________学号:______________专业班级:_________软件工程_________任课教师:___________白杨___________完成时间:______2017年9月14日_____目录第1章需求分析1.1 总体需求简介随着住房制度改革不断深化和居民收入水平的提高,住房成为新的消费热点。
1998以后,随着住房实物分配制度的取消和按揭政策的实施,房地产投资进入平稳快速发展时期,房地产业成为经济的支柱产业之一。
2003年以来,房屋价格持续上扬,大部分城市房屋销售价格上涨明显。
随之而来国家出台了多项针对房地产行业的调控政策,希望能引导房地产市场的健康发展。
而房屋中介行业是房地产业的重要组成部分,房屋中介贯穿在房地产业经济运行的全过程之中,为房地产业的生产、流通和消费提供了多元化的中介服务。
随着科学技术的飞速发展,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
城市生活当中房屋的租赁买卖十分的频繁。
一套行之有效的房屋中介系统将给房屋中介商和房屋交易双方带来相当多的便利。
正是这样的需求,我们着力为房屋中介行业定制这样一个计算机管理软件。
力求为用户提供简洁、易操作的界面,快速完成房源检索,房屋预定,交易管理。
1.2 功能分析通过对系统的分析及对其他网店的参考,基本确定了“网上中介”的基本功能以及基本性能的基本需求。
功能需求:这方面的需求指定系统必须提供的服务,通过需求分析应该划分出系统必须完成的所有功能。
其功能如下:(1)用户管理,主要有用户注册、修改用户信息。
(2)房屋求购信息管理,主要有登记求购者信息、修改信息、删除信息。
(3)房屋出租信息管理,主要包括登记出租者信息、修改信息、删除信息。
(4)管理员管理,主要有筛选信息、修改信息、通知用户、删除信息、订单处理。
1.3 组织结构分析1.3.1 管理员系统功能模块图本系统中,管理员是系统中拥有最高权限的人,管理员可以进行用户信息筛选、修改信息、通知用户、删除信息等。
下图是对管理员功能的组织结构分析图,如下图1-1 管理员功能组织结构图。
1.4 业务流程图1.4.1 订单管理业务流程图在用户确认订单信息并提交订单之后,此时,本系统的管理员可登入本系统,对订单信息进行管理,具体业务流程图如下图1-5 管理员订单管理流程图。
(2)二手房中介管理系统房屋求购流程图1.6 数据字典1.6.1 数据项数据项名:userID含义说明:每个用户的代号,用来对所有用户加以区分。
别名:用户编号数据类型:长整型长度:24取值范围:所有字母、数字和下划线。
数据项名:user_name含义说明:用来对每个用户加以区分和标示。
别名:用户名数据类型:字符型长度:10取值范围:所有汉字或英语数据项名:user_sex含义说明:每个用户的性别进行区分。
别名:用户性别数据类型:字符型长度:2取值范围:男或女:数据项名:user_email含义说明:可以传送通知信息及找回密码。
别名:邮箱数据类型:字符型长度:50取值范围:所有自然数、字母、下划线和字符数据项名:user_password含义说明:保证用户信息安全别名:密码数据类型:字符型长度:10取值范围:所有英文字母及所有自然数数据项名:user_phone含义说明:用来通知用户别名:电话数据类型:长整型长度:22取值范围:所有自然数数据项名:guanID含义说明:对每个管理员加以标示和区分别名:管理员编号数据类型:整型长度:10取值范围:所有自然数数据项名:guan_name含义说明:用来对每个管理员加以区分和标示数据类型:字符型长度:18取值范围:所有汉字和英语1.6.2 数据结构1.6.3 数据流名称:登记注册简述:管理员登记用户信息数据来源:求购房屋或出租房屋的客户数据去向:用户登记表数据组成:用户编号、用户姓名、性别、邮箱、密码、地址、电话名称:求购信息简述:用户发布房屋求购信息数据来源:求购房屋的客户数据去向:房屋求购登记表数据组成:求购编号、求购姓名、电话、房屋种类、面积、备注、地址、求购价格、求购情况名称:出租信息简述:用户发布房屋出租信息数据来源:出租房屋的客户数据去向:房屋出租登记表数据组成:出租编号、出租姓名、电话、房屋种类、面积、备注、地址、出租价格、出租情况1.6.4 数据存储数据存储名称:用户登记来源:由用户登录注册产生组成:用户编号、用户姓名、性别、邮箱、密码、地址、电话数据存储名称:房屋求购信息登记来源:由用户登录填写房屋求购信息产生组成:求购编号、求购姓名、电话、房屋种类、面积、备注、地址、求购价格、求购情况数据存储名称:房屋出租信息登记来源:由用户登录填写房屋出租信息产生组成:出租编号、出租姓名、电话、房屋种类、面积、备注、地址、出租价格、出租情况1.6.5 数据处理处理名称:房屋求购信息处理流入数据流:用户求购信息统计表流出数据流:合适的房屋出租信息周期:3次/周处理逻辑:用户将房屋求购信息表提交给管理员,管理员审查,并与房屋出租信息表对比,筛选出合适的房屋出租客户,将信息记录,通知用户。
处理名称:房屋出租信息处理流入数据流:用户出租信息统计表流出数据流:合适的房屋出租信息周期:3次/周处理逻辑:用户将房屋出租信息表提交给管理员,管理员审查,并与房屋求购信息表对比,筛选出合适的房屋求购客户,将信息记录,通 知用户。
第2章 概念结构设计2.1 系统局部E-R 图1. 如图 为用户实体其属性分别为:用户编号,姓名,性别,油箱,密码,地址,联系电话3.如图 为出租等信息统计表实体其属性分别为:出租编号,姓名,电话,房屋种类,面积,地址,备注,出租价格,出租情况4.如图为管理员实体其属性分别为:管理员编号,管理员姓名系统全局E-R 图如图 为二手房中介管理系统实体之间的关系第3章 逻辑结构设计3.1 E R 图到关系模式的转换在概念设计阶段得到的数据模型,是独立于具体DBMS 产品的信息模型。
在逻辑设计阶段就是将这种模型进一步转化为某一种(某些类)DBMS 产品支持的数据模型。
目前大部分的流行的数据库管理系统(SQL Server 、Sybase 、Oracle 、DB2等)基本上都是基于关系的数据模型,包括该系统将采用的SQL Server2000数据库系统,因此,应将概念设计阶段的E-R 图模型转化为关系数据模型。
首先,管理员和出租求购信息是一对多联系,用户与管理员也是一对多联系,根据他们的关系分别设计成如下的关系模式:用户注册出租信息,求购信息是一对一关系管理员管理出租求购信息是一对多关系管理员(管理员编号,管理员姓名,求购编号,出租编号,用户编号)求购信息(求购编号,管理员编号,姓名,电话,房屋种类,面积,地址,备注,求购价格,求购情况)出租信息(出租编号,管理员编号,姓名,电话,房屋种类,面积,地址,备注,出租价格,出租情况)管理员通知用户是一对多关系用户(用户编号,管理员编号,姓名,性别,油箱,密码,地址,联系电话,安全问题)3.2 关系规范化在提出关系模式后,我们必须在规范化和实际要求进行优化,这实际上是一个权衡的过程。
如果设计没有完全规范化,如可能用于决策支持(与需要大量更新的事务处理相对)的数据库(如数据仓库)则可能没有冗余更新,而且可能对查询更易于理解和更高效。
不过,在数据库应用程序内,未规范化的数据在设计过程更需要注意。
一般的策略是以规范化设计为出发点,然后出于特定因素有条件地非规范化某些表,以达到系统总体的优化目的。
首先,需要我们确定上面建立的关系模式中的函数依赖,一般在作需求分析时就了解到一些数据项的依赖关系,如教师的编号决定了教师的姓名和其它的数据项信息,而实体间的联系本身也是反映了一种函数依赖关系,但是这不是研究的对象,我们针对的是在一个关系模式中的函数依赖对象。
其次,对上一步确立的所有函数依赖进行检查,判别是否存在部分函数依赖以及传递函数依赖,针对有的依赖通过投影分解,消除在一个关系模式中存在的部分函数依赖和传递函数依赖。
大部分数据库系统只要满足第三关系范式就可以,这也是我们这里规范化的基本要求。
由于需求分析阶段的方法得当,经过简单的分析可以看出,上述所有关系中每个数据项都是基本的,任何非主属性都不存在对主码的部分依赖,也不存在非主属性存在着对主码的传递依赖。
可见,以上所有的关系模式都属于3NF。
在实际的应用中,关系模式的规范化程度并不是越高越好,因为在关系模式的规范化提升过程中,必须进行着将一个关系模式分解成为多个关系模式的过程。
这样,在以后执行查询时,如果需要相关的信息,就必须作多个表的连接方能达到查询的目的,这无疑给系统增加一定的开销,特别存在很多用户同时访问或者关系中存在许多元组等因素其负担会越加明显。
为了兼顾性能的需要,在适当的时候可能需要对相关程度比较高的一些关系模式进行合并处理,或者在关系模式中增加相关程度比较高的属性等。
这是有可能选择第二范式甚至第一范式。
为了满足实际应用对系统的系统要求,必须对使用系统的用户增加登录的验证口令,因此需要在用户和管理员的关系模式中增加口令属性。
自然地,如果根据其它的安全应用要求,还可以设置用户的登录地点如通过增加IP属性来达到目的等。
第4章数据库物理设计及数据库实施4.1 数据库的存储结构和方法(1)用户表(2)求购信息表(3) 出租信息表(4) 管理员信息表 (5) 管理信息表4.2 数据库的创建创建二手房中介管理系统的数据库'ershoufang' create database ershoufang4.3 表的创建及完整性4.3.1 表的创建1.创建用户表create table用户表(userid varchar(20)primary key,userpwd varchar(20)not null,username varchar(16)not null,usersex char(2)check (usersex='男'or usersex='女')default'男', email varchar(30),u_dizhi varchar(40),u_phone varchar(22))2.创建求购信息表create table求购信息表(q_qiuid varchar(20)primary key,q_phone varchar(22)not null,q_zhong char(20),q_mianji varchar(18),q_dizhi varchar(50),q_zhu varchar(28),q_price varchar(40),q_qing varchar(30),userid varchar(20)foreign key references用户表(userid))3.创建出租信息表create table出租信息表(c_qiuid varchar(20)primary key,c_phone varchar(22)not null,c_zhong char(20),c_mianji varchar(18),c_dizhi varchar(50),c_zhu varchar(28),c_price varchar(40),c_qing varchar(30),userid varchar(20)foreign key references用户表(userid))4.创建管理员信息表create table管理员信息表(g_id varchar(20)primary key,g_name varchar(16)not null,)5.创建管理信息表create table管理信息表(g_id varchar(20)foreign key references管理员信息表(g_id),c_qiuid varchar(20)foreign key references出租信息表(c_qiuid), q_qiuid varchar(20)foreign key references求购信息表(q_qiuid), Housestate varchar(6))4.3.2 表的查询1.select c_qiuid,c_mianji,c_pricefrom出租信息表group by c_price,c_zhong,c_qiuid,c_mianji2.select c_qiuid,c_price,c_mianji,avg(c_price),sum(c_mianji)from出租信息表group by c_qiuid,c_mianji,c_price3.select*from出租信息表where c_qiuid='10101'4.select*from求购信息表5.select*from求购信息表,用户表where求购信息表.userid=用户表.userid6.select*from用户表,出租信息表where出租信息表.userid=用户表.userid7.select用户表.useridfrom求购信息表,用户表where求购信息表.userid=用户表.userid and q_price>22508.select用户表.userid from用户表where username=(select username from用户表where u_phone=)9.select用户表.userid,username,求购信息表.q_price,avg(q_price),sum(q_mianji)as平均价格from求购信息表,用户表group by用户表.userid,q_price,username10.select c_mianji from出租信息表group by c_qiuid,c_mianjihaving count(c_qiuid)>=14.4 视图、索引的创建与应用1.创建用户表视图V用户表create view V用户表asselect用户表.userid,username,userpwd,c_qiuidfrom用户表,出租信息表where用户表.userid=出租信息表.userid2.创建求购信息表视图V求购信息表create view V求购信息表asselect用户表.userid,username,userpwd,q_qiuid,q_phone,q_zhong,q_dizhi,q_price from用户表,求购信息表where用户表.userid=求购信息表.userid and u_phone=q_phone3.创建出租信息表视图V出租信息表create view V出租信息表asselect用户表.userid,username,userpwd,c_qiuid,c_phone,c_mianji,c_pricefrom用户表,出租信息表where用户表.userid=出租信息表.useridand c_mianji=(select max(c_mianji)from出租信息表)4.创建管理员信息表视图V管理员信息表create view V管理员信息表asselect*from管理员信息表where g_id='301001'5.创建管理信息表视图V管理信息表create view V管理信息表asselect管理员信息表.g_id,g_name,用户表.userid,username,出租信息表.c_qiuid,c_mianji,c_pricefrom用户表,出租信息表,管理信息表,管理员信息表where用户表.userid=出租信息表.userid and出租信息表.c_qiuid=管理信息表.c_qiuid and c_price=any(select max(c_price)from出租信息表)4.5 存储过程、触发器的创建与应用1.创建出租信息表存储过程c_chuzucreate procedure c_chuzu@x decimal,@y decimalasselect*from求购信息表where q_price between @x and @ygoexec c_chuzu4000,100002.创建管理信息表存储过程g_guanlicreate procedure g_guanli@dg varchar(20),@gy varchar(20)output,@zh varchar(20)outputasselect @gy=g_id,@zh=c_qiuidfrom管理信息表where q_qiuid=@dggodeclare @dg varchar(20), @gy varchar(20),@zh varchar(20)set @dg='20104'exec g_guanli@dg ,@gy output,@zh outputprint'求购编号:'+ @dg+' 管理员编号:'+ @gy +' 出租编号:'+cast(@zh as varchar(20))3.创建用户表存储过程u_userscreate procedure u_users@xh char(20)asselect用户表.userid,username,出租信息表.c_phone,c_qing from用户表,出租信息表where用户表.userid=出租信息表.userid and用户表.userid=@xh goexec u_users@xh=4.创建用户表触发器tr_delete_yongcreate trigger tr_delete_yongon用户表after delete asupdate出租信息表set c_qiuid=nullwhere useridin(select c_qiuid from deleted)5.创建出租信息表触发器tr_insert_cucreate trigger tr_insert_cuon出租信息表after insert asif not exists(select userid from用户表where useridin(select userid from inserted))beginrollback transactionend6.创建管理信息表触发器tr_update_qiucreate trigger tr_update_qiuon管理信息表after update asdeclare @ckh varchar(20)if update(q_qiuid)beginif not exists(select*FROM求购信息表where q_qiuid =(select q_qiuid from inserted))beginrollback transactionendelsebeginselect @ckh=q_qiuid from insertedif @ckh='20101'update求购信息表set q_price=q_price*where q_qiuid=(select q_qiuid from inserted)endend4.6 用户角色与权限管理本数据库用户角色有普通用户和管理员。