第一篇:用VB編寫一個簡單的圖書管理系統分解
用VB編寫一個簡單的圖書管理系統
Srl2011009(學號)石二遼(姓名)
指導教師 徐哲鑫
【摘 要】筆者采用Visual Basic 6.0 為開發工具,設計一款具備友好的圖形用戶界面、簡便操作的圖書管理系統。充分利用計算機功能實現讀者管理、書籍管理、借還書籍管理等信息的自動化控制,將使圖書管理員從繁雜、重復的勞作中解放出來。
【關鍵詞】圖書;面向對象;軟件工程
1概述
1.1開發背景
用計算機管理圖書館里一切信息是一種計算機應用技術的創新,在計算機還未普及之前圖書管理都是由圖書管理人員手工記帳的方式來操作的.現在一般的圖書館都是采用計算機作為工具,使用實用的圖書管理程序來幫助圖書館管理員進行更有效的圖書管理。
1.2圖書管理系統產生的背景
圖書管理系統是典型的信息管理系統,其開發主要包括后臺數據庫的建立和維護以及前端應用程序的開發兩個方面。對于臺數據庫的建立和維護要求建立起數據一致性和完整性強、數據安全性好的庫。
[1]而對于前端應用程序則要求應用程序具備功能完備、友好的圖形用戶界面、便捷使用等特點。
1.3 系統功能要求的分析
開發本系統的總體任務是實現圖書管理系統的系統化和自動化,幫助圖書管理員更好更高效地完成圖書管理工作,本系統要完成的功能主要有: 書籍管理部分:圖書類別管理和圖書信息管理。其中,書籍類別管理包括添加書籍類別、修改書籍類別、刪除書籍類別等;書籍信息管理包括書籍信息的添加、修改、查詢、刪除等。
讀者管理部分:讀者類別管理和讀者信息管理,讀者類別管理包括讀者類別添加、修改、刪除等;讀者信息包括讀者添加讀者信息、修改讀者信息、查詢讀者信息、刪除讀者信息等。
借閱管理部分:借書信息管理和還書信息管理,借書信息管理、還書信息管理均包括其信息的添加、修改、查詢等。
系統管理部分:添加管理員,修改密碼,退出系統。
2開發環境及實現技術介紹
2.1開發軟件介紹
由于我的工作單位是一所中心小學,有大量的書籍,讀者有學生、老師,于是本人想設計一款實用的圖書管理系統,方便學校圖書管理員工作,增強圖書借閱力度,良好地管理書籍及其借閱信息。
2.2模塊設計[2]
書籍管理部分實現對書籍類別、書籍信息的添加、修改、刪除等操作。讀者管理部分實現對讀者類別、讀者信息的添加、修改、刪除等操作。借閱管理部分實現對借書信息、還書信息的添加、修改、查詢等操作。
系統管理部分實現超級用戶對普通用戶的用戶名和密碼對注冊、修改等操作。
2.3程序預覽
運行本系統程序,首先出現登錄界面(圖2),輸入正確用戶名及密碼后進入主窗體(圖3),主窗體上的主菜單欄有:書籍管理、讀者管理、借閱管理、系統設置及幫助。
圖2
圖3
2.3.1書籍管理功能
“書籍管理”菜單下有兩個一級菜單:“書籍信息管理”和“書籍類別管理”。具體操作如下: 1.“書籍類別管理”下有三個子菜單:“新增”、“修改”、“刪除”。單擊“新增”菜單,打開“新增書籍類別”窗體(圖4)。單擊“修改”或“刪除”,都會打開“書籍類別信息管理”窗體(圖5)。
圖4 圖5 2.“書籍信息管理”下有四個子菜單:“新增圖書”、“修改書籍信息”、“刪除書籍信息”、“查詢書籍信息”。單擊“新增圖書”菜單,打開“新增書籍”窗體(圖6)。單擊“修改”或“刪除”,都會打開“書籍信息管理”窗體(圖7)。單擊“查詢書籍信息”菜單,打開“查詢圖書”窗體(圖8)
圖6
圖7
圖8 2.3.2讀者管理功能
“讀者管理”菜單下有兩個一級菜單:“讀者類別管理”和“讀者信息管理”。1.“讀者類別管理”下有3個子菜單:“添加讀者類別”、“修改讀者類別”、“刪除讀者類別”。單擊“添加讀者類別”菜單,打開“添加讀者類別”窗體(圖9);單擊“修改讀者類別”和“刪除讀者類別”菜單,都會打開“讀者類別管理”窗體(圖10)。
圖9 圖10
2.“讀者信息管理”菜單下有4個子菜單:“添加讀者信息”、“修改讀者信息”、“刪除讀者信息”和“查詢讀者信息”。單擊“添加讀者信息”菜單,打開“添加讀者信息”窗體(圖11),單擊“修改讀者信息”和“刪除讀者信息”菜單,都會打開“讀者信息管理”窗體(圖12),單擊“查詢讀者信息”菜單,打開“查詢讀者信息”窗體(圖13)。
圖11
圖12 圖13
2.3.3圖書借閱管理功能
“借閱管理”菜單下有2個一級菜單:“借書管理”和“還書管理”。
1.“借書管理”菜單下有2個子菜單:“添加借書信息”和“查詢借書信息”。單擊“添加借書信息”先打開的是“查詢圖書”窗體(圖8),找到需要借閱的圖書后,單擊“借這本書按鈕”,打開“借書”窗體(圖14);單擊“查詢借書信息”菜單,打開“查詢借書信息”窗體(圖15)。
圖14 圖15
2.單擊“還書管理”,打開“還書”窗體(圖16)。
圖16 2.3.4系統管理功能
“系統管理”菜單下有3個子菜單,分別是“添加管理員”、“修改密鑰”和“退出系統”。單擊“添加管理員”子菜單,打開“添加管理員”窗體(圖17),單擊“修改密鑰”子菜單,打開“修改密碼”窗體(圖18),單擊“退出系統”,備份數據并退出本系統。
圖17 圖18
2.3.5幫助菜單
單擊“幫助”菜單,打開系統信息窗體(圖1),點擊系統信息窗體任何一處,關閉該信息窗體,返回主窗體。
圖1 2.4數據庫設計
數據庫名為sj.mdb,在庫中設計六張表,它們分別為dzlb(讀者類別表)、dzxx(讀者信息表)、jyxx(借閱信息表)、sjxx(書籍信息表)、sjlb(書籍類別表)、sys(系統管理表)。
2.4.1讀者類別表,表名為dzlb,字段名稱有讀者類別名稱、讀者借書數量、借書期限及有限期限,設置“讀者類別名稱”為主鍵,是必填字段,不允許空值。
2.4.2讀者信息表: 設置“讀者編號”為主鍵,“讀者編號”、“讀者姓名”為必填字段,不允許空值。
2.4.3 借閱信息表:
2.4.4書籍信息表: 設置“圖書編號”為主鍵,“圖書編號”、“書籍名稱”為必填字段,不允許空值。
2.4.5圖書類別表:
2.4.6系統管理表:
2.4.7數據庫連接方式選擇
Visual basic6.0連接數據庫的主要方式有以下幾種方式:一是用data控件進行數據庫鏈接,二是利用adodc(ADO Data Control)進行數據庫鏈接。三是:利用DataEnvironment進行數據庫鏈接,四是利用ADO(ActiveX Data Objects)進行編程。
[3]利用DAO對數據庫進行操縱: 在visual basic 中提供了兩種與jet數據引擎接口的方法:data控件與數據訪問對象(DAO)DAO是database object的英文縮寫,要訪問數據庫一方面數據庫要提供訪問接口,另一方面要在編程環境中有對數據庫的支持.DAO模型是設計關系數據庫系統結構的對象類的集合.他們提供了管理關系型數據庫系統所需要的全部操作屬性和方法,這其中包括建立數據庫,定義表,字段和建立表間關系,定位和查詢數據庫等.[4] 關系數據庫介紹: 關系數據庫是目前各類數據庫中最重要、最流行的數據庫,他應用數學方法來處理數據庫數據,是目前使用最廣泛的數據庫系統。20世紀70年代以后開發的數據庫管理系統產品幾乎都是基于關系的。在數據庫發展的歷史上,最重要的成就就是關系模型。
關系數據庫系統與非關系數據庫系統的區別是:關系系統只有“表“這一種數據結構;而非關系數據庫系統還有其他數據結構,對這些數據結構有其他的操作。
結構化查詢語言SQL(Structured Query Language)是一種介于關系代數與關系演算之間的語言,其功能包括查詢、操縱、定義和控制四個方面,是一個通用的、功能極強的關系數據庫語言。目前已成為關系數據庫的標準語言。
Microsoft Access介紹: 使用 Microsoft Access,可以在單一的數據庫文件中管理所有的信息。在這個文件中,用戶可以將自己的數據分別保存在各自獨立的存儲空間中,這些空間稱作表;可以使用聯機窗體來查看、添加及更新表中的數據;使用查詢來查找并檢索所要的數據;也可以使用報表以特定的版面布置來分析及打印數據。
如果要保存數據,請為每一種類型的信息創建一個表。如果要從查詢、窗體或報表中的多個表中將數據合并在一起,就要定義各個表之間的關系。
如果要搜索并檢索符合指定條件的數據,包括來自多個表中的數據,就要創建查詢。查詢的同時也可以更新或刪除多條記錄,并對數據執行內嵌或自定義的計算。
如果要簡單地直接在某個表中查看、輸入及更改數據,請創建一個窗體。在打開一個窗體時,Microsoft Access 將從一個或多個表中檢索數據,并使用用戶在“窗體向導”選擇的版面布局或所創建的版面布局,將窗體顯示在屏幕上。
如果要分析數據或將數據以特定的方式打印出來,請創建一個報表。例如,可以打印一份將數據分組并計算數據總和的報表,也可以打印另一份帶有各種數據格式的打印郵件標簽的報表。
2.5系統代碼[5]
2.5.1主界面代碼: 2.5.1.1添加管理員菜單
Private Sub addadmin_Click()addadminf.Show End Sub 2.5.1.2添加讀者類別菜單 Private Sub adddzlb_Click()Adddzlbf.Show End Sub 2.5.1.3添加讀者信息菜單
Private Sub adddzxxf_Click()Adddzxxf.Show End Sub 2.5.1.4添加還書信息菜單 Private Sub addhs_Click()hsf.Show End Sub 2.5.1.5添加借書信息菜單 Private Sub addjs_Click()Jsf.Show End Sub 2.5.1.6添加圖書類別菜單 Private Sub addlb_Click()addtslb.Show End Sub 2.5.1.7查詢讀者信息菜單 Private Sub cxdzxx_Click()cxdzxxf.Show End Sub 2.5.1.8查詢借書信息菜單 Private Sub cxjs_Click()cxjsxxf.Show End Sub 2.5.1.9查詢書籍信息菜單 Private Sub cxsj_Click()cxsjf.Show End Sub 2.5.1.10刪除讀者類別菜單 Private Sub Deldzlb_Click()dzlbxxf.Show End Sub 2.5.1.11刪除讀者信息菜單 Private Sub Deldzxx_Click()dzxxglf.Show End Sub 2.5.1.12刪除書籍類別菜單 Private Sub dellb_Click()sjlbxxf.Show End Sub 2.5.1.13幫助菜單
Private Sub hlep_Click()frmSplash.Show End Sub 2.5.1.14退出系統菜單
Private Sub Unload_Click()end End Sub 2.5.1.15修改讀者類別菜單 Private Sub Xgdzlb_Click()dzlbxxf.Show End Sub 2.5.1.16修改讀者信息菜單 Private Sub xgdzxx_Click()dzxxglf.Show End Sub 2.5.1.17修改書籍類別菜單 Private Sub xglb_Click()sjlbxxf.Show End Sub 2.5.1.18修改用戶密碼菜單 Private Sub xgmm_Click()xgmmf.Show End Sub 2.5.1.19修改書籍信息菜單 Private Sub xgts_Click()sjxxf.Show End Sub 2.5.1.20新增圖書信息菜單 Private Sub xzts_Click()addtsf.Show End Sub 2.5.2添加圖書類別
添加圖書類別代碼: Private Sub Command1_Click()Dim Sq1 As String Dim rs_add As New ADODB.Recordset Sql = “select * from sjlb where 類別名稱='” & Text1.Text & “'” rs_add.Open Sql, Sjk, adOpenKeyset, adLockPessimistic If Trim(Text1.Text)= “" Then MsgBox ”圖書類別不能為空“, vbOKOnly + vbExclamation, ”注意“ Text1.SetFocus Exit Sub End If If Trim(Text2.Text)= ”“ Then MsgBox ”圖書編號不能為空“, vbOKOnly + vbExclamation, ”注意“ Text2.SetFocus Exit Sub End If
If rs_add.EOF = True Then rs_add.AddNew rs_add.Fields(0)= Trim(Text2.Text)rs_add.Fields(1)= Trim(Text1.Text)rs_add.Update MsgBox ”成功地添加 “ & Text1.Text & ” 這一圖書類別“, vbOKOnly, ”恭喜“ rs_add.Close Else MsgBox ” “ & Text1.Text & ” 這一圖書類別已存在“, vbOKOnly + vbExclamation, ”圖書類別不能重復“ rs_add.Close End If Text1.SetFocus Text1.Text = ”“ Text2.Text = ”“ End Sub Private Sub Command2_Click()Unload Me End Sub 2.5.3修改圖書類別: 修改圖書類別代碼: Option Explicit Dim Myjl As New ADODB.Recordset Private Sub Form_Load()Dim Sq1 As String On Error GoTo loaderror Sq1 = ”select * from sjlb “ Myjl.CursorLocation = adUseClient Myjl.Open Sq1, Sjk, adOpenKeyset, adLockPessimistic Cmdcancel.Enabled = False Cmdupdate.Enabled = False Dg.AllowAddNew = False Dg.AllowDelete = False Dg.AllowUpdate = False Set Dg.DataSource = Myjl Exit Sub loaderror: MsgBox Err.Description End Sub Private Sub Cmdadd_Click()Dg.AllowAddNew = True Dg.AllowUpdate = True Cmdadd.Enabled = False Cmdupdate.Enabled = True End Sub Private Sub Cmdadd_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)Cmdadd.Caption = ”點擊此處也可以添加“ Cmdadd.Width = 3000 End Sub Private Sub Cmdcancel_Click()Myjl.CancelUpdate Dg.Refresh Dg.AllowAddNew = False Dg.AllowUpdate = False Cmdxg.Enabled = True Cmddel.Enabled = True Cmdcancel.Enabled = False Cmdupdate.Enabled = False End Sub
Private Sub Cmddel_Click()Dim Srl As String On Error GoTo delerror Srl = MsgBox(”確定要刪除嗎?“, vbYesNo)If Srl = vbYes Then Dg.AllowDelete = True Myjl.Delete Myjl.Update Dg.Refresh Else Exit Sub End If delerror: MsgBox Err.Description End Sub Private Sub Cmdupdate_Click()If Not IsNull(Dg.Bookmark)Then Myjl.Update Cmddel.Enabled = True Cmdxg.Enabled = True Cmdcancel.Enabled = False Cmdupdate.Enabled = False Dg.AllowUpdate = False MsgBox ”修改成功“, vbOKOnly + vbExclamation, ”恭喜成功“ End If Cmdadd.Width = 1550 Cmdadd.Caption = ”高級“ Cmdadd.Enabled = True End Sub Private Sub Cmdxg_Click()Dim Srl As String On Error GoTo xg Cmddel.Enabled = False Cmdxg.Enabled = False Cmdupdate.Enabled = True Cmdcancel.Enabled = True Dg.AllowUpdate = True xg: If Err.Number <> 0 Then MsgBox Err.Description End If End Sub Private Sub Form_Unload(Cancel As Integer)Set Dg.DataSource = Nothing Myjl.Close End Sub 2.5.4添加讀者類別界面: Private Sub Command1_Click()Dim Srl As String Dim Mybook As New ADODB.Recordset If Trim(Text1.Text)= ”“ Then MsgBox ”讀者類別名稱不能為空“, vbOKOnly + vbExclamation, ”注意“ Text1.SetFocus Exit Sub End If If Trim(Text2.Text)= ”“ Then MsgBox ”借書數量不能為空“, vbOKOnly + vbExclamation, ”注意“ Text2.SetFocus Exit Sub End If If Trim(Text3.Text)= ”“ Then MsgBox ”借書期限不能為空“, vbOKOnly + vbExclamation, ”注意“ Text3.SetFocus Exit Sub End If If Trim(Text4.Text)= ”“ Then MsgBox ”有效期限不能為空“, vbOKOnly + vbExclamation, ”注意“ Text4.SetFocus Exit Sub End If On Error GoTo Cw Srl = ”select * from dzlb where 讀者類別名稱='“ & Text1.Text & ”'“ Mybook.Open Srl, Sjk, adOpenKeyset, adLockPessimistic If Mybook.EOF Then Mybook.AddNew Mybook.Fields(0)= Trim(Text1.Text)Mybook.Fields(1)= Trim(Text2.Text)Mybook.Fields(2)= Trim(Text3.Text)Mybook.Fields(3)= Trim(Text4.Text)Mybook.Update MsgBox ” 您已經成功添加“ & Text1.Text & ”這一讀者類別 “, vbOKOnly + vbExclamation, ”添加成功!“ Mybook.Close Else MsgBox ”讀者類別名稱為“ & Text1.Text & ” 重復“, vbOKOnly + vbExclamation, ”注意重復“ Text1.SetFocus Text1.Text = ”“ Mybook.Close Exit Sub End If Cw: MsgBox Err.Description End Sub Private Sub Command2_Click()Unload Me
End Sub
Private Sub Form_Load()Dim Sq1 As String '定義一個字符串變量
Dim Myjl As New ADODB.Recordset '定義一個Recordset對象變量 End Sub
2.5.5查詢讀者信息代碼: Private Sub Form_Load()Dim Sq1 As String '定義一個字符串變量
Dim Myjl As New ADODB.Recordset '定義一個Recordset對象變量 Sq1 = ”select * from dzlb“ Myjl.Open Sq1, Sjk, adOpenKeyset, adLockPessimistic Do While Not Myjl.EOF Combo1.AddItem Myjl.Fields(0)Myjl.MoveNext Loop Combo1.ListIndex = 0 Myjl.Close End Sub
Private Sub Command1_Click()Dim Srl As String '定義一個字符串變量 Dim Mybook As New ADODB.Recordset '定義一個Recordset對象變量 If Check1.Value = vbChecked Then Srl = ”讀者編號='“ & Trim(Text1.Text & ”“)& ”'“ End If
If Check2.Value = vbChecked Then If Trim(Srl)= ”“ Then Srl = ”讀者姓名='“ & Trim(Text2.Text & ”“)& ”'“ Else Srl = Srl & ”and 讀者編號='“ & Trim(Text2.Text & ”“)& ”'“ End If End If
If Check3.Value = vbChecked Then If Trim(Srl)= ”“ Then Srl = ”讀者類別='“ & Trim(Combo1.Text & ”“)& ”'“ Else Srl = Srl & ”and 讀者類別='“ & Trim(Combo1.Text & ”“)& ”'“ End If End If
If Srl = ”“ Then MsgBox ”請選擇一種查詢依據“, vbOKOnly + vbExclamation, ”查詢方式“ Exit Sub End If
Srl = ”select * from dzxx where “ & Srl Mybook.CursorLocation = adUseClient Mybook.Open Srl, Sjk, adOpenKeyset, adLockPessimistic Dg.AllowAddNew = False Dg.AllowDelete = False Dg.AllowUpdate = False Set Dg.DataSource = Mybook End Sub
Private Sub Command2_Click()Unload Me End Sub
2.5.6圖書借閱管理模塊代碼: 2.5.6.1查詢書籍窗體代碼
Private Sub Form_Load()’窗體加載時就書籍類別加載到列表框中。Dim Sq1 As String '定義一個字符串變量
Dim Myjl As New ADODB.Recordset '定義一個Recordset對象變量 Sq1 = ”select * from sjlb“ Myjl.Open Sq1, Sjk, adOpenKeyset, adLockPessimistic Do While Not Myjl.EOF Combo1.AddItem Myjl.Fields(1)Myjl.MoveNext Loop Combo1.ListIndex = 0 Myjl.Close End Sub
Private Sub Command1_Click()’查詢命令按鈕代碼 Dim Srl As String '定義一個字符串變量
Dim Mybook As New ADODB.Recordset '定義一個Recordset對象變量
If Check1.Value = vbChecked Then Srl = ”書籍名稱='“ & Trim(Text1.Text & ”“)& ”'“ End If
If Check2.Value = vbChecked Then If Trim(Srl)= ”“ Then Srl = ”圖書編號='“ & Trim(Text2.Text & ”“)& ”'“ Else Srl = Srl & ”and 圖書編號='“ & Trim(Text2.Text & ”“)& ”'“ End If End If If Check3.Value = vbChecked Then If Trim(Srl)= ”“ Then Srl = ”作者='“ & Trim(Text3.Text & ”“)& ”'“ Else Srl = Srl & ”and 作者='“ & Trim(Text3.Text & ”“)& ”'“ End If End If
If Check4.Value = vbChecked Then If Trim(Srl)= ”“ Then Srl = ”出版社='“ & Trim(Text4.Text & ”“)& ”'“ Else Srl = Srl & ”and 出版社='“ & Trim(Text4.Text & ”“)& ”'“ End If End If
If Check5.Value = vbChecked Then If Trim(Srl)= ”“ Then Srl = ”類別='“ & Trim(Combo1.Text & ”“)& ”'“ Else Srl = Srl & ”and 類別='“ & Trim(Combo1.Text & ”“)& ”'“ End If End If
If Srl = ”“ Then MsgBox ”請選擇一種查詢依據“, vbOKOnly + vbExclamation, ”查詢方式“ Exit Sub End If
Srl = ”select * from sjxx where “ & Srl Mybook.CursorLocation = adUseClient Mybook.Open Srl, Sjk, adOpenKeyset, adLockPessimistic Dg.AllowAddNew = False Dg.AllowDelete = False Dg.AllowUpdate = False Set Dg.DataSource = Mybook End Sub
為了獲取表格某一單元格值,為DataGrid控件DG添加如下代碼:
Private Sub Dg_RowColChange(LastRow As Variant, ByVal LastCol As Integer)On Error GoTo Cw Pand = Dg.Columns(7).CellValue(Dg.Bookmark)Bookunm = Dg.Columns(0).CellValue(Dg.Bookmark)’ Pand 和Bookunm是公共模塊中定義的一個公共變量,Bookunm用來記錄表格中某一書籍的圖書編號,便于在借書窗體中再次調用。Exit Sub Cw: MsgBox Err.Description End Sub
Private Sub Command2_Click()Unload Me End Sub
Private Sub Command3_Click()’這是“借這本書”命令按鈕,如果條件滿足,就進入借書窗體了。If Trim(Bookunm)= ”“ Then MsgBox ”請選擇要借閱的書籍“, vbOKOnly + vbExclamation, ”選擇書籍“ Exit Sub End If If Trim(Pand)= ”是“ Then MsgBox ”此書已經被借出,請選擇其它書籍“, vbOKOnly + vbExclamation, ”選擇書籍“ Exit Sub End If Unload Me Jsf.Show End Sub
2.5.6.2借書窗體代碼 Option Explicit Dim Lb As String '該讀者類別
Dim Qx As String '該讀者可借書的期限 Dim Yjsl As String '該讀者已借書的數量 Dim Maxm As String '該讀者借書量的限制
‘由在查詢書籍的窗體滿足了可以借書的條件進入此借書窗體,根據此書的圖書編號,在本窗體加載時就加載了書籍的信息和讀者列表。Private Sub Form_Load()Dim Mybook As New ADODB.Recordset Dim Mydz As New ADODB.Recordset Dim Srl As String Dim Sql As String Srl = ”select * from sjxx where 圖書編號='“ & Bookunm & ”'“ Mybook.Open Srl, Sjk, adOpenKeyset, adLockPessimistic Label8.Caption = Mybook.Fields(0)Label9.Caption = Mybook.Fields(1)Label10.Caption = Mybook.Fields(2)Label11.Caption = Mybook.Fields(3)Label12.Caption = Mybook.Fields(4)Label13.Caption = Mybook.Fields(5)Label14.Caption = Mybook.Fields(6)Sql = ”select * from dzxx “ Mydz.Open Sql, Sjk, adOpenKeyset, adLockPessimistic If Not Mydz.EOF Then Do While Not Mydz.EOF Combo1.AddItem Mydz.Fields(0)Combo2.AddItem Mydz.Fields(1)Mydz.MoveNext Loop Combo1.ListIndex = 0 Else MsgBox ”請先登記讀者“, vbOKOnly + vbExclamation, ”注意“ Exit Sub End If
Mybook.Close Mydz.Close
End Sub ‘由于讀者編號與讀者姓名是一一對應的,必須對用來加載這兩個信息的兩個列表框編寫如下代碼: Private Sub Combo1_Click()Combo2.ListIndex = Combo1.ListIndex End Sub Private Sub Combo2_Click()Combo1.ListIndex = Combo2.ListIndex End Sub
Private Sub Command1_Click()’這是借書的“確定”按鈕 Dim Myjl As New ADODB.Recordset Dim Sql As String
Sql = ”select * from dzxx where 讀者編號='“ & Combo1.Text & ”'“ Myjl.Open Sql, Sjk, adOpenKeyset, adLockPessimistic Lb = Myjl.Fields(3)Yjsl = Myjl.Fields(8)Myjl.Close
Sql = ”select * from dzlb where 讀者類別名稱='“ & Lb & ”'“ Myjl.Open Sql, Sjk, adOpenKeyset, adLockPessimistic Qx = Myjl.Fields(2)Maxm = Myjl.Fields(1)Myjl.Close
If Yjsl >= Maxm Then MsgBox ”該讀者借書數額已滿!“, vbOKOnly + vbExclamation Exit Sub End If
‘以上條件滿足了,就將新借書信息添加到借閱信息數據庫中,代碼如下: Sql = ”select * from jyxx“ Myjl.Open Sql, Sjk, adOpenKeyset, adLockPessimistic Myjl.AddNew Myjl.Fields(1)= Combo1.Text Myjl.Fields(2)= Combo2.Text Myjl.Fields(3)= Label8.Caption Myjl.Fields(4)= Label9.Caption Myjl.Fields(5)= Date Myjl.Fields(6)= DateAdd(”Ww“, Qx, Date)Myjl.Update Myjl.Close ‘同時,將此書在書籍信息(sjxx)表中的“是否被借出”設置為“是”。Sql = ”select * from sjxx where 圖書編號='“ & Bookunm & ”'“ Myjl.Open Sql, Sjk, adOpenKeyset, adLockPessimistic Myjl.Fields(7)= ”是“ Myjl.Update Myjl.Close
‘同時將該讀者已借書數量上加1。
Sql = ”select * from dzxx where 讀者編號='“ & Combo1.Text & ”'“ Myjl.Open Sql, Sjk, adOpenKeyset, adLockPessimistic Myjl.Fields(8)= Myjl.Fields(8)+ 1 Myjl.Update Myjl.Close
MsgBox ”《“ & Label9.Caption & ”》 這本書成功地借給了讀者姓名為 “ & Combo2.Text & ” 的讀者!“, vbOKOnly + vbExclamation, ”借閱成功“ Unload Me End Sub
Private Sub Command2_Click()Unload Me End Sub
2.5.6.3查詢借書窗體代碼
Private Sub Command1_Click()Dim Sql As String '定義一個字符串變量
Dim Myjl As New ADODB.Recordset '定義一個Recordset對象變量
If Option1.Value = True Then Sql = ”select * from sjxx where 是否被借出='是'“ End If
If Option2.Value = True Then Sql = ”select * from sjxx where 是否被借出='否'“ End If
If Option3.Value = True Then Sql = ”select * from jyxx where 讀者姓名='“ & dzxm.Text & ”'“ End If
Myjl.CursorLocation = adUseClient Myjl.Open Sql, Sjk, adOpenKeyset, adLockPessimistic Dg.AllowAddNew = False Dg.AllowDelete = False Dg.AllowUpdate = False Set Dg.DataSource = Myjl End Sub
Private Sub Command2_Click()Unload Me
End Sub
Private Sub Option3_Click()dzxm.Visible = True End Sub
2.5.6.4還書窗體代碼 Private Sub Form_Load()Dim mybook As New ADODB.Recordset Dim Mydz As New ADODB.Recordset Dim Srl As String Dim Sql As String Sql = ”select * from dzxx “ Mydz.Open Sql, Sjk, adOpenKeyset, adLockPessimistic If Not Mydz.EOF Then Do While Not Mydz.EOF Combo1.AddItem Mydz.Fields(0)Combo2.AddItem Mydz.Fields(1)Mydz.MoveNext Loop End If Mydz.Close Sql = ”select * from jyxx “ mybook.Open Sql, Sjk, adOpenKeyset, adLockPessimistic If Not mybook.EOF Then Do While Not mybook.EOF Combo3.AddItem mybook.Fields(3)Combo4.AddItem mybook.Fields(4)mybook.MoveNext Loop End If mybook.Close End Sub
Private Sub Combo1_Click()Combo2.ListIndex = Combo1.ListIndex End Sub Private Sub Combo2_Click()Combo1.ListIndex = Combo2.ListIndex End Sub
Private Sub Combo3_Click()Combo4.ListIndex = Combo3.ListIndex End Sub Private Sub Combo4_Click()Combo3.ListIndex = Combo4.ListIndex End Sub
Private Sub Command1_Click()Dim Mydz As New ADODB.Recordset Dim Sql As String findform = True Sql = ”select * from jyxx where 讀者姓名='“ & Combo2.Text & ”' “ Mydz.CursorLocation = adUseClient Mydz.Open Sql, Sjk, adOpenKeyset, adLockPessimistic
Set Dg.DataSource = Mydz Dg.AllowAddNew = False Dg.AllowDelete = False Dg.AllowUpdate = False End Sub
Private Sub Command2_Click()Dim mybook As New ADODB.Recordset Dim Sql As String findform = False Sql = ”select * from jyxx where 書籍編號='“ & Combo3.Text & ”' “ mybook.CursorLocation = adUseClient mybook.Open Sql, Sjk, adOpenKeyset, adLockPessimistic Set Dg.DataSource = mybook Dg.AllowAddNew = False Dg.AllowDelete = False Dg.AllowUpdate = False End Sub
Private Sub Command3_Click()Dim Book As String Dim Dz As String Dim Sql As String Dim W As String Dim mybook As New ADODB.Recordset On Error GoTo Cw Book = Dg.Columns(3).CellValue(Dg.Bookmark)Dz = Dg.Columns(1).CellValue(Dg.Bookmark)W = MsgBox(”確定要還這本書嗎?“, vbYesNo, ”“)If W = vbYes Then Sql = ”select * from jyxx where 書籍編號='“ & Book & ”' “ mybook.CursorLocation = adUseClient mybook.Open Sql, Sjk, adOpenKeyset, adLockPessimistic mybook.Delete mybook.Update mybook.Close
Sql = ”select * from sjxx where 圖書編號='“ & Book & ”'“ mybook.CursorLocation = adUseClient mybook.Open Sql, Sjk, adOpenKeyset, adLockPessimistic mybook.Fields(7)= ”否“ mybook.Update mybook.Close Sql = ”select * from dzxx where 讀者編號='“ & Dz & ”' “ mybook.CursorLocation = adUseClient mybook.Open Sql, Sjk, adOpenKeyset, adLockPessimistic mybook.Fields(8)= mybook.Fields(8)-1 mybook.Update mybook.Close
If findform = True Then Command1_Click Else Command2_Click End If MsgBox ”還書成功!“, vbOKOnly + vbExclamation, ”“ Dg.AllowDelete = False Else Exit Sub End If Cw: MsgBox Err.Description End Sub
Private Sub Command4_Click()Unload Me End Sub
2.5.7系統管理
2.5.7.1登錄界面代碼 Option Explicit Dim cnt As Integer’用來記錄點擊“確定”的次數
Private Sub Form_Load()’
Dim ConnectionString As String ConnectionString = ”provider=Microsoft.Jet.oledb.4.0;data source=sj.mdb“ Sjk.Open ConnectionString’ Sjk是公用模塊中定義的一個公共變量。cnt = 0 End Sub
Private Sub Cmdcancel_Click()End End Sub
Private Sub cmdOK_Click()Dim Sql As String Dim rs_add As New ADODB.Recordset If Trim(Text1.Text)= ”“ Then MsgBox ”用戶名不能為空“, vbOKOnly + vbExclamation, ”注意“ Exit Sub Text1.SetFocus Else Sql = ”select * from sys where Uname='“ & Text1.Text & ”'“ rs_add.Open Sql, Sjk, adOpenKeyset, adLockPessimistic If rs_add.EOF = True Then MsgBox ”沒 “ & Text1.Text & ” 有這個用戶“, vbOKOnly + vbExclamation, ”“ Text1.SetFocus Else If Trim(rs_add.Fields(1))= Trim(Text2.Text)Then 'Unema = Text1.Text 'Uid = rs_add.Fields(2)rs_add.Close Mf.Show Unload Me Else
MsgBox ”密碼不正確“, vbOKOnly + vbExclamation, ”注意“ Text2.SetFocus Text2.Text = ”“ End If End If End If cnt = cnt + 1 If cnt = 3 Then Unload Me
End If End Sub
Private Sub cmdOK_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)cmdOK.Caption = ”確定登錄“ ‘只為增強動畫效果,移動鼠標到cmdok按鈕上時,顯示的文字由原來的“確定”變為“確定登錄” End Sub
2.5.7.2添加用戶界面代碼 Private Sub Form_Load()Dim Sjk As ADODB.Connection Dim Sj As ADODB.Recordset Combo1.AddItem ”管理員“ Combo1.AddItem ”來賓用戶“ Set Sjk = New ADODB.Connection Set Sj = New ADODB.Recordset Sjk.ConnectionString = ”DSN=cn;UID=;PWD=;“ Sjk.ConnectionTimeout = 30 Sjk.Open If Sjk.State = adStateOpen Then _ MsgBox ”數據庫加載成功,歡迎進入“添加管理員”界面!“ Sjk.Close End Sub
Private Sub Command1_Click()Dim Sq1 As String '定義一個字符串變量
Dim Myjl As New ADODB.Recordset '定義一個Recordset對象變量 If Trim(Text1.Text)= ”“ Then '首先檢查用戶名是否為空 MsgBox ”用戶名不能空“, vbOKOnly + vbExclamation, ”注意!“ Text1.SetFocus Exit Sub Else Sq1 = ”select * from sys“ Myjl.Open Sq1, Sjk, adOpenKeyset, adLockPessimistic While(Myjl.EOF = False)If Trim(Myjl.Fields(0))= Trim(Text1.Text)Then MsgBox ” “ & Text1.Text & ” 這個用戶名已存在“, vbOKOnly + vbExclamation, ”注意!“ Text1.SetFocus Text1.Text = ”“ Text2.Text = ”“ Text3.Text = ”“ Combo1.Text = ”“ Exit Sub Else Myjl.MoveNext End If Wend If Trim(Text2.Text)<> Trim(Text3.Text)Then MsgBox ”兩次輸入的密碼不一致,請重新設置 “, vbOKOnly + vbExclamation, ”注意!“ Text2.SetFocus Text2.Text = ”“ Text3.Text = ”“ Exit Sub Else Myjl.AddNew Myjl.Fields(0)= Text1.Text Myjl.Fields(1)= Text2.Text Myjl.Update Myjl.Close MsgBox ” 您已經成功添加“ & Text1.Text & ” 這個用戶“, vbOKOnly + vbExclamation, ”注冊成功!“ End If End If End Sub
Private Sub Command2_Click()Unload Me End Sub
2.5.7.3修改用戶界面密碼代碼 Private Sub Command1_Click()Dim Sq1 As String '定義一個字符串變量
Dim Myjl As New ADODB.Recordset '定義一個Recordset對象變量
If Trim(Text1.Text)<> Trim(Text2.Text)Then MsgBox ”兩次輸入的密碼不一致,請重新設置 “, vbOKOnly + vbExclamation, ”注意!“ Text1.SetFocus Text1.Text = ”“ Text2.Text = ”“ Exit Sub Else Sq1 = ”select * from sys where Uname='“ & Text3.Text & ”'“ Myjl.Open Sq1, Sjk, adOpenKeyset, adLockPessimistic If Myjl.EOF = True Then MsgBox ”沒有“ & Text3.Text & ” 這個用戶“, vbOKOnly + vbExclamation, ”“ Text3.SetFocus Else Myjl.Fields(1)= Text1.Text Myjl.Update Myjl.Close MsgBox ” 密碼修改成功“, vbOKOnly + vbExclamation, ”成功!" Unload Me End If End If End Sub
Private Sub Command2_Click()Unload Me End Sub
后記:經過指導教師徐哲鑫老師的指點,本人已經竭盡全力對本系統進行具體設計,現已趨向完善,在此感謝老師的教導。
參考文獻
[1] 譚浩強,薛淑斌,袁玫.Visual Basic程序設計.北京清華大學學研大廈:北京清華大學出版社.2004 [2] 林陳雷,郭安源,葛曉東.Visual Basic教育信息系統開發實例導航.人民郵電出版社.2006 [3] 張小勤.一種改進的數據庫連接的設計與實現[J].電腦知識與技術(學術交流).2006年05期 [4] 田君.數字圖書館管理平臺系統的研究[D].天津工業大學.2004年
[5] 陳志泊.數據庫系統原理與應用教程.北京市崇文區夕照寺街14號.人民郵電出版社.2011,72-1128
第二篇:VB圖書管理系統
圖書管理系統的設計與實現
目錄
一、序言······················································································································4
二、需求分析說明書 ····································································································4 2.1系統介紹..................................................................................................................................................4 2.2系統面向的用戶群體..............................................................................................................................4 2.3系統的功能性需求..................................................................................................................................4 2.4系統的非功能性需求..............................................................................................................................5 2.4.1用戶界面需求...................................................................................................................................5 2.4.2軟硬件環境需求...............................................................................................................................5 2.4.3軟件質量需求...................................................................................................................................5
三、可行性分析報告 ····································································································5 3.1技術可行性..............................................................................................................................................5 3.2人員可能性..............................................................................................................................................5 3.3時間、設備可能性..................................................................................................................................5 3.4系統工作量..............................................................................................................................................5 3.5代碼工作量..............................................................................................................................................5 3.6文檔要求..................................................................................................................................................5
四、開發環境與項目規劃 ·····························································································5 4.1開發環境..................................................................................................................................................5 4.2項目規劃與管理......................................................................................................................................5 4.2.1開發人員安排...................................................................................................................................5 4.2.2開發進度安排...................................................................................................................................6
五、軟件界面設計標準與規范 ······················································································6 5.1編寫目的..................................................................................................................................................6 5.2界面設計思想..........................................................................................................................................6 5.3界面設計原則..........................................................................................................................................6 5.4界面設計樣式..........................................................................................................................................6 5.5常見提示信息樣式..................................................................................................................................6 5.6常見錯誤信息樣式..................................................................................................................................7 5.7其他界面約定..........................................................................................................................................7
六、軟件編碼設計標準與規范 ······················································································7 6.1對象命名約定..........................................................................................................................................7 6.2常量和變量命名約定..............................................................................................................................8 6.3結構化編碼約定......................................................................................................................................8 6.4數據源的約定..........................................................................................................................................9 6.5數據庫訪問約定......................................................................................................................................9 6.6其他約定..................................................................................................................................................9
七、數據庫分析與設計·································································································10 7.1數據庫環境說明.......................................................................................................................................10 7.2數據庫命名標準與規范...........................................................................................................................10 7.3數據庫邏輯設計.......................................................................................................................................10 7.4數據庫物理設計.......................................................................................................................................10 7.4.1表、視圖匯總...................................................................................................................................10 7.4.2各表、視圖設計詳解.......................................................................................................................11
八、軟件體系結構設計說明書 ······················································································15 8.1系統概述..................................................................................................................................................15 8.2設計約束..................................................................................................................................................15 8.3設計策略..................................................................................................................................................15 8.4系統概要設計說明書..............................................................................................................................16 8.4.1圖例說明...........................................................................................................................................16 8.4.2系統總體結構圖...............................................................................................................................16 8.5系統詳細設計說明書..............................................................................................................................17 8.5.1系統模塊匯總...................................................................................................................................17 8.5.2系統核心模塊詳解...........................................................................................................................18 8.5.3系統模塊詳解...................................................................................................................................28
九、用戶界面設計報告·································································································42 9.1界面設計規范..........................................................................................................................................42 9.2系統窗體匯總..........................................................................................................................................42 9.3主界面設計..............................................................................................................................................43 9.4子界面設計..............................................................................................................................................43 9.5界面資源設計..........................................................................................................................................44
十、軟件測試分析報告·································································································44 10.1測試范圍與主要內容............................................................................................................................44 10.2測試方法................................................................................................................................................44 10.3測試報告................................................................................................................................................44 10.4改進建議與措施....................................................................................................................................45
十一、軟件使用說明書·································································································45 11.1軟件概述.................................................................................................................................................45 11.2使用說明.................................................................................................................................................45 11.2.1系統登陸..........................................................................................................................................45 11.2.2系統退出..........................................................................................................................................46 11.2.3圖書類別管理..................................................................................................................................46 11.2.4圖書信息管理..................................................................................................................................48 11.2.5查詢圖書信息..................................................................................................................................48 11.2.6讀者類別管理..................................................................................................................................49 11.2.7讀者信息管理..................................................................................................................................49 11.2.8查詢讀者信息..................................................................................................................................50 11.2.9借書管理..........................................................................................................................................50 11.2.10還書管理........................................................................................................................................50 參考資料······················································································································51
一、序言
圖書管理系統的設計與推出是多方面原因促成的,比如學校的圖書管理,日常管理工作 1 都是人工操作,歷史數據很難保存和利用。而其他的小型圖書館大多如此。針對這種狀況,我計劃開發一個面向小型圖書館的圖書管理系統,實現對人員、物流的全面管理,以幫助這些圖書館早日實現書店管理信息化。
為了系統的順利開發和維護,特編制如下技術文檔:
想要全部 請加QQ:76536415 專業設計 畢業論文
第三篇:vb圖書管理系統源代碼
Borbook:
Public sqltxt As String Public rno As String
'保存讀者借書證號 Public bno As String
'保存讀者圖書編號 Public xm As String
'保存讀者姓名 Public dw As String
'保存讀者單位 Public rs As ADODB.Recordset
Private Sub Comm1_Click()
rno = Trim(Text1(0).Text)
If rno = “" Then
MsgBox ”借書證號不能為空,請輸入“, vbOKOnly, ”信息提示“
Comm2.Enabled = False
Else
sqltxt = ”select * from reader where 借書證號='“ + rno + ”'“
Set rs = exesql(sqltxt)
If rs.RecordCount = 0 Then
MsgBox ”該讀者未登記,不能借書“, vbOKOnly, ”信息提示“
Comm2.Enabled = False
Else
Text2(0).Text = rs.Fields(”姓名“)
Text2(1).Text = str(rs.Fields(”借書總數“))
Text2(2).Text = str(rs.Fields(”借書總數“)rs.Fields(”已借書數“))
End If
End If
End If End Sub
Private Sub retCom_Click()
Unload Me End Sub
Private Sub Form_Load()
Comm2.Enabled = False End Sub
Edbook:
Private Sub DataGrid1_Click()
End Sub
Private Sub Form_Load()
'說明:為什么使用recs,而不直接使用adodc1.recordset.recordcount?在調用edbook1窗體添加一個記錄(確定)后,再
'返回到本表單,若不在Form_Activate()事件過程中調用adodc1.refresh進行刷新,adodc1.recordset.recordcount值
'仍未增1,這樣調用encomm過程時出錯;若在Form_Activate()事件過程中調用adodc1.refresh進行刷新,'adodc1.recordset.recordcount值增1了,調用encomm過程時也正確,但返回本窗體時,當前行總是第一行,顯然也不行,'因為用戶在添加或修改后希望在datagrid1中顯示當前操作的那條記錄.recs = Adodc1.Recordset.RecordCount End Sub
Private Sub Form_Activate()
DataGrid1.SetFocus
Call encomm End Sub
Private Sub Comm1_Click()
flag = 1
edbook1.Show vbModal End Sub
Private Sub Comm2_Click()
flag = 2
edbook1.Show vbModal End Sub
Private Sub Comm3_Click()
If MsgBox(”真的要刪除[“ + Trim(Adodc1.Recordset.Fields(”書名“))+ ”]嗎?“, vbYesNo, ”信息提示“)= vbYes Then
Adodc1.Recordset.Delete
recs = recs1
Call encomm
End If End Sub
Private Sub Comm4_Click()
Unload Me End Sub
Private Sub encomm()
If recs = 0 Then
Comm2.Enabled = False
Comm3.Enabled = False
Else
Comm2.Enabled = True
Comm3.Enabled = True
End If End Sub
Edlev1:
Dim cond As String
Private Sub Form_Load()
If flag = 2 Then
Text1(0).Text = edlev.Adodc1.Recordset.Fields(”級別“)
Text1(1).Text = edlev.Adodc1.Recordset.Fields(”過期罰款“)
Text1(2).Text = edlev.Adodc1.Recordset.Fields(”借書總數“)
Text1(3).Text = edlev.Adodc1.Recordset.Fields(”借書天數“)
End If End Sub
Private Sub Comm1_Click()
If Trim(Text1(0).Text)= ”“ Or Trim(Text1(1).Text)= ”“ Or Trim(Text1(2).Text)= ”“ Or _
Trim(Text1(3).Text)= ”“ Then
MsgBox ”數據項不全,請重新設置“, vbOKOnly, ”信息提示“
Text1(0).SetFocus
Exit Sub
End If
If flag = 1 Then '添加操作
If edlev.Adodc1.Recordset.RecordCount > 0 Then '原記錄個數大于0
cond = ”級別='“ + Trim(Text1(0).Text)+ ”'“
edlev.Adodc1.Recordset.MoveFirst
'每次從頭開始查找
edlev.Adodc1.Recordset.Find(cond)
If Not edlev.Adodc1.Recordset.EOF()Then
MsgBox ”存在完全相同的記錄“, vbOKOnly, ”信息提示“
Text1(0).SetFocus
Exit Sub
End If
End If
edlev.Adodc1.Recordset.AddNew
edlev.Adodc1.Recordset.Fields(”級別“)= Trim(Text1(0).Text)
edlev.Adodc1.Recordset.Fields(”過期罰款“)= Val(Trim(Text1(1).Text))
edlev.Adodc1.Recordset.Fields(”借書總數“)= Val(Trim(Text1(2).Text))
edlev.Adodc1.Recordset.Fields(”借書天數“)= Val(Trim(Text1(3).Text))
edlev.Adodc1.Recordset.Update
recs = recs + 1
Else
'修改操作
n = edlev.Adodc1.Recordset.AbsolutePosition
cond = ”級別='“ + Trim(Text1(0).Text)+ ”'“
edlev.Adodc1.Recordset.MoveFirst '每次從頭開始查找
edlev.Adodc1.Recordset.Find(cond)
If Not edlev.Adodc1.Recordset.EOF()And edlev.Adodc1.Recordset.AbsolutePosition <> n Then
MsgBox ”存在完全相同的記錄“, vbOKOnly, ”信息提示“
edlev.Adodc1.Recordset.MoveFirst
'這兩個語句恢復原記錄位置
edlev.Adodc1.Recordset.Move(n1)
edlev.Adodc1.Recordset.Fields(”級別“)= Trim(Text1(0).Text)
edlev.Adodc1.Recordset.Fields(”過期罰款“)= Val(Trim(Text1(1).Text))
edlev.Adodc1.Recordset.Fields(”借書總數“)= Val(Trim(Text1(2).Text))
edlev.Adodc1.Recordset.Fields(”借書天數“)= Val(Trim(Text1(3).Text))
edlev.Adodc1.Recordset.Update
End If
Unload Me End Sub
Private Sub Comm2_Click()
Unload Me End Sub
Edreader:
Private Sub DataGrid1_Click()
End Sub
Private Sub Form_Load()
recs = Adodc1.Recordset.RecordCount End Sub
Private Sub Form_Activate()
DataGrid1.SetFocus
Call encomm End Sub
Private Sub Comm1_Click()
flag = 1
edreader1.Show vbModal End Sub
Private Sub Comm2_Click()
flag = 2
edreader1.Show vbModal End Sub
Private Sub Comm3_Click()
If MsgBox(”真的要刪除[“ + Trim(Adodc1.Recordset.Fields(”姓名“))+ ”]嗎?“, vbYesNo, ”信息提示“)= vbYes Then
Adodc1.Recordset.Delete
recs = recs1
Call encomm
End If End Sub Private Sub Comm4_Click()
Adodc1.Recordset.UpdateBatch
Adodc1.Recordset.Close
Unload Me End Sub Private Sub encomm()
If recs = 0 Then
Comm2.Enabled = False
Comm3.Enabled = False
Else
Comm2.Enabled = True
Comm3.Enabled = True
End If End Sub
Edrec1:
Dim cond As String
Private Sub Form_Load()
Label1.Caption = cap
If flag = 1 Then
Text1.Text = ”“
Else
Text1.Text = edrec.Adodc1.Recordset.Fields(”fn“)
End If End Sub
Private Sub Comm1_Click()
If Trim(Text1.Text)= ”“ Then
MsgBox ”數據項不能為空,請重新設置“, vbOKOnly, ”信息提示“
Text1.SetFocus
Exit Sub
End If
If flag = 1 Then '添加操作
If edrec.Adodc1.Recordset.RecordCount > 0 Then '原記錄個數大于0
cond = ”fn='“ + Trim(Text1.Text)+ ”'“
edrec.Adodc1.Recordset.MoveFirst
'每次從頭開始查找
edrec.Adodc1.Recordset.Find(cond)
If Not edrec.Adodc1.Recordset.EOF()Then
MsgBox ”存在完全相同的記錄“, vbOKOnly, ”信息提示“
Text1.SetFocus
Exit Sub
End If
End If
edrec.Adodc1.Recordset.AddNew
edrec.Adodc1.Recordset.Fields(”fn“)= Trim(Text1.Text)
edrec.Adodc1.Recordset.Update
recs = recs + 1
Else
'修改操作
n = edrec.Adodc1.Recordset.AbsolutePosition
cond = ”fn='“ + Trim(Text1.Text)+ ”'“
edrec.Adodc1.Recordset.MoveFirst '每次從頭開始查找
edrec.Adodc1.Recordset.Find(cond)
If Not edrec.Adodc1.Recordset.EOF()And edrec.Adodc1.Recordset.AbsolutePosition <> n Then
MsgBox ”存在完全相同的記錄“, vbOKOnly, ”信息提示“
edrec.Adodc1.Recordset.MoveFirst
'這兩個語句恢復原記錄位置
edrec.Adodc1.Recordset.Move(n1)
edrec.Adodc1.Recordset.Fields(”fn“)= Trim(Text1.Text)
edrec.Adodc1.Recordset.Update
End If
Unload Me End Sub
Private Sub Comm2_Click()
Unload Me End Sub
Menu:
Private Sub MDIForm_Load()
If Not userlevel = ”系統管理員“ Then
menu21.Enabled = False
menu31.Enabled = False
menu41.Enabled = False
menu42.Enabled = False
End If End Sub
Private Sub menu11_Click()
borbook.Show vbModal End Sub
Private Sub menu12_Click()
retbook.Show vbModal End Sub
Private Sub menu13_Click()
End End Sub
Private Sub menu21_Click()
edbook.Show vbModal End Sub
Private Sub menu22_Click()
qubook.Show vbModal End Sub
Private Sub menu31_Click()
edreader.Show vbModal End Sub
Private Sub menu32_Click()
qureader.Show vbModal End Sub
Private Sub menu41_Click()
setuser.Show vbModal End Sub
Private Sub menu42_Click()
If MsgBox(”本功能要清除系統中所有數據,真的初始化嗎?“, vbYesNo, ”確認初始化操作“)
= vbYes Then
Call deldata(”book“)Call deldata(”reader“)Call deldata(”borrow“)Call deldata(”rlevel“)
Call deldata(”depart“)
Call deldata(”press“)
Call deldata(”oper“)
MsgBox ”系統初始化完畢,下次只能以1234/1234(用戶名/口令)進入本系統“, vbOKOnly, ”信息提示“
End If End Sub
Pass:
Public n As Integer
Private Sub Command1_Click()
Dim mrc As ADODB.Recordset
txtsql = ”select * from oper where 用戶名='“ & _
Trim$(Text1(0).Text)& ”'“ & ” And 口令 = '“ & Trim$(Text1(1).Text)+ ”'“
Set mrc = exesql(txtsql)
If mrc.RecordCount = 0 Then '未找到用戶記錄
n = n + 1
If n < 3 Then
MsgBox ”沒有這個用戶,繼續登錄“, vbOKOnly + vbExclamation, ”信息提示“
Text1(0).Text = ”“
Text1(1).Text = ”“
Text1(0).SetFocus
Else
MsgBox ”已登錄失敗三次,退出系統“, vbOKOnly + vbExclamation, ”信息提示“
mrc.Close
Unload Me
End If
Else
'找到合法用戶記錄
userlevel = Trim(mrc.Fields(”級別“))
mrc.Close
Unload Me
menu.Show '調用menu窗體
End If End Sub
Private Sub Command2_Click()
Unload Me End Sub
Private Sub Form_Load()
n = 0
'n保存登錄的次數 End Sub
Private Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer)
Call endata(KeyAscii)End Sub
Qubook:
Private Sub Comm1_Click()
Dim sqltxt As String
If Adodc1.Recordset.Fields(”借否“)= ”借“ Then
no = Trim(Adodc1.Recordset.Fields(”圖書編號“))
sqltxt = ”select * from borrow where 圖書編號='“ + no + ”'“
Set rs = exesql(sqltxt)
If rs.RecordCount = 0 Then
MsgBox ”該圖書沒有借書記錄“, vbOKOnly, ”信息提示“
Else
MsgBox ”圖書編號:“ + no + Chr(10)+ Chr(13)+ _
”書
名:“ + Trim(rs.Fields(”書名“))+ Chr(10)+ Chr(13)+ _
”借 書 人:“ + Trim(rs.Fields(”姓名“))+ Chr(10)+ Chr(13)+ _
”單
位:“ + Trim(rs.Fields(”單位“))+ Chr(10)+ Chr(13)+ _
”借書日期:“ + Format(rs.Fields(”借書日期“), ”yyyy.mm.dd“), vbOKOnly, ”查找結果“
End If
rs.Close
Else
MsgBox ”該書沒有外借,不能顯示借書人“, vbOKOnly, ”信息提示“
End If End Sub
Private Sub Comm2_Click()
Unload Me End Sub
Private Sub Form_Activate()
Adodc1.Refresh
DataGrid1.Refresh
DataGrid1.SetFocus
Call encomm End Sub
Private Sub selcmd1_Click()'設置條件確定
Dim str As String
str = ”“
'條件表達式
If Trim(Text1(0).Text)<> ”“ Then
If str = ”“ Then
str = ”圖書編號='“ + Trim(Text1(0).Text)+ ”'“
Else
str = str + ” and 圖書編號='“ + Trim(Text1(0).Text)+ ”'“
End If
End If
If Trim(Text1(1).Text)<> ”“ Then
If str = ”“ Then
str = ”書名='“ + Trim(Text1(1).Text)+ ”'“
Else
str = str + ” and 書名='“ + Trim(Text1(1).Text)+ ”'“
End If
End If
If Trim(Text1(2).Text)<> ”“ Then
If str = ”“ Then
str = ”作者='“ + Trim(Text1(2).Text)+ ”'“
Else
str = str + ” and 作者='“ + Trim(Text1(2).Text)+ ”'“
End If
End If
If Trim(Text1(3).Text)<> ”“ Then
If str = ”“ Then
str = ”出版社='“ + Trim(Text1(3).Text)+ ”'“
Else
str = str + ” and 出版社='“ + Trim(Text1(3).Text)+ ”'“
End If
End If
If Trim(Text1(4).Text)<> ”“ Then
If str = ”“ Then
str = ”借否='“ + Trim(Text1(4).Text)+ ”'“
Else
str = str + ” and 借否='“ + Trim(Text1(4).Text)+ ”'“
End If
End If
If Trim(Text1(5).Text)<> ”“ Then
If str = ”“ Then
str = ”定價=“ + Trim(Text1(5).Text)
Else
str = str + ” and 定價=“ + Trim(Text1(5).Text)
End If
End If
If str <> ”“ Then
Adodc1.RecordSource = ”select * from book where “ + str
Adodc1.Refresh
Else
Adodc1.RecordSource = ”select * from book“
Adodc1.Refresh
End If
If Adodc1.Recordset.RecordCount = 0 Then
MsgBox ”沒有任何滿足條件的記錄“, vbOKOnly, ”信息提示“
End If
Call encomm End Sub
Private Sub selcmd2_Click()'設置條件重置
Text1(0).Text = ”“
Text1(1).Text = ”“
Text1(2).Text = ”“
Text1(3).Text = ”“
Text1(4).Text = ”“
Text1(5).Text = ”“ End Sub
Private Sub encomm()'自定義子過程:判斷Adodc1中是否存在記錄
If Adodc1.Recordset.RecordCount = 0 Then
Comm1.Enabled = False
Else
Comm1.Enabled = True
End If End Sub
Private Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer)
Call endata(KeyAscii)End Sub
Qureader:
Private Sub Comm1_Click()
Dim strn As String
Dim sqltxt As String
no = Trim(Adodc1.Recordset.Fields(”借書證號“))
sqltxt = ”select * from borrow where 借書證號='“ + no + ”'“
Set rs = exesql(sqltxt)
If rs.RecordCount = 0 Then
MsgBox ”該讀者沒有借任何圖書“, vbOKOnly, ”信息提示“
Else
rs.MoveFirst
strn = ”書
名(借書日期)“ + Chr(10)+ Chr(13)
Do While Not rs.EOF()
strn = strn & Trim(rs.Fields(”書名“))& ”(“ & Format(rs.Fields(”借書日期“), ”yyyy.mm.dd“)& ”)“ + Chr(10)+ Chr(13)
rs.MoveNext
Loop
MsgBox strn, vbOKOnly, ”列所借圖書清單“
rs.Close
End If End Sub
Private Sub Comm2_Click()
Unload Me End Sub
Private Sub Form_Activate()
Adodc1.Refresh
DataGrid1.Refresh
DataGrid1.SetFocus
Call encomm End Sub
Private Sub selcmd1_Click()'設置條件確定
Dim str As String
str = ”“
'條件表達式
If Trim(Text1(0).Text)<> ”“ Then
If str = ”“ Then
str = ”借書證號='“ + Trim(Text1(0).Text)+ ”'“
Else
str = str + ” and 借書證號='“ + Trim(Text1(0).Text)+ ”'“
End If
End If
If Trim(Text1(1).Text)<> ”“ Then
If str = ”“ Then
str = ”姓名='“ + Trim(Text1(1).Text)+ ”'“
Else
str = str + ” and 姓名='“ + Trim(Text1(1).Text)+ ”'“
End If
End If
If Trim(Text1(2).Text)<> ”“ Then
If str = ”“ Then
str = ”單位='“ + Trim(Text1(2).Text)+ ”'“
Else
str = str + ” and 單位='“ + Trim(Text1(2).Text)+ ”'“
End If
End If
If Trim(Text1(3).Text)<> ”“ Then
If str = ”“ Then
str = ”級別='“ + Trim(Text1(3).Text)+ ”'“
Else
str = str + ” and 級別='“ + Trim(Text1(3).Text)+ ”'“
End If
End If
If Trim(Text1(4).Text)<> ”“ Then
If str = ”“ Then
str = ”性別='“ + Trim(Text1(4).Text)+ ”'“
Else
str = str + ” and 性別='“ + Trim(Text1(4).Text)+ ”'“
End If
End If
If str <> ”“ Then
Adodc1.RecordSource = ”select * from reader where “ + str
Adodc1.Refresh
Else
Adodc1.RecordSource = ”select * from reader“
Adodc1.Refresh
End If
If Adodc1.Recordset.RecordCount = 0 Then
MsgBox ”沒有任何滿足條件的記錄“, vbOKOnly, ”信息提示“
End If
Call encomm End Sub
Private Sub selcmd2_Click()'設置條件重置
Text1(0).Text = ”“
Text1(1).Text = ”“
Text1(2).Text = ”“
Text1(3).Text = ”“
Text1(4).Text = ”“ End Sub
Private Sub encomm()'自定義子過程:判斷Adodc1中是否存在記錄
If Adodc1.Recordset.RecordCount = 0 Then
Comm1.Enabled = False
Else
Comm1.Enabled = True
End If End Sub
Private Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer)
Call endata(KeyAscii)End Sub
Retbook:
Public rno As String Public bno As String
Private Sub Comm1_Click()
bno = Trim(Text1.Text)
If bno <> ”“ Then
Dim sqltxt As String
sqltxt = ”select * from borrow where 圖書編號='“ + bno + ”'“
Set brs = exesql(sqltxt)
If brs.RecordCount = 0 Then
MsgBox ”該書不是從本圖書館所借的,不能歸還!“, vbOKOnly, ”信息提示“
Else
If Trim(brs.Fields(”借書證號“))<> rno Then
If rno <> ”“ Then
'另一讀者還書,自動列出上一個還書人的罰款單
dstr = ”罰款單“ + Chr(10)+ Chr(13)
dstr = dstr & ”姓名:“ & Trim(Text2(1).Text)+ ”(“ + rno + ”)罰款總額:“ & str(Text2(4).Text)& ”元“
MsgBox dstr, vbOKOnly, ”列罰款單“
End If
rno = Trim(brs.Fields(”借書證號“))
sqltxt = ”select * from book where 圖書編號='“ + bno + ”'“ '處理圖書記錄
Set bs = exesql(sqltxt)
bs.Fields(”借否“)= ”否“
bs.Update
sqltxt = ”select * from reader where 借書證號='“ + rno + ”'“ '處理讀者記錄
Set rs = exesql(sqltxt)
rs.Fields(”已借書數“)= rs.Fields(”已借書數“)rs.Fields(”已借書數“)
If(Datebrs.Fields(”借書日期“)1
rs.Update
If(Datebrs.Fields(”借書日期“)1
Call encomm
End If End Sub
Private Sub Comm4_Click()
Unload Me End Sub
Private Sub encomm()
If recs = 0 Then
Comm2.Enabled = False
Comm3.Enabled = False
Else
Comm2.Enabled = True
Comm3.Enabled = True
End If End Sub
Setuser1:
Dim cond As String
Private Sub Form_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
SendKeys ”{TAB}“
End If End Sub
Private Sub Form_Load()
If flag = 2 Then
Text1(0).Text = setuser.Adodc1.Recordset.Fields(”用戶名“)
Text1(1).Text = setuser.Adodc1.Recordset.Fields(”口令“)
Combo1.Text = setuser.Adodc1.Recordset.Fields(”級別“)
End If End Sub
Private Sub Comm1_Click()
If Trim(Text1(0).Text)= ”“ Or Trim(Text1(1).Text)= ”“ Or Trim(Combo1.Text)= ”“ Then
MsgBox ”數據項不全,請重新設置“, vbOKOnly, ”信息提示“
Text1(0).SetFocus
Exit Sub
End If
If flag = 1 Then '添加操作
If setuser.Adodc1.Recordset.RecordCount > 0 Then '原記錄個數大于0
cond = ”級別='“ + Trim(Text1(0).Text)+ ”'“
setuser.Adodc1.Recordset.MoveFirst
'每次從頭開始查找
setuser.Adodc1.Recordset.Find(cond)
If Not setuser.Adodc1.Recordset.EOF()Then
MsgBox ”存在完全相同的記錄“, vbOKOnly, ”信息提示“
Text1(0).SetFocus
Exit Sub
End If
End If
setuser.Adodc1.Recordset.AddNew
setuser.Adodc1.Recordset.Fields(”用戶名“)= Trim(Text1(0).Text)
setuser.Adodc1.Recordset.Fields(”口令“)= Val(Trim(Text1(1).Text))
setuser.Adodc1.Recordset.Fields(”級別“)= Trim(Combo1.Text)
setuser.Adodc1.Recordset.Update
recs = recs + 1
Else
'修改操作
n = setuser.Adodc1.Recordset.AbsolutePosition
cond = ”級別='“ + Trim(Text1(0).Text)+ ”'“
setuser.Adodc1.Recordset.MoveFirst '每次從頭開始查找
setuser.Adodc1.Recordset.Find(cond)
If Not setuser.Adodc1.Recordset.EOF()And setuser.Adodc1.Recordset.AbsolutePosition <> n Then
MsgBox ”存在完全相同的記錄“, vbOKOnly, ”信息提示“
setuser.Adodc1.Recordset.MoveFirst
'這兩個語句恢復原記錄位置
setuser.Adodc1.Recordset.Move(n1)
setuser.Adodc1.Recordset.Fields(”用戶名“)= Trim(Text1(0).Text)
setuser.Adodc1.Recordset.Fields(”口令“)= Val(Trim(Text1(1).Text))
setuser.Adodc1.Recordset.Fields(”級別“)= Trim(Combo1.Text)
setuser.Adodc1.Recordset.Update
End If
Unload Me End Sub
Private Sub Comm2_Click()
Unload Me End Sub
Private Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer)
Call endata(KeyAscii)End Sub
模塊:
Public userlevel As String '保存用戶級別
Public flag As Integer
'用作記錄操作標記
Public tna As String
'保存表名:用于調用edrec1窗體 Public cap As String
'保存標題名:用于調用edrec1窗體 Public recs As Integer
'保存記錄集中記錄個數
Sub main()
pass.Show vbModal End Sub
Public Function exesql(ByVal sql As String)As ADODB.Recordset
sql = Trim$(sql)
Set conn = New ADODB.Connection
Set rst = New ADODB.Recordset
conn.ConnectionString = ”DSN=Library;UID=sa;PWD=;“
conn.Open
Set rst.ActiveConnection = conn
rst.LockType = adLockOptimistic
rst.CursorType = adOpenKeyset
rst.Open sql
Set exesql = rst
Set rst = Nothing
Set conn = Nothing End Function
Public Sub deldata(ByVal tn As String)刪除指定表中所有記錄,對于oper表添加一個系統用戶
Dim sql As String
sql = ”delete “ & Trim$(tn)
Set conn = New ADODB.Connection
conn.ConnectionString = ”DSN=Library;UID=sa;PWD=;“
conn.Open
conn.Execute sql
If Trim(tn)= ”oper“ Then
sql = ”insert oper values('1234','1234','系統管理員')“
conn.Execute sql
End If
conn.Close End Sub Public Sub endata(Keyasc As Integer)
If Keyasc = 13 Then
SendKeys ”{TAB}" '將回車鍵轉換成Tab鍵
End If End Sub
第四篇:用C++編寫的圖書管理系統
C++實現圖書管理系統 一:功能:
1.需要有個系統管理員和普通讀者;
2.對圖書庫存圖書的創建,添加,刪除,修改,查詢;
3.對讀者借閱信息的創建,添加,刪除,修改,查詢; 4:普通讀者只有查詢上述兩個文件的權利;
5:管理員可對普通讀者的創建,添加,修改,刪除; 6:管理員擁有上述全部權利;
7:要與文件流進行關聯,如:創建,添加,讀取,刪除,查詢;
第五篇:用c語言編寫一個成績管理系統
程序說明:有N個學生,每個學生的數據包含學號(不重復)、姓名、三門課的成績及平均成績,試設計一學生成績管理系統,使之能提供以下功能:(1)主菜單 學生成績管理系統
1、成績錄入
2、成績查詢
3、成績統計
4、退出(2)各菜單項功能 ① 成績錄入:輸入學生的學號、姓名及三門課的成績; ② 成績查詢:(至少一種查詢方式)。v 按學號查詢學生記錄。v 查詢不及格學生的記錄。③成績統計: v 計算學生的平均分; v 根據學生的平均分高低,對學生的數據進行排序后輸出; v 對學生單科成績排序,輸出學生姓名與該科成績; ④退出系統:退出整個系統(即主菜單)。(3)結構體數組: #define N 30 struct student {int num;/* 定義學號*/
char name[20];/* 定義姓名*/
float score[3];/* 定義存貯三門課成績的數組*/
float average;/* 定義平均成績*/
};struct student stu[N];/* 定義結構體數組,存貯多個學生的記錄*/
.#include
#include
#include
struct student
{ int num;char name[20];
float score[4];
float average;
}
stu[10000];
long t,max;
bool unpass[1000];
FILE *fstu=fopen(“stud.dat”,“at+”);
int init()
{
int no,i;
float s[4],ave;
char nam[20];
while(!feof(fstu))
{
fscanf(fstu,“%d”,&no);
fscanf(fstu,“%s”,nam);
fscanf(fstu,“%f%f%f%f”,&s[1],&s[2],&s[3],&ave);
if(no>max)
max=no;
stu[no].num=no;
strcpy(stu[no].name,nam);
unpass[no]=false;f
or(i=1;i<=3;i++)
{
stu[no].score[i]=s[i];
if(s[i]<60)
unpass[no]=true;
}
stu[no].average=ave;
}
}
int stuinsert()
{
int no,i;
float s[3],sum;
char nam[20],cha;
loop:printf(“請輸入學生的學號、姓名及三門課的成績 n”);
scanf(“%d”,&no);scanf(“%s”,nam);
scanf(“%f%f%f/n”,&s[1],&s[2],&s[3]);
if(no>max)
max=no;
stu[no].num=no;
sum=0.0;
strcpy(stu[no].name,nam);
unpass[no]=false;
for(i=1;i<=3;i++)
{
stu[no].score[i]=s[i];
sum=sum+s[i];
if(s[i]<60)
unpass[no]=true;
}
stu[no].average=sum/3.0;
fprintf(fstu,“n”);
fprintf(fstu,“%d %s %f %f %f %fn”,stu[no].num,stu[no].name,stu[no].score[1],stu[no].score[2],stu[no].score[3],stu[no].average);
}
int find(int x)
{
long i,no;
switch(x)
{
case 1:printf(“請輸入學號:”);
scanf(“%d”,&no);
printf(“%d %s %f %f %f %fn”,stu[no].num,stu[no].name,stu[no].score[1], stu[no].score[2],stu[no].score[3],stu[no].average);
break;
case 2:for(i=1;i<=max;i++)if(unpass[i])printf(“%d %s %f %f %f %fn”,stu[i].num,stu[i].name,stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].average);
break;
}
}
int sort(int x)
{
extern int headprint(int x);
student so[1000];
int i,j,k,n;
switch(x)
{
case 1:for(i=1;i<=max;i++)if(stu[i].num==i)printf(“%d %s %fn”,i,stu[i].name,stu[i].average);
break;
case 2:n=0;
for(i=1;i<=max;i++)
{
j=1;if(stu[i].num==i)
while((so[j].average>stu[i].average)&&(j<=n))
j++;n++;
for(k=n;k>=j;k--)so[k]=so[k-1];so[j]=stu[i];
}
for(i=1;i<=n;i++)
printf(“%d %s %f %f %f %fn”,so[i].num,so[i].name,so[i].score[1],so[i].score[2],so[i].score[3],so[i].average);break;case 3:headprint(4);
}
}
int othersort(int x)
{
extern int headprint(int x);
student so[1000];
int i,j,k,n,q;q=0;
switch(x)
{
case 1:if(q==0)q=1;
case 2:if(q==0)q=2;
case 3:if(q==0)q=3;
n=0;
for(i=1;i<=max;i++)
{
j=1;
if(stu[i].num==i)
while((so[j].score[q]>stu[i].score[q])&&(j<=n))
j++;
n++;
for(k=n;k>=j;k--)
so[k]=so[k-1];
so[j]=stu[i];
}
for(i=1;i<=n;i++)
printf(“%d %s %fn”,so[i].num,so[i].name,so[i].score[q]);
break;
}
}
int select(int x)
{
extern int headprint(int x);
int p;
switch(x)
{
case 1:scanf(“%d”,&p);
switch(p)
{
case 1:stuinsert();
break;
case 2:headprint(2);
break;
case 3:headprint(3);
break;
case 4:t=0;
break;
}
break;
case 2:scanf(“%d”,&p);
find(p);
break;
case 3:scanf(“%d”,&p);
sort(p);
break;
case 4:scanf(“%d”,&p);
othersort(p);
break;
}
}
int headprint(int x)
{
switch(x)
{ case 1:printf(“學生成績管理系統n”);
printf(“
1、成績錄入n”);printf(“
2、成績查詢n”);
printf(“
3、成績統計n”);
printf(“
4、退出n”);
select(x);
break;
case 2:printf(“
1、按學號查詢學生記錄n”);
printf(“
2、查詢不及格學生的記錄n”);
select(x);
break;
case 3:printf(“
1、計算學生的平均分n”);
printf(“
2、根據學生的平均分高低,對學生的數據進行排序后輸出n”);
5printf(“
3、對學生單科成績排序,輸出學生姓名與該科成績n”);select(x);
break;
case 4:printf(“
1、第一科n”);printf(“
2、第二科n”);printf(“
3、第三科n”);select(x);break;;
}
}
int main()
{ max=0;t=1;
init();
loop:headprint(1);
if(t!=0)
goto loop;
}