数据库房屋销售管理系统.docx

上传人:b****8 文档编号:10816952 上传时间:2023-02-23 格式:DOCX 页数:18 大小:262.55KB
下载 相关 举报
数据库房屋销售管理系统.docx_第1页
第1页 / 共18页
数据库房屋销售管理系统.docx_第2页
第2页 / 共18页
数据库房屋销售管理系统.docx_第3页
第3页 / 共18页
数据库房屋销售管理系统.docx_第4页
第4页 / 共18页
数据库房屋销售管理系统.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

数据库房屋销售管理系统.docx

《数据库房屋销售管理系统.docx》由会员分享,可在线阅读,更多相关《数据库房屋销售管理系统.docx(18页珍藏版)》请在冰豆网上搜索。

数据库房屋销售管理系统.docx

数据库房屋销售管理系统

数据库课程设计

房屋销售管理系统

**:

玖龙

**:

2

学院:

信息工程学院

专业:

计算机科学与技术

班级:

1320701

指导教师:

2021年1月14日

一、课程设计的目的和意义

"数据库原理及应用课程设计"是实践性教学环节之一,是"数据库原理及应用"课程的辅助教学课程。

通过课程设计,使学生掌握数据库的根本概念,结合实际的操作和设计,稳固课堂教学容,使学生掌握数据库系统的根本概念、原理和技术,将理论与实际相结合,应用现有的数据建模工具和数据库管理系统软件,规、科学地完成一个小型数据库的设计与实现,把理论课与实验课所学容做一综合,并在此根底上强化学生的实践意识、提高其实际动手能力和创新能力。

要求:

通过设计一完整的数据库,使学生掌握数据库设计各阶段的输入、输出、设计环境、目标和法。

熟练掌握两个主要环节——概念构造设计与逻辑构造设计;熟练的使用SQL语言实现数据库的建立、应用和维护。

二、设计正文

1.需求分析

1.1根本功能需求

客户购置或预定房屋,房屋销售人员根据用户的需求为用户办理相关手续。

购销管理包含以下几面的信息。

1客户根本信息

客户在购置或预定房屋的时候,每位用户都有唯一的编号,客户的根本信息包括**、性别、年龄、联系式、**号。

2员工根本信息

每位员工在入职的时候有唯一的员工号,根据分工的不同,还有工作部门及职位这个属性。

当然还有**、性别、联系式、年龄、**号这些根本属性。

3房屋根本信息

每个房屋有唯一的房屋编号,根本信息包含房屋的面积、户型、小区、栋、号、价格和状态,状态分为"待售〞、"已预订〞和"已售出〞。

4预定房屋信息

客户可以进展房屋的预定,预定包括预定流水号,客户编号,员工号,房屋编号,预付金额,未付金额,预定时间。

5购置的根本信息

客户可以购置房屋,购置包括购置流水号,客户编号,员工号,房屋编号,付款金额,购置时间。

付款金额一般等于房屋价格。

1.2用户对系统的要求

房屋销售管理人员

①信息要求

房屋销售管理人员能查询上面提到的客户、销售人员、房屋的所有相关信息,包括预定房屋的根本信息,购置房屋的根本信息。

以利于对整个销售楼盘的全面管理。

②处理要求

当客户的信息发生变化时,房屋销售管理人员能对其进展修改。

比方,客户更换手机号,或其他变更,能修改客户的信息。

当房屋的信息放生变化时,房屋销售管理人员能对其进展修改。

比方,房屋降价,房屋销售管理人员能对价格进展修改。

当销售人员的信息放生变化时,如升职,房屋销售管理人员能对其进展修改。

③平安性与完整性要求

平安性要求

1.系统应设置访问用户的标识以鉴别是否是合法用户,并要求合法用户设置其密码,保证用户身份不被盗用;

2.系统应对不同的数据设置不同的访问级别,限制访问用户可查询和处理数据的类别和容;

3.系统应对不同用户设置不同的权限,区分不同的用户,如区分房屋销售人员和房屋销售管理人员。

完整性要求

1.各种信息记录的完整性,信息记录容不能为空;

2.各种数据间相互的联系的正确性;

3.一样的数据在不同记录中的一致性。

房屋销售人员

1信息要求

