vb.net+sql 餐饮管理系统
餐饮管理系统设计文档 0背景: 随着餐饮行业的发展,餐饮行业的管理越来越趋向于精细化,自动化,智能化。餐饮业的管理开始注重细节,将利润与每个细节结合起来,力求资金的有效运转,因此要求餐饮管理系统能详细记录每次服务的内容以及时间。以便于从大量的数据中分析顾客的偏好,以及某一种菜品的销售与季节等其他因素的关系。力求菜品随顾客的口味变化。与此同时,顾客的要求逐渐趋向个性化,频繁的提前订餐及退订对于传统人工操作来说比较费时费力,而且容易出错。另外,随着各行各业支出管理的规范化,大多数顾客希望在消费后能得到自己的消费清单。 1.需求分析 1.1业务需求 (1)系统能够根据进入系统的用户的角色不同而赋予其不同的权限。具体分为系统管理员和业务操作员两大类。为方便系统初期的调试,存在超级用户,拥有所有权限。 (2)系统提供接口,供其他系统或其他语言开发的本系统的扩展部分接入。系统管理员可以更改系统的界面风格。 (3)人事管理模块能够对所有员工的姓名、性别、住址、身份证号、出生日期、学历、职位、联系电话、邮箱等信息进行增加、删除、修改、查询等操作。另外,人事管理模块还能对系统用户进行管理。 (4)菜单管理由具有厨师长权限的人负责,菜单管理的内容包括菜名、价格、分类等。同过增删改查对菜单进行动态的管理,能够很方便的增加新菜品;修改菜品价格等信息;删除过时的菜品;以及预览所有的菜品。其中菜名,价格等信息能够被点菜模块调用,而分类信息能用在报表统计模块中,统计出每种菜品在某一阶段的消费情况。 (5)报表统计 要求系统能够用图表直观的显示员工学历结构、顾客偏好菜品、库存信息及历史消费等。并能够将数据以word、excel等多种形式展现出来。 (6)库存管理模块能对企业的物料管理,实现对物料的物料名,数量,单价,分类等进行增删改查。 (7)订餐及收款模块包含预定、退订、点菜、结账等功能。席位共有20个,未预定时桌位的颜色是绿色的,点击预定后桌位变为黄色,并弹出顾客信息登记界面,包括客户的编号、姓氏、电话、已预订的桌位号以及预定时间,且已经预定的桌位不能再次订餐。点击退订能对已经定的桌位进行退订,退订后桌位颜色变为绿色,对于已经就餐的桌位不能退订。已预订或未预定的桌位均能点菜,点菜时弹出点菜界面,包括已点的菜品及每份菜的数量,点菜之后餐桌颜色变为红色。结账模块用来对已经就餐的餐桌结账,结账界面的信息包括桌号,消费清单,应付款。输入实收金额,自动计算找零金额。并显示当前的操作员及操作时间,点击完成将以上信息写入数据库,点击打印,弹出消费清单。 (8)系统功能导航能根据每个进入系统的用户角色提供其具有的权限,方便用户操作。 1.2性能需求 系统容量小,运行速度快,界面美观,人性化,操作方便,易于使用;经理及主管可拥有所有的权限(能同时操作管理和收款界面),收款员只能操作收款界面,其他人员则不能进入。 要求系统为c/s结构,数据库部署在服务器端,客户端从数据库读取数据或写入数据的速度要快。 1.3环境需求 硬件环境:服务器、客户机、网络交换机 软件环境:win7/xp平台SQLserver2005 开发环境:visualstdio2005 2.概念结构和逻辑结构设计方案 2.1数据库概念结构设计 本系统中涉及到的实体有:员工、系统用户、菜单、库存、预定、点菜、结账 (1)员工实体E-R图
(2)系统用户实体E-R图
(3)菜单实体E-R图
(4)库存实体E-R图
(5)预定实体E-R图
(6)点菜实体E-R图
(7)结账实体E-R图
(8)客户实体E-R图
(9)实体之间的关系
2.2数据库逻辑结构设计 (1)菜单表
(2)餐桌表
(3)订餐表
(4)结账表
(5)库存表
(6)url表
(7)系统用户表
(8)员工表
3.系统总体结构设计方案 3.1在系统分析的基础上得到如下功能模块
模块功能说明: (1)系统管理模块包括切换系统,系统设置,退出系统这几个功能。切换系统能弹出登录界面方便另外一位用户使用系统;系统设置包括用户密码修改、主界面网页设定、系统风格选择,用户在登入系统后可进入用户密码修改模块更改自己的密码;主界面网页设定的作用是更改每个角色登陆到系统看到的主菜单界面的网页的url,可以设定不同角色的用户进入系统后看到的网页内容是不同的。系统风格设置可以改变系统的风格,选择用户喜欢的风格。退出系统能关闭所有使用的资源,退出整个系统。 (2)人事管理模块包括员工信息管理和系统用户管理。其中,员工信息管理能对普通员工的信息执行增删改查等操作,系统用户管理能对系统用户的信息进行增删改查。 (3)菜单管理模块能够对菜单的编号、名称、价格、分类等执行增删改查操作。 (4)报表统计模块能对员工的学历信息以图表的形式统计并展现;通过大量的消费数据得出顾客喜欢的菜品以及喜欢的菜品组合,并用饼图进行反应,方便管理人员作出正确的决策; 库存信息统计能够很直观的反应当前库存的状况;历史账单统计能够让用户一览流水数据。除此之外,报表还可以以word、excel、pdf等形式导出。 (5)库存管理模块能够实现对物料的编号、名称、单价、数量、分类等的增删改查管理。 (6)订餐及收款模块包含预定、退订、点菜、结账等功能。席位共有20个,未预定时桌位的颜色是绿色的,点击预定后桌位变为黄色,并弹出顾客信息登记界面,包括客户的编号、姓氏、电话、已预订的桌位号以及预定时间,且已经预定的桌位不能再次订餐。点击退订能对已经定的桌位进行退订,退订后桌位颜色变为绿色,对于已经就餐的桌位不能退订。已预订或未预定的桌位均能点菜,点菜时弹出点菜界面,包括已点的菜品及每份菜的数量,点菜之后餐桌颜色变为红色。结账模块用来对已经就餐的餐桌结账,结账界面的信息包括桌号,消费清单,应付款。输入实收金额,自动计算找零金额。并显示当前的操作员及操作时间,点击完成将以上信息写入数据库,打印按钮的操作状态变为可操作,点击打印按钮能够打印顾客回执。 3.2系统操作流程
4.系统详细设计方案 4.1系统登录设计 Form1窗体
用户登陆模块是防止非法用户登陆的第一道防线,通过它可以保护后台数据库的安全性,当用户要进行系统操作时,首先要进入的就是身份验证界面,只有在密码正确的情况下才能进行以后的操作,如果输入的密码不正确,则不能进行登录对系统进行操作。同时系统能根据进入的用户的角色不同而分配不同的操作权限。本系统的记住密码功能使得用户不用每次都输入密码,在保证安全的前提下方便了用户的操作。下面是登录模块的主要代码: PublicClassForm1 Dimuser_id,pswAsString PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click IfTextBox1.Text.Trim=""Then MsgBox("请输入用户名",MsgBoxStyle.OkOnly+48,"注意") Return'若用户名为空,返回,重新输入 EndIf Callsqlcon() If(TextBox1.Text.Trim=user_idAndTextBox2.Text.Trim=psw)Then form2.Show() Me.Hide() Else MsgBox("登录失败,请检查用户名及密码是否正确!",MsgBoxStyle.RetryCancel+48,"注意") EndIf EndSub Subsqlcon() DimconstrAsString="Provider=SQLOLEDB.1;Password=0;PersistSecurityInfo=True;UserID=sa;InitialCatalog=canteen;DataSource=liuxuecheng" DimconAsNewOleDb.OleDbConnection(constr) con.Open() DimsqlcmdAsString="select*fromyonghuwhereuser_id="&TextBox1.Text.Trim DimcmdAsNewOleDb.OleDbCommand(sqlcmd,con) DimreaderAsOleDb.OleDbDataReader reader=cmd.ExecuteReader Ifreader.Read=TrueThen user_id=reader(0).ToString.Trim psw=reader(1).ToString.Trim EndIf reader.Close() con.Close() EndSub '从yonghu表中获取用户名及密码 PrivateSubForm1_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Load DimflagAsInteger DimusernameAsString="" DimpasswordAsString="" DimconstrAsString="Provider=SQLOLEDB.1;Password=0;PersistSecurityInfo=True;UserID=sa;InitialCatalog=canteen;DataSource=liuxuecheng" DimconAsNewOleDb.OleDbConnection(constr) con.Open() DimsqlcmdAsString="select*fromuse_for_checkbox" DimcmdAsNewOleDb.OleDbCommand(sqlcmd,con) DimreaderAsOleDb.OleDbDataReader reader=cmd.ExecuteReader Ifreader.Read=TrueThen username=reader(0).ToString.Trim password=reader(1).ToString.Trim flag=reader(2) EndIf reader.Close() con.Close() Ifflag=1Then CheckBox1.Checked=True TextBox1.Text=username TextBox2.Text=password EndIf EndSub '窗口出现时,如果flag为1,复选框的状态为true,并自动填充用户名,密码 PrivateSubCheckBox1_CheckedChanged(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesCheckBox1.CheckedChanged IfCheckBox1.Checked=TrueThen DimsqlcmdAsString="insertintouse_for_checkboxvalues('"&TextBox1.Text.Trim&"','"&TextBox2.Text.Trim&"',"&1&")" CallForm3.connection(sqlcmd) ElseIfCheckBox1.Checked=FalseThen DimsqlcmdAsString="deleteuse_for_checkbox" CallForm3.connection(sqlcmd) EndIf EndSub '复选框为true将此时的用户名及密码写入use_for_checkbox,为false时清空表 EndClass 4.2系统主界面设计 窗体Form2
系统主界面的菜单提供了进入其他模块的通道,左侧的角色功能导航使用TreeView控件来动态的生成每个角色对应权限的操作树状图,用户进入系统后能一目了然的了解自己能干什么以及某一功能所在的位置。窗体的右下大部分控件放置一个webbrowser控件,能够根据登入系统用户的角色不同而显示不同的网页,网页的url可由管理员在系统设置中设置。以下是实现form2功能的主要代码: PublicClassform2 Dimflag% Publicusername$ Dimmyuri0,myuri1,myuri2,myuri3,myuri4,myuri5,myuri6AsString PrivateSubform2_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Load Callsqlcon()'获取flag标记 Callgeturl()'获取url SelectCaseflag '根据用户的flag标记,决定用户权限及登录时主界面的网页 Case0 Callrole_navi0() '动态生成角色导航内容 退出系统ToolStripMenuItem1.Enabled=True 系统用户管理ToolStripMenuItem.Enabled=True '系统管理员所具有的权限 WebBrowser1.Url=NewUri(myuri0) '重定向url Case1 Callrole_navi1() 退出系统ToolStripMenuItem1.Enabled=True 系统用户管理ToolStripMenuItem.Enabled=True 员工信息管理ToolStripMenuItem.Enabled=True 菜单管理ToolStripMenuItem.Enabled=True 报表统计ToolStripMenuItem.Enabled=True 库存管理ToolStripMenuItem.Enabled=True 订餐及收款ToolStripMenuItem.Enabled=True '总经理权限 WebBrowser1.Url=NewUri(myuri1) Case2 Callrole_navi2() 员工信息管理ToolStripMenuItem.Enabled=True '人事部经理权限 WebBrowser1.Url=NewUri(myuri2) Case3 Callrole_navi3() 菜单管理ToolStripMenuItem.Enabled=True '厨师长权限 WebBrowser1.Url=NewUri(myuri3) Case4 Callrole_navi4() 库存管理ToolStripMenuItem.Enabled=True '库房主管权限 WebBrowser1.Url=NewUri(myuri4) Case5 Callrole_navi5() 报表统计ToolStripMenuItem.Enabled=True '财务主管权限 WebBrowser1.Url=NewUri(myuri5) Case6 Callrole_navi6() 订餐及收款ToolStripMenuItem.Enabled=True '前台权限 WebBrowser1.Url=NewUri(myuri6) EndSelect Label2.Text&=username&"今天是:"&DateTime.Now.Date '欢迎标语 EndSub PrivateSub切换用户ToolStripMenuItem_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)Handles切换用户ToolStripMenuItem.Click Dimi% i=MsgBox("是否切换?",MsgBoxStyle.OkCancel+32,"确认操作") Ifi=MsgBoxResult.OkThen Form1.Show() Me.Close() EndIf EndSub '切换用户 Subsqlcon() DimconstrAsString="Provider=SQLOLEDB.1;Password=0;PersistSecurityInfo=True;UserID=sa;InitialCatalog=canteen;DataSource=liuxuecheng" DimconAsNewOleDb.OleDbConnection(constr) con.Open() DimsqlcmdAsString="select*fromyonghuwhereuser_id="&Form1.TextBox1.Text.Trim DimcmdAsNewOleDb.OleDbCommand(sqlcmd,con) DimreaderAsOleDb.OleDbDataReader reader=cmd.ExecuteReader Ifreader.Read=TrueThen flag=reader(3) username=reader(2) EndIf reader.Close() con.Close() EndSub '连接数据库查询用户名及标识 PrivateSub退出系统ToolStripMenuItem2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)Handles退出系统ToolStripMenuItem2.Click Dimi% i=MsgBox("是否退出?","确认操作") Ifi=MsgBoxResult.OkThen Me.Close() Form1.Close() EndIf EndSub '退出系统操作 PrivateSubTimer1_Tick(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesTimer1.Tick Calllabelmove() EndSub Sublabelmove() Label2.Left=Label2.Left+1 IfLabel2.Left>Me.RightThen Label2.Left=0 EndIf EndSub PrivateSub菜单管理ToolStripMenuItem_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)Handles菜单管理ToolStripMenuItem.Click Form4.Show() EndSub PrivateSub订餐及收款ToolStripMenuItem_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)Handles订餐及收款ToolStripMenuItem.Click form5.Show() EndSub PrivateSub员工信息管理ToolStripMenuItem_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)Handles员工信息管理ToolStripMenuItem.Click Form3.Show() EndSub PrivateSub系统用户管理ToolStripMenuItem_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)Handles系统用户管理ToolStripMenuItem.Click Form9.Show() EndSub Subgeturl() DimconstrAsString="Provider=SQLOLEDB.1;Password=0;PersistSecurityInfo=True;UserID=sa;InitialCatalog=canteen;DataSource=liuxuecheng" DimconAsNewOleDb.OleDbConnection(constr) con.Open() DimsqlAsString="select*frommyurl" DimcmdAsNewOleDb.OleDbCommand(sql,con) DimreaderAsOleDb.OleDbDataReader reader=cmd.ExecuteReader Ifreader.Read=TrueThen myuri0=reader(0) myuri1=reader(1) myuri2=reader(2) myuri3=reader(3) myuri4=reader(4) myuri5=reader(5) myuri6=reader(6) EndIf reader.Close() con.Close() EndSub '获取myurl中的url值 PrivateSub退出系统ToolStripMenuItem1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)Handles退出系统ToolStripMenuItem1.Click Form10.Show() EndSub PrivateSub库存管理ToolStripMenuItem_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)Handles库存管理ToolStripMenuItem.Click Form11.Show() EndSub PrivateSub报表统计ToolStripMenuItem_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)Handles报表统计ToolStripMenuItem.Click EndSub Subrole_navi0() Dimnd1,nd2,nd3,nd4AsNewTreeNode nd1.Text="切换用户" nd2.Text="系统设置" nd3.Text="退出系统" nd4.Text="系统用户管理" TreeView1.Nodes.Add("系统管理") TreeView1.Nodes.Add("人事管理") TreeView1.Nodes.Item(0).Nodes.Add(nd1) TreeView1.Nodes.Item(0).Nodes.Add(nd2) TreeView1.Nodes.Item(0).Nodes.Add(nd3) TreeView1.Nodes.Item(1).Nodes.Add(nd4) EndSub 4.3人事管理模块设计
人事管理模块能对员工的员工编号、姓名、性别、住址、出生日期、身份证号、学历、职位、联系电话、邮箱等信息进行增删改查的操作。其中员工编号、姓名等共性很小的信息需用textbox输入,性别等信息采用combobox输入,出生日期这一特殊数据形式采用datetimepicker输入。同时,为textbox1添加了keypress事件,当textbox1中输入内容后能快速的查询信息并填充到其他项,为删除、修改做准备。将数据源整体拖拽进窗体用来全部显示内容。以下是主要的实现代码: PublicClassForm3 'bug:将数据库中的日期显示到界面上 PrivateSubYuangongBindingNavigatorSaveItem_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs) Me.Validate() Me.YuangongBindingSource.EndEdit() Me.TableAdapterManager.UpdateAll(Me.CanteenDataSet) EndSub PrivateSubForm3_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Load 'TODO:这行代码将数据加载到表“CanteenDataSet.yuangong”中。您可以根据需要移动或移除它。 Me.YuangongTableAdapter.Fill(Me.CanteenDataSet.yuangong) EndSub PrivateSubButton5_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton5.Click StaticDimi%=0 i=i+1 If(i>=1)Then PictureBox1.Hide() Button5.Text="刷新" Me.Refresh() EndIf EndSub PrivateSubTextBox1_KeyPress(ByValsenderAsObject,ByValeAsSystem.Windows.Forms.KeyPressEventArgs)HandlesTextBox1.KeyPress IfAsc(e.KeyChar)=13Then Callsearch() EndIf EndSub PublicSubconnection(ByValsqlcmdAsString)'用于增删改 DimconstrAsString="Provider=SQLOLEDB.1;Password=0;PersistSecurityInfo=True;UserID=sa;InitialCatalog=canteen;DataSource=liuxuecheng" DimconAsNewOleDb.OleDbConnection(constr) con.Open() DimcmdAsNewOleDb.OleDbCommand(sqlcmd,con) cmd.ExecuteNonQuery() EndSub Subsearch()'用来显示数据 DimconstrAsString="Provider=SQLOLEDB.1;Password=0;PersistSecurityInfo=True;UserID=sa;InitialCatalog=canteen;DataSource=liuxuecheng" DimconAsNewOleDb.OleDbConnection(constr) con.Open() DimsqlcmdAsString="select*fromyuangongwherebianhao="&TextBox1.Text.Trim DimcmdAsNewOleDb.OleDbCommand(sqlcmd,con) DimreaderAsOleDb.OleDbDataReader reader=cmd.ExecuteReader Ifreader.Read=TrueThen TextBox2.Text=reader(1) ComboBox1.Text=reader(2) TextBox3.Text=reader(3) DateTimePicker1.Text=reader(4) TextBox4.Text=reader(5) ComboBox2.Text=reader(6) ComboBox3.Text=reader(7) TextBox5.Text=reader(8) TextBox6.Text=reader(9) EndIf reader.Close() con.Close() EndSub '查询操作 PrivateSubButton4_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton4.Click IfTextBox1.Text=""Then MsgBox("请输入要查询的员工编号","注意") Return EndIf Callsearch() EndSub PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click Dimbianhao,xingming,xingbie,zhuzhi,riqi,shenfeng,xueli,zhiwei,dianhua,youxiangAsString bianhao=TextBox1.Text.Trim xingming=TextBox2.Text.Trim xingbie=ComboBox1.SelectedItem zhuzhi=TextBox3.Text.Trim riqi=DateTimePicker1.Value.Date.ToString shenfeng=TextBox4.Text.Trim xueli=ComboBox2.SelectedItem zhiwei=ComboBox3.SelectedItem dianhua=Val(TextBox5.Text) youxiang=TextBox6.Text.Trim IfTextBox1.Text=""Then MsgBox("至少有一项为空","注意") Return EndIf DimbhAsString="" DimconstrAsString="Provider=SQLOLEDB.1;Password=0;PersistSecurityInfo=True;UserID=sa;InitialCatalog=canteen;DataSource=liuxuecheng" DimconAsNewOleDb.OleDbConnection(constr) con.Open() DimsqlAsString="select*fromyuangongwherebianhao="&TextBox1.Text.Trim DimcmdAsNewOleDb.OleDbCommand(sql,con) DimreaderAsOleDb.OleDbDataReader reader=cmd.ExecuteReader Ifreader.Read=TrueThen bh=reader(0) EndIf Ifbh=TextBox1.Text.TrimThen MsgBox("已存在编号为"&bianhao&"的员工","注意") Return EndIf '验证是否重名() If(bianhao=""Orxingming=""Orxingbie=""Orzhuzhi=""Orriqi=""Orshenfeng=""Orxueli=""Orzhiwei=""Ordianhua=""Oryouxiang="")Then MsgBox("至少有一项未填写","注意") Return EndIf '验证填写项是否为空 DimsqlcmdAsString="insertintoyuangongvalues("&"'"&bianhao&"'"&","&"'"&xingming&"'"&","&"'"&xingbie&"'"&","&"'"&zhuzhi&"'"&","&"'"&riqi&"'"&","&"'"&shenfeng&"'"&","&"'"&xueli&"'"&","&"'"&zhiwei&"'"&","&dianhua&","&"'"&youxiang&"'"&")" Callconnection(sqlcmd) TextBox1.Text="" TextBox2.Text="" ComboBox1.Text="" TextBox3.Text="" TextBox4.Text="" ComboBox2.Text="" ComboBox3.Text="" TextBox5.Text="" TextBox6.Text="" MsgBox("添加成功",MsgBoxStyle.OkOnly+64,"消息") '将内容清空,并提示添加成功 EndSub PrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton2.Click IfTextBox1.Text=""Then MsgBox("请输入要删除的员工编号","注意") Return EndIf DimsqlcmdAsString="deletefromyuangongwherebianhao="&TextBox1.Text.Trim Dimi% i=MsgBox("确定要删除编号为"&TextBox1.Text.Trim&"的员工?","提示") Ifi=MsgBoxResult.OkThen Callconnection(sqlcmd) TextBox1.Text="" MsgBox("删除成功","消息") EndIf EndSub PrivateSubButton3_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton3.Click IfTextBox1.Text=""Then MsgBox("请输入要修改的员工号","注意") Return EndIf Dimsqlcmd1AsString="updateyuangongsetxingming="&"'"&TextBox2.Text.Trim&"'"&"wherebianhao="&TextBox1.Text.Trim Dimsqlcmd2AsString="updateyuangongsetxingbie="&"'"&ComboBox1.SelectedItem&"'"&"wherebianhao="&TextBox1.Text.Trim Dimsqlcmd3AsString="updateyuangongsetzhuzhi="&"'"&TextBox3.Text.Trim&"'"&"wherebianhao="&TextBox1.Text.Trim Dimsqlcmd4AsString="updateyuangongsetriqi="&"'"&DateTimePicker1.Value.Date.ToString&"'"&"wherebianhao="&TextBox1.Text.Trim Dimsqlcmd5AsString="updateyuangongsetshenfeng="&"'"&TextBox4.Text.Trim&"'"&"wherebianhao="&TextBox1.Text.Trim Dimsqlcmd6AsString="updateyuangongsetxueli="&"'"&ComboBox2.SelectedItem&"'"&"wherebianhao="&TextBox1.Text.Trim Dimsqlcmd7AsString="updateyuangongsetzhiwei="&"'"&ComboBox3.SelectedItem&"'"&"wherebianhao="&TextBox1.Text.Trim Dimsqlcmd8AsString="updateyuangongsetdianhua="&Val(TextBox5.Text)&"wherebianhao="&TextBox1.Text.Trim Dimsqlcmd9AsString="updateyuangongsetyouxiang="&"'"&TextBox6.Text.Trim&"'"&"wherebianhao="&TextBox1.Text.Trim Callconnection(sqlcmd1) Callconnection(sqlcmd2) Callconnection(sqlcmd3) Callconnection(sqlcmd4) Callconnection(sqlcmd5) Callconnection(sqlcmd6) Callconnection(sqlcmd7) Callconnection(sqlcmd8) Callconnection(sqlcmd9) MsgBox("员工信息修改成功","消息") EndSub '修改员工信息 EndClass 4.4菜单管理 Form4
菜单管理能对菜号、菜名、价格、分类等进行增删改查操作,其中菜号、菜名、价格对应的编辑框为textbox,分类对应的为combobox。同时运用datagridview将对应表中的所有数据全部显示出来。以下是主要实现代码: PublicClassForm4 PrivateSubCaidanBindingNavigatorSaveItem_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs) Me.Validate() Me.CaidanBindingSource.EndEdit() Me.TableAdapterManager.UpdateAll(Me.CanteenDataSet) EndSub PrivateSubForm4_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Load 'TODO:这行代码将数据加载到表“CanteenDataSet.caidan”中。您可以根据需要移动或移除它。 Me.CaidanTableAdapter.Fill(Me.CanteenDataSet.caidan) EndSub PrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton2.Click If(TextBox3.Text="")Then MsgBox("不能为空","注意") Return EndIf DimsqlcmdAsString="insertintocaidan(caihao,caiming,jiage,fenlei)values('"&TextBox3.Text.Trim&"','"&TextBox1.Text.Trim&"',"&Val(TextBox2.Text)&",'"&ComboBox1.SelectedItem&"')" DimconstrAsString="Provider=SQLOLEDB.1;Password=0;PersistSecurityInfo=True;UserID=sa;InitialCatalog=canteen;DataSource=liuxuecheng" DimconAsNewOleDb.OleDbConnection(constr) con.Open() DimsqlAsString="select*fromcaidanwherecaihao="&TextBox3.Text.Trim DimcmdAsNewOleDb.OleDbCommand(sql,con) DimreaderAsOleDb.OleDbDataReader DimcmAsString="" reader=cmd.ExecuteReader Ifreader.Read=TrueThen cm=reader(0) EndIf reader.Close() con.Close() Ifcm=TextBox3.Text.TrimThen MsgBox("已存在菜号为"&TextBox3.Text.Trim&"的菜","注意") Return EndIf If(TextBox1.Text=""OrComboBox1.SelectedItem=""OrTextBox2.Text=""OrTextBox3.Text="")Then MsgBox("至少有一项未填写","注意") Return EndIf CallForm3.connection(sqlcmd) TextBox1.Text="" TextBox2.Text="" ComboBox1.Text="" TextBox3.Text="" MsgBox("添加成功","消息") EndSub '添加模块 PrivateSubButton4_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton4.Click IfTextBox1.Text=""Then MsgBox("请输入要删除的菜号","注意") Return EndIf DimsqlcmdAsString="deletefromcaidanwherecaihao="&TextBox3.Text.Trim Dimi% i=MsgBox("确定要删除菜号为"&TextBox3.Text.Trim&"的菜?","提示") Ifi=MsgBoxResult.OkThen CallForm3.connection(sqlcmd) TextBox3.Text="" MsgBox("删除成功","消息") EndIf EndSub '删除模块 PrivateSubButton5_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton5.Click IfTextBox3.Text=""Then MsgBox("请输入要修改的菜号","注意") Return EndIf Dimsqlcmd1AsString="updatecaidansetcaiming="&"'"&TextBox1.Text.Trim&"'"&"wherecaihao="&TextBox3.Text.Trim Dimsqlcmd2AsString="updatecaidansetfenlei="&"'"&ComboBox1.SelectedItem&"'"&"wherecaihao="&TextBox3.Text.Trim Dimsqlcmd3AsString="updatecaidansetjiage="&"'"&TextBox2.Text.Trim&"'"&"wherecaihao="&TextBox3.Text.Trim CallForm3.connection(sqlcmd1) CallForm3.connection(sqlcmd2) CallForm3.connection(sqlcmd3) MsgBox("菜单信息更新成功!","消息") EndSub '修改模块 PrivateSubButton6_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton6.Click IfTextBox1.Text=""Then MsgBox("请输入要查询的菜名","注意") Return EndIf Callmysearch() EndSub '查询模块 Submysearch() DimconstrAsString="Provider=SQLOLEDB.1;Password=0;PersistSecurityInfo=True;UserID=sa;InitialCatalog=canteen;DataSource=liuxuecheng" DimconAsNewOleDb.OleDbConnection(constr) con.Open() DimsqlAsString="select*fromcaidanwherecaihao="&TextBox3.Text.Trim DimcmdAsNewOleDb.OleDbCommand(sql,con) DimreaderAsOleDb.OleDbDataReader DimcmAsString="" reader=cmd.ExecuteReader Ifreader.Read=TrueThen TextBox3.Text=reader(0) TextBox1.Text=reader(1) TextBox2.Text=reader(2) ComboBox1.Text=reader(3) cm=reader(1) EndIf reader.Close() con.Close() If(cm="")Then MsgBox("此项不存在","注意") EndIf EndSub '查询子过程 PrivateSubTextBox3_KeyPress(ByValsenderAsObject,ByValeAsSystem.Windows.Forms.KeyPressEventArgs)HandlesTextBox3.KeyPress IfAsc(e.KeyChar)=13Then Callmysearch() EndIf EndSub PrivateSubButton7_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton7.Click PictureBox2.Hide() EndSub PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click OpenFileDialog1.FileName="*.jpg" OpenFileDialog1.InitialDirectory="D:图片" OpenFileDialog1.Filter="图片(*.jpg)|*.jpg|allfiles(*.*)|*.*" OpenFileDialog1.FilterIndex=1 If(OpenFileDialog1.ShowDialog=Windows.Forms.DialogResult.OK)Then PictureBox1.Image=Image.FromFile(OpenFileDialog1.FileName) Else MsgBox("没有选择文件") EndIf EndSub '打开图片 EndClass 4.5报表统计设计 Form12、form13、form14、form15
报表统计功能利用visualstdio自带的报表生成向导生成四个crystalreport,分别统计员工学历结构、顾客偏好菜品、库存信息、历史流水账一览。并在对应窗体中添加crystalreportviewer来查看报表。系统生成的报表能导出为多种格式。 4.6库存管理设计 Form11
库存管理能对物料号、品名、数量、单价、分类等进行增删改查,利用datagridview显示全部的数据。主要实现代码如下: PublicClassForm11 PrivateSubKucunBindingNavigatorSaveItem_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs) Me.Validate() Me.KucunBindingSource.EndEdit() Me.TableAdapterManager.UpdateAll(Me.CanteenDataSet) EndSub PrivateSubForm11_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Load 'TODO:这行代码将数据加载到表“CanteenDataSet.kucun”中。您可以根据需要移动或移除它。 Me.KucunTableAdapter.Fill(Me.CanteenDataSet.kucun) EndSub PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click IfTextBox1.Text=""Then MsgBox("至少有一项为空","注意") Return EndIf DimbhAsString="" DimconstrAsString="Provider=SQLOLEDB.1;Password=0;PersistSecurityInfo=True;UserID=sa;InitialCatalog=canteen;DataSource=liuxuecheng" DimconAsNewOleDb.OleDbConnection(constr) con.Open() DimsqlAsString="select*fromkucunwherewuliaohao="&TextBox1.Text.Trim DimcmdAsNewOleDb.OleDbCommand(sql,con) DimreaderAsOleDb.OleDbDataReader reader=cmd.ExecuteReader Ifreader.Read=TrueThen bh=reader(0) EndIf Ifbh=TextBox1.Text.TrimThen MsgBox("已存在编号为"&TextBox1.Text.Trim&"的物料","注意") Return EndIf '验证是否重名() If(TextBox1.Text=""OrTextBox2.Text=""OrTextBox3.Text=""OrTextBox4.Text=""OrComboBox1.SelectedItem="")Then MsgBox("至少有一项未填写","注意") Return EndIf '验证填写项是否为空 DimsqlcmdAsString="insertintokucunvalues("&Val(TextBox1.Text)&","&"'"&TextBox2.Text.Trim&"'"&","&Val(TextBox3.Text)&","&Val(TextBox4.Text)&","&"'"&ComboBox1.SelectedItem&"'"&")" CallForm3.connection(sqlcmd) TextBox1.Text="" TextBox2.Text="" ComboBox1.Text="" TextBox3.Text="" TextBox4.Text="" MsgBox("添加成功","消息") '将内容清空,并提示添加成功 EndSub PrivateSubButton5_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton5.Click PictureBox1.Hide() EndSub PrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton2.Click IfTextBox1.Text=""Then MsgBox("请输入要删除的物料号","注意") Return EndIf DimsqlcmdAsString="deletefromkucunwherewuliaohao="&Val(TextBox1.Text) Dimi% i=MsgBox("确定要删除编号为"&Val(TextBox1.Text)&"的物料?","提示") Ifi=MsgBoxResult.OkThen CallForm3.connection(sqlcmd) TextBox1.Text="" MsgBox("删除成功","消息") EndIf EndSub '删除操作 PrivateSubButton3_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton3.Click IfTextBox1.Text=""Then MsgBox("请输入要修改的物料号","注意") Return EndIf Dimsqlcmd1AsString="updatekucunsetpinming="&"'"&TextBox2.Text.Trim&"'"&"wherewuliaohao="&Val(TextBox1.Text) Dimsqlcmd2AsString="updatekucunsetshuliang="&Val(TextBox3.Text)&"wherewuliaohao="&Val(TextBox1.Text) Dimsqlcmd3AsString="updatekucunsetdanjia="&Val(TextBox4.Text)&"wherewuliaohao="&Val(TextBox1.Text) Dimsqlcmd4AsString="updatekucunsetfenlei="&"'"&ComboBox1.SelectedItem&"'"&"wherewuliaohao="&Val(TextBox1.Text) CallForm3.connection(sqlcmd1) CallForm3.connection(sqlcmd2) CallForm3.connection(sqlcmd3) CallForm3.connection(sqlcmd4) MsgBox("物料信息修改成功","消息") EndSub '修改操作 PrivateSubButton4_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton4.Click Callsearch() EndSub Subsearch() DimconstrAsString="Provider=SQLOLEDB.1;Password=0;PersistSecurityInfo=True;UserID=sa;InitialCatalog=canteen;DataSource=liuxuecheng" DimconAsNewOleDb.OleDbConnection(constr) con.Open() DimsqlcmdAsString="select*fromkucunwherewuliaohao="&Val(TextBox1.Text) DimcmdAsNewOleDb.OleDbCommand(sqlcmd,con) DimreaderAsOleDb.OleDbDataReader reader=cmd.ExecuteReader Ifreader.Read=TrueThen TextBox2.Text=reader(1) ComboBox1.Text=reader(4) TextBox3.Text=reader(2) TextBox4.Text=reader(3) EndIf reader.Close() con.Close() EndSub PrivateSubTextBox1_KeyPress(ByValsenderAsObject,ByValeAsSystem.Windows.Forms.KeyPressEventArgs)HandlesTextBox1.KeyPress IfAsc(e.KeyChar)=13Then Callsearch() EndIf EndSub EndClass 4.6订餐及收款设计 (1)订餐及收款主窗口(form5)
主要实现代码: PublicClassform5 Publicarray1(19)AsInteger'用来存放按钮上的数字,通过val转换为整型 DimiAsInteger=0'成员变量,统计被点击按钮的个数,并将值写入array数组 PubliczhAsInteger Publicflag6AsBoolean=False PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click array1(i)=Val(Button1.Text)'点击后获取按钮文本,并使i加一 i=i+1 EndSub PrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton2.Click array1(i)=Val(Button2.Text) i=i+1 EndSub PrivateSubButton10_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton10.Click array1(i)=Val(Button10.Text) i=i+1 EndSub PrivateSubButton9_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton9.Click array1(i)=Val(Button9.Text) i=i+1 EndSub PrivateSubButton21_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton21.Click Dimbut()AsButton={Button1,Button2,Button3,Button4,Button5,Button6,Button7,Button8,Button9,Button10,Button11,Button12,Button13,Button14,Button15,Button16,Button17,Button18,Button19,Button20} '便于操作,将按钮装入数组,实现动态替换背景图片 ForMe.i=0To19 If(array1(i)>=1Andgetstatus(array1(i))=2)Then MsgBox("座位号为"&array1(i)&"的座位已预订","注意") ElseIf(array1(i)>=1Andgetstatus(array1(i))=3)Then MsgBox("座位号为"&array1(i)&"的座位正在就餐","注意") ElseIf(array1(i)>=1Andgetstatus(array1(i))=1)Then DimsqlcmdAsString="updatecanzhuosetzhuangtai=2wherezhuohao="&array1(i) CallForm3.connection(sqlcmd) '被点击过的按钮文本数大于一,将被点击过的按钮的状态在数据库中更改为2,表示预定 but(array1(i)-1).Image=My.Resources.huangse '对数组进行操作,替换背景图片 Form6.Show() EndIf Next i=0'将成员变量i的值置零,否则会发生数组越界 EndSub PrivateSubButton3_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton3.Click array1(i)=Val(Button3.Text) i=i+1 EndSub PrivateSubButton4_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton4.Click array1(i)=Val(Button4.Text) i=i+1 EndSub PrivateSubButton5_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton5.Click array1(i)=Val(Button5.Text) i=i+1 EndSub PrivateSubButton6_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton6.Click array1(i)=Val(Button6.Text) i=i+1 EndSub PrivateSubButton7_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton7.Click array1(i)=Val(Button7.Text) i=i+1 EndSub PrivateSubButton8_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton8.Click array1(i)=Val(Button8.Text) i=i+1 EndSub PrivateSubButton15_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton15.Click array1(i)=Val(Button15.Text) i=i+1 EndSub PrivateSubButton14_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton14.Click array1(i)=Val(Button14.Text) i=i+1 EndSub PrivateSubButton16_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton16.Click array1(i)=Val(Button16.Text) i=i+1 EndSub PrivateSubButton12_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton12.Click array1(i)=Val(Button12.Text) i=i+1 EndSub PrivateSubButton11_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton11.Click array1(i)=Val(Button11.Text) i=i+1 EndSub PrivateSubButton20_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton20.Click array1(i)=Val(Button20.Text) i=i+1 EndSub PrivateSubButton19_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton19.Click array1(i)=Val(Button19.Text) i=i+1 EndSub PrivateSubButton18_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton18.Click array1(i)=Val(Button18.Text) i=i+1 EndSub PrivateSubButton17_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton17.Click array1(i)=Val(Button17.Text) i=i+1 EndSub PrivateSubButton13_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton13.Click array1(i)=Val(Button13.Text) i=i+1 EndSub PrivateSubform5_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Load Dimbut()AsButton={Button1,Button20} DimconstrAsString="Provider=SQLOLEDB.1;Password=0;PersistSecurityInfo=True;UserID=sa;InitialCatalog=canteen;DataSource=liuxuecheng" DimconAsNewOleDb.OleDbConnection(constr) Dimzt(19)AsInteger'定义一个数组用来存放桌子状态 con.Open() DimsqlcmdAsString="selectzhuangtaifromcanzhuo" DimcmdAsNewOleDb.OleDbCommand(sqlcmd,con) DimreaderAsOleDb.OleDbDataReader reader=cmd.ExecuteReader Fork=0To19'循环读取将状态值存入数组中 Ifreader.Read=TrueThen zt(k)=reader(0) If(zt(k)=1)Then but(k).Image=My.Resources.lvse '为1表示桌子空闲 EndIf If(zt(k)=2)Then but(k).Image=My.Resources.huangse '为2表示已预定 EndIf If(zt(k)=3)Then but(k).Image=My.Resources.hongse '为3表示正在用餐中 EndIf EndIf Next EndSub '窗体启动的时候显示状态 PrivateSubButton22_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton22.Click Dimbut()AsButton={Button1,Button20} '便于操作,将按钮装入数组,实现动态替换背景图片 ForMe.i=0To19 If(array1(i)>=1Andgetstatus(array1(i))=3)Then MsgBox(array1(i)&"号桌正在就餐不能退订","注意") ElseIf(array1(i)>1Andgetstatus(array1(i))=2)Then DimsqlcmdAsString="updatecanzhuosetzhuangtai=1wherezhuohao="&array1(i) Dimsqlcmd1AsString="deletefromdingcanwhereydzwlike'%"&array1(i)&"%'" CallForm3.connection(sqlcmd) CallForm3.connection(sqlcmd1) '被点击过的按钮文本数大于一,将被点击过的按钮的状态在数据库中更改为2,表示预定 but(array1(i)-1).Image=My.Resources.lvse '对数组进行操作,替换背景图片 MsgBox("退订成功","消息") ElseIf(array1(i)=1Andgetstatus(array1(i))=2)Then DimsqlcmdAsString="updatecanzhuosetzhuangtai=1wherezhuohao="&array1(i) Dimsqlcmd1AsString="deletefromdingcanwhereydzw='1'" CallForm3.connection(sqlcmd) CallForm3.connection(sqlcmd1) '被点击过的按钮文本数大于一,将被点击过的按钮的状态在数据库中更改为2,表示预定 but(array1(i)-1).Image=My.Resources.lvse '对数组进行操作,替换背景图片 MsgBox("退订成功","消息") ElseIf(array1(i)>=1Andgetstatus(array1(i))=1)Then MsgBox(array1(i)&"号桌没有预定,退订无效","注意") EndIf Next i=0'将成员变量i的值置零,否则会发生数组越界 EndSub Functiongetstatus%(ByValnum%) DimconstrAsString="Provider=SQLOLEDB.1;Password=0;PersistSecurityInfo=True;UserID=sa;InitialCatalog=canteen;DataSource=liuxuecheng" DimconAsNewOleDb.OleDbConnection(constr) con.Open() DimsqlcmdAsString="selectzhuangtaifromcanzhuowherezhuohao="&num DimcmdAsNewOleDb.OleDbCommand(sqlcmd,con) DimreaderAsOleDb.OleDbDataReader reader=cmd.ExecuteReader Ifreader.ReadThen getstatus=reader(0) EndIf EndFunction '用来获取按钮状态的函数 PrivateSubButton23_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton23.Click Dimbut()AsButton={Button1,Button20} '便于操作,将按钮装入数组,实现动态替换背景图片 ForMe.i=0To19 If(array1(i)>=1Andgetstatus(array1(i))=3)Then MsgBox("座位号为"&array1(i)&"的座位正在就餐","注意") ElseIf(array1(i)>=1And(getstatus(array1(i))=1)Orgetstatus(array1(i))=2)Then '被点击过的按钮文本数大于一,将被点击过的按钮的状态在数据库中更改为2,表示预定 but(array1(i)-1).Image=My.Resources.hongse '对数组进行操作,替换背景图片 Form7.Show() EndIf Next i=0'将成员变量i的值置零,否则会发生数组越界 EndSub '点菜操作 PrivateSubButton24_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton24.Click Dimbut()AsButton={Button1,Button20} '便于操作,将按钮装入数组,实现动态替换背景图片 ForMe.i=0To19 If(array1(i)>=1And(getstatus(array1(i))=1)Orgetstatus(array1(i))=2)Then MsgBox("座位号为"&array1(i)&"的座位没有点菜,不能结账","注意") ElseIf(array1(i)>=1Andgetstatus(array1(i))=3)Then DimsqlcmdAsString="updatecanzhuosetzhuangtai=1wherezhuohao="&array1(i) zh=array1(i)'获取结账的桌号 CallForm3.connection(sqlcmd) '被点击过的按钮文本数大于一,将被点击过的按钮的状态在数据库中更改为2,表示预定 but(array1(i)-1).Image=My.Resources.lvse '对数组进行操作,替换背景图片 Form8.Show() EndIf Next i=0'将成员变量i的值置零,否则会发生数组越界 EndSub EndClass (2)预定窗口(form6)
主要实现代码: PublicClassForm6 PrivateSubForm6_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Load Label6.Text=DateAndTime.Now.Millisecond.ToString'毫秒数作为客户编号 Label8.Text=DateTime.Now.ToString'获得当前时间 Fori=0To19 If(form5.array1(i)<>0)Then Label7.Text&=""&form5.array1(i) EndIf Next '获得预定的桌号 EndSub PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click DimsqlcmdAsString="insertintodingcanvalues('"&Label6.Text&"',"&TextBox2.Text&",'"&Label7.Text.Trim&"','"&Label8.Text.Trim&"')" CallForm3.connection(sqlcmd) MsgBox(Label7.Text&"号桌预定成功","消息") Me.Close() EndSub '将订餐信息写入数据库 PrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton2.Click Me.Close() EndSub EndClass (3)点菜窗口(form7)
PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click If(ComboBox1.Text="")Then MsgBox("没有选择数量","注意") Return EndIf TextBox1.Text&=ListBox1.SelectedValue&"" sum(0)=sum(0)+getjiage(ListBox1.SelectedValue)*Val(ComboBox1.SelectedItem) '价格总和等于每个菜的价格乘以数量 ComboBox1.Text="" EndSub Functiongetjiage!(ByValcaiming$) DimconstrAsString="Provider=SQLOLEDB.1;Password=0;PersistSecurityInfo=True;UserID=sa;InitialCatalog=canteen;DataSource=liuxuecheng" DimconAsNewOleDb.OleDbConnection(constr) con.Open() DimsqlcmdAsString="selectjiagefromcaidanwherecaiming='"&caiming&"'" DimcmdAsNewOleDb.OleDbCommand(sqlcmd,con) DimreaderAsOleDb.OleDbDataReader reader=cmd.ExecuteReader Ifreader.ReadThen getjiage=reader(0) EndIf EndFunction '从菜单表中获取价格 Subinsert(ByValzhuohaoAsInteger,ByValcaimingAsString,ByValjiageAsSingle) DimsqlcmdAsString="insertintoyidingcaidanvalues("&zhuohao&",'"&caiming&"',"&jiage&")" CallForm3.connection(sqlcmd) EndSub '插入过程 PrivateSubButton21_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton21.Click Dimtex()AsTextBox={TextBox1,TextBox2,TextBox3,TextBox4,TextBox5,TextBox6,TextBox7,TextBox8,TextBox9,TextBox10,TextBox11,TextBox12,TextBox13,TextBox14,TextBox15,TextBox16,TextBox17,TextBox18,TextBox19,TextBox20} Dimlab()AsLabel={Label2,Label21,Label20,Label19,Label18,Label17,Label16,Label15,Label14,Label13,Label12,Label11,Label10,Label9,Label8,Label7,Label6,Label5,Label4,Label3} Fork=0To19 If(tex(k).Text<>"")Then Callinsert(Val(lab(k).Text),tex(k).Text.Trim,sum(k)) DimsqlcmdAsString="updatecanzhuosetzhuangtai=3wherezhuohao="&Val(lab(k).Text) CallForm3.connection(sqlcmd) EndIf'如果不为空则将桌号、菜名、总价等插入已定菜单表 Next Forj=0To19 tex(j).Text="" Next '点击确定后所有的文本框清空,重新点菜 MsgBox("点菜成功!","消息") Me.Close() EndSub PrivateSubButton22_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton22.Click Me.Close() EndSub EndClass (4)结账窗口(form8)
主要实现代码: PublicClassForm8 PrivateSubForm8_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Load DimconstrAsString="Provider=SQLOLEDB.1;Password=0;PersistSecurityInfo=True;UserID=sa;InitialCatalog=canteen;DataSource=liuxuecheng" DimconAsNewOleDb.OleDbConnection(constr) con.Open() DimsqlcmdAsString="select*fromyidingcaidanwherezhuohao="&form5.zh DimcmdAsNewOleDb.OleDbCommand(sqlcmd,con) DimreaderAsOleDb.OleDbDataReader reader=cmd.ExecuteReader Ifreader.ReadThen Label14.Text=reader(0) Label8.Text=reader(1) Label10.Text=reader(2) EndIf reader.Close() con.Close() '获取结账的桌号,菜单,价格 Label12.Text=form2.username Label13.Text=DateTime.Now.ToString EndSub PrivateSubTextBox1_KeyPress(ByValsenderAsObject,ByValeAsSystem.Windows.Forms.KeyPressEventArgs)HandlesTextBox1.KeyPress IfAsc(e.KeyChar)=13Then If(Val(TextBox1.Text)-Val(Label10.Text)>=0)Then Label11.Text=Val(TextBox1.Text)-Val(Label10.Text) Else MsgBox("金额不足!","注意") EndIf EndIf EndSub PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click DimsqlcmdAsString="insertintojiezhangvalues("&Val(Label14.Text)&",'"&Label8.Text.Trim&"','"&Label10.Text.Trim&"',"&Val(TextBox1.Text)&","&Val(Label11.Text)&",'"&Label12.Text.Trim&"','"&Label13.Text.Trim&"')" CallForm3.connection(sqlcmd) MsgBox("结账成功!","信息") Dimsqlcmd_delAsString="deleteyidingcaidanwherezhuohao="&Val(Label14.Text) CallForm3.connection(sqlcmd_del) Button3.Enabled=True EndSub PrivateSubButton3_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton3.Click FileOpen(1,"C:UsersAdministratorDesktop课程设计报表tip.doc",OpenMode.Output) WriteLine(1,Label1.Text&Label14.Text) WriteLine(1,Label2.Text&Label8.Text) WriteLine(1,Label3.Text&Label10.Text) WriteLine(1,Label4.Text&TextBox1.Text&""&Label5.Text&Label11.Text) WriteLine(1,""&Label6.Text&Label12.Text) WriteLine(1,""&Label7.Text&Label13.Text) FileClose() Process.Start("C:UsersAdministratorDesktop课程设计报表tip.doc") EndSub '打印发票 EndClass 5.综合评价与结论 本系统采用c/s结构,结合vb.net与sql数据,对餐饮行业涉及到的各种数据进行处理和管理,在很大程度上满足了客户需求,能够对餐饮企业中涉及到的人事、采购、菜单、报表、订餐及收款等进行操作和数据的管理,方便了企业的日常业务处理,同时增强了企业的经营及服务能力。 6.体会与展望 (1)开发一个管理信息系统,重要的不是如何去用代码实现一个功能,而是系统的分析与设计,只有当准确的分析与合理的设计相结合时才能满足客户的需求。同时,前期的设计关乎到后期的开发速度和质量。 (2)在实现一个操作的时候更多的考虑的是如何确保程序的健壮性,比如向数据库中插入一条记录,要考虑是否已经存在,要是年龄还要考虑是否在一个合乎情理的区间,要是数据库规定某一字段不能为空,还要考虑如何提示用户。 (3)系统的一个功能实现后让别人测试是很有必要的,别人不规范的操作或许能给开发的人发现更多的bug (4)本系统再根据企业实际情况加以修改能够运用到企业实际的生产运作。 7.文献信息 [1]龚沛曾.VisualBasic.NET程序设计教程[M].高等教育出版社.2010. [2]微软公司.MicrosoftVisualBasic.NET语言参考手册[M].清华大学出版社.2002 [3]雷东升.基于c/s结构的多商户餐饮管理系统[J].中国科技论文在线.2008 [4]余金山,鲁斌.C/S体系结构的餐饮管理信息系统设计[1].华侨大学学报:自然科学版,2005 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |