吴昊品工程级别软件项目Round2——餐饮管理系统(C#)吴昊系列

机器人炒菜是全自动的,但是,即使是所有的事情都由机器人来处理,还是需要人来负责收银以及处理机器的一切异常(处理器可能会因为湿度,温度等原因发生一些不可预料的故障)。为了提高员工结账,管理客户的效率,我想到了这一套系统,平台为WindowsXP,开发组件包括VisualStudio2010+MicrosoftSQLServer2005,用到的语言是C#,主要是考虑到C#的界面美观,并且,在之后可能会有一些联网的扩展,用C#的可扩展性和可维护性均较强。

二.数据库表格规划

经分析,主要由以下六个E-R实体图组成,结合公司的实际,我会做出一些修改,tb的意思是table(表单),分别为商品信息(tb_food),顾客消费信息(tb_GuestFood),桌台信息(tb_Room),职员信息(tb_Waiter),用户信息(tb_User),商品类别信息(tb_foodtype),下面一一介绍其主键以及其它的属性(主键必须唯一地标识这个元素):

商品信息:主键为编号(ID),然后是类别编号(Foodty),商品代号(foodnum),商品名(foodname),商品价格(foodprice)。

商品类别信息:主键为类别编号(ID),然后是类别名(foodtype)。

三.项目的具体模块分析以及与炒菜机器人的结合

(1)实现人机交互,界面美观,信息灵活,数据库安全可靠(用的是SQLServer),操作简单。

(2)具备餐厅顾客的开台,点菜,加菜,账目查询和结账的功能,并且集员工的管理于一体(必要的时候可以将员工的财务管理系统和餐饮管理系统合二为一)。

(3)能够对顾客的消费历史记录进行查询。

(4)在后期可以考虑和机器人的处理器的联网,这样,便可以在客户点菜的同时将菜谱输入进机器人的程序中,方便了一体化的操作。

四。构成模块(这里以结构图的方式展现菜单(menu)的功能)构成模块

限于位置原因,后面四个子菜单的信息在此列出:

(1)系统维护——权限管理,系统备份,系统恢复。

(2)系统设置——口令设置,锁定系统。

(3)帮助——关于。

(4)退出——退出系统。

五.软件初体验

usingSystem;

usingSystem.Collections.Generic;

usingSystem.ComponentModel;

usingSystem.Data;

usingSystem.Drawing;

usingSystem.Text;

usingSystem.Windows.Forms;

usingSystem.Data.SqlClient;

namespaceMrCy

{

publicpartialclassLogin:Form//窗体结构

publicLogin()

InitializeComponent();//初始化

}

privatevoidForm1_Load(objectsender,EventArgse)

txtName.Focus();//设置焦点到txtName

privatevoidtxtPwd_KeyPress(objectsender,KeyPressEventArgse)

if(e.KeyChar==13)

btnSubmit_Click(sender,e);

privatevoidbtnSubmit_Click(objectsender,EventArgse)

if(txtName.Text=="")//如果用户名为空

MessageBox.Show(“请输入用户名”,“警告”,MessageBoxButtons.OK,MessageBoxIcon.Warning);

else

if(txtPwd.Text=="")//如果密码为空

MessageBox.Show(“请输入密码”,“警告”,MessageBoxButtons.OK,MessageBoxIcon.Warning);

SqlConnectionconn=BaseClass.DBConn.CyCon();

conn.Open();

SqlCommandcmd=newSqlCommand("selectcount(*)fromtb_UserwhereUserName='"+txtName.Text+"'andUserPwd='"+txtPwd.Text+"'",conn);

inti=Convert.ToInt32(cmd.ExecuteScalar());

if(i>0)

cmd=newSqlCommand("select*fromtb_UserwhereUserName='"+txtName.Text+"'",conn);

SqlDataReadersdr=cmd.ExecuteReader();

sdr.Read();

stringUserPower=sdr["power"].ToString().Trim();

conn.Close();

Mainmain=newMain();

main.power=UserPower;//这里以数字设置了power

main.Names=txtName.Text;

main.Times=DateTime.Now.ToShortDateString();

main.Show();

this.Hide();

MessageBox.Show("用户名或密码错误");

privatevoidbtnConcel_Click(objectsender,EventArgse)

if(MessageBox.Show("确定退出系统吗?","提示",MessageBoxButtons.OKCancel,MessageBoxIcon.Asterisk)==DialogResult.OK)

Application.Exit();

源代码如下:

publicpartialclassMain:Form

publicMain()

InitializeComponent();

publicSqlDataReadersdr;

publicstringpower;

publicstringNames;

publicstringTimes;

privatevoidfrmMain_Load(objectsender,EventArgse)

//这里根据具体的权限处理权限信息

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")

系统维护SToolStripMenuItem.Enabled=false;

基础信息MToolStripMenuItem.Enabled=false;

if(power=="1")

//对使用和待用状态的不同处理,主要是对桌台点击鼠标右键时,对应的某些选项进行了加灰色处理。(点击鼠标右键时对应的内容如下)

(图为桌子在使用状态下的点击结果)

privatevoidAddItems(stringrzt)

if(rzt=="使用")

lvDesk.Items.Add(sdr["RoomName"].ToString(),1);

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

privatevoid开台ToolStripMenuItem_Click(objectsender,EventArgse)

if(lvDesk.SelectedItems.Count!=0)

stringnames=lvDesk.SelectedItems[0].SubItems[0].Text;

Openopenroom=newOpen();

openroom.name=names;

openroom.ShowDialog();

MessageBox.Show("请选择桌台");

privatevoidfrmMain_Activated(objectsender,EventArgse)

lvDesk.Items.Clear();

SqlCommandcmd=newSqlCommand("select*fromtb_Room",conn);

sdr=cmd.ExecuteReader();

while(sdr.Read())

stringzt=sdr["RoomZT"].ToString().Trim();

AddItems(zt);

privatevoid点菜ToolStripMenuItem_Click(objectsender,EventArgse)

DCdc=newDC();

dc.RName=names;

dc.ShowDialog();

privatevoid消费查询ToolStripMenuItem_Click(objectsender,EventArgse)

Serchserch=newSerch();

serch.RName=names;

serch.ShowDialog();

privatevoid结账ToolStripMenuItem_Click(objectsender,EventArgse)

JZjz=newJZ();

jz.Rname=names;

jz.ShowDialog();

//这里是具体的对加灰的处理

privatevoidlvDesk_DoubleClick(objectsender,EventArgse)

Detailsdetails=newDetails();

details.TableName=lvDesk.SelectedItems[0].SubItems[0].Text;

details.ShowDialog();

privatevoidlvDesk_Click(objectsender,EventArgse)

SqlCommandcmd=newSqlCommand("select*fromtb_RoomwhereRoomName='"+names+"'",conn);

sdr.Close();

if(zt=="使用")

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=="待用")

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;

