Access數據庫應用實例——圖書借閱管理系統
本“圖書借閱管理系統”是以實現圖書館借閱工作系統化為目的和背景而設計開發(fā)的一個簡單系統。
圖書借閱管理系統主要實現對圖書館工作的信息化管理。本系統實現了對圖書的基本信息和會員(圖書借閱者)的基本信息的登記、保存、統計和查詢等功能,另外還對會員的借閱信息進行了登記、保存、統計并能查詢,同時實現了對圖書的數據化管理。很大程度上實現了圖書館圖書借閱工作的信息化管理。
一、系統總體分析與設計
根據圖書館借閱場景中為方便圖書管理人員工作的需求,“圖書借閱管理系統”可以分為對圖書的管理、對會員的管理、對借閱過程的管理和對系統的維護等幾方面。
以實現上述需求為目標,經過全面分析,我們可以初步將整個系統劃分為“數據管理”、“借閱管理”、“數據查詢”、“每日統計”和“系統維護”五個子模塊,通過分別實現各個子模塊的功能來實現整個系統的整體功能。
各模塊功能如下:
將上述模塊設計圖示化后我們便可以得到如圖1所示的系統功能模塊圖:
圖1 系統功能模塊圖
二、數據庫分析與設計
1.數據庫數據結構分析
通過對圖書借閱管理的內容和數據分析,創(chuàng)建該管理系統數據庫,名為“圖書借閱管理系統 .mdb”,主要包含的數據表有“會員表”、“會員級別表”、“圖書表”、“圖書類別表”、“圖書借閱表”共五個表。這五個表之間存在著一定的關聯關系,各表間的關系如圖2所示:
圖2 系統中各表間關系圖
2.數據庫邏輯結構設計
“圖書借閱管理系統”的各個數據庫表結構設計如表1~表5所示:
表1 “會員表”表結構
字段名 | 數據類型 | 字段大小 | 格式 | 主鍵 | 必填字段 |
會員證編號 | 文本 | 12 |
| 是 | 是 |
會員級別 | 文本 | 8 |
|
| 是 |
會員姓名 | 文本 | 8 |
|
| 是 |
會員性別 | 文本 | 2 |
|
| 是 |
身份證號 | 文本 | 18 |
|
| 是 |
單位名稱 | 文本 | 50 |
|
| 否 |
單位地址 | 文本 | 50 |
|
| 否 |
聯系電話 | 文本 | 15 |
|
| 否 |
辦證日期 | 日期/時間 |
| 短日期 |
| 是 |
有效日期 | 日期/時間 |
| 短日期 |
| 否 |
照片 | OLE 對象 |
|
|
| 否 |
備注 | 備注 |
|
|
| 否 |
表2 “會員級別表”表結構
字段名 | 數據類型 | 字段大小 | 格式 | 主鍵 | 必填字段 |
會員級別 | 文本 | 8 |
| 是 | 是 |
限借冊數 | 數字 | 整型 |
|
| 是 |
表3 “圖書表”表結構
字段名 | 數據類型 | 字段大小 | 格式 | 主鍵 | 必填字段 |
圖書編號 | 文本 | 7 |
| 是 | 是 |
圖書分類號 | 文本 | 30 |
|
| 是 |
圖書類別 | 文本 | 30 |
|
| 是 |
書名 | 文本 | 50 |
|
| 是 |
作者 | 文本 | 50 |
|
| 是 |
出版社 | 文本 | 30 |
|
| 是 |
出版日期 | 日期/時間 |
| 短日期 |
| 是 |
價格 | 數字 | 雙精度型 | 貨幣 |
| 是 |
存放位置 | 文本 | 50 |
|
| 是 |
入庫時間 | 日期/時間 |
| 短日期 |
| 是 |
庫存總數 | 數字 | 整型 |
|
| 是 |
在庫數量 | 數字 | 整型 |
|
| 是 |
借出數量 | 數字 | 整型 |
|
| 是 |
新書入庫 | 數字 | 整型 |
|
| 否 |
舊書出庫 | 數字 | 整型 |
|
| 否 |
借出次數 | 數字 | 整型 |
|
| 是 |
備注 | 備注 |
|
|
| 否 |
表4 “圖書類別表”表結構
字段名 | 數據類型 | 字段大小 | 格式 | 主鍵 | 必填字段 |
圖書類別 | 文本 | 30 |
| 是 | 是 |
限借天數 | 數字 | 整型 |
|
| 是 |
超期罰款/天 | 數字 | 雙精度型 | 貨幣 |
| 是 |
表5 “圖書借閱表”表結構
字段名 | 數據類型 | 字段大小 | 格式 | 主鍵 | 必填字段 | 默認值 |
借閱編號 | 自動編號 | 長整型 |
| 是 |
|
|
圖書編號 | 文本 | 7 |
|
| 是 |
|
會員證編號 | 文本 | 12 |
|
| 是 |
|
借閱日期 | 日期/時間 |
| 短日期 |
| 是 |
|
還書日期 | 日期/時間 |
| 短日期 |
| 否 |
|
罰款已繳 | 文本 | 2 |
|
| 是 | “否” |
備注 | 備注 |
|
|
| 否 |
|
3.創(chuàng)建數據庫和表
在數據庫數據結構分析和數據庫邏輯結構設計完成之后,接下來便可以用Access來創(chuàng)建數據庫。一般步驟是首先創(chuàng)建數據庫,再創(chuàng)建數據表,最后建立表間關系。
(1)創(chuàng)建數據庫的操作步驟:首先啟動Microsoft Access 2003,通過“文件”菜單中的“新建”命令,創(chuàng)建一個名為“圖書借閱管理系統 .mdb”的數據庫,如圖3所示:
圖3 “新建數據庫”文件對話框
(2)創(chuàng)建表:在數據庫“圖書借閱管理系統 .mdb”中通過“使用設計器創(chuàng)建表”如圖4所示,分別創(chuàng)建“會員表”、“會員級別表”、“圖書表”、“圖書類別表”和“圖書借閱表”,各表結構如表1~表5所示。其中“圖書表”表的設計視圖如圖5所示:
圖4 新建“表”對象
用同樣的方法在表設計視圖中可以分別創(chuàng)建“會員表”、“會員級別表”、“圖書類別表”和“圖書借閱表”。
(3)建立表間關系:單擊“工具”菜單的“關系”按鈕
至此,已完成了數據庫結構的分析設計和表結構的創(chuàng)建。在各個表中輸入相關記錄,如圖6~圖10所示:
圖5 “圖書表”結構
圖6 會員表信息
圖7 會員級別表信息 圖8 圖書類別表信息
圖9 圖書表信息
圖10 圖書借閱表信息
三、查詢的設計與實現
在本圖書借閱管理系統中,要用到大量的查詢功能。Access 2003提供了5種查詢:選擇查詢、參數查詢、交叉表查詢、操作查詢和SOL查詢。
其中操作查詢又包括生成表查詢、更新查詢、追加查詢和刪除查詢4種查詢。
該圖書借閱管理系統中主要用到了選擇查詢、操作查詢的更新查詢和追加查詢,下邊我們以實例主要說明一下這幾種查詢在本系統中的實現方法與過程。
分析:在實際圖書館圖書借閱過程中,會員(借閱者)或者圖書館管理員經常需要對圖書借閱情況進行查詢,比如查看某本書是否已歸還、某人是否未按期歸還圖書、某本書是否已到歸還期或是某本書是否忘記歸還了等等。為了解決上述這些問題,我們就需要設置一些相應的查詢(一般都是以“選擇查詢”為居多)。這些查詢能有效地幫我們解決這些問題。
步驟:(以“圖書借閱超期查詢”為例)
第一步:選擇“在設計視圖中創(chuàng)建查詢”。(見圖11)
圖11
第二步:分別添加“會員表”、“圖書表”、“圖書借閱表”和“圖書類別表”。(見圖12)
見圖12
第三步:選擇“圖書表”中的“圖書編號”、“書名”、“作者”、“圖書類別”;“會員表”中的“會員證編號”、“會員姓名”、“會員級別”;“圖書借閱表”中的“借閱日期”、“還書日期”字段,然后再設立2個新字段——“超期天數”和“應還日期”。這兩個新字段是原表中沒有的,它們是以原表的部分字段為數據基礎,通過數學表達式計算得出的新數據所組成的。(表達式的寫入可以通過單擊工具欄上的“生成器”按鈕
下邊給出這兩個新字段的數學表達式:(1)超期天數: Date ()-[借閱日期]-[限借天數];(2)應還日期: [借閱日期] [限借天數]。
圖13
圖14
第四步:保存查詢。(見圖15)
圖15
第五步:運行該查詢。(見圖16)
圖16
其他選擇查詢的設計可參照“圖書借閱超期查詢”的設計來進行,如“借閱歷史記錄查詢”、“今日借出查詢”、“今日到期查詢”、“今日還書查詢”、“今日入庫查詢”、“借書查詢”、“還書查詢”、“續(xù)借查詢”、“罰款查詢”等。下邊給出上述這幾個選擇查詢的主要設計視圖供大家參考:
⑴.“借閱歷史記錄查詢”主設計視圖:(見圖17)
圖17
⑵.“今日借出查詢”主設計視圖:字段“借閱日期”須以“Date()”(當前日期)作為約束條件。(見圖18)
圖18
⑶.“今日到期查詢”主設計視圖:須通過“表達式生成器”建立新字段“應還日期”且以“Date()”為約束條件,表達式為:應還日期: [借閱日期] [限借天數]。(見圖19)
圖19
⑷.“今日還書查詢”主設計視圖:字段“還書日期”須以“Date()”作為約束條件。(見圖20)
圖20
⑸.“今日入庫查詢”主設計視圖:字段“入庫時間”須以“Date()”作為約束條件。(見圖21)
圖21
⑹.“借書查詢”主設計視圖:由于“借書查詢”、“還書查詢”、“續(xù)借查詢”、“罰款查詢”這4個選擇查詢是專門為“借書窗體”、“還書窗體”、“續(xù)借窗體”、“罰款窗體”的功能實現而量身打造的專用查詢,故其設計上有別與上述幾個一般選擇查詢。區(qū)別主要體現在在這些查詢中要設計與相應窗體中控件的功能鏈接,如大家現在在圖22——“借書查詢1”和圖23——“借書查詢2”(此處將借書查詢分為1和2兩部分也是應借書窗體的功能要求而針對設計的)中看到的“圖書編號”字段和“會員證編號”字段中的條件約束即為功能鏈接的一部分。例如“借書查詢1”中的“圖書編號”字段的條件“[Forms]![借書窗體]![Text13]”意為與“借書窗體”中的文本框“Text13”相鏈接,該條件其實起到了一個“指針”的作用(后邊幾個查詢中的相似條件約束的功能與此相同,不再多作解釋)。“借書查詢1”中的字段“在庫數量”的約束條件為“>0”,表示某本書只有在有庫存的情況下才允許借出。(見圖22~圖23)
圖22
圖23
⑺.“還書查詢”主設計視圖:“還書日期”字段的約束條件要設置為“Is Null”,表示未還的書才會被列出。(見圖24)
圖24
⑻.“續(xù)借查詢”主設計視圖:(見圖25)
圖25
⑼.“罰款查詢”主設計視圖:須設立2個新字段——“超期天數”和“罰款數額”且“超期天數”字段的約束條件為“>0”,另外“罰款繳納”字段的約束條件為“否”,表示已欠費且未繳納過罰款的會員才會被列出,未欠費或已繳納過的會員不會再被列出。下邊給出這兩個新字段的數學表達式:(1)超期天數: [還書日期]-[借閱日期]-[限借天數];(2)[Forms]![續(xù)借窗體]![Text15]。(見圖26)
圖26
分析:在“圖書借閱管理系統”中,圖書的借閱功能是該系統的核心功能,如何實現該功能便是設計該系統的核心問題。我們知道,圖書在借出、歸還、續(xù)借等過程發(fā)生后,數據表中的數據就應發(fā)生相應的改變(即更新),那么在系統中如何實現數據的自動更新或添加呢?答案是利用“操作查詢”。
步驟:(以“借書更新”和“借書追加”為例)
第一步:在設計視圖中創(chuàng)建查詢,并添加“會員表”、“圖書表”和“圖書借閱表”。
第二步:將“圖書表”中的“圖書編號”、“借出次數”、“借出數量”、“在庫數量”字段;“會員表”中的“會員證編號”字段;“圖書借閱表”中的“還書日期”字段添加進來。并將查詢類型設置為“更新查詢”(設置方法:在選中查詢窗口的情況下在“查詢設計菜單欄”中單擊“查詢類型”
圖27
圖28
第三步:對各個字段的更新條件進行設置。(如圖29)
圖中“借出次數”、“借出數量”、“在庫數量”三個字段的“更新到”一欄中的條件表示當借書操作使得某本圖書被借出時,相應數據表中的原數據應該根據這一條件更新為新數據。約束條件“<[圖書表]![庫存總數]”表示若借出數量大于等于庫存總數則數據無法更新,因為圖書已無庫存,無法借出;約束條件“>0”表示只有當該書有庫存的情況下才能借出;而字段“圖書編號”和“會員證編號”的約束條件“[Forms]![借書窗體]![Text13]”和“[Forms]![借書窗體]![Text14]”與前邊在選擇查詢中提到的條件一樣,是查詢與相應窗體中控件的功能鏈接條件。
圖29
第四步:保存該“更新查詢”。(如圖30)
圖30
第五步:再在設計視圖中創(chuàng)建查詢,并添加“會員表”、“圖書表”和“圖書借閱表”。
第六步:將查詢類型更改為“追加查詢”并將所需的字段添加進來。
第七步:對所需追加記錄的字段進行追加條件限制。(如圖31)
追加查詢與更新查詢不太一樣,它的工作原理是將“字段”中的表達式數值“追加”到相應的數據表字段中。如:對表達式3的操作即是將“Date()”(當前日期)這一新數據追加到圖書借閱表的借閱日期這一字段的數據中。至于表達式1和表達式2則是功能鏈接條件。
圖31
第八步:保存該“追加查詢”。(如圖32)
圖32
其他需用到操作查詢的查詢設計可參照“借書更新”和“借書追加”的設計來進行,如“還書更新”、“罰款更新”、“續(xù)借更新”、“續(xù)借追加”等。下邊給出上述這幾個操作查詢的主要設計視圖供大家參考:
⑴.“還書更新”主設計視圖:(見圖33)
圖33
⑵.“罰款更新”主設計視圖:(見圖34)
圖34
⑶.“續(xù)借更新”主設計視圖:(見圖35~圖36)
此處將續(xù)借功能的實現變通為以先還再借的方式來實現,故將“續(xù)借更新”分為兩塊:①先還——“續(xù)接更新1”;②再借——“續(xù)借更新2”。
圖35
圖36
⑷.“續(xù)借追加”主設計視圖:(見圖37)
圖37
四、窗體的設計與實現
窗體是Access 2003數據庫系統的一個重要對象。前面介紹的瀏覽記錄、顯示查詢結果等都是在“數據表”視圖中所進行的操作,只能用于對表的一般維護。如果要改變表記錄的顯示界面,則需要通過界面窗口來添加、修改、刪除記錄或改變應用程序控制流程,這就需要數據庫的一個重要組件——窗體。
窗體是用戶與數據之間的主要窗口,使用窗體可以對數據庫進行查詢、修改、添加和打印等操作,而且可以靈活的設計窗體的布局。窗體按其功能可以分為數據窗體、流程控制面板窗體和交互窗體。
圖38
圖39
圖40
在Access 2003數據庫中,窗體有設計視圖、窗體視圖、數據表視圖、數據透視表視圖和數據透視圖視圖5種視圖,它們之間可以通過工具欄“視圖”按鈕進行切換。(見下圖)
使用窗體的設計視圖來創(chuàng)建、修改和美化窗體,窗體的設計視圖一般由窗體頁眉/頁腳、頁面頁眉/頁腳和主體5部分組成。一般情況下,窗體的頁眉/頁腳很少用到,而主體是窗體的核心,通過在主體中添加控件可以實現對數據的管理功能。
1.使用窗體向導創(chuàng)建窗體
使用“窗體向導”可以創(chuàng)建使用“自動創(chuàng)建窗體”(“自動創(chuàng)建窗體”所創(chuàng)建的窗體較粗糙,一般在用戶對窗體效果要求不高時使用)所創(chuàng)建的5種類型的窗體,不同之處在于窗體中的數據可以來源于一個或多個表與查詢。在使用“窗體向導”創(chuàng)建窗體時,可以重新設置字段的排列順序。
下面我們以創(chuàng)建“會員基本信息管理窗體”為例說明一下利用“窗體向導”來創(chuàng)建窗體的過程。
第一步:雙擊“使用向導創(chuàng)建窗體”,打開窗體向導設計界面。(見圖41)
圖41
第二步:在“表/查詢”欄中選擇“表:會員表”項,并將其中要用到的字段全部添加到“選定的字段”中。(見圖42)
圖42
第三步:選擇窗體布局。Access中有“縱欄表”、“表格”、“數據表”、“兩端對齊”、“數據透視表”和“數據透視圖”6種可供選擇的布局類型,在這里我們以“兩端對齊”為例。(見圖43)
圖43
第四步:選擇窗體樣式。Access中有“國際”、“宣紙”、“工業(yè)”、“標準”、“水墨畫”和“砂巖”、“混合”、“石頭”、“藍圖”和“遠征”10種默認的可供選擇的布局類型,在這里我們以“標準”為例。(圖44)
圖44
第五步:確定窗體的標題。這一步除了指定窗體標題外,我們還可以選擇在向導設置完成后我們是要“打開窗體查看或輸入信息”還是“修改窗體設計”。由于一般情況下通過向導創(chuàng)建的窗體不可能盡善盡美,有很多地方需要做適當的添加和修改,所以我們通常都選擇“修改窗體設計”項并完成創(chuàng)建。(見圖45)
圖45
第六步:在“會員基本信息管理窗體”的設計視圖中對窗體的大小、各個字段的位置和順序進行調整,并添加“標簽”——“會員基本信息”和8個命令按鈕——“轉至上一條記錄”、“轉至最后一條記錄”、“添加記錄”、“保存記錄”等。(見圖46)
圖46
說到控件,Access的窗體設計很大程度表現在窗體控件的使用上??丶谴绑w中用于顯示數據、執(zhí)行操作命令或修飾窗體的一種對象。在窗體設計視圖窗口中,單擊工具欄上的“工具箱”按鈕
下面以“轉至下一條記錄”命令按鈕的添加為例來簡單說明一下窗體控件的使用。
(1)單擊“工具箱”中的“命令按鈕”,然后將鼠標移至窗體設計視圖界面中要添加該命令按鈕的地方單擊鼠標左鍵進行命令按鈕的添加。(如圖47)
圖47
(2)在彈出的“命令按鈕向導”窗口中選擇該按鈕所要執(zhí)行的命令或其該具備的功能。(如圖48)
圖48
(3)選擇按鈕的顯示類型。Access 支持兩種顯示方式:“文本”型和“圖片”型。我們以“圖片”型為例進行說明。(如圖49)
圖49
(4)為命令按鈕命名。(如圖50)
圖50
第七步:窗體最終效果預覽與功能驗證。(如圖51)
圖51
可用同樣方法創(chuàng)建“會員級別設置窗體”、“圖書基本信息管理窗體”、“圖書類別設置窗體”等窗體。下邊列出上述幾個窗體的主要設計視圖:
⑴.“會員級別設置窗體”設計視圖:(如圖52)
圖52
⑵.“圖書基本信息管理窗體”設計視圖:(如圖53)
圖53
⑶.“圖書類別設置窗體”設計視圖:(如圖54)
圖54
2.使用窗體設計視圖創(chuàng)建窗體
利用設計視圖創(chuàng)建窗體隨意性很大,你可以完全按照自己的想法或用戶具體的需求有針對性的進行窗體設計。
下面我們以“還書窗體”為例來對運用設計視圖創(chuàng)建窗體的過程步驟進行說明。
第一步:雙擊“在設計視圖中創(chuàng)建窗體”,打開窗體視圖設計界面。(見圖55)
圖55
第二步:調整窗體“主體”大小到所需的值。(見圖56)
圖56
第三步:添加所需的窗體控件。(見圖57~圖58)
①標 簽——“還書”標簽(Label0);
②文 本 框——“會員證編號”文本框(Text11)和“圖書編號”文本框(Text12);
③命令按鈕——“確定”按鈕(Command11)和“還書”按鈕(Command12);
④子 窗 體——“還書子窗體”窗體(Child15)。
圖57
圖58
其中“還書子窗體”窗體只是對“還書查詢”查詢(已在前邊查詢的設計與實現部分介紹過)的窗體化,即“還書子窗體”的記錄源是“還書查詢”?!斑€書子窗體”的主要設計視圖如圖59。
圖59
第四步:設置各控件的數據連接或事件過程。(見圖60~圖65)
①“子窗體”控件的數據源對象為“還書子窗體”。(見圖60)
圖60
②“還書子窗體”的數據記錄源為“還書查詢”。(見圖61)
圖61
③“確定”命令按鈕的“單擊”事件過程為一組代碼(見圖62~圖63),其功能為調用“還書”查詢中與窗體控件“會員證編號”文本框和“圖書編號”文本框中所輸入號碼相符的號碼所具有的相關數據信息。
“確定”命令按鈕(Command11)代碼:Private Sub Command11_Click()
Me.還書子窗體.Requery
End Sub
圖62
圖63
④“還書”命令按鈕的“單擊”事件過程是調用宏“還書更新宏”?!斑€書更新宏”通過執(zhí)行“還書更新”查詢來實現圖書還書功能。(見圖64~圖65)
圖64
圖65
第五步:保存“還書窗體”。(見圖66)
圖66
第六步:窗體最終效果預覽與功能驗證。(見圖67)
圖67
其他類似窗體有“借書窗體”、“續(xù)借窗體”、“罰款窗體”、“圖書查詢窗體”、“會員查詢窗體”、“借閱超期查詢窗體”、“借閱記錄查詢窗體”等,其窗體設計可以參照上述“還書窗體”的例子進行創(chuàng)建。下邊給出了這幾個窗體的主要設計視圖供大家參考:
⑴.“借書窗體”主要設計視圖:(如圖68~圖71)
圖68 “借書窗體”設計視圖
圖69 “借書子窗體1”設計視圖
圖70 “借書子窗體2”設計視圖
其中兩個“確定”命令按鈕的代碼為:Private Sub Command13_Click()
Me.借書子窗體1.Requery
End Sub
Private Sub Command14_Click()
Me.借書子窗體2.Requery
End Sub
“借出”命令按鈕的“單擊”事件為調用宏“借書更新宏”,見圖71。(關于“宏”的創(chuàng)建將會在后邊專門介紹)
圖71
⑵.“續(xù)借窗體”主要設計視圖:(如圖72~圖74)
圖72 “續(xù)借窗體”設計視圖
圖73 “續(xù)借子窗體”設計視圖
其中“確定”命令按鈕的代碼為:Private Sub Command17_Click()
Me.續(xù)借子窗體.Requery
End Sub
“續(xù)借”命令按鈕的“單擊”事件為調用宏“續(xù)借更新宏”,見圖74。
圖74
⑶.“罰款窗體”主要設計視圖:(如圖75~圖77)
圖75 “罰款窗體”設計視圖
圖76 “罰款子窗體”設計視圖
其中“確定”命令按鈕的代碼為:Private Sub Command19_Click()
Me.罰款子窗體.Requery
End Sub
“繳納”命令按鈕的“單擊”事件為調用宏“罰款繳納宏”,見圖77。
圖77
⑷.“圖書查詢窗體”主要設計視圖:(如圖78~圖79)
圖78 “圖書查詢窗體”設計視圖
圖79 “圖書查詢窗體子窗體”設計視圖
其中“確定”命令按鈕的代碼為:Private Sub Command5_Click()
Me.圖書查詢窗體子窗體.Form.RecordSource = 'select * from 圖書表 where ' Combo1 '='' Text3 '''
End Sub
⑸.“會員查詢窗體”主要設計視圖:(如圖80~圖81)
圖80 “會員查詢窗體”設計視圖
圖81 “會員查詢窗體子窗體”設計視圖
其中“確定”命令按鈕的代碼為:Private Sub Command6_Click()
Me.會員查詢窗體子窗體.Form.RecordSource = 'select * from 會員表 where ' Combo2 '='' Text4 '''
End Sub
⑹.“借閱超期查詢窗體”主要設計視圖:(如圖82~圖83)
圖82 “借閱超期查詢窗體”設計視圖
圖83 “借閱超期查詢窗體子窗體”設計視圖
其中“確定”命令按鈕的代碼為:Private Sub Command7_Click()
Me.超期查詢窗體子窗體.Form.RecordSource = 'select * from 圖書借閱超期查詢 where ' Combo3 '='' Text5 '''
End Sub
⑺.“借閱記錄查詢窗體”主要設計視圖:(如圖84~圖85)
圖84 “借閱記錄查詢窗體”設計視圖
圖85 “借閱記錄查詢窗體子窗體”設計視圖
其中“確定”命令按鈕的代碼為:Private Sub Command10_Click()
Me.借閱歷史記錄.Form.RecordSource = 'select * from 借閱歷史記錄查詢 where ' Combo10 '='' Text10 '''
End Sub
五、報表的制作
在Access數據庫中,系統為創(chuàng)建報表提供了方便的向導功能,你可以利用“報表向導”和“自動創(chuàng)建報表”來快速創(chuàng)建報表,當然你也可以 “在設計視圖中創(chuàng)建報表”。
如果你對報表沒有特殊的要求,使用自動創(chuàng)建報表可以快速創(chuàng)建一個報表,但報表的數據源必須是來自一個表或者查詢,且自動創(chuàng)建出來的報表比較粗糙,甚至會出現部分字段因位置過于靠近而無法全部顯現的情況;如果直接在設計視圖中創(chuàng)建報表,雖然能作出很好的效果,但所花費的時間和精力會相對較多,所以這兩種方法一般用的較少,我們通常都是利用報表向導來創(chuàng)建報表。
下面來說明一下利用向導創(chuàng)建報表具體步驟:(以“今日到期統計”報表為例)
第一步:“新建”報表,選擇“報表向導”并確定。(見圖86)
圖86
第二步:在“表/查詢”中選擇“查詢:今日到期查詢”。(見圖87)
圖87
第三步:在“今日到期查詢”的“可用字段”中選取需在報表中顯示出來的字段,將其添加到“選定的字段”欄中并單擊“下一步”。(見圖88~圖89)
圖88
圖89
第四步:添加分組級別,并在“分組選項”里設置“分組間隔”?!胺纸M間隔”中有多種分類選項,可根據具體情況進行選擇,在這里我們選擇“普通”即可。(見圖90)
圖90
第五步:對字段進行記錄排序。Access最多支持對四個字段的排序,既可以升序排序也可以降序排序。(見圖91)
圖91
第六步:確定報表的布局方式。報表的布局方式分為2大塊——“布局”和“方向”。在本例里由于顯示字段較多,所以我們選擇“布局”為“分級顯示2”、“方向”為“橫向”,并選中“調整字段寬度使所有字段都能顯示在一頁中”選項。(見圖92)
圖92
第七步:確定報表所采用的樣式。Access數據庫自帶的報表版本樣式有6中:大膽、正式、淡灰、緊湊、組織和隨意。在這里我們選用“正式”類型的即可。(見圖93)
圖93
第八步:確定報表的標題。這一步除了指定報表標題外,我們還可以選擇在向導設置完成后我們是要“預覽報表”還是“修改報表設計”。由于一般情況下通過向導創(chuàng)建的報表不可能盡善盡美,有很多地方需要做適當的調整,所以我們通常都選擇“修改報表設計”項并完成創(chuàng)建。(見圖94)
圖94
第九步:在打開的設計視圖窗口中對報表做相應的微調并保存。(見圖95)
圖95
第十步:最終報表預覽。(見圖96)
圖96
其他報表的設計可以參照“今日到期統計”報表進行,如“今日還書統計”、“今日借出統計”、“今日入庫統計”等。下邊給出了上述這幾個報表設計的主要設計視圖:
⑴.“今日還書統計”主設計視圖:(見圖97)
圖97
⑵.“今日借出統計”主設計視圖:(見圖98)
圖98
⑶.“今日入庫統計”主設計視圖:(見圖99)
圖99
六、宏與系統菜單的設計
宏是Access中執(zhí)行特定任務的操作或操作集合,其中每個操作能夠實現特定的功能。宏可以包含一個或多個宏命令,也可以是由幾個宏組成的宏組。
在Access中宏的使用是很方便的,你不需要記住各種語法,也不需要編程,只需要使用幾個簡單的宏操作就可以將已經創(chuàng)建的數據庫對象聯系在一起,實現特定的功能。Access定義了許多宏操作,這些宏操作可以完成以下功能:
創(chuàng)建宏的操作是在設計視圖中完成的。創(chuàng)建宏的操作包括確定宏名、設置宏條件、選擇宏操作、設置宏參數等。
1.簡單宏設計
首先,我們以本系統中的“密碼驗證窗體”的“密碼驗證宏”的設計創(chuàng)建來對宏功能的應用做一個簡單的介紹:
第一步:設計創(chuàng)建一個“密碼驗證”窗體。(見圖100)
圖100
消息:“密碼錯誤”
密碼正確,打開“主控面板”窗體
圖101
第三步:保存該“密碼驗證”宏并將其與“確定”命令按鈕做連接。(見圖102)
圖102
第四步:運行該宏。打開“密碼驗證”窗體,若輸入一個錯誤密碼(如:123)則會彈出“錯誤密碼消息提示框”并無法進入系統;若輸入的密碼正確(123456),則進入系統。(見圖103)
圖103
本“圖書借閱管理系統”中會用到較多的這種控件控制宏(比如在前邊窗體的創(chuàng)建設計中介紹到的命令按鈕調用宏),都可以仿照該“密碼驗證”宏的設計來制作完成。
另外,本系統的各系統控制面板窗體之間的切換功能也是運用許多簡單宏來實現的。下邊以一個具體例子(“借閱管理”控制面板的設計制作)來說明:
第一步:創(chuàng)建一個“借閱管理”窗體,添加一個內含五個切換按鈕的選項組。(如圖104)
內含5個切換按鈕的選項組。
圖104
第二步:在各切換按鈕的“事件”屬性的“鼠標按下”屬性中添加相應的功能宏(以“借書”和“返回”切換按鈕為例)。(見圖105~圖108)
圖105
圖106
圖107
圖108
第三步:保存以上設置并進行調試運行。
其他各系統控制面板窗體調用宏可完全依照上述例子來創(chuàng)建,下邊給出其中幾個實例視圖(見圖109~圖111):
圖109 “每日統計”控制面板窗體調用宏
圖110 “系統維護_數據維護”控制面板窗體調用宏
圖111 “系統維護”控制面板窗體調用宏
2.系統菜單宏設計
一個完整的數據庫管理系統必須要有一個菜單欄,把數據庫的各個對象連接起來。這樣,用戶既可以通過窗體對應用程序的各個模塊進行操作,也可以通過菜單進行操作。
創(chuàng)建應用程序的系統菜單可以通過創(chuàng)建宏的方法來創(chuàng)建。表6列出了“圖書借閱管理系統”的菜單欄及菜單項。
表6
菜單欄名稱(宏組) | 菜單項(宏名) | 宏操作 | 對象名稱 | 視圖 | |
數據管理 | 圖書管理 | 圖書基本信息管理 | OpenForm | 圖書基本信息管理窗體 | 窗體 |
|
| 圖書類別設置 | OpenForm | 圖書類別設置窗體 | 窗體 |
| 會員管理 | 會員基本信息管理 | OpenForm | 會員基本信息管理窗體 | 窗體 |
|
| 會員級別設置 | OpenForm | 會員級別設置窗體 | 窗體 |
| 返回 | Close | 數據管理 | 窗體 | |
借閱管理 | 借書 | OpenForm | 借書窗體 | 窗體 | |
| 還書 | OpenForm | 還書窗體 | 窗體 | |
| 續(xù)借 | OpenForm | 續(xù)借窗體 | 窗體 | |
| 罰款繳納 | OpenForm | 罰款窗體 | 窗體 | |
| 返回 | Close | 借閱管理 | 窗體 | |
數據查詢 | 圖書查詢 | OpenForm | 圖書查詢窗體 | 窗體 | |
| 會員查詢 | OpenForm | 會員查詢窗體 | 窗體 | |
| 借閱超期查詢 | OpenForm | 超期查詢窗體 | 窗體 | |
| 借閱記錄查詢 | OpenForm | 借閱歷史記錄窗體 | 窗體 | |
| 返回 | Close | 數據查詢 | 窗體 | |
每日統計 | 今日借出 | OpenReport | 今日借出統計 | 報表(打印預覽) | |
| 今日到期 | OpenReport | 今日到期統計 | 報表(打印預覽) | |
| 今日還書 | OpenReport | 今日還書統計 | 報表(打印預覽) | |
| 今日入庫 | OpenReport | 今日入庫統計 | 報表(打印預覽) | |
| 返回 | Close | 每日統計 | 窗體 | |
系統維護 | 數據維護 | 圖書表數據維護 | OpenTable | 圖書表 | 數據表 |
|
| 圖書類別表數據維護 | OpenTable | 圖書類別表 | 數據表 |
|
| 會員表數據維護 | OpenTable | 會員表 | 數據表 |
|
| 會員級別表數據維護 | OpenTable | 會員級別表 | 數據表 |
|
| 圖書借閱表數據維護 | OpenTable | 圖書借閱表 | 數據表 |
| 數據備份 | CopyObject | (相應的表、查詢、窗體等) | (可以為表、查詢、窗體等) | |
| 備份還原 | TransferDatabase | (相應的表、查詢、窗體等) | (可以為表、查詢、窗體等) | |
| 返回 | Close | 系統維護 | 窗體 | |
退出系統 | 退出系統 | Quit |
|
|
各宏組創(chuàng)建完成后,還要創(chuàng)建一個名為“系統菜單”的宏,將各個下拉菜單組合到菜單欄中。宏“系統菜單”的設計如圖(112)所示:
圖112
“系統菜單”宏創(chuàng)建完成后需要生成“系統菜單欄”。生成過程如下:首先,選中“系統菜單”宏;然后,點擊菜單欄中的“工具”選項,再點擊“宏”——“用宏創(chuàng)建菜單”即可。
最后,附上Access 2003常用宏命令及其功能表,以方便大家更好的學習、掌握與運用Access宏。(見表7)
表7
宏命令 | 功能 |
AddMenu | 將一個菜單項添加到窗體或報表的自定義菜單欄中,每一個菜單項都需要一個獨立的AddMenu操作 |
ApplyFilter | 篩選表、窗體或報表中的記錄 |
Beep | 產生蜂鳴聲 |
CancelEvent | 刪除當前事件 |
Close | 關閉指定窗口 |
CopyObject | 將數據庫對象復制到目標數據庫中 |
DeleteObject | 刪除指定的數據庫對象 |
Echo | 設定運行宏時是否顯示宏運行的結果 |
FindNext | 為FindRecord中的準則尋找下一條記錄,通常在宏中選擇宏操作FindRecord,再使用宏操作FindNext,可以連續(xù)查找符合相同準則的記錄 |
FindRecord | 在表中查找第一條符合準則的記錄 |
GoToControl | 將光標移到指定的對象上 |
GoToPage | 將光標翻到窗體中指定頁的第一個控件位置 |
GoToRecord | 將光標移到指定記錄上 |
Hourglass | 設定在宏執(zhí)行時鼠標指針是否顯示Windows等待時的操作光標 |
Maximize | 將當前活動窗口最大化以充滿整個Access窗口 |
Minimize | 將當前活動窗口最小化成任務欄中的一個按鈕 |
MoveSize | 調整當前窗口的位置和大小 |
MsgBox | 顯示一個消息框 |
OpenDataAccessPage | 打開指定的數據庫訪問頁 |
OpenDiagram | 打開指定的數據庫訪圖表 |
OpenForm | 打開指定的窗體 |
OpenFunction | 在數據表視圖、設計視圖、打印預覽中打開一個用戶定義的函數 |
OpenModule | 打開指定的VB模塊 |
OpenQuery | 打開指定的查詢 |
OpenReport | 打開指定的報表 |
OpenStoredProcedure | 打開指定的存儲過程 |
OpenTable | 打開指定的表 |
OpenView | 打開指定的視圖 |
OutputTo | 將指定的Access對象中的數據傳輸到另外格式(如.xls、.txt、.dbf)的文件中 |
PrintOut | 打印目前出與活動狀態(tài)的對象 |
Quit | 執(zhí)行該宏將退出Access |
Rename | 更改指定對象的名稱 |
RepaintObject | 刷新對象的屏幕顯示 |
Requery | 讓指定控件重新從數據源中讀取數據 |
Restore | 將最大化的窗體恢復到最大化前的狀態(tài) |
RunApp | 運行指定的應用程序 |
RunCode | 執(zhí)行指定的Access函數 |
RunCommand | 執(zhí)行指定的Access命令 |
RunMacro | 執(zhí)行指定的宏 |
RunSQL | 執(zhí)行指定SQL語句 |
Save | 保存指定的對象 |
SelectObject | 選擇指定的對象 |
SendKeys | 發(fā)送鍵盤消息給當前活動的模塊 |
SendObject | 將制定的Access對象作為電子郵件發(fā)送給收件人 |
SetMenuItem | 設定自定義菜單中命令的狀態(tài) |
SetValue | 設定當前對象的值 |
SetWarnings | 設定是否適用系統的警告信息 |
ShowAllRecords | 關閉所有查詢,顯示所有的記錄 |
ShowToolbar | 設置顯示或隱藏內置工具欄或自定義工具欄 |
StopAllMacros | 終止所有正在運行的宏的運行 |
StopMacros | 終止當前正在運行的宏的運行 |
TransferDatabase | 進行數據庫之間的數據傳遞 |
TransferSpreadsheet | 與電子表格文件之間進行數據的傳遞 |
TransferText | 與文本文件之間進行數據的傳遞 |
七、結束語
至此,本“圖書借閱管理系統”的主要功能已基本設計完成并實現,但還有很多不成熟、不完善的地方。由于時間和能力有限本系統只完成了基本的功能部分,一些較為實用的功能還為來及完善(例如:(1)罰款查詢及繳納系統中的罰款來源應該包括“圖書借閱超期罰款 ”和“圖書損毀賠償罰款”這兩部分,但是由于當時時間方面的限制故只選作了“圖書借閱超期罰款”部分而放棄了“圖書損毀賠償罰款”部分的制作,其實“圖書損毀賠償罰款”部分的設計制作相對于“圖書損毀賠償罰款”部分要更簡單一些,感興趣的同學可以自己設計制作一下;(2)對于一個圖書借閱系統來說,對于“誠信會員”和“問題會員”應該有一套相應的獎罰措施系統,但是由于本人能力有限而未能做出,感興趣的同學也可以嘗試設計制作一下),美工方面也較差。
當然,雖然本系統存在很多的問題,但還是有一定的教學參考價值,希望能在大家的學習過程中對大家的學習起到一定的幫助作用,還請大家多提寶貴意見。
最后,非常感謝李焱老師的指導。
2008年7月23日