




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软件工程实践项目 学学 生生: 学学 号号: 专专 业业: 软件工程 班班 级级: 指导教师指导教师: 二二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 注册
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 4.7.2 结帐模块技术分析.16 4.8 数据库维护模块设计.16 4.8.1 数据库维护模块概述.16 4.8.2 数据库维护模块技术分析.17 5 结论.17 酒店餐饮管理系统酒店餐饮管理系统 摘 要:随着国家经济的不断蓬勃发
3、展,国民生活水平的不断提高,国民消费水平的提 高带动了酒店餐饮行业的发展;近几年,大、中、小城市中酒店餐饮行业的发展可谓 蒸蒸日上,传统的手工作业方式已经不能满足餐饮经营的需求了。人工记账,核算、 查询等工作既费时、费力,又容易出错。通过在计算机中运行餐饮管理系统,以上的 问题迎刃而解。原来需要大量时间和人力的工作,现在只需要几人便可以轻松解决。 既提高了工作效率,又节省了大量人力资源,为广大酒店餐饮行业的经营者带来了更 多的利益,同时也方便了广大的消费者。 关键字:软件;餐饮管理系统;ACCESS;VC+ 1 1 绪论绪论 1.11.1 课题背景课题背景 俗话说:“民以食为天。 ”随着人民生
4、活水平的提高,餐饮业在服务行业中的地位 越来越重要,从激烈的竞争中脱颖而出,已成为每位餐饮业经营者所追求的目标。 经过多年发展,餐饮管理已经逐渐由人工管理进入到重视规范、科学管理的阶段。 众所周知,在科学管理的具体实现方法中,最有效的工具就是应用应用管理软件来进 行管理。在以往的人工操作中存在着许多问题,例如: 人工计算账单容易出现错误;收银工作中容易发生账单丢失;客人具体消费信息难 以查询;无法对以往营业数据进行查询。 1.21.2 目的及意义目的及意义 我国近年来经济不断发展,人们物质生活水平逐步提高,人们对生活质量的要求也 越来越高,享受真正自动化、人性化的酒店服务成为了人们追求高质量生
5、活的重要内 容。餐饮业要想跟得上发展形势,酒店管理的信息化进程也要加快脚步。为了在总体 上实现酒店管理的自动化、规范化和人性化,需要酒店管理由经验管理转为科学管理, 这样才能跟上现代化的节奏。这套餐饮管理系统,是针对酒店的具体业务而开发的, 业务管理以酒店的餐饮管理为核心,为用户提供迅速、高效的服务,减免手工处理的 繁琐与误差,及时、准确地反映酒店的工作情况、经营情况,从而提高酒店的服务质 量,并配合现代化的酒店管理,获得更好的经济效益。 2 2 可行性分析可行性分析 2.12.1 技术上的可行性技术上的可行性 本管理信息系统将采用技术成熟的 VC+台开发工具。后台数据库采用 Access 的
6、灵 活性,安全性,和易用性为数据库编程提供了良好的条件。因此,系统的软件开发平 台已成熟可行。硬件方面,科技的飞速发展使硬件的更新速度越来越快,容量越来越 大,可靠性越来越高,价格越来越低,其硬件平台完全能满足此系统的需要。 2.22.2 经济上的可行性经济上的可行性 本系统由作者自主开发,操作简单,操作人员只需简单培训即可上岗。管理和维 护比较简单,除了必要的设备投资外,后期只需少量资金就可确保运转。因此对于中 小型酒店在经济上完全可以接受。 本系统的使用能大大提高员工工作效率,加速资金周转、降低各项成本及改善服 务质量。能够取得良好的经济效益。 综上所述,本系统在管理上,在技术上和经济上是
7、完全可行的,并且投入少, 见效快。因此系统的开发完全可行的。 3 3 需求分析需求分析 随着酒店餐饮行业的迅速发展,现有的人工管理模式已经不能完全胜任。广大酒店 餐饮经营者已经意识到使用计算机信息技术的重要性,决定餐饮管理采用计算机管理 系统。 根据酒店餐饮行业的特点和该企业的实际情况,该系统应以餐饮业务为基础,突出 前台管理,从专业角度出发,提供科学有效的管理模式,点菜方面采取表单价数据的 方式是用户能直观地管理数据信息,并能有效地管理每个台号所点的酒菜。点菜收银 管理可实现点菜、结帐、清台。点菜收银、营业分析的有机结合,可为酒店经营方向 提供依据,为酒店餐馆的发展提供重要保证。 3.13.
8、1 软件功能模块设计软件功能模块设计 酒店餐饮系统包含前台管理、后台服务、财政服务和系统服务几个部分功能,其功能 结构图如图 1 所示。 图 1 餐饮管理系统功能结构图 酒店餐饮系统的业务流程图如图 2 所示: 图 2 餐饮管理系统业务流程图 3.23.2 数据库设计数据库设计 一个好的数据库是每一个成功的系统必不可少的部分,数据库设计是系统设计中最 关键的一步。所以要根据信息量设计一个合适的数据库。 3.2.1 数据库分析 因为酒店餐饮管理系统中需存储的数据信息量不大,对数据库的要求并不是很高, 所以本系统采用了 Microsoft Access 2003 数据库,数据库名称为 canyin
9、。在数据库中一 共建立了 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 图 (4)收入信息实体 收
10、入信息实体包括日收入金额和收入时间。收入信息实体 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 所
11、示。 图 10 用户信息表 (3) 账单信息表(paybill) 。账单信息表主要用于保存顾客的消费信息,如图 11 所示。 图 11 账单信息表 (4) 收入信息表(shouru) 。收入信息表主要用于记录每天的总营业信息,以方便用 户查询日收入总额及月收入总额情况,如图 12 所示。 图 12 收入信息表 (5) 餐桌使用情况表(TableUSE) 。餐桌使用情况表主要记录每个餐桌的使用情况, 如图 13 所示。 图 13 餐桌使用情况表 4.4.详细设计与实现详细设计与实现 4.14.1 公共类实现公共类实现 系统在设计中,经常会重复使用同一种功能模块,为避免代码重复使用率过高,经 常将
12、重复使用频率高的代码写成公共类。 数据库连接是系统中必不可少的部分,在每个模块中都需要连接数据库进行数据操 作。为此,我将数据库连接方法写在程序的 App 类中。 设计步骤如下。 (1) 在工作区窗口选择 FileView 选项卡,在 Header Files 目录下找到头文件 StdAfx.h,向其添加如下代码,用于将 msado15.dll 动态链接库导入程序中, 如图 14 所示。 图 14 导入动态链接库 (2)接着在 App 类中的 InitInstance()方法中添加代码,设置数据库链接, 因为 App 类中有全局变量 theApp,所以在 App 类中连接数据库后可以方便的使用
13、全局变量对其 进行操作。代码如下: 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 Sou
14、rce=canyin.mdb,adModeUnknown); /链接数据库 /;Persist Security Info=False catch(_com_error e) CString temp; temp.Format(连接数据库错误信息:%s,e.ErrorMessage();/获得错误信息 :MessageBox(NULL,temp,提示信息,NULL);/弹出错误信息 return false; /以下代码省略 return FALSE; 4.24.2 主窗体设计主窗体设计 程序主窗体作为第一个展示在用户面前的窗体,是用户对程序的第一感觉,在程序中 起着非常重要的作用。主窗体应该
15、向用户展示程序常用的功能,使用户对程序有一个 初步的认识。主窗体运行结果如图 15 所示。 菜单栏(包括登录、前台服务、后台服务等一系列程序所拥有的功能) 。 工具栏(包括程序必较常用的几个功能,例如开台、结帐等) 。 状态栏(包括系统的名称、用户登录信息等) 。 图 15 程序主窗体运行结果 4.34.3 注册模块设计注册模块设计 4.3.1 注册模块概述 注册模块是一个完善的管理系统中必不可少的部分,主要用于预防非法用户随意登录 系统并对系统数据进行修改破坏,给经营者造成不可挽回的损失。只有系统管理员才 能通过注册模块对指定的人员进行注册,使其可以对系统进行相应操作,大大提高该 系统的安全
16、性。注册模块如图 16 所示。 图 16 注册模块效果图 4.3.2 注册模块技术分析 在此模块中只要是 SQL 语句的灵活应用,通过向数据表中直接添加数据即可实现用户 注册的目的,添加数据可以用 INSERT 语句来实现。在此也介绍了 SQL 语句的执行方 法 Execute,通过连接对象的 Execute 方法可以很容易地执行 INSERT 语句。 Execute 方法的语句如下: Connection Execute(_bstr_t CommandText,VARIANT * RecordsAffected,long Options) 参数说明如下。 CommandText:命令字符串,
17、通常是 SQL 命令。 RecordsAffected:操作后所影响的行数。 Options:CommandText 中内容的类型,气质如表 1 所示。 表 1 Options 值表 值描述 adCmdText表明 CommandText 的类型是文本 adCmdTable表明 CommandText 的类型是表名 adCmdStoredProc表明 CommandText 的类型是存储过程 adCmdUnknown表明 CommandText 的类型未知 INSERT 语句的剧本语法如下: INSERT INTO 表名(需要插入的列名) values(要插入的数值) 4.44.4 登陆模块设
18、计登陆模块设计 4.4.1 登陆模块概述 在本系统中,登陆模块的功能是判断用户是否是合法用户及根据登陆用户的权限开放 相应的模块,是保障系统安全的第一道关卡。登陆模块运行结果如图 17 所示。 图 17 登陆模块运行结果 4.4.2 登陆模块技术分析 在登陆模块中,为了避免个别人恶意猜测他人帐号密码,我在系统中添加了密码错 误数量限制,如果密码输入错误此时超过 3 次,整个程序就会退出。为了实现这一功 能,现在主对话框的“登陆”按钮代码中加入如下代码: if(Logindlg.i=3) CDialog:OnCancel(); /logindlg 是登陆模块的一个实例 判断登陆模块中的 i 值是
19、否为 3,如果是则调用主窗体的退出事件;在调用前应该 先关闭登陆模块对话框,所以在登陆模块对话框中的“确定”按钮中加入如下代码: if(i=3) OnCancel() ;/当 i=3 是调用“退出”按钮 当 i=3 是调用登陆模块对话框中的“退出”按钮事件,OnCancel 方法是登陆对话框的 “退出”按钮事件。 4.54.5 开台模块设计开台模块设计 4.5.1 开台模块概述 开台是酒店餐饮系统中前台的第一个服务,顾客前来就餐第一步就是开台,开台模式 应该直观地为用户展示当前空桌的情况,提高用户工作效率。开台模块运行结果如图 18 所示。 图 18 开台模块运行结果 4.5.2 开台模块技术
20、分析 在此模块中主要涉及对列表控件的使用及如何将数据表中的数据导入到列表控件中。 在营业员为顾客进行选桌服务时,可以在桌台信息表中双击要开台的桌台,即可将此 桌台的桌号信息添加到“选择桌号”文本框中,大大方便了使用者。实现此功能首先 在消息 对话框左边的控件名称中找到列表控件,再在右边的时间中选择 NM_DBLCLK 事件, 并为其添加相应的代码,在获取事件前系统要先获得用户双击选项的位置信息,通过 GetSelectionMark 方法可以得到当前鼠标双击的位置信息,再通过 GetItemText 方法获 得当前位置的文本。这两个方法的语法如下: int GetSelectionMark()
21、; 返回的是位置所在的行号,-1 表示没有位置; CString GetItemText(int nItem, int nSubItem); 参数说明如下: nItem:表示位置所在行号。 nSubItem:表示列号。 4.64.6 点菜模块设计点菜模块设计 4.6.1 点菜模块概述 点菜模块和开台模块密不可分,在为顾客开台后会自动弹出点菜窗口为顾客点菜。点 菜模块运行结果如图 19 所示。 图 19 点菜模块运行结果 4.6.2 点菜模块技术分析 在点菜模块中主要应用了两列表控件之间的数据传递技术,即将顾客所需要的菜式从 菜单中选则并将其添加到顾客的账单列表中。在传递过程中,菜单列表是不能被
22、修改 的,账单列表要在每加进去一样菜式就必须增加一行数据,而在逆向传递时账单列表 的数据要相应减少但菜单列表中不变。菜单列表应该采取直接从数据库中读取的方式, 以防遭人恶意修改,在单击“确定”按钮前所有的数据应该都只在列表控件中进行传 递而不写入数据库,保证数据库的安全。在获得列表控件当前鼠标指针所在位置时可 以用 4.5 提到的 GetSelectionMark 方法得到。项列表中插入数据可以使用 SetItemText 方法,该方法用于设置视图项的文本。 语法如下: BOOL SetItemText(int nItem,int nSubItem,LPTSTR lpszText); 参数说明
23、如下。 nItem:标识行索引。 nSubItem:标识列索引。 lpszText:标识设置的视图项文本。 4.74.7 结帐模块设计结帐模块设计 4.7.1 结帐模块概述 结帐模块可对当前顾客消费进行结算,顾客结帐完成后系统自动将收入金额数据写入 数据表中,从而能很好地反应营业情况。结帐模块运行结果如图 20 所示。 图 20 结帐模块运行结果 4.7.2 结帐模块技术分析 在结帐时如果顾客所在的餐台号比较靠后,在下拉控件中就必须按下拉按钮慢慢地 往后寻找顾客的餐台号,在结帐顾客数量较多的情况下,这种方法显然严重影响了工 作效率。为此我为下拉控件增加了手工输入的功能,使营业员结帐时既可以在下
24、拉列 表框中选择桌号,也可以手工输入桌号,极大地方便了使用者,提高了结帐速度和顾 客的满意程度。 要实现上述功能,就必须给列表控件添加一个 ENITCHANGE 事件,在事件中添加 相应代码输入的信息进行判断。本系统中的餐台号都是 4 位数,因此在事件中首先判 断输入的是否是一个 4 位数,如果不是则提示错误信息;如果是则显示相信的消费信 息。实现这一功能需要使用 CString 类提供的 GetLength 方法。 语法如下: int GetLength() 返回值是一个整型数,就是字符串的长度。 4.84.8 数据库维护模块设计数据库维护模块设计 4.8.1 数据库维护模块概述 在系统的日常使用过程中,数据库
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《2025建筑工程施工合作合同》
- 混凝土搅拌站代加工的合同范本(3篇)
- 2025人才租赁合同协议样本
- 全新停车场地租赁协议合同二零二五年
- 业务提成协议合同
- 二零二五版离婚申请书范例
- 举升机设备采购合同样本
- 二零二五国际货物运输的项目六租船合同
- 担保个人借款合同范例
- 建筑工程设计终止协议模板二零二五年
- 胰胆线阵超声内镜影像病理图谱
- 【基于PLC的搬运机器人系统设计4700字(论文)】
- 园林绿化公司管理规章制度
- 腹腔双套管冲洗操作
- 2023年云南省昆明市官渡区小升初数学试卷
- 人教五年级语文上册毛主席在花山课件
- 山东船厂船台码头施工组织设计
- 2022年株洲市天元区招聘教师考试真题
- 机关单位司机优秀先进事迹材料六篇
- XX家具商场顾客接待流程制度
- 醌类化合物的结构类型课件
评论
0/150
提交评论