跳至主要內容

Visual Basic .Net 程式案例學習: 10. 個人通訊錄程式 (2014版)

Visual Basic .Net 程式案例學習: 10. 個人通訊錄程式 (2014版)

Visual Basic .Net 程式案例學習: 10. 個人通訊錄程式 (2014版)

10.1 問題

通訊錄的程式其實Microsoft已經有附加在作業系統上了,但由於不是欄位太多,或者是許多欄位用不到,看起來實用性不高,因為沒辦法客制化,相信使用Microsoft通訊錄的朋友應該是少數吧。最常見的解決方案就是使用Microsoft Excel紀錄通訊錄,不但欄位可以自訂,還可以排序跟搜尋,甚至列印成小紙片,可以方便帶在身上。這個問題的需求是筆者的朋友提出的,他希望有個簡單的程式可以紀錄通訊錄,而且越簡單清楚越好,可以一目了然。因此筆者就試著把他的需求分析一下,發現其實通訊錄的基本需求並不複雜,而且也是個很好的練習題。

10.2 需求

表格 10‑1 「個人通訊錄程式」系統目的分析表

版本:1.0   要做什麼   不要做什麼(不要做不代表不會做)  
能做什麼 (第一格:必要項目) (第二格:次要項目)
利用資料庫將基本資料存入。 將資料庫升級至SQL Server,透過網路讓使用者建立基本資料。 
畫面要簡單,可以容納所有欄位。
尋找資料可以用選擇的,或者是用輸入。 
可以存入照片,移除照片。
輸入電話資料的時候,必須檢查輸入字元,只能輸入數字。 
不能做什麼(不能做代表不需要做) (第三格:不必要項目)   (第四格:不需要項目)
設計批次產生基本資料的功能。 能夠連結MS Outlook,將資料匯入。

表格 10‑2 「個人通訊錄程式」系統目標分析表

版本:   重要   不重要  
優先 (重) (急)
畫面要簡單,可以容納所有欄位。 利用資料庫將基本資料存入。
輸入電話資料的時候,必須檢查輸入字元,只能輸入數字。 
不急迫 (輕) (緩)
尋找資料可以用選擇的,或者是用輸入。   可以存入照片,移除照片。

表格 10‑3 「個人通訊錄程式」系統規格表

規格項目  規格內容   備註
主要功能 輸入電話資料的時候,必須檢查輸入字元,只能輸入數字。  …
尋找資料可以用選擇的,或者是用輸入。
可以存入照片,移除照片。
使用介面 畫面要簡單,可以容納所有欄位。 …

10.3 特色

特點就是透過簡明的畫面,直覺式的操作,方便有效率的個人通訊錄程式。

10.4 使用工具

語言   軟體  
Visual Basic 2005   MS Visual Studio 2005 .NET、MS Access

10.5 系統架構

首先藉由模組宣告共用的變數以及資料庫連結物件,接著建立起開關輸入輸出的控制項,也就是使用者介面型態函式,透過這些副程式幫忙設定讀寫文字框以及按鈕顯示跟隱藏,這樣才會方便。其實目前的欄位算是非常的少,因此透過記憶力大概就可以規劃了,可是一般的應用程式介面可就沒有這麼簡單了,例如:進銷存軟體,每一個表單的介面最好都要使用表格紀錄起來各種狀態,這樣才不會出錯。

其次是資料庫的讀寫,這裡比較特別的一點就是影像檔的讀寫,有兩種作法,第一種就是外部儲存,也就是替影像檔案編碼,重新命名並將新的名稱寫入資料欄位中;第二種就是資料庫儲存,直接以二進制檔案寫入資料庫欄位中。哪一種做法比較好呢?其實要看應用,倘若要求速度,那麼外部儲存因為直接讀取檔案,自然速度會快。倘若要求方便管理,那麼一個資料庫就可以容納所有資料,也是蠻方便的。由於影像檔並不會太多,所以我們選擇第二種作法。如果是處理上千張影像檔的話,建議使用SQL Server來管理,筆者有實際經驗,上千至萬張的學生照片,以SQL Server來管理的話是綽綽有餘,不必擔心效能。

