收藏 分销(赏)

KTV标准管理系统专业资料.doc

上传人:精*** 文档编号:3032598 上传时间:2024-06-13 格式:DOC 页数:36 大小:438.54KB 下载积分:12 金币
下载 相关 举报
KTV标准管理系统专业资料.doc_第1页
第1页 / 共36页
KTV标准管理系统专业资料.doc_第2页
第2页 / 共36页


点击查看更多>>
资源描述
《数据库技术》课程设计 课题 KTV管理系统 班级 08电子商务B 学号 012119 姓名 张婷婷 7月 1日— 年 7 月 8 日 目录 1.需求分析: 3 1.1现实需求分析 3 1.2系统需求分析 3 1.3数据库需求分析 3 1.4 系统功能模块分析 4 1.5据字典 5 2数据库概念设计 6 2.1局部概念模式设计 6 2.2全局概念模式设计 10 3.数据库逻辑设计 11 3.1数据模型映射 11 3.2数据库构造优化和完整性设计 12 3.3数据库逻辑构造设计 13 4.数据库物理设计 17 4.1:建库 17 4.2建表 18 4.3 将数据插入表中 21 4.4建立视图 23 4.5数据库索引建立 23 5.数据实行与维护 24 5.1查询 24 5.2 触发器 25 5.3 存储过程 28 1.需求分析: 1.1现实需求分析 随着社会发展和人民生活水平提高,人们对精神文化生活需求也在不断增长。KTV浮现和发展满足了人们这种需求。各行业发展和计算机系统结合越来越紧密,诸多歌厅借助当代高科技所带来优质服务,大大提高服务档次,提高了公司管理水平,提高了竞争力达到管理系统化,规范化。 1.2系统需求分析 KTV管理信息系统重要是完毕对歌厅管理(涉及预定,开房,结账,维修,打扫)和各种有关信息管理录入和查询。 顾客登入系统,输入顾客名和密码,系统从数据库顾客信息表进行核对,完全一致这进入系统。房间或会员信息增长时,系统会把这些信息写入到数据库中房间和会员信息表中。若客人取消预定,则在预定单表中删除这些信息。当结账时,通过房间编号从房间消费表中读取消费信息。结账后,就把此行信息删除,写入到结账表中。如果是会员,消费信息会写入到会员信息表中,消费次数和消费金额都将累加,如果消费金额达到一定限度,这签单金额度将发生变化。 1.3数据库需求分析 本系统是为普通歌厅设计KTV管理系统,程序规定能录入某些基本资料,需要对房间完毕对房间预定,开房,结账等基本信息操作,并可以对这些信息进行记录,依照以上需求,数据库设计,必须满足一下几点: l 记录房间基本信息:房间号,房间名称,房间类型,房间价格,房间状态 l 记录会员基本信息:会员编号,会员姓名,固定电话,手机,地址,签单额度,消费次数,消费积分,备注。 l 记录预订单信息:涉及预订单编号,客户名称,房间编号,房间类型,房间价格,客户地电话,人数,开房日期,开房时间,操作员,预付金额,会员编号,预定日期,备注。 l 记录房间消费信息:开房单编号,房间编号,房间类型,房间价格,人数,客户名称,客户电话,开房时间,预付金额,付款方式,折扣,消费金额,开房日期,会员编号,备注 l 记录账单信息:账单编号,房间编号,房间类型,房间价格,客户名称,开房时间,关房时间,预付金额,付款方式,折扣,消费金额,开房日期,会员编号 l 记录维修单信息:维修单编号,房间编号,维修因素,维修成果 l 记录维修单历史:维修单编号,房间编号,维修因素,维修成果 l 记录顾客信息,涉及顾客ID,顾客名,顾客密码,顾客权限代码,顾客类型 1.4 系统功能模块分析 1.依照以上需求分析,KTV功能模块如下: KTV管理系统 基本信息 基本业务 查询记录 系统设立 退出系统 房间信息 会员信息 预定 开房 结账 维修 打扫 房间管理 信息 预订单 开房单 维修单 账单查询 房间查询 状态 类型 会员查询 顾客设立 密码设立 顾客查询 图一系统功能模块图 1. 功能模块阐明: l 基本信息模块:用于记录房间几会员基本信息 l 基本业务模块:重要解决房间预定,开房,结账以及维修等项目。 l 查询记录模块:重要用于对房间基本信息,会员基本信息查询 l 系统设立模块:重要是 通顾客设立,密码设立,来加强对顾客管理,并且提高系统安全性。 l 退出系统 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,查看某个表中与否存在某个整形字段等于某个值记录 use KTVDB GO /*查看某个数据表中,与否存在某个字段等于某个值记录*/ create Proc dbo.ExistByID ( @strTableName varchar(225), @strFiledName varchar(225), @intFieldValue int, @bitResult bit Output ) as set Nocount on declare @strSQL varchar(3000) declare @nCount int /*构建存储符号条件记录数暂时表 */ if Object_ID('DBO.#tmpTable') is null create table #tmpTable(tepField int ) else truncate table #tmpTable /*在数据库表中检索符合条件记录数,并且存储在暂时表中*/ select @strSQL='select count(['+@strFiledName+']) from ['+@strTableName+'] e['+@strFiledName+']='+convert(varchar(50),@intFieldValue) select @strSQL='insert #tmpTable '+@strSQL exec(@strSQL) /*在暂时表中返回存储记录数*/ select top 1 @nCount =tmpField from #tmpTable order by tmpField drop table #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.数据库物理设计 物理设计目不但要保证存储数据恰当构造,并且要以恰当方式对性能提供保证。数据库物理设计重要涉及如下两方面工作: l 数据库数据文献分布构造。 l 拟定索引成果。 4.1:建库 IF exists(select * from sysdatabases where name ='KTVDB') drop database KTVDB create database KTVDB on (name='KTVDB_dat', filename ='D:\KTVDB\KTVDB.MDF', SIZE=5MB, maxsize=20MB, filegrowth =2MB) LOG ON (name ='KTVDB_log', filename ='D:\KTVDB\KTVDB.ldf', size=2MB, filegrowth=15%) 4.2建表 1. 顾客登录 use KTVDB GO create table UseInfo ( UserID char(2) primary key not null, Usename varchar(10), UsePwd varchar(10) not null, UseType int, Remake varchar(10)) 2.房间信息 create table RoomInfo ( RoomID char(2) primary key not null, Roomname varchar(20), RoomTypeName varchar(10), RoomPrice Float not null, RoomState char(6)) 3会员信息 create table MemberInfo ( MemberID char(3) primary key not null, MemberName varchar(8), Tel1 varchar(20), Tel2 varchar(20), Address varchar(30), SignCheck int not null, ConsumedTime int not null, ConsumeIntegral float not null, Remake varchar(50)) 4预订单信息 create table DestineInfo ( DestineID char(4) primary key not null, ClientName varchar(10), RoomID char(2) not null, RoomType varchar(8), RoomPrice Float, ClientTel varchar(20), ClientCount int, OpenRoomDate datetime not null, OpenRoomTime datetime not null, Waitor varchar(10), Prepay float, Remake varchar(50), DestineDate datetime, MemberID char(3)) 5房间消费信息 create table RoomConsumed ( RoomConsumedID char(4) primary key not null, RoomID char(2) not null, RoomType varchar(10), RoomPrice Float , ClientCount int, ClientName varchar(8), OpenTime datetime not null, ClientTel varchar(20), Prepay float, Agio int, PayMode Varchar(8), OpenDate datetime not null, Remake varchar(50), MemberID char(3)) 6账单信息 create table CheckInfo ( CheckID char(10)primary key not null, RoomID char(2) not null, RoomType varchar(10), RoomPrice Float , ClientName varchar(10), Agio int, OpenRoomTime datetime not null, EndTime datetime not null, Prepay float, PayMode Varchar(8), RoomMoney float not null, OpenDate datetime not null, MemberID char(3)) 7维修单信息 create table RepairInfo ( RepairID char(3)primary key not null, RoomID char(2) not null, Remake varchar(50)) 8维修单历史 create table RepairHistory ( RepairHisID char(3)primary key not null, RoomID char(2) not null, Remake varchar(50), RemakeAfter varchar(50)) 4.3 将数据插入表中 图4-1 UserInfo 图4-2 RoomInfo 图4-3 MemberInfo 图4-4 DestineID 图4-5RoomConsumed 图4-6 CheckInfo 图4-7RepairInfo 图4-8RepairHistory 4.4建立视图 创造视图好处是,可以在别视图或者顾客自定义函数中,按照各种不同条件过滤该视图检索数据而不要各自内在构造复杂检索条件并在相应表中检索数据。 为顾客登录表创立视图 4.5数据库索引建立 索引可加快查询,还可以对数据进行唯一标记 当前为个张表主键建立索引 为UseID ,RoomID,MemberID,DestineID,RoomConsumedID CheckID RepairID RepairHisID 创立索引 use KTVDB GO create index index_UserID on UseInfo(UserID ) create index index_RoomID on RoomInfo(RoomID ) create index index_MemberID on MemberInfo (MemberID ) create index index_DestineID on DestineInfo (DestineID ) create index index_RoomConsumedID on RoomConsumed(RoomConsumedID ) create index index_CheckID on CheckInfo(CheckID ) create index index_RepairID on RepairInfo(RepairID ) create index index_RepairHisID on RepairHistory(RepairHisID ) 5.数据实行与维护 5.1查询 1)嵌套查询 查询房间信息表中,房间状态为空并且不在维修单信息表中房间所有信息,同步显示“这些房间可以正常营业” use KTVDB GO if exists (select * from RoomInfo where RoomID not in (select RoomID from RepairInfo ) and RoomState='空') begin print '这些房间可以正常营业' end 2)变量查询 查找积分比小文多会员所有信息 此代码中用到变量,变量有很大灵活性,可以通过直接变化赋值来进行各种不同查询 5.2 触发器 1)结账时间普通有结账时系统直接给出,不能修改。如果修改了,则会给出警告,并且修改失败。 use KTVDB GO create trigger 结账时间修改 on CheckInfo for update as if update(EndTime) begin print'结账失败!!' raiserror('安全警告:结账日期不能修改,结账时由系统直接给出',16,1) rollback transaction end go 当前修改EndTime中数据,系统将给出如下警告 2)创立一种触发器,查询会员信息,如果消费积分超过10000分,则签单额度可以增长元。 use KTVDB GO create trigger 签单额度增长 on MemberInfo for update as if exists (select * from MemberInfo where ConsumeIntegral>'10000') begin update MemberInfo set SignCheck=SignCheck+ end 例如会员小超,本来签单额度为 修改后签单额度为: 3)更新住房信息时,同步也会更新会员表金额和消费次数 create trigger RoomConsumed_insert on dbo.RoomConsumed for insert as update M set M.ConsumedTime=(M.ConsumedTime+1),M.SignCheck=(M.SignCheck+RC.RoomPrice ) from MemberInfo as M inner join RoomConsumed as RC ON M.MemberID=RC.MemberID 向表中插入数据 对比修改先后MemberInfo 修改前表 修改后表 4)如果某个房间有人住,则房间状态为使用中 use KTVDB GO /*如果某个房间有人住时,则房间状态为使用中,如果无人住,则为空房*/ create trigger RoomState_update1 on dbo.RoomConsumed for update as if exists(select ClientName from RoomConsumed) begin update RoomInfo set RoomState='使用中' from RoomInfo where RoomID in (select RoomID from RoomConsumed ) end 向RoomConsumed 表中插入信息 再查看RoomID表 修改前 修改后 5.3 存储过程 1)验证顾客名和密码,并输出验证成果,顾客编号,真实姓名,顾客类型 use KTVDB GO /*验证顾客名和密码,并输出验证成果,顾客编号,真实姓名,顾客类型*/ create proc dbo.IsValidUser ( @Usename varchar(10), @UsePwd varchar(10) , @UserID int output, @UseType bit output, /*输出值(VB组建自定义枚举数),为合法顾客,为顾客名错,为密码错*/ @ReturnValue int output ) as declare @RightPwd varchar(10) select top 1 @RightPwd =UsePwd,@UserID=UserID,@UseType =UseType from UseInfo where Usename=@Usename order by Usename /*顾客名不存在*/ if @RightPwd is null begin set @ReturnValue=2 return end /*顾客名不在,则比较密码*/ if @RightPwd <>@UsePwd begin set @ReturnValue=3 return end 2)建立存储过程计算结账时金额 use KTVDB GO create ProCedure up_check @cOpenTime datetime, @cCloseTime datetime, @cRoomID CHAR(4), @cPrice float, @cAgio int, @cPrepay int, @Money float output as select @cPrice =RoomPrice from RoomInfo where RoomID=@cRoomID select @cOpenTime =OpenTime from RoomConsumed where RoomID=@cRoomID select @cPrepay= Prepay from RoomConsumed where RoomID=@cRoomID select @cCloseTime =Getdate() select @Money=(datediff(mi,@cOpenTime,@cCloseTime)) *@cPrice/60.0*@cAgio/100.0-@cPrepay 3)积分超过一万分为“钻石级会员”,建立一种存储过程,找出这些会员,并输出这些会员信息。并且将remark中值改为“钻石级会员” create proc 钻石会员 @cit float='10000', @citsum int output as print '------------------------------' print'本KTV钻石级会员为' select * from MemberInfo where ConsumeIntegral>@cit select @citsum=count(MemberID) from MemberInfo where ConsumeIntegral>@cit update MemberInfo set Remake='钻石级会员' where ConsumeIntegral>@cit declare @citsum int exec 钻石会员'1000',@citsum output select @citsum update MemberInfo set Remake='钻石级会员' where ConsumeIntegral>10000 4)建立带游标存储过程,将维修单信息表中备注添加到维修单历史表中“备注”字段 create proc 维修历史单添加 as declare @RoomID char(2),@Remark varchar(50) declare cursor_添加cursor for select RoomID,Remake from RepairHistory where Remake is null and RoomID is not null open cursor_添加 fetch next from cursor_添加into @RoomID,@Remark while @@fetch_status=0 begin select @Remark=Remake from RepairInfo where RoomID=@RoomID update RepairHistory set Remake=@Remark where RoomID=@RoomID if exists(select RoomID,Remake from RepairHistory where Remake is null and RoomID is not null ) continue else break end exec 维修历史单添加 select * from RepairHistory 修改先后比较
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服