KTV管理系统.doc

上传人:w****2 文档编号:6587154 上传时间:2020-02-29 格式:DOC 页数:33 大小:440KB
返回 下载 相关 举报
KTV管理系统.doc_第1页
第1页 / 共33页
KTV管理系统.doc_第2页
第2页 / 共33页
KTV管理系统.doc_第3页
第3页 / 共33页
点击查看更多>>
资源描述
数据库技术 课程设计 课题 KTV管理系统 班级 08电子商务B 学号 2008012119 姓名 张婷婷 2010年 7月 1日 2010 年 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 管理系统 程序要求能录入一些基本的资料 需要对 房间完成对房间的预定 开房 结账等基本信息操作 并可以对这些信息进行统计 根据 以上的需求 数据库的设计 必需满足一下几点 记录房间的基本信息 房间号 房间名称 房间类型 房间的价格 房间状态 记录会员的基本信息 会员编号 会员姓名 固定电话 手机 地址 签单的额度 消费次数 消费积分 备注 记录预订单信息 包括预订单编号 客户名称 房间编号 房间类型 房间价格 客 户地电话 人数 开房日期 开房时间 操作员 预付金额 会员编号 预定日期 备注 记录房间消费信息 开房单编号 房间编号 房间类型 房间价格 人数 客户名称 客户电话 开房时间 预付金额 付款方式 折扣 消费金额 开房日期 会员编号 备注 记录账单信息 账单编号 房间编号 房间类型 房间价格 客户名称 开房时间 关房时间 预付金额 付款方式 折扣 消费金额 开房日期 会员的编号 记录维修单信息 维修单编号 房间编号 维修原因 维修结果 记录维修单历史 维修单编号 房间编号 维修原因 维修结果 记录用户信息 包括用户 ID 用户名 用户密码 用户权限代码 用户类型 1 4 系统功能模块分析 1 根据以上的需求分析 KTV 的功能模块如下 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 查看某个表中是否存在某个整形字段等于某个值的记录 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 数据库物理设计 物理设计的目的不仅要保证存储数据的适当结构 而且要以适当的方式对性能提供保证 数据库物理设计主要涉及以下两方面的工作 数据库的数据文件的分布结构 确定索引的结果 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 分 则签单额度可以增加 2000 元 use KTVDB GO create trigger 签单额度增加 on MemberInfo for update as if exists select from MemberInfo where ConsumeIntegral 10000 begin update MemberInfo set SignCheck SignCheck 2000 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 RoomPri ce 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 修改前后比较
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 临时分类 > 人文社科


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!