数据库房屋销售管理系统.docx
- 文档编号:26903895
- 上传时间:2023-06-23
- 格式:DOCX
- 页数:29
- 大小:174.57KB
数据库房屋销售管理系统.docx
《数据库房屋销售管理系统.docx》由会员分享,可在线阅读,更多相关《数据库房屋销售管理系统.docx(29页珍藏版)》请在冰豆网上搜索。
数据库房屋销售管理系统
数据库课程设计
房屋销售管理系统
姓名:
胡玖龙
号:
学201320070142
学院:
信息工程学院
专业:
计算机科学与技术
班级:
1320701
指导教师:
李荣
年月日2015114
一、课程设计的目的和意义
《数据库原理及应用课程设计》是实践性教学环节之一,是《数据库原理及应用》课程
的辅助教学课程。
通过课程设计,使学生掌握数据库的基本概念,结合实际的操作和设计,
巩固课堂教学内容,使学生掌握数据库系统的基本概念、原理和技术,将理论与实际相结合,
应用现有的数据建模工具和数据库管理系统软件,规范、科学地完成一个小型数据库的设计
与实现,把理论课与实验课所学内容做一综合,并在此基础上强化学生的实践意识、提高其
实际动手能力和创新能力。
要求:
通过设计一完整的数据库,使学生掌握数据库设计各阶段的输入、输出、设计环境、目
标和方法。
熟练掌握两个主要环节——概念结构设计与逻辑结构设计;熟练的使用SQL语言
实现数据库的建立、应用和维护。
二、设计正文
1.需求分析
1.1基本功能需求
客户购买或预定房屋,房屋销售人员根据用户的需求为用户办理相关手续。
购销管理包含以下几方面
的信息。
①客户基本信息
客户在购买或预定房屋的时候,每位用户都有唯一的编号,客户的基本信息包括姓名、性别、年龄、
联系方式、身份证号。
②员工基本信息
每位员工在入职的时候有唯一的员工号,根据分工的不同,还有工作部门及职位这个属性。
当然还有
姓名、性别、联系方式、年龄、身份证号这些基本属性。
③房屋基本信息
每个房屋有唯一的房屋编号,基本信息包含房屋的面积、户型、小区、栋、号、价格和状态,状态分
为“待售”、“已预订”和“已售出”。
④预定房屋信息
客户可以进行房屋的预定,预定包括预定流水号,客户编号,员工号,房屋编号,预付金额,未付金
额,预定时间。
⑤购买的基本信息
客户可以购买房屋,购买包括购买流水号,客户编号,员工号,房屋编号,付款金额,购买时间。
付
款金额一般等于房屋价格。
.
1.2用户对系统的要求
1.2.1房屋销售管理人员
①信息要求
房屋销售管理人员能查询上面提到的客户、销售人员、房屋的所有相关信息,包括预定房屋的基本信
息,购买房屋的基本信息。
以利于对整个销售楼盘的全面管理。
②处理要求
当客户的信息发生变化时,房屋销售管理人员能对其进行修改。
比如,客户更换手机号,或其他变更,
能修改客户的信息。
当房屋的信息放生变化时,房屋销售管理人员能对其进行修改。
比如,房屋降价,房屋销售管理人员
能对价格进行修改。
当销售人员的信息放生变化时,如升职,房屋销售管理人员能对其进行修改。
③安全性与完整性要求
安全性要求
1.系统应设置访问用户的标识以鉴别是否是合法用户,并要求合法用户设置其密码,保证用户身
份不被盗用;
2.系统应对不同的数据设置不同的访问级别,限制访问用户可查询和处理数据的类别和内容;
3.系统应对不同用户设置不同的权限,区分不同的用户,如区分房屋销售人员和房屋销售管理人
员。
完整性要求
1.各种信息记录的完整性,信息记录内容不能为空;
2.各种数据间相互的联系的正确性;
3.相同的数据在不同记录中的一致性。
1.2.2房屋销售人员
①信息要求
本楼盘的房屋销售人员能所有楼盘的信息,能查询“待售”状态的房屋信息,能查询客户的基本信息、
修改客户的信息。
能查询自己的销售记录。
能够进行预定、购买操作。
②处理要求
当客户的信息发生变化时,房屋销售人员能对其进行修改。
购买记录。
/预定房屋时,销售人员能添加预定/客户购买.
1.2.3系统数据处理
①状态更改
当客户预定房屋时,销售人员添加预定记录后,系统能自动将预定房屋的状态从“待售”修改为
“已预订”。
当客户购买房屋时,销售人员添加购买记录后,系统能自动将购买房屋的状态从“待售”或“已
预订”修改为“已售出”。
②数据计算
当客户预定房屋时,销售人员添加记录后,系统能自动根据预付金额和房屋价格计算出未付金额。
2.E-R图及关系模式:
图:
E-R2.1.
根据需求分析,画出系统E-R图:
2.2关系模式:
将E-R图转换为关系模式,有下划线的为主键或外键:
客户(客户编号,姓名,性别,身份证号,联系电话)
员工(员工号,姓名,性别,职位,身份证号,联系电话)房屋(房屋编号,户型,面积,价格,栋,单元,号,房屋状态)预定(流水号,客户编号,员工号,房屋编号,预付金额,预定时间)购买(流水号,客户编号,员工号,房屋编号,购买金额,购买时间)
具体实现3.
建立数据库3.1
房屋销售管理createdatabaseon
name=house_data,(filename='D:
\house.mdf',size=10,maxsize=50,filegrowth=5)onlog
name=house_log,(filename='D:
\house.ldf',size=5,maxsize=25,filegrowth=5)
建立一个名为房屋销售管理的数据库
3.2创建各实体表及关系表
客户:
Customer
约束长度属性名属性类型客户编主cha2CN非姓CNam1char性‘男'或‘女chaCSe大于年inCAge
联系方非2chaCTel身份证1位数1CIcharCustomercreatetablekey,primarychar(20)constraint(C_primCNo
null,notCNamechar(10)
男女'),ornullcheck(CSex='CSex=''CSexchar(4)constraintSexnot(CAge>0),nullcheckCAgeintconstraintC_Agenotnull,notCTelchar(20)check(len(CId)=18)CIdchar(18)constraintLEN_CID).
员工:
Staff
约束类型长度属性属性名主键员工号20charSNo
非空姓名10SNamechar
‘男'或‘女'性别SSex4char大于零年龄SAgeint
非空部门char20SDep非空职位20charSPost联系方式非空20charSTel
位数字18身份证号charSId18Staffcreatetablekey,S_primprimarychar(20)constraint(SNonull,notSNamechar(10)男女'),check(SSex='SSex=''orchar(4)constraintSexnotnullSSex
(SAge>0),checknotnullSAgeintconstraintS_Agenull,notSDepchar(20)null,notSPostchar(20)null,notSTelchar(20)
check(len(SId)=18)LEN_SIDchar(18)constraintSId
)房屋:
House
约束长度类型属性名属性房屋编号主键charHNo20
非空小区HAchar20非空栋HB10char非空号charHC10
户非chaHTyp20面大于inHSiz或‘已‘待'
房屋状订'或‘已2HStatchar出'大于价HPricfloa
Housetablecreate
key,primaryH_prim(HNochar(20)constraintnull,char(20)notHA
null,char(10)notHB
null,notHCchar(10)null,notHTypechar(20)check(HSize>0),nullH_SizenotHSizeintconstraint
待售已预HState='orcheck(HState=''HStatechar(20)constraintH_Statenotnull订已售出待售',''orHState='')defaultcheck(HPrice>0)nullnotH_PriceconstraintfloatHprice
)
预定:
Reserve
长度属性名属性类型预定流水号20RNochar客户编号CNochar20姓名char10SName房屋编号charHNo20预付金额floatRMoney未付金额floatRRest预定日期10charRDate
约束主键非
非外键大于
大于或等于非其中未付金额由存储过程根据预付金额和房屋价格自动计算填入Reservecreatetablekey,R_primprimary(RNochar(20)constraint
Customer(CNo),referencesforeignkeyCNochar(20)constraintR_C_primStaff(SNo),referencesforeignkeySNochar(20)constraintR_S_primHouse(HNo),referencesforeignkeyHNochar(20)constraintR_H_prim
check(RMoney>0),nullR_MoneynotRMoneyfloatconstraint
0,defaultcheck(RRest>=0)constraintR_RestnotnullRRestfloat
)nullnotchar(10)Rdate购买Buy:
属性属性名购买流水号客户编号姓名房屋编号购买金额BMoney购买日期
BNoCNoSNameHNoBData
约长类主cha20
非2char非cha10外cha20
非float非1chaBuycreatetablekey,B_primBNochar(20)constraint(primaryCustomer(CNo),referencesforeignkeyCNochar(20)constraintB_C_primStaff(SNo),referenceskeySNochar(20)constraintB_S_primforeignHouse(HNo),referencesB_H_primforeignkeychar(20)HNoconstraint0,default0check(BMoney>=)nullnotconstraintfloatBMoneyB_Money
nullBdatechar(10)not).
3.3创建视图:
所有客户信息视图(客户编号,名字,性别,年龄,联系方式,身份证号)
CTel,CId)viewCustomerView(CNo,CName,CSex,CAgecreate
asCNo,CName,CSex,Cage,CTel,CIdselectCustomerFROM
所有员工信息视图(员工号,名字,性别,年龄,部门,职位,联系方式,身份证号)
StaffView(SNo,SName,SSex,SAge,SDep,SPost,STel,SId)viewcreate
asSNo,SName,SSex,SAge,SDep,SPost,STel,SIdselectStafffrom
待售房屋视图(房屋编号,小区,栋,号,户型,面积,价格)
(HNo,HA,HB,HC,HType,HSize,HPrice)viewForSaleHousecreate
asHNo,HA,HB,HC,HType,HSize,HPriceselect
Housefrom待售'HState='where
预定房屋信息视图(预定流水号,客户编号,客户名字,客户联系方式,员工号,员工名字,员工联系方
式,房屋编号,小区,栋,号,户型,面积,价格,预定金额,未付金额,预定时间)
ReserveView(RNo,CNo,CName,CTel,SNo,SName,STel,HNo,HA,HB,viewcreate
HC,HType,HSize,HPrice,RMoney,RRest,Rdate)asRNo,Reserve.CNo,CName,CTel,Reserve.SNo,SName,STel,Reserve.HNo,HA,HB,HC,selectHType,HSize,HPrice,RMoney,RRest,RdateReserve,Customer,Staff,HousefromandReserve.SNo=Staff.SNowhereReserve.CNo=Customer.CNoandReserve.HNo=House.HNo
购买房屋信息视图(购买流水号,客户编号,客户名字,客户联系方式,员工号,员工名字,员工联系方
式,房屋编号,小区,栋,号,户型,面积,价格,购买金额,购买时间)
viewcreate
BuyView(BNo,CNo,CName,CTel,SNo,SName,STel,HNo,HA,HB,HC,HType,HSize,HPrice,BMoney,Bdate)asselectBNo,Buy.CNo,CName,CTel,Buy.SNo,SName,STel,Buy.HNo,HA,HB,HC,HType,HSize,HPrice,BMoney,BdateBuy,Customer,Staff,Housefrom
Buy.HNo=House.HNoandandBuy.SNo=Staff.SNowhereBuy.CNo=Customer.CNo
3.4存储过程:
预定房屋:
ReserveHousecreateprocedurechar(20),@RNo(char(20),@CNochar(20),@SNochar(20),@HNo
float,@RMoney
char(10)@RDate
)as待售')House.HNo=@HNo)='fromHousewhereif((selectHouse.HStatebeginReserve(RNo,CNo,SNo,HNo,RMoney,Rdate)intoinsert
values(@RNo,@CNo,@SNo,@HNo,@RMoney,@RDate)Houseupdate已预定'HState='setHousefromHouse.HNo=@HNowhere
Reserveupdate
RRest=Hprice-RMoneysetHouse,ReservefromHouse.HNo=@HNoRNo=@RNoandwhere
endelsebegin该房屋已预定或已售出'print'end
功能:
根据HNo判断房屋状态是不是‘待售'状态,若是,则在预定表中插入信息;否则,则提示“该
房屋已预定或已售出”,并放弃插入操作。
购买房屋:
BuyHouseprocedurecreatechar(20),@BNo(
char(20),@CNo
char(20),@SNo
char(20),@HNo
char(10)@BDate
)as已售出')whereHouse.HNo=@HNo)!
='House.HStatefromHouseif((selectbeginvalues(@BNo,@CNo,@SNo,@HNo,@BDate),Bdate)insertintoBuy(BNo,CNo,SNo,HNoHouseupdate已售出'HState='setHousefrom
House.HNo=@HNowhere
Reservefromdelete
Reserve.HNo=@HNowhere
endelsebegin该房屋已售出'print'end功能:
根据HNo判断房屋状态是不是‘已售出'状态,若为否,则在购买表中插入信息,并在预定表中
删除对应信息;否则,则提示“该房屋已售出”,并放弃插入操作。
插入客户信息:
InsertCustomercreateprocedurechar(20),@CNo(
char(10),@CNamechar(4),@CSexint,@CAge
char(20),@CTel无'char(18)='@CId)asvalues(@CNo,@CName,@CSex,@CAge,@CTel,@CId)Customerinsertinto功能:
在客户表中插入新的客户信息。
插入员工信息:
InsertStaffprocedurecreatechar(20),@SNo(
char(10),@SName
char(4),@SSex
int,@SAge
char(20),@SDep
char(20),@SPost
char(20),@STel
char(18)@SId
)asvalues(@SNo,@SName,@SSex,@SAge,@SDep,@SPost,@STel,@SId)intoStaffinsert
功能:
在员工表中插入新的员工信息。
插入房屋信息:
InsertHouseprocedurecreatechar(20),@HNo(char(20),@HA
char(10),@HB
char(10),@HC
char(20),@HType
int,@HSizechar(20),@HStatefloat@Hprice)asvalues(@HNo,@HA,@HB,@HC,@HType,@HSize,@HState,@HPrice)Houseinsertinto
功能:
在房屋表中插入新的房屋信息。
3.5触发器:
触发器:
1
ReserveonNewReserveHousetriggercreate
insertofinstead
asexistsnotif
)Customer)(select(CNoinsertedselect*fromfromwhereCNoin客户表中没有该客户信息,拒绝插入!
''printtransactionrollback
功能:
保证在预定表中插入新记录时,客户信息必须已经存在于客户表中。
触发器:
2
BuyNewBuyHouseoncreatetrigger
insertofinsteadasexistsnotif)fromCustomer)(selectCNoin(CNoinsertedselect*fromwhere客户表中没有该客户信息,拒绝插入!
transactionrollback
功能:
保证在购买表中插入新记录时,客户信息必须已经存在于客户表中。
触发器3:
ReserveDelRoncreatetrigger
deleteafterasdeleted)from(selectHNofromHousewhereHouse.HNoinif((selectHState已预定'))='beginCustomerdeletefromdeleted)fromin(selectCNowhereCustomer.CNoHouseupdate
待售'setHState='deleted)HNofromwhereHouse.HNoin(selectend
功能:
删除预定表中某一个预定记录时,如果是因为客服付清未付款,购买了房屋,则只进行原操作;如
果是因为客户取消预定,则同时删除客户表中此客户,并将此房屋状态重新改为‘待售'。
.
触发器4:
BuyDelBontriggercreate
deleteafterasbeginCustomerfromdeletedeleted)from(selectCNoCustomer.CNowhereinHouseupdate
待售'HState='set
deleted)HNofromHouse.HNoin(selectwhereend
功能:
删除购买表中某一个购买记录时,同时删除客户表中此客户,并将此房屋状态重新改为‘待售'。
三.实例演示:
添加数据:
表填入数据:
Customer存储过程在InsertCustomer用.
用InsertStaff存
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 房屋 销售 管理 系统