最後使用System.Diagnostics.Process.Start方法,來開啟網頁。其實這個方法除了網頁之外,還可以啟動並監視外部程式,包含批次檔案。它會開啟相對應的程式,所以開啟的是文字檔的話,會自動呼叫相對應的程式。再講得更簡單一點,它就有點像是點選開始、執行(R),輸入命令文字,按下Enter鍵。

10.6 程式實作

10.6.1 讀出資料的程式碼

主要是介紹由資料庫讀出二進制影像的方法。


    ‘下拉式姓名選擇欄位更動事件

    Private Sub cb1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cb1.SelectedIndexChanged

        ‘狀態文字框顯示目前所選擇的姓名

        ts1.Text = "我的通訊錄: " + cb1.SelectedItem

        Try

            ‘清除文字框內容

            Call formClear()

            ‘檢查資料庫連結物件狀態,若連接關閉,則資料庫物件關閉

            If con.State = ConnectionState.Closed Then con.Close()

            ‘開啟資料庫連結

            con.Open()

            ‘宣告並建立資料庫命令物件,以姓名為查詢關鍵字

            Dim cmd As New OleDbCommand("select * from table1 WHERE name = '" & cb1.SelectedItem & "'", con)

            ‘宣告資料讀取物件

            Dim drdr As OleDbDataReader

            ‘將命令結果傳送給資料讀取物件

            drdr = cmd.ExecuteReader

            ‘讀第一筆資料

            drdr.Read()

            ‘設定姓名欄文字框

            tb1.Text = drdr.Item("name")

            ‘設定地址欄文字框

            tb2.Text = drdr.Item("address")

            ‘設定電話文字框

            tb3.Text = drdr.Item("phone")

            ‘設定行動電話文字框

            tb4.Text = drdr.Item("mobile")

            ‘設定電子郵件文字框

            tb5.Text = drdr.Item("email")

            ‘設定生日文字框

            tb6.Text = drdr.Item("dob")

            ‘宣告位元組陣列

            Dim bt() As Byte

            ‘宣告記憶體串流物件

            Dim ms As MemoryStream

            ‘將二進位資料讀入位元組陣列

            bt = drdr.Item("image")

            ‘建立新的記憶體串流物件,內容為二進位資料

            ms = New MemoryStream(bt)

            ‘藉由Image.FromStream將串流轉換為影像格式

            pb1.Image = Image.FromStream(ms)

            ‘隱藏欄位設定為姓名

            tb8.Text = drdr.Item("name")

            ‘顯示影像

            pb1.Show()

            ‘取消資料命令物件動作

            cmd.Cancel()

            ‘關閉資料庫連結

            con.Close()

            ‘啟用修改選項

            mrec.Enabled = True

            ‘啟用刪除選項

            drec.Enabled = True

            ‘啟用修改按鈕

            mbtn.Enabled = True

            ‘啟用刪除按鈕

            dbtn.Enabled = True

        ‘例外處理

        Catch ex As Exception

            ‘顯示發生何種錯誤訊息

            MsgBox(ex.Message)

        End Try

    End Sub

image.png
圖 10‑1

如圖10-1可見點選上方的姓名下拉式選單,就會把該列的資料載入基本資料中。

10.6.2 寫入資料的程式碼

主要是介紹寫入影像檔到資料庫二進制欄位的方法。


‘宣告檔案串流物件開啟影像暫存檔

Dim fs As New FileStream(Application.StartupPath + "\temp.dat", FileMode.Open)

‘以檔案長度宣告位元組陣列

Dim arbyte(fs.Length) As Byte

‘一次讀取影像檔所有資料到位元組陣列中

fs.Read(arbyte, 0, arbyte.Length)

‘關閉檔案

fs.Close()

‘宣告SQL命令文字,在影像欄位中我們以問號代替二近置資料

