《酒店餐饮管理组织系统.doc》由会员分享,可在线阅读,更多相关《酒店餐饮管理组织系统.doc(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
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 登陆模块设
2、计.134.4.1 登陆模块概述.134.4.2 登陆模块技术分析.134.5 开台模块设计.134.5.1 开台模块概述.134.5.2 开台模块技术分析.144.6 点菜模块设计.144.6.1 点菜模块概述.144.6.2 点菜模块技术分析.154.7 结帐模块设计.154.7.1 结帐模块概述.15,4.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 的灵活性,安全性,和易用性为数据库编程提供了良好的条件。因此,系统的软件开发平台已成熟可行。硬件方面,科技的飞速发展使硬件的更新速度越来越快,容量
6、越来越大,可靠性越来越高,价格越来越低,其硬件平台完全能满足此系统的需要。2.2 经济经济上的可行性上的可行性本系统由作者自主开发,操作简单,操作人员只需简单培训即可上岗。管理和维护比较简单,除了必要的设备投资外,后期只需少量资金就可确保运转。因此对于中小型酒店在经济上完全可以接受。本系统的使用能大大提高员工工作效率,加速资金周转、降低各项成本及改善服务质量。能够取得良好的经济效益。综上所述,本系统在管理上,在技术上和经济上是完全可行的,并且投入少,见效快。因此系统的开发完全可行的。 3 需求分析需求分析随着酒店餐饮行业的迅速发展,现有的人工管理模式已经不能完全胜任。广大酒店餐饮经营者已经意识
7、到使用计算机信息技术的重要性,决定餐饮管理采用计算机管理系统。根据酒店餐饮行业的特点和该企业的实际情况,该系统应以餐饮业务为基础,突出前台管理,从专业角度出发,提供科学有效的管理模式,点菜方面采取表单价数据的方式是用户能直观地管理数据信息,并能有效地管理每个台号所点的酒菜。点菜收银管理可实现点菜、结帐、清台。点菜收银、营业分析的有机结合,可为酒店经营方向提供依据,为酒店餐馆的发展提供重要保证。3.1 软软件功能模件功能模块设计块设计酒店餐饮系统包含前台管理、后台服务、财政服务和系统服务几个部分功能,其功能结构图如图 1 所示。,图 1 餐饮管理系统功能结构图酒店餐饮系统的业务流程图如图 2 所
8、示:图 2 餐饮管理系统业务流程图3.2 数据数据库设计库设计一个好的数据库是每一个成功的系统必不可少的部分,数据库设计是系统设计中最关键的一步。所以要根据信息量设计一个合适的数据库。3.2.1 数据库分析因为酒店餐饮管理系统中需存储的数据信息量不大,对数据库的要求并不是很高,所以本系统采用了 Microsoft Access 2003 数据库,数据库名称为 canyin。在数据库中一,共建立了 5 张表,用于存储不同的信息,如图 3 所示。图 3 数据库 canyin 中的表3.2.2 数据库概念设计(1)用户信息实体 用户信息实体包括用户登录帐号、用户登录密码和用户权限。用户信息实体 E-
9、R 图如图 4 所示。图 4 用户信息实体 E-R 图(2)菜式信息实体 菜式信息实体包括菜式名称和菜式价格。菜式信息实体 E-R 图如图 5 所示。,图 5 菜式信息实体 E-R 图(3)账单信息实体 账单信息实体包括菜式名称、菜式价格、菜式数量和结帐桌号。账单信息实体 E-R 图如图 6 所示。图 6 账单信息实体 E-R 图(4)收入信息实体 收入信息实体包括日收入金额和收入时间。收入信息实体 E-R 图如图 7 所示。,图 7 收入信息实体 E-R 图(5)餐桌使用情况实体 餐桌使用情况实体包括餐桌桌号和餐桌状态。餐桌使用情况实体 E-R 图如图 8 所示。图 8 餐桌使用情况实体 E
10、-R 图3.2.3 数据库逻辑结构设计根据上述所描述的实体 E-R 图,下一步就该进行数据表的创建。(1(菜式信息表(caishiinfo)。菜式信息表只要用于记录菜式信息,包括菜式名称和菜式价格,如图 9 所示。图 9 菜式信息表,(2(用户信息表(Login)。用户信息表主要用于保存用户帐号、密码和权限等信息,如图 10 所示。图 10 用户信息表(3(账单信息表(paybill)。账单信息表主要用于保存顾客的消费信息,如图 11 所示。图 11 账单信息表(4(收入信息表(shouru)。收入信息表主要用于记录每天的总营业信息,以方便用户查询日收入总额及月收入总额情况,如图 12 所示。
11、图 12 收入信息表(5(餐桌使用情况表(TableUSE)。餐桌使用情况表主要记录每个餐桌的使用情况,如图 13 所示。图 13 餐桌使用情况表,4.详细设计详细设计与与实现实现4.1 公共公共类实现类实现系统在设计中,经常会重复使用同一种功能模块,为避免代码重复使用率过高,经常将重复使用频率高的代码写成公共类。数据库连接是系统中必不可少的部分,在每个模块中都需要连接数据库进行数据操作。为此,我将数据库连接方法写在程序的 App 类中。设计步骤如下。(1(在工作区窗口选择 FileView 选项卡,在 Header Files 目录下找到头文件StdAfx.h,向其添加如下代码,用于将 ms
12、ado15.dll 动态链接库导入程序中,如图 14 所示。图 14 导入动态链接库(2)接着在 App 类中的 InitInstance()方法中添加代码,设置数据库链接, 因为 App 类中有全局变量 theApp,所以在 App 类中连接数据库后可以方便的使用全局变量对其进行操作。代码如下:BOOL CMyApp:InitInstance()AfxEnableControlContainer();:CoInitialize(NULL);HRESULT hr;/定义一个 HRESULT 实例tryhr=m_pCon.CreateInstance(ADODB.Connection);/创建链
13、接if(SUCCEEDED(hr)/判断创建连接是否成功m_pCon-ConnectionTimeout=3;/链接延时设置为 3 秒hr=m_pCon-Open(Provider=Microsoft.Jet.OLEDB.4.0;Data Source=canyin.mdb,adModeUnknown); /链接数据库/;Persist Security Info=False,catch(_com_error e)CString temp;temp.Format(连接数据库错误信息:%s,e.ErrorMessage();/获得错误信息:MessageBox(NULL,temp,提示信息,NU
14、LL);/弹出错误信息return false;/以下代码省略 return FALSE;4.2 主窗体主窗体设计设计程序主窗体作为第一个展示在用户面前的窗体,是用户对程序的第一感觉,在程序中起着非常重要的作用。主窗体应该向用户展示程序常用的功能,使用户对程序有一个初步的认识。主窗体运行结果如图 15 所示。菜单栏(包括登录、前台服务、后台服务等一系列程序所拥有的功能)。工具栏(包括程序必较常用的几个功能,例如开台、结帐等)。状态栏(包括系统的名称、用户登录信息等)。图 15 程序主窗体运行结果,4.3 注册模注册模块设计块设计4.3.1 注册模块概述注册模块是一个完善的管理系统中必不可少的部
15、分,主要用于预防非法用户随意登录系统并对系统数据进行修改破坏,给经营者造成不可挽回的损失。只有系统管理员才能通过注册模块对指定的人员进行注册,使其可以对系统进行相应操作,大大提高该系统的安全性。注册模块如图 16 所示。图 16 注册模块效果图4.3.2 注册模块技术分析在此模块中只要是 SQL 语句的灵活应用,通过向数据表中直接添加数据即可实现用户注册的目的,添加数据可以用 INSERT 语句来实现。在此也介绍了 SQL 语句的执行方法 Execute,通过连接对象的 Execute 方法可以很容易地执行 INSERT 语句。Execute 方法的语句如下:Connection Execut
16、e(_bstr_t CommandText,VARIANT * RecordsAffected,long Options)参数说明如下。CommandText:命令字符串,通常是 SQL 命令。RecordsAffected:操作后所影响的行数。Options:CommandText 中内容的类型,气质如表 1 所示。表 1 Options 值表值描述adCmdText表明 CommandText 的类型是文本adCmdTable表明 CommandText 的类型是表名adCmdStoredProc表明 CommandText 的类型是存储过程adCmdUnknown表明 CommandTe
17、xt 的类型未知INSERT 语句的剧本语法如下:INSERT INTO 表名(需要插入的列名) values(要插入的数值),4.4 登登陆陆模模块设计块设计4.4.1 登陆模块概述在本系统中,登陆模块的功能是判断用户是否是合法用户及根据登陆用户的权限开放相应的模块,是保障系统安全的第一道关卡。登陆模块运行结果如图 17 所示。图 17 登陆模块运行结果4.4.2 登陆模块技术分析在登陆模块中,为了避免个别人恶意猜测他人帐号密码,我在系统中添加了密码错误数量限制,如果密码输入错误此时超过 3 次,整个程序就会退出。为了实现这一功能,现在主对话框的“登陆”按钮代码中加入如下代码:if(Logi
18、ndlg.i=3) CDialog:OnCancel(); /logindlg 是登陆模块的一个实例判断登陆模块中的 i 值是否为 3,如果是则调用主窗体的退出事件;在调用前应该先关闭登陆模块对话框,所以在登陆模块对话框中的“确定”按钮中加入如下代码:if(i=3) OnCancel();/当 i=3 是调用“退出”按钮当 i=3 是调用登陆模块对话框中的“退出”按钮事件,OnCancel 方法是登陆对话框的“退出”按钮事件。4.5 开台模开台模块设计块设计4.5.1 开台模块概述开台是酒店餐饮系统中前台的第一个服务,顾客前来就餐第一步就是开台,开台模式应该直观地为用户展示当前空桌的情况,提高
19、用户工作效率。开台模块运行结果如图 18所示。,图 18 开台模块运行结果4.5.2 开台模块技术分析在此模块中主要涉及对列表控件的使用及如何将数据表中的数据导入到列表控件中。在营业员为顾客进行选桌服务时,可以在桌台信息表中双击要开台的桌台,即可将此桌台的桌号信息添加到“选择桌号”文本框中,大大方便了使用者。实现此功能首先在消息对话框左边的控件名称中找到列表控件,再在右边的时间中选择 NM_DBLCLK 事件,并为其添加相应的代码,在获取事件前系统要先获得用户双击选项的位置信息,通过GetSelectionMark 方法可以得到当前鼠标双击的位置信息,再通过 GetItemText 方法获得当
20、前位置的文本。这两个方法的语法如下:int GetSelectionMark();返回的是位置所在的行号,-1 表示没有位置;CString GetItemText(int nItem, int nSubItem);参数说明如下:nItem:表示位置所在行号。nSubItem:表示列号。4.6 点菜模点菜模块设计块设计4.6.1 点菜模块概述点菜模块和开台模块密不可分,在为顾客开台后会自动弹出点菜窗口为顾客点菜。点菜模块运行结果如图 19 所示。,图 19 点菜模块运行结果4.6.2 点菜模块技术分析在点菜模块中主要应用了两列表控件之间的数据传递技术,即将顾客所需要的菜式从菜单中选则并将其添加
21、到顾客的账单列表中。在传递过程中,菜单列表是不能被修改的,账单列表要在每加进去一样菜式就必须增加一行数据,而在逆向传递时账单列表的数据要相应减少但菜单列表中不变。菜单列表应该采取直接从数据库中读取的方式,以防遭人恶意修改,在单击“确定”按钮前所有的数据应该都只在列表控件中进行传递而不写入数据库,保证数据库的安全。在获得列表控件当前鼠标指针所在位置时可以用 4.5 提到的 GetSelectionMark 方法得到。项列表中插入数据可以使用 SetItemText 方法,该方法用于设置视图项的文本。语法如下:BOOL SetItemText(int nItem,int nSubItem,LPTS
22、TR lpszText);参数说明如下。nItem:标识行索引。nSubItem:标识列索引。lpszText:标识设置的视图项文本。4.7 结帐结帐模模块设计块设计4.7.1 结帐模块概述结帐模块可对当前顾客消费进行结算,顾客结帐完成后系统自动将收入金额数据写入数,据表中,从而能很好地反应营业情况。结帐模块运行结果如图 20 所示。图 20 结帐模块运行结果4.7.2 结帐模块技术分析在结帐时如果顾客所在的餐台号比较靠后,在下拉控件中就必须按下拉按钮慢慢地往后寻找顾客的餐台号,在结帐顾客数量较多的情况下,这种方法显然严重影响了工作效率。为此我为下拉控件增加了手工输入的功能,使营业员结帐时既可
23、以在下拉列表框中选择桌号,也可以手工输入桌号,极大地方便了使用者,提高了结帐速度和顾客的满意程度。要实现上述功能,就必须给列表控件添加一个 ENITCHANGE 事件,在事件中添加相应代码输入的信息进行判断。本系统中的餐台号都是 4 位数,因此在事件中首先判断输入的是否是一个 4 位数,如果不是则提示错误信息;如果是则显示相信的消费信息。实现这一功能需要使用 CString 类提供的 GetLength 方法。语法如下:int GetLength()返回值是一个整型数,就是字符串的长度。4.8 数据数据库维护库维护模模块设计块设计4.8.1 数据库维护模块概述在系统的日常使用过程中,数据库损坏
24、或数据库丢失的现象时有发生,为了避免该现象对用户造成的影响,本系统中加入了数据库维护模块,用户可以通过该模块对数据库进行备份、还原及初始化等操作,大大提高了数据的安全性。数据库维护模块运行结果如图 21 和图 22 所示。,图 21 数据库备份运行结果图 22 数据库还原运行结果4.8.2 数据库维护模块技术分析由于本系统采用的是 Access2003 数据库,所以在数据库的操作方面与 SQL Server 数据库有一定的不同,以备份为例,在系统进行复制前首先要获得当前数据库所在的位置,这时可以用 GetCurrentDirectory 方法获取当前数据库所在的地址路径。实现代码如下:char
25、 buf256;/首先创建一个字符数组存放路径: GetCurrentDirectory(256,buf); /获取数据库所在的文件夹strcat(buf,”canyin.mdb”);/将文件夹路径与数据库名称链接组成数据库的地址路径5 结论结论酒店餐饮服务管理系统的开发终于完成了。在本系统的设计与实现的过程中主要讲述了酒店餐饮管理系统的系统设计部分,包括功能模块设计、数据库结构设计等。系统设计为整个程序构建了骨架,各个功能模块实现各个细节部分。 系统的详细设计根据系统分析阶段的结论将系统具体化,并完成了各个模块的添加、修改、删除与查询的功能,直到最后形成一个完整的可行性的管理系统。 通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从实践中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。同时,在老师和同学的身上我也学到很多实用的知识,在此我表示衷心的感谢! 由于经验的不足以及时间关系,本系统还存在很多不足的地方,希望各位老师、同行提成宝贵的建议。,
限制150内