Tải bản đầy đủ (.doc) (43 trang)

Xây dựng phần mềm quản lý việc đăng ký, mượn và trả sách của các bạn đọc thư viện

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.33 MB, 43 trang )

Đại Học Quốc Gia TP.Hồ Chí Minh
Trường Đại Học Công Nghệ Thông Tin
BÁO CÁO ĐỒ ÁN
LẬP TRÌNH TRÊN WINDOWS
ĐỀ TÀI
GVHD: Ngô Thanh Hùng.
Nhóm: Restart.
Thành Viên:
Nguyễn Thành Vinh © MSSV: 08520618.
Cáp Duy Vương MSSV: 08520486.
Nguyễn Thái Nhân MSSV: 08520571.

TP.HCM tháng 6-2010
MỤC LỤC
  
LỜI NÓI ĐẦU
Trong thời đại tri thức ngày nay, với sự phát triển nhanh chóng của công nghệ thông tin góp
phần vào việc nâng cao chất lượng giáo dục ở nước ta. Song song với việc đào tạo, việc quản lý
cũng không kém phần quan trọng mà đại diện là việc
quản lý sách trong các thư viện. Hằng ngày,
một số lượng lớn độc giả vào thư viện để mượn sách phục vụ việc học tập, tra cứu thông tin, và họ
cũng sử dụng một số lượng lớn sách. Việc quản lý sách, độc giả và các vấn đề liên quan bắt đầu
nảy sinh trong suy nghĩ của những người quản lý, thủ thư là làm sao để quản lý tốt hệ thống mạng
lưới nói trên.
Phần mềm quản lý thư vi
ện
này nhằm giải quyết phần nào khó khăn trên. Phần mềm hỗ trợ
các chức năng thông dụng mà nhiệm vụ của thủ thư hay làm và hỗ trợ việc lưu trữ dữ liệu sách. Để
biết rõ về phần mềm hãy cùng tôi đến chương kế.
Qua đây nhóm chúng em cũng gởi lời cảm ơn chân thành đến thầy Ngô Thanh Hùng đã tận
tình giúp đỡ, làm sáng tỏ một số thắc mắc của nhóm trong quá trình thực hiện.


Nhóm thực hiện.
Chương I
KHẢO SÁT HIỆN TRẠNG VÀ
XÁC ĐỊNH YÊU CẦU
I . KHẢO SÁT HIỆN TRẠNG.
Một thư viện cần quản lý việc đăng ký, mượn và trả sách của các bạn đọc thư viện.
Mỗi quyển sách trong thư viện có một mã sách (masach) để phân biệt với các quyển sách
khác sách khác. Và 1 quyển sách có thể có nhiều bản copy của nó (soluongsach). Các loại sách
cùng thể loại thì được xếp chung 1 ngăn trong giá sách, mỗi thể loại có mã (matheloai) để phân
biệt với nhau. Mã sách bao gồm 2 phần, phần đầu là mã thể loại (CNTT, KT…), phần sau là số
thứ tự của sách (1, 2, 3…). Trên mỗi quyển sách lưu đầy đủ thông tin (tên, nhà xuất bản, thể
loại…).
Để trở thành độc giả của thư viện, thì mỗi bạn đọc phải trên 18 tuổi. Bạn phải đăng ký và
cung cấp các thông tin cá nhân cũng như địa chỉ và điện thoại của mình. Thủ thư sẽ cấp cho bạn
đọc một thẻ điện tử, trên đó có mã số thẻ chính là mã số bạn đọc để phân biệt các bạn đọc khác.
Thẻ này có giá trị trong 1 năm kể từ ngày đăng ký. Khi thẻ hết hạn, bạn vẫn có thể đọc sách tại
thư viện, nhưng nếu bạn muốn mượn sách về thì phải gia hạn thẻ.
a) Mượn sách:
Một cuốn sách có thể được mượn tối đa 1 tháng. Nếu quá hạn mà chưa trả, thủ thư sẽ liên lạc
với bạn để đòi lại sách và thu tiền phạt, hoặc khi bạn đem sách trả thư viện bạn sẽ bị phạt tiền trễ
hạn là 5000đ/quyển/ngày (tính từ ngày hết hạn trả sách).
Khi mượn sách, bạn đọc đem sách đến quầy để gặp trực tiếp thủ thư. Thủ thư sử dụng máy để
đọc thẻ từ và chương trình hiển thị thông tin về bạn đọc mang thẻ đó như: tên, địa chỉ, điện thoại,
và ngày hết hạn thẻ. Nếu thẻ nào đã hết hạn thì chương trình cũng sẽ cảnh báo thẻ đó, hỏi bạn có
muốn gia hạn thẻ hay không, nếu có thì bạn sẽ đóng tiền gia hạn và thẻ bạn sẽ được gia hạn thêm
1 năm nữa, nếu không thì bạn sẽ không được mượn sách về nhà. Mỗi lần mượn được tối đa 3
quyển. Nếu trước kia bạn đã mượn 3 quyển, hoặc bạn chưa trả 1 quyển sách hết hạn trả thì bạn sẽ
bị cảnh báo và không cho mượn sách lần này.
Nếu tất cả thông tin về tài khoản của bạn đọc hợp lệ, thì thủ thư sẽ cho mượn sách. Thủ thư
sử dụng máy quét gáy sách để đọc mã sách và số lượng của sách đó (có thể 1, 2, hoặc 3). Chương

