餐饮管理系统设计文档

0背景:

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

1. 需求分析

1.1业务需求

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

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

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

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

(5)报表统计

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

(6)库存管理模块能对企业的物料管理,实现对物料的物料名,数量,单价,分类等进行增删改查。

(7)订餐及收款模块包含预定、退订、点菜、结账等功能。席位共有20个,未预定时桌位的颜色是绿色的,点击预定后桌位变为黄色,并弹出顾客信息登记界面,包括客户的编号、姓氏、电话、已预订的桌位号以及预定时间,且已经预定的桌位不能再次订餐。点击退订能对已经定的桌位进行退订,退订后桌位颜色变为绿色,对于已经就餐的桌位不能退订。已预订或未预定的桌位均能点菜,点菜时弹出点菜界面,包括已点的菜品及每份菜的数量,点菜之后餐桌颜色变为红色。结账模块用来对已经就餐的餐桌结账,结账界面的信息包括桌号,消费清单,应付款。输入实收金额,自动计算找零金额。并显示当前的操作员及操作时间,点击完成将以上信息写入数据库,点击打印,弹出消费清单。

(8)系统功能导航能根据每个进入系统的用户角色提供其具有的权限,方便用户操作。

1.2性能需求

系统容量小,运行速度快,界面美观,人性化,操作方便,易于使用;经理及主管可拥有所有的权限(能同时操作管理和收款界面),收款员只能操作收款界面,其他人员则不能进入。

要求系统为c/s结构,数据库部署在服务器端,客户端从数据库读取数据或写入数据的速度要快。

1.3环境需求

硬件环境:服务器、客户机、网络交换机

软件环境:win7/xp 平台 SQL server 2005

开发环境:visual stdio 2005

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

nvarchar(max)

消费清单

yingfukuan

money

应付款

shishou

money

实收

zhaoling

money

找零

caozuoyuan

nchar(10)

操作员

shijian

datetime

操作时间

(5)库存表

属性名

数据类型

是否可以为空

说明

wuliaohao

int

物料号(主键)

pinming

nvarchar(50)

物品名称

shuliang

float

数量

danjia

money

单价

fenlei

nchar(10)

分类

(6)url表

属性名

数据类型

是否可以为空

说明

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

nvarchar(50)

密码

username

nvarchar(50)

系统用户名

flag

int

系统用户角色标识

(8)员工表

属性名

数据类型

是否可以为空

说明

bianhao

int

员工编号(主键)

xingming

nvarchar(50)

员工姓名

xingbie

nchar(10)

性别

zhuzhi

nvarchar(50)

员工住址

riqi

datetime

出生日期

shenfen

nvarchar(18)

身份证号

xueli

nchar(10)

学历

zhiwei

nchar(10)

职位

dianhua

int

电话

youxiang

nvarchar(50)

邮箱

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

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

模块功能说明:

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

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

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

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

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

(5)库存管理模块能够实现对物料的编号、名称、单价、数量、分类等的增删改查管理。

(6)订餐及收款模块包含预定、退订、点菜、结账等功能。席位共有20个,未预定时桌位的颜色是绿色的,点击预定后桌位变为黄色,并弹出顾客信息登记界面,包括客户的编号、姓氏、电话、已预订的桌位号以及预定时间,且已经预定的桌位不能再次订餐。点击退订能对已经定的桌位进行退订,退订后桌位颜色变为绿色,对于已经就餐的桌位不能退订。已预订或未预定的桌位均能点菜,点菜时弹出点菜界面,包括已点的菜品及每份菜的数量,点菜之后餐桌颜色变为红色。结账模块用来对已经就餐的餐桌结账,结账界面的信息包括桌号,消费清单,应付款。输入实收金额,自动计算找零金额。并显示当前的操作员及操作时间,点击完成将以上信息写入数据库,打印按钮的操作状态变为可操作,点击打印按钮能够打印顾客回执。

3.2系统操作流程

4. 系统详细设计方案

4.1 系统登录设计

Form1窗体

用户登陆模块是防止非法用户登陆的第一道防线,通过它可以保护后台数据库的安全性,当用户要进行系统操作时,首先要进入的就是身份验证界面,只有在密码正确的情况下才能进行以后的操作,如果输入的密码不正确,则不能进行登录对系统进行操作。同时系统能根据进入的用户的角色不同而分配不同的操作权限。本系统的记住密码功能使得用户不用每次都输入密码,在保证安全的前提下方便了用户的操作。下面是登录模块的主要代码:

Public Class Form1

Dim user_id, psw As String

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

If TextBox1.Text.Trim = "" Then

MsgBox("请输入用户名", MsgBoxStyle.OkOnly + 48, "注意")

Return  '若用户名为空,返回,重新输入

End If

Call sqlcon()

If (TextBox1.Text.Trim = user_id And TextBox2.Text.Trim = psw) Then

form2.Show()

Me.Hide()

Else

MsgBox("登录失败,请检查用户名及密码是否正确!", MsgBoxStyle.RetryCancel + 48, "注意")

End If

End Sub

Sub sqlcon()

Dim constr As String = "Provider=SQLOLEDB.1;Password=0;Persist Security Info=True;User ID=sa;Initial Catalog=canteen;Data Source=liuxuecheng"

Dim con As New OleDb.OleDbConnection(constr)

con.Open()

Dim sqlcmd As String = "select * from yonghu where user_id=" & TextBox1.Text.Trim

Dim cmd As New OleDb.OleDbCommand(sqlcmd, con)

Dim reader As OleDb.OleDbDataReader

reader = cmd.ExecuteReader

If reader.Read = True Then

user_id = reader(0).ToString.Trim

psw = reader(1).ToString.Trim

End If

reader.Close()

con.Close()

End Sub

'从yonghu表中获取用户名及密码

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim flag As Integer

Dim username As String = ""

Dim password As String = ""

Dim constr As String = "Provider=SQLOLEDB.1;Password=0;Persist Security Info=True;User ID=sa;Initial Catalog=canteen;Data Source=liuxuecheng"

Dim con As New OleDb.OleDbConnection(constr)

con.Open()

Dim sqlcmd As String = "select * from use_for_checkbox"

Dim cmd As New OleDb.OleDbCommand(sqlcmd, con)

Dim reader As OleDb.OleDbDataReader

reader = cmd.ExecuteReader

If reader.Read = True Then

username = reader(0).ToString.Trim

password = reader(1).ToString.Trim

flag = reader(2)

End If

reader.Close()

con.Close()

If flag = 1 Then

CheckBox1.Checked = True

TextBox1.Text = username

TextBox2.Text = password

End If

End Sub

'窗口出现时,如果flag为1,复选框的状态为true,并自动填充用户名,密码

Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged

If CheckBox1.Checked = True Then

