1、课题名-宾馆客房管理系统 丽水学院2012-2013学年第2学期课程论文丽水学院工学院2012-2013学年第1学期C#语言程序设计课程论文题 目 基于C#.NET的宾馆客房管理系统的设计与开发 指导教师 朱文耀 学 系 计算机学系 班 级 计102 学 号 10104010228 姓 名 蔡景装 二一三 年 一 月 五 日诚 信 承 诺我谨在此承诺:本人所写的课程论文基于C#.NET的宾馆客房管理系统的设计与开发均系本人独立完成,没有抄袭行为,凡涉及其他作者的观点和材料,均作了注释,若有不实,后果由本人承担。 承诺人(签名): 年 月 日基于C#.NET的宾馆客房管理系统的设计与开发班级:计
2、102 姓名:蔡景装 学号:10104010228摘要 本论文以宾馆业的发展现状为背景,分析了我国宾馆业在传统管理模式下的不足,阐述了宾馆客房管理信息化的必要性。通过走访各宾馆,从宾馆的实际业务出发,建立了宾馆客房管理信息系统的组织模型。在此基础上,对宾馆客房的业务流程进行了详细调查,建立了功能结构图,如宾客入住、退房结算、客户续费等,从而实现了管理工作的透明度。从实际需求出发,建立了概念结构,提出了系统设计原则和设计方法,给出了数据库实现方案,开发了一个实用的单机版宾馆客房管理信息系统。本论文不仅从业务的角度对宾馆客房系统进行了详细的分析和设计,而且还对系统进行了评价。 本系统的开发工具是V
3、isual Studio 2010,数据库选用的是SQL server 2008。互联网络技术手段的发展普及和广泛应用将促进网络预订行业发生革命性变化。在未来10年互联网络技术设备终端 电脑会得到十分广泛普及和应用, 电脑不仅出现在办公室、家庭,而且行驶的汽车里、火车上、轮船上随处可见,而且在几乎的任何公共场所都可以看到,就像今天的彩电、电话一样普及和到处都有 一样。也就是说未来的彩电、手机本身就是一台电脑,这在今天就已初露端倪。这是上网变得非常简单容易,尤其无线上网的普及,更使上网变得随心所欲。相信未 来,上互联网络是人们获取信息的主要手段,也是最快捷方便的手段。同时,世界上几乎任何一个组织
4、都是互联网络世界的一个结点。在此网络技术手段支持背景 下,人们预订酒店就会真正做到随时随地,而且不需要任何人I服务就能完成,将来的酒店预订就像今天手机拨打电话发送固定短信那样方便,操作几个数字键就完 全可以搞定。当然未来支持网络酒店预订业务要素的还有重要一方面。那就是在线的资金流转,要想做到适时的无障碍预订,互联网络上划转资金将变得安全可靠、 方便快捷,从预订操作到划转资金在短短的十几秒钟内就可以完成、这大大降低了交易成本,给客户以方便的同时,也将给客户以实惠关键词 客房前台管理 管理信息化 挂帐管理目录引 言3第一章概述41.1开发意义41.2开发内容5第二章需求分析52.1 登记管理需求分
5、析5第三章系统设计53.1开发环境和开发工具的简介63.1.1系统开发环境63.1.2系统开发工具的简介63.2概要设计和详细设计63.2.1概要设计阶段的主要任务63.2.2系统功能分析73.2.3详细设计源代码7第四章数据库设计184.1数据库SQL Server 2008的简介184.2数据库表设计194.2.1数据库表清单(TableList):194.2.2客房类型表 (RoomType):194.2.3客房信息表 (RoomInfo):194.2.4宾客入住表 (RegisterInfo):194.2.5员工信息表 (StaffInfo):204.2.6宾客结帐表 (PayBill
6、):204.2.7用户组表 (UserGroup):20引 言我国酒店业很早就利用计算机管理系统来加强管理、提高服务水平。我国酒店IT的发展阶段主要是以电脑系统的运用为标志的,电话通讯系统实际上也是 从程控交换技术出现才获得质的飞跃。与其他行业相比,IT在酒店业应用的起步晚了十多年。从70年代初期开始,到80年代中整个模式己经基本定型、功能成 熟,但真正成为酒店经营战略的一部分大规模应用要到90年代。酒店的电脑系统从NCR的主机/终端形式,到90年代代表性的H丁TS基于AS400和 DB2的小型机解决方案及Fedelio基于Clipper的微机数据库解决方案,直到最近的数据库/应用服务器/客户
7、方式;从单一的前后台PMS,演变 成为覆盖酒店各部门各环节并对酒店外部辐射的复杂系统;从财务/业务为核心过渡到以顾客服务为核心,总体发展速度呈上升势头。虽然酒店管理系统的应用至今 己有20多年的历史,但起步发展较晚,只是一些浅层次应用,大多数还停留于七拼八凑的MIS系统水平,与国际酒店业先进信息化应用的差距非常突出。信息化 程度不高导致企业决策失误、市场反应速度缓慢等,已经成为制约我国酒店业进一步发展的重要瓶颈。国际上酒店业信息协同化应用主要揉合了企业资源管理计划(ERP)、客户关系管理(CRM)、供应链管理(SCM)和电子商务的观点。从企业资源 管理计划(ERP)角度,优化酒店价值链,对企业
8、业务流程、组织结构再造,提升酒店管理水平;从供应链管理(SCM)角度,实现社会资源配置最优化,控制 采购成本,保障供应质量;从客户关系管理(CRM)和电子商务的角度,把企业关注的焦点,逐渐转移到客户上来,帮助酒店最大限度地利用以客户为中心的资 源,不断开有户和潜在客户,通过改进客户价值、客户满意度以及客户的忠诚度,增强酒店争优势。典型的案例是UTELL,STERLLNG,SUMMIT三个国际著名订房中心合并一举成为名为SUMMIT的全球最大的销售订房中心之一。加盟的酒店和企业接入SUMMIT网络进行协同化运作。 SUMIT网络具有几大特点:首先,它的客人层次较高;其次,它的客源多。代理了全球所
9、有主要航空公司、旅行社和跨国商公司的预订系统;第三,它的网络分 布广。拥有遍布世界的92家成员酒店、52个订房中心;第四,加入网络的成员饭店层次较高;第五,订房渠道畅通。SUMMIT可以通过GDS(全球销售系 统)、INTERNET和TRAVEL WEB网络订房;第六,它有较强的销售组织保证。SUMMIT有分布全球的专职销售人员为成员推广。国外酒店IT现状:世界范围的酒店IT商家,拥有OPERA,,Fidelio,Fidelio,XPres。品牌的MICROS- Fidelio和拥有HIS-Paragon,,CLS,LogicTouch品牌的MAI无疑是已经形成垄断地位的行业领先者。但他们也意
10、识到由于新技术的不断涌现,酒 店IT应用行业随时可能出现超越他们的黑马。Fidelio全球的安装量超过8500家,包括Marriott,Radisson,Hilton,Wyndham,Bass,Starwood,Forte,Shangri-La,Mandarin Oriental等连锁酒店集团均选用其产品。纵观国外酒店业信息化发展轨迹和趋势,我们不难看出,随着酒店业竞的加剧,酒店之间客源的争夺越来越激烈,客房销售的利润空间越来越小,拓展经营空间,降低运营成本,提高管理和决效率。第一章 概述1.1 开发意义随着全球经济一体化使酒店业客源更加丰富多样化,市场更加广阔多渠道的同时,酒店业更面临着日趋
11、激烈的竞争环境和不断攀升的客户期望,迫使业内人 士不断进一步寻求扩大酒店销售、改进服务质量、降低管理成本和提升客户满意度的新法宝来增强酒店的核心竞争力。其中最有效的手段之一就是大规模应用先进的 信息化技术,变革传统意义上的酒店业竞争方式和经营管理模式以进而赢得新竞争优势,在这方面国际上领先的酒店业一直在不遗余力地探索、实施和推进。 Internet作为全球性的计算机互联网,己深入到人们日常生活当中。现代计算机技术的巨大发展,使得酒店管理的方式发生了巨大得变化,就连酒店数据的 储存方式也不再只拘泥于传统的方式。酒店管理系统是建立在分布式数据库上的,凡一切关于客户资料、客房资料和酒店资料的管理操作
12、都是依靠分布式数据库来完 成的。酒店管理系统主要管理操作包括:客户信息管理、客房管理以及对酒店资料管理等,它们是酒店管理系统的核心业务。1.2 开发内容系统总业务流程图本系统主要包括客房登记、结算、续费、换房四个主要功能,除此之外,还有客房信息设置、客房类型设置、员工管理、用户组管理四块功能。 第二章 需求分析2.1登记管理需求分析登记模块是本系统中必不可少的模块,该模块不仅是为了方便管理入住用户的信息,而且也是方便管理宾馆的房间,也是为了方便用户入住。第三章 系统设计1233.1 开发环境和开发工具的简介3.1.1 系统开发环境本系统所采用的开发工具是Visual Studio 2010,搭
13、载操作系统Windows 7.3.1.2 系统开发工具的简介 Visual Studio是微软公司推出的开发环境。是目前最流行的Windows平台应用程序开发环境。Visual Studio 2010版本于2010年4月12日上市,其集成开发环境(IDE)的界面被重新设计和组织,变得更加简单明了。Visual Studio 2010同时带来了 NET Framework 4.0、Microsoft Visual Studio 2010 CTP( Community Technology Preview-CTP),并且支持开发面向Windows 7的应用程序。除了Microsoft SQL Se
14、rver,它还支持 IBM DB2和Oracle数据库。3.2 概要设计和详细设计3.2.1 概要设计阶段的主要任务一、 登记管理界面设计二、 登记界面设计3.2.2 系统功能分析一、 登记管理功能分析查看房间情况,登记入住用户信息。3.2.3 详细设计源代码一、登记管理实现源代码 /客房查询 private void btnSearchRoom_Click(object sender, EventArgs e) if (cbSearchType.Text = 客房类型) try dataGridView1.DataSource = BGKFDAL.SearchRoom.getDetailRo
15、om(Convert.ToInt16(comboBox1.SelectedValue), checkBox1.Checked); dataGridView1.ColumnsNo.DisplayIndex = 0; dataGridView1.ColumnsRoomNo.DisplayIndex = 1; dataGridView1.ColumnsTypeNo.DisplayIndex = 2; dataGridView1.ColumnsRoomPrice.DisplayIndex = 3; dataGridView1.ColumnsAmount.DisplayIndex = 4; dataGr
16、idView1.ColumnsRoomState.DisplayIndex = 5; dataGridView1.ColumnsOvertime.DisplayIndex = 6; catch MessageBox.Show(异常, 提示, MessageBoxButtons.OK, MessageBoxIcon.Information); else dataGridView1.DataSource = BGKFDAL.RoomInfoDAL.Find_Room(comboBox1.Text); /登记 判断客房是否空闲和选择信息是否正确 private void btnRegist_Clic
17、k(object sender, EventArgs e) if (dataGridView1.SelectedRows.Count = 0 | dataGridView1.SelectedRows.Count 1) MessageBox.Show(未选中客房或一个人最多能登记1间客房, 提示, MessageBoxButtons.OK, MessageBoxIcon.Information); return; foreach (DataGridViewRow n in dataGridView1.SelectedRows)/循环赋值 if (n.CellsRoomState.Value !=
18、 null & n.CellsRoomState.Value.ToString() != 空闲) MessageBox.Show(只能登记空闲的客房n, 提示, MessageBoxButtons.OK, MessageBoxIcon.Information); return; SubmitReDetail sb = new SubmitReDetail();/类的实例化 decimal perdayprice = 0; foreach (DataGridViewRow n in dataGridView1.SelectedRows) if (n.CellsRoomNo.Value != nu
19、ll) sb.roomName = n.CellsRoomNo.Value.ToString();/房间名的赋值和判断房间是否为空闲状态 if (n.CellsRoomPrice.Value != null) perdayprice += Convert.ToDecimal(n.CellsRoomPrice.Value);/把房间价格给每日的房间价格 sb.perdatprice = perdayprice.ToString(); Register re = new Register();/窗口的实例化 re.Owner = this;/把此窗体赋值给Register窗体的Owner属性,以便
20、Register窗体调用此窗体的方法 re.sbReDetail = sb; re.ShowDialog(); 二登记功能的实现代码:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using BGKFDAL;namespace BGKF public partial class Registe
21、r : Form public Register() InitializeComponent(); #region-构造方法- SubmitReDetail sbr = new SubmitReDetail(); public SubmitReDetail sbReDetail set sbr = value; #endregion private void Register_Load(object sender, EventArgs e) #region-初始化- tbregisterNo.Text = DateTime.Now.ToString(yyyyMMddhhmmss); tbArr
22、ivetime.Text = DateTime.Now.ToString(); tbRoomamount.Text = sbr.roomName; tbperdayprice.Text = sbr.perdatprice; #endregion bool through()/判断输入是否为空 if (tbCardID.Text.Trim() = ) return false; else if (tbGuestamount.Text.Trim() = ) return false; else if (tbName.Text.Trim() = ) return false; else if (tb
23、perdayprice.Text.Trim() = ) return false; else if (tbPhone.Text.Trim() = ) return false; else if (tbprepayment.Text.Trim() = ) return false; else if (tbRoomamount.Text.Trim() = ) return false; else if (tbstayday.Text.Trim() = ) return false; else return true; private void button1_Click(object sender
24、, EventArgs e) if (through() try/把登记信息赋值给RegisterInfo表 RegisterInfo reInfo = new RegisterInfo(); reInfo.RegisterNo = tbregisterNo.Text.ToString().Trim(); reInfo.Name = tbName.Text.ToString().Trim(); reInfo.IdentityNo = tbCardID.Text.ToString().Trim(); reInfo.Phone = tbPhone.Text.ToString().Trim(); r
25、eInfo.ArriveTime = Convert.ToDateTime(tbArrivetime.Text.ToString().Trim(); reInfo.LeaveTime = reInfo.ArriveTime.AddDays(double.Parse(tbstayday.Text.ToString().Trim(); reInfo.RoomNo = tbRoomamount.Text.ToString().Trim(); reInfo.GuestAmount = int.Parse(tbGuestamount.Text.ToString().Trim(); reInfo.Prep
26、ayment = decimal.Parse(tbprepayment.Text.ToString().Trim(); reInfo.PerDayprice = decimal.Parse(tbperdayprice.Text.ToString().Trim(); reInfo.StayDay = int.Parse(tbstayday.Text.Trim(); reInfo.IsPaid = 未结算; reInfo.StaffNo = 1; reInfo.Status = 正常; reInfo.Remark = tbremark.Text.ToString().Trim(); BGKFDAL
27、.RegisterInfoDAL.insertRegist(reInfo); BGKFDAL.RoomTypeDAL.regist_Updata_RoomInfo(reInfo.RoomNo, reInfo.LeaveTime);/修改客房状态 MessageBox.Show(登记成功, 提示, MessageBoxButtons.OK, MessageBoxIcon.Information); (mainForm)this.Owner).dataGridView_RebackInit(); this.Dispose(); this.Close(); catch/获取异常信息 lbwarn.T
28、ext = 输入有误; else lbwarn.Text = 填写不完整, + n + 只有备注可以空; /入住时间的验证 private void tbstayday_TextChanged(object sender, EventArgs e) int result; if (tbstayday.Text.Trim() = ) lbdays.Text = ; return; if (int.TryParse(tbstayday.Text.Trim(), out result)/判断输入数据类型是否正确 tbprepayment.Text = Convert.ToString(result
29、* Convert.ToDecimal(tbperdayprice.Text.ToString().Trim() * 2); lbdays.Text = ; else lbdays.Text = 输入有误!; /身份证号验证 private void tbCardID_Validating(object sender, CancelEventArgs e) int length = tbCardID.Text.Length; if (tbCardID.Text.Trim() = ) lbidcard.Text = ; return; if (length != 15 & length != 1
30、8) lbidcard.Text = 身份证号输入n有误!; else lbidcard.Text = ; /联系方式验证 private void tbPhone_Validating(object sender, CancelEventArgs e) int result; if (tbPhone.Text.Trim() = ) lbphone.Text = ; return; if (!int.TryParse(tbPhone.Text, out result) lbphone.Text = 联系方式n输入有误!; else lbphone.Text = ; /宾客人数验证 privat
31、e void tbGuestamount_Validating(object sender, CancelEventArgs e) int result; if (tbGuestamount.Text.Trim() = ) lbamount.Text = ; return; if (!int.TryParse(tbGuestamount.Text, out result) lbamount.Text = 宾客人数n输入有误!; else lbamount.Text = ; public class SubmitReDetail public string roomName get; set;
32、public string CardID get; set; public string Name get; set; public string Phone get; set; public string perdatprice get; set; public string ReserveNo get; set; 第四章 数据库设计44.1 数据库SQL Server 2008的简介SQL Server 2008是一个重大的产品版本,它推出了许多新的特性和关键的改进,使得它成为至今为止的最强大和最全面的SQL Server版本。这篇文章详细介绍了Microsoft SQL Server 2
33、008中的新的特性、优点和功能 在现今数据的世界里,公司要获得成功和不断发展,他们需要定位主要的数据趋势的愿景。微软的这个数据平台愿景帮助公司满足这些数据爆炸和下一代数据驱动应用程序的需求。微软将继续投入和发展以下的关键领域来支持他们的数据平台愿景:关键任务企业数据平台、动态开发、关系数据和商业智能。4.2 数据库表设计4.2.1 数据库表清单(TableList):表名说明RoomType客房类型表RoomInfo客房信息表RegisterInfo宾客入住表Staffinfo员工信息表PayBill宾客结算表UserGroup用户组表4.2.2 客房类型表 (RoomType):字段名字段说
34、明数据类型字段长度是否为空约束类型TypeNo类型编号int10不为空主键TypeName类型名称varchar20不为空RoomPrice 客房单价decimal精度为10,小数位数为2不为空Description客房描述varchar30Amount额定人数int4Remark备注varchar504.2.3 客房信息表 (RoomInfo):字段名字段说明数据类型字段长度是否为空约束类型No客房主键int10不为空主键RoomNo 客房号varchar10不为空TypeNo类型编号int10不为空外键RoomState客房状态varchar10WasReserve标志位bool10Res
35、erveNo预定单号nvarchar20Overtime到期时间datetimeRemark备注varchar504.2.4 宾客入住表 (RegisterInfo):字段名字段说明数据类型字段长度是否为空约束类型RegisterNo入住单号varchar10Not NULL主键RoomNo客房号nvarchar10外键StayDay入住天数int10Name宾客姓名varchar20Not NULLIdentityNo身份证号varchar20Phone联系电话varchar20ArriveTime抵店时间datetime8LeaveTime预计离店时间datetime8GuestAmount宾客人数int4Prepayment预付金额decimal精度为10,小数为2PerDayprice每天费用decimalIsPaid是否已结帐varchar5默认为否StaffNo员工编号int10