Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 53 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
53
Dung lượng
7,5 MB
File đính kèm
Source code.zip
(13 MB)
Nội dung
TÊN ĐỀ TÀI: XÂY DỰNG ỨNG DỤNG QUẢN LÝ THƯ VIỆN BÀI TẬP LỚN MƠN: LẬP TRÌNH NET + BTL MỤC LỤC PHẦN 1: THIẾT KẾ CƠ SỞ DỮ LIỆU .3 Cấu trúc bảng SACH .3 Cấu trúc bảng NXB .3 Cấu trúc bảng TACGIA Cấu trúc bảng LOAI Cấu trúc bảng PHIEUMUON .4 Cấu trúc bảng THEDOCGIA Cấu trúc bảng KHOA Cấu trúc bảng CHITIET_PM Lược đồ quan hệ PHẦN 2: SƠ ĐỒ PHÂN RÃ CHỨC NĂNG .7 PHẦN 3: GIAO DIỆN CỦA CÁC CHỨC NĂNG Giao diện chương trình .8 Giao diện đăng nhập Giao diện Đổi mật Giao diện Sách .9 Giao diện Nhà xuất .10 Giao diện Thẻ độc giả 10 Giao diện Tác giả 11 Giao diện Quản trị viên .12 Giao diện Danh mục Sách 12 10 Giao diện Phiếu mượn 13 11 Giao diện Chi tiết phiếu mượn 13 12 Giao diện Thống kê độc giả 14 13 Giao diện Thống kê phiếu mượn 15 14 Giao diện Thống kê tổng quan 15 *Phân quyền tài khoản: .15 PHẦN 4: MÃ NGUỒN (SOURCE CODE) .18 Trang chủ .18 Đăng nhập 20 Đổi mật .22 Hiển thị danh mục sách .23 Sách .25 Thẻ độc giả 30 Nhà xuất 33 Tác giả 36 Quản trị viên 40 10 Phiếu mượn 43 11 Chi tiết phiếu mượn .46 12 Thống kê độc giả 49 13 Thống kê phiếu mượn 50 14 Thống kê tổng quan .51 15 Class Thư viện .54 16 Class Database .54 PHẦN 1: THIẾT KẾ CƠ SỞ DỮ LIỆU Cấu trúc bảng SACH Thể Sách, tài liệu Các sách, tài liệu phân biệt với mã sách STT Tên thuộc tính Kiểu liệu Khóa Khóa ngoại Diễn giải masach Varchar(10) x Mã sách, tài liệu Tensach Varchar(50) Tên sách, tài liệu Sotrang Int Số trang Soluong Int Số lượng Manxb Varchar(10) x Matg Varchar(10) x Matheloai Varchar(10) x namxb int Mã nhà xuất sách tham chiếu đển bảng NXB Mã tác giả sách tham chiếu đển bảng TACGIA Mã thể loại Năm xuất Cấu trúc bảng NXB Thể Nhà xuất Các nhà xuất phân biệt với mã nhà xuất STT Tên thuộc tính Kiểu liệu Khóa x Manxb Varchar(10) Tennxb Diachi Email Nvarchar(50 ) Nvarchar(50 ) Nvarchar(50 ) Khóa ngoại Diễn giải Mã nhà xuất Tên nhà xuất Địa nhà xuất Email Cấu trúc bảng TACGIA Thể Tác giả Các tác giả phân biệt với mã tác gải STT Tên thuộc tính Kiểu liệu Khóa x Matg Varchar(10) Tentg Namsinh Nvarchar(50 ) int Nammat int Sdt Nvarchar(20 ) Khóa ngoại Diễn giải Mã tác giả Họ tên tác giả Năm sinh Khơng rõ để giá trị null Năm Khơng rõ để giá trị null Số điện thoại tác giả Khơng có để giá trị null Cấu trúc bảng LOAI Thể Thể loại Các thể loại phân biệt với mã thể loại STT Tên thuộc tính Kiểu liệu Khóa x Maloai varchar(10) Tenloai Nvarchar(50 ) Khóa ngoại Diễn giải Mã thể loại Tên thể loại Cấu trúc bảng PHIEUMUON Thể Phiếu mượn Các phiếu mượn phân biệt với mã phiếu mượn STT Tên thuộc tính Kiểu liệu Khóa x Khóa ngoại Diễn giải Mapm Varchar(10) Mã phiếu mượn Mathe Varchar(10) x Maqtv Varchar(10) x Ngaymuon Date Mã thẻ độc giả tham chiếu đển bảng THEDOCGIA Mã quản trị viên cho mượn tham chiếu đển bảng QTV Ngày mượn Hantra Date Ngày dự kiến trả tinhtrang Nvarchar(15 ) Tình trạng phiếu mượn Là giá trị: Chưa trả, Đã trả Quá hạn trả Cấu trúc bảng THEDOCGIA Thể Thẻ độc giả Các thẻ độc giả phân biệt với mã thẻ STT Tên thuộc tính Kiểu liệu Khóa x Mathe Varchar(10) Hoten Namsinh Nvarchar(50 ) int Makhoa Varchar(10) Sdt Varchar(11) Ngaylapthe date Khóa ngoại Mã thẻ độc giả Họ tên độc giả Năm sinh x Cấu trúc bảng KHOA Diễn giải Mã khoa tham chiếu đển bảng KHOA Số điện thoại độc giả Ngày lập thẻ Thể Khoa Các khoa phân biệt với mã khoa STT Tên thuộc tính Kiểu liệu Khóa X Makhoa Varchar(10) Tenkhoa Nvarchar(50 ) Khóa ngoại Diễn giải Mã khoa Tên khoa Cấu trúc bảng CHITIET_PM Thể Chi tiết sách Phiếu mượn Các chi tiết phân biệt với mã chi tiết STT Tên thuộc tính Kiểu liệu Khóa Khóa ngoại Machitiet Varchar(10) x Mapm Varchar(10) x Masach Varchar(10) x soluong int Lược đồ quan hệ Diễn giải Mã chi tiết phiếu mượn Mã phiếu mượn tham chiếu đển bảng PHIEUMUON Mã sách tham chiếu đển bảng SACH Số lượng sách mượn PHẦN 2: SƠ ĐỒ PHÂN RÃ CHỨC NĂNG Quản lý thư viện Hệ thống Danh mục sách Quản lý mượn trả Thống kê Thông tin Thẻ độc giả Quản lý phiếu mượn Thống kê độc giả Thông tin liên lạc Đăng xuất Sách Quản lý chi tiét phiếu mượn Thống kê phiếu mượn Giới thiệu Đổi mật Nhà xuất Đăng nhập Xem danh mục sách Quản lý liệu Thống kê tổng quan Tác giả Nhân viên PHẦN 3: GIAO DIỆN CỦA CÁC CHỨC NĂNG Giao diện chương trình Nếu chưa đăng nhập, người dùng có quyền xem Danh mục sách Thông tin phần mềm, không cấp quyền sử dụng chức khác Giao diện đăng nhập Chức cho phép người dùng đăng nhập vào hệ thống với tên mật + Hệ thống hiển thị form đăng nhập yêu cầu người dùng nhập “Tên đăng nhập” “Mật khẩu” + Hệ thống kiểm tra tên mật nhập cho phép người dùng đăng nhập vào hệ thống Giao diện Đổi mật Giao diện cho phép người dùng tiến hành đổi mật Phải nhập mật cũ; mật mật nhập lại phải trùng cập nhật thành công Giao diện Sách Giao diện cho phép người dùng cập nhật thêm, sửa, xóa sách, tài liệu Chúng ta xem chi tiết mã sách, tên sách, số trang, số lượng, mã nhà xuất bản, mã tác giả, mã thể loại, năm xuất Sách Các chức giao diện: • Thêm: Cho phép người dùng thêm thơng tin vào CSDL • Cập nhật: sửa tất mục form, trừ mã sách • • Xóa: xóa sách danh sách Xem chi tiết: Khi bấm vào dịng listview, thơng tin sách hiển thị lên textbox • Tìm: Tìm thơng tin sách dựa vào mã sách Nếu chưa có NXB tác giả CSDL phù hợp cới sách đó, QTV có quyền tạo Tạo NXB Tác giả Giao diện Nhà xuất Giao diện cho phép người dùng cập nhật thêm, sửa, xóa Nhà xuất Chúng ta xem chi tiết mã nhà xuất bản, tên nhà xuất bản, địa chỉ, email NXB Các chức giao diện: • Thêm: Cho phép người dùng thêm thơng tin vào CSDL • Tìm kiếm: Tìm thơng tin NXB dựa vào mã NXB • Cập nhật: sửa tất mục form, trừ mã NXB • • Xóa: xóa NXB danh sách Xem chi tiết: Khi bấm vào dòng listview, thơng tin NXB hiển thị lên textbox Giao diện Thẻ độc giả 10 } } Quản trị viên using System; using using using using using using using using using System.Collections.Generic; System.ComponentModel; System.Data; System.Data.SqlClient; System.Drawing; System.Linq; System.Text; System.Threading.Tasks; System.Windows.Forms; namespace QuanLyThuVien { public partial class formQTV : Form { SqlConnection cn; SqlCommand cmd; public formQTV() { InitializeComponent(); } private void Moketnoi() { if (cn.State == ConnectionState.Open) cn.Close(); cn.Open(); } private void LoadListView() { Moketnoi(); cmd = new SqlCommand("select * from QTV", cn); SqlDataReader r = cmd.ExecuteReader(); listView1.Items.Clear(); // Xóa tất liệu listView1 while (r.Read()) { string[] st = new string[6]; st[0] = r[0].ToString(); st[1] = r[1].ToString(); st[2] = r[2].ToString(); st[3] = r[3].ToString(); st[4] = r[4].ToString(); st[5] = r[6].ToString(); ListViewItem lv = new ListViewItem(st); listView1.Items.Add(lv); } cmd.Dispose(); boxMaqtv.Focus(); } private void formNhanvien_Load(object sender, EventArgs e) { try { string connectionString = @"Data Source=DESKTOP-A20PBA5\SQLEXPRESS;Initial Catalog=Quanlythuvien-BTL;Integrated Security=True"; cn = new SqlConnection(connectionString); cn.Open(); } catch //(Exception loi) { MessageBox.Show("Không thể kết nối được"); } 39 LoadListView(); //hien thi listview } private void LoadItem(int i) //hien thi data listview len cac textbox { boxMaqtv.Text = listView1.Items[i].Text; boxHoten.Text = listView1.Items[i].SubItems[1].Text; boxNamsinh.Text = listView1.Items[i].SubItems[2].Text; boxSdt.Text = listView1.Items[i].SubItems[3].Text; boxDiachi.Text = listView1.Items[i].SubItems[4].Text; boxMaqtv.Focus(); } private int KiemTraMa(string ma) //doi chieu voi ma sach da co xem co trung lap ko { Moketnoi(); cmd = new SqlCommand("select count(*) from QTV where maqtv = '" + ma.Trim() + "'"); cmd.Connection = cn; return (int)cmd.ExecuteScalar(); } void XoaTextbox() { boxMaqtv.Clear(); boxMatkhau.Clear(); boxHoten.Clear(); boxSdt.Clear(); boxNamsinh.Clear(); boxDiachi.Text = ""; boxMaqtv.Focus(); } private void button6_Click(object sender, EventArgs e) { int LaTotruong; if (checkBox1.Checked == true) LaTotruong = 1; else LaTotruong = 0; if (KiemTraMa(boxMaqtv.Text) == 1) { MessageBox.Show("Mã có"); boxMaqtv.Clear(); boxMaqtv.Focus(); } else { Moketnoi(); string sql = "insert into QTV values(" + "'" + boxMaqtv.Text + "','" + boxHoten.Text + "','" + boxNamsinh.Text + "','" + boxSdt.Text + "', '" + boxDiachi.Text + "', '" + boxMatkhau.Text + "', "+ LaTotruong +")"; cmd = new SqlCommand(sql, cn); cmd.ExecuteNonQuery(); MessageBox.Show("Đã lưu thành công"); LoadListView(); //Nạp lại liệu vào listView1 cmd.Dispose(); } XoaTextbox(); } private void button5_Click(object sender, EventArgs e) { DialogResult dr = MessageBox.Show("Bạn cập nhật lại mã QTV Mật Bạn tiếp tục ?", "Thông báo", MessageBoxButtons.YesNo); if (dr == DialogResult.Yes) // Nếu người sử dụng chọn nút yes { Moketnoi(); int LaTotruong; if (checkBox1.Checked == true) LaTotruong = 1; else LaTotruong = 0; string Sql = "UPDATE QTV SET hoten = '" + boxHoten.Text + "', namsinh = '" + boxNamsinh.Text + "'," + " sdt = '" + boxSdt.Text + "', diachi = '" + boxDiachi.Text + "', totruong = "+ LaTotruong +" "+ 40 " WHERE maqtv = '" + boxMaqtv.Text + "'"; cmd = new SqlCommand(Sql, cn); if (cmd.ExecuteNonQuery() == 1) { MessageBox.Show("Cập nhật thành công"); LoadListView(); LoadItem(0); } else MessageBox.Show("Không tồn mã quan tri vien " + boxMaqtv.Text); cmd.Dispose(); XoaTextbox(); } } private void button4_Click(object sender, EventArgs e) { DialogResult dr = MessageBox.Show("Chắc chắn xóa hay khơng ?", "Thông báo", MessageBoxButtons.YesNo); if (dr == DialogResult.Yes) // Nếu người sử dụng chọn nút yes { Moketnoi(); string Sql = "delete from QTV where maqtv ='" + boxMaqtv.Text + "'"; cmd = new SqlCommand(Sql, cn); if (cmd.ExecuteNonQuery() == 1) { MessageBox.Show("Xóa thành cơng"); LoadListView(); LoadItem(0); } else MessageBox.Show("Khơng tồn mã quan tri vien " + boxMaqtv.Text); cmd.Dispose(); } } } private void listView1_Click(object sender, EventArgs e) { LoadItem(listView1.FocusedItem.Index); } } 10 Phiếu mượn using System; using using using using using using using using using System.Collections.Generic; System.ComponentModel; System.Data; System.Data.SqlClient; System.Drawing; System.Linq; System.Text; System.Threading.Tasks; System.Windows.Forms; namespace QuanLyThuVien { public partial class formPhieumuon : Form { SqlConnection cn; SqlCommand cmd; int i; public formPhieumuon() { InitializeComponent(); } private void Moketnoi() { 41 if (cn.State == ConnectionState.Open) cn.Close(); cn.Open(); } private void LoadListView() { Moketnoi(); cmd = new SqlCommand("select * from PHIEUMUON", cn); SqlDataReader r = cmd.ExecuteReader(); listView1.Items.Clear(); // Xóa tất liệu listView1 while (r.Read()) { string[] st = new string[6]; st[0] = r[0].ToString(); st[1] = r[1].ToString(); st[2] = r[2].ToString(); st[3] = r[3].ToString(); st[4] = r[4].ToString(); st[5] = r[5].ToString(); ListViewItem lv = new ListViewItem(st); listView1.Items.Add(lv); } cmd.Dispose(); boxMapm.Focus(); if (boxTinhtrang.Text == "DA TRA") { boxTinhtrang.BackColor = Color.Red; } } private void formPhieumuon_Load(object sender, EventArgs e) { // TODO: This line of code loads data into the '_Quanlythuvien_BTLDataSet4.PHIEUMUON' table You can move, or remove it, as needed try { string connectionString = @"Data Source=DESKTOP-A20PBA5\SQLEXPRESS;Initial Catalog=Quanlythuvien-BTL;Integrated Security=True"; cn = new SqlConnection(connectionString); cn.Open(); } catch //(Exception loi) { MessageBox.Show("Không thể kết nối được"); } LoadListView(); //hien thi listview boxTinhtrang.Text = "CHUA TRA"; dateTimePicker_Ngaymuon.Value = DateTime.Today; } private void button2_Click(object sender, EventArgs e) { formChonThedocgia f = new formChonThedocgia(); f.ShowDialog(); if (classThuvien.mathe != "") { boxMathedg.Text = classThuvien.mathe.ToString(); } else boxMathedg.Text = ""; } private void btnTimQTV_Click(object sender, EventArgs e) { formChonQTV f = new formChonQTV(); f.ShowDialog(); if (classThuvien.maQTV != "") { boxMaQTV.Text = classThuvien.maQTV.ToString(); } 42 "'"); } private void LoadItem(int i) //hien thi data listview len cac textbox { boxMapm.Text = listView1.Items[i].Text; boxMathedg.Text = listView1.Items[i].SubItems[1].Text; boxMaQTV.Text = listView1.Items[i].SubItems[2].Text; dateTimePicker_Ngaymuon.Text = listView1.Items[i].SubItems[3].Text; dateTimePicker_Hantra.Text = listView1.Items[i].SubItems[4].Text; boxTinhtrang.Text = listView1.Items[i].SubItems[5].Text; boxMapm.Focus(); } private int KiemTraMa(string ma) //doi chieu voi ma sach da co xem co trung lap ko { Moketnoi(); cmd = new SqlCommand("select count(*) from PHIEUMUON where mapm = '" + ma.Trim() + cmd.Connection = cn; return (int)cmd.ExecuteScalar(); } void XoaTextbox() { boxMaQTV.Clear(); boxMathedg.Clear(); boxMapm.Clear(); boxMapm.Focus(); } private void btnThem_Click(object sender, EventArgs e) { if (boxTinhtrang.Text != "CHUA TRA") { MessageBox.Show("Tình trạng phiếu mượn lúc đầu phải Chưa Trả Mời chọn lại xác"); } else { if (KiemTraMa(boxMapm.Text) == 1) { MessageBox.Show("Mã có"); boxMapm.Clear(); boxMapm.Focus(); } else { Moketnoi(); string sql = "insert into PHIEUMUON values(" + "'" + boxMapm.Text + "','" + boxMathedg.Text + "','" + boxMaQTV.Text + "','" + dateTimePicker_Ngaymuon.Value + "', '" + dateTimePicker_Hantra.Text + "', '" + boxTinhtrang.Text + "')"; cmd = new SqlCommand(sql, cn); cmd.ExecuteNonQuery(); MessageBox.Show("Đã lưu thành công"); LoadListView(); //Nạp lại liệu vào listView1 cmd.Dispose(); } XoaTextbox(); } } private void btnCapnhat_Click(object sender, EventArgs e) { DialogResult dr = MessageBox.Show("Bạn cập nhật lại mã phiếu mượn Bạn tiếp tục ?", "Thông báo", MessageBoxButtons.YesNo); if (dr == DialogResult.Yes) // Nếu người sử dụng chọn nút yes { Moketnoi(); string Sql = "UPDATE PHIEUMUON SET tinhtrang = '" + boxTinhtrang.Text + "', mathe = '" + boxMathedg.Text + "'," + " maqtv = '" + boxMaQTV.Text + "', hantra = '" + dateTimePicker_Hantra.Text + "'" + 43 " WHERE mapm = '" + boxMapm.Text + "'"; cmd = new SqlCommand(Sql, cn); if (cmd.ExecuteNonQuery() == 1) { MessageBox.Show("Cập nhật thành công"); LoadListView(); LoadItem(0); } else MessageBox.Show("Không tồn mã phieu muon " + boxMapm.Text); cmd.Dispose(); XoaTextbox(); } } private void button1_Click(object sender, EventArgs e) { boxTinhtrang.Text = "DA TRA"; } private void btnQuahan_Click(object sender, EventArgs e) { boxTinhtrang.Text = "QUA HAN TRA"; } private void listView1_Click(object sender, EventArgs e) { LoadItem(listView1.FocusedItem.Index); } private void button3_Click(object sender, EventArgs e) { Moketnoi(); string sql = "select * from PHIEUMUON where mapm='" + boxMapm.Text + "'"; cmd = new SqlCommand(sql, cn); SqlDataReader dr = cmd.ExecuteReader(); if (dr.Read()) { string mapm = dr["mapm"].ToString(); string mathedg = dr["mathe"].ToString(); string maqtv = dr["maqtv"].ToString(); string hantra = dr["hantra"].ToString(); string tinhtrang = dr["tinhtrang"].ToString(); } boxMapm.Text = mapm; boxMathedg.Text = mathedg; boxMaQTV.Text = maqtv; dateTimePicker_Hantra.Text = hantra; boxTinhtrang.Text = tinhtrang; } else MessageBox.Show("Khơng tìm thấy"); } } 11 Chi tiết phiếu mượn using System; using using using using using using using using System.Collections.Generic; System.ComponentModel; System.Data; System.Data.SqlClient; System.Drawing; System.Linq; System.Text; System.Threading.Tasks; 44 using System.Windows.Forms; namespace QuanLyThuVien { public partial class formChitietPhieumuon : Form { SqlConnection cn; SqlCommand cmd; SqlCommand cmd2; int i; public formChitietPhieumuon() { InitializeComponent(); } private void Moketnoi() { if (cn.State == ConnectionState.Open) cn.Close(); cn.Open(); } private void LoadListView() { if (boxMapm.Text != "") { Moketnoi(); cmd = new SqlCommand("select * from CHITIET_PM where mapm = '" + boxMapm.Text + "' ", cn); SqlDataReader r = cmd.ExecuteReader(); listView1.Items.Clear(); // Xóa tất liệu listView1 if (r.HasRows) { while (r.Read()) { string[] st = new string[4]; st[0] = r["machitiet"].ToString(); st[1] = r["masach"].ToString(); st[2] = r["soluong"].ToString(); ListViewItem lv = new ListViewItem(st); listView1.Items.Add(lv); boxSoluong.Text = "1"; boxTongsosach.Text = listView1.Items.Count.ToString(); } r.Close(); } cmd.Dispose(); } } private void formChitietPhieumuon_Load(object sender, EventArgs e) { try { string connectionString = @"Data Source=DESKTOP-A20PBA5\SQLEXPRESS;Initial Catalog=Quanlythuvien-BTL;Integrated Security=True"; cn = new SqlConnection(connectionString); cn.Open(); } catch //(Exception loi) { MessageBox.Show("Không thể kết nối được"); } LoadListView(); //hien thi listview } private void btnChonpm_Click(object sender, EventArgs e) { formChonPhieumuon f = new formChonPhieumuon(); 45 f.ShowDialog(); if (classThuvien.mapm != "") { boxMapm.Text = classThuvien.mapm.ToString(); LoadListView(); } } private void button2_Click(object sender, EventArgs e) { formChonsach f = new formChonsach(); f.ShowDialog(); if (classThuvien.masach != "") { boxMasach.Text = classThuvien.masach.ToString(); } LoadListView(); } private void btnThem_Click(object sender, EventArgs e) { if (boxMapm.Text != "" && boxMasach.Text != "" && boxSoluong.Text != "") { Moketnoi(); string sql = "insert into CHITIET_PM OUTPUT inserted.machitiet values(" + "'" + boxMapm.Text + "','" + boxMasach.Text + "','" + boxSoluong.Text + "')"; cmd = new SqlCommand(sql, cn); cmd.ExecuteNonQuery(); MessageBox.Show("Đã lưu thành công"); LoadListView(); //Nạp lại liệu vào listView1 cmd.Dispose(); boxMasach.Clear(); boxSoluong.Text = "1"; } else MessageBox.Show("Mời nhập đủ ô !!!"); } private void btnSua_Click(object sender, EventArgs e) { Moketnoi(); string Sql = "UPDATE CHITIET_PM SET masach = '" + boxMasach.Text + "', soluong = '" + Convert.ToInt32(boxSoluong.Text) + "'" + " WHERE machitiet = '" + Convert.ToInt32(Luutamthoimachitiet.Text) + "'"; cmd = new SqlCommand(Sql, cn); if (Luutamthoimachitiet.Text == "label3") { MessageBox.Show("Mới tạo lần đầu nên không thẻ sửa"); } else { if (cmd.ExecuteNonQuery() == 1) { LoadListView(); LoadItem(0); } else MessageBox.Show("Không tồn mã sach " + boxMasach.Text); cmd.Dispose(); } } private void btnXoa_Click(object sender, EventArgs e) { DialogResult dr = MessageBox.Show("Chắc chắn xóa hay khơng ?", "Thơng báo", MessageBoxButtons.YesNo); 46 if (dr == DialogResult.Yes) // Nếu người sử dụng chọn nút yes { Moketnoi(); string Sql = "delete from CHITIET_PM where machitiet ='" + Luutamthoimachitiet.Text + "'"; cmd = new SqlCommand(Sql, cn); if (cmd.ExecuteNonQuery() == 1) { MessageBox.Show("Xóa thành cơng"); LoadListView(); LoadItem(0); } else MessageBox.Show("Không tồn mã sach " + boxMasach.Text); cmd.Dispose(); } } private void LoadItem(int i) //hien thi data listview len cac textbox { Luutamthoimachitiet.Text = listView1.Items[i].Text; boxSoluong.Text = listView1.Items[i].SubItems[3].Text; boxMasach.Text = listView1.Items[i].SubItems[1].Text; } } private void listView1_Click(object sender, EventArgs e) { LoadItem(listView1.FocusedItem.Index); } } 12 Thống kê độc giả using System; using using using using using using using using using System.Collections.Generic; System.ComponentModel; System.Data; System.Data.SqlClient; System.Drawing; System.Linq; System.Text; System.Threading.Tasks; System.Windows.Forms; namespace QuanLyThuVien { public partial class formThongkeDocgia : Form { SqlConnection cn; SqlCommand cmdSelect; Thedocgia t = new Thedocgia(); DataTable dt; public formThongkeDocgia() { InitializeComponent(); } private void formThongkeDocgia_Load(object sender, EventArgs e) { // TODO: This line of code loads data into the '_Quanlythuvien_BTLDataSet7.KHOA' table You can move, or remove it, as needed this.kHOATableAdapter.Fill(this._Quanlythuvien_BTLDataSet7.KHOA); HienthiDSThedocgia(); this.dataGridView1.DefaultCellStyle.Font = new Font("Tahoma", 15); } void HienthiDSThedocgia() { 47 } dt = t.LayDsThedg(); dataGridView1.DataSource = dt; comboBox1.Text = ""; private void btnTim_Click(object sender, EventArgs e) { DataView dv = new DataView(dt); //Nạp liệu vào DataView //bắt đầu lọc liệu string mathe, hoten, makhoa; int namsinh; if (boxMathe.Text == "") mathe = "*"; else mathe = boxMathe.Text.ToString(); if (boxHoten.Text == "") hoten = ""; else hoten = boxHoten.Text.ToString(); if (comboBox1.Text == "") makhoa = ""; else makhoa = comboBox1.SelectedValue.ToString(); if (boxNamsinh.Text != "") { namsinh = Convert.ToInt32(boxNamsinh.Text); dv.RowFilter = "hoten like '%" + hoten + "%' and mathe like'%" + mathe + "%' and makhoa like'%" + makhoa + "%' and namsinh = " + namsinh + ""; dataGridView1.DataSource = dv; } else dv.RowFilter = "hoten like '%" + hoten + "%' and mathe like'%" + mathe + "%' and makhoa like'%" + makhoa + "%'"; } dataGridView1.DataSource = dv; boxSoluongtk.Text = dv.Count.ToString(); private void btnReset_Click(object sender, EventArgs e) { boxNamsinh.Clear(); boxHoten.Clear(); boxMathe.Clear(); comboBox1.Text = ""; } } } 13 Thống kê phiếu mượn using System; using using using using using using using using using System.Collections.Generic; System.ComponentModel; System.Data; System.Data.SqlClient; System.Drawing; System.Linq; System.Text; System.Threading.Tasks; System.Windows.Forms; namespace QuanLyThuVien { public partial class formThongkePhieumuon : Form { SqlConnection cn; SqlCommand cmdSelect; phieumuon s = new phieumuon(); DataTable dt; public formThongkePhieumuon() { InitializeComponent(); } private void formThongkePhieumuon_Load(object sender, EventArgs e) { 48 HienthiDSPhieumuon(); this.dataGridView1.DefaultCellStyle.Font = new Font("Tahoma", 15); } void HienthiDSPhieumuon() { dt = s.LayDSPhieumuon(); dataGridView1.DataSource = dt; comboBox1.Text = ""; } private void btnTim_Click(object sender, EventArgs e) { DataView dv = new DataView(dt); //Nạp liệu vào DataView //bắt đầu lọc liệu string mapm, mathe, tinhtrang; if (boxMapm.Text == "") mapm = "*"; else mapm = boxMapm.Text.ToString(); if (boxMathe.Text == "") mathe = ""; else mathe = boxMathe.Text.ToString(); if (comboBox1.Text == "") tinhtrang = ""; else tinhtrang = comboBox1.Text.ToString(); dv.RowFilter = "mapm like '%" + mapm + "%' and mathe like'%" + mathe + "%' and tinhtrang like'%" + tinhtrang + "%'" ; dataGridView1.DataSource = dv; boxSoluongtk.Text = dv.Count.ToString(); } private void btnReset_Click(object sender, EventArgs e) { boxMathe.Clear(); boxMapm.Clear(); comboBox1.Text = ""; } private int Tongsoluongtk(DataView dv) { int i = 0; foreach (DataRow r in dt.Rows) { i = i + 1; } return i; } private void btnChonPhieumuon_Click(object sender, EventArgs e) { formChonPhieumuon f = new formChonPhieumuon(); f.ShowDialog(); if (classThuvien.mapm != "") { boxMapm.Text = classThuvien.mapm.ToString(); } } private void btnTimdocgia_Click(object sender, EventArgs e) { formChonThedocgia f = new formChonThedocgia(); f.ShowDialog(); if (classThuvien.mathe != "") { boxMathe.Text = classThuvien.mathe.ToString(); } } } } 14 Thống kê tổng quan using System; using System.Collections.Generic; using System.ComponentModel; 49 using using using using using using using System.Data; System.Data.SqlClient; System.Drawing; System.Linq; System.Text; System.Threading.Tasks; System.Windows.Forms; namespace QuanLyThuVien { public partial class XemSophieuquahan : Form { SqlConnection cn = new SqlConnection(); SqlCommand cmd; public XemSophieuquahan() { InitializeComponent(); } private void Moketnoi() { if (cn.State == ConnectionState.Open) cn.Close(); cn.Open(); } private void formThongkeTongquan_Load(object sender, EventArgs e) { try { string connectionString = @"Data Source=DESKTOP-A20PBA5\SQLEXPRESS;Initial Catalog=Quanlythuvien-BTL;Integrated Security=True"; cn = new SqlConnection(connectionString); cn.Open(); } catch //(Exception loi) { MessageBox.Show("Không thể kết nối được"); } //So luong dau sach cmd = new SqlCommand("select count(*) from SACH ", cn); SqlDataReader r1 = cmd.ExecuteReader(); if (r1.HasRows) { while (r1.Read()) { boxSumDausach.Text = r1[0].ToString(); } } r1.Close(); cmd.Dispose(); //So luong cuon sach cmd = new SqlCommand("select sum(soluong) from SACH ", cn); SqlDataReader r2 = cmd.ExecuteReader(); if (r2.HasRows) { while (r2.Read()) { boxSumCuonsach.Text = r2[0].ToString(); } } r2.Close(); cmd.Dispose(); //So luong the doc gia cmd = new SqlCommand("select count(*) from THEDOCGIA ", cn); SqlDataReader r3 = cmd.ExecuteReader(); if (r3.HasRows) { while (r3.Read()) { 50 } boxSumThedocgia.Text = r3[0].ToString(); } r3.Close(); cmd.Dispose(); //So luong phieu muon cmd = new SqlCommand("select count(*) from PHIEUMUON ", cn); SqlDataReader r4 = cmd.ExecuteReader(); if (r4.HasRows) { while (r4.Read()) { boxSumPhieumuon.Text = r4[0].ToString(); } } r4.Close(); cmd.Dispose(); cn); //So luong phieu muon qua han cmd = new SqlCommand("select count(*) from PHIEUMUON where tinhtrang = 'QUA HAN TRA' ", SqlDataReader r5 = cmd.ExecuteReader(); if (r5.HasRows) { while (r5.Read()) { boxSumPhieumuonQuahan.Text = r5[0].ToString(); } } r5.Close(); cmd.Dispose(); //So luong cuon sach dang cho muon cmd = new SqlCommand("select sum(soluong) from CHITIET_PM inner join PHIEUMUON on CHITIET_PM.mapm = PHIEUMUON.mapm ", cn); SqlDataReader r6 = cmd.ExecuteReader(); if (r6.HasRows) { while (r6.Read()) { boxCuonsachChomuon.Text = r6[0].ToString(); } } r6.Close(); cmd.Dispose(); //So luong NXB cmd = new SqlCommand("select count(*) from NXB ", cn); SqlDataReader r7 = cmd.ExecuteReader(); if (r7.HasRows) { while (r7.Read()) { boxSumNXB.Text = r7[0].ToString(); } } r7.Close(); cmd.Dispose(); //So luong tac gia cmd = new SqlCommand("select count(*) from TACGIA", cn); SqlDataReader r8 = cmd.ExecuteReader(); if (r8.HasRows) { while (r8.Read()) { boxSumTacgia.Text = r8[0].ToString(); } 51 } } r8.Close(); cmd.Dispose(); private void button1_Click(object sender, EventArgs e) { formPhieuquahan f = new formPhieuquahan(); f.ShowDialog(); } } } 15 Class Thư viện using System; using using using using System.Collections.Generic; System.Linq; System.Text; System.Threading.Tasks; namespace QuanLyThuVien { class classThuvien { static public string maNXB= ""; static public string maTG= ""; static public string maQTV = ""; static public string mathe = ""; static public string mapm = ""; static public string masach = ""; static public string tensach = "hehe"; static public bool trangthaidangnhap = false; static public bool laTotruong = false; } } 16 Class Database using System; using using using using using using System.Collections.Generic; System.Data; System.Data.SqlClient; System.Linq; System.Text; System.Threading.Tasks; namespace QuanLyThuVien { class Database { SqlConnection sqlConn; //Doi tuong ket noi CSDL SqlDataAdapter da;//Bo dieu phoi du lieu DataSet ds; //Doi tuong chhua CSDL giao tiep public Database() { string strCnn = @"Data Source=DESKTOP-A20PBA5\SQLEXPRESS;Initial Catalog=QuanlythuvienBTL;Integrated Security=True"; sqlConn = new SqlConnection(strCnn); } //Phuong thuc de thuc hien cau lenh strSQL truy vân du lieu public DataTable Execute(string sqlStr) { da = new SqlDataAdapter(sqlStr, sqlConn); ds = new DataSet(); da.Fill(ds); return ds.Tables[0]; 52 } } //Phuong thuc de thuc hien cac lenh Them, Xoa, Sua public void ExecuteNonQuery(string strSQL) { SqlCommand sqlcmd = new SqlCommand(strSQL, sqlConn); sqlConn.Open(); //Mo ket noi sqlcmd.ExecuteNonQuery();//Lenh hien lenh Them/Xoa/Sua sqlConn.Close();//Dong ket noi } } 53 ... Mã chi tiết phiếu mượn Mã phiếu mượn tham chi? ??u đển bảng PHIEUMUON Mã sách tham chi? ??u đển bảng SACH Số lượng sách mượn PHẦN 2: SƠ ĐỒ PHÂN RÃ CHỨC NĂNG Quản lý thư viện Hệ thống Danh mục sách Quản. .. giải Mã khoa Tên khoa Cấu trúc bảng CHITIET_PM Thể Chi tiết sách Phiếu mượn Các chi tiết phân biệt với mã chi tiết STT Tên thuộc tính Kiểu liệu Khóa Khóa ngoại Machitiet Varchar(10) x Mapm Varchar(10)... thư viện Hệ thống Danh mục sách Quản lý mượn trả Thống kê Thông tin Thẻ độc giả Quản lý phiếu mượn Thống kê độc giả Thông tin liên lạc Đăng xuất Sách Quản lý chi tiét phiếu mượn Thống kê phiếu