酒店餐饮管理系统_第1页
酒店餐饮管理系统_第2页
酒店餐饮管理系统_第3页
酒店餐饮管理系统_第4页
酒店餐饮管理系统_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、.软件工程实践项目学 生: 学 号: 专 业: 软件工程 班 级: 指导教师: 二XX年X月.;.目 录1 绪论31.1 课题背景31.2 目的及意义32 可行性分析42.1 技术上的可行性42.2经济上的可行性43 需求分析43.1软件功能模块设计43.2 数据库设计53.2.1数据库分析53.2.2 数据库概念设计63.2.3 数据库逻辑结构设计84.详细设计与实现104.1公共类实现104.2主窗体设计114.3注册模块设计124.3.1注册模块概述124.3.2 注册模块技术分析124.4 登陆模块设计134.4.1 登陆模块概述134.4.2登陆模块技术分析134.5 开台模块设计1

2、34.5.1 开台模块概述134.5.2 开台模块技术分析144.6点菜模块设计144.6.1 点菜模块概述144.6.2 点菜模块技术分析154.7 结帐模块设计154.7.1 结帐模块概述154.7.2 结帐模块技术分析164.8 数据库维护模块设计164.8.1 数据库维护模块概述164.8.2 数据库维护模块技术分析175 结论17酒店餐饮管理系统摘 要:随着国家经济的不断蓬勃发展,国民生活水平的不断提高,国民消费水平的提高带动了酒店餐饮行业的发展;近几年,大、中、小城市中酒店餐饮行业的发展可谓蒸蒸日上,传统的手工作业方式已经不能满足餐饮经营的需求了。人工记账,核算、查询等工作既费时、

3、费力,又容易出错。通过在计算机中运行餐饮管理系统,以上的问题迎刃而解。原来需要大量时间和人力的工作,现在只需要几人便可以轻松解决。既提高了工作效率,又节省了大量人力资源,为广大酒店餐饮行业的经营者带来了更多的利益,同时也方便了广大的消费者。关键字:软件;餐饮管理系统;ACCESS;VC+1 绪论 1.1 课题背景俗话说:“民以食为天。”随着人民生活水平的提高,餐饮业在服务行业中的地位越来越重要,从激烈的竞争中脱颖而出,已成为每位餐饮业经营者所追求的目标。经过多年发展,餐饮管理已经逐渐由人工管理进入到重视规范、科学管理的阶段。众所周知,在科学管理的具体实现方法中,最有效的工具就是应用应用管理软件

4、来进行管理。在以往的人工操作中存在着许多问题,例如:人工计算账单容易出现错误;收银工作中容易发生账单丢失;客人具体消费信息难以查询;无法对以往营业数据进行查询。1.2 目的及意义我国近年来经济不断发展,人们物质生活水平逐步提高,人们对生活质量的要求也越来越高,享受真正自动化、人性化的酒店服务成为了人们追求高质量生活的重要内容。餐饮业要想跟得上发展形势,酒店管理的信息化进程也要加快脚步。为了在总体上实现酒店管理的自动化、规范化和人性化,需要酒店管理由经验管理转为科学管理,这样才能跟上现代化的节奏。这套餐饮管理系统,是针对酒店的具体业务而开发的,业务管理以酒店的餐饮管理为核心,为用户提供迅速、高效

5、的服务,减免手工处理的繁琐与误差,及时、准确地反映酒店的工作情况、经营情况,从而提高酒店的服务质量,并配合现代化的酒店管理,获得更好的经济效益。2 可行性分析2.1 技术上的可行性 本管理信息系统将采用技术成熟的VC+台开发工具。后台数据库采用Access的灵活性,安全性,和易用性为数据库编程提供了良好的条件。因此,系统的软件开发平台已成熟可行。硬件方面,科技的飞速发展使硬件的更新速度越来越快,容量越来越大,可靠性越来越高,价格越来越低,其硬件平台完全能满足此系统的需要。2.2经济上的可行性本系统由作者自主开发,操作简单,操作人员只需简单培训即可上岗。管理和维护比较简单,除了必要的设备投资外,