Dim sqlcmd As String = "insert into use_for_checkbox values('" & TextBox1.Text.Trim & "','" & TextBox2.Text.Trim & "'," & 1 & ")"

Call Form3.connection(sqlcmd)

ElseIf CheckBox1.Checked = False Then

Dim sqlcmd As String = "delete use_for_checkbox"

Call Form3.connection(sqlcmd)

End If

End Sub

'复选框为true 将此时的用户名及密码写入use_for_checkbox,为false时清空表

End Class

4.2 系统主界面设计

窗体Form2

系统主界面的菜单提供了进入其他模块的通道,左侧的角色功能导航使用TreeView控件来动态的生成每个角色对应权限的操作树状图,用户进入系统后能一目了然的了解自己能干什么以及某一功能所在的位置。窗体的右下大部分控件放置一个webbrowser控件,能够根据登入系统用户的角色不同而显示不同的网页,网页的url可由管理员在系统设置中设置。以下是实现form2功能的主要代码:

Public Class form2

Dim flag%

Public username$

Dim myuri0, myuri1, myuri2, myuri3, myuri4, myuri5, myuri6 As String

Private Sub form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Call sqlcon() '获取flag标记

Call geturl() '获取url

Select Case flag

'根据用户的flag标记,决定用户权限及登录时主界面的网页

Case 0

Call role_navi0()

'动态生成角色导航内容

退出系统ToolStripMenuItem1.Enabled = True

系统用户管理ToolStripMenuItem.Enabled = True

'系统管理员所具有的权限

WebBrowser1.Url = New Uri(myuri0)

'重定向url

Case 1

Call role_navi1()

退出系统ToolStripMenuItem1.Enabled = True

系统用户管理ToolStripMenuItem.Enabled = True

员工信息管理ToolStripMenuItem.Enabled = True

菜单管理ToolStripMenuItem.Enabled = True

报表统计ToolStripMenuItem.Enabled = True

库存管理ToolStripMenuItem.Enabled = True

订餐及收款ToolStripMenuItem.Enabled = True

'总经理权限

WebBrowser1.Url = New Uri(myuri1)

Case 2

Call role_navi2()

员工信息管理ToolStripMenuItem.Enabled = True

'人事部经理权限

WebBrowser1.Url = New Uri(myuri2)

Case 3

Call role_navi3()

菜单管理ToolStripMenuItem.Enabled = True

'厨师长权限

WebBrowser1.Url = New Uri(myuri3)

Case 4

Call role_navi4()

库存管理ToolStripMenuItem.Enabled = True

'库房主管权限

WebBrowser1.Url = New Uri(myuri4)

Case 5

Call role_navi5()

报表统计ToolStripMenuItem.Enabled = True

'财务主管权限

WebBrowser1.Url = New Uri(myuri5)

Case 6

Call role_navi6()

订餐及收款ToolStripMenuItem.Enabled = True

'前台权限

WebBrowser1.Url = New Uri(myuri6)

End Select

Label2.Text &= username & "  今天是:  " & DateTime.Now.Date

'欢迎标语

End Sub

Private Sub 切换用户ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 切换用户ToolStripMenuItem.Click

Dim i%

i = MsgBox("是否切换?", MsgBoxStyle.OkCancel + 32, "确认操作")

If i = MsgBoxResult.Ok Then

Form1.Show()

Me.Close()

End If

End Sub

'切换用户

Sub sqlcon()

Dim constr As String = "Provider=SQLOLEDB.1;Password=0;Persist Security Info=True;User ID=sa;Initial Catalog=canteen;Data Source=liuxuecheng"

Dim con As New OleDb.OleDbConnection(constr)

con.Open()

Dim sqlcmd As String = "select * from yonghu where user_id=" & Form1.TextBox1.Text.Trim

Dim cmd As New OleDb.OleDbCommand(sqlcmd, con)

Dim reader As OleDb.OleDbDataReader

reader = cmd.ExecuteReader

If reader.Read = True Then

flag = reader(3)

username = reader(2)

End If

reader.Close()

con.Close()

End Sub

'连接数据库查询用户名及标识

Private Sub 退出系统ToolStripMenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 退出系统ToolStripMenuItem2.Click

Dim i%

i = MsgBox("是否退出?", MsgBoxStyle.OkCancel + 32, "确认操作")

If i = MsgBoxResult.Ok Then

Me.Close()

Form1.Close()

End If

End Sub

'退出系统操作

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

Call labelmove()

End Sub

Sub labelmove()

Label2.Left = Label2.Left + 1

If Label2.Left > Me.Right Then

Label2.Left = 0

End If

End Sub

Private Sub 菜单管理ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 菜单管理ToolStripMenuItem.Click

Form4.Show()

End Sub

Private Sub 订餐及收款ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 订餐及收款ToolStripMenuItem.Click

form5.Show()

End Sub

Private Sub 员工信息管理ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 员工信息管理ToolStripMenuItem.Click

Form3.Show()

End Sub

Private Sub 系统用户管理ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 系统用户管理ToolStripMenuItem.Click

Form9.Show()

End Sub

Sub geturl()

Dim constr As String = "Provider=SQLOLEDB.1;Password=0;Persist Security Info=True;User ID=sa;Initial Catalog=canteen;Data Source=liuxuecheng"

Dim con As New OleDb.OleDbConnection(constr)

con.Open()

Dim sql As String = "select * from myurl"

Dim cmd As New OleDb.OleDbCommand(sql, con)

Dim reader As OleDb.OleDbDataReader

reader = cmd.ExecuteReader

If reader.Read = True Then

myuri0 = reader(0)

myuri1 = reader(1)

myuri2 = reader(2)

myuri3 = reader(3)

myuri4 = reader(4)

myuri5 = reader(5)

myuri6 = reader(6)

End If

reader.Close()

con.Close()

End Sub

'获取myurl中的url值

Private Sub 退出系统ToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 退出系统ToolStripMenuItem1.Click

Form10.Show()

End Sub

Private Sub 库存管理ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 库存管理ToolStripMenuItem.Click

Form11.Show()

End Sub

Private Sub 报表统计ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 报表统计ToolStripMenuItem.Click

End Sub

Sub role_navi0()

Dim nd1, nd2, nd3, nd4 As New TreeNode

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)

End Sub

4.3人事管理模块设计

人事管理模块能对员工的员工编号、姓名、性别、住址、出生日期、身份证号、学历、职位、联系电话、邮箱等信息进行增删改查的操作。其中员工编号、姓名等共性很小的信息需用textbox输入,性别等信息采用combobox输入,出生日期这一特殊数据形式采用datetimepicker输入。同时,为textbox1添加了keypress事件,当textbox1中输入内容后能快速的查询信息并填充到其他项,为删除、修改做准备。将数据源整体拖拽进窗体用来全部显示内容。以下是主要的实现代码:

