vb.net+sql 餐饮管理系统

前端之家收集整理的这篇文章主要介绍了vb.net+sql 餐饮管理系统前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

餐饮管理系统设计文档

0背景:

随着餐饮行业的发展,餐饮行业的管理越来越趋向于精细化,自动化,智能化。餐饮业的管理开始注重细节,将利润与每个细节结合起来,力求资金的有效运转,因此要求餐饮管理系统能详细记录每次服务的内容以及时间。以便于从大量的数据中分析顾客的偏好,以及某一种菜品的销售与季节等其他因素的关系。力求菜品随顾客的口味变化。与此同时,顾客的要求逐渐趋向个性化,频繁的提前订餐及退订对于传统人工操作来说比较费时费力,而且容易出错。另外,随着各行各业支出管理的规范化,大多数顾客希望在消费后能得到自己的消费清单。

1.需求分析

1.1业务需求

1)系统能够根据进入系统的用户的角色不同而赋予其不同的权限。具体分为系统管理员和业务操作员两大类。为方便系统初期的调试,存在超级用户,拥有所有权限。

2)系统提供接口,供其他系统或其他语言开发的本系统的扩展部分接入。系统管理员可以更改系统的界面风格。

3)人事管理模块能够对所有员工的姓名、性别、住址、身份证号、出生日期、学历、职位、联系电话、邮箱等信息进行增加删除修改查询等操作。另外,人事管理模块还能对系统用户进行管理。

4菜单管理由具有厨师长权限的人负责,菜单管理的内容包括菜名、价格、分类等。同过增删改查对菜单进行动态的管理,能够很方便的增加新菜品;修改菜品价格等信息;删除过时的菜品;以及预览所有的菜品。其中菜名,价格等信息能够被点菜模块调用,而分类信息能用在报表统计模块中,统计出每种菜品在某一阶段的消费情况。

5)报表统计

要求系统能够用图表直观的显示员工学历结构、顾客偏好菜品、库存信息及历史消费等。并能够将数据以wordexcel等多种形式展现出来。

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)菜单

属性

数据类型

是否可以为空

说明

caihao

int

菜品编号(主键)

caiming

nvarchar(50)

菜名

jiage

money

价格

fenlei

nchar(10)

分类

2)餐桌表

属性

数据类型

是否可以为空

说明

zhuohao

int

餐桌编号(主键)

zhuangtai

int

餐桌状态(1表示未预定,2表示已预订,3表示正在就餐)

3)订餐表

属性

数据类型

是否可以为空

说明

khbh

nvarchar(50)

客户编号(主键)

xs

nvarchar(50)

客户姓氏

dh

bigint

顾客电话

ydzw

nvarchar(50)

预定桌位

sj

datetime

预定时间

4)结账表

属性

数据类型

是否可以为空

说明

zhuohao

int

桌号(主键)

xiaofeiqingdan

nvarcharmax

消费清单

yingfukuan

money

应付款

shishou

money

实收

zhaoling

money

找零

caozuoyuan

nchar10

操作员

shijian

datetime

操作时间

5)库存表

属性

数据类型

是否可以为空

说明

wuliaohao

int

物料号(主键)

pinming

nvarchar50

物品名称

shuliang

float

数量

danjia

money

单价

fenlei

nchar(10)

分类

6url

属性

数据类型

是否可以为空

说明

url0

nvarchar(max)

系统管理员登陆界面的url

url1

nvarchar(max)

总经理登陆界面的url

url2

nvarchar(max)

人事经理登陆界面的url

url3

nvarchar(max)

厨师长登陆界面的url

url4

nvarchar(max)

库房主管登陆界面的url

url5

nvarchar(max)

会计主管登陆界面的url

rul6

nvarchar(max)

前台登陆界面的url

7)系统用户

属性

数据类型

是否可以为空

说明

user_id

nvarchar(50)

系统用户号(主键)

pwd

nvarchar50

密码

username

nvarchar50

系统用户名

flag

int

系统用户角色标识

8)员工表

属性

数据类型

是否可以为空

说明

bianhao

int

员工编号(主键)

xingming

nvarchar(50)

员工姓名

xingbie

nchar(10)

性别

zhuzhi

nvarchar50

员工住址

riqi

datetime

出生日期

shenfen

nvarchar18

身份证号

xueli

nchar10

学历

zhiwei

nchar10

职位

dianhua

int

电话

youxiang

nvarchar50

邮箱

3.系统总体结构设计方案

3.1在系统分析的基础上得到如下功能模块


模块功能说明:

1)系统管理模块包括切换系统,系统设置,退出系统这几个功能。切换系统能弹出登录界面方便另外一位用户使用系统;系统设置包括用户密码修改、主界面网页设定、系统风格选择,用户在登入系统后可进入用户密码修改模块更改自己的密码;主界面网页设定的作用是更改每个角色登陆到系统看到的主菜单界面的网页的url,可以设定不同角色的用户进入系统后看到的网页内容是不同的。系统风格设置可以改变系统的风格,选择用户喜欢的风格。退出系统能关闭所有使用的资源,退出整个系统。

2)人事管理模块包括员工信息管理和系统用户管理。其中,员工信息管理能对普通员工的信息执行增删改查等操作,系统用户管理能对系统用户的信息进行增删改查。

3菜单管理模块能够对菜单的编号、名称、价格、分类等执行增删改查操作。

4)报表统计模块能对员工的学历信息以图表的形式统计并展现;通过大量的消费数据得出顾客喜欢的菜品以及喜欢的菜品组合,并用饼图进行反应,方便管理人员作出正确的决策;

库存信息统计能够很直观的反应当前库存的状况;历史账单统计能够让用户一览流水数据。除此之外,报表还可以以wordexcelpdf等形式导出。

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:\Users\Administrator\Desktop\课程设计\报表\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:\Users\Administrator\Desktop\课程设计\报表\tip.doc")

EndSub

'打印发票

EndClass

5.综合评价与结论

本系统采用c/s结构,结合vb.netsql数据,对餐饮行业涉及到的各种数据进行处理和管理,在很大程度上满足了客户需求,能够对餐饮企业中涉及到的人事、采购、菜单、报表、订餐及收款等进行操作和数据的管理,方便了企业的日常业务处理,同时增强了企业的经营及服务能力。

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

猜你在找的VB相关文章