KTV管理系统.docx
《KTV管理系统.docx》由会员分享,可在线阅读,更多相关《KTV管理系统.docx(35页珍藏版)》请在冰点文库上搜索。
KTV管理系统
《数据库技术》课程设计
课题KTV管理系统
班级08电子商务B
学号2008012119
姓名张婷婷
2010年7月1日—2010年7月8日
1.需求分析:
1.1现实需求分析
随着社会的发展和人民生活水平的提高,人们对精神文化生活的需求也在不断的增加。
KTV的出现和发展满足了人们这种需求。
各行业的发展和计算机系统的结合越来越紧密,很多歌厅借助现代高科技的所带来的优质的服务,大大提高服务的档次,提升了企业的管理水平,提升了竞争力达到管理的系统化,规范化。
1.2系统需求分析
KTV管理信息系统主要是完成对歌厅的管理(包括预定,开房,结账,维修,打扫)和各种相关信息的管理的录入和查询。
用户登入系统,输入用户名和密码,系统从数据库的用户信息表进行核对,完全一致这进入系统。
房间或会员信息的增加时,系统会把这些信息写入到数据库中的房间和会员信息表中。
若客人取消预定,则在预定单表中删除这些信息。
当结账时,通过房间编号从房间消费表中读取消费信息。
结账后,就把此行信息删除,写入到结账表中。
如果是会员,消费的信息会写入到会员信息表中,消费的次数和消费的金额都将累加,如果消费金额达到一定的程度,这签单的金额度将发生变化。
1.3数据库需求分析
本系统是为一般歌厅设计的KTV管理系统,程序要求能录入一些基本的资料,需要对房间完成对房间的预定,开房,结账等基本信息操作,并可以对这些信息进行统计,根据以上的需求,数据库的设计,必需满足一下几点:
●记录房间的基本信息:
房间号,房间名称,房间类型,房间的价格,房间状态
●记录会员的基本信息:
会员编号,会员姓名,固定电话,手机,地址,签单的额度,消费次数,消费积分,备注。
●记录预订单信息:
包括预订单编号,客户名称,房间编号,房间类型,房间价格,客户地电话,人数,开房日期,开房时间,操作员,预付金额,会员编号,预定日期,备注。
●记录房间消费信息:
开房单编号,房间编号,房间类型,房间价格,人数,客户名称,客户电话,开房时间,预付金额,付款方式,折扣,消费金额,开房日期,会员编号,备注
●记录账单信息:
账单编号,房间编号,房间类型,房间价格,客户名称,开房时间,关房时间,预付金额,付款方式,折扣,消费金额,开房日期,会员的编号
●记录维修单信息:
维修单编号,房间编号,维修原因,维修结果
●记录维修单历史:
维修单编号,房间编号,维修原因,维修结果
●记录用户信息,包括用户ID,用户名,用户密码,用户权限代码,用户类型
1.4系统功能模块分析
1.根据以上的需求分析,KTV的功能模块如下:
图一系统功能模块图
1.功能模块说明:
●基本信息模块:
用于记录房间几会员的基本信息
●基本业务模块:
主要处理房间的预定,开房,结账以及维修等项目。
●查询统计模块:
主要用于对房间基本信息,会员基本信息的查询
●系统设置模块:
主要是通用户设置,密码的设置,来加强对用户的管理,并且提高系统的安全性。
●退出系统
1.5据字典
数据字典主要是对数据结构(数据元素)、数据存储和数据处理进行更详细的对应。
1.房间基本信息
含义说明:
KTV房间的基本信息(原始资料)
组成:
房间号,房间名称,房间类型,房间的价格,房间状态
2.会员基本信息:
含义说明:
KTV的顾客可通过办理会员卡成为KTV的会员,会员可以享受一些打折,积分换金钱优惠,会员基本信息表记录了所有会员的信息(是原始数据)。
组成:
会员编号,会员姓名,固定电话,手机,地址,签单的额度,消费次数,消费积分,备注
3.房间消费信息:
含义说明:
记录当某个房间被预定或使用后发生的所有消费(结账时需要用到这些数据)
组成:
订单编号,客户名称,房间编号,房间类型,房间价格,客户地电话,人数,开房日期,开房时间,操作员,预付金额,会员编号,预定日期,备注
4.预定单信息
含义说明:
某些客户为了预防到期没房可以住,所以向KTV预定房间,预定需要交纳一定的定金,而且产生了预订单,依次作为预定的凭证,事后无论哪一方违约,可以此为证据。
组成:
账单编号,房间编号,房间类型,房间价格,客户名称,开房时间,关房时间,预付金额,付款方式,折扣,消费金额,开房日期,会员的编号
5.账单信息:
含义:
用于记录消费时的账单的基本信息
组成:
编号,房间编号,房间类型,房间价格,人数,客户名称,客户电话,开房时间,预付金额,付款方式,折扣,消费金额,开房日期,会员编号,备注
6.维修单信息
含义说明:
随着时间的推移或者使用不当,房间里的设备等会被损坏,因此要对这些房间进行维修,维修单记录了维修中的基本元素
组成:
维修单编号,房间编号,维修原因,维修结果
7.维修历史
含义:
间不一定只修过一次,,维修历史表将维修从时间的角度进行管理
组成:
维修单编号,房间编号,维修原因,维修结果
8.用户信息
含义:
用于存储用户登录系统的基本信息
组成:
用户ID,用户名,用户密码,用户权限代码,用户类型
2数据库概念设计
2.1局部概念模式设计
本系统的数据库所涉及到的实体有房间实体,会员实体,预单实体,开房单实体,账单实体,维修单实体,维修单历史实体,用户实体,下面为各实体的E-R图
1.房间实体E-R图,属性包括
房间号,房间名称,房间类型,房间的价格,房间状态
房间实体E-R图
2.会员实体ER
会员编号,会员姓名,固定电话,手机,地址,签单的额度,消费次数,消费积分,备注
会员实体E_R图
3.预订单实体E-R
账单编号,房间编号,房间类型,房间价格,客户名称,开房时间,关房时间,预付金额,付款方式,折扣,消费金额,开房日期,会员的编号
预订单实体ER图
4.开房实体E-R
编号,房间编号,房间类型,房间价格,人数,客户名称,客户电话,开房时间,预付金额,付款方式,折扣,消费金额,开房日期,会员编号,备注
开房实体E-R图
5账单信息实体E-R图:
编号,房间编号,房间类型,房间价格,人数,客户名称,客户电话,开房时间,预付金额,付款方式,折扣,消费金额,开房日期,会员编号,备注
账单信息实体E-R图
6.维修单信息
维修单编号,房间编号,维修原因,维修结果
维修单实体E-R图
7.维修历史E-R图
维修单编号,房间编号,维修原因,维修结果
维修单历史实体E-R图
5.用户信息E-R图
用户ID,用户名,用户密码,用户权限代码,用户类型
用户实体E-R图
2.2全局概念模式设计
各实体之间关系E-R图
在SQL数据中,各表的关系如下:
3.数据库逻辑设计
3.1数据模型的映射
1.数据实体的映射:
房间信息(房间号,房间名称,房间类型,房间的价格,房间状态)
会员信息(会员编号,会员姓名,固定电话,手机,地址,签单的额度,消费次数,消费积分,备注)
预订单信息(预订单编号,客户名称,房间编号,房间类型,房间价格,客户地电话,人数,开房日期,开房时间,操作员,预付金额,会员编号,预定日期,备注)
房间消费信息(开房单编号,房间编号,房间类型,房间价格,人数,客户名称,客户电话,开房时间,预付金额,付款方式,折扣,消费金额,开房日期,会员编号,备注)
账单信息(账单编号,房间编号,房间类型,房间价格,客户名称,开房时间,关房时间,预付金额,付款方式,折扣,消费金额,开房日期,会员的编号)
维修单信息(维修单编号,房间编号,维修原因)
维修单历史(维修单编号,房间编号,维修原因,维修结果)
用户登录信息(用户ID,用户名,用户密码,用户权限代码,用户类型)
3.2数据库结构优化和完整性设计
1.建立表之间的联系,如图
2.建立存储过程ExistByID,查看某个表中是否存在某个整形字段等于某个值的记录
useKTVDB
GO
/*查看某个数据表中,是否存在某个字段等于某个值的记录*/
createProcdbo.ExistByID
(
@strTableNamevarchar(225),
@strFiledNamevarchar(225),
@intFieldValueint,
@bitResultbitOutput
)
as
setNocounton
declare@strSQLvarchar(3000)
declare@nCountint
/*构建存储符号条件的记录数的临时表*/
ifObject_ID('DBO.#tmpTable')isnull
createtable#tmpTable(tepFieldint)
else
truncatetable#tmpTable
/*在数据库表中检索符合条件的记录数,并且存储在临时表中*/
select@strSQL='selectcount(['+@strFiledName+'])from['+@strTableName+']
e['+@strFiledName+']='+convert(varchar(50),@intFieldValue)
select@strSQL='insert#tmpTable'+@strSQL
exec(@strSQL)
/*在临时表中返回存储记录数*/
selecttop1@nCount=tmpFieldfrom#tmpTableorderbytmpField
droptable#tmpTable
if@nCount>0
select@bitResult=1
else
select@bitResult=0
go
3.3数据库的逻辑结构设计
1数据库中的八个表的逻辑结构图,为
表4—1用户登入信息表UseInfo
字段名
字段说明
数据类型
字段长度
必填字段
主键
UserID
用户ID
char
2
是
是
Username
用户姓名
varchar
8
否
否
UserPwd
用户密码
varchar
10
是
否
UserType
用户权限代码
int
4
否
否
Remake
用户类型
varchar
8
否
否
表4-2房间信息表RoomInfo
字段名
字段说明
数据类型
字段长度
必填字段
主键
RoomID
房间编号
char
2
是
是
RoomName
房间名称
varchar
20
否
否
RoomTypeName
房间类型
varchar
10
否
否
RoomPrice
价格
float
8
是
否
RoomState
房间状态
char
6
否
否
表4-3会员信息表MemberInfo
字段名
字段说明
数据类型
字段长度
必填字段
主键
MemberID
会员编号
char
3
是
是
MemberName
会员姓名
varchar
8
否
否
Tel1
固定电话
varchar
20
否
否
Tel2
手机
varchar
20
否
否
Address
地址
varchar
30
否
否
SignCheck
签单额度
int
4
是
否
ConsumedTime
消费次数
int
4
是
否
ConsumedIntegral
消费积分
float
8
是
否
Remake
备注
varchar
50
否
否
表4-4预订单信息表DestineInfo
字段名
字段说明
数据类型
字段长度
必填字段
主键
DestineID
预订单编号
char
4
是
是
ClientName
客户名称
varchar
10
否
否
RoomID
房间编号
char
2
是
否
RoomType
房间类型
varchar
8
否
否
RoomPrice
房间价格
float
8
否
否
ClientTel
客户电话
varchar
20
否
否
ClientCount
人数
int
4
否
否
OpenRoomDate
开房日期
datetime
8
是
否
OpenRoomTime
开房时间
datetime
8
是
否
Waitor
操作员
varchar
10
否
否
Prepry
预付金额
float
8
否
否
Remake
备注
varchar
50
否
否
DestineDate
预订日期
datetime
8
是
否
MemberID
会员编号
char
3
否
否
表4-5房间消费信息表RoomConsumed
字段名
字段说明
数据类型
字段长度
必填字段
主键
RoomConsumed
开房编号
char
4
是
是
RoomID
房间编号
char
10
是
否
RoomType
房间类型
varchar
2
否
否
RoomPrice
房间价格
float
8
否
否
ClientCount
人数
int
8
否
否
ClientName
客人姓名
varchar
20
否
否
OpenTime
开房时间
datetime
4
是
否
ClientTel
客户电话
varchar
8
否
否
Prepay
预付定金
float
8
否
否
Agio
折扣
int
10
否
否
PayMode
付款方式
varchar
8
否
否
OpenDate
开房日期
datetime
8
是
否
Remake
备注
datetime
50
是
否
MemberID
会员编号
varchar
3
否
否
表4-6结账单信息表CheckInfo
字段名
字段说明
数据类型
字段长度
必填字段
主键
CheckID
结账单编号
char
4
是
是
RoomID
房间编号
char
2
是
否
RoomType
房间类型
varchar
10
否
否
RoomPrice
房间价格
float
8
否
否
ClientName
客人姓名
varchar
10
否
否
Agio
折扣
int
4
否
否
OpenRoomTime
开房时间
datetime
8
是
否
EndTime
结账时间
datetime
8
是
否
Prepay
预付定金
float
8
否
否
PayMode
付款方式
varchar
10
否
否
RoomMoney
消费金额
float
8
是
否
OpenDate
开房日期
datetime
8
是
否
MemberID
会员编号
varchar
3
否
否
表4-7维修单信息表RepairInfo
字段名
字段说明
数据类型
字段长度
必填字段
主键
RepairID
维修编号
char
3
是
是
RoomID
房间编号
char
2
是
否
Remakr
维修缘由
varchar
50
否
否
表4-8维修单历史表RepairHistory
字段名
字段说明
数据类型
字段长度
必填字段
主键
RepairHisID
维修编号
char
3
是
是
RoomID
房间编号
char
2
是
否
Remakr
维修缘由
varchar
50
否
否
RemakrAfter
维修结果
varchar
50
否
否
4.数据库物理设计
物理设计的目的不仅要保证存储数据的适当结构,而且要以适当的方式对性能提供保证。
数据库物理设计主要涉及以下两方面的工作:
●数据库的数据文件的分布结构。
●确定索引的结果。
4.1:
建库
IFexists(select*fromsysdatabaseswherename='KTVDB')
dropdatabaseKTVDB
createdatabaseKTVDB
on
(name='KTVDB_dat',
filename='D:
\KTVDB\KTVDB.MDF',
SIZE=5MB,
maxsize=20MB,
filegrowth=2MB)
LOGON
(name='KTVDB_log',
filename='D:
\KTVDB\KTVDB.ldf',
size=2MB,
filegrowth=15%)
4.2建表
1.用户登录
useKTVDB
GO
createtableUseInfo
(
UserIDchar
(2)primarykeynotnull,
Usenamevarchar(10),
UsePwdvarchar(10)notnull,
UseTypeint,
Remakevarchar(10))
2.房间信息
createtableRoomInfo
(
RoomIDchar
(2)primarykeynotnull,
Roomnamevarchar(20),
RoomTypeNamevarchar(10),
RoomPriceFloatnotnull,
RoomStatechar(6))
3会员信息
createtableMemberInfo
(
MemberIDchar(3)primarykeynotnull,
MemberNamevarchar(8),
Tel1varchar(20),
Tel2varchar(20),
Addressvarchar(30),
SignCheckintnotnull,
ConsumedTimeintnotnull,
ConsumeIntegralfloatnotnull,
Remakevarchar(50))
4预订单信息
createtableDestineInfo
(
DestineIDchar(4)primarykeynotnull,
ClientNamevarchar(10),
RoomIDchar
(2)notnull,
RoomTypevarchar(8),
RoomPriceFloat,
ClientTelvarchar(20),
ClientCountint,
OpenRoomDatedatetimenotnull,
OpenRoomTimedatetimenotnull,
Waitorvarchar(10),
Prepayfloat,
Remakevarchar(50),
DestineDatedatetime,
MemberIDchar(3))
5房间消费信息
createtableRoomConsumed
(
RoomConsumedIDchar(4)primarykeynotnull,
RoomIDchar
(2)notnull,
RoomTypevarchar(10),
RoomPriceFloat,
ClientCountint,
ClientNamevarchar(8),
OpenTimedatetimenotnull,
ClientTelvarchar(20),
Prepayfloat,
Agioint,
PayModeVarchar(8),
OpenDatedatetimenotnull,
Remakevarchar(50),
MemberIDchar(3))
6账单信息
createtableCheckInfo
(
CheckIDchar(10)primarykeynotnull,
RoomIDchar
(2)notnull,
RoomTypevarchar(10),
RoomPriceFloat,
ClientNamevarchar(10),
Agioint,
OpenRoomTimedatetimenotnull,
EndTimedatetimenotnull,
Prepayfloat,
PayModeVarchar(8),
RoomMoneyfloatnotnull,
OpenDatedatetimenotnull,
MemberIDchar(3))
7维修单信息
createtableRepairInfo
(
RepairIDchar(3)primarykeynotnull,
RoomIDchar
(2)notnull,
Remakevarchar(50))
8维修单历史
createtableRepairHistory
(
RepairHisIDchar(3)primarykeynotnull,
RoomIDchar
(2)notnull,
Remakevarchar(50),
RemakeAftervarchar(50))
4.3将数据插入表中
图4-1UserInfo
图4-2RoomInfo
图4-3MemberInfo
图4-4DestineID
图4-5RoomConsumed
图4-6CheckInfo
图4-7RepairInfo
图4-8RepairHistory
4.4建立视图
创造视图的好处是,可以在别的视图或者用户自定义函数中,按照各种不同条件过滤该视图的检索数据而不要各自内在构造复杂的检索条件并在相应的表中检索数据。
为用户登录表创建视图
4.5数据库索引的建立
索引可加快查询的,还可以对数据进行唯一的标识
现在为个张表的主键建立索引
为UseID,RoomID,MemberID,DestineID,RoomConsumedIDCheckIDRepairIDRepairHisID创建索引
useKTVDB
GO
createindexindex_UserIDonUseInfo(UserID)
createindexindex_RoomIDonRoomInfo(RoomID)
createindexindex_MemberIDonMemberInfo(MemberID)
createindexindex_DestineIDonDestineInfo(DestineID)
createin