trình sẽ xuất hiện thông tin đầy đủ về quyển sách bạn muốn mượn. Nếu cuốn sách này không thể
mượn được thì chương trình sẽ hiển thị thông báo. Nếu cuốn sách này có thể cho mượn thì cho
mượn và cập nhật lại số lượng sách đó và tình trang mới của phiếu mượn sách của độc giả. Một
quyển sách không thể mượn khi nó chỉ còn duy nhất 1 bản copy trong thư viện, bản này chỉ để
đọc.
b) Trả sách:
Khi bạn đến thư viện trả sách, thủ thư sẽ kiểm tra mã thẻ thư viện của bạn, xem bạn mượn
những quyển sách nào, trả những quyển nào, và nếu quyển sách trễ hạn hoặc bạn làm mất thì bạn
sẽ chịu phạt. Phí phạt khi làm mất sách gấp 4 lần giá bìa của sách đó.
Sau khi bạn trả sách, thông tin trong phiếu mượn sách của bạn sẽ được cập nhật (những
quyển đã trả, ngày trả, tiền phạt (nếu có)…). Và chương trình cũng sẽ update lại thông tin về số
lượng quyển sách bạn đã trả (tăng thêm 1, 2, hoặc 3). Trong trường hợp bạn làm mất sách, thì số
lượng loại sách đó sẽ giảm đi (1, 2 hoặc 3), cùng với đó thì số sách còn lại các độc giả có thể
mượn (sosachconlai) sẽ giảm theo tương ứng.
c) Tìm kiếm:
Chương trình sẽ hỗ trợ độc giả tìm kiếm sách theo các thông tin kèm theo. Hoặc hỗ trợ thủ
thư tìm kiếm thông tin về 1 độc giả nào đó.
d) Thống kê:
Thủ thư cũng có thể thống kê để xem có những quyển sách nào đang được mượn, sách nào
trễ hạn trả, sách đã bị mất, hoặc xem tổng số sách. Ngoài ra, chương tình còn hỗ trợ xem số độc
giả đã mượn sách của thư viện (từ ngày….đến ngày), số độc giả trễ hạn trả sách, cùng với thông
tin phiếu mượn của độc giả đó.
e) Chỉnh sửa thông tin:
Chương trình cũng hỗ trợ đăng ký nhân viên, thêm, chỉnh sửa, xóa nhân viên, độc giả, sách.
II. XÁC ĐỊNH YÊU CẦU.
A) Yêu cầu chức năng:
STT Tên yêu cầu Form trong code Qui
định
Ghi chú
1. Lập thẻ độc giả frmDangkymoi QD1

2. Thao tác sách frmDMSach QD2 Thêm, xóa, sửa
3. Thao tác độc giả frmDocgia QD1 Xóa, sửa
4. Gia hạn thẻ frmGiahanthe Update
5. Thao tác thể loại frmLoaisach Thêm, xóa, sửa
6. Cho mượn sách frmMuonsach QD3 Update
7. Thao tác Nhân viên frmNhanvien QD4 Thêm, xóa, sửa
8. Thao tác Nhà xuất bản frmNXB QD5 Thêm, xóa, sửa
9. Tìm độc giả frmTimDG QD6
10. Tìm sách frmTimsach QD6
11. Thống kê độc giả frmTKDG
12. Thống kê những cuốn
sách
frmTKSach
13. Nhận trả sách frmTrasach QD3 Update
14. Đăng nhập Dangnhap QD7 Connection
B) Một số quy định:
C) Yêu cầu chất lượng:
- Giao diện: phải thân thiện, dễ sử dụng, đẹp.
- Tốc độ xử lý: phải nhanh, không để người dùng chờ quá lâu.
- Khi thao tác 1 chức năng thì không làm ảnh hưởng đến các chức năng khác.
- Thông tin được cập nhật thường xuyên.
- Có khả năng sao lưu & phục hồi CSDL khi có sự cố.
STT Mã
số
Tên qui
định
Mô tả chi tiết
1
QD
1

Qui định
độc giả
- Tuổi độc giả >= 18.
- Thẻ có giá trị 1 năm.
-Tên, địa chỉ, email phải đúng. Khi nhập sai sẽ bị cảnh báo.
- File hình ảnh chỉ được lấy từ thư mục “picture\\” trong Debug
folder.
2
QD
2
Qui định
sách
- Chỉ cho phép các sách xuất bản sau 1900 và trước thời điểm
hiện tại.
- Mỗi lần nhập sách không nhập quá 999 quyển/1 mã.
- Giá bán không là float.
- Mã sách là 1 chuỗi ký tự bất kỳ. Nhưng để tiện lợi thì nên
nhập mã sách với 2 phần (mã thể loại + số thứ tự).
- Thông tin về tác giả phải đúng (không có những ký tự đặc
biệt trong quá trình nhập), sai sẽ bị cảnh báo.
3
QD
3
Qui định
mượn, trả
sách
- Chỉ cho mượn với thẻ còn hạn (hoặc không chứa sách trễ hạn)
và sách còn có thể mượn.
- Mỗi độc giả chỉ được mượn tối đa 3 cuốn sách trong 1 lần
mượn.

- 1 cuốn sách được mượn tối đa 1 tháng. Nếu trả trễ, phạt
5000đ/1cuốn/1ngày. Nếu mất thì đền tiền gấp 4 lần giá bìa.
- Nếu độc giả mượn những cuốn sách không thể cho mượn thì
thông báo.
4
QD
4
Qui định
nhân viên
- Nhân viên phải >=18 tuổi.
- Ngày vào làm phải trước ngày hiện tại.
- Tên, địa chỉ, email phải đúng. Khi nhập sai sẽ bị cảnh báo.
- File hình ảnh chỉ được lấy từ thư mục “picture\\” trong
Debug folder.
5
QD
5
Quy định
NXB
- Mã và tên không được giống với những nhà xuất bản khác
đã tồn tại.
- Khi thao tác nếu sai thì sẽ được cảnh báo chi tiết.
6 QD
6
Quy định
tra cứu
Tra cứu theo thông tin hỗ trợ tra cứu chỉ tìm chính xác.
7
QD
7

Quy định
đăng
nhập
Trước khi đăng nhập vào 1 server mới, vào thư mục Debug xóa
đi file “config.txt”.
Chương II
MÔ HÌNH HÓA YÊU CẦU NGƯỜI SỬ DỤNG
I. Use Case Diagram.
Thủ thư
Đăng
nhập
Thao tác sách
Thao tác hồ sơ
nhân viên
Thống kê độc giả
(đg đã mượn,
đang trễ hạn)
Tìm độc giả
Lập thẻ độc giả
(Đăng ký mới)
Thao tác độc giả
(Sửa, xóa đg)
Thống kê
sách
(sách đang
mượn, bị mất,
trễ hạn, tổng)
Hỗ trợ độc
giả tìm sách
Gia hạn thẻ