Public Class Form3

'bug:将数据库中的日期显示到界面上

Private Sub YuangongBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

Me.Validate()

Me.YuangongBindingSource.EndEdit()

Me.TableAdapterManager.UpdateAll(Me.CanteenDataSet)

End Sub

Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

'TODO: 这行代码将数据加载到表“CanteenDataSet.yuangong”中。您可以根据需要移动或移除它。

Me.YuangongTableAdapter.Fill(Me.CanteenDataSet.yuangong)

End Sub

Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click

Static Dim i% = 0

i = i + 1

If (i >= 1) Then

PictureBox1.Hide()

Button5.Text = "刷新"

Me.Refresh()

End If

End Sub

Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress

If Asc(e.KeyChar) = 13 Then

Call search()

End If

End Sub

Public Sub connection(ByVal sqlcmd As String) '用于增删改

Dim constr As String = "Provider=SQLOLEDB.1;Password=0;Persist Security Info=True;User ID=sa;Initial Catalog=canteen;Data Source=liuxuecheng"

Dim con As New OleDb.OleDbConnection(constr)

con.Open()

Dim cmd As New OleDb.OleDbCommand(sqlcmd, con)

cmd.ExecuteNonQuery()

End Sub

Sub search() '用来显示数据

Dim constr As String = "Provider=SQLOLEDB.1;Password=0;Persist Security Info=True;User ID=sa;Initial Catalog=canteen;Data Source=liuxuecheng"

Dim con As New OleDb.OleDbConnection(constr)

con.Open()

Dim sqlcmd As String = "select * from yuangong where bianhao=" & TextBox1.Text.Trim

Dim cmd As New OleDb.OleDbCommand(sqlcmd, con)

Dim reader As OleDb.OleDbDataReader

reader = cmd.ExecuteReader

If reader.Read = True Then

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)

End If

reader.Close()

con.Close()

End Sub

'查询操作

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click

If TextBox1.Text = "" Then

MsgBox("请输入要查询的员工编号", MsgBoxStyle.OkOnly + 48, "注意")

Return

End If

Call search()

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim bianhao, xingming, xingbie, zhuzhi, riqi, shenfeng, xueli, zhiwei, dianhua, youxiang As String

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

If TextBox1.Text = "" Then

MsgBox("至少有一项为空", MsgBoxStyle.OkOnly + 48, "注意")

Return

End If

Dim bh As String = ""

Dim constr As String = "Provider=SQLOLEDB.1;Password=0;Persist Security Info=True;User ID=sa;Initial Catalog=canteen;Data Source=liuxuecheng"

Dim con As New OleDb.OleDbConnection(constr)

con.Open()

Dim sql As String = "select * from yuangong where bianhao= " & TextBox1.Text.Trim

Dim cmd As New OleDb.OleDbCommand(sql, con)

Dim reader As OleDb.OleDbDataReader

reader = cmd.ExecuteReader

If reader.Read = True Then

bh = reader(0)

End If

If bh = TextBox1.Text.Trim Then

MsgBox("已存在编号为" & bianhao & "的员工", MsgBoxStyle.OkOnly + 48, "注意")

Return

End If

'验证是否重名()

If (bianhao = "" Or xingming = "" Or xingbie = "" Or zhuzhi = "" Or riqi = "" Or shenfeng = "" Or xueli = "" Or zhiwei = "" Or dianhua = "" Or youxiang = "") Then

MsgBox("至少有一项未填写", MsgBoxStyle.OkOnly + 48, "注意")

Return

End If

'验证填写项是否为空

Dim sqlcmd As String = "insert into yuangong values(" & "'" & bianhao & "'" & "," & "'" & xingming & "'" & "," & "'" & xingbie & "'" & "," & "'" & zhuzhi & "'" & "," & "'" & riqi & "'" & "," & "'" & shenfeng & "'" & "," & "'" & xueli & "'" & "," & "'" & zhiwei & "'" & "," & dianhua & "," & "'" & youxiang & "'" & ")"

Call connection(sqlcmd)

TextBox1.Text = ""

TextBox2.Text = ""

ComboBox1.Text = ""

TextBox3.Text = ""

TextBox4.Text = ""

ComboBox2.Text = ""

ComboBox3.Text = ""

TextBox5.Text = ""

TextBox6.Text = ""

MsgBox("添加成功", MsgBoxStyle.OkOnly + 64, "消息")

'将内容清空,并提示添加成功

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

If TextBox1.Text = "" Then

MsgBox("请输入要删除的员工编号", MsgBoxStyle.OkOnly + 48, "注意")

Return

End If

Dim sqlcmd As String = "delete from yuangong where bianhao=" & TextBox1.Text.Trim

Dim i%

i = MsgBox("确定要删除编号为" & TextBox1.Text.Trim & "的员工?", MsgBoxStyle.OkCancel + 32, "提示")

If i = MsgBoxResult.Ok Then

Call connection(sqlcmd)

TextBox1.Text = ""

MsgBox("删除成功", MsgBoxStyle.OkOnly + 64, "消息")

End If

End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

If TextBox1.Text = "" Then

MsgBox("请输入要修改的员工号", MsgBoxStyle.OkOnly + 48, "注意")

Return

End If

Dim sqlcmd1 As String = "update yuangong set xingming =" & "'" & TextBox2.Text.Trim & "'" & "where bianhao=" & TextBox1.Text.Trim

Dim sqlcmd2 As String = "update yuangong set xingbie =" & "'" & ComboBox1.SelectedItem & "'" & "where bianhao=" & TextBox1.Text.Trim

Dim sqlcmd3 As String = "update yuangong set zhuzhi = " & "'" & TextBox3.Text.Trim & "'" & "where bianhao=" & TextBox1.Text.Trim

Dim sqlcmd4 As String = "update yuangong set riqi =" & "'" & DateTimePicker1.Value.Date.ToString & "'" & "where bianhao=" & TextBox1.Text.Trim

Dim sqlcmd5 As String = "update yuangong set shenfeng =" & "'" & TextBox4.Text.Trim & "'" & "where bianhao=" & TextBox1.Text.Trim

Dim sqlcmd6 As String = "update yuangong set xueli =" & "'" & ComboBox2.SelectedItem & "'" & "where bianhao=" & TextBox1.Text.Trim

Dim sqlcmd7 As String = "update yuangong set zhiwei =" & "'" & ComboBox3.SelectedItem & "'" & "where bianhao=" & TextBox1.Text.Trim

Dim sqlcmd8 As String = "update yuangong set dianhua =" & Val(TextBox5.Text) & "where bianhao=" & TextBox1.Text.Trim

Dim sqlcmd9 As String = "update yuangong set youxiang =" & "'" & TextBox6.Text.Trim & "'" & "where bianhao=" & TextBox1.Text.Trim

