资源描述
酒店管理系统毕业综合实践开题报告专业系软件技术专业班级学生姓名学 号课题题目酒店管理系统任务下达时间2010年 11 月任务完成期限2010年 11 月至 2011 年 1 月选题的目的和意义: 酒店管理系统利用技术的手段提高办公的效率,进而实现点餐自动化处理。采用c#和sql技术,基于工作流的概念,使酒店内部人员方便快捷地知道点餐信息信息,高效地协同工作;改变过去复杂、低效的菜单点餐,实现迅速、全方位的信息点餐传达,为饭店的管理和点餐提供方便吧。一个酒店实现信息化的程度也是衡量其实现现代化管理的标准。经过分析,我使用c#和sql技术,利用其提供的各种面向对象的开发工具,尤其是数据窗口这一能方便而简洁操纵数据库的智能化对象,首先在短时间内建立系统应用原型,然后,对初始原型系统进行需求迭代,不断修正和改进,直到形成实用方便满意的可行系统。随着人民生活水平的提高和生活节奏的加快,到饭店就餐的人数增加,有关饮食食品种类信息量也成倍增长。面对庞大的信息量,就需要有点餐信息管理系统来提饭店管理工作的效率。指导教师签字系主任签字摘 要软件应用开发中,安全性是要考虑的关键问题,本文通过开发系统实践,从系统规划阶段、设计开发阶段、发布运行阶段三个方面详细阐述安全策略的实现,总结出如何充分利用c#的安全机制、数据库安全控制、增强管理员软件安全防范意识,构建一个性能安全的软件应用程序。现代化的宾馆是集客房、餐饮、商务文化及其他各种服务与设施为一体化的消费场所,酒店宾馆组织庞大,服务项目多,信息量大,要想提高劳动生产,降低成本,提高服务质量和管理水平,进而促进经济效益,必须借助计算机来进行现代化的信息管理,本系统是一套适用于中、小型星级宾馆使用的优秀系统,操作简单,灵活性好、系统安全性高,运行稳定。该酒店管理系统,该系统可供用户进行菜系管理,菜种类查询、台号管理以及功能强大的记账信息管理,可以实现日结帐,月结帐和年结帐的功能,方便了用户的帐务分析。用户只需要简单的输入,所有数据都由数据库管理系统管理。本文中数据库服务器端采用了流行的功能强大的SQLserver2005作为后台数据库,为数据的安全和程序的稳定运行提供了保障。关键词:酒店管理系统 VS SQLserver2005 目录毕业综合实践开题报告4摘 要5第一章 绪论71.1研发背景71.2系统目标7第二章 系统分析92.1酒店管理系统可行性分析92.1.1经济可行性分析92.1.2技术可行性分析92.1.3法律可行性分析92.2系统的功能需求102.3系统数据需求分析102.4数据库设计112.4.1需求分析11第三章 系统详细设计133.1系统功能结构133.2管理界面143.2代码设计30第四章 结束语33致谢34参考文献35第一章 绪论1.1研发背景当今社会,因特网技术的飞速发展正在迅速地改变着人们的生活方式,因特网正在由科学工作者的工具变为普通百姓获取信息、进行交流的场所,而因特网的商业应用则尤为引人注目。21世纪的酒店,从内部管理到外部销售都将发生质的变化。激烈的市场竞争,要求酒店引入更多、更新、更高的IT技术,非单一的前台管理软件甚至传统的前、后台软件所能满足。现代化的酒店是集客房、餐饮、通讯、娱乐,商务文化及其他各种服务与设施为一体化的消费场所,酒店组织庞大,服务项目多,信息量大,要想提高劳动生产,降低成本,提高服务质量和管理水平,进而促进经济效益,必须借助计算机来进行现代化的信息管理。 成功的酒店是将经济效益作为酒店的运营宗旨,管理的核心是在于如何提高经济效益。优秀的酒店客房信息管理系统以酒店的经济效益为目标,为酒店管理人员和员工提供简单易用、功能强大并高度灵活的应用工具,激励他们的积极性,促使他们向酒店提供更好的服务。这些改进使宾客感到更加满意,为酒店带来更多的回头客和收入。同时,通过对人流、物流、资金流的科学管理和有效控制,提高员工的工作效率,降低各种经营成本,从而获取持久的利润,因此酒店行业对于酒店管理系统的引进势在必行。1.2系统目标此次设计将要模拟完成建立一个酒店管理系统系统,实现信息化。通过先进的VS技术实现前台的智能点菜,获取菜品,和自动结帐等功能。对于酒店管理者可以实现台号管理,菜系的管理和菜品的管理,正对财务还可以实现日结帐报表,月结帐报表和年结帐报表等财务分析,节省了大量的劳力财力,加强了公司的现代化管理和高效的服务。酒店日常管理中所涉及到的大量数据都由数据库管理系统管理。本文中数据库服务器端采用了商业流行的SQLSERVER2005作为后台数据库,结合SQL语句强大的处理功能实现酒店管理中各个对象的分类、添加、删除、修改等操作。经过对酒店管理业务的具体分析,精心对相关信息的学习和在指导老师的指导下,朋友的帮助下多次改进终于开发制作了这个酒店管理系统,本系统的设计遵循软件开发的全过程,在做需求分析的时候实际到酒店企业中熟悉酒店的业务流程和管理,然后概要设计,详细设计和编码测试。每个过程都按照软件工程的规范进行。本系统的设计中运用VS技术和SQL语言操作后台数据库。由于VS虚拟机,实现了各种平台的兼容性,体现了良好的跨平台特点和编程技术的优点。该系统的操作界面简洁,适合各类管理人员应用。在安全性方面,通过数据库的权限管理和VS的优秀技术,实现系统的灵活性和系统的安全性。管理者还可以通过修改密码来进行用户管理。笔者完成了酒店管理系统的全部制作,从需求分析到编码测试,从概要设计到详细设计,通过笔者的努力基本实现了酒店管理系统的基本功能,并对业务所需要信息进行维护。本系统有以下特点:系统中模块划分明确,模块功能设计有较强的针对性。系统操作界面简单,灵活性好、响应时间短,系统安全性高,运行稳定。设计完全符合软件工程中的各个阶段的要求,模块间具有高内聚,低耦合的良好性能。第二章 系统分析2.1酒店管理系统可行性分析2.1.1经济可行性分析 模拟酒店管理系统的开发从长远的角度来看,投资可以完全收回,并可以节省管理费用,避免了人工填单操作所带来的一系列不必要的麻烦,节省了用户和相关工作人员的时间,能够很好地提高工作效率,改进决策质量。同时也对酒店的灵活管理有了很大的提升,有利于提高酒店的运营和服务效率,其开发前景良好并能产生很好的经济和社会效益。本系统采用VS技术和微软商业数据库,在服务器端和客户端都必须有对应的运行环境。数据库SQLserver2005也是个成熟的数据库管理软件,其安全性,可靠性和实用性满足酒店管理系统的设计要求,估计利用现有技术条件应完全可以达到该系统的功能目标。2.1.2技术可行性分析技术上的可行性分析要考虑将来要采用的硬件和软件技术能否满足用户(这里是饭店经营方)提出的要求(如计算机的容量、速度等)。此外,还要考虑开发人员的水平,作为计算机信息管理专业毕业的学生,数据库设计方面对于我们应该还过得去,在学校里生活了五年,对这个管理模式应该比较熟悉。 我们掌握了数据库及其应用技术、数据库原理、计算机网络技术等课程,对数据库的设计、应用、维护及局域网的组成有了深刻的认识与一定的动手实践能力,从一定程度上具备了开发一个小型系统的能力。2.1.3法律可行性分析本系统的开发作为计算机毕业设计以巩固先前所学的知识,此程序以个人为单位,仅供个人所用,没有侵犯任何版权,也没有违反国家相关法律法规及相关方面的规定,与业界有关规定也无矛盾之处,所以法律方面可行 。2.2系统的功能需求酒店管理信息管理系统是以顾客订房信息为基础建立的管理系统, 是管理酒店客房业务的重要方法、手段、技术和操作过程的集合。作为一个管理信息系统,其服务的对象是双方面的:酒店和顾客。因此,一个好的酒店管理系统,必须让双方在使用时都快捷方便。顾客通过输入姓名、密码等基本信息,由系统自行生成酒店相应的统计数据及各类统计报表以供用户查询、打印,另外操作人员还可以对这些基本信息进行定期的更新和删除, 酒店管理系统力求给用户方便快捷的途径去管理这些繁琐的数据。为酒店带来方便,也为顾客带来方便,实现信息化。根据可行性研究的结果和客户的要求,分析现有情况及问题,采用两级管理结构,将酒店管理系统划分为两个子系统:酒店管理人员,酒店前台收银员。2.3系统数据需求分析图1总流程图2.4数据库设计数据库设计是利用现有的数据库管理系统为具体的应用对象构造适合的数据库模式,建立数据库及其应用系统,使之能有效地收集、存储、操作、和管理数据,满足各类用户的应用需求2.4.1需求分析(1)功能需求1)基本功能需求系统能正确的对用户身份进行辨识,从数据库中提取登录密码并验证身份真实性。系统能准确的显示数据库中记录的各类数据。系统应能将用户在系统中录入的各类信息传送到数据库中并储存。系统应具备错误处理功能,出现错误的时候能够清楚地返回相应错误提示。系统数据库之间能有效地相互关联。2)用户界面需求用户界面应简洁明快,各功能按钮明显,位置摆放合理。字体大小适中,风格统一规范,界面美观。(2)性能需求1)系统灵活性:管理员编写人员、商品等信息都将在系统中进行编号处理,保障了每一条信息的单一性,同时也对数据的读取提供了方便。服务员所生成的订单有着单一的帐单号并准确无误存储在数据库中。系统应能准确地将管理员提交和修改的信息写入数据库,而且能够及时地更新。数据库中的各项表之间有着很好的相互关联,并能及时显示。2)系统安全性:每个相应权限登录时,系统都会自动的辨别他所输入的账户与密码,正确进入相应界面,错误则登录失败。 3)系统易用性:系统界面简明,明细清楚,实用简单。酒店在正常的运营中需要对客房资源、顾客信息、结算信息进行管理,利用宾馆管理信息系统及时了解各个环节中信息的变更,有利于提高管理效率。开放性的、应用系统可灵活伸缩的、面向最终用户的现代TIMS(旅游信息管理系统)的服务性系统,不断满足酒店业务需求、市场环境的拓展和管理模式的变化应用酒店管理系统通过节省大量的人力物力,增加酒店的服务项目,提高酒店的服务档次,减少管理上的漏洞,从整体上提高酒店的经济效益。如完善的预订功能可防止有房不能租或满房重订的情况出现,可随时提供准确的房间使用和预订情况,从而提高客房出租率。正确控制房价,可以给予客人最优惠的房价,从而减少管理漏洞,提高客房收入。逻辑设计;主要工作是将现实世界的概念数据模型设计成数据库的一种逻辑模式,即适应于某种特定数据库管理系统所支持的逻辑数据模式。与此同时,可能还需为各种数据处理应用领域产生相应的逻辑子模式。这一步设计的结果就是所谓“逻辑数据库”。1系统关系模型账单表(账单编号、客房编号、消费内容、消费金额、消费时间、备注)预订单表(预订单号、客房类型、入住时间、离店时间、客房编号、客房价格、单据状态、预定人)2系统优化:一个实体表示成一个关系:这一转化规则是指将E-R图中的每个实体转化成一个关系数据模型,尸体的所有属性转换成相应关系模型中的数据项,尸体的关键字就是相应关系数据模型的关键字例如:酒店管理账单尸体转化成的关系数据模型课表示为:账单表(账单编号、客房编号、消费内容、消费金额、消费时间、备注)从这一转换可以看出,实体的名称转换为关系数据模型的名称,关系数据模型原括号内的数据项就是实体的属性一个联系表示成一个关系:这一转换规则是指将E-R图中每一个带有属性的联系转化成一个关系数据模型。关系模型的数据项有联系的全部属性和生产此联系的每一个实体的关键字段转换而来,构成此联系的每一个实体的关键字组合就构成该关系模型的关键字。有E-R图转换导出的所有关系数据模型就构成了数据可的逻辑模型。在建立逻辑模型时,通常要根据模型的范式理论,对数据模型进行优化处理,并符合第三范式。第三章 系统详细设计3.1系统功能结构系统主要功能结构如下图所示:图2主要功能机构图3.2管理界面图3 登陆界面运行图1.登录页面的功能主要是供合法的用户根据自己的用户类型及用户名和密码来进行登录,如果输入错误则会有提示。如果用户在没有登录的情况下选择其它功能模块会退回到登录界面。如果用户已经登录,可以在登录模块进行退出登录的操作。如果用户类型错误将会有错误提示。在登录到这个页面或者刷新这个页面的时候,首先要进行一次session的判断。在输入用户名密码后,先确认输入框中有数据,将把输入框中的数据和数据库中的数据进行比较验证。如果一切通过,将产生两个session分别用来存放用户名和用户类型。之后跳转到相应的登录成功的页面。主要运行代码:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace HotelManager public partial class frmdenglu : Form public frmdenglu() InitializeComponent(); private void button1_Click(object sender, EventArgs e) if (textBox1.Text = admin & textBox2.Text = 11111) HotelTypeForm f = new HotelTypeForm(); f.ShowDialog(); else MessageBox.Show(用户名或密码输入错误请重新输入, 提示); textBox1.Focus(); textBox1.Text = ; textBox2.Text = ; private void button2_Click(object sender, EventArgs e) textBox1.Focus(); textBox1.Text = ; textBox2.Text = ; private void button3_Click(object sender, EventArgs e) this.Close(); private void frmdenglu_Load(object sender, EventArgs e) textBox1.Focus(); 图4 客房管理运行界面在类型名称内输入相应的房间类型名称,点击查询按钮,便可看到对应类型房间的详细信息。点击新增按钮,可以对房间类型进行添加,点击修改按钮,可以对对应房间类型信息进行修改,修改完后点击保存,便可保存修改后信息,提示“修改完成”。点击删除按钮,可对房间类型信息做删除。using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using HotelManager.BLL;using HotelManager.Models;namespace HotelManager public partial class RoomTypeSettingForm : Form public RoomTypeSettingForm() InitializeComponent(); /605, 516 597, 175 RoomTypeManager roomTypeManager = new RoomTypeManager(); #region 加载事件 /加载事件 private void HotelTypeForm_Load(object sender, EventArgs e) this.Size = new Size(605, 341); this.dgvHotelType.AutoGenerateColumns = false; this.dgvHotelType.DataSource = roomTypeManager.GetAllRoomType(); #endregion #region 工具栏中新增类型 /新增房间类型 private void tsbAddHotelType_Click(object sender, EventArgs e) this.Size = new Size(605, 516); this.pnlAddType.Visible = true; this.txtName.Enabled = true; this.txtPrice.Enabled = true; this.txtAddPrice.Enabled = true; this.chbAddPrice.Enabled = true; this.txtReMark.Enabled = true; this.txtName.Text = ; this.txtPrice.Text = ; this.txtAddPrice.Text = ; this.chbAddPrice.Checked = true; this.txtReMark.Text = ; this.txtName.Focus(); this.btnAdd.Visible = false; this.btnSave.Visible = true; #endregion #region 工具栏中取消按钮点击事件 private void tsbConcel_Click(object sender, EventArgs e) this.Size = new Size(605, 341); #endregion #region 查询类型 /根据类型名称查询房间类型 private void btnSelect_Click(object sender, EventArgs e) if (this.txtTypeName.Text.Trim() = ) return; this.dgvHotelType.AutoGenerateColumns = false; this.dgvHotelType.DataSource = roomTypeManager.GetRoomTypesByTypeName(this.txtTypeName.Text.Trim(); #endregion #region 双击显示详细信息 / / datagradview的双击事件 / private void dgvHotelType_CellDoubleClick(object sender, DataGridViewCellEventArgs e) string typeName = this.dgvHotelType.Rowse.RowIndex.CellsColumn1.Value.ToString(); if (typeName.Trim() = ) return; RoomType roomType = roomTypeManager.GetRoomTypeByTypeName(typeName); this.txtName.Text = roomType.TypeName; this.txtPrice.Text = roomType.TypePrice.ToString(); this.txtAddPrice.Text = roomType.AddBedPrice.ToString(); this.txtReMark.Text = roomType.Remark; switch (roomType.IsAddBed) case 是: this.chbAddPrice.Checked = true; break; case 否: this.chbAddPrice.Checked = false; break; this.Size = new Size(605, 475); this.pnlAddType.Visible = true; this.txtName.Enabled = false; this.txtPrice.Enabled = false; this.txtAddPrice.Enabled = false; this.chbAddPrice.Enabled = false; this.txtReMark.Enabled = false; #endregion /保存修改 private void tsbSave_Click(object sender, EventArgs e) #region 保存按钮 private void btnSave_Click(object sender, EventArgs e) #region 验证用户输入 if (this.txtName.Text.Trim() = ) MessageBox.Show(类型名称不能为空!, 提示, MessageBoxButtons.OK, MessageBoxIcon.Information); this.txtName.Focus(); return; if (this.txtPrice.Text.Trim() = ) MessageBox.Show(价格不能为空!, 提示, MessageBoxButtons.OK, MessageBoxIcon.Information); this.txtPrice.Focus(); return; if (this.chbAddPrice.Checked) if (this.txtAddPrice.Text.Trim() = ) MessageBox.Show(加床价格不能为空!, 提示, MessageBoxButtons.OK, MessageBoxIcon.Information); this.txtAddPrice.Focus(); return; if (this.txtReMark.Text.Trim() = ) MessageBox.Show(备注信息不能为空!, 提示, MessageBoxButtons.OK, MessageBoxIcon.Information); this.txtReMark.Focus(); return; #endregion RoomType roomType = new RoomType(); roomType.TypeName = this.txtName.Text.Trim(); roomType.TypePrice = double.Parse(this.txtPrice.Text.Trim(); if (this.chbAddPrice.Checked) roomType.IsAddBed = 是; roomType.AddBedPrice = double.Parse(this.txtAddPrice.Text.Trim(); else roomType.IsAddBed = 否; roomType.AddBedPrice = 0.00; roomType.Remark = this.txtReMark.Text.Trim(); int number = roomTypeManager.AddRoomType(roomType); if (number != 0) MessageBox.Show(添加成功!, 添加提示, MessageBoxButtons.OK, MessageBoxIcon.Information); this.dgvHotelType.AutoGenerateColumns = false; this.dgvHotelType.DataSource = roomTypeManager.GetAllRoomType(); else MessageBox.Show(添加失败!, 添加提示, MessageBoxButtons.OK, MessageBoxIcon.Information); this.txtName.Text = ; this.txtPrice.Text = ; this.txtAddPrice.Text = ; this.chbAddPrice.Checked = true; this.txtReMark.Text = ; this.txtName.Focus(); #endregion #region 判断是否可以加床从而得到是否启用加床价格文本框 private void chbAddPrice_CheckedChanged(object sender, EventArgs e) if (this.chbAddPrice.Checked) this.txtAddPrice.Enabled = true; else this.txtAddPrice.Text = ; this.txtAddPrice.Enabled = false; #endregion #region 关闭页面 private void tsbExit_Click(object sender, EventArgs e) this.Close(); #endregion #region 取消按钮点击事件 private void btnConcel_Click(object sender, EventArgs e) this.Size = new Size(605, 341); this.txtName.Text = ; this.txtPrice.Text = ; this.txtAddPrice.Text = ; this.chbAddPrice.Checked = true; this.txtReMark.Text = ; this.txtName.Focus(); #endregion #region 快捷菜单删除 private void tsmClear_Click(object sender, EventArgs e) string roomTypeName = this.dgvHotelType.SelectedRows0.CellsColumn1.Value.ToString(); string str = string.Format(您确定要删除 + 0 + 这个类型吗?, roomTypeName); DialogResult dia = MessageBox.Show(str, 提示, MessageBoxButtons.YesNo, MessageBoxIcon.Error); if (dia = DialogResult.No) return; else int number = roomTypeManager.DeleteRoomType(roomTypeName); if (number = 1) MessageBox.Show(删除成功!, 提示, MessageBoxButtons.OK, MessageBoxIcon.Information); else MessageBox.Show(删除失败!可能原因是存在此类型的房间!, 提示, MessageBoxButtons.OK, MessageBoxIcon.Information); this.dgvHotelType.AutoGenerateColumns = false; this.dgvHotelType.DataSource = roomTypeManager.GetAllRoomType(); #endregion #region 修改类型 string roomTypeName; private void tsmUpdateType_Click(object sender, EventArgs e) #region 界面布局 this.Size = new Size(605, 516); this.pnlAddType.Visible = true; this.txtName.Enabled = true; this.txtPrice.Enabled = true; this.txtAddPrice.Enabled = true; this.chbAddPrice.Enabled = true; this.txtReMark.Enabled = true; this.btnAdd.Visible = true; this.btnSave.Visible = false; roomTypeName = this.dgvHotelType.SelectedRows0.CellsColumn1.Value.ToString(); if (roomTypeName = ) return; RoomType roomType = roomTypeManager.GetRoomTypeByTypeName(roomTypeName); this.txtName.Text = roomType.TypeName; this.txtPrice.Text = roomType.TypePrice.ToString(); this.txtAddPrice.Text = roomType.AddBedPrice.ToString(); this.txtReMark.Text = roomType.Remark; switch (roomType.IsAddBed) case 是: this.chbAddPrice.Checked = true; break; case 否: this.chbAddPrice.Checked = false; this.txtAddPrice.Text = ; this.txtAddPrice.Enabled = false; break; #endregion #endregion #region 价格文本框的输入限制 private void txtPrice_KeyPress(object sender, KeyPressEventArgs e) e.Handled = (e.KeyChar 9 | e.KeyChar 0) & e.KeyChar != 8&e.KeyChar!=46; #endregion #region 确定按钮点击事件 private void btnAdd_Click(object sender, EventArgs e) RoomType roomType = new RoomType(); roomType.TypeName = this.txtName.Text.Trim(); roomType.TypePrice = double.Parse(this.txtPrice.Text.Trim(); if (this.chbAddPrice.Checked) roomType.IsAddBed = 是; roomType.AddBedPrice = double.Parse(this.txtAddPrice.Text.Trim(); else roomType.IsAddBed = 否; roomType.AddBedPrice = 0.00; roomType.Remark = this.txtReMark.Text.Trim(); int number = roomTypeManager.UpdateRoomTypeByTypeName(roomType, roomTypeName); if (number = 1) MessageBox.Show(修改成功!, 修改, MessageBoxButtons.OK, MessageBoxIcon.Information); else MessageBox.Show(修改失败!, 修改, MessageBoxButtons.OK, MessageBoxIcon.Information); this.dgvHotelType.AutoGenerateColumns = false; this.dgvHotelType.DataSource = roomTypeManager.GetAllRoomType(); this.txtName.Text = ; this.txtPrice.Text = ; this.txtAddPrice.Text = ; this.chbAddPrice.Checked = true; this.txtReMark.Text = ; this.txtName.Focus(); #endregion 图5 入住管理运行界面在房间号内输入相应的房间号,点击查询按钮,便可看到对应房间号的详细信息。点击新增按钮,可以对房间进行添加,点击修改按钮,可以对对应房间信息进行修改,修改完后点击保存,便可保存修改后信息,提示“修改完成”。点击删除按钮,可对房间信息做删除。代码如下:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using HotelManager.Models;using HotelManager.BLL;namespace HotelManager public partial class RoomSettingForm : Form public RoomSettingForm() InitializeComponent(); RoomManager roomManager = new RoomManager(); RoomTypeManager roomTypeManager = new RoomTypeManager(); #region 新增房间时的控件布局 private void tsbAddRoomType_Click(object sender, EventArgs e) this.tsbUpdateRoom.Enabled = false; this.tsbClearRoom.Enabled = false; this.Size = new Size(605, 465); this.pnlAddType.Visible = true; this.txtRoomNumber.ReadOnly = false; this.cboState.SelectedIndex = -1; this.cboTypeName.SelectedIndex = -1; this.txtRoomNumber.Text = ; this.txtPrice.Text = ; this.txtPeopleNo.Text = ; this.txtReMark.Text = ; this.txtBedNo.Text = ; this.txtRoomNumber.Enabled = true; this.txtPrice.Enabled = true; this.txtPeopleNo.Enabled = true; this.c
展开阅读全文