本楼盘的房屋销售人员能所有楼盘的信息,能查询"待售〞状态的房屋信息,能查询客户的根本信息、修改客户的信息。

能查询自己的销售记录。

能够进展预定、购置操作。

2处理要求

当客户的信息发生变化时,房屋销售人员能对其进展修改。

客户购置/预定房屋时,销售人员能添加预定/购置记录。

系统数据处理

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,

ma*size=50,

filegrowth=5

logon

(name=house_log,

filename='D:

\house.ldf',

size=5,

ma*size=25,

filegrowth=5

建立一个名为房屋销售管理的数据库

3.2创立各实体表及关系表

客户Customer:

属性

属性名

类型

长度

约束

客户编号

o

char

20

主键

**

ame

char

10

非空

性别

CSe*

char

4

‘男’或‘女’

年龄

CAge

int

大于零

联系式

CTel

char

20

非空

**号

CId

char

18

18位数字

createtableCustomer

(ochar(20)constraintC_primprimarykey,

amechar(10)notnull,

CSe*char(4)constraintSe*notnullcheck(CSe*='男'orCSe*='女'),

CAgeintconstraintC_Agenotnullcheck(CAge>0),

CTelchar(20)notnull,

CIdchar(18)constraintLEN_CIDcheck(len(CId)=18)

员工Staff:

属性

属性名

类型

长度

约束

员工号

SNo

char

20

主键

**

SName

char

10

非空

性别

SSe*

char

4

‘男’或‘女’

年龄

SAge

int

大于零

部门

SDep

char

20

非空

职位

SPost

char

20

非空

联系式

STel

char

20

非空

**号

SId

char

18

18位数字

createtableStaff

(SNochar(20)constraintS_primprimarykey,

SNamechar(10)notnull,

SSe*char(4)constraintSe*notnullcheck(SSe*='男'orSSe*='女'),

SAgeintconstraintS_Agenotnullcheck(SAge>0),

SDepchar(20)notnull,

SPostchar(20)notnull,

STelchar(20)notnull,

SIdchar(18)constraintLEN_SIDcheck(len(SId)=18)

房屋House:

属性

属性名

类型

长度

约束

房屋编号

HNo

char

20

主键

小区

HA

char

20

非空

HB

char

10

非空

HC

char

10

非空

户型

HType

char

20

非空

面积

HSize

int

大于零

房屋状态

HState

char

20

‘待售'或‘已预订’或‘已售出’

价格

HPrice

float

大于零

createtableHouse

(HNochar(20)constraintH_primprimarykey,

HAchar(20)notnull,

HBchar(10)notnull,

HCchar(10)notnull,

HTypechar(20)notnull,

HSizeintconstraintH_Sizenotnullcheck(HSize>0),

HStatechar(20)constraintH_Statenotnullcheck(HState='待售'orHState='已预订'orHState='已售出')default'待售',

HpricefloatconstraintH_Pricenotnullcheck(HPrice>0)

预定Reserve:

属性

属性名

类型

长度

约束

预定流水号

RNo

char

20

主键

客户编号

o

char

20

非空

**

SName

char

10

非空

房屋编号

HNo

char

20

外键

预付金额

RMoney

float

大于零

未付金额

RRest

float

大于或等于零

预定日期

RDate

char

10

非空

其中未付金额由存储过程根据预付金额和房屋价格自动计算填入

createtableReserve

(RNochar(20)constraintR_primprimarykey,

ochar(20)constraintR_C_primforeignkeyreferencesCustomer(o),

SNochar(20)constraintR_S_primforeignkeyreferencesStaff(SNo),

HNochar(20)constraintR_H_primforeignkeyreferencesHouse(HNo),

RMoneyfloatconstraintR_Moneynotnullcheck(RMoney>0),

RRestfloatconstraintR_Restnotnullcheck(RRest>=0)default0,

Rdatechar(10)notnull〕

购置Buy:

属性

属性名

类型

长度

约束

购置流水号

BNo

char

20

主键 

客户编号

o

char

20

非空 

**

SName

char

10

非空 

房屋编号

HNo

char

20

外键

购置金额

BMoney

float

非空 

购置日期

BData

char

10

非空 

createtableBuy

(BNochar(20)constraintB_primprimarykey,

ochar(20)constraintB_C_primforeignkeyreferencesCustomer(o),

SNochar(20)constraintB_S_primforeignkeyreferencesStaff(SNo),

HNochar(20)constraintB_H_primforeignkeyreferencesHouse(HNo),

BMoneyfloatconstraintB_Moneynotnullcheck(BMoney>=0)default0,

Bdatechar(10)notnull

3.3创立视图:

所有客户信息视图〔客户编号,名字,性别,年龄,联系式,**号〕

createviewCustomerView(o,ame,CSe*,CAge,CTel,CId)

as

selecto,ame,CSe*,Cage,CTel,CId

FROMCustomer

所有员工信息视图〔员工号,名字,性别,年龄,部门,职位,联系式,**号〕

createviewStaffView(SNo,SName,SSe*,SAge,SDep,SPost,STel,SId)

as

selectSNo,SName,SSe*,SAge,SDep,SPost,STel,SId

fromStaff

待售房屋视图〔房屋编号,小区,栋,号,户型,面积,价格〕

createviewForSaleHouse(HNo,HA,HB,HC,HType,HSize,HPrice)

as

selectHNo,HA,HB,HC,HType,HSize,HPrice

fromHouse

whereHState='待售'

预定房屋信息视图〔预定流水号,客户编号,客户名字,客户联系式,员工号,员工名字,员工联系式,房屋编号,小区,栋,号,户型,面积,价格,预定金额,未付金额,预定时间〕

createviewReserveView(RNo,o,ame,CTel,SNo,SName,STel,HNo,HA,HB,

HC,HType,HSize,HPrice,RMoney,RRest,Rdate)

as

selectRNo,Reserve.o,ame,CTel,Reserve.SNo,SName,STel,Reserve.HNo,HA,HB,HC,

HType,HSize,HPrice,RMoney,RRest,Rdate

fromReserve,Customer,Staff,House

whereReserve.o=Customer.oandReserve.SNo=Staff.SNoandReserve.HNo=House.HNo

购置房屋信息视图〔购置流水号,客户编号,客户名字,客户联系式,员工号,员工名字,员工联系式,房屋编号,小区,栋,号,户型,面积,价格,购置金额,购置时间〕

createviewBuyView(BNo,o,ame,CTel,SNo,SName,STel,HNo,HA,HB,HC,HType,HSize,HPrice,BMoney,Bdate)

as

selectBNo,Buy.o,ame,CTel,Buy.SNo,SName,STel,Buy.HNo,HA,HB,HC,HType,HSize,HPrice,BMoney,Bdate

fromBuy,Customer,Staff,House

whereBuy.o=Customer.oandBuy.SNo=Staff.SNoandBuy.HNo=House.HNo

3.4存储过程:

预定房屋:

createprocedureReserveHouse

(RNochar(20),

ochar(20),

SNochar(20),

HNochar(20),

RMoneyfloat,

RDatechar(10)

as

if((selectHouse.HStatefromHousewhereHouse.HNo=HNo)='待售')

begin

insertintoReserve(RNo,o,SNo,HNo,RMoney,Rdate)values(RNo,o,SNo,HNo,RMoney,RDate)

updateHouse

setHState='已预定'

fromHouse

whereHouse.HNo=HNo

updateReserve

setRRest=Hprice-RMoney

fromHouse,Reserve

whereRNo=RNoandHouse.HNo=HNo

end

else

begin

print'该房屋已预定或已售出'

end

功能:

根据HNo判断房屋状态是不是‘待售’状态,假设是,则在预定表中插入信息;否则,则提示"该房屋已预定或已售出〞,并放弃插入操作。

购置房屋:

createprocedureBuyHouse

(BNochar(20),

ochar(20),

SNochar(20),

HNochar(20),

BDatechar(10)

as

if((selectHouse.HStatefromHousewhereHouse.HNo=HNo)!

='已售出')

begin

insertintoBuy(BNo,o,SNo,HNo,Bdate)values(BNo,o,SNo,HNo,BDate)

updateHouse

setHState='已售出'

fromHouse

whereHouse.HNo=HNo

deletefromReserve

whereReserve.HNo=HNo

end

else

begin

print'该房屋已售出'

end

功能:

根据HNo判断房屋状态是不是‘已售出’状态,假设为否,则在购置表中插入信息,并在预定表中删除对应信息;否则,则提示"该房屋已售出〞,并放弃插入操作。

插入客户信息:

createprocedureInsertCustomer

(ochar(20),

amechar(10),

CSe*char(4),

CAgeint,

CTelchar(20),

CIdchar(18)='无'

as

insertintoCustomervalues(o,ame,CSe*,CAge,CTel,CId)

功能:

在客户表中插入新的客户信息。

插入员工信息:

createprocedureInsertStaff

(SNochar(20),

SNamechar(10),

SSe*char(4),

SAgeint,

SDepchar(20),

SPostchar(20),

STelchar(20),

SIdchar(18)

as

insertintoStaffvalues(SNo,SName,SSe*,SAge,SDep,SPost,STel,SId)

功能:

在员工表中插入新的员工信息。

插入房屋信息:

createprocedureInsertHouse

(HNochar(20),

HAchar(20),

HBchar(10),

HCchar(10),

HTypechar(20),

HSizeint,

HStatechar(20),

Hpricefloat

as

insertintoHousevalues(HNo,HA,HB,HC,HType,HSize,HState,HPrice)

功能:

在房屋表中插入新的房屋信息。

3.5触发器:

触发器1:

createtriggerNewReserveHouseonReserve

insteadofinsert

as

ifnote*ists

(select*frominsertedwhereoin(selectofromCustomer))

print'客户表中没有该客户信息,拒绝插入!

'

rollbacktransaction

功能:

保证在预定表中插入新记录时,客户信息必须已经存在于客户表中。

触发器2:

createtriggerNewBuyHouseonBuy

insteadofinsert

as

ifnote*ists

(select*frominsertedwhereoin(selectofromCustomer))

print'客户表中没有该客户信息,拒绝插入!

'

rollbacktransaction

功能:

保证在购置表中插入新记录时,客户信息必须已经存在于客户表中。

触发器3:

createtriggerDelRonReserve

afterdelete

as

if((selectHStatefromHousewhereHouse.HNoin(selectHNofromdeleted))='已预定')

begin

deletefromCustomer

whereCustomer.oin(selectofromdeleted)

updateHouse

setHState='待售'

whereHouse.HNoin(selectHNofromdeleted)

end

功能:

删除预定表中*一个预定记录时,如果是因为客服付清未付款,购置了房屋,则只进展原操作;如果是因为客户取消预定,则同时删除客户表中此客户,并将此房屋状态重新改为‘待售’。

触发器4:

createtriggerDelBonBuy

afterdelete

as

begin

deletefromCustomer

whereCustomer.oin(selectofromdeleted)

updateHouse

setHState='待售'

whereHouse.HNoin(selectHNofromdeleted)

end

功能:

删除购置表中*一个购置记录时,同时删除客户表中此客户,并将此房屋状态重新改为‘待售’。

三.实例演示:

添加数据:

用InsertCustomer存储过程在Customer表填入数据:

用InsertStaff存储过程在Staff表填入数据:

用InsertHouse存储过程在InsertHouse表填入数据:

预定和购置房屋:

用ReserveHouse存储过程添加预定房屋信息:

(输入参数中没有未付金额RRest,RRest由存储过程自动计算填入)

预定H0002和H0005号房屋

用BuyHouse存储过程添加购置房屋信息:

购置H0007和H0009号房屋

用ReserveView视图和BuyView视图查看所有预定和购置房屋信息:

删除购置信息后自动将房屋状态重新修改为"待售〞

删除编号为B0002的购置记录,触发器自动将编号为H0009的房屋状态变更为"待售〞。

删除预定记录同此。

当添加新的预定记录时,假设客户信息不存在于客户表中,则输出提示信息,并完毕操作。

插入购置记录同此。

四.课程设计总结或结论

在完成课程设计的过程中,我明白了很多以前不明白的问题,特别是对存储过程和触发器的应用有了更深的了解。

在课堂上学到的理论知识,也在实践中得到复习和稳固,并使我对数据库的理解更一步加深了,也为以后积累了珍贵的经历。

从完全不知道从哪里下手,到一步步修改,一步步完善,到最终完成,中间经历

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 经济学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1