privatevoid取消开台toolStripMenuItem_Click(objectsender,EventArgse)

SqlCommandcmd=newSqlCommand("updatetb_RoomsetRoomZT='待用',Num=0whereRoomName='"+names+"'",conn);

cmd.ExecuteNonQuery();

cmd=newSqlCommand("deletefromtb_GuestFoodwherezhuotai='"+names+"'",conn);

frmMain_Activated(sender,e);

MessageBox.Show("×àì¨");

privatevoid桌台信息ToolStripMenuItem1_Click(objectsender,EventArgse)

Deskdesk=newDesk();

desk.ShowDialog();

privatevoid职员信息ToolStripMenuItem1_Click(objectsender,EventArgse)

Userusers=newUser();

users.ShowDialog();

privatevoid日历ToolStripMenuItem1_Click(objectsender,EventArgse)

Calendercalender=newCalender();

calender.ShowDialog();

privatevoid记事本ToolStripMenuItem1_Click(objectsender,EventArgse)

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

privatevoid计算器ToolStripMenuItem1_Click(objectsender,EventArgse)

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

privatevoid权限管理ToolStripMenuItem1_Click(objectsender,EventArgse)

QxGlqx=newQxGl();

qx.ShowDialog();

privatevoid系统备份ToolStripMenuItem1_Click(objectsender,EventArgse)

