vb.net+sql 餐飲管理系統
餐飲管理系統設計文件
0背景:
隨著餐飲行業的發展,餐飲行業的管理越來越趨向於精細化,自動化,智慧化。餐飲業的管理開始注重細節,將利潤與每個細節結合起來,力求資金的有效運轉,因此要求餐飲管理系統能詳細記錄每次服務的內容以及時間。以便於從大量的資料中分析顧客的偏好,以及某一種菜品的銷售與季節等其他因素的關係。力求菜品隨顧客的口味變化。與此同時,顧客的要求逐漸趨向個性化,頻繁的提前訂餐及退訂對於傳統人工操作來說比較費時費力,而且容易出錯。另外,隨著各行各業支出管理的規範化,大多數顧客希望在消費後能得到自己的消費清單。
1. 需求分析
1.1業務需求
(1)系統能夠根據進入系統的使用者的角色不同而賦予其不同的許可權。具體分為系統管理員和業務操作員兩大類。為方便系統初期的除錯,存在超級使用者,擁有所有許可權。
(2)系統提供介面,供其他系統或其他語言開發的本系統的擴充套件部分接入。系統管理員可以更改系統的介面風格。
(3)人事管理模組能夠對所有員工的姓名、性別、住址、身份證號、出生日期、學歷、職位、 聯絡電話、郵箱等資訊進行增加、刪除、修改、查詢等操作。另外,人事管理模組還能對系統使用者進行管理。
(4)選單管理由具有廚師長許可權的人負責,選單管理的內容包括菜名、價格、分類等。同過增刪改查對選單進行動態的管理,能夠很方便的增加新菜品;修改菜品價格等資訊;刪除過時的菜品;以及預覽所有的菜品。其中菜名,價格等資訊能夠被點菜模組呼叫,而分類資訊能用在報表統計模組中,統計出每種菜品在某一階段的消費情況。
(5)報表統計
要求系統能夠用圖表直觀的顯示員工學歷結構、顧客偏好菜品、庫存資訊及歷史消費等。並能夠將資料以word、excel等多種形式展現出來。
(6)庫存管理模組能對企業的物料管理,實現對物料的物料名,數量,單價,分類等進行增刪改查。
(7)訂餐及收款模組包含預定、退訂、點菜、結賬等功能。席位共有20個,未預定時桌位的顏色是綠色的,點選預定後桌位變為黃色,並彈出顧客資訊登記介面,包括客戶的編號、姓氏、電話、已預訂的桌位號以及預定時間,且已經預定的桌位不能再次訂餐。點選退訂能對已經定的桌位進行退訂,退訂後桌位顏色變為綠色,對於已經就餐的桌位不能退訂。已預訂或未預定的桌位均能點菜,點菜時彈出點菜介面,包括已點的菜品及每份菜的數量,點菜之後餐桌顏色變為紅色。結賬模組用來對已經就餐的餐桌結賬,結賬介面的資訊包括桌號,消費清單,應付款。輸入實收金額,自動計算找零金額。並顯示當前的操作員及操作時間,點選完成將以上資訊寫入資料庫,點選列印,彈出消費清單。
(8)系統功能導航能根據每個進入系統的使用者角色提供其具有的許可權,方便使用者操作。
1.2效能需求
系統容量小,執行速度快,介面美觀,人性化,操作方便,易於使用;經理及主管可擁有所有的許可權(能同時操作管理和收款介面),收款員只能操作收款介面,其他人員則不能進入。
要求系統為c/s結構,資料庫部署在伺服器端,客戶端從資料庫讀取資料或寫入資料的速度要快。
1.3環境需求
硬體環境:伺服器、客戶機、網路交換機
軟體環境:win7/xp 平臺 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