Dim st As String = "INSERT INTO Table1(name,address,phone,mobile,email,dob,[image])VALUES('" & tb1.Text & "','" & tb2.Text & "','" & tb3.Text & "','" & tb4.Text & "','" & tb5.Text & "','" & tb6.Text & "', ?)"

‘宣告並建立資料庫命令物件

Dim cmd As New OleDbCommand(st, con)

‘宣告資料庫參數物件

Dim mypar As New OleDbParameter("@picture", OleDbType.LongVarBinary)

‘設定影像位元組陣列的資料到參數物件

mypar.Value = arbyte

‘設定影像位元組陣列長度的資料到參數長度

mypar.Size = arbyte.Length

‘命令物件加入參數

cmd.Parameters.Add(mypar)

‘開啟資料庫連結

con.Open()

‘執行命令

cmd.ExecuteNonQuery()

‘顯示訊息

MsgBox("紀錄成功")

‘刪除影像暫存檔

File.Delete(Application.StartupPath + "\temp.dat")

10.7 修改重點

這類的程式最主要的就是客製化,依照個人的需求而設計修改,您可以設計的複雜一些,也可以簡單一些,端看需求而定。無論是增加欄位,或是增加介面,都是可以做的選項。

有一點卻是值得一試的,將資料放在SQL Server上,還記得我們的架構是將資料庫連結物件模組化,所以基本上在這裡修改之後,再將主程式的資料庫相關元件更名就可以了,由於.NET元件很多,因此採用名稱空間規劃,有關資料庫的都放在System.Data,也就是說無論連結單機或是伺服器的元件,都可以在這裡引用的到。因此要將其修改成網路版是相當容易的一件事情。

10.8 結論

功能強大未必是好處,有時候簡單清楚明瞭反而有效率。就拿Microsoft Office系列來說吧,MS Office 2003以前都採用選單的方式,功能非常的豐富,但你我皆知,會使用到的功能其實只有幾項,因此微軟還貼心的設計將常用的功能顯示出來,隱藏不常用的功能。可是還是稍嫌複雜,因此到了MS Office 2007之後,有沒有發現功能表全部變成圖示介面,讓人一目了然,簡單易懂又具親和力,姑且不論背後的新增功能,就從介面來看,不但美觀又易懂,藉由圖示就可以知道功能的意義。所以介面設計深深的影響著軟體友善度的高低。

image.png
Lai Tai-Yu (賴岱佑)

Popular Posts

波蘭文學習之旅:1-1. 波蘭文字母與發音(注音版)

最佳化處理策略之快速消除扭曲演算法

Visual Basic 6.0 程式案例學習: 10. 條碼列印程式 (2014版)

波蘭文學習之旅:1-1. 波蘭文字母與發音(注音版)

圖片

最佳化處理策略之快速消除扭曲演算法

圖片

Visual Basic 6.0 程式案例學習: 10. 條碼列印程式 (2014版)

圖片

Python 日期與時間的處理

圖片

用10種程式語言做影像二值化(Image binarization)

圖片

Visual Basic .Net 程式案例學習: 06. 題庫測驗系統 (2014版)

圖片

修復損毀的 SQLite DB 資料庫

圖片

解決 ValueError: If using all scalar values, you must pass an index

圖片

Visual Basic 6.0 程式案例學習: 04. 人事考勤管理系統 (2014版)

圖片

Visual Basic 6.0 程式案例學習: 07. 收據列印程式 (2014版)

圖片

佑佑的 Line 貼圖創作

貼圖作者網址:

https://line.me/S/shop/sticker/author/3883362

靜態貼圖

 
 
 
 
  牡羊座:狗狗角色

作者:佑佑
依照牡羊座的個性優點、個性缺點、生活習慣、理財習慣、社交習慣、愛情觀、節假日、禮貌問候,所編撰的貼圖。星座只能當參考用,不會完全準確。
購買貼圖
  金牛座:兔兔角色