BFbf=newBF();

bf.ShowDialog();

privatevoid系统恢复ToolStripMenuItem1_Click(objectsender,EventArgse)

HFhf=newHF();

hf.ShowDialog();

privatevoid口令设置ToolStripMenuItem1_Click(objectsender,EventArgse)

Pwdpwd=newPwd();

pwd.names=Names;

pwd.ShowDialog();

privatevoid锁定系统ToolStripMenuItem1_Click(objectsender,EventArgse)

Locklocksystem=newLock();

locksystem.Owner=this;

locksystem.ShowDialog();

privatevoid关于ToolStripMenuItem1_Click(objectsender,EventArgse)

AboutBox1ab=newAboutBox1();

ab.ShowDialog();

privatevoid退出系统ToolStripMenuItem1_Click(objectsender,EventArgse)

if(MessageBox.Show("è·¨í3±μí3e£","ìáê",MessageBoxButtons.OKCancel,MessageBoxIcon.Exclamation)==DialogResult.OK)

privatevoid系统维护ToolStripMenuItem_Click(objectsender,EventArgse)

(图为桌子在待使用状态下的点击结果)

点击开台之后,系统便进入到开台界面:

publicpartialclassOpen:Form

publicOpen()

publicstringname;

publicSqlConnectionconn;

privatevoidfrmOpen_Load(objectsender,EventArgse)

conn=BaseClass.DBConn.CyCon();

cbNum.Items.Add(sdr["RoomName"].ToString().Trim());

cbNum.SelectedItem=name.Trim();

cmd=newSqlCommand("select*fromtb_Waiter",conn);

cbWaiter.Items.Add(sdr["WaiterName"].ToString().Trim());

cbWaiter.SelectedIndex=0;

privatevoidtxtNum_KeyPress(objectsender,KeyPressEventArgse)

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

MessageBox.Show("请输入数字");//IsDigit函数用来检验

e.Handled=true;

privatevoidbtnSave_Click(objectsender,EventArgse)

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

MessageBox.Show("请输入用餐人数");

stringRoomName=cbNum.SelectedItem.ToString();

SqlCommandcmd1=newSqlCommand("updatetb_RoomsetGuestName='"+txtName.Text+"',zhangdanDate='"+dateTimePicker1.Value.ToString()+"',Num='"+Convert.ToInt32(txtNum.Text)+"',WaiterName='"+cbWaiter.SelectedItem.ToString()+"',RoomZT=’使用’whereRoomName='"+name+"'",conn);

cmd1.ExecuteNonQuery();

this.Close();

privatevoidbtnExit_Click(objectsender,EventArgse)

保存了开台信息之后,便可以进入点菜和加菜环节

publicpartialclassDC:Form

publicDC()

InitializeComponent();//窗体初始化

publicstringRName;

privatevoidfrmDC_Load(objectsender,EventArgse)

this.Text=RName+“点/加菜”;

//这里的逻辑可以根据具体的炒菜机器人进行适当修改

TreeNodenewnode1=tvFood.Nodes.Add("锅底");

TreeNodenewnode2=tvFood.Nodes.Add("配菜");

TreeNodenewnode3=tvFood.Nodes.Add("烟酒");

TreeNodenewnode4=tvFood.Nodes.Add("主食");

SqlCommandcmd=newSqlCommand("select*fromtb_foodwherefoodty='1'",conn);

newnode1.Nodes.Add(sdr[3].ToString().Trim());

cmd=newSqlCommand("select*fromtb_foodwherefoodty='2'",conn);

newnode2.Nodes.Add(sdr[3].ToString().Trim());

cmd=newSqlCommand("select*fromtb_foodwherefoodty='3'",conn);

newnode3.Nodes.Add(sdr[3].ToString().Trim());

cmd=newSqlCommand("select*fromtb_foodwherefoodty='4'",conn);