Call connection(sqlcmd1)

Call connection(sqlcmd2)

Call connection(sqlcmd3)

Call connection(sqlcmd4)

Call connection(sqlcmd5)

Call connection(sqlcmd6)

Call connection(sqlcmd7)

Call connection(sqlcmd8)

Call connection(sqlcmd9)

MsgBox("员工信息修改成功", MsgBoxStyle.OkOnly + 64, "消息")

End Sub

'修改员工信息

End Class

4.4菜单管理

Form4

菜单管理能对菜号、菜名、价格、分类等进行增删改查操作,其中菜号、菜名、价格对应的编辑框为textbox,分类对应的为combobox。同时运用datagridview将对应表中的所有数据全部显示出来。以下是主要实现代码:

Public Class Form4

Private Sub CaidanBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

Me.Validate()

Me.CaidanBindingSource.EndEdit()

Me.TableAdapterManager.UpdateAll(Me.CanteenDataSet)

End Sub

Private Sub Form4_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

'TODO: 这行代码将数据加载到表“CanteenDataSet.caidan”中。您可以根据需要移动或移除它。

Me.CaidanTableAdapter.Fill(Me.CanteenDataSet.caidan)

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

If (TextBox3.Text = "") Then

MsgBox("不能为空", MsgBoxStyle.OkOnly + 48, "注意")

Return

End If

Dim sqlcmd As String = "insert into caidan (caihao,caiming,jiage,fenlei) values('" & TextBox3.Text.Trim & " ','" & TextBox1.Text.Trim & "'," & Val(TextBox2.Text) & ", '" & ComboBox1.SelectedItem & "' )"

Dim constr As String = "Provider=SQLOLEDB.1;Password=0;Persist Security Info=True;User ID=sa;Initial Catalog=canteen;Data Source=liuxuecheng"

Dim con As New OleDb.OleDbConnection(constr)

con.Open()

Dim sql As String = "select * from caidan where caihao= " & TextBox3.Text.Trim

Dim cmd As New OleDb.OleDbCommand(sql, con)

Dim reader As OleDb.OleDbDataReader

Dim cm As String = ""

reader = cmd.ExecuteReader

If reader.Read = True Then

cm = reader(0)

End If

reader.Close()

con.Close()

If cm = TextBox3.Text.Trim Then

MsgBox("已存在菜号为" & TextBox3.Text.Trim & "的菜", MsgBoxStyle.OkOnly + 48, "注意")

Return

End If

If (TextBox1.Text = "" Or ComboBox1.SelectedItem = "" Or TextBox2.Text = "" Or TextBox3.Text = "") Then

MsgBox("至少有一项未填写", MsgBoxStyle.OkOnly + 48, "注意")

Return

End If

Call Form3.connection(sqlcmd)

TextBox1.Text = ""

TextBox2.Text = ""

ComboBox1.Text = ""

TextBox3.Text = ""

MsgBox("添加成功", MsgBoxStyle.OkOnly + 64, "消息")

End Sub

'添加模块

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click

If TextBox1.Text = "" Then

MsgBox("请输入要删除的菜号", MsgBoxStyle.OkOnly + 48, "注意")

Return

End If

Dim sqlcmd As String = "delete from caidan where caihao=" & TextBox3.Text.Trim

Dim i%

i = MsgBox("确定要删除菜号为" & TextBox3.Text.Trim & "的菜?", MsgBoxStyle.OkCancel + 32, "提示")

If i = MsgBoxResult.Ok Then

Call Form3.connection(sqlcmd)

TextBox3.Text = ""

MsgBox("删除成功", MsgBoxStyle.OkOnly + 64, "消息")

End If

End Sub

'删除模块

Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click

If TextBox3.Text = "" Then

MsgBox("请输入要修改的菜号", MsgBoxStyle.OkOnly + 48, "注意")

Return

End If

Dim sqlcmd1 As String = "update caidan set caiming =" & "'" & TextBox1.Text.Trim & "'" & "where caihao=" & TextBox3.Text.Trim

Dim sqlcmd2 As String = "update caidan set fenlei=" & "'" & ComboBox1.SelectedItem & "'" & "where caihao=" & TextBox3.Text.Trim

Dim sqlcmd3 As String = "update caidan set jiage = " & "'" & TextBox2.Text.Trim & "'" & "where caihao=" & TextBox3.Text.Trim

Call Form3.connection(sqlcmd1)

Call Form3.connection(sqlcmd2)

Call Form3.connection(sqlcmd3)

MsgBox("菜单信息更新成功!", MsgBoxStyle.OkOnly + 64, "消息")

End Sub

'修改模块

Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click

If TextBox1.Text = "" Then

MsgBox("请输入要查询的菜名", MsgBoxStyle.OkOnly + 48, "注意")

Return

End If

Call mysearch()

End Sub

'查询模块

Sub mysearch()

Dim constr As String = "Provider=SQLOLEDB.1;Password=0;Persist Security Info=True;User ID=sa;Initial Catalog=canteen;Data Source=liuxuecheng"

Dim con As New OleDb.OleDbConnection(constr)

con.Open()

Dim sql As String = "select * from caidan where caihao= " & TextBox3.Text.Trim

Dim cmd As New OleDb.OleDbCommand(sql, con)

Dim reader As OleDb.OleDbDataReader

Dim cm As String = ""

reader = cmd.ExecuteReader

If reader.Read = True Then

TextBox3.Text = reader(0)

TextBox1.Text = reader(1)

TextBox2.Text = reader(2)

ComboBox1.Text = reader(3)

cm = reader(1)

End If

reader.Close()

con.Close()

If (cm = "") Then

MsgBox("此项不存在", MsgBoxStyle.OkOnly + 48, "注意")

End If

End Sub

'查询子过程

Private Sub TextBox3_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox3.KeyPress

If Asc(e.KeyChar) = 13 Then

Call mysearch()

End If

End Sub

Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click

PictureBox2.Hide()

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

OpenFileDialog1.FileName = "*.jpg"

OpenFileDialog1.InitialDirectory = "D:\图片"

OpenFileDialog1.Filter = "图片(*.jpg)|*.jpg|all files(*.*)|*.*"

OpenFileDialog1.FilterIndex = 1

If (OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK) Then

PictureBox1.Image = Image.FromFile(OpenFileDialog1.FileName)

Else

MsgBox("没有选择文件")

End If

End Sub

'打开图片

End Class

4.5报表统计设计

Form12、form13、form14、form15

报表统计功能利用visual stdio自带的报表生成向导生成四个crystalreport,分别统计员工学历结构、顾客偏好菜品、库存信息、历史流水账一览。并在对应窗体中添加crystalreportviewer来查看报表。系统生成的报表能导出为多种格式。

4.6库存管理设计

