数据库房屋销售管理系统Word格式文档下载.docx
《数据库房屋销售管理系统Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数据库房屋销售管理系统Word格式文档下载.docx(24页珍藏版)》请在冰点文库上搜索。
4预定房屋信息
客户可以进行房屋的预定,预定包括预定流水号,客户编号,员工号,房屋编号,预付金额,未付金额,预定时间。
5购买的基本信息
客户可以购买房屋,购买包括购买流水号,客户编号,员工号,房屋编号,付款金额,购买时间。
付款金额一般等于房屋价格。
1.2用户对系统的要求
1.2.1房屋销售管理人员
①信息要求
房屋销售管理人员能查询上面提到的客户、销售人员、房屋的所有相关信息,包括预定房屋的基本信息,购买房屋的基本信息。
以利于对整个销售楼盘的全面管理。
②处理要求
当客户的信息发生变化时,房屋销售管理人员能对其进行修改。
比如,客户更换手机号,或其他变更,能修改客户的信息。
当房屋的信息放生变化时,房屋销售管理人员能对其进行修改。
比如,房屋降价,房屋销售管理人员能对价格进行修改。
当销售人员的信息放生变化时,如升职,房屋销售管理人员能对其进行修改。
③安全性与完整性要求
安全性要求
1.系统应设置访问用户的标识以鉴别是否是合法用户,并要求合法用户设置其密码,保证用户身份不被盗用;
2.系统应对不同的数据设置不同的访问级别,限制访问用户可查询和处理数据的类别和内容;
3.系统应对不同用户设置不同的权限,区分不同的用户,如区分房屋销售人员和房屋销售管理人员。
完整性要求
1.各种信息记录的完整性,信息记录内容不能为空;
2.各种数据间相互的联系的正确性;
3.相同的数据在不同记录中的一致性。
1.2.2房屋销售人员
1信息要求
本楼盘的房屋销售人员能所有楼盘的信息,能查询“待售”状态的房屋信息,能查询客户的基本信息、修改客户的信息。
能查询自己的销售记录。
能够进行预定、购买操作。
2处理要求
当客户的信息发生变化时,房屋销售人员能对其进行修改。
客户购买/预定房屋时,销售人员能添加预定/购买记录。
1.2.3系统数据处理
1状态更改
当客户预定房屋时,销售人员添加预定记录后,系统能自动将预定房屋的状态从“待售”修改为“已预订”。
当客户购买房屋时,销售人员添加购买记录后,系统能自动将购买房屋的状态从“待售”或“已预订”修改为“已售出”。
2数据计算
当客户预定房屋时,销售人员添加记录后,系统能自动根据预付金额和房屋价格计算出未付金额。
2.E-R图及关系模式:
2.1E-R图:
根据需求分析,画出系统E-R图:
2.2关系模式:
将E-R图转换为关系模式,有下划线的为主键或外键:
客户(客户编号,姓名,性别,身份证号,联系电话)
员工(员工号,姓名,性别,职位,身份证号,联系电话)
房屋(房屋编号,户型,面积,价格,栋,单元,号,房屋状态)
预定(流水号,客户编号,员工号,房屋编号,预付金额,预定时间)
购买(流水号,客户编号,员工号,房屋编号,购买金额,购买时间)
3.具体实现
3.1建立数据库
createdatabase房屋销售管理
on
(name=house_data,
filename='
D:
\house.mdf'
size=10,
maxsize=50,
filegrowth=5
)
logon
(name=house_log,
\house.ldf'
size=5,
maxsize=25,
建立一个名为房屋销售管理的数据库
3.2创建各实体表及关系表
客户Customer:
属性
属性名
类型
长度
约束
客户编号
CNo
char
20
主键
姓名
CName
10
非空
性别
CSex
4
‘男’或‘女’
年龄
CAge
int
大于零
联系方式
CTel
身份证号
CId
18
18位数字
createtableCustomer
(CNochar(20)constraintC_primprimarykey,
CNamechar(10)notnull,
CSexchar(4)constraintSexnotnullcheck(CSex='
男'
orCSex='
女'
),
CAgeintconstraintC_Agenotnullcheck(CAge>
0),
CTelchar(20)notnull,
CIdchar(18)constraintLEN_CIDcheck(len(CId)=18)
员工Staff:
员工号
SNo
SName
SSex
SAge
部门
SDep
职位
SPost
STel
SId
createtableStaff
(SNochar(20)constraintS_primprimarykey,
SNamechar(10)notnull,
SSexchar(4)constraintSexnotnullcheck(SSex='
orSSex='
SAgeintconstraintS_Agenotnullcheck(SAge>
SDepchar(20)notnull,
SPostchar(20)notnull,
STelchar(20)notnull,
SIdchar(18)constraintLEN_SIDcheck(len(SId)=18)
房屋House:
房屋编号
HNo
小区
HA
栋
HB
号
HC
户型
HType
面积
HSize
房屋状态
HState
‘待售'
或‘已预订’或‘已售出’
价格
HPrice
float
createtableHouse
(HNochar(20)constraintH_primprimarykey,
HAchar(20)notnull,
HBchar(10)notnull,
HCchar(10)notnull,
HTypechar(20)notnull,
HSizeintconstraintH_Sizenotnullcheck(HSize>
HStatechar(20)constraintH_Statenotnullcheck(HState='
待售'
orHState='
已预订'
已售出'
)default'
HpricefloatconstraintH_Pricenotnullcheck(HPrice>
0)
预定Reserve:
预定流水号
RNo
外键
预付金额
RMoney
未付金额
RRest
大于或等于零
预定日期
RDate
其中未付金额由存储过程根据预付金额和房屋价格自动计算填入
createtableReserve
(RNochar(20)constraintR_primprimarykey,
CNochar(20)constraintR_C_primforeignkeyreferencesCustomer(CNo),
SNochar(20)constraintR_S_primforeignkeyreferencesStaff(SNo),
HNochar(20)constraintR_H_primforeignkeyreferencesHouse(HNo),
RMoneyfloatconstraintR_Moneynotnullcheck(RMoney>
RRestfloatconstraintR_Restnotnullcheck(RRest>
=0)default0,
Rdatechar(10)notnull)
购买Buy:
购买流水号
BNo
主键
非空
购买金额
BMoney
购买日期
BData
createtableBuy
(BNochar(20)constraintB_primprimarykey,
CNochar(20)constraintB_C_primforeignkeyreferencesCustomer(CNo),
SNochar(20)constraintB_S_primforeignkeyreferencesStaff(SNo),
HNochar(20)constraintB_H_primforeignkeyreferencesHouse(HNo),
BMoneyfloatconstraintB_Moneynotnullcheck(BMoney>
Bdatechar(10)notnull
3.3创建视图:
所有客户信息视图(客户编号,名字,性别,年龄,联系方式,身份证号)
createviewCustomerView(CNo,CName,CSex,CAge,CTel,CId)
as
selectCNo,CName,CSex,Cage,CTel,CId
FROMCustomer
所有员工信息视图(员工号,名字,性别,年龄,部门,职位,联系方式,身份证号)
createviewStaffView(SNo,SName,SSex,SAge,SDep,SPost,STel,SId)
selectSNo,SName,SSex,SAge,SDep,SPost,STel,SId
fromStaff
待售房屋视图(房屋编号,小区,栋,号,户型,面积,价格)
createviewForSaleHouse(HNo,HA,HB,HC,HType,HSize,HPrice)
selectHNo,HA,HB,HC,HType,HSize,HPrice
fromHouse
whereHState='
预定房屋信息视图(预定流水号,客户编号,客户名字,客户联系方式,员工号,员工名字,员工联系方式,房屋编号,小区,栋,号,户型,面积,价格,预定金额,未付金额,预定时间)
createviewReserveView(RNo,CNo,CName,CTel,SNo,SName,STel,HNo,HA,HB,
HC,HType,HSize,HPrice,RMoney,RRest,Rdate)
selectRNo,Reserve.CNo,CName,CTel,Reserve.SNo,SName,STel,Reserve.HNo,HA,HB,HC,
HType,HSize,HPrice,RMoney,RRest,Rdate
fromReserve,Customer,Staff,House
whereReserve.CNo=Customer.CNoandReserve.SNo=Staff.SNoandReserve.HNo=House.HNo
购买房屋信息视图(购买流水号,客户编号,客户名字,客户联系方式,员工号,员工名字,员工联系方式,房屋编号,小区,栋,号,户型,面积,价格,购买金额,购买时间)
createviewBuyView(BNo,CNo,CName,CTel,SNo,SName,STel,HNo,HA,HB,HC,HType,HSize,HPrice,BMoney,Bdate)
selectBNo,Buy.CNo,CName,CTel,Buy.SNo,SName,STel,Buy.HNo,HA,HB,HC,HType,HSize,HPrice,BMoney,Bdate
fromBuy,Customer,Staff,House
whereBuy.CNo=Customer.CNoandBuy.SNo=Staff.SNoandBuy.HNo=House.HNo
3.4存储过程:
预定房屋:
createprocedureReserveHouse
(@RNochar(20),
@CNochar(20),
@SNochar(20),
@HNochar(20),
@RMoneyfloat,
@RDatechar(10)
as
if((selectHouse.HStatefromHousewhereHouse.HNo=@HNo)='
begin
insertintoReserve(RNo,CNo,SNo,HNo,RMoney,Rdate)values(@RNo,@CNo,@SNo,@HNo,@RMoney,@RDate)
updateHouse
setHState='
已预定'
fromHouse
whereHouse.HNo=@HNo
updateReserve
setRRest=Hprice-RMoney
fromHouse,Reserve
whereRNo=@RNoandHouse.HNo=@HNo
end
else
begin
print'
该房屋已预定或已售出'
功能:
根据HNo判断房屋状态是不是‘待售’状态,若是,则在预定表中插入信息;
否则,则提示“该房屋已预定或已售出”,并放弃插入操作。
购买房屋:
createprocedureBuyHouse
(@BNochar(20),
@BDatechar(10)
if((selectHouse.HStatefromHousewhereHouse.HNo=@HNo)!
='
insertintoBuy(BNo,CNo,SNo,HNo,Bdate)values(@BNo,@CNo,@SNo,@HNo,@BDate)
setHState='
fromHouse
whereHouse.HNo=@HNo
deletefromReserve
whereReserve.HNo=@HNo
else
该房屋已售出'
根据HNo判断房屋状态是不是‘已售出’状态,若为否,则在购买表中插入信息,并在预定表中删除对应信息;
否则,则提示“该房屋已售出”,并放弃插入操作。
插入客户信息:
createprocedureInsertCustomer
(@CNochar(20),
@CNamechar(10),
@CSexchar(4),
@CAgeint,
@CTelchar(20),
@CIdchar(18)='
无'
insertintoCustomervalues(@CNo,@CName,@CSex,@CAge,@CTel,@CId)
在客户表中插入新的客户信息。
插入员工信息:
createprocedureInsertStaff
(@SNochar(20),
@SNamechar(10),
@SSexchar(4),
@SAgeint,
@SDepchar(20),
@SPostchar(20),
@STelchar(20),
@SIdchar(18)
insertintoStaffvalues(@SNo,@SName,@SSex,@SAge,@SDep,@SPost,@STel,@SId)
在员工表中插入新的员工信息。
插入房屋信息:
createprocedureInsertHouse
(@HNochar(20),
@HAchar(20),
@HBchar(10),
@HCchar(10),
@HTypechar(20),
@HSizeint,
@HStatechar(20),
@Hpricefloat
insertintoHousevalues(@HNo,@HA,@HB,@HC,@HType,@HSize,@HState,@HPrice)
在房屋表中插入新的房屋信息。
3.5触发器:
触发器1:
createtriggerNewReserveHouseonReserve
insteadofinsert
ifnotexists
(select*frominsertedwhereCNoin(selectCNofromCustomer))
print'
客户表中没有该客户信息,拒绝插入!
'
rollbacktransaction
保证在预定表中插入新记录时,客户信息必须已经存在于客户表中。
触发器2:
createtriggerNewBuyHouseonBuy
保证在购买表中插入新记录时,客户信息必须已经存在于客户表中。
触发器3:
createtriggerDelRonReserve
afterdelete
if((selectHStatefromHousewhereHouse.HNoin(selectHNofromdeleted))='
deletefromCustomer
whereCustomer.CNoin(selectCNofromdeleted)
updateHouse
setHState='
whereHouse.HNoin(selectHNofromdeleted)
删除预定表中某一个预定记录时,如果是因为客服付清未付款,购买了房屋,则只进行原操作;
如果是因为客户取消预定,则同时删除客户表中此客户,并将此房屋状态重新改为‘待售’。
触发器4:
createtriggerDelBonBuy
删除购买表中某一个购买记录时,同时删除客户表中此客户,并将此房屋状态重新改为‘待售’。
三.实例演示:
添加数据:
用InsertCustomer存储过程在Customer表填入数据:
用InsertStaff存储过程在Staff表填入数据:
用InsertHouse存储过程在InsertHouse表填入数据:
预定和购买房屋:
用ReserveHouse存储过程添加预定房屋信息:
(输入参数中没有未付金额RRest,RRest由存储过程自动计算填入)
预定H0002和H0005号房屋
用BuyHouse存储过程添加购买房屋信息:
购买H0007和H