收藏 分销(赏)

宾馆房客管理系统.docx

上传人:xrp****65 文档编号:6026593 上传时间:2024-11-25 格式:DOCX 页数:19 大小:388.06KB 下载积分:10 金币
下载 相关 举报
宾馆房客管理系统.docx_第1页
第1页 / 共19页
宾馆房客管理系统.docx_第2页
第2页 / 共19页


点击查看更多>>
资源描述
目录 第一章 概述 2 1.1 开发目的 2 1.2 功能需求 2 第二章 需求分析 3 2.1 数据需求 3 2.2 数据字典 3 第三章 数据库设计 5 3.1 概念结构设计 5 3.2 逻辑结构设计 5 3.3 物理结构设计 6 第四章 应用系统设计 9 4.1概要设计 9 4.2详细设计 10 4.3系统测试 14 第五章 设计小结 18 第一章 概述 1.1 开发目的 为了进一步加强对宾馆宾客及工作人员的管理,规范宾馆行为, 减少主管部门和企业的工作量,提高工作效率,特开发此系统。 1.2 功能需求 1)使用系统的管理部门人员: a.信息要求: 能够了解宾馆的实时信息,可以查询所有的宾馆信息,并按要求管理和处理宾馆信息。 b.处理要求: 主管部门根据自身的权限,对所在辖区的位置进行管理,并能查看所在辖区的宾馆信息,有权给宾馆信息反馈,警告。 c.安全性 安全性要求: 1.系统应设置访问用户的标识以鉴别是否是合法用户,并要求合法用户设置其密码,保证用户身份不被盗用; 2.系统应对不同的数据设置不同的访问级别,限制访问用户可查询和处理数据的类别和内容; 3.系统应对不同用户设置不同的权限,区分不同的用户,如总经理,管理员等。 2)宾馆: a.信息要求: 能够填写和查看自身宾馆的信息,上报后,能查看自身信息的状态,并能修改。 b.处理要求: 当宾馆信息初次填写,和审批通过或为审批通过,则可以修改自身信息。 第二章 需求分析 2.1 数据需求 宾馆客房管理系统就是对宾客及负责员工信息的管理 1) 能够通过键盘登记客人入住信息(房号、客人姓名、入住时间、入住期限、入住押金、每日租金、客房等级、单/双/三人间) 2) 给定员工姓名,显示本员工所管理的楼层客房信息(经济、标间、豪华、单/双/三人间的入住情况(包括空闲/已入住/入住客人姓名) 3) 给定入住客人姓名,显示其入住情况(房号、姓名、已交押金、入住费用累计,入住结算) 4) 给定房号,修改押金数目(实现添加的数目和以往的数目累加) 2.2 数据字典 该系统的房间数据主要是描述房间管理中存储的所有房间信息(包括所有房间查询的所需信息),起数据字典如下表所示: 属性名 存储代码 类型 长度 房间号 RNum char 10 房间级别 Rlevel char 4 房间类型 RType char 6 该系统的员工数据主要是描述员工信息组成,其数据字典如下表所示: 属性名 存储代码 类型 长度 员工姓名 EName char 20 员工牌号 EName char 10 所管理的楼层号 EFloor Int \ 员工职务 EBusiness char 10 该系统的宾客数据字典如下表所示: 属性名 存储代码 类型 长度 入住房间号 RNum Char 10 客人姓名 GName chat 20 入住时间 GCheckintime Char 10 入住期限 GCheckinterm int \ 每日租金 GEverdayRENT int \ 入住押金 GCheckinForegift int \ 楼层号 GFloorNum Int \ 该系统的系统数据主要是用来描述宾馆住房情况的信息,其数据字典如下表所示: 属性名 存储代码 类型 长度 楼层总数 SFloorSUM int \ 每层房间数 SFreeNum Int \ 空闲数量 SFreeNum Int \ 入住数量 SCheckinNum Int \ 第三章 数据库设计(江亚波) 3.1 概念结构设计 E-R图: 所管理的楼层号 入住时间 员工牌号 入住期限 客人姓名 员工姓名 员工 管理 入住押金 宾客 日租金 空闲数量 楼层号 员工职务 房间号码 入住数量 豪华间日租金 标准房日租金 房间等级 房间 经济房日租金 房间类型 入住数量 系统信息 空闲数量 楼层总数 每层房间数量 3.2 逻辑结构设计 该设计以概念结构设计中的E-R图为主要依据,设计出相关的整体逻辑结构。根据总E-R图了解有四个实体,四个关系模式如下: 员工表(员工名,员工牌号,所管理楼层,员工职务,入住数量,空闲数量) 宾客表(宾客姓名,入住时间,入住期限,日租金,入住押金,楼层号,房间号码) 房间表(房间号,房间类型,房间等级) 系统表(经济房日租金,标准房日租金,豪华间日租金,入住数量,空闲数量,每层房间数量,楼层总数) 3.3 物理结构设计 a. 创建课程信息表的语句为: CREATE TABLE Employee( EName CHAR(20) NOT NULL, --员工姓名 ENum CHAR(10) NOT NULL, --员工牌号 EFloorNum INT NOT NULL, --所管理的楼层号 EBusiness CHAR(10) NOT NULL, --员工职务 --ECheckinNum INT DEFAULT 0, --入住数量 --EFreeNum INT NOT NULL, --空闲数量 CONSTRAINT pk_ENum PRIMARY KEY(ENum), CONSTRAINT ck_EBusiness CHECK( EBusiness IN('楼层管理员','客房领班') ), --add in program CONSTRAINT ck_ECheckinNum CHECK( ECheckinNum >= 0 ), --add in program CONSTRAINT ck_EFreeNum CHECK( EFreeNum >= 0 ), ); 输入数据后,效果如下图: b.创建宾客信息表的语句为: CREATE TABLE Guest( RNum varchar(10), --房间号码 GName CHAR(20) NOT NULL, --客人姓名 GCheckinTime DATE DEFAULT(GETDATE()), --入住时间 GCheckinTerm DATE DEFAULT(GETDATE()), --入住期限 GEverydayRent INT DEFAULT 0, --每日租金 GCheckinForegift INT DEFAULT 0, --入住押金 GFloorNum INT, --楼层号 PRIMARY KEY(RNum), FOREIGN KEY(RNum) REFERENCES Room(RNum) ON DELETE CASCADE ON UPDATE CASCADE, ); 输入数据后,结果如下图所示: c.创建房间信息表的语句为: CREATE TABLE Room( RNum varchar(10), --房间号码 RLevel CHAR(4) NOT NULL DEFAULT '标间', --房间等级:经济 标间 豪华 RType CHAR(6) NOT NULL DEFAULT '双人间', --房间类型:单人间 双人间 三人间 CONSTRAINT pk_RNum PRIMARY KEY(RNum), CONSTRAINT ck_RLevel CHECK( RLevel IN('经济','标间','豪华') ), CONSTRAINT ck_RType CHECK( RType IN('单人间','双人间','三人间') ) ); 输入数据后,效果如下图所示: d.创建系统信息表的语句为: CREATE TABLE SystemInfo( SFloorSum INT PRIMARY KEY, --楼层总数 SRSumEachF INT NOT NULL, --每层房间数量 SFreeNum INT NOT NULL, --空闲数量 SCheckinNum INT DEFAULT 0, --入住数量 SEachDRentEco INT DEFAULT 50, --each day rent for economy level SEachDRentSta INT DEFAULT 80, --each day rent for standard level SEachDRentLux INT DEFAULT 150, --each day rent for luxury level CONSTRAINT SFloorSum CHECK( SFloorSum > 0 ), CONSTRAINT SRSumEachF CHECK( SRSumEachF > 0 ), CONSTRAINT ck_SCheckinNum CHECK( SCheckinNum >= 0 ), CONSTRAINT ck_SFreeNum CHECK( SFreeNum >= 0 ), CONSTRAINT ck_SEachDRentEco CHECK( SEachDRentEco > 0 ), CONSTRAINT ck_SEachDRentSta CHECK( SEachDRentSta > 0 ), CONSTRAINT ck_SEachDRentLux CHECK( SEachDRentLux > 0 ) ); 输入数据后,效果如下图所示: 第四章 应用系统设计(刘涛) 4.1概要设计 输入: 程序正常运行后,屏幕上显示一个文字菜单(根据序号选定相应的操作项目),当用户选定操作项目所对应的序号时,根据应用程序的提示信息,从键盘上输入相应的数据。 输出: 1) 应用程序正常运行后,要在屏幕上显示一个文字菜单 2) 要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等 系统功能模块图: COpBase类——数据库操作 CBaCombox类——combox控件的基本操作 CDeCCHead类——主窗口的combox控件操作 CDeCCAdd类——[增加...]选项的combox控件操作 CEmployee类——员工操作 CGuest类——宾客与房间操作 4.2详细设计 1)数据库操作: class COpBase{ public: bool ConnectDatabase(); void OpenRecordSet( const string &str ); void CloseRecordSet(); void CloseDatabase(); void Execute( const char *ch ); ~COpBase(){} protected: _ConnectionPtr _pConnection;//建立Connection对象的指针 _RecordsetPtr _pRecordset; }; ////////////////////////////////////////////////////////////////////////// class CEmployee: public COpBase{ public: void InitSysInfo(); void InitEmployee(); void ClearEmployee(); void SetEmployeeInfo( const string &str, int i ){ _employee[i] = str; } void AddEmployee( HWND ); void AmendEmployee(); // TABLE SystemInfo operation void SaveSysInfo(); void SetSysInfo(); void IncSysInfo(); void DecSysInfo(); int GetSysInfo( int i ){ return _system[i]; } // search string void SetSearchStr( const string &str ){ _SearchStr = str; } void SetSearchIndex( const int &Search ){ _SearchIndex = Search; } size_t GetcolumnSize(){ return _columnSet.size(); } vector<string>& GetColumnSet(){ return _columnSet; } typedef map<int,vector<_variant_t> > Map_IVal; typedef map<int,vector<_variant_t> >::value_type Map_IVal_ValType; typedef vector< vector<_variant_t> * > VecVec_Var; VecVec_Var& EdataSet(){ return _EdataSet; } Map_IVal& EdataSetAd(){ return _EdataSetAd; } Map_IVal& EdataSetFm(){ return _EdataSetFm; } size_t GetdataSetSize(){ return _EdataSet.size(); } void DisplayE( CListView &ListView ); protected: string PLoadSQLstrE(); // index of combo box HEAD_CC_SEARCH int _SearchIndex; // search string string _SearchStr; // System information // 0:_SFloorSum(maximum room number)、1:_SRSumEachF(the number of floor) // 2:_SFreeNum(the number of free rooms)、3:_SCheckinNum(the number of checking in ) // 4:_SEachDRentEco、5:_SEachDRentSta、6:_SEachDRentLux static const int NSysSize = 7; int _system[NSysSize]; // key: floor number // value: dataset Map_IVal _EdataSetAd; // 楼层管理员 Map_IVal _EdataSetFm; // 客房领班(guest room foreman) vector< vector<_variant_t> * > _EdataSet; // employee information // 0:_EName、1:_ENum、2:_EFloorNum、3:_EBusiness、4:_ECheckinNum、5:_EFreeNum static const int N = 6; string _employee[N]; vector<string> _columnSet; }; ////////////////////////////////////////////////////////////////////////// class CGuest: public CEmployee{ public: // operate to database void AddGuest( HWND hwnd, HWND hwndHead, CDeCCAdd &cbAdd ); void InitGuest(); void ClearGuest(){ _dataSet.clear(); } void SetRoomInfo( const string &str, int i ){ _room[i] = str; } void SetGuestInfo( const string &str, int i ){ _guest[i] = str; } size_t GetdataSize(){ return _dataSet.size(); } vector< vector<_variant_t> >& dataSet(){ return _dataSet; } void DisplayG( CListView &ListView ); // set detail information void SetDetInfoG( HWND hwnd, int index ); // set detail information to database void SetDBDetInfoG( HWND hwnd, int index ); void DelCurGuest( HWND, CDeCCAdd& ); void DelDBGuest( HWND ); ~CGuest(){} private: string PLoadSQLstring(); void PCreateDataSet(); // guest information // 0:_GName、1:_GCheckinTime、2:_GEverydayRent // 3:_GCheckinForegift、4:_GFloorNum static const int sciGuestN = 5; string _guest[sciGuestN]; // room information // 0:_RNum、1:_RLevel、2:_RType static const int sciRoomN = 3; string _room[sciRoomN]; vector< vector<_variant_t> > _dataSet; }; 2)combobox控件操作: class CBaCombobox{ public: CBaCombobox( HWND hwndParent, CGuest &data, int baseIndex ): _hwndParent(hwndParent),_data(data), _baseIndex(baseIndex){} void Clear( int baseIndex, int num ); /*virtual ~CBaCombobox() = 0;*/ protected: HWND _hwndParent; CGuest &_data; // store the first address of the sequence of the Combo Box IDs int _baseIndex; }; class CDeCCHead: public CBaCombobox{ public: CDeCCHead( HWND hwndParent, CGuest &data, int baseIndex ): CBaCombobox(hwndParent, data, baseIndex){} void SetGuest(); void SetEmployee(); void SetRoom(); // update combo box information bool UpadateCBInfo(); bool UpadateCBEmployee(); /*~CDeCCHead(){}*/ private: void PSetGuestRoom(); }; class CDeCCAdd: public CBaCombobox{ public: CDeCCAdd( HWND hwndParent, CGuest &data, int baseIndex ): CBaCombobox(hwndParent, data, baseIndex){} void SetGuest(); void SetEmployee(); void SetRoom(); void ClearGuest(); void Init(); void SethwndParent( HWND hwndParent ){ _hwndParent = hwndParent; } void IncFRoom( int floor, int room ); void DecFRoom( int floor, int room ); void TestEmployee( int ); void SetCurGuest(); void SetType(); /*virtual ~CDeCCAdd(){}*/ private: void PAssitGuest( int rtype, int level, int floor ); vector< vector<bool> > _FreeRoom; vector< int > _FRoomEachF; // free rooms each floor }; 4.3系统部分功能测试 1) 登陆界面如下: 2) 运行界面: 2.1)文件——>添加 2.1.1)添加顾客 2.1.2)添加员工 2.2)帮助——>关于: 第五章 设计小结 1. 在开发一个系统时,前期的分析准备工作非常的重要。对于系统的需求要明确,这样才能做到有的放矢。特别是对于系统中数据的存储和重要算法的设计,设计的不好会出现大量的冗余,不仅浪费存储空间,还影响查询效率。 2.在设计的初期,对一个功能模块的设计,要想出两种或两种以上方案,这样可以进行比较,从而获得更佳的设计方案,设计开发过程中一定要吸取经验教训,避免返工。尤其是一些重要算法或功能。在对具体实现功能模块进行编程时,要养成良好的加注释的习惯,这样的话不仅能理清思路,而且可以为以后的调试带来很大的方便。 3. 懂得充分利用网络资源,因为实地调研的时间是非常有限的,所以需求分析中大部分分析结构都是在我阅读专业书籍,网络资料后得出的。 参考文献: [1] 卢湘江,李向荣,晏子. MySQL高级配置和管理. 北京:清华大学出版社, [2] 萨师煊,王珊. 数据库系统概论. 北京:高等教育出版社 [3] 张海藩. 软件工程. 北京:人民邮电出版社, [4]孙明丽,王斌.sql server 2005 数据库系统开发.北京,人民邮电出版社 [5]苗雪兰.数据库系统原理及应用教程[M].北京,机械工业出版社. [6] Scott Meyers, Effective C++ Third Edition. Addison Wesley Professional [7] Charles Petzold, Programming Windows. 数据库原理课程设计 宾馆客房管理系统 系 、 部:计算机与信息科学系 学生姓名: 江 亚 波 学 号: 09301040328 合作伙伴: 刘 涛 专 业: 计算机科学与技术 班 级: 计本0903班 完成时间: 2011.12.25
展开阅读全文

开通  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 

客服