《餐饮管理系统的研究毕业论文.doc》由会员分享,可在线阅读,更多相关《餐饮管理系统的研究毕业论文.doc(33页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 本科生毕业设计(论文)餐饮管理系统的研究所在学院: 数学与信息技术学院专 业: 计算机科学与技术 姓 名: 学 号: 1010520024 指导教师: 完成日期: 2014 年 5 月 2 日目 录 1.概述3 1.1开发背景31.2开发环境简介3 2.系统分析42.1需求分析42.2系统的开发目标4 3.系统设计分析53.1系统的功能结构图5 3.2系统的业务流程图53.3数据库的设计6 4.功能模块的设计与实现124.1登录模块的设计124.2主窗体模块的设计144.3开台模块的设计184.4点菜模块的设计194.5结账模块的设计23 5.系统运行测试265.1测试方法265.2测试过程
2、26 5.3开发中的难点及解决办法26 6.结论28 致谢29 参考文献30摘 要随着国情的发展,餐饮业在人们日常生活中的地位也越发增高,传统的手工作业记账方式已经不能满足快速发展的现代餐饮行业。在中型及以上规模的餐厅里,若从开启桌台一直到埋单结算都使用人工记录的方式来完成,非常浪费资源,使效率低下,并且记录也容易出现较多的错误,更有可能出现因保管不善而造成遗失或因年代久远而字迹模糊没有保存价值等无法避免的原因。然而,在科学技术发达的当今时代,我们可以用计算机软件技术来设计一个餐饮管理系统,以解决上述问题。本系统应用了Microsoft SQL Server 2000为后台数据库,以Visua
3、l C# 2010为开发工具,实现了由点餐开始的一系列面向顾客的服务,和面向餐厅的后台管理类服务。本系统摒弃了传统手工记账的不足,利用计算机软件技术来达到餐饮管理的最高效,让计算易出错、易丢失等原因不再出现。真正达到了节能、高效。关键字:餐饮管理系统;SQL Server;Visual Studio;ABSTRACT With the development of the national conditions and the improvement of peoples consumptions levels,the status of the restaurant industry in
4、peoples daily lives are increasingly high.And the traditional way of manual labor can no longer meet. In the medium and large-scale restaurant, its inefficient to work by human recourse from founding to the checkout process and it easily lead to much mistakes .Such as loss of record and value becaus
5、e of the age and so on that cant be avoided. But once you design a catering management system by computer in this high-technical world, instead of the traditional manual record, those would be all worked out. The system uses the SQL Server and the Visual Studio, to achieve a series of front desk ope
6、rations to guests , and back services.This system drops the shortcoming of the traditional way and make it the most efficient by computer software technic.Keywords:Catering Management System;SQL Server;Visual Studio1.概述1.1开发背景随着我国经济的快速发展,人们的生活水平不断的提高,餐饮所在人们日常生活中的地位也越发提高。而在当今这个生活质量大幅度提高的时代,我们对于饮食的要求已
7、经不仅仅是解决温饱,更多的是需要多样化的菜式、更吸引人的美味来满足人们的味蕾。中国是举世闻名的美食大国,有五千年的饮食文化,中国料理在世界上享有盛誉。许多外国人偶然吃过中餐便无法自拔。世界在进步、经济在进步、美食当然也在进步。而与此同时,不仅仅是内容上需要改革,形式上也同样需要改进。开发一个餐饮管理系统软件来代替旧时代的传统手工作业方式显得尤为重要。它需要包括登陆、开台、点菜、查询、加菜、结账以及权限管理等多种功能,一改以往的毫无结构、存在漏洞的手工管理方式。此系统运用C#语言进行开发,并且有良好的后台数据库的支持。现今,餐饮业拥有巨大的市场,但就像“一个硬币有两面”,餐饮行业在面对极大机遇的
8、同时,也面临着极大挑战。导致它动荡不安的原因主要有几点:1.人工结算出错率较高,缺少标准的科学管理体系; 2.缺乏先进的信息记录工具,缺乏应变能力,还有相当一部分小饭店还用纯手工方式; 3.人才专业度不高,多没有经过专业餐饮管理的培训。1.2开发环境简介 (1)Microsoft Visual Studio 2010 Visual Studio是微软公司支持Windows7应用程序开发的开发环境,支持多种数据库,例如:IBM DB2、SQL Server等。 (2)Microsoft SQL Server 2000Microsoft SQL Server是由美国微软公司所推出的关系数据库解决方
9、案,数据库的内置语言原本是采用美国标准局(ANSI)和国际标准组织(ISO)所定义的SQL语言,但是微软公司对它进行了部分扩充而成为作业用SQL(Transact-SQL)。SQL Server 2000数据库引擎提供完整的XML 支持 。(3) C#语言 C#与C、C+类似,是集各种语言优点于一身的一种计算机语言。 2.系统分析 2.1需求分析 本系统由开台、点餐、结算及系统设置等几大模块组成,操作规范简便。并且本系统设置了不同身份登录持有不同的权限,使得经理、前台服务员、管理人员都能够充分利用其所在职位的所有职能,利用该系统进行对本店餐饮完善的管理。2.2系统的开发目标 充分考虑到使用者(
10、服务员、经理)的需求,我将一切从用户的角度出发,建立一个人性化、实用性强的系统。将理论与实际相结合,从最初的设计规划到最终的开发使用,一切为使用者考虑。此系统有以下功能: 1.利用计算器功能自动计算消费金额及找零; 2.利用汉字图形界面,使得操作简便直观,查询一目了然; 3.将管理数字化,随时掌握数据一切变化,并且易查询; 4.减少人工管理无法避免的错误、易保存; 5.增加安全性,增强灵活性; 6.尽可能减少劳动者劳动力,提高效率; 7.使企业档次提高,增强企业竞争力。3.系统设计分析3.1系统的功能结构图 系统功能结构如图1所示:餐饮管理系统基础信息辅助工具系统维护系统设置帮助退出 桌台信息
11、职员信息日历计算器记事本权限管理系统备份系统恢复口令设置锁定系统帮助退出系统图3-1 餐饮管理系统功能结构图3.2系统的业务流程图 它为我们展示的是一个完整的业务流程,我们可以通过它直观的感受到该系统大体上是如何处理事务的。它是一个整体的框架结构,一般不涉及具体数据及算法。根据登录身份的不同,其拥有的权限也有所限制。除此之外,系统还包括必要的辅助工具:计算器、日历等。如图3-2。 系统维护基础信息系统设置辅助工具退出帮助系统主窗体是否管理员系统登录是否登录否是是否图3-2 餐饮管理系统的业务流程图 前台使用人员键入正确用户名密码登录该软件后,对于桌台的情况一目了然,管理人员使用起来也非常方便,
12、系统可以满足各种需要的功能而没有冗余,使用户操作起来得心应手,十分方便。3.3数据库的设计3.3.1概念模型设计 该系统采用SQL Sever作为后台数据库存储数据,因为它能足够存储大量的必要的信息。 商品信息系统编号类别编号代号名称价格图3-3 商品信息E-R图 商品类别信息商品类别编号商品类别名称图3-4 商品类别信息E-R图顾客消费信息消费桌台名称备注信息消费商品数量开单人消费时间系统编号商品代号商品名称商品价格图3-5 顾客消费信息E-R图 用户信息表登录账号系统编号账号权限登录密码图3-6 用户信息E-R图 桌台信息桌台包间费顾客人数开单人开台时间顾客名称桌台其他信息桌台备注桌台类型
13、系统编号桌台名称桌台简称桌台位置桌台状态图3-7 桌台信息E-R图职员信息职员电话职员年龄职员性别系统编号职员姓名身份证号码职员编号图3-8 职员信息E-R图 3.3.2逻辑结构设计1.2.3.4.5.6.4.功能模块的设计与实现4.1登录模块的设计登录模块的作用是阻挡非法人员进入系统。运行该模块之后,要想进入系统,需键入正确的用户名、密码,点击“登录”,如图4-1所示。 该模块具体执行的过程如下 :1.单击“登录”按钮后,第一步判断用户名和密码是否为空。若为空,弹出提示框:“用户输入用户名(密码)”;若不为空,系统对已输入的数据是否正确进行判断。具体实现代码如下。 private void
14、btnSubmit_Click(object sender, EventArgs e) if (txtName.Text = ) MessageBox.Show(请输入用户名, 警告, MessageBoxButtons.OK, MessageBoxIcon.Warning); else if (txtPwd.Text = ) MessageBox.Show(请输入密码, 警告, MessageBoxButtons.OK, MessageBoxIcon.Warning); else SqlConnection conn = BaseClass.DBConn.CyCon(); conn.Open
15、(); SqlCommand cmd = new SqlCommand(select count(*) from tb_User where UserName= + txtName.Text + and UserPwd= + txtPwd.Text + , conn); int i = Convert.ToInt32(cmd.ExecuteScalar(); if (i 0) cmd = new SqlCommand(select * from tb_User where UserName= + txtName.Text + , conn); SqlDataReader sdr = cmd.E
16、xecuteReader(); sdr.Read(); string UserPower = sdrpower.ToString().Trim(); conn.Close(); frmMain main = new frmMain(); main.power = UserPower; main.Names = txtName.Text; main.Times = DateTime.Now.ToShortDateString(); main.Show(); this.Hide(); else MessageBox.Show(用户名或密码错误); 2.当键入用户名和密码后 ,登录有两种方式:按“登
17、录”按钮和按Enter键。实现代码:private void txtPwd_KeyPress(object sender, KeyPressEventArgs e) if (e.KeyChar = 13) btnSubmit_Click(sender, e); 3.单击“取消”键,退出系统,实现代码:private void btnConcel_Click(object sender, EventArgs e) if (MessageBox.Show(“确定退出系统吗?”,“提示”, MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk) =
18、DialogResult.OK) Application.Exit(); 4.2主窗体模块的设计 程序的主窗体模块是用户登录餐饮管理系统后首先映入眼帘的,也是系统主要的操作界面,所以很重要。该系统模块的主要形式可以分为三部: 菜单栏:基础信息、辅助工具等功能表;主界面:桌台情况,可以看到现在餐厅各个桌台的用餐状态;状态栏:已登录用户的用户名和权限、登录时间。 运行结果如图4-2所示。 1.登录系统后,不同身份登录将拥有不同的权限,具体代码如下: private void frmMain_Load(object sender, EventArgs e) switch (power) case 0
19、: toolStripStatusLabel13.Text = “超级管理员”;break; case 1: toolStripStatusLabel13.Text = “经理”; break; case 2: toolStripStatusLabel13.Text = “一般用户”;break; toolStripStatusLabel10.Text = Names; toolStripStatusLabel16.Text = Times; if (power = 2) 系统维护ToolStripMenuItem.Enabled = false; 基础信息ToolStripMenuItem.
20、Enabled = false; if (power = 1) 系统维护ToolStripMenuItem.Enabled = false; 2.选择主窗体菜单栏中的“基础信息”中的“桌台信息”命令,打开所有桌台信息的窗体。具体实现如下: private void 桌台信息ToolStripMenuItem1_Click(object sender, EventArgs e) frmDesk desk = new frmDesk(); desk.ShowDialog(); 3.选择主窗体菜单栏中的“基础信息”中的“职员信息”命令,打开所有职员信息的窗体。具体实现如下: private void
21、 职员信息ToolStripMenuItem1_Click(object sender, EventArgs e) frmUser users = new frmUser(); users.ShowDialog(); 4.选择主窗体菜单栏中的“系统维护”中的“权限管理”命令,打开管理用户权限的窗体。具体实现如下: private void 权限管理ToolStripMenuItem1_Click(object sender, EventArgs e) frmQxGl qx = new frmQxGl(); qx.ShowDialog(); 5.选择主窗体菜单栏中的“系统维护”中的“系统备份 ”
22、命令,打开备份系统数据库的窗体。具体实现如下: private void 系统备份ToolStripMenuItem1_Click(object sender, EventArgs e) frmBF bf = new frmBF(); bf.ShowDialog(); 6.选择主窗体菜单栏中的“系统维护”中的“系统恢复 ”命令,打开恢复系统数据库的窗体。具体实现如下: private void 系统恢复ToolStripMenuItem1_Click(object sender, EventArgs e) frmHF hf = new frmHF(); hf.ShowDialog(); 7.选
23、择主窗体菜单栏中的“系统设置”中的“口令设置”命令,打开修改用户密码的窗体。具体实现如下: private void 口令设置ToolStripMenuItem1_Click(object sender, EventArgs e) frmPwd pwd = new frmPwd(); pwd.names = Names; pwd.ShowDialog(); 8.当用户右击某个桌台时,该桌台当前的状态不同,弹出的右键菜单便不同。具体实现如下:private void lvDesk_Click(object sender, EventArgs e) string names = lvDesk.Se
24、lectedItems0.SubItems0.Text; SqlConnection conn = BaseClass.DBConn.CyCon(); conn.Open(); SqlCommand cmd = new SqlCommand(select * from tb_Room where RoomName= + names + , conn); SqlDataReader sdr = cmd.ExecuteReader(); sdr.Read(); string zt = sdrRoomZT.ToString().Trim(); sdr.Close(); if (zt = 使用) th
25、is.contextMenuStrip1.Items0.Enabled = false; this.contextMenuStrip1.Items1.Enabled = true; this.contextMenuStrip1.Items3.Enabled = true; this.contextMenuStrip1.Items5.Enabled = true; this.contextMenuStrip1.Items6.Enabled = true; if (zt = 待用) this.contextMenuStrip1.Items0.Enabled = true; this.context
26、MenuStrip1.Items1.Enabled = false; this.contextMenuStrip1.Items3.Enabled = false; this.contextMenuStrip1.Items5.Enabled = false; this.contextMenuStrip1.Items6.Enabled = false; conn.Close(); 9.当用户在某个未使用的桌台上单击鼠标右键,在弹出的菜单中选择“开台”命令,就可以打开开台单窗体。具体实现如下: private void 开台ToolStripMenuItem_Click(object sender,
27、 EventArgs e) if (lvDesk.SelectedItems.Count != 0) string names = lvDesk.SelectedItems0.SubItems0.Text; frmOpen openroom = new frmOpen(); openroom.name = names; openroom.ShowDialog(); else MessageBox.Show(请选择桌台); 10.当用户右击某个正在使用的桌台时,在弹出的菜单中选择“点/加菜”命令,就可以打开“点/加菜”的窗体 。具体实现如下: private void 点菜ToolStripMe
28、nuItem_Click(object sender, EventArgs e) if (lvDesk.SelectedItems.Count != 0) string names = lvDesk.SelectedItems0.SubItems0.Text; frmDC dc = new frmDC(); dc.RName = names; dc.ShowDialog(); else MessageBox.Show(请选择桌台); 4.3开台模块的设计 开台模块应包含:桌台编号、开台日期、顾客名称、用餐人数以及开台服务员的名称和必要的备注。有了这几点便可使前台人员做好账单的记录工作,便于结账
29、,更是便于日后账单的管理与统计。并且开台单的窗体用于对指定桌台的开台,应该让前台人员直观的看到该桌台的分布状况,如图4-3。 开台单模块代码如下: 1.当窗体加载时,可以将数据库中所有的桌台信息和职员信息检索出来。具体实现如下:private void frmOpen_Load(object sender, EventArgs e) conn = BaseClass.DBConn.CyCon(); conn.Open(); SqlCommand cmd = new SqlCommand(select * from tb_Room,conn); SqlDataReader sdr = cmd.E
30、xecuteReader(); while (sdr.Read() cbNum.Items.Add(sdrRoomName.ToString().Trim(); cbNum.SelectedItem= name.Trim(); sdr.Close(); cmd = new SqlCommand(select * from tb_Waiter,conn); sdr = cmd.ExecuteReader(); while (sdr.Read() cbWaiter.Items.Add(sdrWaiterName.ToString().Trim(); cbWaiter.SelectedIndex =
31、 0; sdr.Close(); 2.在“用餐人数”文本框中输入数据,但此数据必须大于0。具体实现如下: private void txtNum_KeyPress(object sender, KeyPressEventArgs e) if (e.KeyChar != 8 & !char.IsDigit(e.KeyChar) & e.KeyChar != 13) MessageBox.Show(请输入数字); e.Handled = true; 3.当数据输入结束之后,单击“保存”按钮,即此桌台进行开台操作成功。具体实现如下: private void btnSave_Click(object
32、 sender, EventArgs e) if (txtNum.Text = |Convert.ToInt32(txtNum.Text)=0) MessageBox.Show(请输入用餐人数); else string RoomName = cbNum.SelectedItem.ToString(); SqlCommand cmd1 = new SqlCommand(update tb_Room set GuestName= + txtName.Text + ,zhangdanDate= + dateTimePicker1.Value.ToString() + ,Num= + Convert
33、.ToInt32(txtNum.Text) + ,WaiterName= + cbWaiter.SelectedItem.ToString() + ,RoomZT=使用 where RoomName= + name + , conn); cmd1.ExecuteNonQuery(); this.Close(); private void btnExit_Click(object sender, EventArgs e) this.Close(); 4.4点菜模块的设计 开启点菜模块后,在左侧的菜单双击菜名,在服务员栏中选择当时点餐的服务员,如果需要的话进行备注。待服务员为顾客点完餐后直接点击“
34、保存”,如图4-4所示。图12 顾客点菜 该模块实现代码如下: 1.当单击点菜按钮,点菜窗体加载时,显示出在数据库中检索的所有菜名,以供用户选择。实现代码如下: private void frmDC_Load(object sender, EventArgs e) this.Text = RName + 点/加菜; TreeNode newnode1 = tvFood.Nodes.Add(锅底); TreeNode newnode2 = tvFood.Nodes.Add(配菜); TreeNode newnode3 = tvFood.Nodes.Add(烟酒); TreeNode newnode4 = tvFood.Nodes.Add(主食); SqlConnection conn = BaseClass.DBConn.CyCon(); conn.Open();