Form11

库存管理能对物料号、品名、数量、单价、分类等进行增删改查,利用datagridview显示全部的数据。主要实现代码如下:

Public Class Form11

Private Sub KucunBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

Me.Validate()

Me.KucunBindingSource.EndEdit()

Me.TableAdapterManager.UpdateAll(Me.CanteenDataSet)

End Sub

Private Sub Form11_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

'TODO: 这行代码将数据加载到表“CanteenDataSet.kucun”中。您可以根据需要移动或移除它。

Me.KucunTableAdapter.Fill(Me.CanteenDataSet.kucun)

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

If TextBox1.Text = "" Then

MsgBox("至少有一项为空", MsgBoxStyle.OkOnly + 48, "注意")

Return

End If

Dim bh As String = ""

Dim constr As String = "Provider=SQLOLEDB.1;Password=0;Persist Security Info=True;User ID=sa;Initial Catalog=canteen;Data Source=liuxuecheng"

Dim con As New OleDb.OleDbConnection(constr)

con.Open()

Dim sql As String = "select * from kucun where wuliaohao= " & TextBox1.Text.Trim

Dim cmd As New OleDb.OleDbCommand(sql, con)

Dim reader As OleDb.OleDbDataReader

reader = cmd.ExecuteReader

If reader.Read = True Then

bh = reader(0)

End If

If bh = TextBox1.Text.Trim Then

MsgBox("已存在编号为" & TextBox1.Text.Trim & "的物料", MsgBoxStyle.OkOnly + 48, "注意")

Return

End If

'验证是否重名()

If (TextBox1.Text = "" Or TextBox2.Text = "" Or TextBox3.Text = "" Or TextBox4.Text = "" Or ComboBox1.SelectedItem = "") Then

MsgBox("至少有一项未填写", MsgBoxStyle.OkOnly + 48, "注意")

Return

End If

'验证填写项是否为空

Dim sqlcmd As String = "insert into kucun values(" & Val(TextBox1.Text) & "," & "'" & TextBox2.Text.Trim & "'" & "," & Val(TextBox3.Text) & "," & Val(TextBox4.Text) & "," & "'" & ComboBox1.SelectedItem & "'" & ")"

Call Form3.connection(sqlcmd)

TextBox1.Text = ""

TextBox2.Text = ""

ComboBox1.Text = ""

TextBox3.Text = ""

TextBox4.Text = ""

MsgBox("添加成功", MsgBoxStyle.OkOnly + 64, "消息")

'将内容清空,并提示添加成功

End Sub

Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click

PictureBox1.Hide()

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

If TextBox1.Text = "" Then

MsgBox("请输入要删除的物料号", MsgBoxStyle.OkOnly + 48, "注意")

Return

End If

Dim sqlcmd As String = "delete from kucun where wuliaohao=" & Val(TextBox1.Text)

Dim i%

i = MsgBox("确定要删除编号为" & Val(TextBox1.Text) & "的物料?", MsgBoxStyle.OkCancel + 32, "提示")

If i = MsgBoxResult.Ok Then

Call Form3.connection(sqlcmd)

TextBox1.Text = ""

MsgBox("删除成功", MsgBoxStyle.OkOnly + 64, "消息")

End If

End Sub

'删除操作

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

If TextBox1.Text = "" Then

MsgBox("请输入要修改的物料号", MsgBoxStyle.OkOnly + 48, "注意")

Return

End If

Dim sqlcmd1 As String = "update kucun set pinming =" & "'" & TextBox2.Text.Trim & "'" & "where wuliaohao=" & Val(TextBox1.Text)

Dim sqlcmd2 As String = "update kucun set shuliang =" & Val(TextBox3.Text) & "where wuliaohao=" & Val(TextBox1.Text)

Dim sqlcmd3 As String = "update kucun set danjia = " & Val(TextBox4.Text) & "where wuliaohao=" & Val(TextBox1.Text)

Dim sqlcmd4 As String = "update kucun set fenlei =" & "'" & ComboBox1.SelectedItem & "'" & "where wuliaohao=" & Val(TextBox1.Text)

Call Form3.connection(sqlcmd1)

Call Form3.connection(sqlcmd2)

Call Form3.connection(sqlcmd3)

Call Form3.connection(sqlcmd4)

MsgBox("物料信息修改成功", MsgBoxStyle.OkOnly + 64, "消息")

End Sub

'修改操作

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click

Call search()

End Sub

Sub search()

Dim constr As String = "Provider=SQLOLEDB.1;Password=0;Persist Security Info=True;User ID=sa;Initial Catalog=canteen;Data Source=liuxuecheng"

Dim con As New OleDb.OleDbConnection(constr)

con.Open()

Dim sqlcmd As String = "select * from kucun where wuliaohao=" & Val(TextBox1.Text)

Dim cmd As New OleDb.OleDbCommand(sqlcmd, con)

Dim reader As OleDb.OleDbDataReader

reader = cmd.ExecuteReader

If reader.Read = True Then

TextBox2.Text = reader(1)

ComboBox1.Text = reader(4)

TextBox3.Text = reader(2)

TextBox4.Text = reader(3)

End If

reader.Close()

con.Close()

End Sub

Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress

If Asc(e.KeyChar) = 13 Then

Call search()

End If

End Sub

End Class

4.6订餐及收款设计

(1)订餐及收款主窗口(form5)

主要实现代码:

Public Class form5

Public array1(19) As Integer '用来存放按钮上的数字,通过val转换为整型

Dim i As Integer = 0 '成员变量,统计被点击按钮的个数,并将值写入array数组

Public zh As Integer

Public flag6 As Boolean = False

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

array1(i) = Val(Button1.Text) '点击后获取按钮文本,并使i加一

i = i + 1

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

array1(i) = Val(Button2.Text)

i = i + 1

End Sub

Private Sub Button10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button10.Click

array1(i) = Val(Button10.Text)

i = i + 1

End Sub

Private Sub Button9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button9.Click

array1(i) = Val(Button9.Text)

i = i + 1

End Sub

Private Sub Button21_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button21.Click

Dim but() As Button = {Button1, Button2, Button3, Button4, Button5, Button6, Button7, Button8, Button9, Button10, Button11, Button12, Button13, Button14, Button15, Button16, Button17, Button18, Button19, Button20}

'便于操作,将按钮装入数组,实现动态替换背景图片

For Me.i = 0 To 19

If (array1(i) >= 1 And getstatus(array1(i)) = 2) Then

MsgBox("座位号为" & array1(i) & "的座位已预订", MsgBoxStyle.OkOnly + 48, "注意")

ElseIf (array1(i) >= 1 And getstatus(array1(i)) = 3) Then

MsgBox("座位号为" & array1(i) & "的座位正在就餐", MsgBoxStyle.OkOnly + 48, "注意")

