【文章內(nèi)容簡(jiǎn)介】
圖書(shū)歸還 逾期清單 圖書(shū)罰款 讀者管理 圖書(shū)管理 圖書(shū)流通管理 第 9 頁(yè) 共 23 頁(yè) 添加一個(gè)窗體,這個(gè)窗體共由 1個(gè) form 控件、 4個(gè) label 控件、 3 個(gè) textbox控件和 2 個(gè) button 控件組成。窗體運(yùn)行效果如圖所示。 圖 9 系統(tǒng)登陸窗體 主要代碼設(shè)計(jì): // 39。判斷用戶(hù)輸入密碼的合法性 If () = () _ And UserPwd Then 39。合法用戶(hù) 39。 bResult = True 39。UserName = () 39。() Dim frmlogin As New frmMain () () Else 39。密碼錯(cuò)誤 bResult = False (請(qǐng)確認(rèn)你的用戶(hù)名或密碼是否正確 ) End If End Sub ?? ?? ?? ?? 在該窗體加載時(shí)候進(jìn)行數(shù)據(jù)庫(kù)的連接輸入編號(hào),如果編號(hào)正確,自動(dòng)加載姓名,然后輸入用戶(hù)密碼。如果密碼正確進(jìn)入系統(tǒng)主窗體控件。如果密碼不正確,提示密碼錯(cuò)誤。 主窗體的設(shè)計(jì) 本窗體主要是由讀者管理、圖書(shū)管理、流通管理和退出系統(tǒng)等幾個(gè)菜單控件組成。選擇主菜單中的各菜單項(xiàng)即可 進(jìn)入相應(yīng)的功能模塊。 主窗體名為 frmMain,窗體運(yùn)行效果如圖 10所示。 第 10 頁(yè) 共 23 頁(yè) 圖 10 系統(tǒng)主窗體 創(chuàng)建數(shù)據(jù)訪問(wèn)模塊 因?yàn)楦鱾€(gè)窗體均需要對(duì)數(shù)據(jù)庫(kù)進(jìn)行訪問(wèn),可以把數(shù)據(jù)庫(kù)的一些操作通過(guò)一個(gè)類(lèi)實(shí)現(xiàn),這樣就可以使對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)更加簡(jiǎn)單。添加一個(gè)名為“ ”的類(lèi)文件。主要代碼設(shè)計(jì): Public Class DataBase 39。實(shí)現(xiàn)接口 IDisposable Implements IDisposable 39。數(shù)據(jù)庫(kù)連接對(duì)象 Private SqlConn As SqlConnection Public Shared sConn As String = Persist Security Info=False。Integrated Security=SSPI。database=libbook。server=本機(jī)數(shù)據(jù)庫(kù)服務(wù)器名稱(chēng) 。Connect Timeout=30 ?? ?? ?? ?? Public Sub Open() If SqlConn Is Nothing = True Then 39。建立數(shù)據(jù)庫(kù)連接對(duì)象 SqlConn = New SqlConnection() 39。打開(kāi)數(shù)據(jù)庫(kù)連接 () End If End Sub Public Sub Close() 39。如果數(shù)據(jù)庫(kù)連接對(duì)象不為空則關(guān)閉數(shù)據(jù)庫(kù)連接 If SqlConn Is Nothing = False Then () 第 11 頁(yè) 共 23 頁(yè) End If End Sub 創(chuàng)建數(shù)據(jù)操作窗體的父類(lèi)窗體 因?yàn)橄到y(tǒng)中所有對(duì)數(shù)據(jù)庫(kù)表進(jìn)行維護(hù)的窗體界面及實(shí)現(xiàn)的功能大體都是一致的,可以把這些共同的部分抽取出來(lái),生成一個(gè)父類(lèi)窗體,其他數(shù)據(jù)庫(kù)操作窗體均可以通過(guò)繼承父類(lèi)窗體獲得數(shù)據(jù)維護(hù)的功能。添加控件后窗體如圖 11 所示。 圖 11 基礎(chǔ)窗體 主要代碼設(shè)計(jì): Case 首記錄 39。返回首記錄 = 0 ?? ?? ?? ?? Case 刪除 39。彈出詢(xún)問(wèn)對(duì)話(huà)框 Dim dlgResult As DialogResult = _ (你確認(rèn)刪除此數(shù)據(jù)? , _ 刪除 , ) If dlgResult = Then DeleteData() End If Case 保存 SetToolBarState(True) SetTextBoxState(True) If bAdd = True Then 39。為新增數(shù)據(jù)保存 SaveForAdd() Else 第 12 頁(yè) 共 23 頁(yè) 39。為更新數(shù)據(jù)保存 SaveForUpdate() End If = True Case 取消 SetTextBoxState(True) SetToolBarState(True) = True SearchResult() Case 退出 39。關(guān)閉本窗體 () End Select ?? ?? ?? ?? 讀者類(lèi)別設(shè)置模塊 本窗體首先顯示全部的讀者類(lèi)型。它實(shí)現(xiàn)對(duì)讀者類(lèi)別的管理,如添加、修改、刪除等操作。也可以對(duì)輸入的類(lèi)型進(jìn)行搜索操作。當(dāng)單擊“添加”或者“修改”按扭時(shí),激活“保存”和“取消”按扭??梢园压芾韱T對(duì)讀者類(lèi) 型表中各條信息所做的操作進(jìn)行保存或者取消保存。修改和保存過(guò)后的數(shù)據(jù)直接保存到數(shù)據(jù)庫(kù),窗體運(yùn)行效果如圖 12 所示。 圖 12 讀者類(lèi)別設(shè)置功能窗體 主要代碼實(shí)現(xiàn)如下: Dim dr As DataRow = (讀者類(lèi)型 ).NewRow() Try dr(類(lèi)型 ) = dr(圖書(shū)冊(cè)書(shū) ) = dr(續(xù)借次 數(shù) ) = 第 13 頁(yè) 共 23 頁(yè) dr(限制圖書(shū) ) = Catch ex As Exception 讀者檔案管理功能模塊 本窗體功能和讀者類(lèi)別設(shè)置模塊的功能幾乎一致,只不過(guò)這里是對(duì)讀者檔案的設(shè)置信息。同樣具有添加,修改,刪除以及保存和取消保存的功能。窗體運(yùn)行效果如圖 13所 示。 圖 13 讀者檔案管理功能窗體 主要代碼的設(shè)計(jì)如下: Public Overrides Sub Prepare() = 讀者檔案管理 = 條形碼 = 編號(hào) = 姓名 Dim db As DataBase = New DataBase Dim dv As DataView = _ (select 類(lèi)型 from 讀者類(lèi)型 ) 圖 書(shū)類(lèi)別設(shè)置的功能模塊 本窗體功能和讀者類(lèi)別設(shè)置模塊的功能一樣,只不過(guò)這里是對(duì)圖書(shū)的類(lèi)別的設(shè)置信息。同樣具有搜索,添加,修改,刪除以及保存和取消保存的功能。窗體運(yùn)行效果如圖 14所示。 圖 14圖書(shū)類(lèi)別設(shè)置功能窗體 第 14 頁(yè) 共 23 頁(yè) 主要代碼實(shí)現(xiàn)如下: ?? ?? ?? ?? Dim dr As DataRow = (圖書(shū)類(lèi)型 ).NewRow() Try dr(類(lèi)型編號(hào) ) = dr(類(lèi)型名 稱(chēng) ) = () Dim iDays As Integer = CInt() dr(可借天數(shù) ) = Catch ex As Exception (數(shù)據(jù)格式不正確! ) Exit Sub ?? ?? ?? ?? 圖書(shū)檔案管理的功能模塊 本窗體功能和讀者檔案管理模塊的功能一樣,只不過(guò)這里是對(duì)圖書(shū)檔案的設(shè)置信息。同樣具有添加,修改,刪除以及保存和取消保存的功能。窗體運(yùn)行效果如圖 15所示。 圖 15圖書(shū)檔案管理功能窗體 主要代碼實(shí)現(xiàn)如下: ?? ?? ?? ?? Public Overrides Sub Prepare() = 圖書(shū)檔案管理 = 條形碼 = 編號(hào) = 書(shū)名 Dim db As DataBase = New DataBase Dim dv As DataView = _ 第 15 頁(yè) 共 23 頁(yè) (select 類(lèi)型名稱(chēng) from 圖書(shū)類(lèi)型 ) For Each dr As DataRow In (dr(0).) Next dv = (select 出版社名稱(chēng) from 出版社 ) For Each dr As DataRow In (dr(0).) Next dv = (select 書(shū)架名稱(chēng) from 書(shū)架 ) For Each dr As DataRow In (dr(0).) Next ?? ?? ?? ?? 圖書(shū)征訂的功能模塊 完成圖書(shū)館對(duì)圖書(shū)的征訂和提交征訂的功能,同樣具有對(duì)征訂的信息進(jìn)行添加、修改、刪除以及保存和取消保存的功能。這里的“提交征訂(驗(yàn)收)”按扭。當(dāng)單擊它時(shí)系統(tǒng)調(diào)用“ sf_圖書(shū)征訂”存儲(chǔ)過(guò)程,增加圖書(shū)的在庫(kù)數(shù)量,并將“是否驗(yàn)收”字段設(shè)置為 1,表示 征訂記錄已經(jīng)驗(yàn)收。征訂編號(hào)為系統(tǒng)自動(dòng)生成,輸入圖書(shū)編號(hào)自動(dòng)顯示出圖書(shū)的名稱(chēng),圖書(shū)名稱(chēng)項(xiàng)文本框不可以用,此時(shí)的“搜索”圖標(biāo)也為可用狀態(tài),單擊搜索圖標(biāo)顯示出所有圖書(shū)的信息表,雙擊任意一條圖書(shū)消息即可選定它為要征訂的圖書(shū)。窗體運(yùn)行效果如圖 16所示。 圖 16 圖書(shū)征訂功能窗體 主要代碼設(shè)計(jì)如下: Public Overrides Sub LoadData() 39。清空 DataSet11 () = 第 16 頁(yè) 共 23 頁(yè) Dim strSQL As String If = 0 Then strFilter = where 是否驗(yàn)收 = 0 Else strFilter = and 是否驗(yàn)收 = 0 End If _ = select * from 圖書(shū)征訂 + strFilter 39。根據(jù)查詢(xún)條件重新填充 DataSet11 (DataSet11) dtData = (圖書(shū)征訂 ) If (圖書(shū)名稱(chēng) ) = 1 Then (圖書(shū)名稱(chēng) ) End If 39。為圖書(shū)名稱(chēng)設(shè)置數(shù)據(jù) SetBookName() bmData = (DataSet11, 圖書(shū)征訂 ) If 0 Then = 0 End If End Sub ?? ?? ?? ?? 圖書(shū)借閱的功能模塊 該功能完成對(duì)圖書(shū)的借閱。此功能支持條碼借閱圖書(shū)。讀者選擇 和圖書(shū)選擇可以支持編碼和條碼輸入,默認(rèn)是編碼,在“讀者信息”編輯框中輸入編碼,回車(chē)后系統(tǒng)自動(dòng)列出該讀者的姓名、類(lèi)型及已經(jīng)借閱還未歸還的圖書(shū)清單,并且光標(biāo)跳到“借閱圖書(shū)信息”編輯框;在“圖書(shū)借閱信息”編輯框中輸入圖書(shū)編號(hào)或者條碼,