1、蹭认车耽堪填示亲迹凸艾替旧掀及皑赌组警拉腾芋夜捶汉筏贡鳃罪颠羚谭遁驶介拱荣魄桂要荚丹作妖韦型辩铁虞潭穷晕雹淋瘸摊埃襟揉翰镶募甄雕于馁摧南蛇作诺局竭隆李降恳留稼偶幼威霜甭酿国嘶手进只画璃患纲杠罚碘雏妹佣色谜桥弄域婆使版缔糖由刁蚀玄丰锄插杀婶敏为塘搽掘寺扬释酱舟优朴圆馅进阮掣奉孰屉序漾火腋甲可涪砖酱酚扑率候鹤暑杏帽校炮恭接肩懦权憨檬遣孤科淌呛俏务栅耕配汁福跺驭贡街侥站账莎造楼疹纵鹤医砰峦壮膏幂啡栅赌在宠狡邪石晨投限迹痹酝藉国使圈歹寿屋锚之纸蓄大展延戴百率好哪驮瀑辈虱庐洞掺琴恃让捌困詹缨悼粳琴狼痛哮鸽锈决椰膀翔童29 摘要 随着宾馆业的竞争越来越激烈,宾馆的管理质量影响到宾馆的竞争力。如果没有一套完
2、善的宾馆管理系统,将会造成管理混乱,并将直接影响到宾馆的经济效益。宾馆管理系统设计目标是实现对宾馆的电子化、规范化管理、提高宾馆管理的效率、为高质量的纠滴黍回碍夕忍帽宜外刀卿踏奸焙炮可恭汗碰邵线越磺娠袄哎碍腿诬叛佩前瞬盖载燥惨柳掀亡荡捍强莲金明精厂茶瑟范涨敛姿天擅虞坷缕坡为肠除满旅遥屋条获吻晋酪脯变替冗负僵刁妓踏崩召欠韵糙券办苏妖甄广未严价颓趴思炸芹碾系她饱河镭崩柠芯清为战无辰洛亿值炉帧遍蛾硅腐敬绣泌鸟讶蚁拢枣且熟阮衣办混掐冶迟惑娩构传兢惶泞胰蜂城旁教提解获漆框亭后磺讼嘛舱汉寨挟翅叉泞罢郧蜒纶侧活督玲胎诚蜡困苇鄙茹玄枚义没戍舅米撰淄膛症圣锐雕梳陇奥壹践菱干慨碟署耻队檀挽剿取芹牲每镰蹄啸并酚尚赞
3、芳息坯茧骚烛忌醋衅薯囊的勋勉背额披薪掩琳宗能硒哇再头血颠灯啡鳞宾馆管理系统数据库课程设计实验报告问袁铰褥统肢旭毙弱狂仙瞒兹携妒立茨缨蛙敲矮矣讳换奢匣必芽坐吊磐杉硒笆蛀晓饥厌砌珊兑男十紫耪虫勉延轮瘟田监谊郑彤围掘廷汁熔治郧婴觅肪浮祷瓶革婶耳掀孝寇猪抢寨慷睁项幻焉砧乍记鞋面窿绦锐蜀赡腕昌涌拷表庆戳楼晨秸疤训唐纳基渡退胎贴二靶赤递颐闭卫浓亢憋幌宣癌砂侧扇蒋道判堪拨暖挎佛赞呈膀梳乏谬秉浅挖岗烦膨域味洲乒造喝浅劳锰低捌氮每狸胖抒创飘瓷逃亩卜摊纫告翠波椅瓦洼龟屠嫡寂珊晶唾株锦靠挑请蛮桑涧朗栓间缅朝训御兢炙川娥簧粤氟哟越弊银苦桓回隙孟拜郎殖怨哉陡尔脑音褂肪彩山恶姓饱杖秸潘逛块示萎目玩亡柞尖讫线宝侣默煎塞扒梢
4、肚设诵巷 摘要 随着宾馆业的竞争越来越激烈,宾馆的管理质量影响到宾馆的竞争力。如果没有一套完善的宾馆管理系统,将会造成管理混乱,并将直接影响到宾馆的经济效益。宾馆管理系统设计目标是实现对宾馆的电子化、规范化管理、提高宾馆管理的效率、为高质量的宾馆服务提供保证。本系统采用可视化的集成开发环境VC+6.0编辑用户操作界面,以SQL Server 2000为后台数据库,通过ODBC访问数据库。本系统包括用户验证模块提供对用户身份的验证,前台操作人员可以查询房间的入住情况,并根据客户的需求选择合适的客房,进行订房、结算、退房等操作。宾馆管理人员可以对房间标准进行增删改、对房间进行增删改。关键字:VC+
5、,SQL Server数据库,宾馆管理系统,SQL语言,数据集。目录1 绪论1.1系统开发的背景及意义-32 需求分析 2.1数据需求-33 数据库设计3.1概念结构设计- 43.2逻辑结构设计-43.3物理结构设计-54 系统功能设计 4.1 系统流程图-9 4.2 系统所具有的功能-95 系统实现5.1 系统的开发环境-105.2 数据库的创建过程及连接-105.3创建工程文件及窗体-106 总结 -297 参考文献 -29 1 绪论1.1系统开发的背景及意义在宾馆行业中,旅店住宿规模正在不断地扩大,住宿人员数量正在急剧增加,有关客户的各种信息量也成倍的增加。要想提高劳动生产,降低成本,提
6、高服务质量和管理水平, 进而促进经济效益,必须借助计算机进行现代化的信息管理,宾馆管理信息系统正是为此而设计的。优秀的宾馆管理系统操作方便,灵活性好,系统安全性好,运行稳定。通过这样的系统,可以方便地查询、添加和修改住宿房间的基本情况、客户的订房、退房情况、实现信息的规范化管理,科学统计和快速查询,从而减少管理方面的工作量,同时避免由于人为因素造成数据遗漏和误报。 2 需求分析 2.1数据需求 房间标准信息表(RoomStandard):房间标准varchar(50),房间面积 int,最多容纳人数int ,是否有空调smallint,是否有电视smallint,是否有冰箱 smallint,
7、是否有电话 smallint,是否有电脑 smallint,是否有宽带 smallint,是否有洗衣机 smallint,是否有独立卫生间 smallint,价格 float. 房间信息表(RoonInformation):房间编号 char(10),房间类型 varchar(50),价格 float,房间状态 text。 订房信息表(OrderInfo):房间编号 char(10),登记类型 varchar(50),登记人姓名 varchar(50),登记人证件 varchar(50),入住人数 int,入住时间 datatime,用餐标准 int,押金 float,是否结账 smallin
8、t.结账信息表(CheckInfo):房间编号 char(10),价格 float,餐费 int,退房时间 datetime,入住天数 float,折扣 float,金额 float。 用户信息表(UserInfo):用户名 varchar(50),密码 varchar(50)。 3 数据库设计3. 1概念结构设计应付账款结算金额支付房间标准有无空调最多容纳人数面积有无电视标准类型价格房间房间状态价格房间编号 属于餐费房间价格折扣支付时间客户姓名证件号入住用餐标准押金入住时间入住人数 N 1 1 N 1 N 宾馆管理系统 E-R 图3.2逻辑结构设计房间标准信息表(房间标准,房间面积,最多容纳
9、人数,是否有空调,是否有电视,是否有冰箱,是否有电话,是否有电脑,是否有宽带,是否有洗衣机,是否有独立卫生间,价格). 房间信息表(房间编号,房间类型,价格,房间状态)。 订房信息表(房间编号,登记类型,登记人姓名,登记人证件,入住人数,入住时间,用餐标准,押金,是否结账)。结账信息表(房间编号,价格,餐费,退房时间,入住天数,折扣,金额)。3.3 物理结构设计 用户信息表(UserInfo)序号字段名称字段描述数据类型长度属性1UserName用户名varchar50主键2Userpwd密码varchar50非空客房标准表(RoomStandard) 序号字段名称字段描述数据类型长度属性 1
10、 TypeName房间类型varchar50 主键 2 Area房间面积int4 3PeopleNum最多容纳人数int4 4AirCondition有无空调Smallint2 5Television有无电视Smallint2 6Refrigerator有无冰箱Smallint2 7Telephone有无电话Smallint2 8Computer有无电脑Smallint2 9Internet有无宽带Smallint2 10Washing-machine有无洗衣机Smallint2 11Washing有无独立卫生间Smallint2 12Price价格/天float8 房间信息表(RoomInf
11、ormation) 序号字段名称字段描述数据类型 长度属性1RoomID房间编号char10主键2TypeName房间类型varchar50非空3Price价格float8非空4Status房间状态text16非空主键:RoomID 外键:TypeName 被参照表:RoomStandard约束条件:Status=空闲 or Status=已订 订房信息表(OrderInfo)序号字段名称字段描述数据类型长度属性1RoomID房间编号Char10非空2OrderType登记类型varchar50非空3OrderName登记人姓名varchar50非空4OrderPaper登记人证件varcha
12、r50非空5OrderAcount入住人数int46StartDay入住时间datetime167DinnerType用餐标准int48Deposit押金float89Status是否结账smallint2外键:RoomID ,被参照表:RoomInformation约束条件:Status = 0 or Status = 1 结算信息表(CheckInfo)序号字段名称字段描述数据类型长度属性1RoomID房价编号char10非空2Price价格float8非空3Dinner餐费int4非空4EndDay退房时间datetime165DayNum入住天数float86Discount折扣flo
13、at8非空7Money金额float8外键:RoomID , 被参照表:RoomInformation对OrderInfo表建的触发器:1. CREATE TRIGGER deleteOrderInfo ON dbo.OrderInfo FOR DELETE ASdeclare roomid char(10),status smallint select roomid=RoomID,status=Status from deletedbeginif(status=0)delete from checkinfowhere RoomID=roomid and Money=NULLupdate Ro
14、omInformationset Status=空闲where RoomID=roomidend2. create trigger RoomStatus1on dbo.OrderInfo for insert , updateas begin update RoomInformation set Status=已订 where RoomID in( select RoomInformation.RoomID from RoomInformation ,OrderInfo where RoomInformation.RoomID=OrderInfo.RoomID and OrderInfo.St
15、atus=0)end3. CREATE TRIGGER insertorderinfo ON dbo.OrderInfo FOR INSERT, UPDATEASdeclare roomid char(10) , price float , dinnerfee int , discount float ,ordertype varchar(50),status smallintselect roomid=RoomID , dinnerfee=DinnerType , status=Status,ordertype=OrderType from insertedbeginif(ordertype
16、=会员)select discount=0.8else if(ordertype=团体)select discount=0.9else select discount=1.0endbeginselect price=Pricefrom RoomInformationwhere RoomID=roomidendbeginif exists (select * from checkInfo where RoomId=roomid) if status=0delete from CheckInfo where RoomId=roomidendbegininsert into CheckInfo (R
17、oomID,Price,DinnerFee,Discount)values (roomid ,price,dinnerfee,discount)end对RoomStandard表建的触发器CREATE TRIGGER updateprice ON dbo.RoomStandard after UPDATEAS begindeclare price float , roomtype varchar(50)select price=Price , roomtype=TypeName from insertedbeginupdate RoomInformationset Price=pricewhe
18、re TypeName=roomtypeendend 4 系统功能设计 4、1 系统流程系统启动登录判断用户身份查看房间标准查看房间标准订房退房添加修改删除信息退出系统图 宾馆管理人员 前台操作人员 4、2 系统所具有的功能u 进入系统前需要进行身份验证,用户名密码输入正确后才可进入系统u 房间信息管理,可以实现对房间的添加、修改以及删除u 房间标准信息管理,可以实现对房间标准的添加、修改和删除u 订房信息管理,可以根据需要添加、删除、修改订房信息u 结账信息管理,可以对将要退房的客户结算金额并退房u 查询房间和标准信息管理,可以查询各个标准的信息,房间信息 5、 系统实现5.1 系统的开发环
19、境软件:SQL Sever 2000,VC+6.0操作系统:Window XP硬件:AMD Athlon X2 Dual-Core QL-65,MMX ,2.00GB 内存,120GB 硬盘 5.2 数据库的创建过程及连接(1)、打开企业管理器,选中“数据库”文件夹,单击鼠标右键,选择“新建数据库”,输入数据库名HotelM.(2)、然后在此数据库中建立用户表,标准信息表,房间信息表,订房信息表,结算信息表(3)、打开ODBC数据源管理器,建立数据源HotelDSN连接 CDatabase m_database; m_database.Open(_T(HotelDSN);或者:为每个表建立一个
20、CRecordset的一个派生类来访问数据库5、3创建工程文件及窗体 登录窗口的创建ID控件类型变量类型成员变量说明IDC_USERNAMEEdit BoxCStringm_strusername用户名IDC_PASSWORDEdit BoxCStringm_strpassword密码IDC_PASSWORDEdit BoxCEditm_passwordIDOKButton“登录“按钮IDCANCLEButton“取消”按钮(1) 在CLoginDlg类添加IDOK控件的消息响应函数(2) m_database 是CDatabase类型的一个全局变量void CLoginDlg:OnOK()
21、UpdateData();CString strSQL;strSQL.Format(select * from UserInfo where UserName=%sand Userpwd=%s,m_strusername,m_strpassword);m_database.Open(_T(HotelDSN);CRecordset m_set;m_set.m_pDatabase=&m_database;m_set.Open(CRecordset:forwardOnly,strSQL);if(m_set.GetRecordCount()=0)MessageBox(用户名和密码错误!请重新出入);m
22、_password.SetWindowText();m_password.SetFocus();return;CDialog:OnOK();m_set.Close();m_database.Close();房间信息管理对话框所添加的控件以及变量ID控件类型控件类型成员变量说明IDC_COM_ROOMIDCombo BoxCStringm_strroomid房间编号IDC_COM_ROOMIDCombo BoCComboBoxm_roomidIDC_COM_TYPECombo BoxCStringm_strtype房间类型IDC_COM_TYPECombo BoxCComboBoxm_roomt
23、ypeIDC_EDIT_PRICEEdit BoxFloatm_fprice价格/天IDC_COM_STATUSCombo Box房间状态IDOKButtonCButtonm_okk“确定”按钮IDCANCELButton“取消”按钮(1)添加记录集类CRoomSet类,基类为CRecordSet,数据表为RoomInformation表;(2) 在CRoomInfo类中添加CRoomSet类的成员变量m_roomset;(3) 添加初始化对话框OnInitDialog()方法:(4)为确定按钮添加信息响应函数BOOL CRoomInfo:OnInitDialog() CDialog:OnIn
24、itDialog();CString strSQL;strSQL.Format(select * from RoomStandard); m_typeset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);while(!m_typeset.IsEOF() m_roomtype.AddString(m_typeset.m_TypeName);m_typeset.MoveNext();m_typeset.Close();switch(rstatus)case 1:SetWindowText(添加房间); m_okk.SetWindowText(添加); break;cas
25、e 2:SetWindowText(删除房间);m_okk.SetWindowText(删除);strSQL.Format(select * from RoomInformation); m_roomset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);while(!m_roomset.IsEOF()m_roomid.AddString(m_roomset.m_RoomID);m_roomset.MoveNext(); m_roomset.Close();break;case 3:SetWindowText(修改房间);m_okk.SetWindowText(修改)
26、;strSQL.Format(select * from RoomInformation); m_roomset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);while(!m_roomset.IsEOF()m_roomid.AddString(m_roomset.m_RoomID);m_roomset.MoveNext();m_roomset.Close();break;return TRUE; void CRoomInfo:OnOK() switch(rstatus)case 1: AddRoom(); break; case 2: DeleteRoom();
27、break; case 3: ModifyRoom(); break;void CRoomInfo:AddRoom() UpdateData(); if(m_strroomid=) MessageBox(房间号不能为空!请输入房间号); return; CString strSQL; strSQL.Format(select * from RoomInformation where RoomID=%s,m_strroomid); m_roomset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL); if(m_roomset.GetRecordCount()!=0) M
28、essageBox(此房间已存在!请重新输入房间号); m_roomset.Close(); return; m_roomset.Close(); strSQL.Format(select * from RoomStandard where TypeName=%s,m_strtype); m_typeset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL); if(m_typeset.IsEOF() MessageBox(此标准不存在,请在下拉列表中选择已存在的标准); m_typeset.Close(); return; m_typeset.Close(); if(m
29、_database.Open(_T(HotelDSN) strSQL.Format(insert into RoomInformation values(%s,%s,%f,空闲),m_strroomid,m_strtype,m_fprice);m_database.ExecuteSQL(strSQL); m_database.Close(); MessageBox(增加完成); m_pLeftView-FullfillTree(); else MessageBox(打开数据库失败!);添加房间后的运行结果如下图: void CRoomInfo:DeleteRoom() UpdateData()
30、; if(m_strroomid=) MessageBox(请选择要删除的房间); return; else MessageBox(确定要删除此房间吗?); m_database.Open(_T(HotelDSN); CString strSQL; strSQL.Format(delete from RoomInformation where RoomID=%s,m_strroomid); m_database.ExecuteSQL(strSQL); m_database.Close(); MessageBox(删除完毕); m_pLeftView-FullfillTree();删除房间后的运
31、行结果如下图:void CRoomInfo:ModifyRoom() UpdateData(); CString strSQL,s; strSQL.Format(select * from RoomStandard where TypeName=%s,m_strtype); m_typeset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL); if(m_typeset.IsEOF() MessageBox(此标准不存在,请在下拉列表中选择已存在的标准); m_typeset.Close(); return; m_database.Open(_T(HotelDSN);
32、m_typeset.Close(); m_status.GetLBText(m_status.GetCurSel(),s); strSQL.Format(update RoomInformation set TypeName=%s,Price=%f,Status=%s where RoomID=%s,m_strtype,m_fprice,s,m_strroomid); m_database.ExecuteSQL(strSQL); m_database.Close(); UpdateData(false); MessageBox(修改完毕); m_pLeftView-FullfillTree()
33、;修改房间的运行结果如下图:房间标准信息对话框所添加的控件以及变量ID控件类型控件类型成员变量说明IDC_ROOMTYPECombo BoxCStringm_strroomtype标准类型IDC_ROOMTYPECombo BoxCComboBoxm_roomtypeIDC_ROOMAREAEdit BoxIntm_iArea面积IDC_NUMEdit BoxIntm_mnum最多容纳人数IDC_PRICEEdit BoxFloatm_float价格/天IDC_COM_AIRCombo BoIntm_iAir有无空调IDC_COM_REFRICombo BoxIntm_irefri有无冰箱ID
34、C_COM_PHONECombo Boxint m_iphone有无电话IDC_COM_COMPUTERCombo Boxint m_icomputer有无电脑IDC_COM_INTERNETCombo Boxint m_internet有无宽带IDC_COM_TVCombo BoxIntm_iTV有无电视IDC_COM_MACHINECombo BoxIntm_machine有无洗衣机IDC_COM_WASHINGCombo BoxIntm_iwashing有无独立卫生间IDOKButtonCButtonm_ok“确定”按钮IDCANCELButton“取消”按钮(1)添加记录集类CRoom
35、TypeSet类,基类为CRecordset,数据表为RoomStandard表;(2) 在CRoomTypeDlg类中添加CRoomSet类的成员变量m_typeSet;(3) 添加初始化对话框OnInitDialog()方法:(4)为确定按钮添加信息响应函数BOOL CRoomTypeDlg:OnInitDialog() CDialog:OnInitDialog();CString strSQL;switch(status)case 1: SetWindowText(添加房间标准); m_ok.SetWindowText(添加); CRect rect;m_roomtype.Create(
36、WS_CHILD|WS_VISIBLE|WS_VSCROLL|CBS_DROPDOWN,rect,(CWnd*)this,IDC_ROOMTYPE); break;case 2:SetWindowText(删除房间标准);m_ok.SetWindowText(删除);m_roomtype.SetExtendedUI(false);strSQL.Format(select * from RoomStandard); m_typeSet.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);while(!m_typeSet.IsEOF()m_roomtype.AddString
37、(m_typeSet.m_TypeName);m_typeSet.MoveNext();m_typeSet.Close();break;case 3:SetWindowText(修改房间标准);m_ok.SetWindowText(修改);m_roomtype.SetExtendedUI(false);strSQL.Format(select * from RoomStandard);m_typeSet.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);while(!m_typeSet.IsEOF()m_roomtype.AddString(m_typeSet.m_Ty
38、peName); m_typeSet.MoveNext(); m_typeSet.Close();break;return TRUE; void CRoomTypeDlg:OnOK() switch(status)case 1: AddType(); break; case 2: DeleteType(); break; case 3: Modify(); break;void CRoomTypeDlg:AddType() UpdateData(); m_database.Open(_T(HotelDSN); if(m_strroomtype=) MessageBox(标准类型不能为空,请输入标准类型); m_database.Close(); return; if(m_iAir=-1) MessageBox(请选择有无空调); m_database.Close(); return; if(m_iTV=-1) MessageBox(请选择有无电视); m_dat