您的当前位置:首页正文

餐饮系统分析

来源:个人技术集锦


引言

中国历来有“民以食为天”的传统,餐饮业作为我国第三产业中的一个支柱产业,一直在社会发展与人民生活中发挥着重要作用。特别是最近几年,我国餐饮业呈现出高速增长的发展势头,成为“热门”行业之一。餐饮业呈现出迅速发展、繁荣兴旺的景象,确实使不少想瞄准嘴巴做生意的人产生了跃跃欲试的念头。因为看到行业前景和利益驱动的原因,进入这一领域的经营者必然会大大增加,不可避免地要带来激烈而残酷的竞争。与其他行业相比,餐饮业由于餐饮方式的多样化,相对来说,在变换品种和经营形式时不需要投入很多的资金和花费大量的时间。因此,在竞争中比较容易找到出路,也不至于陷入低价竞争的泥潭拔不出腿来。由此运用计算机可以节省很多人力、物力资源,使用计算机对餐饮进行管理,具有人工管理所无法比拟的优点。例如统计结账快递、安全性保密性好、可靠性好,这些优点能够极大提高餐饮管理的效率,增强企业的竞争力,同时也是企业的科学化、正规化管理,与世界接轨的重要条件。

关键字:c#,microsoft visual studio 2005, sql server 2000 餐饮管理系统

1、系统分析

随着餐饮业的不断发展,餐饮管理系统的内容对于餐饮业的决策和管理者来说非常重要。本系统主要包括桌台显示、消费查询、人事档案及权限等几个部分,本系统有良好的用户接口,使用方便。具有完善的查询,对维护系统起到了辅助决策的作用,能及时方便的进行查询、修改、删除等操作。

用例描述图1-1餐饮管理系统用

用例描述

表1-1基础信息用例描述

简短描述 管理员对系统基础信息进行操作 逐步描述 1、 用户进入主界面,选择基础功能模块 2、 选择桌台信息,对桌台信息进行查询 3、 选择职员信息,对职员信息进行查询 表1-2辅助工具用例描述

简短描述 用户选用系统提供辅助工具 逐步描述 1、 用户进入主界面,选择辅助工具功能 2、 选择计算器,进行计算 3、 选择日历,查看日历 4、 选择记事本,打开记事本 表1-3系统维护用例描述

简短描述 管理员对系统进行维护操作 逐步描述 1、 管理员选择维护模块 2、 选择管理权限,对用户权限进行管理 3、 选择系统备份,对系统数据库进行备份操作 4、 选择系统恢复,将系统数据库恢复到指定状态 表1-4系统设置用例描述

简短描述 用户对系统进行简单设置 逐步描述 1、 用户登录主界面,选择系统设置功能 2、 用户选择修改密码,对自己密码进行修改 3、 用户选择锁定系统,则需重新输入号才能操作系统 表1-5系统帮助用例描述

简短描述 用户查看系统帮助模块 逐步描述 1、 用户登录主界面,选择帮助模块 2、 用户可以查看帮助界面信息 表1-6系统退出用例描述

简短描述 用户退出本系统 逐步描述 1、 用户登录主界面,选择退出功能模块 2、 用户退出本系统

图1-2开台协作图

图1-3开台顺序图

图1-4开台、点菜、结账状态图

图1-5开台活动图

图1-7包图

2、 系统设计

2.1系统目标

1、系统采用人及交互方式,界面友好美观,信息查询灵活方便,数据存

储安全可靠。

2、实现对餐厅顾客开台。点菜/加菜、账目查询和避免人为错误。 3、实现对消费账目的自动结算。

4、实现对消费的历史记录进行查询,支持模糊查询。 5、系统应最大限度实现易维护性和易操作性。

6、实现对用户输入的数据进行严格的数据检验,尽可能避免人为错误

2.2功能结构图

图2-1系统功能结构图

2.3程序运行的环境

1、 系统开发平台:microsoft visual studio 2005。. 2、 系统开发语言:c#。

3、 数据库管理系统:microsoft sql server 2000。 4、 运行平台:window xp/window 2000/window7。 5、 运行环境:microsoft.net framework sdk 2.0。 6、 分辨率:最佳效果1024*768。

2.4数据库设计

由于系统管理餐饮方面数据较多,商品信息、消费信息以及账目,占较大空间,选择用microsoft sql server 2000 数据库存储数据,数据库名为db-Mrcy,如图

图2-2数据库db-Mrcy数据表图