newnode4.Nodes.Add(sdr[3].ToString().Trim());

cmd=newSqlCommand("selectRoomZTfromtb_RoomwhereRoomName='"+RName+"'",conn);

stringzt=Convert.ToString(cmd.ExecuteScalar());

if(zt.Trim()=="待用")

groupBox1.Enabled=false;

groupBox2.Enabled=false;

groupBox3.Enabled=false;

groupBox4.Enabled=false;

GetData();

tvFood.ExpandAll();

privatevoidtreeView1_DoubleClick(objectsender,EventArgse)

stringfoodname=tvFood.SelectedNode.Text;

if(foodname=="锅底"||foodname=="配菜"||foodname=="烟酒"||foodname=="主食")

SqlCommandcmd=newSqlCommand("select*fromtb_foodwherefoodname='"+foodname+"'",conn);

txtNum.Text=sdr["foodnum"].ToString().Trim();

txtName.Text=foodname;

txtprice.Text=sdr["foodprice"].ToString().Trim();

if(txtpnum.Text=="")

MessageBox.Show("数量不能为空");

return;

txtallprice.Text=Convert.ToString(Convert.ToInt32(txtprice.Text)*Convert.ToInt32(txtpnum.Text));

privatevoidtxtpnum_TextChanged(objectsender,EventArgse)

if(Convert.ToInt32(txtpnum.Text)<1)

MessageBox.Show("数量不能为小于1的数字");

privatevoidGetData()//连数据库

SqlDataAdaptersda=newSqlDataAdapter("selectfoodname,foodsum,foodallprice,waitername,beizhu,zhuotai,datatimefromtb_GuestFoodwherezhuotai='"+RName+"'orderbyIDdesc",conn);

DataSetds=newDataSet();

sda.Fill(ds);

dgvFoods.DataSource=ds.Tables[0];

privatevoidtxtpnum_KeyPress(objectsender,KeyPressEventArgse)

MessageBox.Show("请输入数字");

privatevoidbtnDelete_Click(objectsender,EventArgse)

if(dgvFoods.SelectedRows.Count>0)

stringnames=dgvFoods.SelectedCells[0].Value.ToString();

SqlCommandcmd=newSqlCommand("deletefromtb_GuestFoodwherefoodname='"+names+"'andzhuotai='"+RName+"'",conn);

//这里解决一些按钮的异常

if(txtName.Text==""||txtNum.Text==""||txtprice.Text=="")

MessageBox.Show("请选择菜系");

if(Convert.ToInt32(txtpnum.Text)<=0)

MessageBox.Show("消费数量不能小于等于0");

SqlCommandcmd=newSqlCommand("insertintotb_GuestFood(foodnum,foodname,foodsum,foodallprice,waitername,beizhu,zhuotai,datatime)values('"+txtNum.Text.Trim()+"','"+txtName.Text.Trim()+"','"+txtpnum.Text.Trim()+"','"+Convert.ToDecimal(txtallprice.Text.Trim())+"','"+cbWaiter.SelectedItem.ToString()+"','"+txtbz.Text.Trim()+"','"+RName+"','"+DateTime.Now.ToString()+"')",conn);

在这里,我们暂时缓一下,处理一下数据库的联结问题,因为这里选择的是SQLServer,所以采用如下代码:

namespaceMrCy.BaseClass

classDBConn

publicstaticSqlConnectionCyCon()

returnnewSqlConnection("server=(local);database=eat;uid=sa;pwd=888888");

关于结账,我们有如下的界面:(消费查询暂时有一些问题,是否是同一个界面我暂时也不知道)

publicpartialclassJZ:Form

publicJZ()

publicstringRname;

publicstringprice;

publicstringbjf;

privatevoidfrmJZ_Load(objectsender,EventArgse)

this.Text=Rname+"结账";

groupBox1.Text="当前桌台-"+Rname;

SqlDataAdaptersda=newSqlDataAdapter("selectfoodname,foodsum,foodallprice,waitername,beizhu,zhuotai,datatimefromtb_GuestFoodwherezhuotai='"+Rname+"'orderbyIDdesc",conn);