6、后期只需少量资金就可确保运转。因此对于中小型酒店在经济上完全可以接受。本系统的使用能大大提高员工工作效率,加速资金周转、降低各项成本及改善服务质量。能够取得良好的经济效益。综上所述,本系统在管理上,在技术上和经济上是完全可行的,并且投入少,见效快。因此系统的开发完全可行的。 3 需求分析随着酒店餐饮行业的迅速发展,现有的人工管理模式已经不能完全胜任。广大酒店餐饮经营者已经意识到使用计算机信息技术的重要性,决定餐饮管理采用计算机管理系统。根据酒店餐饮行业的特点和该企业的实际情况,该系统应以餐饮业务为基础,突出前台管理,从专业角度出发,提供科学有效的管理模式,点菜方面采取表单价数据的方式是用户能直

7、观地管理数据信息,并能有效地管理每个台号所点的酒菜。点菜收银管理可实现点菜、结帐、清台。点菜收银、营业分析的有机结合,可为酒店经营方向提供依据,为酒店餐馆的发展提供重要保证。3.1软件功能模块设计酒店餐饮系统包含前台管理、后台服务、财政服务和系统服务几个部分功能,其功能结构图如图1所示。图1 餐饮管理系统功能结构图酒店餐饮系统的业务流程图如图2所示:图2 餐饮管理系统业务流程图3.2 数据库设计一个好的数据库是每一个成功的系统必不可少的部分,数据库设计是系统设计中最关键的一步。所以要根据信息量设计一个合适的数据库。3.2.1数据库分析因为酒店餐饮管理系统中需存储的数据信息量不大,对数据库的要求

8、并不是很高,所以本系统采用了Microsoft Access 2003数据库,数据库名称为canyin。在数据库中一共建立了5张表,用于存储不同的信息,如图3所示。图3 数据库canyin中的表3.2.2 数据库概念设计(1)用户信息实体 用户信息实体包括用户登录帐号、用户登录密码和用户权限。用户信息实体E-R图如图4所示。图4 用户信息实体E-R图(2)菜式信息实体 菜式信息实体包括菜式名称和菜式价格。菜式信息实体E-R图如图5所示。图5 菜式信息实体E-R图(3)账单信息实体 账单信息实体包括菜式名称、菜式价格、菜式数量和结帐桌号。账单信息实体E-R图如图6所示。图6 账单信息实体E-R图

9、(4)收入信息实体 收入信息实体包括日收入金额和收入时间。收入信息实体E-R图如图7所示。图7 收入信息实体E-R图(5)餐桌使用情况实体 餐桌使用情况实体包括餐桌桌号和餐桌状态。餐桌使用情况实体E-R图如图8所示。图8 餐桌使用情况实体E-R图3.2.3 数据库逻辑结构设计根据上述所描述的实体E-R图,下一步就该进行数据表的创建。(1) 菜式信息表(caishiinfo)。菜式信息表只要用于记录菜式信息,包括菜式名称和菜式价格,如图9所示。图9 菜式信息表(2) 用户信息表(Login)。用户信息表主要用于保存用户帐号、密码和权限等信息,如图10所示。图10 用户信息表(3) 账单信息表(p

10、aybill)。账单信息表主要用于保存顾客的消费信息,如图11所示。图11 账单信息表(4) 收入信息表(shouru)。收入信息表主要用于记录每天的总营业信息,以方便用户查询日收入总额及月收入总额情况,如图12所示。图12 收入信息表(5) 餐桌使用情况表(TableUSE)。餐桌使用情况表主要记录每个餐桌的使用情况,如图13所示。图13 餐桌使用情况表4.详细设计与实现4.1公共类实现系统在设计中,经常会重复使用同一种功能模块,为避免代码重复使用率过高,经常将重复使用频率高的代码写成公共类。数据库连接是系统中必不可少的部分,在每个模块中都需要连接数据库进行数据操作。为此,我将数据库连接方法

