Do công việc báo cáo thống kê chủ yếu là tìm kiếm và tính toán, do đó ta xây dựng một lớp xử lý cho tất cả các màn hình thống kê – lớp BaoCaoThongKe. Lớp này sẽ gồm các phương thức nhận vào tiếu chí thông kế, và trả ra bảng dữ liệu ứng với kết quả tìm kiếm.
Lớp BaoCaoThongKe Thuộc tính
Tên Lớp Ý nghĩa
db Database Giao tiếp CSDL
Phương thức
Tên Ý nghĩa
New Hàm tạo
TinhHinhMuonSach Thống kê tình hình mượn sách DocGiaNoTienPhat Thống kê độc giả nợ tiền phạt 6.1.1 New
Public Sub New()
db = New Database(MainForm.SvrName, MainForm.DbName, True, "", "") End Sub
6.1.2 TinhHinhMuonSach Tham số:
Tên Kiểu / Lớp Ý nghĩa
thang Integer Tháng cần thống kê
nam Integer Năm cần thống kê Kết quả trả về: DataTable
Mã nguồn:
Public Function TinhHinhMuonSach(ByVal thang As String, ByVal nam As String) As DataTable
Dim dt As DataTable Dim str As String
‘Phát sinh câu lệnh truy vấn chọn tất cả các quyển sách được mượn trong tháng/năm được chọn
str = "select TenTheLoai,count(s.MaSach) as SoLuotMuon " + _
"from PHIEUMUONSACH pm, CHITIETPHIEUMUON ct, SACH s, THELOAISACH tl "
Chương 6 - Xây dựng các màn hình báo cáo-thống kê
174 6.1.3 DocGiaNoTienPhat
Public Function DocGiaNoTienPhat() Dim dt As DataTable
Dim str As String
‘Phát sinh câu lênh truy vấn chọn tất cả những độc giả có số tiền phạt > 0
str = "Select HoTenDocGia,TienNo from DOCGIA where TienNo > 0"
dt = db.Execute(str) Return dt
End Function
6.2 Màn hình Thống kê tình hình mượn sách theo thể loại
Màn hình này giúp người quản lý theo dõi thông tin mượn sách trong một tháng cụ thể. Người quản lý sẽ nhập tháng/năm vào và nhấn nút xem, tính hình mượn sách thuộc tất cả các thể loại sẽ được hiển thị trong listview. Xây dựng màn hình theo hình sau:
STT Tên Control Loại Tiêu đề (Caption)
1 lblTieude Label “Báo cáo thống kê tình hình mượn sách theo thể loại”
2 lblThang Label “Tháng”
3 txtThang Textbox
4 lblNam Label “Năm”
5 txtNam Textbox
6 MSList Listview
7 lblTongSoLuotMuon Label “Tổng số lượt mượn”
8 lblTong Label “Tổng”
9 btnDong Button “Đóng”
10 btnXem Button “Xem”
Đối với màn hình này, ta chỉ đơn giản cài đặt hàm xử lý cho sự kiện click của button btnXem.
Private Sub btnXem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnXem.Click
'Kiểm tra điều kiện tháng/năm nhập vào
If (Not IsNumeric(txtThang.Text)) Or (Not IsNumeric(txtNam.Text)) Then MessageBox.Show("Thắng và năm nhập vào phải là số", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning)
Return End If
If txtThang.Text = "" Or txtNam.Text = "" Then
MessageBox.Show("Bạn phải nhập cả tháng và năm", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning)
Return End If
If CInt(txtThang.Text) < 1 Or CInt(txtThang.Text) > 12 Then MessageBox.Show("Thắng phải từ 1 đến 12", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning)
Return End If
TKList.Items.Clear()
Dim dt As DataTable = bctk.TinhHinhMuonSach(txtThang.Text, txtNam.Text) Dim i As Integer
Dim str As String
Dim lvi As ListViewItem Dim ratio As Double
Dim tongluotmuon As Long = 0 For i = 0 To dt.Rows.Count - 1
lvi = TKList.Items.Add((i + 1).ToString) str = dt.Rows(i)("TenTheLoai")
lvi.SubItems.Add(str)
tongluotmuon = tongluotmuon + dt.Rows(i)("SoLuotMuon")
Chương 6 - Xây dựng các màn hình báo cáo-thống kê
176
'Tính tỉ lệ
For i = 0 To dt.Rows.Count - 1
ratio = ((dt.Rows(i)("SoLuotMuon") / tongluotmuon)) * 100 str = Format(ratio, "#.00")
TKList.Items(i).SubItems.Add(str) Next
End Sub
Để chương trình được tiện dụng, ta cài đặt cho chương trình tại thời điểm form load có tháng cần xem là tháng hiện hành. Cài đặt hàm xử lý cho sự kiện form load như sau:
Private Sub BC_TK_MuonSachTheoTheLoai_Form_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim d As Date = Today
txtThang.Text = d.Month.ToString txtNam.Text = d.Year.ToString End Sub
6.3 Màn hình Thống kê độc giả nợ tiền phạt
Màn hình Thống kê độc giả nợ tiền phạt cho phép theo dõi tình hình các độc giả nợ tiền phạt.
cho đến thời điểm hiện tại. Xây dựng màn hình như hình sau:
STT Tên Control Loại Tiêu đề (Caption)
1 lblTieude Label “Báo cáo thống kê độc giả nợ tiền phạt”
2 lblNgay Label “Ngày”
3 lblNgayVal Label
4 TNList ListView
5 lblTongTienNo Label “Tổng tiền nợ”
6 lblTong Label
7 btnDong Button