dgvRecord.DataSource=ds.Tables[0];

SqlCommandcmd=newSqlCommand("selectsum(foodallprice)fromtb_GuestFoodwherezhuotai='"+Rname+"'",conn);

price=Convert.ToString(cmd.ExecuteScalar());

if(price=="")

lblprice.Text="0";

btnJZ.Enabled=false;

cmd=newSqlCommand("selectRoomBJFfromtb_RoomwhereRoomName='"+Rname+"'",conn);

bjf=cmd.ExecuteScalar().ToString();

//这里涉及了一个打折的优惠活动,可以根据公司内部的具体优惠活动进行打折处理。

if(bjf=="0")

btnJZ.Enabled=true;

lblprice.Text=price+"*95%"+"+"+bjf+"="+(Convert.ToDecimal(Convert.ToDouble(price)*Convert.ToDouble(0.95))).ToString("C");

lblprice.Text=price+"*95%"+"+"+bjf+"="+(Convert.ToDecimal(Convert.ToDouble(price)*Convert.ToDouble(0.95))+Convert.ToDecimal(bjf)).ToString("C");

privatevoidtxtmoney_KeyPress(objectsender,KeyPressEventArgse)

privatevoidtxtmoney_TextChanged(objectsender,EventArgse)

lbl0.Text="0";

if(txtmoney.Text=="")

txtmoney.Text="0";

lbl0.Text=Convert.ToDecimal(Convert.ToDouble(txtmoney.Text.Trim())-Convert.ToDouble(price)*Convert.ToDouble(0.95)-Convert.ToDouble(bjf)).ToString("C");

privatevoidbtnJZ_Click(objectsender,EventArgse)

if(txtmoney.Text==""||lbl0.Text=="0")

MessageBox.Show("请先结账");

if(lbl0.Text.Substring(1,1)=="-")

MessageBox.Show("金额不足");

SqlCommandcmd=newSqlCommand("deletefromtb_GuestFoodwherezhuotai='"+Rname+"'",conn);

cmd=newSqlCommand("updatetb_RoomsetRoomZT='待用',Num=0,WaiterName=''whereRoomName='"+Rname+"'",conn);

