Chương 5 Xây dựng các màn hình quản lý
5.5 Màn hình chi tiết mượn sách
Xây dựng màn hình theo hình sau:
Chương 5 - Xây dựng các màn hình quản lý
124 STT Tên Control Loại Tiêu đề (Caption)
1 lblDocGia Label “Độc giả”
2 lblTenDocGia Label Họ tên độc giả
3 lblNgayMuon Label “Ngày mượn”
4 lblNgay Label Giá trị ngày mượn
5 group1 GroupBox
6 lblSachHienCo Label “Sách hiện có”
7 lblSach Label Giá trị số sách hiện có
8 SHCList ListView
9 btnChon Button “Chọn”
10 btnBoChon Button “Bỏ chọn”
11 lblSachMuon Label “Sách mượn”
12 lblSachM Label Giá trị số sách mươnợn
13 SMList ListView
Màn hình chi tiết mượn sách được cài đặt thành 2 lớp: lớp ChiTietPhieuMuon_Form là lớp giao diện và lớp PhieuMuonSach là lớp xử lý chính. Trong đó, lớp PhieuMuonSach đã trình bày ở trên.
5.5.1 ChiTietPhieuMuon_Form
Bên cạnh các controls mô tả ở trên, lớp ChiTietPhieuMuon_Form còn các biến thành phần và phương thức như sau:
Lớp ChiTietPhieuMuon_Form Thuộc tính
Tên Lớp Ý nghĩa
pm PhieuMuonSch Biến đảm nhân việc xử lý
dữ liệu Các hàm xử lý biến cố
Tên Điều kiện phát sinh Ý nghĩa
ChiTietPhieuMuon_Form_Load Form Load Hiển thị danh sách các phiếu mượn và các quyển sách có thể cho mượn btnChon_Click Nút btnChon được click Đưa một quyển sách vào
phiếu mượn
btnBoChon_Click Nút btnBoChon được click Bỏ một quyển sách ra khỏi phiếu mượn
SSList_DoubleClick Item SSList được double click
Đưa một quyển sách vào phiếu mượn
SMList_DoubleClick Item SMList được double click
Bỏ một quyển sách ra khỏi phiếu mượn
Phương thức
Tên Ý nghĩa
HienThiDanhSachSachSanSang Hiển thị danh sách sách có thể cho mượn lên màn hình HienThiDanhSachSachMuon Hiển thị danh sách sách được mượn ứng với một phiếu
mượn (chọn trước) lên màn hình
ThemSachMuon Thêm một quyển sách vào một phiếu mưọn XoaSachMuon Bỏ một quyển sách ra khỏi một phiếu mượn
Khi màn hình được load, nó sẽ hiển thị thông tin về phiếu mượn đang xét, danh sách các sách đang được mượn bởi phiếu này cùng với danh sách các sách đang sẵn sàng cho mượn của thư viện. Chúng ta viết hàm xử lý cho sự kiện form load như sau:
Private Sub ChiTietPhieuMuon_Form_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
HienThiDanhSachSachSanSang() HienThiDanhSachSachMuon() End Sub
Trong đó, các hàm hiển thị được cài đặt như sau:
Private Sub HienThiDanhSachSachSanSang()
Chương 5 - Xây dựng các màn hình quản lý
126
str = s_dt.Rows(i)("MaSach") lvi.SubItems.Add(str)
str = s_dt.Rows(i)("TenSach") lvi.SubItems.Add(str)
str = s_dt.Rows(i)("TenTheLoai") lvi.SubItems.Add(str)
str = s_dt.Rows(i)("TacGia") lvi.SubItems.Add(str)
Next
txtNumSS.Text = s_dt.Rows.Count.ToString End Sub
Private Sub HienThiDanhSachSachMuon() SMList.Items.Clear()
Dim sm_dt As DataTable = pm.LayDanhSachSachMuon(MaPhieuMuon) Dim i As Integer
Dim str As String
Dim lvi As ListViewItem
For i = 0 To sm_dt.Rows.Count - 1
'Đưa thông tin chi tiết (thể loại, tác giả ...) lên list view 'và tên sách lên SMList
lvi = SMList.Items.Add((i + 1).ToString) str = sm_dt.Rows(i)("MaSach")
lvi.SubItems.Add(str)
str = sm_dt.Rows(i)("TenSach") lvi.SubItems.Add(str)
str = sm_dt.Rows(i)("TenTheLoai") lvi.SubItems.Add(str)
str = sm_dt.Rows(i)("TacGia") lvi.SubItems.Add(str)
Next
txtNumMuon.Text = sm_dt.Rows.Count.ToString End Sub
Việc lấy dữ liệu được ủy nhiệm cho biến thành phần pm thuộc lớp PhieuMuonSach chứ không thực hiện trực tiếp ở lớp giao diện này. Các hàm hiển thị ở đây chỉ đơn giản là lấy kết quả trả về từ các phương thức của pm và hiển thị lên các controls tương ứng.
Tiếp đến, ta cài đặt chức năng thêm sách vào danh sách mượn: cài đặt hàm xử lý cho sự kiện click của nút btnChon:
Private Sub btnChon_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnChon.Click
ThemSachMuon() End Sub
Hàm ThemSachMuon được cài đặt như sau:
Private Sub ThemSachMuon()
If (SSList.SelectedIndices.Count > 0) Then
'Kiểm tra xem người dùng này đã mược đủ 5 quyển chưa Dim lvi As ListViewItem = SSList.SelectedItems(0) 'Cập nhật lại CSDL
pm.ThemSachMuon(MaPhieuMuon.ToString, lvi.SubItems(1).Text) 'Refresh
HienThiDanhSachSachSanSang() HienThiDanhSachSachMuon()
End If End Sub
Tương tự, ta cài đặt chức năng bỏ một quyển sách ra khỏi danh sách sách mượn:
Private Sub btnBoChon_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBoChon.Click
XoaSachMuon() End Sub
Private Sub XoaSachMuon()
If SMList.SelectedIndices.Count > 0 Then
Dim lvi As ListViewItem = SMList.SelectedItems(0) 'Cập nhật CSDL
pm.XoaSachMuon(MaPhieuMuon.ToString, lvi.SubItems(1).Text) 'Refresh
HienThiDanhSachSachSanSang() HienThiDanhSachSachMuon()
End If End Sub
Để tăng tính tiền dụng cho chương trình, thay vì người dùng cứ phải chọn một quyển sách rồi nhấn nút chọn hay bỏ chọn để có thể đưa sách vào danh sách mượn hày loại khỏi danh sách mượn, chúng ta sẽ cài đặt thêm sự kiện double click trên list: double click trên list sách sẵn sàng sẽ đưa sách vào danh sách mượn, double click trên list sách mượn sẽ loại sách ra khỏi danh sách mượn:
Private Sub SSList_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles SSList.DoubleClick
ThemSachMuon() End Sub
Private Sub SMList_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles SMList.DoubleClick
XoaSachMuon() End Sub
Đến đây chúng ta đã cài đặt xong màn hình chi tiết mượn sách.