11、写在程序的App类中。设计步骤如下。(1) 在工作区窗口选择FileView选项卡,在Header Files目录下找到头文件StdAfx.h,向其添加如下代码,用于将msado15.dll动态链接库导入程序中,如图14所示。图14 导入动态链接库(2)接着在App类中的InitInstance()方法中添加代码,设置数据库链接, 因为App类中有全局变量theApp,所以在App类中连接数据库后可以方便的使用全局变量对其进行操作。代码如下:BOOL CMyApp:InitInstance()AfxEnableControlContainer();:CoInitialize(NULL);HRE

12、SULT hr;/定义一个HRESULT实例tryhr=m_pCon.CreateInstance("ADODB.Connection");/创建链接if(SUCCEEDED(hr)/判断创建连接是否成功m_pCon->ConnectionTimeout=3;/链接延时设置为3秒hr=m_pCon->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=canyin.mdb","","",adModeUnknown); /链接数据库/;Persist Se

13、curity Info=Falsecatch(_com_error e)CString temp;temp.Format("连接数据库错误信息:%s",e.ErrorMessage();/获得错误信息:MessageBox(NULL,temp,"提示信息",NULL);/弹出错误信息return false;/以下代码省略 return FALSE;4.2主窗体设计程序主窗体作为第一个展示在用户面前的窗体,是用户对程序的第一感觉,在程序中起着非常重要的作用。主窗体应该向用户展示程序常用的功能,使用户对程序有一个初步的认识。主窗体运行结果如图15所示。&#

14、216; 菜单栏(包括登录、前台服务、后台服务等一系列程序所拥有的功能)。Ø 工具栏(包括程序必较常用的几个功能,例如开台、结帐等)。Ø 状态栏(包括系统的名称、用户登录信息等)。图15 程序主窗体运行结果4.3注册模块设计4.3.1注册模块概述注册模块是一个完善的管理系统中必不可少的部分,主要用于预防非法用户随意登录系统并对系统数据进行修改破坏,给经营者造成不可挽回的损失。只有系统管理员才能通过注册模块对指定的人员进行注册,使其可以对系统进行相应操作,大大提高该系统的安全性。注册模块如图16所示。图16 注册模块效果图4.3.2 注册模块技术分析在此模块中只要是SQL语句

15、的灵活应用,通过向数据表中直接添加数据即可实现用户注册的目的,添加数据可以用INSERT语句来实现。在此也介绍了SQL语句的执行方法Execute,通过连接对象的Execute方法可以很容易地执行INSERT语句。Execute方法的语句如下:Connection Execute(_bstr_t CommandText,VARIANT * RecordsAffected,long Options)参数说明如下。Ø CommandText:命令字符串,通常是SQL命令。Ø RecordsAffected:操作后所影响的行数。Ø Options:CommandText

16、中内容的类型,气质如表1所示。表1 Options值表值描述adCmdText表明CommandText的类型是文本adCmdTable表明CommandText的类型是表名adCmdStoredProc表明CommandText的类型是存储过程adCmdUnknown表明CommandText的类型未知INSERT语句的剧本语法如下:INSERT INTO 表名(需要插入的列名) values(要插入的数值)4.4 登陆模块设计4.4.1 登陆模块概述在本系统中,登陆模块的功能是判断用户是否是合法用户及根据登陆用户的权限开放相应的模块,是保障系统安全的第一道关卡。登陆模块运行结果如图17所示

17、。图17 登陆模块运行结果4.4.2登陆模块技术分析在登陆模块中,为了避免个别人恶意猜测他人帐号密码,我在系统中添加了密码错误数量限制,如果密码输入错误此时超过3次,整个程序就会退出。为了实现这一功能,现在主对话框的“登陆”按钮代码中加入如下代码:if(Logindlg.i=3) CDialog:OnCancel(); /logindlg是登陆模块的一个实例判断登陆模块中的i值是否为3,如果是则调用主窗体的退出事件;在调用前应该先关闭登陆模块对话框,所以在登陆模块对话框中的“确定”按钮中加入如下代码:if(i=3) OnCancel();/当i=3是调用“退出”按钮当i=3是调用登陆模块对话框

18、中的“退出”按钮事件,OnCancel方法是登陆对话框的“退出”按钮事件。4.5 开台模块设计4.5.1 开台模块概述开台是酒店餐饮系统中前台的第一个服务,顾客前来就餐第一步就是开台,开台模式应该直观地为用户展示当前空桌的情况,提高用户工作效率。开台模块运行结果如图18所示。图18 开台模块运行结果4.5.2 开台模块技术分析在此模块中主要涉及对列表控件的使用及如何将数据表中的数据导入到列表控件中。在营业员为顾客进行选桌服务时,可以在桌台信息表中双击要开台的桌台,即可将此桌台的桌号信息添加到“选择桌号”文本框中,大大方便了使用者。实现此功能首先在消息对话框左边的控件名称中找到列表控件,再在右边

19、的时间中选择NM_DBLCLK事件,并为其添加相应的代码,在获取事件前系统要先获得用户双击选项的位置信息,通过GetSelectionMark方法可以得到当前鼠标双击的位置信息,再通过GetItemText方法获得当前位置的文本。这两个方法的语法如下:int GetSelectionMark();返回的是位置所在的行号,-1表示没有位置;CString GetItemText(int nItem, int nSubItem);参数说明如下:Ø nItem:表示位置所在行号。Ø nSubItem:表示列号。4.6点菜模块设计4.6.1 点菜模块概述点菜模块和开台模块密不可分,

20、在为顾客开台后会自动弹出点菜窗口为顾客点菜。点菜模块运行结果如图19所示。图19 点菜模块运行结果4.6.2 点菜模块技术分析在点菜模块中主要应用了两列表控件之间的数据传递技术,即将顾客所需要的菜式从菜单中选则并将其添加到顾客的账单列表中。在传递过程中,菜单列表是不能被修改的,账单列表要在每加进去一样菜式就必须增加一行数据,而在逆向传递时账单列表的数据要相应减少但菜单列表中不变。菜单列表应该采取直接从数据库中读取的方式,以防遭人恶意修改,在单击“确定”按钮前所有的数据应该都只在列表控件中进行传递而不写入数据库,保证数据库的安全。在获得列表控件当前鼠标指针所在位置时可以用4.5提到的GetSel

21、ectionMark方法得到。项列表中插入数据可以使用SetItemText方法,该方法用于设置视图项的文本。语法如下:BOOL SetItemText(int nItem,int nSubItem,LPTSTR lpszText);参数说明如下。Ø nItem:标识行索引。Ø nSubItem:标识列索引。Ø lpszText:标识设置的视图项文本。4.7 结帐模块设计4.7.1 结帐模块概述结帐模块可对当前顾客消费进行结算,顾客结帐完成后系统自动将收入金额数据写入数据表中,从而能很好地反应营业情况。结帐模块运行结果如图20所示。图20 结帐模块运行结果4.7.

22、2 结帐模块技术分析在结帐时如果顾客所在的餐台号比较靠后,在下拉控件中就必须按下拉按钮慢慢地往后寻找顾客的餐台号,在结帐顾客数量较多的情况下,这种方法显然严重影响了工作效率。为此我为下拉控件增加了手工输入的功能,使营业员结帐时既可以在下拉列表框中选择桌号,也可以手工输入桌号,极大地方便了使用者,提高了结帐速度和顾客的满意程度。要实现上述功能,就必须给列表控件添加一个ENITCHANGE事件,在事件中添加相应代码输入的信息进行判断。本系统中的餐台号都是4位数,因此在事件中首先判断输入的是否是一个4位数,如果不是则提示错误信息;如果是则显示相信的消费信息。实现这一功能需要使用CString类提供的GetLength方法。语法如下:int GetLength()返回值是一个整型数,就是字符串的长度。4.8 数据库维护模块设计4.8.1 数据库维护模块概述在系统的日常使用过程中,数据库损坏或数据库丢失的现象时有发生,为了避免该现象对用户造成的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论