




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、经典文餐饮管理系统餐饮管理系统是一个饮食产业不可缺少的部分,它的内容对企业的决策者和管理者都至关重要,所以餐饮管理系统应该能够为用户提供充足的信息和快捷的 查询手段。但一直以来人们使用的餐饮管理系统均是以人为主体的,需要很多的 人力、物力、财力,且效率不是很高,在系统运营时也可能产生人为的失误,以 致餐饮管理工作既繁琐而且不利于分析企业的经营状况。作为计算机应用的一部分,使用计算机对餐饮信息进行管理,具有人工管理 所无法比拟的优点。例如统计结账快速、安全保密性好、可靠性高、存储量大、 寿命长、成本低等。这些优点能够极大地提高餐饮管理的效率,增强企业的竞争 力,同时也是企业的科学化、正规化管理,
2、与世界接轨的重要条件。通过阅读本 章,读者可以学习到:验证不同权限登录用户的方法使用ListView控件制作桌台显示使用MenuStrip控件制作系统菜单栏使用ContextMenuStrip控件制作桌台右键菜单开发餐饮管理系统的具体流程1开发背景近几年来,计算机网络、分布技术日趋成熟,随着科技的发展,餐饮业的竞 争也越来越激烈。想在这样竞争激烈的环境下生存,那么就必须运用科学的管理 思想与先进的管理方法,使点餐与管理一体化。这样不仅提高了工作效率,也避 免了以前手工作业的麻烦,从而使管理者能够准确、有效地管理餐饮。因此,餐 饮业的管理者更希望从科学的管理中取得竞争的优势,在竞争激烈的商业市场
3、中取胜。2需求分析随着餐饮业的不断发展,餐饮管理系统的内容对于餐饮业的决策者和管理者 来说都非常重要。本系统主要包括桌台显示、消费查询、人事档案及权限等几大 部分,本系统具有良好的用户接口,使用方便。具有完善的查询,对维护系统起 到辅助决策的作用,能及时、方便、灵活地进行查询、修改、删除等维护性操作。 餐饮管理系统有足够的存储容量,满足酒店每日营业的变动,另外,对于操作用 户有一定的管理,并对用户的权限有一定的设置。3系统设计3.1 系统目标本系统属于小型的餐饮管理系统,可以有效地对中小型餐厅消费进行管理。本系统应达到以下目标:系统采用人机交互的方式,界面美观友好,信息查询灵活、方便,数据存储
4、安全可靠。实现对餐厅顾客开台、点菜/加菜、账目查询和结账等操作。对用户输入的数据进行严格的数据检验,尽可能地避免人为错误。实现对消费账目自动结算。实现对消费的历史记录进行查询,支持模糊查询。系统应最大限度地实现易维护性和易操作性。3.2 系统功能结构餐饮管理系统功能结构如图1所示图1系统功能结构图3.3 系统预览餐饮管理系统由多个窗体组成,下面仅列出几个典型窗体,其他窗体参见光盘中的源程序。主窗体模块运行结果如图2所示,主要功能是链接系统功能菜单、显示所有桌台和显示系统当前状态。点菜模块运行结果如图 3所示,主要功能是为顾客点菜。开台模块运行效果如图4所示,主要功能是实现对指定的桌台进行开台操
5、作。结账模块运行效果如图5所示,主要功能是对指定的桌台进行结账操作,同时, 清空结账桌台的所有消费信息。注主侵俗嗔央近吁注美 比卫. triiiVain.es苗63彳菜旗茨江二二号呆tziE . frmDC.es3.4 业务流程图餐饮管理系统的业务流程图如图6所示6.3.4业务流程图瑞助工具退出百二二3 6.6筌江管理条流的业务流程图3.5 程序运行环境餐饮管理系统在运行中的具体运行环境如下。系统开发平台:Microsoft Visual Studio 2008。系统开发语言:Ct数据库管理系统:Microsoft SQL Server 2005。运行平台:WindowsXP(SP2 /Win
6、dows 2000 (SP4 /Windows Server 2003 (SPD。运行环境:Microsoft. NET Framework SDK v2.0。分辨率:最佳效果1024X 768像素。3.6 数据库设计在开发餐饮管理系统之前,分析了该系统的数据量。由于系统管理餐饮方面 的数据较多,商品信息、消费信息以及账目清单会占用较大的空间,因此选择 Microsoft SQL Server 2000数据库存储这些信息,数据库命名为db_MrCy,在数据库中创建了 6个数据表用于存储不同的信息,如图 7所示。图6.7餐次管理系统使用的数据表说明:Microsoft SQLServer 200
7、0数据库的创建过程在第5章已经做过介绍, 此处不再赘述。3.7 数据库概念设计餐饮管理系统的数据库主要用于存储餐饮管理系统中的数据,由于餐饮管理系统的数据量很大,所以选择了 Microsoft SQL Server 2000 数据库,数据库中建立一个商品信息表,用于存储所有的商品信息。商品信息实体 E-R图如图8所由于商品的种类很多,因此需要对商品进行分类,这样就可以对商品分门别类地进行储存,在查询时可以根据商品类别进行查询。在数据库中建立一个商品类别信息表,用于存储商品的所有类别信息。商品类别信息实体E-R图如图9所示。当顾客进行消费时,顾客会根据自己的需求消费不同的商品,系统将顾客消费的所
8、有信息存储到数据表中,以便顾客结账时查询,在数据库中建立一个顾客消费信息表用于存储顾客的消费记录。顾客消费信息实体E-R图如图10所示。餐厅中会有多个桌台供顾客选择,每个桌台会有不同的信息。 例如,大厅-01 号桌台被顾客使用,顾客人数为5人等,方便操作员对桌台的操作,在数据库中 建立一个桌台信息表用于存储所有桌台的详细信息。 桌台信息实体E-R图如图11 所示。为了对系统进行不同的管理,需要为系统建立管理用户。这些用户通过登录 模块登录系统,登录成功之后会根据不同的权限对不同的功能模块进行管理,在 数据库中建立一个用户信息表,用于存储登录用户信息。用户信息实体E-R图如图12所示。在餐饮行业
9、中,餐厅服务员起着极其重要的作用,但是由于服务人员数目众 多,如果不进行相应的信息记录,可能管理起来会非常困难。因此,需要对服务 人员的详细信息进行记录。在数据库中建立一个职员信息表用于存储所有服务人 员的信息。职员信息实体 E-R图如图13所示。图乱12用户信息实体E-R图3.8 数据库逻辑结构设计根据设计好的E-R图在数据库中创建各表,系统数据库中各表的结构如下tb_food (商品信息表)tb_food用于保存所有商品信息,该表的结构如表1所示表1商品信息表字段名数据类型长 度主 键描 述IDint4是系统编号foodtychar10否类别编号foodnumchar10否商品代号food
10、namevarchar50否商品名称foodpricedecimal9否商品价格tb_foodtype (商品类别信息表)表tb_foodtype用于保存商品类别信息,该表的结构如表2所表2商品类别信息表字段名数据类型长 度主 键描 述IDint4是系统编号Foodtypevarchar50否商品类别名称tb_GuestFood (顾客消费信息表)表tb_GuestFood用于保存顾客的消费信息,该表结构如表3所示表3顾客消费信息表字段名数据类型长 度主 键描 述IDint4是系统编号foodnumchar10否商品代号foodnamevarchar50否商品名称foodsumchar10否消
11、费数量foodallpricedecimal9否商品价格waiternamevarchar50否操作员姓名beizhuvarchar50否备注zhuotaichar10否消费桌台datatimevarchar50否消费时间tb_Room (桌台信息表)表tb_Room用于保存所有桌台信息,该表结构如表 4所示表4桌台信息表字段名数据类型长 度主 键描 述IDint4是系统编号RoomNamechar10否桌台名称RoomJCchar10否桌台简称RoomBJFdecimal9否桌台包间费RoomWZchar10否桌台位置RoomZTchar10否桌台状态RoomTypechar10否桌台类型R
12、oomBZvarchar50否桌台备注RoomQTvarchar50否桌台其他信息GuestNamevarchar50否顾客姓名zhangdanDatevarchar50否开台时间Numint4否顾客人数WaiterNamevarchar50否操作员姓名tb_User (用户信息表)表tb_User用于保存所有系统用户信息,该表结构如表5所示表5用户信息表字段名数据类型长 度主 键描 述IDint4是系统编号UserNamevarchar50否用户登录名UserPwdvarchar50否用户登录密他powerchar10否用户权限tb_Waiter (职员信息表)表tb_Waiter用于保存所
13、有职员信息,该表结构如表 6所示表6 职员信息表字段名数据类型长 度主 键描 述IDint4是系统编号WaiterNamevarchar50否职员姓名CardNumvarchar50否身份证号码WaiterNumchar10否职员编号Sexchar10否性别Agechar10否年龄Telvarchar50否电话3.9 文件夹组织结构每个项目都会有相应的文件夹组织结构,如果项目中窗体数量很多,可以将 所有的窗体及资源放在不同的文件夹中。 如果项目中窗体不是很多,可以将图片、 公共类或者程序资源文件放在相应的文件夹中,而窗体可以直接放在项目根目录下。餐饮管理系统就是按照后者的文件夹组织结构排列的,
14、如图 14所示。- J «r:7 ',畦等屋忖空件主,*引用 411弓I用文怦具-1函4皿金其樊文林臭* J KBCi-nfti cvJ 3 J- 3 3 3333333533333h b ,-»£ aT,r-l- 一 , d * PtU 一西Mot事枪文件累-和才座才忏客田山一田河靖聋* £.,圻.用将InE? c 融盛厚目前LrriFL 11曦口25. CX. ,日历W理Irn K e 上仲芫皆驿/ 仃一感赶h且.限frfltff ci 一郡瑾匡万营酎dji C <鼻座窗WELick ci-ttt£硒号而SrniLaciiL
15、e系用器蒙界面fa ftfl&lih_ e 1 手住H田悌fr*£>p e. ,1 frtlFq & Ct 帏曲花和fr丽tl祖PS言理一前受量阑firn it Ci帼工艮Pry im . n 手其主程序文件项目文件夹组织结构4登录模块设计4.1 登录模块概述为了使系统的安全性得到保障,大多数系统都开发登录模块。只有通过登录模块,才能对登录用户进行验证,只有系统的合法用户才可以进入系统的主界面。这也是设计管理系统软件之前必须考虑的问题,整个登录模块的实现过程非常简单,相信读者会很快掌握。登录模块运行结果如图15所示。下载后可编辑复制图6.15登录噗走运行结其4.
16、2 登录模块技术分析运行本系统的登录模块,用户只需输入用户名和密码,单击“登录”按钮进 行验证。登录模块以登录的用户名和密码作为搜索条件,在数据库中进行查询。使用SqlDataReader对象的HasRowS!性判断登录用户名和密码是否正确,下面 介绍 SqlDataReader 对象的 HasRowSW性。HasRowSS 性获取一个值,该值指示SqlDataReader是否包含一行或多行。语法如下:public override bool HasRows get; 属性值:如果SqlDataReader包含一行或多行,则为true ;否则为false 。例如,验证登录用户名和密码是否正确,
17、可以通过以下代码实现:SqlConnection conn = BaseClass.DBConn.CyCon();conn.Open();SqlCommand cmd = new SqlCommand("select * from tb_User whereUserName='" + txtName.Text + "' and UserPwd='" + txtPwd.Text + "'",conn);SqlDataReader sdr = cmd.ExecuteReader();sdr.Read();i
18、f (sdr.HasRows)MessageBox.Show("登 录成 功","警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);登录模块验证的方法有很多,除了本章登录模块的验证方法外,还可以使用 第2章登录模块的验证方法,第2章是通过COUN聚合函数进行验证的,具体参 看第2章登录模块设计中的内容。4.3 登录模块实现过程本模块使用的数据表:tb_User登录模块的具体实现步骤如下:(1)新建一个 Windows窗体,命名为frmLogin.cs ,主要用于实现系统的登录功能。该窗体用到的主要控件如
19、表 7所示表7登录窗体用到的主要控件字段名控件ID主要属性设置用 途1 txtName无输入登录用户名txtPwdPasswordChar 属性设输入登录用户密*码,史IbtnSubmitText属性设置为“登登录录”btnConcelText属性设置为“取消”取消(2)由于餐饮系统使用 Microsoft SQL Server 2000 作为后台数据库,因此 先要引用命名空间,以便在程序中操作数据库。关键代码如下:using System.Data.SqlClient(3)单击“登录”按钮之后,登录模块首先判断是否输入了用户名和密码,如果没有输入用户名和密码将弹出提示框,提示用户输入登录系统
20、的用户名和密码;如果输入了用户名和密码,系统将判断输入的用户名和密码是否正确。关键 代码如下:例程 01 代码位置:光盘 TM 06 MrCy frmLogin.csprivate void btnSubmit_Click(object sender, EventArgs e)if (txtName.Text = "") / 判断用户名是否为空MessageBox.Show”青输入用户名","警告",MessageBoxButtons.OK,MessageBoxIcon.Warning); else判断密码是否为空if (txtPwd.Text
21、 = "") /MessageBox.Show("请输入密码","警告",MessageBoxButtons.OK, Messan.Warning);elseSqlConnection conn = BaseClass.DBConn.CyCon(); /连接数据库conn.Open(); / 打开数据库SqlCommand cmd= new SqlCommand("select * from tb_User where UserName='" + txtName.Text + "' and
22、 UserPwd='" + txtPwd.Text + "'", conn);SqlDataReader sdr = cmd.ExecuteReader(); / 创建SqlDataReader 对象sdr.Read(); 读取if (sdr.HasRows) /验证用户名和密码sdr.Close();cmd = new SqlCommand("select * from tb_User where UserName='" + txtName.Text + "'", conn);SqlData
23、Reader sdr1 = cmd.ExecuteReader();sdr1.Read();string UserPower = sdr1"power".ToString().Trim();conn.Close(); 关闭链接frmMain main = new frmMain();main.power = UserPower;main.Names = txtName.Text;main.Times = DateTime.Now.ToShortDateString();main.Show(); /打开主窗体this.Hide(); 隐藏当前登录窗体elseMessageBo
24、x.Show("用户名或密码错误");/弹出提示信息(4)当输入用户名和密码之后,还可以按Enter键登录系统,实现的原理是: 在输入密码的文本框的KeyPress事件下,判断是否按了 Enter键,如果按了 Enter 键就会激发“登录”按钮的 Click事件。关键代码如下:例程 02 代码位置:光盘 TM 06 MrCy frmLogin.csprivate void txtPwd_KeyPress(object sender, KeyPressEventArgs e) if (e.KeyChar = 13)/判断是否按下 Enter 键btnSubmit_Click(
25、sender, e); 调用“登录”按钮的 Click 事件 (5)单击“取消”按钮,退出系统登录。关键代码如下:例程 03 代码位置:光盘 TM 06 MrCy frmLogin.csprivate void btnConcel_Click(object sender, EventArgs e) if (MessageBox.Show("确定 退出系 统吗?","提 示",MessageBoxButtons.OKCancel, Messan.Asterisk) = Dialog Result.OK)Application.Exit();/退出系统 5主
26、窗体模块设计5.1 主窗体模块概述在餐饮系统中主窗体模块是由3部分组成的。第一部分是位于主窗体模块上端的系统菜单,主要实现链接系统功能菜单。第二部分是位于主窗体模块中间的桌台显示,主要用于显示餐厅中所有的桌台情况,包括桌台是否已使用、已使用桌台的客人数量等信息,方便了用户对桌台的管理。第三部分是位于主窗体模块下端的状态栏,主要用于显示系统当前状态信息。主窗体模块运行结果如图 16所示。7 «tnrw币显 3大f电1切心IXT。犬仔-Xi?-«尢牙洵病病鹤而I%师的«r-£«!EEBHU3/A*曰鼻田&-Bdl-Wam-utliF”诲*1
27、 Fl标约IT j imj;'而jjx法事国6.16主面片宾联运笆结果双击某个桌台,弹出“桌台基本信息”窗体,用于显示此桌台的详细信息,如图17所示。在某个桌台上单击鼠标右键,在弹出的快捷菜单中用户可以选择 “开台”、“取 消开台”、“点/加菜”、“消费查询”和“结账”命令,如图18所示。量6.17显示桌各详细信息图幻X每个桌台的右健英单5.2 主窗体模块技术分析开发主窗体模块中的桌台显示时,主要是通过ListView 控件实现的,系统首 先从数据库中检索出每个桌台的状态,然后根据不同的状态通过ListView 控件的Items属性中的Add方法向控件中添加项目集合,下面进行详细介绍。
28、(1) Items 属性功能:此属性获取包含控件中所有项的集合。语法如下:public ListViewItemCollection Items get; 属性值:ListView.ListViewItemCollection包含 ListView 控件中所有的项。例如:private void button9_Click(object sender, EventArgs e)SqlConnectioncon=newSqlConnection("server=.;uid=sa;pwd=;database=zhy");/链接数据库con.Open(); /打开数据库strin
29、g str = "select * from student where id= '"+strid+"'" /建立SQL语句SqlCommand com = new SqlCommand(str, con); / 执行 SQLiS句SqlDataReader dr = com.ExecuteReader();/ 创建 SqlDataReader 对象while (dr.Read()ListViewItemlt=newListViewItem(dr.GetValue(0).ToString();lt.SubItems.Add(dr.GetV
30、alue(1).ToString();lt.SubItems.Add(dr.GetValue(2).ToString();this.listView1.Items.Add(lt); 添加项目dr.Close();con.Close();(2) Add方法功能:将项添加到具有指定文本和图像的集合。语法如下:public virtual ListViewItem Add (string text,int imageIndex)参数说明:text :项的文本。imageindex:要为该项显示的图像的索引。返回值:已添加到集合中的 ListViewItem 。例如,在本模块中向控件中添加项集合。关键
31、代码如下:lvDesk.Items.Add(sdr"RoomName".ToString(), 1);另外,在桌台显示中使用 ContextMenuStrip控件实现右键弹出菜单。ContextMenuStrip控件提供了与某个控件关联的快捷菜单,如图 19所示1网整ContextenuStrip亘 t电nswi °ITj TKlS4iFiiCMht wrwS 6J9 ContextM enuStrip 控伴其使用方法如下:(1)双击工具栏中的 ContextMenuStrip控件将其添加到Form窗体中。(2)为ContextMenuStrip控件添加菜单项。(
32、3)设置控件或窗体的ContextMenu属性为contextMenuStripl,运行程序, 在窗体或者控件上单击鼠标右键,将出现相应的右键菜单。5.3 主窗体实现过程本模块使用的数据表:tb_Room tb_Waiter、tb_User主窗体模块的具体实现步骤如下:(1)新建一个 Windows窗体,命名为frmMain.cs ,主要用于实现系统的菜单栏、桌台显示和显示系统状态的功能。该窗体用到的主要控件如表8所示表8主窗体中用到的主要控件字段名控件ID主要属性设置用 途Meil心LripmenuStrip1Items属性中添加7个MenuItem 项实现窗体中的菜单j_ StitusSt
33、ripstatusStrip1Items属性中添加8个StatusLabel 项实现系统的状态栏LmaLirStimageList1Images属性中添加两个成员显示代表桌 台状态的图 片军ipcontextMenuStrip1Items属性中添加5个MenuItem 项实现右键菜单时看 ListYisrlvDesk无显示所有桌台(2)首先创建4个公共变量,方便程序调用。关键代码如下:例程 04 代码位置:光盘 TM 06 MrCy frmMain.cspublic SqlDataReader sdr;public string power;public string Names;public
34、 string Times;(3)在窗体加载时,首先判断登录用户的权限,根据登录用户的权限分配不同的功能。关键代码如下:例程 05 代码位置:光盘 TM 06 MrCy frmMain.cs private void frmMain_Load(object sender, EventArgs e)switch (power)超级管理员"break;经理";break;一般用户"break;/权限为0时,说明用户是超级管理员case "0": toolStripStatusLabel5.Text ="/权限为1时,说明用户是经理case
35、 "1": toolStripStatusLabel5.Text ="/权限为2时,说明用户是一般用户case "2": toolStripStatusLabel5.Text ="toolStripStatusLabel2.Text = Names; /在状态栏中显示登录用户身份toolStripStatusLabel8.Text = Times; /将登录时间显示在状态栏中if (power = "2") 系统维护 ToolStripMenuItem.Enabled = false; / 屏蔽“系统维护” 功能基
36、础信息 ToolStripMenuItem.Enabled = false; /屏蔽“基础信息”功能if (power = "1")系统维护 ToolStripMenuItem.Enabled = false;/ 屏蔽“系统维护”功能代码贴士此处通过switch语句获取登录用户的权限。登录用户是一般用户时,系统通过此段代码限制系统的“系统维护”和“基 础信息”功能。登录用户是经理时,系统通过代码限制了系统的“系统维护”功能。(4)当窗体焦点被激发时,系统从数据库中检索出所有桌台的状态信息,然后调用自定义的AddItems方法为ListView 控件添加项目。关键代码如下:例
37、程 06 代码位置:光盘 TM 06 MrCy frmMain.csprivate void frmMain_Activated(object sender, EventArgs e)lvDesk.Items.Clear(); 清空 ListBox 控件SqlConnection conn = BaseClass.DBConn.CyCon(); / 连接数据库conn.Open(); / 打开数据库SqlCommand cmd = new SqlCommand("select * from tb_Room", conn);sdr = cmd.ExecuteReader();
38、while (sdr.Read() string zt = sdr"RoomZT".ToString().Trim(); II取出每个桌台当前状态Addltems(zt); 添加桌台 conn.Close(); II断开连接 自定义的AddItems方法,根据不同的状态为 ListView 添加不同的图片,方 便用户判断某个桌台是否已经被使用。关键代码如下:例程 07 代码位置:光盘 TM 06 MrCy frmMain.cs private void AddItems(string rzt) if (rzt =" 使用") 如果状态是“使用”则添加索引
39、为1的图片lvDesk.Items.Add(sdr"RoomName".ToString(), 1);else II否则添加索引为0的图片 lvDesk.Items.Add(sdr"RoomName".ToString(), 0);(5)选择主窗体模块菜单栏中的“基础信息” / “桌台信息”命令,打开显示所有桌台信息的窗体,如图20所示。关键代码如下:例程 08 代码位置:光盘 TM 06 MrCy frmMain.csprivate void 桌台信 息 ToolStripMenuItem_Click_1(object sender, EventArg
40、s e)frmDesk desk = new frmDesk();desk.ShowDialog();(6)选择主窗体模块菜单栏中的“基础信息”/ “职员信息”命令,打开显示所有职员信息的窗体,如图21所示。关键代码如下:堂&2】注显培总例程 09 代码位置:光盘 TM 06 MrCy frmMain.csprivate void 职员信 息 ToolStripMenuItem_Click(object sender,EventArgs e)frmUser users = new frmUser();users.ShowDialog();(7)选择主窗体模块菜单栏中的“系统维护” 理用
41、户权限的窗体,如图22所示。/ “权限管理”命令,打开管5 6.22毛卢松居管理关键代码如下:例程 10 代码位置:光盘 TM 06 MrCy frmMain.csprivate void 权 限管理 ToolStripMenuItem_Click(object sender,EventArgs e)frmQxGl qx = new frmQxGl();qx.ShowDialog();(8)选择主窗体模块菜单栏中的“系统维护”/ “系统备份”命令,打开备份系统数据库的窗体,如图23所示。图23备份数据库关键代码如下:例程 11 代码位置:光盘 TM 06 MrCy frmMain.cspriv
42、ate void 系统备份 ToolStripMenuItem_Click(object sender,EventArgs e)frmBF bf = new frmBF();bf.ShowDialog();(9)选择主窗体模块菜单栏中的“系统维护”/ “系统恢复”命令,打开恢复系统数据库的窗体,如图24所示。关键代码如下:例程 12 代码位置:光盘 TM 06 MrCy frmMain.csprivatevoid 系统恢复 ToolStripMenuItem_Click(object sender,EventArgs e)frmHF hf = new frmHF();hf.ShowDialog
43、();(10)选择主窗体模块菜单栏中的“系统设置” / “口令设置”命令,打开修改用户密码的窗体,如图25所示。图6.25密码修改关键代码如下:例程 13 代码位置:光盘 TM 06 MrCy frmMain.csprivate void 口 令设置 ToolStripMenuItem_Click(object sender, EventArgs e)frmPwd pwd = new frmPwd();s = Names;pwd.ShowDialog();(11)选择主窗体模块菜单栏中的“系统设置”/ “锁定系统”命令,打开锁定当前系统的窗体,如图26所示。图6.26锁定系疣界
44、面关键代码如下:例程 14 代码位置:光盘 TM 06 MrCy frmMain.csprivate void 锁定系统 ToolStripMenuItem_Click(object sender, EventArgs e)frmLock locksystem = new frmLock();locksystem.Owner=this;locksystem.ShowDialog();(12)当用户右击某个桌台时,系统会根据该桌台当前的状态,弹出不同的右键菜单。关键代码如下:例程 15 代码位置:光盘 TM 06 MrCy frmMain.csprivate void lvDesk_Click(
45、object sender, EventArgs e)/获取选中桌台的名称string names = lvDesk.SelectedItems0.SubItems0.Text;SqlConnection conn = BaseClass.DBConn.CyCon(); /连接数据库conn.Open();/打开数据库SqlCommand cmd = new SqlCommand("select * from tb_Room where RoomName='" + names + "'", conn);SqlDataReader sdr
46、= cmd.ExecuteReader();sdr.Read();string zt = sdr"RoomZT".ToString().Trim(); /获取桌台状态sdr.Close();/如果桌台正在使用当中,则屏蔽右键菜单中的“开台”命令if (zt =" 使用")this.contextMenuStrip1.Items0.Enabled = false;this.contextMenuStrip1.Items1.Enabled = true;this.contextMenuStrip1.Items3.Enabled = true;this.con
47、textMenuStrip1.Items5.Enabled = true;this.contextMenuStrip1.Items6.Enabled = true;/如果桌台为“待用”状态,则屏蔽除“开台”命令以外的所有命令if (zt =" 待用")this.contextMenuStrip1.Items0.Enabled = true;this.contextMenuStrip1.Items1.Enabled = false;this.contextMenuStrip1.Items3.Enabled = false;this.contextMenuStrip1.Item
48、s5.Enabled = false;this.contextMenuStrip1.Items6.Enabled = false;conn.Close();/关闭数据库连接(13)下面介绍主窗体模块中的右键菜单中的所有命令,详细介绍如下。当在某个桌台上单击鼠标右键时,在弹出的快捷菜单中选择“开台”命令,就可以打开“开台单”窗体对该桌台进行开台处理。关键代码如下:例程 16 代码位置:光盘 TM 06 MrCy frmMain.csprivate void 开台 ToolStripMenuItem_Click(object sender, EventArgs e)if (lvDesk.Selec
49、tedItems.Count != 0) /判断是否有选中项/获取桌台的名称 string names = lvDesk.SelectedItems0.SubItems0.Text;frmOpen openroom = new frmOpen(); = names; 将桌台名称赋值给公共变量 nameopenroom.ShowDialog();/ 打开“开台单”窗体 elseMessageBox.Show("请选择桌台");/ 弹出提示信息当在某个桌台上单击鼠标右键时,在弹出的快捷菜单中选择“取消开台”命令,可以取消该桌台的开台状态。关键代码如下:
50、例程 17 代码位置:光盘 TM 06 MrCy frmMain.csprivate void 取消开台 toolStripMenuItem_Click(object sender, EventArgs e)if (lvDesk.SelectedItems.Count != 0) /判断是否有选中项/获取桌台名称string names = lvDesk.SelectedItems0.SubItems0.Text;SqlConnection conn = BaseClass.DBConn.CyCon(); /打开数据库连接conn.Open();SqlCommand cmd = new Sql
51、Command("update tb_Room set RoomZT=' 待用',Num=0 where RoomName='" + names + "”', conn);cmd.ExecuteNonQuery();cmd = newSqlCommand("delete from tb_GuestFood where zhuotai='" + names + "”', conn);cmd.ExecuteNonQuery();conn.Close(); /断开数据库连接frmMain_Ac
52、tivated(sender, e);elseMessageBox.Show("请选择桌台");/ 弹出提示当在某个桌台上单击鼠标右键时,在弹出的快捷菜单中选择“点/加菜”命令, 可以打开“点/加菜”窗体,为顾客点菜或加菜。关键代码如下:例程 18 代码位置:光盘 TM 06 MrCy frmMain.csprivate void 点菜 ToolStripMenuItem_Click(object sender, EventArgs e)if (lvDesk.SelectedItems.Count != 0) /判断是否有选中项/获取桌台名称string names = l
53、vDesk.SelectedItems0.SubItems0.Text;frmDC dc = new frmDC();dc.RName = names; /将桌台名称赋值给公共变量 RNamedc.ShowDialog(); else MessageBox.Show(" 请选择桌台");/弹出提示当在某个桌台上单击鼠标右键时,在弹出的快捷菜单中选择“消费查询”命 令,可以对指定桌台的消费情况进行查询。关键代码如下:例程 19 代码位置:光盘 TM 06 MrCy frmMain.csprivate void 消费查询 ToolStripMenuItem_Click(obje
54、ct sender, EventArgs e)if (lvDesk.SelectedItems.Count != 0) /判断是否有选中项/获取桌台名称string names = lvDesk.SelectedItems0.SubItems0.Text;frmSerch serch = new frmSerch();serch.RName = names; / 将桌台名称赋值给公共变量 RNameserch.ShowDialog();else MessageBox.Show("请选择桌台");弹出提示5.4 单元测试主窗体模块开发完毕后,进行单元测试。经过对此模块单元测试发现,在用户右键单击桌台以外的空白处,也会弹出右键菜单,如图 27所示。图6.27 桌自以外空白处的右谜菜单并且选中右键菜单的某个命令后会提示出错,如图28所示。为了解决这个错误,用到了 ListView控件的SelectedItems属性,在餐饮管 理系统的右键菜单的代码中首先判断是否存在选中项,如果存在选中项则执行右键菜单中的命令,以右键菜单中的“开台”命令为例,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030年中国数显量具产销需求分析及投资发展前景预测研究报告
- 湖北省襄阳三中2025年高考英语二模试卷含解析
- 职业技术学院2024级计算机网络技术专业人才培养方案
- 广东省广州市2025届高三下学期综合测试(二)(二模)数学试题 含解析
- 上海市金山区2024-2025学年八年级下学期中化学试题(原卷版+解析版)
- 生态环境监测中的遥感与GIS技术考核试卷
- 电气安装石油与开采设备考核试卷
- 管道配件生产的自动化技术考核试卷
- 船舶改装施工过程中的质量安全管理协同考核试卷
- 纳米材料在海水淡化处理中的应用考核试卷
- 水肥一体化施工组织设
- 远动设备故障处理措施
- 药浴婴幼儿计划书
- 静态热机械分析及动态热机械分析
- 《真空热处理炉》课件
- 医院检验科实验室生物安全管理手册
- 幼儿园《村居》教案
- 社会主义发展史智慧树知到课后章节答案2023年下齐鲁师范学院
- 地铁保护区范围施工及开挖施工保护方案
- 精准屈光性白内障手术课件
- 2023煤炭矿区地质勘查成果总结报告编写规范
评论
0/150
提交评论