ElseIf (array1(i) >= 1 And getstatus(array1(i)) = 1) Then

Dim sqlcmd As String = "update canzhuo set zhuangtai=2 where zhuohao=" & array1(i)

Call Form3.connection(sqlcmd)

'被点击过的按钮文本数大于一,将被点击过的按钮的状态在数据库中更改为2,表示预定

but(array1(i) - 1).Image = My.Resources.huangse

'对数组进行操作,替换背景图片

Form6.Show()

End If

Next

i = 0 '将成员变量i的值置零,否则会发生数组越界

End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

array1(i) = Val(Button3.Text)

i = i + 1

End Sub

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click

array1(i) = Val(Button4.Text)

i = i + 1

End Sub

Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click

array1(i) = Val(Button5.Text)

i = i + 1

End Sub

Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click

array1(i) = Val(Button6.Text)

i = i + 1

End Sub

Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click

array1(i) = Val(Button7.Text)

i = i + 1

End Sub

Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click

array1(i) = Val(Button8.Text)

i = i + 1

End Sub

Private Sub Button15_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button15.Click

array1(i) = Val(Button15.Text)

i = i + 1

End Sub

Private Sub Button14_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button14.Click

array1(i) = Val(Button14.Text)

i = i + 1

End Sub

Private Sub Button16_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button16.Click

array1(i) = Val(Button16.Text)

i = i + 1

End Sub

Private Sub Button12_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button12.Click

array1(i) = Val(Button12.Text)

i = i + 1

End Sub

Private Sub Button11_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button11.Click

array1(i) = Val(Button11.Text)

i = i + 1

End Sub

Private Sub Button20_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button20.Click

array1(i) = Val(Button20.Text)

i = i + 1

End Sub

Private Sub Button19_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button19.Click

array1(i) = Val(Button19.Text)

i = i + 1

End Sub

Private Sub Button18_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button18.Click

array1(i) = Val(Button18.Text)

i = i + 1

End Sub

Private Sub Button17_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button17.Click

array1(i) = Val(Button17.Text)

i = i + 1

End Sub

Private Sub Button13_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button13.Click

array1(i) = Val(Button13.Text)

i = i + 1

End Sub

Private Sub form5_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim but() As Button = {Button1, Button2, Button3, Button4, Button5, Button6, Button7, Button8, Button9, Button10, Button11, Button12, Button13, Button14, Button15, Button16, Button17, Button18, Button19, Button20}

Dim constr As String = "Provider=SQLOLEDB.1;Password=0;Persist Security Info=True;User ID=sa;Initial Catalog=canteen;Data Source=liuxuecheng"

Dim con As New OleDb.OleDbConnection(constr)

Dim zt(19) As Integer '定义一个数组用来存放桌子状态

con.Open()

Dim sqlcmd As String = "select zhuangtai from canzhuo"

Dim cmd As New OleDb.OleDbCommand(sqlcmd, con)

Dim reader As OleDb.OleDbDataReader

reader = cmd.ExecuteReader

For k = 0 To 19 '循环读取将状态值存入数组中

If reader.Read = True Then

zt(k) = reader(0)

If (zt(k) = 1) Then

but(k).Image = My.Resources.lvse

'为1 表示桌子空闲

End If

If (zt(k) = 2) Then

but(k).Image = My.Resources.huangse

'为2 表示已预定

End If

If (zt(k) = 3) Then

but(k).Image = My.Resources.hongse

'为3 表示正在用餐中

End If

End If

Next

End Sub

'窗体启动的时候显示状态

Private Sub Button22_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button22.Click

Dim but() As Button = {Button1, Button2, Button3, Button4, Button5, Button6, Button7, Button8, Button9, Button10, Button11, Button12, Button13, Button14, Button15, Button16, Button17, Button18, Button19, Button20}

'便于操作,将按钮装入数组,实现动态替换背景图片

For Me.i = 0 To 19

If (array1(i) >= 1 And getstatus(array1(i)) = 3) Then

MsgBox(array1(i) & "号桌正在就餐不能退订", MsgBoxStyle.OkOnly + 48, "注意")

ElseIf (array1(i) > 1 And getstatus(array1(i)) = 2) Then

Dim sqlcmd As String = "update canzhuo set zhuangtai=1 where zhuohao=" & array1(i)

Dim sqlcmd1 As String = "delete from dingcan where ydzw like '%" & array1(i) & "%'"

Call Form3.connection(sqlcmd)

Call Form3.connection(sqlcmd1)

'被点击过的按钮文本数大于一,将被点击过的按钮的状态在数据库中更改为2,表示预定

but(array1(i) - 1).Image = My.Resources.lvse

'对数组进行操作,替换背景图片

MsgBox("退订成功", MsgBoxStyle.OkOnly + 64, "消息")

ElseIf (array1(i) = 1 And getstatus(array1(i)) = 2) Then

Dim sqlcmd As String = "update canzhuo set zhuangtai=1 where zhuohao=" & array1(i)

Dim sqlcmd1 As String = "delete from dingcan where ydzw = '1'"

Call Form3.connection(sqlcmd)

Call Form3.connection(sqlcmd1)

'被点击过的按钮文本数大于一,将被点击过的按钮的状态在数据库中更改为2,表示预定

but(array1(i) - 1).Image = My.Resources.lvse

'对数组进行操作,替换背景图片

MsgBox("退订成功", MsgBoxStyle.OkOnly + 64, "消息")

ElseIf (array1(i) >= 1 And getstatus(array1(i)) = 1) Then

MsgBox(array1(i) & "号桌没有预定,退订无效", MsgBoxStyle.OkOnly + 48, "注意")

End If

Next

i = 0 '将成员变量i的值置零,否则会发生数组越界

End Sub

Function getstatus%(ByVal num%)

Dim constr As String = "Provider=SQLOLEDB.1;Password=0;Persist Security Info=True;User ID=sa;Initial Catalog=canteen;Data Source=liuxuecheng"

Dim con As New OleDb.OleDbConnection(constr)

con.Open()

Dim sqlcmd As String = "select zhuangtai from canzhuo where zhuohao=" & num

Dim cmd As New OleDb.OleDbCommand(sqlcmd, con)

Dim reader As OleDb.OleDbDataReader

reader = cmd.ExecuteReader

If reader.Read Then

getstatus = reader(0)

End If

End Function

'用来获取按钮状态的函数

Private Sub Button23_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button23.Click

Dim but() As Button = {Button1, Button2, Button3, Button4, Button5, Button6, Button7, Button8, Button9, Button10, Button11, Button12, Button13, Button14, Button15, Button16, Button17, Button18, Button19, Button20}

'便于操作,将按钮装入数组,实现动态替换背景图片

For Me.i = 0 To 19

