TÀI LIỆU ĐẶC TẢ YÊU CẦU
Đ ẶC TẢ YÊU CẦU
Hình 1 : Usecase tổng quát của hệ thống
Hình 2 : Use case đối với quản trị viên Hình 3 : Use case đối với thủ thư
Hình 4 : Usecase quản lý sách Hình 5 : Usecase quản lý loại sách
Hình 6 : Usecase quản lý tác giả Hình 7 : Usecase quản lý sinh viên
Hình 8 : Usecase quản lý mượn sách Hình 9 : Usecase quản lý trả sách
Hình 10 : Usecase thống kê báo cáo
Đ ẶC TẢ USECASE
Description admin hoặc user đăng nhập vào hệ thống
Preconditions Hệ thống chưa được đăng nhập
Post-Conditions Nếu chức năng thành công, người dùng sẽ được đăng nhập vào hệ thống, ngược lại hệ thống không thay đổi
1 Từ giao diện chưa đăng nhập, người dùng nhấn nút
2 Hiển thị form đăng nhập
3 Nhập tên người dùng và mật khẩu vào khung, nhấn nút đăng nhập
4 Hệ thống kiểm tra tên người dùng, mật khẩu có hợp lệ không, nếu sai thông báo không hợp lệ, ngược lại thông báo đăng nhập thành công
5 Lặp lại luồng 3 nếu hệ thống báo lỗi
6 Lặp lại luồng 4 cho đến khi không còn lỗi nhập từ người dùng
Cho phép Actor xóa sách
Precondition Đăng nhập với vai trò là admin
Post-conditions Nếu thành công thì sách sẽ được xóa khỏi hệ thống
1 Giao diện chính, mở Form quản lý sách
2 Hiển thị Form quản lý sách
3 Chọn sách cần xóa và chọn xóa
4 Xác nhận bạn muốn xóa không
5 Chọn yes nếu muốn xóa, và no nếu không muốn
6 Sản phẩm được xóa khỏi danh sách
Cho phép Actor thêm sách
Precondition Đăng nhập với vai trò là admin
Post-conditions Nếu thành công thì sách mới sẽ được thêm vào
1 Giao diện chính, mở Form quản lý sách
2 Hiển thị Form quản lý sách
3 Chọn nút thêm sách mới
4 Hiển thị form nhập thông tin
5 Điền thông tin sách, chọn lưu
6 Sách mới được thêm vào
➢ Sửa thông tin sản phẩm Brief
Cho phép Actor sửa thông tin sách
Precondition Đăng nhập với vai trò là admin
Post-conditions Nếu thành công thì thông tin sách được cập nhật
1 Giao diện chính, mở Form quản lý sách
2 Hiển thị Form quản lý sách
3 Chọn sách cần sửa và chọn sửa
4 Hiển thị form nhập thông tin
5 Nhập thông tin và lưu
6 Thông tin sách được cập nhật
❖ Quản lý loại sách
➢ Xóa loại sách Brief
Cho phép Actor xóa đi loại sách
Precondition Đăng nhập với vai trò là admin
Post-conditions Nếu thành công thì loại sẽ được xóa khỏi hệ thống
1 Giao diện chính, mở Form quản lý loại sách
2 Hiển thị Form quản lý loại sách
3 Chọn loại sách cần xóa, nhấn xóa
4 Xác nhận bạn muốn xóa không
5 Chọn yes nếu muốn xóa, và no nếu không muốn
6 Một loại sách sẽ được xóa khỏi danh sách
➢ Thêm loại sách Brief
Cho phép Actor thêm loại sách
Precondition Đăng nhập với vai trò là admin
Post-conditions Nếu thành công thì loại sách mới sẽ được thêm
1 Giao diện chính, mở Form quản lý loại sách
2 Hiển thị Form quản lý loại sách
4 Hiển thị Form nhập loại sách
5 Nhập thông tin về loại sách mới, chọn lưu
6 Thêm được một loại sách mới
➢ Sửa loại sách Brief
Cho phép Actor cập nhật loại sách
Precondition Đăng nhập với vai trò là admin
Post-conditions Nếu thành công thì sẽ cập nhật được loại sách
1 Giao diện chính, mở Form quản lý loại sách
2 Hiển thị Form quản lý loại sách
3 Chọn loại sách cần sửa và chọn sửa
4 Hiển thị form sửa danh mục
5 Nhập thông tin về danh mục, chọn lưu
6 Cập nhật thông tin danh mục
❖ Quản lý nhà tác giả
➢ Thêm nhà tác giả Brief
Cho phép Actor thêm mới tác giả
Precondition Đăng nhập với vai trò là admin
Post-conditions Nếu thành công thì tác giả mới sẽ được thêm vào
1 Giao diện chính, mở Form tác giả
2 Hiển thị Form tác giả
4 Hiển thị form điền thông tin
5 Nhập thông tin về tác giả, chọn lưu
6 Thêm tác giả mới vào danh sách
Cho phép Actor xóa đi tác giả
Precondition Đăng nhập với vai trò là admin
Post-conditions Nếu thành công thì tác giả sẽ được xóa khỏi hệ thống
1 Giao diện chính, mở Form tác giả
2 Hiển thị Form tác giả
3 Chọn tác giả cần xóa, nhấn xóa
4 Xác nhận bạn muốn xóa không
5 Chọn yes nếu muốn xóa, và no nếu không muốn
6 Xóa tên tác giả ra khỏi hệ thống
➢ Sửa thông tin tác giả Brief
Cho phép Actor sửa thông tin tác giả
Precondition Đăng nhập với vai trò là admin
Post-conditions Nếu thành công thì thông tin về tác giả được cập nhật
1 Giao diện chính, mở Form tác giả
2 Hiển thị Form tác giả
3 Chọn tác giả cần sửa, nhấn sửa
4 Hiển thị form điền thông tin
5 Nhập thông tin về tác giả, chọn lưu
6 Cập nhật thông tin mới về tác giả
❖ Quản lý thông tin sinh viên
➢ Thêm thông tin sinh viên Brief
Cho phép Actor thêm mới sinh viên
Precondition Đăng nhập với vai trò là admin và user
Post-conditions Nếu thành công thì thông tin sinh viên mới sẽ được thêm vào
1 Giao diện chính, mở Form quản lý sinh viên
2 Hiển thị Form quản lý sinh viên
4 Hiển thị form điền thông tin
5 Nhập thông tin về sinh viên, chọn lưu
6 Thêm sinh viên mới vào danh sách
➢ Xóa thông tin sinh viên Brief
Cho phép Actor xóa đi sinh viên
Precondition Đăng nhập với vai trò là admin và user
Post-conditions Nếu thành công thì tác giả sẽ được xóa khỏi hệ thống
1 Giao diện chính, mở Form quản lý sinh viên
2 Hiển thị Form quản lý sinh viên
3 Chọn sinh viên cần xóa, nhấn xóa
4 Xác nhận bạn muốn xóa không
5 Chọn yes nếu muốn xóa, và no nếu không muốn
6 Xóa sinh viên ra khỏi hệ thống
➢ Sửa thông tin sinh viên Brief
Cho phép Actor sửa thông tin sinh viên
Precondition Đăng nhập với vai trò là admin và user
Post-conditions Nếu thành công thì thông tin về sinh viên được cập nhật
1 Giao diện chính, mở Form quản lý sinh viên
2 Hiển thị Form quản lý sinh viên
3 Chọn sinh viên cần sửa, nhấn sửa
4 Hiển thị form điền thông tin
5 Nhập thông tin về sinh viên, chọn lưu
6 Cập nhật thông tin mới về sinh viên
➢ Thêm tài thủ thư Brief
Cho phép Actor thêm mới thủ thư
Precondition Đăng nhập với vai trò là admin
Post-conditions Nếu thành công thì thông tin thủ thư mới sẽ được thêm vào
1 Giao diện chính, mở Form quản lý thủ thư
2 Hiển thị Form quản lý thủ thư
4 Hiển thị form điền thông tin
5 Nhập thông tin thủ thư, chọn lưu
6 Thêm thủ thư mới vào danh sách
Cho phép Actor xóa đi thủ thư
Precondition Đăng nhập với vai trò là admin
Post-conditions Nếu thành công thì thủ thư sẽ được xóa khỏi hệ thống
1 Giao diện chính, mở Form quản lý thủ thư
2 Hiển thị Form quản lý thủ thư
3 Chọn thủ thư cần xóa, nhấn xóa
4 Xác nhận bạn muốn xóa không
5 Chọn yes nếu muốn xóa, và no nếu không muốn
6 Xóa thủ thư ra khỏi hệ thống
➢ Sửa thông tin thủ thư Brief
Cho phép Actor sửa thông tin thủ thư
Precondition Đăng nhập với vai trò là admin
Post-conditions Nếu thành công thì thông tin về thủ thư được cập nhật
1 Giao diện chính, mở Form quản lý thủ thư
2 Hiển thị Form quản lý thủ thư
3 Chọn thủ thư cần sửa, nhấn sửa
4 Hiển thị form điền thông tin
5 Nhập thông tin về thủ thư, chọn lưu
6 Cập nhật thông tin mới về thủ thư
❖ Quản lý mượn trả sách
➢ Cho mượn sách Brief
Cho phép Actor cho sinh viên mượn sách
Precondition Đăng nhập với vai trò là admin và user
Post-conditions Nếu thành công thì sách sẽ được cho mượn
1 Giao diện chính, mở Form mượn sách
2 Hiện thị Form mượn sách
Nhập mã sinh viên mượn sách, nhập mã sách, nhập số lượng và ấn cho mượn
4 Cho mượn sách thành công
Cho phép Actor cho sinh viên trả sách
Precondition Đăng nhập với vai trò là admin và user
Post-conditions Nếu thành công thì sách sẽ được trả
1 Giao diện chính, mở Form trả sách
2 Hiện thị Form mượn trả
3 Chọn thông tin sinh viên và sách sinh viên đó muôn trả rồi ấn trả sách
Cho phép Actor cho Thống kê báo cáo
Precondition Đăng nhập với vai trò là admin và user
Post-conditions Nếu thành công thì xuất được báo cáo
1 Giao diện chính, mở Form báo cáo
2 Hiện thị Form báo cáo
THIẾT KẾ
B IỂU ĐỒ TUẦN TỰ
❖ Quản lý thông tin sách
➢ Thêm sách ➢ Sửa thông tin sách
❖ Quản lý loại sách
➢ Thêm loại sách ➢ Sửa loại sách
➢ Thêm mới tác giả ➢ Sửa thông tin tác giả
➢ Xoá thông tin tác giả
➢ Thêm mới sinh viên ➢ Sửa thông tin sinh viên
➢ Xoá thông tin sinh viên
❖ Quản lý thông tin thủ thư
➢ Thêm mới thủ thư ➢ Sửa thông tin thủ thư
➢ Xoá thông tin sinh viên
❖ Quản lý mượn trả sách
➢ mượn sách ➢ Trả sách
❖ Thống kê báo cáo
B IỂU ĐỒ LỚP
K ẾT NỐI GIỮA CÁC BẢNG CSDL
Hình 12 : Kết nối giữa các bảng CSDL
THIẾT KẾ GIAO DIỆN
➢ Thiết kế giao diện main
➢ Thiết kế giao diện Form đăng nhập
➢ Thiết kế giao diện quản lý tác giả
Hình 15 : Form quản lý tác giả
➢ Thiết kế giao diện quản lý loại sách
Hình 16 : Form quản lý loại sách
➢ Thiết kế giao diện quản lý sách
Hình 17 : Form quản lý sách
➢ Giao diện quản lý sinh viên
Hình 18 : Form quản lý SV
➢ Thiết kế giao điện quản lý thủ thư
Hình 19 : Form quản lý thủ thư
➢ Thiết kế giao điện mượn sách
➢ Thiết kế giao điện mượn sách
➢ Thiết kế giao điện thống kê báo cáo
[1] GitHub - NguyenPhiKhang/Library_Management: Phần mềm Quản lý thư viện + DevExpress
[2] Code phần mềm quản lý thư viện bằng c# kèm báo cáo - Blog hỗ trợ (bloghotro.com)
[3] Full code phần mềm quản lý thư viện sách C# (sharecode.vn)
[4] Full Source Code Đồ Án Quản Lý Thư Viện C#, Database Tải Miễn Phí (congdongcviet.com)
[5] Source code quản lý thư viện C# (sharecode.vn)
Thủ Thư conn.Open(); string them = "insert into T_DN values(N'" + txt_matk.Text + "',N'" + txt_tentk.Text + "',N'" + txt_mk.Text + "','" + txt_ht + "',N'" + txt_quyen.Text + "')";
SqlCommand cmd = new SqlCommand(them, conn); cmd.ExecuteNonQuery(); conn.Close(); napdulieu();
Thư conn.Open(); string sua = "update T_DN set taikhoan = N'" + txt_tentk.Text +
@"',matkhau = N'" + txt_mk.Text + @"', hoten = '" + txt_ht.Text + "', quyen = N'" + txt_quyen.Text + @"' where (matk =N'" + txt_matk.Text + @"')";
SqlCommand cmd = new SqlCommand(sua, conn); cmd.ExecuteNonQuery(); conn.Close(); napdulieu();
Thư conn.Open(); if (txt_matk.Text == "") {
MessageBox.Show("Chưa chọn dữ liệu cần sữa!");
} else { string xoa = txt_matk.Text; string del = "delete from T_DN where maTK=N'" + xoa + "'"; SqlCommand cmd = new SqlCommand(del, conn);
DialogResult result = MessageBox.Show("Bạn có chắc chắn muốn xoá không ?", "Thông báo", MessageBoxButtons.OKCancel); if (result == DialogResult.OK) { cmd.ExecuteNonQuery(); napdulieu();
Phân quyền private string getquyen() { string quyen = ""; conn.Open(); string sqlSelect = "Select* from T_DN where taikhoan ='" + txt_tk.Text + "'and matkhau = '" + txt_mk.Text + "'";
SqlDataAdapter dt = new SqlDataAdapter(sqlSelect, conn);
DataTable dta = new DataTable(); dt.Fill(dta); foreach (DataRow dr in dta.Rows) { quyen = dr["quyen"].ToString();
Nhập quyen = getquyen(); if (quyen == "admin") {
MessageBox.Show("Bạn đã đăng nhập thành công với quyền Admin!!!"); this.Hide();
F_MAIN main = new F_MAIN(); main.Show();
MessageBox.Show("Bạn đã đăng nhập thành công với quyền User!!!"); this.Hide();
F_MAIN main = new F_MAIN(); main.Show();
} else { MessageBox.Show("Tài khoản hoặc mật khẩu không chính xác"); txt_dangnhap.Text = ""; txt_pass.Text = ""; txt_dangnhap.Focus();
} } Code form quản lý sinh viên
To add a student to the database, use the command `conn.Open();` followed by the SQL insert statement: `string them = "insert into T_SV values(N'" + txt_masv.Text + "',N'" + txt_tensv.Text + "',N'" + txt_lop.Text + "','" + ngaysinh.ToString("MM/dd/yyyy") + "',N'" + txt_gt.Text + "',N'" + txt_sdt.Text + "')";` This command inserts the student's ID, name, class, date of birth, gender, and phone number into the T_SV table.
SqlCommand cmd = new SqlCommand(them, conn); cmd.ExecuteNonQuery(); conn.Close(); napdulieu();
Viên conn.Open(); string sua = "update T_SV set tensv = N'" + txt_tensv.Text + @"',lop
= N'" + txt_lop.Text + @"', date = '" + ngaysinh + "', gioitinh = N'" + txt_gt.Text + @"', sdt = N'" + txt_sdt.Text + @"' where (masv =N'" + txt_masv.Text + @"')";
SqlCommand cmd = new SqlCommand(sua, conn); cmd.ExecuteNonQuery(); conn.Close(); napdulieu();
Viên conn.Open(); if (txt_masv.Text == "") {
MessageBox.Show("Chưa chọn dữ liệu cần sữa!");
} else { string xoa = txt_masv.Text; string del = "delete from T_SV where masv= N'" + xoa + "'"; SqlCommand cmd = new SqlCommand(del, conn);
DialogResult result = MessageBox.Show("Bạn có chắc chắn muốn xoá không ?", "Thông báo", MessageBoxButtons.OKCancel); if (result == DialogResult.OK) { cmd.ExecuteNonQuery(); napdulieu();
} } conn.Close(); code from tác giả
Thêm thông tin tác giả conn.Open(); string them = "insert into T_TG values(N'" + txt_matg.Text + "',N'" + txt_tentg.Text + "')";
SqlCommand cmd = new SqlCommand(them, conn); cmd.ExecuteNonQuery(); conn.Close(); napdulieu(); xóa thông tin tác giả conn.Open(); if (txt_matg.Text == "") {
MessageBox.Show("Chưa chọn dữ liệu cần sữa!");
} else { string xoa = txt_matg.Text; string del = "delete from T_TG where maTG = N'" + xoa + "'"; SqlCommand cmd = new SqlCommand(del, conn);
DialogResult result = MessageBox.Show("Bạn có chắc chắn muốn xoá không ?", "Thông báo", MessageBoxButtons.OKCancel); if (result == DialogResult.OK) { cmd.ExecuteNonQuery(); conn.Close();
} } sửa thông tin tác giả conn.Open(); string sua = "update T_TG set tenTG = N'" + txt_tentg.Text + @"' where (maTG =N'" + txt_matg.Text + @"')";
SqlCommand cmd = new SqlCommand(sua, conn); cmd.ExecuteNonQuery(); conn.Close(); napdulieu(); code form loại sách
Thêm thông tin loại sách conn.Open(); string them = "insert into T_LOAI values(N'" + txt_maloai.Text +
SqlCommand cmd = new SqlCommand(them, conn); cmd.ExecuteNonQuery(); conn.Close(); napdulieu(); xóa thông tin loại sách conn.Open(); if (txt_maloai.Text == "") {
MessageBox.Show("Chưa chọn dữ liệu cần sữa!");
} else { string xoa = txt_maloai.Text; string del = "delete from T_LOAI where maloai = N'" + xoa + "'"; SqlCommand cmd = new SqlCommand(del, conn);
DialogResult result = MessageBox.Show("Bạn có chắc chắn muốn xoá không ?", "Thông báo", MessageBoxButtons.OKCancel); if (result == DialogResult.OK) { cmd.ExecuteNonQuery(); conn.Close();
} } sửa thông tin loại sách conn.Open(); string sua = "update T_LOAI set tenloai = N'" + txt_tenloai.Text +
@"' where (maloai =N'" + txt_maloai.Text + @"')";
SqlCommand cmd = new SqlCommand(sua, conn); cmd.ExecuteNonQuery(); conn.Close(); napdulieu(); code form sách
Thêm thông tin sách conn.Open(); string them = "insert into T_SACH values(N'" + txt_masach.Text +
"',N'" + txt_tensach.Text + "',N'" + cb_loai.Text + "',N'" + cb_tg.Text + "',N'" + txt_soluong.Text + "')";
SqlCommand cmd = new SqlCommand(them, conn); cmd.ExecuteNonQuery(); conn.Close(); napdulieu(); xóa thông tin sách conn.Open(); if (txt_masach.Text == "") {
MessageBox.Show("Chưa chọn dữ liệu cần sữa!");
} else { string xoa = txt_masach.Text; string del = "delete from T_SACH where masach= N'" + xoa + "'"; SqlCommand cmd = new SqlCommand(del, conn);
DialogResult result = MessageBox.Show("Bạn có chắc chắn muốn xoá không ?", "Thông báo", MessageBoxButtons.OKCancel); if (result == DialogResult.OK) { cmd.ExecuteNonQuery(); conn.Close();
} } sửa thông tin sách conn.Open(); string sua = "update T_SACH set tensach = N'" + txt_tensach.Text +
@"',maloai = N'" + cb_loai.Text + @"', maTG = N'" + cb_tg.Text +
@"',soluong = N'" + txt_soluong.Text + @"' where (masach =N'" + txt_masach.Text + @"')";
SqlCommand cmd = new SqlCommand(sua, conn); cmd.ExecuteNonQuery(); conn.Close(); napdulieu(); code form mượn sách
Mượn sách int muon = int.Parse(txt_somuon.Text); int sl = int.Parse(txt_soluong.Text); if (muon > sl) {
MessageBox.Show("Số Lượng Sách Mượn Quá Lớn!", "Error"); txt_somuon.Focus();
} else { DateTime ngaymuon = DateTime.Now;
To insert a new record into the T_MUONTRA table, first parse the date from the input text box and define the desired date format as "MM-dd-yyyy" After establishing a connection to the database, execute an SQL insert statement that includes the student ID, book ID, borrowing date, return date, and quantity of books borrowed.
SqlCommand cmd = new SqlCommand(them, conn); cmd.ExecuteNonQuery(); int con = sl - muon; txt_soluong.Text = con.ToString(); string sua = "update T_SACH set soluong = N'" + con + @"' where (masach =N'" + txt_masach.Text + @"')";
SqlCommand cmd1 = new SqlCommand(sua, conn); cmd1.ExecuteNonQuery(); conn.Close(); napdulieu(); code form trả sách
To update the return date in the database, the current date is formatted as "MM-dd-yyyy" and used in an SQL command to modify the T_MUONTRA table where the ID matches the input from txt_id After executing the update, the total quantity is recalculated by adding the current quantity from txt_soluong and the borrowed amount from txt_somuon This new total is then set back to txt_soluong Additionally, another SQL command is executed to update the T_SACH table, adjusting the quantity based on the new total where the book ID matches the input from txt_masach.
SqlCommand cmd1 = new SqlCommand(sua, conn); cmd1.ExecuteNonQuery(); conn.Close(); napdulieu(); code form báo cáo
SqlConnection conn = new SqlConnection(chuoiketnoi); conn.Open(); string sql = "select T_SV.masv,T_SV.tensv, T_SACH.masach,T_SACH.tensach, T_MUONTRA.ngaymuon, T_MUONTRA.ngayhentra, T_MUONTRA.soluong,
T_MUONTRA.ngaytra from T_MUONTRA inner join T_SV on T_SV.masv=T_MUONTRA.masv inner join T_SACH on
SqlDataAdapter dap = new SqlDataAdapter(sql, conn);
DataSet ds = new DataSet(); dap.Fill(ds); rpt.SetDataSource(ds.Tables[0]);