1、目录第一章 概述21.1 开发目的21.2 功能需求2第二章 需求分析32.1 数据需求32.2 数据字典3第三章 数据库设计53.1 概念结构设计53.2 逻辑结构设计53.3 物理结构设计6第四章 应用系统设计94.1概要设计94.2详细设计104.3系统测试14第五章 设计小结18第一章 概述1.1 开发目的 为了进一步加强对宾馆宾客及工作人员的管理,规范宾馆行为, 减少主管部门和企业的工作量,提高工作效率,特开发此系统。1.2 功能需求1)使用系统的管理部门人员: a.信息要求:能够了解宾馆的实时信息,可以查询所有的宾馆信息,并按要求管理和处理宾馆信息。b.处理要求: 主管部门根据自身
2、的权限,对所在辖区的位置进行管理,并能查看所在辖区的宾馆信息,有权给宾馆信息反馈,警告。c安全性安全性要求:1.系统应设置访问用户的标识以鉴别是否是合法用户,并要求合法用户设置其密码,保证用户身份不被盗用;2.系统应对不同的数据设置不同的访问级别,限制访问用户可查询和处理数据的类别和内容;3.系统应对不同用户设置不同的权限,区分不同的用户,如总经理,管理员等。2)宾馆: a.信息要求:能够填写和查看自身宾馆的信息,上报后,能查看自身信息的状态,并能修改。b.处理要求:当宾馆信息初次填写,和审批通过或为审批通过,则可以修改自身信息。第二章 需求分析2.1 数据需求宾馆客房管理系统就是对宾客及负责
3、员工信息的管理1) 能够通过键盘登记客人入住信息(房号、客人姓名、入住时间、入住期限、入住押金、每日租金、客房等级、单/双/三人间)2) 给定员工姓名,显示本员工所管理的楼层客房信息(经济、标间、豪华、单/双/三人间的入住情况(包括空闲/已入住/入住客人姓名)3) 给定入住客人姓名,显示其入住情况(房号、姓名、已交押金、入住费用累计,入住结算) 4) 给定房号,修改押金数目(实现添加的数目和以往的数目累加)2.2 数据字典该系统的房间数据主要是描述房间管理中存储的所有房间信息(包括所有房间查询的所需信息),起数据字典如下表所示:属性名存储代码类型长度房间号RNumchar10房间级别Rleve
4、lchar4房间类型RTypechar6该系统的员工数据主要是描述员工信息组成,其数据字典如下表所示:属性名存储代码类型长度员工姓名ENamechar20员工牌号ENamechar10所管理的楼层号EFloorInt员工职务EBusinesschar10该系统的宾客数据字典如下表所示:属性名存储代码类型长度入住房间号RNumChar10客人姓名GNamechat20入住时间GCheckintimeChar10入住期限GCheckintermint每日租金GEverdayRENT int入住押金GCheckinForegift int楼层号GFloorNum Int 该系统的系统数据主要是用来描
5、述宾馆住房情况的信息,其数据字典如下表所示:属性名存储代码类型长度楼层总数SFloorSUMint每层房间数SFreeNumInt空闲数量SFreeNumInt入住数量SCheckinNumInt第三章 数据库设计(江亚波)3.1 概念结构设计E-R图:所管理的楼层号入住时间员工牌号入住期限客人姓名员工姓名 员工管理入住押金 宾客日租金空闲数量楼层号员工职务房间号码入住数量豪华间日租金标准房日租金房间等级 房间经济房日租金房间类型入住数量 系统信息空闲数量楼层总数每层房间数量3.2 逻辑结构设计该设计以概念结构设计中的E-R图为主要依据,设计出相关的整体逻辑结构。根据总E-R图了解有四个实体,
6、四个关系模式如下:员工表(员工名,员工牌号,所管理楼层,员工职务,入住数量,空闲数量)宾客表(宾客姓名,入住时间,入住期限,日租金,入住押金,楼层号,房间号码)房间表(房间号,房间类型,房间等级)系统表(经济房日租金,标准房日租金,豪华间日租金,入住数量,空闲数量,每层房间数量,楼层总数)3.3 物理结构设计a. 创建课程信息表的语句为:CREATE TABLE Employee(EName CHAR(20) NOT NULL,-员工姓名ENum CHAR(10) NOT NULL,-员工牌号EFloorNum INT NOT NULL,-所管理的楼层号EBusiness CHAR(10) N
7、OT 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 ),);输入
8、数据后,效果如下图: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)
9、 REFERENCES Room(RNum)ON DELETE CASCADEON 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
10、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 le
11、velSEachDRentSta INT DEFAULT 80,-each day rent for standard levelSEachDRentLux INT DEFAULT 150, -each day rent for luxury levelCONSTRAINT SFloorSum CHECK( SFloorSum 0 ),CONSTRAINT SRSumEachF CHECK( SRSumEachF 0 ),CONSTRAINT ck_SCheckinNum CHECK( SCheckinNum = 0 ),CONSTRAINT ck_SFreeNum CHECK( SFreeN
12、um = 0 ),CONSTRAINT ck_SEachDRentEco CHECK( SEachDRentEco 0 ),CONSTRAINT ck_SEachDRentSta CHECK( SEachDRentSta 0 ),CONSTRAINT ck_SEachDRentLux CHECK( SEachDRentLux 0 );输入数据后,效果如下图所示: 第四章 应用系统设计(刘涛)4.1概要设计输入: 程序正常运行后,屏幕上显示一个文字菜单(根据序号选定相应的操作项目),当用户选定操作项目所对应的序号时,根据应用程序的提示信息,从键盘上输入相应的数据。输出: 1) 应用程序正常运行后
13、,要在屏幕上显示一个文字菜单2) 要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等系统功能模块图:COpBase类数据库操作CBaCombox类combox控件的基本操作CDeCCHead类主窗口的combox控件操作CDeCCAdd类增加.选项的combox控件操作CEmployee类员工操作CGuest类宾客与房间操作4.2详细设计1)数据库操作:class COpBasepublic:bool ConnectDatabase();void OpenRecordSet( const string &str ); void CloseRecordSet()
14、;void CloseDatabase();void Execute( const char *ch );COpBase()protected:_ConnectionPtr _pConnection;/建立Connection对象的指针_RecordsetPtr _pRecordset;/class CEmployee: public COpBasepublic:void InitSysInfo();void InitEmployee();void ClearEmployee();void SetEmployeeInfo( const string &str, int i ) _employe
15、ei = str; void AddEmployee( HWND );void AmendEmployee();/ TABLE SystemInfo operationvoid SaveSysInfo();void SetSysInfo();void IncSysInfo();void DecSysInfo();int GetSysInfo( int i ) return _systemi; / search stringvoid SetSearchStr( const string &str ) _SearchStr = str; void SetSearchIndex( const int
16、 &Search ) _SearchIndex = Search; size_t GetcolumnSize() return _columnSet.size(); vector& GetColumnSet() return _columnSet; typedef mapint,vector Map_IVal;typedef mapint,vector :value_type Map_IVal_ValType;typedef vector vector * VecVec_Var;VecVec_Var& EdataSet() return _EdataSet; Map_IVal& EdataSe
17、tAd() 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_SEARCHint _SearchIndex;/ search stringstring _SearchStr;/ System information/ 0:_SFl
18、oorSum(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:_SEachDRentLuxstatic const int NSysSize = 7;int _systemNSysSize;/ key: floor number/ value: datasetMap_IVal _EdataSetA
19、d; / 楼层管理员Map_IVal _EdataSetFm; / 客房领班(guest room foreman)vector vector * _EdataSet;/ employee information/ 0:_EName、1:_ENum、2:_EFloorNum、3:_EBusiness、4:_ECheckinNum、5:_EFreeNumstatic const int N = 6;string _employeeN;vector _columnSet;/class CGuest: public CEmployeepublic:/ operate to databasevoid
20、AddGuest( HWND hwnd, HWND hwndHead, CDeCCAdd &cbAdd );void InitGuest();void ClearGuest() _dataSet.clear(); void SetRoomInfo( const string &str, int i ) _roomi = str; void SetGuestInfo( const string &str, int i ) _guesti = str; size_t GetdataSize() return _dataSet.size(); vector vector & dataSet() re
21、turn _dataSet; void DisplayG( CListView &ListView );/ set detail informationvoid SetDetInfoG( HWND hwnd, int index );/ set detail information to databasevoid SetDBDetInfoG( HWND hwnd, int index );void DelCurGuest( HWND, CDeCCAdd& );void DelDBGuest( HWND );CGuest()private:string PLoadSQLstring();void
22、 PCreateDataSet();/ guest information/ 0:_GName、1:_GCheckinTime、2:_GEverydayRent/ 3:_GCheckinForegift、4:_GFloorNumstatic const int sciGuestN = 5;string _guestsciGuestN;/ room information/ 0:_RNum、1:_RLevel、2:_RTypestatic const int sciRoomN = 3;string _roomsciRoomN;vector vector _dataSet;2)combobox控件
23、操作:class CBaComboboxpublic: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
24、 the Combo Box IDsint _baseIndex;class CDeCCHead: public CBaComboboxpublic:CDeCCHead( HWND hwndParent, CGuest &data, int baseIndex ): CBaCombobox(hwndParent, data, baseIndex) void SetGuest(); void SetEmployee(); void SetRoom(); / update combo box information bool UpadateCBInfo(); bool UpadateCBEmplo
25、yee(); /*CDeCCHead()*/private:void PSetGuestRoom();class CDeCCAdd: public CBaComboboxpublic:CDeCCAdd( HWND hwndParent, CGuest &data, int baseIndex ): CBaCombobox(hwndParent, data, baseIndex)void SetGuest();void SetEmployee();void SetRoom();void ClearGuest();void Init();void SethwndParent( HWND hwndP
26、arent ) _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 _FreeRoom;vector _FRoomEachF; / free
27、rooms each floor;4.3系统部分功能测试1) 登陆界面如下:2) 运行界面:2.1)文件添加2.1.1)添加顾客2.1.2)添加员工2.2)帮助关于:第五章 设计小结1. 在开发一个系统时,前期的分析准备工作非常的重要。对于系统的需求要明确,这样才能做到有的放矢。特别是对于系统中数据的存储和重要算法的设计,设计的不好会出现大量的冗余,不仅浪费存储空间,还影响查询效率。2.在设计的初期,对一个功能模块的设计,要想出两种或两种以上方案,这样可以进行比较,从而获得更佳的设计方案,设计开发过程中一定要吸取经验教训,避免返工。尤其是一些重要算法或功能。在对具体实现功能模块进行编程时,要养
28、成良好的加注释的习惯,这样的话不仅能理清思路,而且可以为以后的调试带来很大的方便。3. 懂得充分利用网络资源,因为实地调研的时间是非常有限的,所以需求分析中大部分分析结构都是在我阅读专业书籍,网络资料后得出的。参考文献:1 卢湘江,李向荣,晏子. MySQL高级配置和管理. 北京:清华大学出版社,2 萨师煊,王珊. 数据库系统概论. 北京:高等教育出版社3 张海藩. 软件工程. 北京:人民邮电出版社,4孙明丽,王斌.sql server 2005 数据库系统开发.北京,人民邮电出版社5苗雪兰.数据库系统原理及应用教程M.北京,机械工业出版社.6 Scott Meyers, Effective C+ Third Edition. Addison Wesley Professional7 Charles Petzold, Programming Windows. 数据库原理课程设计 宾馆客房管理系统 系 、 部:计算机与信息科学系 学生姓名: 江 亚 波 学 号: 09301040328 合作伙伴: 刘 涛 专 业: 计算机科学与技术 班 级: 计本0903班 完成时间: 2011.12.25