2.5数据库的概念结构设计

图2-3商品类别实体的E-R图

图2-4商品信息实体E-R图

图2-5顾客消费信息实体E-R图

图2-6用户信息表

图2-7桌台信息实体E-R图

图2-8职员信息实体E-R图

2.6数据库的逻辑结构设计

表2-1顾客消费信息表

表2-2商品信息表

表2-3商品类别信息表

表2-4桌台信息表

表2-5用户信息表

表2-6职员信息表

3、系统代码和实现

3.1、登录界面设计

3.11登录界面代码设计

运行效果如下:

登录本系统的登录模块,用户输入用户名与密码,单击“登录”进行验证。在数据库中查询。使用sqlDataReader对象的HasRows属性判断登录用户名与密码是否正确,主要代码如下:

using System;

using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text;

using System.Windows.Forms; using System.Data.SqlClient; namespace MrCy {

public partial class frmLogin : Form {

public frmLogin() {

InitializeComponent(); }

private void Form1_Load(object sender, EventArgs e) {

txtName.Focus();

}

private void txtPwd_KeyPress(object sender, KeyPressEventArgs e) {

if (e.KeyChar == 13) {

btnSubmit_Click(sender, e); } }

private void 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();

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.ExecuteReader(); sdr.Read();

string UserPower = sdr[\"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(); } else {

MessageBox.Show(\"用®?户¡ì名?或¨°密¨¹码?错䨪误¨®\"); } } } }

private void btnConcel_Click(object sender, EventArgs e) {

if (MessageBox.Show(\"确¨¡¤定¡§退ª?出?系¦Ì统ª3吗e?ê?\", \"提¬¨¢示º?\", MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk) == DialogResult.OK) {

Application.Exit(); } } } }

3.12登录窗体控件

登录窗体用到的主要控件如下:

3.2主窗体模块的设计

3.21主窗体代码设计 运行的效果图如下:

主窗体的主要代码如下:

using System;

using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text;

using System.Windows.Forms; using System.Data.SqlClient; namespace MrCy {

public partial class frmMain : Form {

public frmMain() {

InitializeComponent(); }

public SqlDataReader sdr; public string power; public string Names; public string Times;

private void frmMain_Load(object sender, EventArgs e) {

switch (power) {

case \"0\": toolStripStatusLabel13.Text = \"超?级?管¨¹理¤¨ª员¡À\"; break; case \"1\": toolStripStatusLabel13.Text = \"经-理¤¨ª\"; break;

case \"2\": toolStripStatusLabel13.Text = \"一°?般ã?用®?户¡ì\"; break; }

toolStripStatusLabel10.Text = Names; toolStripStatusLabel16.Text = Times; if (power == \"2\") {

系¦Ì统ª3维?护¡èSToolStripMenuItem.Enabled = false; 基¨´础ä?信?息¡éMToolStripMenuItem.Enabled = false; }

if (power == \"1\") {

系¦Ì统ª3维?护¡èSToolStripMenuItem.Enabled = false; } }

private void AddItems(string rzt) {

if (rzt == \"使º1用®?\") {

lvDesk.Items.Add(sdr[\"RoomName\"].ToString(), 1); } else {

lvDesk.Items.Add(sdr[\"RoomName\"].ToString(), 0); } }

private void 开a台¬¡§ToolStripMenuItem_Click(object sender, EventArgs e) {

if (lvDesk.SelectedItems.Count != 0) {

string names = lvDesk.SelectedItems[0].SubItems[0].Text; frmOpen openroom = new frmOpen(); openroom.name = names; openroom.ShowDialog(); } else {

MessageBox.Show(\"请?选?择?桌Á¨¤台¬¡§\"); } }

private void frmMain_Activated(object sender, EventArgs e) {

lvDesk.Items.Clear();

SqlConnection conn = BaseClass.DBConn.CyCon(); conn.Open();

SqlCommand cmd = new SqlCommand(\"select * from tb_Room\", conn); sdr = cmd.ExecuteReader(); while (sdr.Read()) {

string zt = sdr[\"RoomZT\"].ToString().Trim(); AddItems(zt); }

conn.Close(); }

private void 点Ì?菜?ToolStripMenuItem_Click(object sender, EventArgs e) {

if (lvDesk.SelectedItems.Count != 0) {

string names = lvDesk.SelectedItems[0].SubItems[0].Text; frmDC dc = new frmDC(); dc.RName = names; dc.ShowDialog(); } else {

MessageBox.Show(\"请?选?择?桌Á¨¤台¬¡§\"); } }

private void 消?费¤?查¨¦询¡¥ToolStripMenuItem_Click(object sender, EventArgs e) {

if (lvDesk.SelectedItems.Count != 0) {

string names = lvDesk.SelectedItems[0].SubItems[0].Text; frmSerch serch = new frmSerch(); serch.RName = names; serch.ShowDialog(); } else {

MessageBox.Show(\"请?选?择?桌Á¨¤台¬¡§\"); } }

private void 结¨¢账?ToolStripMenuItem_Click(object sender, EventArgs e) {

if (lvDesk.SelectedItems.Count != 0) {

string names = lvDesk.SelectedItems[0].SubItems[0].Text; frmJZ jz = new frmJZ(); jz.Rname = names; jz.ShowDialog(); } else {

MessageBox.Show(\"请?选?择?桌Á¨¤台¬¡§\"); }

}

private void lvDesk_DoubleClick(object sender, EventArgs e) {

frmDetails details = new frmDetails();

details.TableName = lvDesk.SelectedItems[0].SubItems[0].Text; details.ShowDialog(); }

private void lvDesk_Click(object sender, EventArgs e) {

string names = lvDesk.SelectedItems[0].SubItems[0].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 = sdr[\"RoomZT\"].ToString().Trim(); sdr.Close();

if (zt == \"使º1用®?\") {

this.contextMenuStrip1.Items[0].Enabled = false; this.contextMenuStrip1.Items[1].Enabled = true; this.contextMenuStrip1.Items[3].Enabled = true; this.contextMenuStrip1.Items[5].Enabled = true; this.contextMenuStrip1.Items[6].Enabled = true; }

if (zt == \"待äy用®?\")

{

this.contextMenuStrip1.Items[0].Enabled = true; this.contextMenuStrip1.Items[1].Enabled = false; this.contextMenuStrip1.Items[3].Enabled = false; this.contextMenuStrip1.Items[5].Enabled = false; this.contextMenuStrip1.Items[6].Enabled = false; }

conn.Close(); }

private void 取¨?消?开a台¬¡§toolStripMenuItem_Click(object sender, EventArgs e) {

if (lvDesk.SelectedItems.Count != 0) {

string names = lvDesk.SelectedItems[0].SubItems[0].Text; SqlConnection conn = BaseClass.DBConn.CyCon(); conn.Open();

SqlCommand cmd = new SqlCommand(\"update tb_Room set RoomZT='待äy用®?',Num=0 where RoomName='\" + names + \"'\", conn); cmd.ExecuteNonQuery();

cmd = new SqlCommand(\"delete from tb_GuestFood where zhuotai='\" + names + \"'\", conn);

cmd.ExecuteNonQuery(); conn.Close();

frmMain_Activated(sender, e); } else {

MessageBox.Show(\"请?选?择?桌Á¨¤台¬¡§\"); } }

private void 桌Á¨¤台¬¡§信?息¡éToolStripMenuItem1_Click(object sender, EventArgs e) {

frmDesk desk = new frmDesk(); desk.ShowDialog(); }

private void 职¡ã员¡À信?息¡éToolStripMenuItem1_Click(object sender, EventArgs e) {

frmUser users = new frmUser(); users.ShowDialog(); }

private void 日¨?历¤¨²ToolStripMenuItem1_Click(object sender, EventArgs e)

{

frmCalender calender = new frmCalender(); calender.ShowDialog(); }

private void 记?事º?本À?ToolStripMenuItem1_Click(object sender, EventArgs e) {

System.Diagnostics.Process.Start(\"notepad.exe\"); }

private void 计?算?器¡ÂToolStripMenuItem1_Click(object sender, EventArgs e) {

System.Diagnostics.Process.Start(\"calc.exe\"); }

private void 权¨¡§限T管¨¹理¤¨ªToolStripMenuItem1_Click(object sender, EventArgs e) {

frmQxGl qx = new frmQxGl(); qx.ShowDialog(); }

private void 系¦Ì统ª3备À?份¤YToolStripMenuItem1_Click(object sender, EventArgs e) {

frmBF bf = new frmBF(); bf.ShowDialog(); }

private void 系¦Ì统ª3恢?复¡äToolStripMenuItem1_Click(object sender, EventArgs e) {

frmHF hf = new frmHF(); hf.ShowDialog(); }

private void 口¨²令¢?设¦¨¨置?ToolStripMenuItem1_Click(object sender, EventArgs e) {

frmPwd pwd = new frmPwd(); pwd.names = Names; pwd.ShowDialog(); }

private void 锁?定¡§系¦Ì统ª3ToolStripMenuItem1_Click(object sender, EventArgs e) {

frmLock locksystem = new frmLock(); locksystem.Owner = this;

locksystem.ShowDialog(); }

private void 关?于®¨²ToolStripMenuItem1_Click(object sender, EventArgs e) {

AboutBox1 ab = new AboutBox1(); ab.ShowDialog(); }

private void 退ª?出?系¦Ì统ª3ToolStripMenuItem1_Click(object sender, EventArgs e) {

if (MessageBox.Show(\"确¨¡¤定¡§退ª?出?本À?系¦Ì统ª3吗e?ê?\", \"提¬¨¢示º?\", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation) == DialogResult.OK) {

Application.Exit(); } }

private void 系¦Ì统ª3维?护¡èSToolStripMenuItem_Click(object sender, EventArgs e) {

} } }

3.22主窗体主要控件 主窗体用到的控件如下:

3.3开台模块的设计与实现

3.31开台模块代码设计

运行的效果图如下:

主要代码如下:

using System;

using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text;

using System.Windows.Forms; using System.Data.SqlClient; namespace MrCy {

public partial class frmOpen : Form {

public frmOpen() {

InitializeComponent(); }

public string name; public SqlConnection conn;

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.ExecuteReader(); while (sdr.Read()) {

cbNum.Items.Add(sdr[\"RoomName\"].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(sdr[\"WaiterName\"].ToString().Trim()); }

cbWaiter.SelectedIndex = 0; sdr.Close(); }

private void txtNum_KeyPress(object sender, KeyPressEventArgs e) {

if ((e.KeyChar != 8 && !char.IsDigit(e.KeyChar)) && e.KeyChar != 13) {

MessageBox.Show(\"请?输º?入¨?数ºy字Á?\"); e.Handled = true; } }

private void btnSave_Click(object sender, EventArgs e) {

if (txtNum.Text == \"\"||Convert.ToInt32(txtNum.Text)<=0) {

MessageBox.Show(\"请?输º?入¨?用®?餐¨ª人¨?数ºy\"); } else {

string RoomName = cbNum.SelectedItem.ToString();

SqlCommand cmd1 = new SqlCommand(\"update tb_Room set GuestName='\" + txtName.Text + \"',zhangdanDate='\" + dateTimePicker1.Value.ToString() + \"',Num='\" +

Convert.ToInt32(txtNum.Text) + \"',WaiterName='\" + cbWaiter.SelectedItem.ToString() + \"',RoomZT='使º1用®?' where RoomName='\" + name + \"'\", conn); cmd1.ExecuteNonQuery(); this.Close(); } }

private void btnExit_Click(object sender, EventArgs e) {

this.Close();

} } }

3.32开台窗体主要控件 用到的主要的控件如下:

4、总结

开发餐饮管理系统,要抓住开发的核心部分。对餐饮管理系统的整体设计有一个深入的了解,餐饮管理系统大体有桌台显示、开台、点菜和结账4大核心组成,掌握着四个部分的开发,其他功能去补充添加。并且要注重软件的测试工作。

5、参考文献

[1] 曹步清,金瓯. Java中的Abstract Class与Interface技术研究[J].计算机技术与发展,2006,16(8):110-112,115.

[2] Watson Karli, Bellinaso Marco,等. C#入门经典[M].康博译.北京:清华大学出版社,2002. [3] 郝春强.C#基础与实例教程[M].北京:中国电力出版社,2006. [4] 刘克成,张凌晓.C#程序设计[M].北京:中国铁道出版社,2008. [5] 西红柿炒鸭蛋.面试题:接口和抽象类的区别[DB/OL].

[6] 尉哲明,郝建文. Java中利用内部类简化程序的编写[J].微机发展,2003,13(3):41-44. [7] 施艳妹.C#语言程序设计教程[M].北京:中国水利水电出版社,2004. [8] 李兰友,杨晓光.Visual C#.NET开发实践[M].北京:人民邮电出版社,2001. [9] 杨应红.Web技术文档[DB/OL].

[10] 点点滴滴.C#抽象类与接口的比较[DB/OL].

图1-6类图

因篇幅问题不能全部显示,请点此查看更多更全内容