作者:佑佑
依照金牛座的個性優點、個性缺點、生活習慣、理財習慣、社交習慣、愛情觀、節假日、禮貌問候,所編撰的貼圖。星座只能當參考用,不會完全準確。
購買貼圖
  雙子座:貓貓角色

作者:佑佑
依照雙子座的個性優點、個性缺點、生活習慣、理財習慣、社交習慣、愛情觀、節假日、禮貌問候,所編撰的貼圖。星座只能當參考用,不會完全準確。
購買貼圖
  巨蟹座:倉鼠角色

作者:佑佑
依照巨蟹座的個性優點、個性缺點、生活習慣、理財習慣、社交習慣、愛情觀、節假日、禮貌問候,所編撰的貼圖。星座只能當參考用,不會完全準確。
購買貼圖
 
 
 
 
  獅子座:幼獅角色

作者:佑佑
依照獅子座的個性優點、個性缺點、生活習慣、理財習慣、社交習慣、愛情觀、節假日、禮貌問候,所編撰的貼圖。星座只能當參考用,不會完全準確。
購買貼圖
  處女座:松鼠角色

作者:佑佑
依照處女座的個性優點、個性缺點、生活習慣、理財習慣、社交習慣、愛情觀、節假日、禮貌問候,所編撰的貼圖。星座只能當參考用,不會完全準確。
購買貼圖
  天秤座:鴿子角色

作者:佑佑
依照天秤座的個性優點、個性缺點、生活習慣、理財習慣、社交習慣、愛情觀、節假日、禮貌問候,所編撰的貼圖。星座只能當參考用,不會完全準確。
購買貼圖
  天蠍座:鳳凰角色

作者:佑佑
依照天蠍座的個性優點、個性缺點、生活習慣、理財習慣、社交習慣、愛情觀、節假日、禮貌問候,所編撰的貼圖。星座只能當參考用,不會完全準確。
購買貼圖
 
 
 
 
  射手座:人馬角色

作者:佑佑
依照射手座的個性優點、個性缺點、生活習慣、理財習慣、社交習慣、愛情觀、節假日、禮貌問候,所編撰的貼圖。星座只能當參考用,不會完全準確。
購買貼圖
  魔羯座:山羊角色

作者:佑佑
依照魔羯座的個性優點、個性缺點、生活習慣、理財習慣、社交習慣、愛情觀、節假日、禮貌問候,所編撰的貼圖。星座只能當參考用,不會完全準確。
購買貼圖
  水瓶座:海豚角色

作者:佑佑
依照水瓶座的個性優點、個性缺點、生活習慣、理財習慣、社交習慣、愛情觀、節假日、禮貌問候,所編撰的貼圖。星座只能當參考用,不會完全準確。
購買貼圖
  雙魚座:小丑魚角色

作者:佑佑
依照雙魚座的個性優點、個性缺點、生活習慣、理財習慣、社交習慣、愛情觀、節假日、禮貌問候,所編撰的貼圖。星座只能當參考用,不會完全準確。
購買貼圖
 
 
 
 
  上班族都變成狒狒,心裡想要說的話。

作者:佑佑
最近在台灣走紅的狒狒,用擬人化的方式,變成上班族,畫出心裡的想說的話。
購買貼圖
  接案派遣的日常

作者:佑佑
接案派遣到其他公司的日常對話,有調皮、正經、日常對話。
購買貼圖
  貓女事務員的搞笑時刻

作者:佑佑
把行政人員在職場上遇到千奇百怪的事情畫出來,用可愛的貓女來擔任行政人員的代言人。
購買貼圖
  貓貓說每天都會用到的話

作者:佑佑
日常生活常見的短句,用小貓擬人化的方式呈現,比較親切可愛。
購買貼圖
 
     
  大人的煩惱特輯:小兔角色

作者:佑佑
錢包餓了,生活苦了。變美變健康?先讓我睡飽吧。心好累,我需要充電。
購買貼圖
     

動態貼圖

 
 
 
 
  牡羊座日常交際:狗狗角色