If (array1(i) >= 1 And getstatus(array1(i)) = 3) Then

MsgBox("座位号为" & array1(i) & "的座位正在就餐", MsgBoxStyle.OkOnly + 48, "注意")

ElseIf (array1(i) >= 1 And (getstatus(array1(i)) = 1) Or getstatus(array1(i)) = 2) Then

'被点击过的按钮文本数大于一,将被点击过的按钮的状态在数据库中更改为2,表示预定

but(array1(i) - 1).Image = My.Resources.hongse

'对数组进行操作,替换背景图片

Form7.Show()

End If

Next

i = 0 '将成员变量i的值置零,否则会发生数组越界

End Sub

'点菜操作

Private Sub Button24_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button24.Click

Dim but() As Button = {Button1, Button2, Button3, Button4, Button5, Button6, Button7, Button8, Button9, Button10, Button11, Button12, Button13, Button14, Button15, Button16, Button17, Button18, Button19, Button20}

'便于操作,将按钮装入数组,实现动态替换背景图片

For Me.i = 0 To 19

If (array1(i) >= 1 And (getstatus(array1(i)) = 1) Or getstatus(array1(i)) = 2) Then

MsgBox("座位号为" & array1(i) & "的座位没有点菜,不能结账", MsgBoxStyle.OkOnly + 48, "注意")

ElseIf (array1(i) >= 1 And getstatus(array1(i)) = 3) Then

Dim sqlcmd As String = "update canzhuo set zhuangtai=1 where zhuohao=" & array1(i)

zh = array1(i) '获取结账的桌号

Call Form3.connection(sqlcmd)

'被点击过的按钮文本数大于一,将被点击过的按钮的状态在数据库中更改为2,表示预定

but(array1(i) - 1).Image = My.Resources.lvse

'对数组进行操作,替换背景图片

Form8.Show()

End If

Next

i = 0 '将成员变量i的值置零,否则会发生数组越界

End Sub

End Class

(2)预定窗口(form6)

主要实现代码:

Public Class Form6

Private Sub Form6_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Label6.Text = DateAndTime.Now.Millisecond.ToString '毫秒数作为客户编号

Label8.Text = DateTime.Now.ToString '获得当前时间

For i = 0 To 19

If (form5.array1(i) <> 0) Then

Label7.Text &= " " & form5.array1(i)

End If

Next

'获得预定的桌号

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim sqlcmd As String = "insert into dingcan values('" & Label6.Text & "','" & TextBox1.Text.Trim & "'," & TextBox2.Text & ",'" & Label7.Text.Trim & "','" & Label8.Text.Trim & "')"

Call Form3.connection(sqlcmd)

MsgBox(Label7.Text & "号桌预定成功", MsgBoxStyle.OkOnly + 64, "消息")

Me.Close()

End Sub

'将订餐信息写入数据库

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

Me.Close()

End Sub

End Class

(3)点菜窗口(form7)

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

If (ComboBox1.Text = "") Then

MsgBox("没有选择数量", MsgBoxStyle.OkOnly + 48, "注意")

Return

End If

TextBox1.Text &= ListBox1.SelectedValue & " "

sum(0) = sum(0) + getjiage(ListBox1.SelectedValue) * Val(ComboBox1.SelectedItem)

'价格总和等于每个菜的价格乘以数量

ComboBox1.Text = ""

End Sub

Function getjiage!(ByVal caiming$)

Dim constr As String = "Provider=SQLOLEDB.1;Password=0;Persist Security Info=True;User ID=sa;Initial Catalog=canteen;Data Source=liuxuecheng"

Dim con As New OleDb.OleDbConnection(constr)

con.Open()

Dim sqlcmd As String = "select jiage from caidan where caiming='" & caiming & "'"

Dim cmd As New OleDb.OleDbCommand(sqlcmd, con)

Dim reader As OleDb.OleDbDataReader

reader = cmd.ExecuteReader

If reader.Read Then

getjiage = reader(0)

End If

End Function

'从菜单表中获取价格

Sub insert(ByVal zhuohao As Integer, ByVal caiming As String, ByVal jiage As Single)

Dim sqlcmd As String = "insert into yidingcaidan  values (" & zhuohao & ",'" & caiming & "'," & jiage & ")"

Call Form3.connection(sqlcmd)

End Sub

'插入过程

Private Sub Button21_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button21.Click

Dim tex() As TextBox = {TextBox1, TextBox2, TextBox3, TextBox4, TextBox5, TextBox6, TextBox7, TextBox8, TextBox9, TextBox10, TextBox11, TextBox12, TextBox13, TextBox14, TextBox15, TextBox16, TextBox17, TextBox18, TextBox19, TextBox20}

Dim lab() As Label = {Label2, Label21, Label20, Label19, Label18, Label17, Label16, Label15, Label14, Label13, Label12, Label11, Label10, Label9, Label8, Label7, Label6, Label5, Label4, Label3}

For k = 0 To 19

If (tex(k).Text <> "") Then

Call insert(Val(lab(k).Text), tex(k).Text.Trim, sum(k))

Dim sqlcmd As String = "update canzhuo set zhuangtai=3 where zhuohao=" & Val(lab(k).Text)

Call Form3.connection(sqlcmd)

End If '如果不为空则将桌号、菜名、总价等插入已定菜单表

Next

For j = 0 To 19

tex(j).Text = ""

Next

'点击确定后所有的文本框清空,重新点菜

MsgBox("点菜成功!", MsgBoxStyle.OkOnly + 64, "消息")

Me.Close()

End Sub

Private Sub Button22_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button22.Click

Me.Close()

End Sub

End Class

(4)结账窗口(form8)

主要实现代码:

Public Class Form8

Private Sub Form8_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim constr As String = "Provider=SQLOLEDB.1;Password=0;Persist Security Info=True;User ID=sa;Initial Catalog=canteen;Data Source=liuxuecheng"

Dim con As New OleDb.OleDbConnection(constr)

con.Open()

Dim sqlcmd As String = "select * from yidingcaidan where zhuohao=" & form5.zh

Dim cmd As New OleDb.OleDbCommand(sqlcmd, con)

Dim reader As OleDb.OleDbDataReader

reader = cmd.ExecuteReader

If reader.Read Then

Label14.Text = reader(0)

Label8.Text = reader(1)

Label10.Text = reader(2)

End If

reader.Close()

con.Close()

'获取结账的桌号,菜单,价格

Label12.Text = form2.username

Label13.Text = DateTime.Now.ToString

End Sub

Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress

If Asc(e.KeyChar) = 13 Then

If (Val(TextBox1.Text) - Val(Label10.Text) >= 0) Then

Label11.Text = Val(TextBox1.Text) - Val(Label10.Text)

Else

MsgBox("金额不足!", MsgBoxStyle.OkOnly + 48, "注意")