Thao tác trên
loại sách, NXB
Cho mượn
sách
Nhận trả sách
Đăng
xuất
II. Mô hình hóa yêu cầu người sử dụng (Mô hình luồng dữ liệu).
• Lập thẻ độc giả (Đăng ký mới cho 1 độc giả).
- D1: Thông tin độc giả cần lưu trữ (họ tên, mã đg, địa chỉ, giới tính,
ngày sinh, email và hình ảnh (nếu có).
- D2: Kết quả của việc lập thẻ (Thẻ độc giả).
- D3: Thông tin của độc giả (giống D1) + tình trạng thẻ của độc giả.
- D4: Các quy định về độc giả, tuổi độc giả, thời hạn thẻ (1 năm tính
từ ngày đăng ký) – QD1.
Thuật toán:
Bước 1: Nhận D1 từ người dùng.
Bước 2: Kết nối CSDL.
Bước 3: Đọc D4 từ bộ nhớ phụ.
Bước 4: Kiểm tra thỏa mãn điều kiện của D4 hay không. Nếu thỏa thì tới bước 5. Không
thỏa tới bước 6.
Bước 5: Update thông tin trong bảng độc giả, bảng tình trạng thẻ của độc giả vừa đăng ký.
Lưu D3 xuống CSDL.
Đến bước 7.
Bước 6: Phản hồi những lỗi chưa chính xác trong quá trình đăng ký lại cho thủ thư để
chỉnh sửa.
Đến bước 4 nếu muốn chỉnh sửa.
Đóng kết nối. Thoát nếu không muốn chỉnh sửa (không đăng ký được).
Bước 7: Đóng kết nối CSDL. Quá trình đăng ký đã xong.
• Thao tác sách (Thêm, xóa, sửa thông tin sách).

- D1: Thủ thư chọn các thao tác trên thông tin sách (thêm, xóa, sửa).
- D2: Kết quả của việc thao tác (update lại thông tin sau khi thao tác
thành công).
- D3: Thông tin của sách mới update (giống D1).
- D4: Các quy định về sách (QD2).
Phần mềm này cài đặt vào máy tính của thư viện hỗ trợ các thủ thư quản lý thư viện hiệu
quả hơn, và thông qua thủ thư trợ giúp độc giả khi đến học tập ở thư viện.
Thủ thư: có quyền sử dụng tất cả các chức năng của phần mềm.
Thủ thư
Lập thẻ
độc giả
Cơ sở dữ liệu
D2
D3
D1
D4
Thủ thư
Thao tác
trên sách
Cơ sở dữ liệu
D2
D3
D1
D4
Thuật toán:
Bước 1: Thủ thư chọn chức năng thao tác sách. Nhận D1 từ người dùng.
Bước 2: Kết nối CSDL.
Bước 3: Đọc D4 từ bộ nhớ phụ.
Bước 4: Kiểm tra các thông tin của sách có hợp lệ không dựa vào QĐ2.
Nếu hợp lệ xuống bước 5, không hợp lệ xuống bước 6.

Bước 5: Update thông tin của sách, các bảng liên quan và lưu xuống CSDL. (D3).
Đến bước 7.
Bước 6: Thông báo lỗi nếu thao tác không hợp lệ.
Quay lại bước 4 và chỉnh sửa nếu muốn.
Hoặc đóng kết nối, thoát nếu không muốn sửa.
Bước 7: Đóng kết nối. Thao tác thành công.
• Cho mượn sách.
- D1: Mã số thẻ của độc giả, mã sách cần mượn.
- D2: Kết quả của việc cho mượn sách.
- D3: Thông tin sách mượn, mã độc giả (giống
D1).
Tình trạng mới của số lượng sách còn lại
của sách có mã cho mượn.
- D4: Các quy định về mượn sách (QD3).
- D5: Mã số thẻ của độc giả để thủ thư quét từ.
Thuật toán:
Khi có độc giả mượn sách.
Bước 1: Thủ thư chọn chức năng mượn sách.
Bước 2: Kết nối CSDL. Đọc D5.
Bước 3: Đọc D4 từ bộ nhớ phụ.
Bước 4: Kiểm tra những sách độc giả muốn mượn còn có thể mượn được không?
Nếu còn có thể mượn được thì add vào list mượn.
Nếu không thì thông báo để độc giả chọn sách khác (nếu muốn).
Bước 5: Kiểm tra thẻ độc giả có còn hạn sử dụng.
Nếu còn thì tới bước 7.
Nếu không thì tới bước 6.
Bước 6: Thông báo gia hạn và gia hạn thẻ (nếu muốn).
Quay lại màn hình mượn sách (tới bước 7) nếu gia hạn thành công.
Đóng kết nối và thông báo không thể mượn nếu không gia hạn.
Bước 7: Kiểm tra thỏa điều kiên mượn sách (QD3) thì lập phiếu mượn cho độc giả, ghi

xuống CSDL. (D3). Đến bước 8.
Nếu không thỏa thì đến bước 9.
Bước 8: Đóng kết nối. Thông báo thành công.
Bước 9: Thông báo chỉnh sửa.
Nếu chỉnh sửa thành công, quay lại bước 7.
Nếu chỉnh sửa không thành công thì đóng kết nối, thông báo không mượn đươc.
Thủ thư
Mượn
sách
Cơ sở dữ liệu
D2
D3
D1
D4
Thiết bị nhập
D5
• Nhận trả sách.
- D1: Mã số thẻ của độc giả.
- D2: Kết quả của Nhận trả sách.
- D3: Thông tin trả sách của độc giả (giống D1).
Tình trạng mới của số lượng sách, số sách
còn lại sau khi trả.
Tình trạng mới phiếu mượn sách của độc
giả.
- D4: Các quy định trả sách (QĐ4).
- D5: Mã số thẻ của độc giả để thủ thư quét từ.
Thuật toán:
Bước 1: Thủ thư chọn chức năng nhận trả sách.
Bước 2: Kết nối CSDL. Đọc vào mã độc giả.
Bước 3: Kiểm tra sách trả có quá hạn hoặc được độc giả báo mất hay không.

Nếu sách quá hạn hoặc bị mất, tính tiền phạt (QD4), thông báo cho độc giả.
Bước 4: Ghi nhận việc trả sách, lưu xuống CSDL.
Update bảng thống kê sách, phiếu mượn sách (ứng với trường hợp mất sách hay
không mất sách).
Đóng kết nối.
• Thao tác nhân viên (Thêm, xóa, sửa thông tin nhân viên).
- D1: Thủ thư chọn các thao tác trên thông tin nhân viên (thêm, xóa,
sửa).
- D2: Kết quả của việc thao tác (update lại thông tin sau khi thao tác
thành công).
- D3: Thông tin của nhân viên mới update (giống D1).
- D4: Các quy định về nhân viên (QD4).
Thuật toán:
Bước 1: Thủ thư chọn chức năng thao tác trên form nhân viên. Nhận D1 từ người dùng.
Bước 2: Kết nối CSDL.
Bước 3: Đọc D4 từ bộ nhớ phụ.
Bước 4: Kiểm tra các thông tin của nhân viên có hợp lệ không dựa vào QĐ4.
Nếu hợp lệ xuống bước 5, không hợp lệ xuống bước 6.
Bước 5: Update thông tin của nhân viên, các bảng có liên quan và lưu xuống CSDL. (D3).
Đến bước 6.
Bước 6: Thông báo lỗi nếu thao tác không hợp lệ.
Quay lại bước 4 và chỉnh sửa nếu muốn.
Hoặc đóng kết nối, thoát nếu không muốn sửa.
Bước 7: Đóng kết nối. Thao tác thành công.
Tương tự ta có sơ đồ luồng dữ liệu của việc thao tác trên form độc giả.
(điều kiện kiểm tra là QD1).
• Thao tác thể loại (Thêm, xóa, sửa thông tin thể loại sách).
Thủ thư.
Nhận trả
sách

Cơ sở dữ liệu
D2
D3
D1
D4
Thiết bị nhập
D5
Thủ thư
Thao tác
nhân
viên
Cơ sở dữ liệu
D2
D3
D1
D4
- D1: Thủ thư chọn các thao tác trên thông tin thể loại sách
(thêm, xóa, sửa).
- D2: Kết quả của việc thao tác (update lại thông tin sau khi
thao tác thành công).
- D3: Thông tin của thể loại sách mới update (giống D1).
Tình trạng mới của các bảng có liên quan đến mã thể
loại.
- D4: Các ràng buộc dữ liệu khi thao tác.
Thuật toán:
Bước 1: Thủ thư chọn chức năng thao tác thể loại sách. Nhận D1 từ người dùng.
Bước 2: Kết nối CSDL.
Bước 3: Kiểm tra các thông tin của thể loại sách có hợp lệ không (chính là sự trùng khóa
chính).
Nếu hợp lệ xuống bước 4, không hợp lệ xuống bước 5.

Bước 4: Update thông tin của sách, các bảng các liên quan đến mã thể loại và lưu xuống
CSDL. (D3).
Đến bước 6.
Bước 5: Thông báo lỗi nếu thao tác không hợp lệ.
Quay lại bước 4 và chỉnh sửa nếu muốn.
Hoặc đóng kết nối, thoát nếu không muốn sửa.
Bước 6: Đóng kết nối. Thao tác thành công.
• Thao tác nhà xuất bản (Thêm, xóa, sửa thông tin nhà xuất bản).
- D1: Thủ thư chọn các thao tác trên thông tin NXB (thêm, xóa,
sửa).
- D2: Kết quả của việc thao tác (update lại thông tin sau khi
thao tác thành công).
- D3: Thông tin của nhà xuất bản mới update (giống D1).
Update các bảng liên quan đên NXB.
- D4: Các quy định về nhà xuất bản (QD5).
Thuật toán:
Bước 1: Thủ thư chọn chức năng thao tác nhà xuất bản. Nhận D1 từ người dùng.
Bước 2: Kết nối CSDL.
Bước 3: Kiểm tra các thông tin của nhà xuất bản có hợp lệ không (QD5).
Nếu hợp lệ xuống bước 4, không hợp lệ xuống bước 5.
Bước 4: Update thông tin của NXB, các bảng các liên quan và lưu xuống CSDL. (D3).
Đến bước 6.
Bước 5: Thông báo lỗi nếu thao tác không hợp lệ.
Quay lại bước 4 và chỉnh sửa nếu muốn.
Hoặc đóng kết nối, thoát nếu không muốn sửa.
Bước 6: Đóng kết nối. Thao tác thành công.
• Tìm kiếm sách.
Thủ thư
Thao tác
trên thể sách

Cơ sở dữ liệu
D2
D3
D1
D4
Thủ thư
Thao tác
trên NXB
Cơ sở dữ liệu
D2
D3
D1
D4
- D1: Thủ thư chọn chức năng tìm kiếm sách.
Thông tin hỗ trợ tìm kiếm.
- D2: Kết quả của việc tìm kiếm.
- D4: Xuất kết quả theo điều kiện tìm kiếm.
+ QD6.
- D6: Xuất kết quả ra máy in (nếu có).
Thuật toán:
Khi thủ thư hỗ trợ độc giả tra cứu sách.
Bước 1: Chọn chức năng tìm kiếm sách.
Bước 2: Nhập các thông tin hỗ trợ tìm kiếm (theo tên, thể loại, nhà xuất bản, …).
Bước 3: Kết nối CSDL.
Bước 4: Tìm chính xác các sách có thông tin như đã chọn. (QD6).
Bước 5: Nếu tìm thấy: xuất kết quả ra màn hình.
Tìm không thấy: thông báo không tìm thấy.
Bước 6: Đóng kết nối.
• Tìm kiếm độc giả.
- D1: Thủ thư chọn chức năng tìm kiếm độc giả.

Thông tin hỗ trợ tìm kiếm.
- D2: Kết quả của việc tìm kiếm.
- D4: Xuất kết quả theo điều kiện tìm kiếm.
+ QD6.
- D6: Xuất kết quả ra máy in (nếu có).
Thuật toán:
Khi thủ thư tìm kiếm độc giả.
Bước 1: Chọn chức năng tìm kiếm độc giả.
Bước 2: Nhập các thông tin hỗ trợ tìm kiếm (theo tên, địa chỉ, mã đg, giới tính…).
Bước 3: Kết nối CSDL.
Bước 4: Tìm chính xác các độc giả có thông tin như đã chọn.
Bước 5: Nếu tìm thấy: xuất kết quả ra màn hình.
Tìm không thấy: thông báo không tìm thấy.
Bước 6: Đóng kết nối.
D4
D2
D1
Thủ thư
Tra cứu
sách
Cơ sở dữ liệu
Thiết bị xuất
D6
D4
D2
D1
Thủ thư
Tìm
kiếm
độc giả

Cơ sở dữ liệu
Thiết bị xuất
D6
• Thống kê sách:
- D1: Thủ thư chọn chức năng thống kê sách.
Chọn 1 trong số các thông tin muốn thống
kê.
- D2: Kết quả của việc tìm kiếm.
- D4: Xuất kết quả theo điều kiện tìm kiếm.
- D6: Không có.
Thuật toán:
Bước 1: Chọn chức năng thống kê sách.
Bước 2: Chọn 1 trong số các thông tin hỗ trợ (tổng số sách, sách đang mượn, sách đã trễ
hạn, sách bị mất).
Bước 3: Kết nối CSDL.
Bước 4: Tìm chính xác các sách có thông tin như đã chọn.
Bước 5: Nếu tìm thấy: xuất kết quả ra màn hình (thống kê thông tin đầy đủ của sách).
Tìm không thấy: thông báo.
Bước 6: Đóng kết nối.
• Thống kê độc giả.
- D1: Thủ thư chọn chức năng thống kê độc giả.
Chọn 1 trong số các thông tin muốn thống
kê.
- D2: Kết quả của việc tìm kiếm.
- D4: Xuất kết quả theo điều kiện tìm kiếm.
- D6: Không có.
Thuật toán:
Bước 1: Chọn chức năng thống kê độc giả.
Bước 2: Chọn 1 trong số các thông tin hỗ trợ tìm kiếm (độc giả mượn sách, độc giả đang
trễ hạn trả sách, thời gian từ ngày…. đến ngày… ).

Bước 3: Kết nối CSDL.
Bước 4: Tìm chính xác các độc giả có thông tin như đã chọn.
Bước 5: Nếu tìm thấy: xuất kết quả ra màn hình (thông tin đầy đủ của độc giả).
Tìm không thấy: thông báo.
Bước 6: Đóng kết nối.
D4
D2
D1
Thủ thư
Thống kê
sách
Cơ sở dữ liệu
Thiết bị xuất
D6
D4
D2
D1
Thủ thư
Thống kê
độc giả
Cơ sở dữ liệu
Thiết bị xuất
D6
• Gia hạn thẻ.
- D1: Mã số thẻ.
- D2: Kết quả của Gia hạn thẻ.
- D3: Thông tin của thẻ sau khi đã gia hạn.
- D4: Thông tin thẻ độc giả cần gia hạn.
- D5: Mã số thẻ của độc giả cần gia hạn.
Thuật toán:

Bước 1: Người sử dụng chọn chức năng gia hạn thẻ.
Bước 2: Nhập các thông tin gia hạn thẻ (mã độc giả).
Bước 3: Mở kết nối CSDL.
Bước 4: Cập nhật lại ngày hết hạn của thẻ xuống CSDL.
Bước 5: Đóng kết nối, gia hạn thành công.
• Đăng nhập.
- D1: Thủ thư đăng nhập.
Nhập UserName (là mã nhân viên), Password (là password
của nhân viên).
- D2: Kết quả của việc Đăng nhập.
- D4: Thông tin để kiểm tra UserName và Password.
+ QD7.
Thuật toán:
Bước 1: Thủ thư đăng nhập hệ thống.
Bước 2: Mở kết nối CSDL.
Bước 3: Nhập các thông tin đăng nhập.
Bước 4: Kiểm tra thông tin đăng nhập (Tên và mật khẩu có chính xác không).
Kiểm tra thỏa QD7 đối với lần đầu đăng nhập.
Bước 5: Nếu đăng nhập thành công, cho vào hệ thống.
Bước 6: Nếu đăng nhập thất bại, thông báo đăng nhập thất bại.
Quay lại bước 5 nếu đăng nhập lại. Hoặc đóng kết nối và thoát.
Khi đăng xuất, ta nhận thông báo xác nhận, nếu đồng ý thì đóng chương trình.
Thủ thư
Gia hạn
thẻ
Cơ sở dữ liệu
D2
D3
D1
D4

Thiết bị nhập
D5
Thủ thư
Đăng
nhập
Cơ sở dữ liệu
D2
D1
D4
III. Sơ đồ lớp.
 Sơ đồ lớp ở mức phân tích.
 Danh sách các lớp đối tượng.
STT Tên lớp Ý nghĩa
1 Thể loại Lưu tất cả thể loại sách có trong thư viện.
2 NXB Lưu tất cả nhà xuất bản các sách trong thư viện.
3 Cuốn sách Lưu tất cả thông tin về sách có trong thư viện (mã, tên, tác giả,
giá bán…).
4 Thống kê sách Lưu số lượng mỗi mã sách có trong thư viện, và số sách có thể
mượn của mã sách đó.
5 Sách mất Lưu mã sách và số lượng mã sách đó bị mất.
6 Phiếu mượn Lưu thông tin độc giả mượn sách, mã sách được mượn, và số
sách mỗi lần mượn. Ngày tới hạn, tính trạng (đã trả hay chưa),
ngày trả và tiền phạt sau mỗi lần trả trễ hạn.
7 Nhân viên Lưu thông tin nhân viên.
8 Độc giả Lưu thông tin độc giả.
9 Tình trạng thẻ Lưu ngày đăng ký, ngày hết hạn của 1 thẻ độc giả.
1 1
1 1
1 1
Phiếu mượn1 1

Độc giả
Tình trạng
thẻ
1 1
1 1
NXB
Cuốn sách
Thể loại
Thống kê sách
1 n
1 1
1 n
Sách mất
 Mô tả từng lớp đối tượng.
TT Tên lớp Thông tin Trách nhiệm
1 Thể loại Mã thể loại, tên thể loại. Thêm, xóa, sửa.
2 NXB Mã NXB, tên NXB, địa chỉ. Thêm, xóa, sửa.
3 Cuốn sách Mã sách, tên sách, mã thể loại, mã NXB,
năm XB, giá bán.
Thêm, xóa, sửa.
4 Thống kê
sách
Mã sách, số lượng, số sách còn lại, số sách
muốn mượn.
Khi đg mượn sách, thì số sách muốn mượn
của mã sách đó được update. Nhưng trong
quá trình mượn nếu xảy ra sự cố và thủ thư
reset, số sách muốn mượn=0. Số sách còn
lại của 1 mã sau khi mượn=(số sách còn lại
trước đó - số sách muốn mượn) của mã đó.

Sau khi mượn thì số sách muốn mượn lại
được update bằng 0 trở lại.
Thêm, xóa, sửa.
Thống kê tổng sách, sách
đang mượn.
5 Sách mất Mã sách, số lượng sách bị mất Thêm, xóa.
Thống kê sách mất.
6 Phiếu
mượn
Mã độc giả, mã sách, tên sách, ngày mượn,
ngày tới hạn, số sách mượn, số sách đã trả,
ngày trả (x3-ứng 3 quyển sách trả vào 3
ngày khác nhau), tiền phạt.
Thêm, xóa, sửa.
Thống kê độc giả mượn
sách, trễ hạn trả.
Thống kê sách trễ hạn trả.
7 Nhân viên Mã NV, tên NV, ngày sinh, địa chỉ, giới
tính, điện thoại, Email, ngày vào làm, mật
khẩu, hình ảnh.
Thêm, xóa, sửa
8 Độc giả Mã đg, tên đg, ngày sinh, giới tính, email,
hình ảnh, địa chỉ.
Thêm, xóa, sửa.
9 Tình trạng
thẻ
Mã độc giả, ngày đăng ký, ngày hết hạn. Thêm, xóa, sửa.
Chương III
THIẾT KẾ
I. Thiết Kế Dữ Liệu.

 Thiết kế Logic.
 Danh sách các bảng dữ liệu.
STT Tên bảng Ghi chú
1 theloai Thể loại sách.
2 nhaxuatban Nhà xuất bản.
3 sach Cuốn sách.
4 thongkesach Thống kê sách.
5 sach_bimat Sách mất.
6 phieumuonsach Phiếu mượn.
7 nhanvien Nhân viên.
8 docgia Độc giả.
9 tinhtrangthe Tình trạng thẻ.
 Mô tả chi tiết từng bảng dữ liệu.
P_key: khóa chính. F_key: khóa ngoại.
theloai
STT Thuộc tính Kiểu dữ liệu Ràng buộc Ghi chú
1 matheloai nvarchar(10) P_key Không được phép null
2 tentheloai nvarchar(50) Không được phép null
nhaxuatban
STT Thuộc tính Kiểu dữ liệu Ràng buộc Ghi chú
1 maNXB nvarchar(10) P_key Không được phép null
2 tenNXB nvarchar(100) Không được phép null
3 diachi nvarchar(200) Không được phép null
sach
STT Thuộc tính Kiểu dữ liệu Ràng buộc Ghi chú
1 masach nvarchar(10) P_key Không được phép null
2 tensach nvarchar(100) Không được phép null
3 tacgia nvarchar(50) Không được phép null
4 matheloai nvarchar(10) F_key Không được phép null
5 maNXB nvarchar(10) F_key Không được phép null

6 namXB Int Không được phép null
7 giaban Money Có thể bằng 0
thongkesach
STT Thuộc tính Kiểu dữ liệu Ràng buộc Ghi chú
1 masach nvarchar(10) P_key, F_key Không được phép null
2 soluong int Lớn hơn hoặc bằng 1.
3 sosachconlai int Nhỏ nhất là 1.
4 sosach_muon_muon int Có thể bằng 0.
sach_bimat
STT Thuộc tính Kiểu dữ liệu Ràng buộc Ghi chú
1 masach nvarchar(10) F_key Có thể không có sách mất.
2 soluong_mat Int Nhỏ nhất là 1.
phieumuonsach
STT Thuộc tính Kiểu dữ liệu Ràng buộc Ghi chú
1 madocgia numeric(18,0) P_key, F_key Không được phép null
2 masach nvarchar(10) P_key, F_key Không được phép null
3 tensach nvarchar(100) Không được phép null
4 ngaymuon datetime P_key Không được phép null
5 ngaytoihan datetime Không được phép null
6 sosachmuon Int Min=0, max=3
7 datra Int Min=0, max=3
8 ngaytra1 datetime Có thể null
9 ngaytra2 datetime Có thể null
10 ngaytra3 datetime Có thể null
11 tongsotienphat Money Có thể bằng 0
nhanvien
STT Thuộc tính Kiểu dữ liệu Ràng buộc Ghi chú
1 maNV nvarchar(10) P_key Không được phép null
2 tenNV nvarchar(100) Không được phép null
3 ngaysinh Datetime Năm sinh-năm hiện tại >= 18

4 gioitinh nvarchar(10) Không được phép null
5 diachi nvarchar(MAX) Không được phép null
6 dienthoai varchar(15) Có thể null
7 email nvarchar(50) Có thể null
8 ngayvaolam Datetime Nhỏ hơn ngày hiện tại
9 matkhau nvarchar(20) Không được phép null
10 hinhanh varchar(30) Có thể null
docgia
STT Thuộc tính Kiểu dữ liệu Ràng buộc Ghi chú
1 madocgia numeric(18,0) P_key Không được phép null
2 tendocgia nvarchar(100) Không được phép null
3 ngaysinh Datetime Năm sinh- năm hiện tại >=18
4 gioitinh nvarchar(10) Không được phép null
5 email varchar(50) Có thể null
6 diachi nvarchar(MAX) Không được phép null
7 hinhanh varchar(50) Có thể null
tinhtrangthe
STT Thuộc tính Kiểu dữ liệu Ràng buộc Ghi chú
1 madocgia numeric(18,0) P_key, F_key Không được phép null
2 ngaydangky datetime Không được phép null
3 ngayhethan datetime Không được phép null
sach_bimat
STT Thuộc tính Kiểu dữ liệu Ràng buộc Ghi chú
1 masach nvarchar(10) F_key Có thể không có sách mất.
2 soluong_mat Int Nhỏ nhất là 1.
phieumuonsach
STT Thuộc tính Kiểu dữ liệu Ràng buộc Ghi chú
1 madocgia numeric(18,0) P_key, F_key Không được phép null
2 masach nvarchar(10) P_key, F_key Không được phép null
3 tensach nvarchar(100) Không được phép null

4 ngaymuon datetime P_key Không được phép null
5 ngaytoihan datetime Không được phép null
6 sosachmuon Int Min=0, max=3
7 datra Int Min=0, max=3
8 ngaytra1 datetime Có thể null
9 ngaytra2 datetime Có thể null
10 ngaytra3 datetime Có thể null
11 tongsotienphat Money Có thể bằng 0
II. Thiết Kế Giao Diện.
 Màn hình đăng nhập:
 Đối với người dùng lần đầu kết nối csdl thì khi đăng nhập ta sẽ được yêu cầu chọn sever
name, attach file dữ liệu nguồn (ở đây là QUANLYTHUVIEN.mdf). Dùng biến cố Load
Form để kết nối cơ sở dữ liệu.
 Nếu bạn đăng nhập dưới quyền độc giả, bạn không cần mã và password. Và bạn chỉ có thể
sử dụng chức năng tìm kiếm của chương trình.
 Nếu đăng nhập dưới quyền nhân viên thì tên đăng nhập là mã nhân viên, mật khẩu là mật
mã của nhân viên đó trong csdl (đảm bảo tính bảo mật).
 Khi nhân viên đăng nhập thành công (đúng mã NV và mật khẩu) thì sẽ hiện thông báo
đăng nhập thành công, vào form main của chương trình. Lúc này bạn được quyền sử dụng
toàn bộ chức năng của chương trình.
 Nếu nhân viên nhập sai mã nhân viên và mật khẩu sẽ bị thông báo lỗi để chỉnh sửa nếu
muốn. Hoặc thoát chương trình.
 Màn hình đăng ký mới:
 Biến cố Load_Form:
 Lấy ngày đăng ký là ngày hiện tại.
 Khai báo tooltip, toolStripStatusLabel1.
 Load những mã độc giả đã tồn tại trong dữ liệu lên ComboBox mã độc giả.
 Biến cố Value_change của dateTimePicker_ngaysinh
 Kiểm tra độc giả có tuổi (năm sinh – năm hiện tại) >=18. Nếu không đủ 18 tuổi thì
thông báo không thể làm độc giả của thư viện.

 Biến cố click_chọn hình (của button chọn hình ảnh)
 Hiện Open Dialog để chọn hình của độc giả, lưu lại tên file hình ảnh để thêm vào thuộc
tính hình ảnh của bảng độc giả.
 Chú ý: file hình chỉ được lấy từ thư mục “picture\\” của Debug folder.
 Biến cố Keypress của các texbox ( họ tên, địa chỉ, email), comboBox (mã độc giả)
 Kiểm soát việc nhập dữ liệu vào từ bàn phím.
• Họ tên: chỉ được nhập chữ, không được nhập số và các ký tự đặc biệt (~@#$% ).
Họ tên không được quá 100 ký tự.
• Địa chỉ: cho nhập chữ, số tự nhiên, các ký tự thuộc tập {‘.’; ’,’; ‘/’}.
• Email: cho phép nhập chữ, số, và ký tự @,’.’
• Mã độc giả: chỉ cho phép nhập số tự nhiên lớn hơn 0 và không được quá 10 ký tự.
 Nếu người dùng nhập sai thì lập tức được thông báo lỗi từng chi tiết để chỉnh sửa.
 Biến cố Leave của các textBox và ComboBox
 Kiểm soát việc nhập dữ liệu vào bằng chuột (copy, paste), hoặc Ctrl + C và Ctrl +V.
• Các ràng buộc và thông báo lỗi cũng tương tự như ràng buộc của biến cố Keypress
ở trên.
 Biến cố click của button Đăng ký
 Trước khi thêm, kiểm tra thông tin muốn thêm có đầy đủ hay không (đối với thông tin
bắt buộc – tên, mã, địa chỉ, ngày sinh, giới tính).
 Nếu thỏa mãn thì ghi thông tin độc giả mới đăng ký xuống cơ sở dữ liệu.
• Nếu không có email thì thuộc tính email của bảng độc giả là null.
• Nếu không chọn hình ảnh thì thuộc tính hinhanh của bảng độc giả là null.
• Thông báo thành công, update lại bảng dữ liệu, load lại mã độc giả vào ComboBox
mã độc giả, reset (làm sạch) lại các textBox và comboBox.
 Nếu không thỏa (trùng mã độc giả, thiếu thông tin…) thì thông báo lỗi chi tiết để người
dùng điều chỉnh.
 Biến cố click của button Reset
 Gọi hàm reset () để làm sạch các textBox, comBoBox, errorprovider…
 Biến cố click của button Thoát
 Thoát khỏi màn hình đăng ký và trở lại màn hình đã mở trước đó.

 Biến cố Activated của form
 Trong trường hợp form đăng ký đang được mở, nhưng người dùng đang thao tác trên 1
form khác (ví dụ xóa độc giả), xong lại thao tác trên form đăng ký thì biến cố này giúp
cập nhật dữ liệu 1 cách nhanh chóng (update lại mã độc giả) mà không cần đóng form
đăng ký lại rồi mở ra.
 Tính năng:
 Ở form này khi độc giả có nhu cầu đăng kí tài khoản trong thư viện thì thủ thư tiến
hành đăng kí cho độc giả, thủ thư nhập các thông tin bắt buộc như họ tên độc giả,
mã độc giả…độc giả phải đủ 18 tuổi.
 Sau khi đăng kí thành công độc giả có thể đọc sách tại thư viện hoặc mượn sách về nhà.
 Màn hình danh mục sách:
 Biến cố Load form
 Load lên form mã sách (vào comboBox_masach, và comboBox_masach2 ở 2 tab).
 Load lên form tên thể loại (vào comboBox_loaisach và comboBox_loaisach2 ở 2 tab).
 Load tên nhà XB (vào comboBox_nxb và comboBox_nxb2 ở 2 tab).
 Hiển thị thông tin chi tiết của tất cả các sách có trong thư viện.
 Biến cố Activated của form
 Cũng giống như chức năng của biến cố activated của form đăng ký ở trên. Sau khi được
active lại thì sẽ update toàn bộ thông tin, load lại mã sách, tên thể loại, tên NXB vào các
comboBox tương ứng.
 Biến cố SelectedIndexChanged của listView
 Hiển thị thông tin tương ứng (tên, mã, tác giả, thể loại, nhà xuất bản…) bên các
comboBox, texbox của sách được chọn trong listview (nếu item được chọn có thông
tin).
 Biến cố SelectedIndexChanged của comboxBox_masach (bên tab thông tin) và
comboBox_masach2 (bên tab thao tác).
 Hiển thị thông tin chi tiết của sách (tên sách, tác giả, loại sách, NXB, …) có mã sách
được chọn vào các texbox và combobox tuong ứng.
 Biến cố SelectedIndexChanged của comboBox_theloai (bên tab thông tin).
 Nếu Enable của comboBox_NXB (bên tab thông tin) không là true thì:

• Hiển thị bên listView các sách có thể loại là thể loại được chọn. (với điều kiện
comboBox_theloai.Text !=””).
• Load các mã sách có thể loại được chọn vào comboBox_masach (bên tab thông tin).
 Nếu Enable của comboBox_NXB (bên tab thông tin) là true thì:
• Hiển thị listView các sách có thể loại và nhà xuất bản được chọn. (với điều kiện
comboBox_theloai.Text !=”” và comboBox_NXB.Text !=””).
• Load các mã sách có cùng thể loại và nhà xuất bản vào comboBox_masach (bên tab
thông tin).
 Biến cố SelectedIndexChanged của comboBox_nhaxb (bên tab thông tin).
 Nếu Enable của comboBox_theloai (bên tab thông tin) là false thì:
• Hiển thị bên listView các sách của nhà xuất bản được chọn (với
điều kiện comboBox_nhaxb.Text !=””).
• Load các mã sách có nhà xuất bản được chọn vào
comboBox_masach (bên tab thông tin).
 Nếu thuộc tính Enable của comboBox_theloai (bên tab thông tin) là true thì:
• Hiển thị listView các sách có thể loại và nhà xuất bản được chọn. (với điều kiện
comboBox_theloai.Text !=”” và comboBox_NXB.Text !=””).
• Load các mã sách có cùng thể loại và nhà xuất bản vào comboBox_masach (bên tab
thông tin).
Hai biến cố trên hỗ trợ nhân viên tìm kiếm sách theo thể loại, hoặc nhà xuất bản, hoặc
cả 2 một cách nhanh chóng ngay tại form Danh mục sách mà không cần phải mở form
Tìm kiếm sách (thể hiện tính ưu việt, tiện lợi).
 Biến cố CheckedChange của checkBox_loaisach, comboBox_nxb (bên tab thông tin)
 Nếu thuộc tính checked của checkbox là true thì Enable của comboBox tương ứng là
true, ngược lại thì giá trị Enable là false.
 Biến cố Click của chẹckBox_loaisach và checkBox_nxb (bên tab thông tin)
 Là sự cộng tác của 2 biến cố: Checkedchanged của textbox và SelectedIndexChanged
của comboBox.
 Công dụng giúp tra cứu (xem) sách theo yêu cầu (thể loại, nxb, hoặc cả 2).
 Biến cố Click của button Reset (bên 2 tab thông tin và thao tác).

 Reset (làm trống) các comboBox và textBox, đưa về trạng thái ban đầu.
 Clear các errorprovider nếu đã xuất hiện trước đó.
 Hiển thị thông tin chi tiết tất cả các sách bên ListView.
 Biến cố Click của 2 button thoát (bên 2 tab)
 Thoát khỏi màn hình danh mục sách. Quay về màn hình đã mở trước đó.
 Biến cố KeyPress của các textBox (tên sách 2, tác giả 2, năm XB2, số lượng 2, giá bán 2 –
bên tab thao tác).
 Kiểm soát việc nhập dữ liệu vào từ bàn phím.
• Tên sách không được quá 100 ký tự.
• Tác giả: chỉ cho nhập chữ, không được nhập các ký tự đặc biệt (~@!$ ) và số.
Tên tác giả không được quá 50 ký tự.
• Năm xuất bản: chỉ cho nhập số, tối đa 4 chữ số. Kết hợp với biến cố Leave của
texbox_namxb, thì năm XB phải sau 1900 và trước năm hiện tại.
• Số lượng: chỉ cho nhập số, tối đa chỉ được 999 quyển.
• Giá bán: chỉ được nhập số nguyên không dấu.
 Nếu người dùng nhập sai thì lập tức được thông báo lỗi từng chi tiết để chỉnh sửa.
 Biến cố Leave của các textBox, và comboBox_masach.
 Kiểm soát việc nhập dữ liệu vào bằng chuột (copy, paste), hoặc Ctrl + C và Ctrl +V.
• Đối với comboBox_masach: mã sách không quá 10 ký tự.
• Các ràng buộc và thông báo lỗi cũng tương tự như ràng buộc của biến cố Keypress
ở trên.
 Biến cố Click của button thêm (tab thao tác)
 Trước khi thêm, kiểm tra mã sách muốn thêm đã tồn tại chưa?, các comboBox thể loại
và nhà XB có rỗng không?, thông tin về sách muốn thêm có đầy đủ không?
 Nếu thỏa thì ghi dữ liệu xuống bảng sách. Thông báo thêm thành công.
 Nếu lỗi hoặc thông tin chưa đầy đủ thì sẽ được thông báo chi tiết để chỉnh sửa.
 Biến cố click của button xóa
 Trước khi xóa, kiểm tra mã sách muốn xóa có tồn tại trong dữ liệu không? (nếu không
tồn tại thì thông báo).
 Hiện thông báo xác nhận chắc chắn muốn xóa đi sách có mã đã chọn.

 Nếu xác nhận thì xóa sách đã chọn, và update lại bảng sách, các bảng có liên quan đến
mã sách bị xóa. Thông báo thành công.
 Biến cố click của button sửa
 Trước khi sửa, kiểm tra sách muốn sửa có tồn tại trong dữ liệu hay không? Các thông
tin muốn sử có hợp lý (thể loại, nhà xuất bản, tác giả, …).
 Nếu thỏa thì update vào bảng sách có mã được chọn (ở comboBox_masach2). Thông
báo update thành công.
 Nếu không thỏa thì thông báo chi tiết lỗi sai để chỉnh sửa.
 Tính năng:
 Form Danh mục sách hiện thị tất cả các thông tin của sách. Thủ thư có thể thực hiện các
thao tác như: nhập sách vào thư viện (button_them), xóa sách ra khỏi thư viện
(button_xoa), chỉnh sửa thông tin của sách (button_sua).
 Trên Danh mục sách tích hợp tính năng tìm kiếm (thống kê) theo thể loại, nhà xuất bản,
hỗ trợ người dùng khi có nhu cầu (mà không cần mở form tìm kiếm sách).
 Màn hình tìm kiếm độc giả:
 Biến cố Load form
 Load lên form mã độc giả (vào comboBox_maDG).
 Khai báo toolStripStatusLabel1.
 Biến cố Activated của form
 Cũng giống như chức năng của biến cố Activated ở form danh mục sách. Sau khi được
active lại thì sẽ update toàn bộ thông tin, load lại mã độc giả vào comboBox_maDG.

×