II. PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG QUẢN LÝ THƯ VIỆN
2. Biểu đồ luồng dữ liệu
2.1. Biểu đồ luồng dữ liệu mức ngữ cảnh
2.2. Biểu đồ luồng dữ liệu mức đỉnh
Độc giả Quản lý thư viện Nhà cung cấp
Yêu cầu độc giả
Trả lời của thư viện
Yêu cầu mua sách
Trả lời của nhà cung cấp Quản lý thẻ quản lý sách quản lý độc giả Sách Thẻ Độc giả Người quản lý độc giả T hô ng ti n v ề t hẻ
Yêu cầu thông tin về độc giả
Y êu c ầu tì m k iế m th ôn g tin v ề độc g iả
Yêu cầu thông tin về sách
2.3. Biểu đồ luồng dữ liệu mức dưới đỉnh chức năng Quản lý thẻ Nhận phiếu yêu cầu Cấp thẻ Hình thức xử lý Xác định độc giả vi phạm Xét duyệt phiếu yêu cầu Người quản lý Độc giả Phiếu Thẻ thư viện Y êu c ầu m ượ n sá ch
trả lời kết quả sau khi duyệt phiếu Đưa ra hình thức xử lý d uy ệt p hi ếu Người quản lý Q uy ết địn h cấ p th ẻ
CHƯƠNG 4: THIẾT KẾ HỆ THỐNG
I. THIẾT KẾ CƠ SỞ DỮ LIỆU 1. Bảng DocGia 2. Bảng LoaiDocGia 3. Bảng Sach 4. Bảng TheLoaiSach 5. Bảng TheMuon
6. Bảng QTMuon
7. Bảng CTMuon
8. Bảng ThamSoNguyen 9. Bảng TaiKhoan
II.THIẾT KẾ GIAO DIỆN MÀN HÌNH 1. Danh sách các màn hình
STT Màn hình Chức năng
1 Màn hình chính Màn hình chính của hệ thống
2 splashscr Màn hình splash giới thiệu
3 Đăng nhập Màn hình đăng nhập vào hệ thống.
4 Danh mục sách Quản lý thông tin về sách của thư viện
5 Danh mục độc giả Quản lý thông tin độc giả. 6 Lập thẻ thư viện Lập thẻ thư viện cho độc giả 7 Mượn trả sách Thực hiện quá trình mượn trả sách 8 Thay đổi quy định Thay đổi những quy định đã thiết lập
9 Thêm người dùng Thêm mới người dùng. 10 Quản lý người dùng Xóa, sửa người dùng của quản lý.
11 Phân quyền Phân quyền cho người dùng.
2. Chi tiết màn hình
2.1. Màn hình chính
1: Form Quản lý thư viện: hệ thống menu
2: Các button view icon: hiển thị những chức năng trên list view 3: List view : hiển thị những icon chức năng
4: frame : hiển thị tên và quyền truy cập vào của người dùng MH Chinh Form_Load MH sflashscr khoidong MH đăng nhập khoidong Connect DB khoidong 2 3 1 4
2.2. Màn hình danh mục sách
Người dùng sử dụng form này khi nhập sách mới, thêm, cập nhật, xóa, tra cứu sách
1: Form Danh mục sách
2: Textbox để thực hiện tra cứu về sách ( tra cứu tương ứng với cột của lưới datagird ). Người dùng nhập vào thông tin cần tra cứu, chương trình sẽ tự động lọc từ từ trên lưới datagird và hiển thị cho người dùng chọn lựa.
3: DataGrid hiển thị thông tin về danh sách sách và thông tin tương ứng về sách ở bên dưới. Khi người dùng nhấp chuột vào DataGrid thì thông tin tương ứng sẽ được hiển thị ở bên dưới lưới
4: Frame hiển thị thông tin về sách, người dùng có thể nhập thông tin vào frame này để thực hiện các chức năng thêm , cập nhật, xóa sách khi cần theo nhu cầu
2 5 4 MH DM sách Form_Load Lấy dữ liệu Thực hiện MH DM sách Hiển thị thông tin lên form
1
2
3
5: Button thực hiện các chức năng thêm, cập nhật, xóa các sách và thoát form. Groupbox thông tin về sách :
STT Tên Kiểu Ý nghĩa
1 txttext(0) String Mã sách
2 txttext(1) String Tên sách
3 txttext(2) String Tác giả
4 txttext(3) String Nhà xuất bản 5 txttext(4) String Năm xuất bản
6 txttext(5) String Tổng số bản
7 txttext(6) String Tình trạng sách
8 txttext(7) String Số trang
9 cboTheloai String Thể loại sách 10 cboNgonngu String Ngôn ngữ sách
11 DTPkr Date Ngày nhập sách
• Tra cứu thông tin của một sách :
- Nhập: nhập thông tin cần tìm vào các ô textbox trên các cột tương ứng của lưới để tra cứu theo tiêu chí mong muốn
- Xuất: Danh sách thông tin sách theo tiêu chuẩn tra cứu / không hiển thị sách nếu không tìm thấy
- Thuật giải: (Mã giả ) IF tìm thấy THEN
Hiển thị danh sách hợp đồng lên màn hình. ELSE
Danh sách sẽ rỗng END IF
• Lưu thông tin của một sách :
- Nhập: Thông tin tra cứu theo hình thức phù hợp, thông tin cần cập nhật - Xuất: Thông báo đã lưu/ Thông báo không thể lưu
- Thuật giải: (mã giả ) IF tìm thấy THEN
Hiển thị thông tin tìm được lên màn hình Lưu trong TABLE SACH
IF Lưu được THEN
Thông báo đã lưu và
Hiển thị TABLE SACH mới lên màn hình với mẫu tin đã được lưu
ELSE
Báo lỗi không thể lưu được. END IF
ELSE
• Sửa thông tin của một sách :
- Nhập: Thông tin tra cứu theo hình thức phù hợp, thông tin cần sửa - Xuất: Thông báo đã sửa/ Thông báo không thể sửa.
- Thuật giải: (Mã giả) IF tìm thấy THEN
Hiển thị thông tin tìm được lên màn hình Sửa trong TABLE SACH
IF sửa được THEN
Thông báo đã sửa và
Hiển thị TABLE SACH mới lên màn hình với mẫu tin đã được sửa
ELSE
Báo lỗi không thể sửa được. END IF
ELSE
Thông báo không tồn tại mẫu tin END IF
2.3. Màn hình danh mục các độc giả
Người dùng sử dụng form này khi nhập sách mới, thêm, cập nhật, xóa, tra cứu độc giả
1: Form Danh mục độc giả
2: Textbox để thực hiện tra cứu về độc giả ( tra cứu tương ứng với cột của lưới datagird ). Người dùng nhập vào thông tin cần tra cứu, chương trình sẽ tự động lọc từ từ trên lưới datagird và hiển thị cho người dùng chọn lựa.
3: DataGrid hiển thị thông tin về danh sách độc giả và thông tin tương ứng về độc giả ở bên dưới. Khi người dùng nhấp chuột vào DataGrid thì thông tin tương ứng sẽ được hiển thị ở bên dưới lưới
4: Frame hiển thị thông tin về độc giả, người dùng có thể nhập thông tin vào frame này để thực hiện các chức năng thêm , cập nhật, xóa độc giả khi cần theo nhu cầu
MH DM ĐG Form_Load
Lấy dữ liệu Thực hiện
MH DM ĐG Hiển thị thông tin lên form 1 2 2 1 5 4 3
5: Button thực hiện các chức năng thêm, cập nhật, xóa các độc giả và thoát form. Groupbox thông tin về sách :
STT Tên Kiểu Ý nghĩa
1 txttext(0) String Mã độc giả
2 txttext(1) String Tên độc giả
3 txttext(2) String Giới tính
4 txttext(3) String Địa chỉ
5 txttext(4) String Điện thoại
6 txttext(5) String Email
7 cboMaloaiDG String Thể loại độc giả
8 DTPkr Date Ngày sinh
• Tra cứu thông tin của một độc giả :
- Nhập: nhập thông tin cần tìm vào các ô textbox trên các cột tương ứng của lưới để tra cứu theo tiêu chí mong muốn
- Xuất: Danh sách thông tin độc giả theo tiêu chuẩn tra cứu / không hiển thị độc giả nếu không tìm thấy
- Thuật giải: (Mã giả ) IF tìm thấy THEN
Hiển thị danh sách hợp đồng lên màn hình. ELSE
Danh sách sẽ rỗng END IF
• Lưu thông tin của một độc giả :
- Nhập: Thông tin tra cứu theo hình thức phù hợp, thông tin cần cập nhật - Xuất: Thông báo đã lưu/ Thông báo không thể lưu
- Thuật giải: (Mã giả ) IF tìm thấy THEN
Hiển thị thông tin tìm được lên màn hình Lưu trong TABLE DOCGIA
IF Lưu được THEN
Thông báo đã lưu và
Hiển thị TABLE DOCGIA mới lên màn hình với mẫu tin đã được lưu
ELSE Báo lỗi không thể lưu được. END IF
ELSE
• Sửa thông tin của một độc giả :
- Nhập: Thông tin tra cứu theo hình thức phù hợp, thông tin cần sửa - Xuất: Thông báo đã sửa/ Thông báo không thể sửa.
- Thuật giải: (Mã giả) IF tìm thấy THEN
Hiển thị thông tin tìm được lên màn hình Sửa trong TABLE DOCGIA
IF sửa được THEN
Thông báo đã sửa và
Hiển thị TABLE DOCGIA mới lên màn hình với mẫu tin đã được sửa
ELSE
Báo lỗi không thể sửa được. END IF
ELSE
Thông báo không tồn tại mẫu tin END IF
2.4. Màn hình lập thẻ thư viện cho độc giả
Thực hiện các chức năng lưu, xóa thẻ thư viện của độc giả :
+ Chọn độc giả cần lập thẻ trong combobox : nếu độc giả chưa có thẻ thư viện thì button Lưu-F2 sẽ hiện ra cho lưu, nếu độc giả đã có thẻ thư viên rồi thì nút Lưu-F2 sẽ không hiện ra mà chỉ có button Xóa-F4 hiển thị
+Chọn những yêu cầu cần thiết nhấn Lưu hoặc Xóa để thực hiện +Chọn Trở ra để quay về màn hình chính
2.5. Màn hình Mượn – Trả Sách
Thực hiện các chức năng mượn trả sách của độc giả : + Chọn Tab Mượn hoặc Trả sách theo yêu cầu
*Mượn sách : ( chưa thực hiện hoàn chỉnh )
+ Chọn độc giả cần mượn sách trong combobox : nếu độc giả chưa có thẻ thư viện thì button Lập thẻ sẽ hiện ra cho lập thẻ
+Chọn những Quyển sách độc giả muốn mượn : double_click lên sách muốn mượn hoặc chọn sách rồi nhấn vào button “>>” để chọn, làm ngược lại để bỏ.
+ Kiểm tra số sách độc giả đang giữ ( nếu có), thời hạn trả sách để độc giả biết. +Nhấp nút chấp nhận khi muốn mượn sách
+Chọn Trở ra để quay về màn hình chính *Trả sách : (tương tự như Mượn sách)
2.6. Màn hình thay đổi quy định
Khi có nhu cầu thay đổi các quy đinh của quản lý thì người dùng mở form này lên thực hiện.
+ Cho phép thay đổi, xóa, tra cứu các tham số
2.7. Màn hình thêm người dùng
Khi có nhu cầu thêm người dùng, quản lý chạy form này để thêm
2.8. Màn hình danh sách người dùng
Hiển thị những người đang có quyền trong phần mềm này, người quản lý có thể thay đổi, xóa , cập nhật những người dùng.
III. THỬ NGHIỆM VÀ KIỂM TRA
Các số liệu thử nghiệm và kiểm tra
Sách
ThamSoNguyen
TaiKhoan
PHỤ LỤC
CODE MỘT SỐ MODULE CHÍNH CỦA CHƯƠNG TRÌNH
* Form main:
'Option Explicit
Public taikhoan As String Public quyen As String
Dim PreWith As Long, PreHeight As Long Private Sub CmdIcon_Click()
If ListFunct.View = lvwIcon Then ListFunct.View = lvwList
Else
ListFunct.View = lvwIcon End If
End Sub
Private Sub CmdMenu_Click(Index As Integer) On Error GoTo exitt
Dim i As Integer For i = 0 To 5 CmdMenu(i).BackColor = &HC0FFC0 Next CmdMenu(Index).BackColor = &H80000018 ListFunct.ListItems.Clear ListFunct.Icons = ImageList1(Index) ListFunct.SmallIcons = ImageList1(Index) For i = 1 To ImageList1(Index).ListImages.Count
If ImageList1(Index).ListImages.Item(i).Tag <> "un" Then Set mItem = ListFunct.ListItems.Add(key:=ImageList1(Index).ListImages.Item(i).key, Text:=ImageList1(Index).ListImages.Item(i).key, Icon:=ImageList1(Index).ListImages.Item(i).key, SmallIcon:=ImageList1(Index).ListImages.Item(i).key) End If Next i exitt: End Sub
Private Sub Command7_Click() frmSplashscr.Show 1
End Sub
Private Sub Command9_Click()
If MsgBox("Bạn có chắc chắn thoát không ?", vbYesNo, "Thông Báo") = vbYes Then
End If End Sub
Private Sub Form_Load() ''On Error GoTo nextx 'Dim rs As Recordset 'Set rs = New Recordset
'rs.Open "select * from sec_user where isadmin=1 and usergroupid=" + curuser.EmployeeID, cn, 1, 3
'If rs.RecordCount = 0 Then 'CmdMenu(5).Visible = False 'End If frmDangnhap.Show vbModal, Me Text1.Text = taikhoan Text2.Text = quyen Connect_To_DataBase PreWith = Me.Width PreHeight = Me.Height CmdMenu_Click (0) nextx: End Sub
Private Sub Form_Unload(Cancel As Integer) ' deletePWD
End End Sub
Private Sub ListFunct_DblClick() Dim rs As Recordset
Set rs = New Recordset 'Tro giup
If CmdMenu(2).BackColor = &H80000018 Then Select Case ListFunct.SelectedItem.Index
Case 1
frmSplashscr.Show 1 Case 2
MsgBox ("Chức năng này chưa được cài đặt") End Select
Exit Sub End If ' Tra cuu
If CmdMenu(1).BackColor = &H80000018 Then Select Case ListFunct.SelectedItem.key
Case "Tra cứu sách" FrmDMSach.Show 1 Case "Tra cứu độc giả"
FrmDSDG.Show 1
Case "Tra cứu thẻ thư viện"
MsgBox ("Chức năng này chưa được cài đặt") End Select
Exit Sub End If 'danh muc
If CmdMenu(0).BackColor = &H80000018 Then Select Case ListFunct.SelectedItem.key
Case "Danh sách độc giả" FrmDSDG.Show 1
Case "Ca làm việc"
MsgBox ("Chức năng này chưa được cài đặt") Case "Danh mục thẻ thư viện"
MsgBox ("Chức năng này chưa được cài đặt ") Case "Danh mục sách " FrmDMSach.Show 1 End Select Exit Sub End If ' Hệ thống
If CmdMenu(5).BackColor = &H80000018 Then Select Case ListFunct.SelectedItem.key
Case "Cấu hình chương trình"
MsgBox ("Chức năng này chưa được cài đặt ") Case "Cấp quyền"
frmPhanQuyen.Show 1 Case "Thay đổi quy định" frmTDQD.Show 1
Case "Người sử dụng" frmNewUser.Show 1 Case "Nhóm sử dụng" frmUser.Show 1
Case "Bỏ kết nối cơ sở dữ liệu" mnudisconnect_Click
Case "Kết nối cơ sở dữ liệu" mnuconnect_Click
End Select Exit Sub End If ' xu ly
If CmdMenu(3).BackColor = &H80000018 Then Select Case ListFunct.SelectedItem.key
Case "Thẻ độc giả" frmLapthe.Show 1 Case "Mượn trả sách" frmMuonTraSach.Show 1 End Select Exit Sub End If End Sub
Private Sub ListFunct_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then
ListFunct_DblClick End If
End Sub
Private Sub mnubackup_Click() Dim rs As Recordset
End Sub
Private Sub mnuconnect_Click() If cn.State <> adStateOpen Then 'frmODBCLogon.Show 1 Frame2.Enabled = True ListFunct.Enabled = True Dim rs As Recordset Set rs = New Recordset 'Connect_To_DataBase
'rs.Open "select * from sec_user where isadmin=1 and usergroupid=" + curuser.EmployeeID, cn, 1, 3
'If rs.RecordCount = 0 Then ' CmdMenu(5).Visible = False 'Else CmdMenu(5).Visible = True 'End If Else Exit Sub End If End Sub
Private Sub mnuDangnhap_Click() frmDangnhap.Show 1
Text1.Text = taikhoan Text2.Text = quyen End Sub
Private Sub mnuDG_Click() FrmDSDG.Show 1
Private Sub mnudisconnect_Click() Dim Msg As String
If cn.State = adStateOpen Then Msg = "Không kết nối vào CSDL"
response = MsgBox(Msg, vbQuestion + vbOKCancel, "Thông báo") If response = vbOK Then
cn.Close CmdMenu_Click 0 Frame2.Enabled = False 'ListFunct.Enabled = False ListFunct.Enabled = False Else 'txtQuery.SetFocus End If End If End Sub
Private Sub mnuexit_Click()
If MsgBox("Bạn có chắc chắn thoát không?", vbYesNo, "Thông báo") = vbYes Then End
End If End Sub
Private Sub mnuGT_Click() frmSplashscr.Show 1
End Sub
Private Sub mnuLTDG_Click() frmLapthe.Show 1
End Sub
Private Sub mnuMuontra_Click() frmMuonTraSach.Show 1
End Sub
Private Sub mnurestore_Click() Dim rs As Recordset
End Sub
Private Sub Form_Resize() On Error GoTo nextt Dim i, j, k As Integer If Me.Width < 10395 Then Me.Width = 10395 End If If Me.Height < 6960 Then Me.Height = 6960 End If i = Me.Width - PreWith
k = Me.Height - PreHeight Frame2.Width = Frame2.Width + i Frame3.Left = Frame3.Left + i Frame1.Height = Frame1.Height + k Frame1.Width = Frame1.Width + i ListFunct.Width = ListFunct.Width + i ListFunct.Height = ListFunct.Height + k StatusBar1.Panels(1).Width = StatusBar1.Panels(1).Width + i / 3 StatusBar1.Panels(2).Width = StatusBar1.Panels(2).Width + i / 3 StatusBar1.Panels(3).Width = StatusBar1.Panels(3).Width + i / 3 StatusBar1.Top = StatusBar1.Top + k Picture1.Left = Picture1.Left + i Picture1.Height = Picture1.Height + k CmdIcon.Left = CmdIcon.Left + i CmdIcon.Top = CmdIcon.Top + k Command8(0).Left = Command8(0).Left + i Command8(0).Top = Command8(0).Top + k Command7.Left = Command7.Left + i Command7.Top = Command7.Top + k Command9.Left = Command9.Left + i Command9.Top = Command9.Top + k 'CmdMenu(5).Left = CmdMenu(5).Left + i PreWith = Me.Width PreHeight = Me.Height nextt: End Sub
'Private Sub Connect_To_DataBase() Set cn = New ADODB.Connection
' cn.Provider = "Microsoft.Jet.OLEDB.4.0"
' cn.ConnectionString = App.Path + "\Library.mdb" ' cn.Open
'End Sub
Private Sub mnuSach_Click() FrmDMSach.Show 1
End Sub
* Form đăng nhập:
Public quyen As Integer Dim flag As Boolean
Private Sub cmdCancel_Click() End
End Sub
Private Sub cboTHUTHU_Click() If cboThuthu.Text <> "OTHER" Then
txtPassword.Visible = True txtPassword.Enabled = True txtPassword_Change txtPassword.SetFocus Else txtPassword.Visible = False Cmdok.Enabled = True Cmdok.SetFocus End If End Sub
Private Sub cmdOK_Click() Dim quyen As String
If cboThuthu.Text <> "OTHER" Then
quyen = CheckPasswd(Trim(cboThuthu.Text), Trim(txtPassword.Text)) If quyen <> "" Then
frmMain.quyen = quyen
frmMain.taikhoan = cboThuthu.Text Unload Me
Else
MsgBox "Nhập sai Password" txtPassword.SetFocus End If Else frmMain.quyen = "USER" frmMain.taikhoan = cboThuthu.Text Unload Me End If End Sub
Private Sub Form_Load() TruyVan
txtPassword.Visible = False Cmdok.Enabled = False End Sub
Private Sub TruyVan()
'Connection.ConnectDataBase
Connection.OpenData ("SELECT TENTK FROM TAIKHOAN") Do Until rs.EOF cboThuthu.AddItem rs!TenTK rs.MoveNext Loop cboThuthu.AddItem "OTHER" Connection.Closedata End Sub
Function CheckPasswd(user As String, password As String) As String 'Connection.ConnectDataBase
Connection.OpenData ("SELECT * FROM TAIKHOAN WHERE TENTK ='" & user & "'")
'Dim rs As Recordset 'Dim sql As String 'Set rs = New Recordset
'sql = "select * from THUTHU WHERE TENTHUTHU ='" & user & "'" 'rs.Source = sql
'rs.ActiveConnection = frmMain.cn 'rs.Open
If rs!Matkhau = password Then CheckPasswd = rs!GHICHU Else CheckPasswd = "" End If Exit Function End Function
Private Sub txtPassword_Change() If txtPassword.Text <> "" Then Cmdok.Enabled = True Else Cmdok.Enabled = False End If End Sub * Form danh mục sách:
Dim bsort As Boolean, tf As Boolean, stFilte As String Dim PreWith As Long, PreHeight As Long
Private Sub CmdButton_Click(Index As Integer) ''On Error GoTo exitt
'Dim rs As Recordset Dim rst As Recordset Select Case Index Case 0 txttext(0).Text = "MS" txttext(1).Text = "" txttext(2).Text = "" txttext(3).Text = "" txttext(4).Text = "" txttext(5).Text = "" txttext(7).Text = "" txttext(6).Text = "" cboTheloai.Text = "A"
DTPkr.Value = Date DTPkr.Enabled = True cboTheloai.Enabled = True cboNgonngu.Enabled = True Case 1
Connection.OpenData ("SELECT * from SACH") Do Until (rs.EOF)
If (rs!MASACH = txttext(0).Text) Then MsgBox "Mã sách đã tồn tại!" Exit Sub End If rs.MoveNext Loop Dim i As Integer For i = 0 To 5 If txttext(i).Text = "" Then
MsgBox ("Dữ liệu chưa đủ để thêm") Exit Sub End If Next i 'For i = 5 To 7 If txttext(7).Text = "" Then txttext(7).Text = 0 End If 'Next i
sql = "INSERT INTO SACH VALUES" & _
"('" & txttext(0).Text & "','" & txttext(1).Text & "','" & cboTheloai.Text & "','" & txttext(2).Text & "','" & txttext(3).Text & "','" & txttext(4).Text & "','" &