End If

End If

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim sqlcmd As String = "insert into jiezhang values(" & Val(Label14.Text) & ",'" & Label8.Text.Trim & "','" & Label10.Text.Trim & "'," & Val(TextBox1.Text) & "," & Val(Label11.Text) & ",'" & Label12.Text.Trim & "','" & Label13.Text.Trim & "')"

Call Form3.connection(sqlcmd)

MsgBox("结账成功!", MsgBoxStyle.OkOnly + 64, "信息")

Dim sqlcmd_del As String = "delete yidingcaidan where zhuohao=" & Val(Label14.Text)

Call Form3.connection(sqlcmd_del)

Button3.Enabled = True

End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.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")

End Sub

'打印发票

End Class

5.综合评价与结论

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

6.体会与展望

(1)开发一个管理信息系统,重要的不是如何去用代码实现一个功能,而是系统的分析与设计,只有当准确的分析与合理的设计相结合时才能满足客户的需求。同时,前期的设计关乎到后期的开发速度和质量。

(2)在实现一个操作的时候更多的考虑的是如何确保程序的健壮性,比如向数据库中插入一条记录,要考虑是否已经存在,要是年龄还要考虑是否在一个合乎情理的区间,要是数据库规定某一字段不能为空,还要考虑如何提示用户。

(3)系统的一个功能实现后让别人测试是很有必要的,别人不规范的操作或许能给开发的人发现更多的bug

(4)本系统再根据企业实际情况加以修改能够运用到企业实际的生产运作。

7.文献信息

[1]龚沛曾.Visual Basic.NET程序设计教程[M].高等教育出版社.2010.

[2]微软公司.Microsoft Visual Basic.NET语言参考手册[M].清华大学出版社.2002

[3]雷东升.基于c/s结构的多商户餐饮管理系统[J].中国科技论文在线.2008

[4]余金山,鲁斌. C/S 体系结构的餐饮管理信息系统设计[1].华侨大学学报:自然科学版, 2005

vb.net+sql 餐饮管理系统相关推荐

  1. asp毕业设计——基于vb+VB.NET+SQL Server的公文管理系统设计与实现(毕业论文+程序源码)——公文管理系统

    基于vb+VB.NET+SQL Server的公文管理系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于vb+VB.NET+SQL Server的公文管理系统设计与实现 ,文章末尾附有本 ...

  2. python实现小型搜索引擎设计_基于JAVA的中小型饭店餐饮管理系统的设计与实现...

    好程序设计擅长JAVA(SSM,SSH,SPRINGBOOT).PYTHON(DJANGO/FLASK).THINKPHP.C#.安卓.微信小程序.MYSQL.SQLSERVER等,欢迎咨询 今天将为 ...

  3. asp毕业设计——基于vb+VB.NET+SQL Server的图书馆管理信息系统设计与实现(毕业论文+程序源码)——图书馆管理信息系统

    基于vb+VB.NET+SQL Server的图书馆管理信息系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于vb+VB.NET+SQL Server的图书馆管理信息系统设计与实现,文章 ...

  4. 基于VB.net的书店管理系统 总结报告

    基于VB.net的书店管理系统 1.管理员功能菜单 用户信息管理:用户列表 书籍信息管理:书籍列表 系统管理:修改密码,系统设置,退出系统 2.用户功能管理 注册新用户:用户 忘记密码:用户 系统管理 ...

  5. java饭堂管理代码论文_[计算机设计精品] 基于java的餐饮管理系统(毕业论文).doc...

    [计算机设计精品] 基于java的餐饮管理系统(毕业论文).doc 还剩 68页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保 ...

  6. Springboot毕设项目连锁火锅店餐饮管理系统h2dg0java+VUE+Mybatis+Maven+Mysql+sprnig)

    Springboot毕设项目连锁火锅店餐饮管理系统h2dg0java+VUE+Mybatis+Maven+Mysql+sprnig) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + M ...

  7. 基于springboot的餐饮管理系统

    摘 要 本设计以真实场景的菜品信息及相关餐桌预定为设计依据,结合了餐饮管理系统的需求及反映的问题,对系统做出合理的需求分析和界面设计.同时本系统使用了JAVA语言.Springboot框架以及MYSQ ...

  8. SpringBoot+Vue项目餐饮管理系统

    文末获取源码 开发语言:Java 使用框架:spring boot 前端技术:JavaScript.Vue.js .css3 开发工具:IDEA/MyEclipse/Eclipse.Visual St ...

  9. Java毕设项目中小型饭馆餐饮管理系统计算机(附源码+系统+数据库+LW)

    Java毕设项目中小型饭馆餐饮管理系统计算机(附源码+系统+数据库+LW) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ ...

最新文章

  1. 白话——胡说图像分类器
  2. (转)Activity的四种launchMode
  3. EEG vs MRI vs fMRI vs fNIRS简介
  4. 润乾报表列太多导致渲染速度慢_报表自动化: 如何选择可视化大屏开发利器
  5. Nexys4DDR手写数字图像识别
  6. Flask-admin 学习及一些笔记
  7. hadoop jar包_计算机毕业设计中hadoop上运行Java程序
  8. 使用inspector功能查看和管理契约
  9. matlab小区制移动通信网,LTE习题 - 无线移动 - 通信人家园 - Powered by C114
  10. bootstrap怎么强制不换行_【Word考点】页面设置:页边距、分隔符要怎么设置?如何分栏?...
  11. 专升本的学生和高考考上本科的学生一样吗
  12. 【PAT乙】1005 继续(3n+1)猜想 (25分)
  13. stm32f103c8t6开发版点亮oled屏幕工程文件_OLED液晶屏如何显示中文呢
  14. ffmpeg推流到流媒体服务器
  15. Kali linux 2016.2(Rolling)中的Exploits模块详解
  16. java计算机毕业设计网络教学系统源码+系统+数据库+lw文档
  17. VOC2007数据集解析
  18. java基础集合框架——List、Set、Map概述(java集合一)
  19. Browserslist: caniuse-lite is outdated. Please run next command npm update caniuse-lite browserslis
  20. 逍遥安卓模拟器提示此设备未经Play保护机制认证解决方法步骤

热门文章

  1. Ti BAII Plus常用快捷键
  2. 打开软件时报错:This application failed to start because no Ot platform plugin could beinitialized.
  3. Calendar在有31号的月份时注意事项
  4. kafka 0.10.2.2配置acl
  5. 成为计算机程序员需要学什么用,编程能学到什么?
  6. 智能售餐系统通过重量转换按份售卖概要设计及业务关键点
  7. 标签打印软件如何制作三角形合格证
  8. 大数据时代推进服装行业“新零售”的发展
  9. HTML5 Canvas的简单使用
  10. Android10.0系统启动之Zygote进程