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