THE END
1.查酒价格哪个软件好用?酒价格查询app推荐下载中国的酒文化是非常的丰富,平时的吃饭聚会,大家都少不了与酒为伴,但是每次都会好奇这款酒的价格是多少,那么这次小编就为大家带来了一些专门查酒价格的软件,通过它们大家不仅可以查到所有酒类的价格,包含红酒,白酒,啤酒等多个品类,还能在这购买到心仪的酒。并且在酒价格查询app内也方便用户做出货比三家的对比,以后https://m.32r.com/zt/mjapp/
2.酒香浮动探索最佳酒价查询工具如果说过去我们只是买卖交易的话,那么现在则是进入了一场关于知识与体验共融的大舞台。在这里,每一次点击都是向前迈出的步伐,每一次学习都是对自我认知的一次升级。而这一切,都源于那最初的问题:“哪个软件可以查酒的价格?” 标签:中国白酒排名前二十、酒文化的发展现状、中国白酒历史文化、酒文化的起源、地区酒https://www.gccthdxv.cn/bai-jiu-wen-hua/283559.html
3.酒类价格查询软件精确找寻您心仪的美酒酒类价格查询软件是一款专门为爱好者和收藏家设计的应用程序,它能够提供全球各地酒类商品的最新价格信息。用户可以通过搜索功能快速找到自己感兴趣的产品,并且可以查看到不同地区、不同的零售商以及各种促销活动下的价格。这些信息不仅能帮助用户在购买时做出明智的决策,还能让他们更好地了解市场动态。 https://www.feawjppu.cn/bai-jiu-pin-jian/355322.html
4.订烟软件有哪些?中国烟草网上订货平台下载手机买烟app订烟软件有哪些?随着互联网技术越来越发达,越来越普及,我们的生活也随之发生了改变,以前订烟买烟总是要跑到很远的地方进行批发,现在就很方便了,直接下载我们提供的订烟软件就可以快速订烟,非常方便,我们提供的烟草网上订货平台包括了中烟新商盟、烟草易付等订烟app,各种品牌的香烟任你订,快来体验吧! http://www.downyi.com/key/dingyanapp/
5.酒水批发app排行榜前十名酒水批发app有哪些?手机酒水批发软件大全水果批发平台app水果蔬菜批发app批发水果app水产批发app冻货批发app五金批发平台app一手货源批发app蔬菜批发app生鲜批发app药品批发采购平台app农产品批发app冻品批发平台app手机批发一手货源app买菜批发app批发蔬菜app批发衣服软件进货批发app批发鞋的进货app童装批发一手货源app访问https://m.pianwan.com/s/zj-133116
6.红酒真假查验软件推荐:确保您购买正品!总之,随着假冒伪劣产品日益猖獗,选择一款可靠的红酒真假查验软件变得尤为重要。以上推荐的几款软件都具备高效、准确地判断红酒真伪,并提供专业意见和建议等功能。消费者在购买红酒时可以使用这些应用程序来保证自己购买到正品,享受到优质葡萄美酿带来的愉悦体验。https://www.coffee.cn/xican/post/386117.html
7.扫一扫识别真假烟的软件可以识别烟酒真假的app大家在日常生活中买香烟总怕遇到假的,在这里有软件能够识别假的香烟和烟酒,能够一键扫一扫就能够识别,非常的方便用户,平台不仅可以帮助用户去购买正品香烟,还能够提供很多香烟知识和真品信息,帮助用户之后不会上当受骗,快来看看吧!http://www.ishaohuang.com/s/sysshzjydrj/
8.烟酒价格最新烟酒价格走势查询金投价格网金投价格频道提供烟价,酒价,香烟价格,名酒价格,烟酒价格,名烟名酒价格行情,烟酒批发价格行情查询,烟酒回收价格查询等信息。https://jiage.cngold.org/minyong/yanjiu/
9.美萍软件公司各地代理商查询(优秀商业管理软件美萍软件公司诚美萍软件,美萍洗浴,洗浴,洗浴管理,美萍娱乐,娱乐,餐饮,餐饮管理,酒店,酒店管理,美萍餐饮,美萍酒店,酒吧,美萍酒吧,休闲会所,茶楼,美萍茶楼,网吧管理,进销存,会员,汽配,美容,美萍进销存,美萍会员,美萍汽配,美萍美容,美萍网吧,网络安全,网吧计费,系统安全http://www.mpsoft.net/index.htm
10.www.scmc根据披露,王能早年在灌阳县糖烟酒公司工作,后进入当地人行系统;1997年任人民银行桂林分行副行长,随后参与筹备桂林银监分局,并在该局成立后担任党委书记、局长。-。 他说,中央指导组将“坚持严督实导,全力支持市委履行主体责任,助力重庆市在以学正风、深入整治基层治理不良现象和形式主义突出问题、为基层减负上取得新http://www.scmc-xa.com/xxxr98849965.htm
11.查查价格查烟价酒价油价金价购物价格查询、商品比价、香烟价格、黄金价格、油价查询、汽油、石油价格、白酒、红酒价格、查历史价格、肉类价格、超市商品价格、查真伪、扫码查价格、查烟酒、全面掌握商品价格表,购物省心省钱!还有每日领劵功能,购物更优惠。购物避坑就先查查价格再慢慢买! https://app.mi.com/details?id=com.leijian.compare
12.亚马逊新手卖家开店前要搞懂的100个问题(上)目前市场上付费的软件很多,功能也基本上大同小异,可以根据自己的实际情况进行选择。 卖家精灵软件有一个“关键词反查”的功能,直接输入竞品的Asin码,这个竞品所有的关键词就会显示在你的面前。 3、利用卖家后台的自带功能 进入卖家后台,点击“数据报告”下的“品牌分析”,会进入到“Brand analytics”的界面。 https://www.cifnews.com/article/76131/