VB Access設(shè)計(jì)圖書管理系統(tǒng)-源碼 圖示_第1頁
VB Access設(shè)計(jì)圖書管理系統(tǒng)-源碼 圖示_第2頁
VB Access設(shè)計(jì)圖書管理系統(tǒng)-源碼 圖示_第3頁
VB Access設(shè)計(jì)圖書管理系統(tǒng)-源碼 圖示_第4頁
VB Access設(shè)計(jì)圖書管理系統(tǒng)-源碼 圖示_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、一、需求分析 在進(jìn)行一個(gè)項(xiàng)目的設(shè)計(jì)之前,先要進(jìn)行必要的需求分析。 現(xiàn)某圖書館需要管理其各種人員和圖書信息,希望實(shí)現(xiàn)辦公的信息化,通過建立一個(gè)圖書管理系統(tǒng)來管理 圖書。其完成的功能如下: (1 可以實(shí)現(xiàn)圖書的登記、借閱和賠償?shù)墓芾怼?(2 可以實(shí)現(xiàn)對(duì)圖書的各種信息的查詢,包括逐個(gè)瀏覽,以及對(duì)圖書信息的增加、刪除和編輯操作。另外, 可以根據(jù)輸入的信息來檢索某個(gè)圖書的信息。 (3 可以實(shí)現(xiàn)對(duì)管理人員的投訴管理。 (4 可以實(shí)現(xiàn)對(duì)值班人員的管理。 系統(tǒng)的功能模塊圖如圖 1 所示。 本實(shí)例根據(jù)上面的設(shè)計(jì)規(guī)劃出的實(shí)體有圖書登記實(shí)體、圖書借閱實(shí)體、圖書賠償實(shí)體、查詢輸出實(shí)體、值 班管理實(shí)體、投訴管理實(shí)體。各

2、個(gè)實(shí)體具體的描述 E-R 圖如下。 圖書登記實(shí)體 E-R 圖如圖 2 所示。 圖書借閱實(shí)體 E-R 圖如圖 3 所示。 圖 1 系統(tǒng)的功能模塊圖 圖 2 圖書登記實(shí)體 E-R 圖 圖 3 圖書借閱實(shí)體 E-R 圖 圖書賠償實(shí)體 E-R 圖如圖 4 所示。 圖 4 圖書賠償實(shí)體 E-R 圖 投訴管理實(shí)體 E-R 圖如圖 5 所示。 圖 5 投訴管理實(shí)體 E-R 圖 值班管理實(shí)體 E-R 圖如圖 6 所示。 圖 6 值班管理實(shí)體 E-R 圖 查詢輸出實(shí)體 E-R 圖如圖 7 所示。 圖 7 查詢輸出實(shí)體 E-R 圖 二、結(jié)構(gòu)設(shè)計(jì) 根據(jù)上面的需求分析,設(shè)計(jì)好數(shù)據(jù)庫系統(tǒng),然后開發(fā)應(yīng)用程序可以考慮的窗體

3、的系統(tǒng),每一 個(gè)窗體實(shí)現(xiàn)不同的功能,可以設(shè)計(jì)下面的幾個(gè)模塊。 圖書管理模塊:用來實(shí)現(xiàn)圖書的登記、借閱、賠償。 圖書資料模塊:用來實(shí)現(xiàn)圖書的查詢輸出。 值班管理模塊:用來實(shí)現(xiàn)管理人員的值班瀏覽。 投訴管理模塊:用來實(shí)現(xiàn)對(duì)管理人員的投訴管理。 系統(tǒng)管理模塊:用來實(shí)現(xiàn)用戶的增加、刪除和修改等操作。 三、數(shù)據(jù)庫設(shè)計(jì) 這里的數(shù)據(jù)庫采用 Access,用 ADO 作為連接數(shù)據(jù)對(duì)象。 1、建立 Access 數(shù)據(jù)庫 啟動(dòng) Access,建立一個(gè)空的數(shù)據(jù)庫 book.mdb,如圖 8 所示。 使用程序設(shè)計(jì)器建立系統(tǒng)需要的表格如下。 圖書登記表,如圖 9 所示。 圖 8 建立數(shù)據(jù) 庫 book.mdb 圖 9

4、圖書登記表圖書借閱表,如圖 10 所示。圖書賠償表,如圖 11 所示。 上一 圖 10 圖書借閱表 圖 11 圖書賠償表圖書資料表,如圖 12 所示。系統(tǒng)管理表,如圖 13 所示。 圖 12 圖書資料表 圖 13 系統(tǒng)管理表投訴管理表,如圖 14 所示。 圖 14 投訴管理表 值班管理表,如圖 15 所示。 圖 15 值班管理表 2、連接數(shù)據(jù)在 Visual Basic 環(huán)境下,選擇“工程”“引用”命令,在隨后出現(xiàn)的對(duì)話框中選擇 “Microsoft ActiveX Data Objects 2.0 Library”,然后單擊“確定”按鈕,如圖 16 所示。 圖 16 引用 ADO 連接數(shù)據(jù)庫

5、 下: 在程序設(shè)計(jì)的公共模塊中,先 體如表 3 所示。 表 3 所有子窗體 子 窗 體 名 Text 圖 書 登 記 frmdengji 圖 書 借 閱 frmjieyue 圖 書 賠 償 frmpeichang 增 加 新 用 戶 frmadduser 查詢輸出 frmfind 登錄系統(tǒng) frmlogin 修改密碼 frmchangepwd 下面分別給出這些子窗體,以及它們所使用的控件。 (1 圖書登記子窗體如圖 22 所示,其控件如表 4 所示。 圖 22 圖書登記子窗體 表 4 圖書登記子窗體控件 控 件 類 別控件 Name 控件 Text Label Label1 編號(hào) Label2

6、 書名 Label3 類型 Label4 購 買 日 期 Label5 定 價(jià) TextBox Text1 ( 空 Text2 ( 空 Text3 ( 空 Text4 ( 空 Text5 ( 空 CommandButton Command1 增 加 記 錄 Command2 刪 除 記 錄 Command3 下 一 條 Command4 上 一 條 Command5 第一條 Command6 最后一條 Command7 退出 ADO DataAdodc1 (空 DataGrid DataGrid1 (空 圖書借閱和圖書賠償子窗體分別如圖 23 和圖 24 所示,因?yàn)樗鼈兊目丶c圖書登記子窗體的

7、雷同,在 此不作介紹。 圖 23 圖書借閱子窗體 圖 24 圖 書 賠 償 子 窗 體 (2 增 加 用 戶 子 窗 體 如 圖 25 所 示 , 其 控 件 如 表 5 所 示 。 圖 25 增加用戶子窗體 表 5 增加用戶子窗體控件 控 件 類 別控件 Name 控件 Text Label Label1 輸入用戶名 Label2 輸入密碼 Label3 確認(rèn)密碼 Label4 選 擇權(quán)限 TextBox Text1 (空 Text2 (空 Text3 (空 ComboBox Comb1 (空 CommandButton Commandl 確定 Command2 取消 (3 修改密碼子窗體如

8、圖 26 所示。 圖 26 修 改 密 碼 子 窗 體 (4 庫 房 管 理 子 窗 體 如 圖 27 所 示 。 圖 27 庫房管理子窗體 其控件如表 6 所示。 表 6 庫房管理子窗體控件 MSFlexGrid MSFlexGrid1 控 件 類 別控件 Name 控件 Text TextBox Text1 (空 ComboBox Combo1 (5 查詢子窗體如圖 28 所示,其控件如表 7 所示。 圖 28 查詢子窗體 表 7 查詢子窗體控件 控 件 類 別控件 Name 控件 Text OptionButton Option1 按編號(hào)查詢 Option2 按購買日期查詢 Label

9、Label1 從 Label2 到 Label3 從 Label4 年 Label5 月 Label6 日 Label7 到 Label8 年 Label9 月 Label10 日 Combo(0 ComboBox Combo1 (空 Combo(1 ComboBox Combo1 (空 Comboy(0 ComboBox Comboy ( 空 Comboy(1 ComboBox Comboy ( 空 Combom(0 ComboBox Combom ( 空 Combom(1 ComboBox Combom ( 空 Combod(0 ComboBox Combod ( 空 Combod(1 C

10、omboBox Combod ( 空 CommandButton Command1 查詢 Command2 取消 (6 用戶登錄子窗體如圖 29 所示。 (7 值班管理子窗體如圖 30 所示,其控件如表 8 所示。 圖 29 用戶登錄子窗體 圖 30 值班管理子窗體 (8 投訴管理子窗體如圖 31 所示,其控件如表 9 所示。 圖 31 投訴管理子窗體 建立公共模塊 1、顯示目錄 建立公共模塊可以提高代碼的效率,同時(shí)使得修改和維護(hù)代碼都很方便。 創(chuàng)建公共模塊的步驟如下: (1 在菜單中選擇“工程”“添加模塊”命令,則出現(xiàn)模塊對(duì)話框,如圖 不一致!", vbOKOnly + vbExc

11、lamation, "" Text1.SetFocus Text1.Text = "" Text2.Text = "" Else sql = "select * from 系統(tǒng)管理 where 用戶名='" & userID & "'" rs_chang.Open sql, conn, adOpenKeyset, adLockPessimistic rs_chang.Fields(1 = Text1.Text rs_chang.Update rs_chang.Cl

12、ose MsgBox "密碼修改成功", vbOKOnly + vbExclamation, "" Unload Me End If End Sub 在上述代碼中,首先比較兩個(gè)表中的數(shù)據(jù)是否一致,然后用 rs_chang.Fields(1 = Text1.Text 語句把代碼 輸入到數(shù)據(jù)庫中。最后,用 MsgBox "密碼修改成功", vbOKOnly + vbExclamation,""語句彈出一個(gè)信息框, 告訴修改成功,如圖 39 所示。 顯示目錄 (4 庫房管理子窗體代碼 庫房管理子窗體是用來管理圖書資料的。

13、其運(yùn)行效果如圖 40 所示。 圖 40 庫房管理子窗體 實(shí)際上,設(shè)計(jì)庫房管理子窗體的程序代碼與增加用戶子窗體的代碼在思路上是完全相同的。就是在 DataGrid 的文本框中顯示圖書進(jìn)出的清單,最后把填寫的明細(xì)存儲(chǔ)到數(shù)據(jù)庫中。 檢查代碼如下: Option EXPlicit Dim rs_data2 As New ADODB.Recordset Dim select_row As String Dim showgrid2 As Boolean Dim rs_custom As New ADODB.Recordset Dim jinchu As String ' 進(jìn)出庫標(biāo)志 Dim mod

14、ify As Boolean ' 修改狀態(tài)標(biāo)志 Private Sub cmdexit_Click( Unload Me End Sub Private Sub Form_Load( On Error GoTo loaderror Dim sql As String sql = "select * from 圖書資料" rs_custom.CursorLocation = adUseClient rs_custom.Open sql, conn, adOpenKeyset, adLockPessimistic While Not rs_custom.EOF Comb

15、o1.AddItem rs_custom.Fields(0 rs_custom.MoveNext Wend findok = True modify = False ' 非修改狀態(tài) showgrid2 = False displaygrid1 ' 調(diào)用顯示 Datagrid1 子程序 loaderror: If Err.Number <> 0 Then MsgBox Err.Description End If End Sub '顯示 msflexgrid1 子程序 Public Sub displaygrid1( Dim i As Integer On E

16、rror GoTo displayerror setgrid setgridhead MSFlexGrid1.Row = 0 If Not rs_data1.EOF Then rs_data1.MoveFirst Do While Not rs_data1.EOF MSFlexGrid1.Row = MSFlexGrid1.Row + 1 MSFlexGrid1.Col = 0 If Not IsNull(rs_data1.Fields(0 Then MSFlexGrid1.Text = rs_data1.Fields(0 Else MSFlexGrid1.Text = ""

17、; MSFlexGrid1.Col = 1 If Not IsNull(rs_data1.Fields(1 Then MSFlexGrid1.Text = rs_data1.Fields(1 Else MSFlexGrid1.Text = "" MSFlexGrid1.Col = 2 If Not IsNull(rs_data1.Fields(2 Then MSFlexGrid1.Text = rs_data1.Fields(2 Else MSFlexGrid1.Text = "" MSFlexGrid1.Col = 3 If Not IsNull(rs

18、_data1.Fields(3 Then MSFlexGrid1.Text = rs_data1.Fields(3 Else MSFlexGrid1.Text = "" MSFlexGrid1.Col = 4 If Not IsNull(rs_data1.Fields(4 Then MSFlexGrid1.Text = rs_data1.Fields(4 Else MSFlexGrid1.Text = "" MSFlexGrid1.Col = 5 If Not IsNull(rs_data1.Fields(5 Then MSFlexGrid1.Text

19、= rs_data1.Fields(5 Else MSFlexGrid1.Text = "" rs_data1.MoveNext Loop End If displayerror: If Err.Number <> 0 Then MsgBox Err.Description End If End Sub Public Sub setgrid( Dim i As Integer On Error GoTo seterror With MSFlexGrid1 .ScrollBar s = flexScrollBarBoth .FixedCols = 0 .Rows

20、= rs_data1.RecordCount + 1 .Cols = 6 .SelectionMode = flexSelectionByRow For i = 0 To .Rows - 1 .RowHeight(i = 315 Next For i = 0 To .Cols 1 .ColWidth(i = 1300 Next i End With Exit Sub seterror: MsgBox Err.Description End Sub Public Sub setgridhead( On Error GoTo setheaderror MSFlexGrid1.Row = 0 MSF

21、lexGrid1.Col = 0 MSFlexGrid1.Text = "編號(hào)" MSFlexGrid1.Col = 1 MSFlexGrid1.Text = "購買日期" MSFlexGrid1.Col = 2 MSFlexGrid1.Text = "書名" MSFlexGrid1.Col = 3 MSFlexGrid1.Text = "類型" MSFlexGrid1.Col = 4 MSFlexGrid1.Text = "定價(jià)" MSFlexGrid1.Col = 5 MSFlexGrid1

22、.Text = "備注" Exit Sub setheaderror: MsgBox Err.Description End Sub Private Sub Form_Unload(Cancel As Integer findok = False rs_data1.Close rs_custom.Close End Sub Private Sub MSFlexGrid1_Click( On Error GoTo griderror Dim getrow As Long getrow = MSFlexGrid1.Row If MSFlexGrid1.Rows = 1 Then

23、 MsgBox "無相關(guān)記錄", vbOKOnly + vbExclamation, "" Else select_row = MSFlexGrid1.TextMatrix(getrow, 0 End If griderror: If Err.Number <> 0 Then MsgBox Err.Description End If End Sub Public Sub showdata( With MSFlexGrid2 .Rows = rs_data2.RecordCount + 1 .Row = 0 If Not rs_data2.E

24、OF Then rs_data2.MoveFirst Do While Not rs_data2.EOF .Row = .Row + 1 .Col = 0 If Not IsNull(rs_data2.Fields(0 Then .Text = rs_data2.Fields(0 Else .Text = "" .Col = 1 If Not IsNull(rs_data2.Fields(1 Then .Text = rs_data2.Fields(1 Else .Text = "" .Col = 2 If Not IsNull(rs_data2.Fie

25、lds(2 Then .Text = rs_data2.Fields(2 Else .Text = "" .Col = 3 If Not IsNull(rs_data2.Fields(3 Then .Text = rs_data2.Fields(3 Else .Text = "" .Col = 4 If Not IsNull(rs_data2.Fields(4 And CDbl(rs_data2.Fields(4 < 0 Then .Text = -CDbl(rs_data2.Fields(4 Else .Text = rs_data2.Field

26、s(4 End If .Col = 5 If Not IsNull(rs_data2.Fields(5 Then .Text = rs_data2.Fields(5 Else .Text = "" .Col = 6 If Not IsNull(rs_data2.Fields(6 Then .Text = rs_data2.Fields(6 Else .Text = "" .Col = 7 If Not IsNull(rs_data2.Fields(7 And CDbl(rs_data2.Fields(4 < 0 Then .Text = -CDbl

27、(rs_data2.Fields(7 Else .Text = rs_data2.Fields(7 End If .Col = 8 If Not IsNull(rs_data2.Fields(8 Then .Text = rs_data2.Fields(8 Else .Text = "" rs_data2.MoveNext Loop rs_data2.MoveLast End If End With End Sub (5 查詢子窗體代碼 查詢子窗體是用來查詢庫房中圖書資料明細(xì)的。其運(yùn)行效果如圖 41 所示。 圖 41 查詢子窗體運(yùn)行效果 在列表框中給出編號(hào)或年月日后,“查詢

28、”按鈕的 Click 事件將給出與數(shù)據(jù)庫查找比較的結(jié)果。 Private Sub Command1_Click( On Error GoTo cmderror Dim find_date1 As String Dim find_date2 As String If Option1.Value = True Then sqlfind = "select * from 圖書資料 where 編號(hào) between '" & _ Combo1(0.Text & "'" & " and " & &

29、quot;'" & Combo1(1.Text & "'" End If If Option2.Value = True Then find_date1 = Format(CDate(Comboy(0.Text & "-" & _ Combom(0.Text & "-" & Combod(0.Text, "yyyy-mm-dd" find_date2 = Format(CDate( 定義連接數(shù)據(jù)庫的變量: Option Explicit Di

30、m rs_zhiban As New ADODB.Recordset 然后列出窗體部分的代碼。 Private Sub cmdadd_Click( On Error GoTo adderror If cmdadd.Caption = "新增記錄" Then ' 當(dāng)此按鈕的狀態(tài)為為“增加記錄”時(shí) cmdadd.Caption = "確定" ' 按鈕名稱改“確定” cmddel.Enabled = False DataGrid1.AllowAddNew = True DataGrid1.AllowUpdate = True ' 設(shè)定

31、DataGrid 可以增加記錄 Else If Not IsNull(DataGrid1.Bookmark Then If Not IsDate(Trim(DataGrid1.Columns("值班開始日期".CellText(DataGrid1.Bookmark Then MsgBox "請(qǐng)按照格式 yyyy-mm-dd 輸入值班開始日期", vbOKOnly + vbExclamation, "" Exit Sub End If If Not IsDate(Trim(DataGrid1.Columns("值班開始時(shí)間&q

32、uot;.CellText(DataGrid1.Bookmark Then MsgBox "請(qǐng)按照格式 hh-mm 輸入值班開始時(shí)間", vbOKOnly + vbExclamation, "" Exit Sub End If If Not IsDate(Trim(DataGrid1.Columns("值班截止日期".CellText(DataGrid1.Bookmark Then MsgBox "請(qǐng)按照格式 yyyy-mm-dd 輸入值班截止日期", vbOKOnly + vbExclamation, "

33、;" Exit Sub End If If Not IsDate(Trim(DataGrid1.Columns("值班截止時(shí)間".CellText(DataGrid1.Bookmark Then MsgBox "請(qǐng)按照格式 hh-mm 輸入值班截止時(shí)間", vbOKOnly + vbExclamation, "" Exit Sub End If If Trim(DataGrid1.Columns("值班人".CellText(DataGrid1.Bookmark = "" Then M

34、sgBox "值班人不能為空!", vbOKOnly + vbExclamation, "" Exit Sub End If rs_zhiban.Update MsgBox "添加信息成功!", vbOKOnly + vbExclamation, "" DataGrid1.AllowAddNew = False DataGrid1.AllowUpdate = False Else MsgBox "沒有添加信息!", vbOKOnly + vbExclamation, "" End If cmdadd.Caption = "新增記錄" cmddel.Enabled = True End If adderror: If Err.Number &l

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論