1. 程式人生 > >vb.net+sql 餐飲管理系統

vb.net+sql 餐飲管理系統

餐飲管理系統設計文件

0背景:

隨著餐飲行業的發展,餐飲行業的管理越來越趨向於精細化,自動化,智慧化。餐飲業的管理開始注重細節,將利潤與每個細節結合起來,力求資金的有效運轉,因此要求餐飲管理系統能詳細記錄每次服務的內容以及時間。以便於從大量的資料中分析顧客的偏好,以及某一種菜品的銷售與季節等其他因素的關係。力求菜品隨顧客的口味變化。與此同時,顧客的要求逐漸趨向個性化,頻繁的提前訂餐及退訂對於傳統人工操作來說比較費時費力,而且容易出錯。另外,隨著各行各業支出管理的規範化,大多數顧客希望在消費後能得到自己的消費清單。

1. 需求分析

1.1業務需求

1)系統能夠根據進入系統的使用者的角色不同而賦予其不同的許可權。具體分為系統管理員和業務操作員兩大類。為方便系統初期的除錯,存在超級使用者,擁有所有許可權。

2)系統提供介面,供其他系統或其他語言開發的本系統的擴充套件部分接入。系統管理員可以更改系統的介面風格。

3)人事管理模組能夠對所有員工的姓名、性別、住址、身份證號、出生日期、學歷、職位、 聯絡電話、郵箱等資訊進行增加、刪除、修改、查詢等操作。另外,人事管理模組還能對系統使用者進行管理。

4)選單管理由具有廚師長許可權的人負責,選單管理的內容包括菜名、價格、分類等。同過增刪改查對選單進行動態的管理,能夠很方便的增加新菜品;修改菜品價格等資訊;刪除過時的菜品;以及預覽所有的菜品。其中菜名,價格等資訊能夠被點菜模組呼叫,而分類資訊能用在報表統計模組中,統計出每種菜品在某一階段的消費情況。

5)報表統計

要求系統能夠用圖表直觀的顯示員工學歷結構、顧客偏好菜品、庫存資訊及歷史消費等。並能夠將資料以wordexcel等多種形式展現出來。

6)庫存管理模組能對企業的物料管理,實現對物料的物料名,數量,單價,分類等進行增刪改查。

7)訂餐及收款模組包含預定、退訂、點菜、結賬等功能。席位共有20個,未預定時桌位的顏色是綠色的,點選預定後桌位變為黃色,並彈出顧客資訊登記介面,包括客戶的編號、姓氏、電話、已預訂的桌位號以及預定時間,且已經預定的桌位不能再次訂餐。點選退訂能對已經定的桌位進行退訂,退訂後桌位顏色變為綠色,對於已經就餐的桌位不能退訂。已預訂或未預定的桌位均能點菜,點菜時彈出點菜介面,包括已點的菜品及每份菜的數量,點菜之後餐桌顏色變為紅色。結賬模組用來對已經就餐的餐桌結賬,結賬介面的資訊包括桌號,消費清單,應付款。輸入實收金額,自動計算找零金額。並顯示當前的操作員及操作時間,點選完成將以上資訊寫入資料庫,點選列印,彈出消費清單。

8)系統功能導航能根據每個進入系統的使用者角色提供其具有的許可權,方便使用者操作。

1.2效能需求

系統容量小,執行速度快,介面美觀,人性化,操作方便,易於使用;經理及主管可擁有所有的許可權(能同時操作管理和收款介面),收款員只能操作收款介面,其他人員則不能進入。

要求系統為c/s結構,資料庫部署在伺服器端,客戶端從資料庫讀取資料或寫入資料的速度要快。

1.3環境需求

硬體環境:伺服器、客戶機、網路交換機

軟體環境:win7/xp 平臺 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

nvarcharmax

消費清單

yingfukuan

money

應付款

shishou

money

實收

zhaoling

money

找零

caozuoyuan

nchar10

操作員

shijian

datetime

操作時間

5)庫存表

屬性名

資料型別

是否可以為空

說明

wuliaohao

int

物料號(主鍵)

pinming

nvarchar50

物品名稱

shuliang

float

數量

danjia

money

單價

fenlei

nchar(10)

分類

6url

屬性名

資料型別

是否可以為空

說明

url0

nvarchar(max)

系統管理員登陸介面的url