作者:佑佑
依照牡羊座的個性,描繪日常生活的行為,供交際表達心情使用。星座只能當參考用,不會完全準確。
購買貼圖
  金牛座日常交際:兔兔角色

作者:佑佑
依照金牛座的個性,描繪日常生活的行為,供交際表達心情使用。星座只能當參考用,不會完全準確。
購買貼圖
  雙子座日常交際:貓貓角色

作者:佑佑
依照雙子座的個性,描繪日常生活的行為,供交際表達心情使用。星座只能當參考用,不會完全準確。
購買貼圖
  巨蟹座日常交際:倉鼠角色

作者:佑佑
依照巨蟹座的個性,描繪日常生活的行為,供交際表達心情使用。星座只能當參考用,不會完全準確。
購買貼圖
 
 
 
 
  獅子座日常交際:幼獅角色

作者:佑佑
依照獅子座的個性,描繪日常生活的行為,供交際表達心情使用。星座只能當參考用,不會完全準確。
購買貼圖
  處女座日常交際:松鼠角色

作者:佑佑
依照處女座的個性,描繪日常生活的行為,供交際表達心情使用。星座只能當參考用,不會完全準確。
購買貼圖
  天秤座日常交際:鴿子角色

作者:佑佑
依照天秤座的個性,描繪日常生活的行為,供交際表達心情使用。星座只能當參考用,不會完全準確。
購買貼圖
  天蠍座日常交際:鳳凰角色

作者:佑佑
依照天蠍座的個性,描繪日常生活的行為,供交際表達心情使用。星座只能當參考用,不會完全準確。
購買貼圖
 
 
 
 
  射手座日常交際:人馬角色

作者:佑佑
依照射手座的個性,描繪日常生活的行為,供交際表達心情使用。星座只能當參考用,不會完全準確。
購買貼圖
  魔羯座日常交際:山羊角色

作者:佑佑
依照魔羯座的個性,描繪日常生活的行為,供交際表達心情使用。星座只能當參考用,不會完全準確。
購買貼圖
  水瓶座日常交際:海豚角色

作者:佑佑
依照水瓶座的個性,描繪日常生活的行為,供交際表達心情使用。星座只能當參考用,不會完全準確。
購買貼圖
  雙魚座日常交際:小丑魚角色

作者:佑佑
依照雙魚座的個性,描繪日常生活的行為,供交際表達心情使用。星座只能當參考用,不會完全準確。
購買貼圖
 
     
  厭世報:鬍渣男

作者:佑佑
厭世總有個理由跟原因,實在是令人不爽,為什麼最倒楣的總是我?真希望明天就是世界末日,讓大家都一樣慘。
購買貼圖
     

表情貼

 
 
 
 
  貓貓說每天都用得到的表情貼

作者:佑佑
日常生活常見的表情用語,用小貓擬人化的方式呈現,比較親切可愛。
購買貼圖
  天秤座的表情貼:鴿子角色

作者:佑佑
日常生活常見的表情用語,天秤座的鴿子擬人化方式呈現,比較親切可愛。
購買貼圖
  天蠍座的表情貼:鳳凰角色

作者:佑佑
日常生活常見的表情用語,天蠍座的鳳凰擬人化方式呈現,比較親切可愛。
購買貼圖
  射手座的表情貼:人馬角色

作者:佑佑
日常生活常見的表情用語,射手座的人馬擬人化方式呈現,比較親切可愛。
購買貼圖
 
 
 
 
  魔羯座的表情貼:山羊角色

作者:佑佑
日常生活常見的表情用語,魔羯座的山羊擬人化方式呈現,比較親切可愛。
購買貼圖
  水瓶座的表情貼:海豚角色

作者:佑佑
日常生活常見的表情用語,水瓶座的海豚擬人化方式呈現,比較親切可愛。
購買貼圖
  雙魚座的表情貼:小丑魚角色

作者:佑佑
日常生活常見的表情用語,雙魚座的小丑魚擬人化方式呈現,比較親切可愛。
購買貼圖