vb.net+sql 餐饮管理系统
来源:互联网 发布:html class no js 编辑:程序博客网 时间:2024/04/30 16:48
餐饮管理系统设计文档
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 餐饮管理系统
- 餐饮管理系统大作业SQL/C#
- 金石餐饮管理系统 官网
- 美食管家餐饮管理系统
- java版餐饮管理系统
- 餐饮管理系统思想总结
- 餐饮管理系统 VC MFC
- 城市餐饮信息管理系统设计-VB(
- 星火餐饮管理系统 v1.0 官网
- 一帆风顺餐饮管理系统 v3.01 官网
- 宏图酒店餐饮管理系统 怎么用
- 教之初餐饮管理系统 绿色
- 小金宇酒店客房餐饮管理系统 下载
- 天韵餐饮管理系统/软件
- DonNet餐饮管理系统(源码发布)
- 智谷电无线餐饮管理系统方案
- 餐饮管理系统三层实现步骤
- C#开发的餐饮管理系统总结
- django学习总结及摘录1
- ILDE使用窍门
- 最长公共子序列
- 学习日记-垃圾回收
- 1.Storm基本概念
- vb.net+sql 餐饮管理系统
- 手动用三层写医院随访添加信息内容
- 使用devstack在Ubuntu12.10部署openstack开发环境
- poj 2524 并查集 入门
- 【我的应用系列】(三)动画的使用之Tween动画
- 我的Android进阶之旅------>Android Service学习之AIDL, Parcelable和远程服务实例
- 高内聚低耦合简介
- hdu1421搬寝室DP(ACM题目,动态规划)
- JS 实现跑马灯效果