url1

nvarchar(max)

總經理登陸介面的url

url2

nvarchar(max)

人事經理登陸介面的url

url3

nvarchar(max)

廚師長登陸介面的url

url4

nvarchar(max)

庫房主管登陸介面的url

url5

nvarchar(max)

會計主管登陸介面的url

rul6

nvarchar(max)

前臺登陸介面的url

7)系統使用者表

屬性名

資料型別

是否可以為空

說明

user_id

nvarchar(50)

系統使用者號(主鍵)

pwd

nvarchar50

密碼

username

nvarchar50

系統使用者名稱

flag

int

系統使用者角色標識

8)員工表

屬性名

資料型別

是否可以為空

說明

bianhao

int

員工編號(主鍵)

xingming

nvarchar(50)

員工姓名

xingbie

nchar(10)

性別

zhuzhi

nvarchar50

員工住址

riqi

datetime

出生日期

shenfen

nvarchar18

身份證號

xueli

nchar10

學歷

zhiwei

nchar10

職位

dianhua

int

電話

youxiang

nvarchar50

郵箱

3. 系統總體結構設計方案

3.1在系統分析的基礎上得到如下功能模組


模組功能說明:

1)系統管理模組包括切換系統,系統設定,退出系統這幾個功能。切換系統能彈出登入介面方便另外一位使用者使用系統;系統設定包括使用者密碼修改、主介面網頁設定、系統風格選擇,使用者在登入系統後可進入使用者密碼修改模組更改自己的密碼;主介面網頁設定的作用是更改每個角色登陸到系統看到的主選單介面的網頁的url,可以設定不同角色的使用者進入系統後看到的網頁內容是不同的。系統風格設定可以改變系統的風格,選擇使用者喜歡的風格。退出系統能關閉所有使用的資源,退出整個系統。

2)人事管理模組包括員工資訊管理和系統使用者管理。其中,員工資訊管理能對普通員工的資訊執行增刪改查等操作,系統使用者管理能對系統使用者的資訊進行增刪改查。

3)選單管理模組能夠對選單的編號、名稱、價格、分類等執行增刪改查操作。

4)報表統計模組能對員工的學歷資訊以圖表的形式統計並展現;通過大量的消費資料得出顧客喜歡的菜品以及喜歡的菜品組合,並用餅圖進行反應,方便管理人員作出正確的決策;

庫存資訊統計能夠很直觀的反應當前庫存的狀況;歷史賬單統計能夠讓使用者一覽流水資料。除此之外,報表還可以以wordexcelpdf等形式匯出。

5)庫存管理模組能夠實現對物料的編號、名稱、單價、數量、分類等的增刪改查管理。

6)訂餐及收款模組包含預定、退訂、點菜、結賬等功能。席位共有20個,未預定時桌位的顏色是綠色的,點選預定後桌位變為黃色,並彈出顧客資訊登記介面,包括客戶的編號、姓氏、電話、已預訂的桌位號以及預定時間,且已經預定的桌位不能再次訂餐。點選退訂能對已經定的桌位進行退訂,退訂後桌位顏色變為綠色,對於已經就餐的桌位不能退訂。已預訂或未預定的桌位均能點菜,點菜時彈出點菜介面,包括已點的菜品及每份菜的數量,點菜之後餐桌顏色變為紅色。結賬模組用來對已經就餐的餐桌結賬,結賬介面的資訊包括桌號,消費清單,應付款。輸入實收金額,自動計算找零金額。並顯示當前的操作員及操作時間,點選完成將以上資訊寫入資料庫,列印按鈕的操作狀態變為可操作,點選列印按鈕能夠列印顧客回執。

3.2系統操作流程


4. 系統詳細設計方案

4.1 系統登入設計

Form1窗體


使用者登陸模組是防止非法使用者登陸的第一道防線,通過它可以保護後臺資料庫的安全性,當用戶要進行系統操作時,首先要進入的就是身份驗證介面,只有在密碼正確的情況下才能進行以後的操作,如果輸入的密碼不正確,則不能進行登入對系統進行操作。同時系統能根據進入的使用者的角色不同而分配不同的操作許可權。本系統的記住密碼功能使得使用者不用每次都輸入密碼,在保證安全的前提下方便了使用者的操作。下面是登入模組的主要程式碼:

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