Bài tập lớn quản lý thư viện Đại học đầy đủ form và code, bao gồm từ đăng nhập, tới hệ thống, các chức năng của thư viện, các đối tượng tham gia quản lý thư viện. Bảng Sach thể hiện thông tin của các cuốn sách có trong thư viện. Các cuốn sách được phân biệt với nhau bởi mã sách. Bảng Nhanvien thể hiện thông tin của nhân viên quản lý thư viện. Các nhân viên được phân biệt với nhau thông qua mã số nhân viên. Bảng docgia thể hiện thông tin của sinh viên tới thu viện mượn sách. Mỗi sinh viên có một mã số độc giả riêng
Trang 1BÁO CÁO
Trang 21 Cấu trúc bảng Sách
STT Tên thuộc tính Kiểu dữ liệu Khóa chính Diễn giải
sách
4 Mã nhà xuất bản Nvarchar Mã nhà xuất bản tham
chiếu đến sách
6 Mã tác giá Nvarchar Mã tác giả tham chiếu đến
sách
Bảng Sach thể hiện thông tin của các cuốn sách có trong thư viện Các cuốn sách được phân biệt với nhau bởi mã sách.
2 Cấu trúc bảng Nhân viên
Bảng Nhanvien thể hiện thông tin của nhân viên quản lý thư viện Các nhân viên được phân biệt với nhau thông qua mã số nhân viên
STT Tên thuộc tính Kiểu dữ liệu Khóa chính Diễn giải
1 Mã nhân viên nvarchar x Mã số nhân viên tham
chiếu đến bảng nhanvien
Trang 3số tương ứng
nhân viên
3 Cấu trúc bảng Độc giả
Bảng docgia thể hiện thông tin của sinh viên tới thu viện mượn sách Mỗi sinh viên có một mã số độc giả riêng
STT Tên thuộc tính Kiểu dữ liệu Khóa chính Diễn giải
1 Mã độc giả nvarchar x Mã số người đọc tham chiếu tới bảng
docgia
2 Họ và tên Nvarchar Họ và tên của người mượn sách
3 Ngày sinh Date&time Ngày tháng năm sinh người đọc
4 Bảng Thể loại sách
Bảng theloai thể hiện các thể loại sách có trong thư viện, các thể loại phân biệt với nhau bởi mã thể loại
STT Tên thuộc tính Kiểu dữ liệu Khóa chính Diễn giải
1 Mã thể loại Nvarchar x Mã số thể loại tham chiếu tới
bảng theloai
2 Tên thể loại nvarchar Tên của các thể loại sách có
trong thư viện
5 Cấu trúc bảng Tác giả
Trang 4Bảng tacgia thể hiện các tác giả của các cuốn sách, mỗi tác giả được phân biệt với nhau bởi mã số tác giả
STT Tên thuộc tính Kiểu dữ liệu Khóa chính Diễn giả
1 Mã tác giả Nvarchar x Mã số tương ứng của mỗi tác
giả tham chiếu tới bảng tacgia
2 Tên tác giả nvarchar Họ và tên của tác giả với các mã
3 Địa chỉ Nvarchar Địa chỉ của nhà xuất bản
4 Điện thoại nvarchar Số điện thoại liên lạc của nxb
Nvarchar x Mã số cuau phiếu mượn với mỗi
sinh viên tham chiếu tới bảng phieumuon
2 Mã độc giả Nvarchar Mã số của độc giả tham chiếu tới
bảng docgia
3 Mã nhân viên nvarchar Mã số nhân viên tham chiếu tới
bảng nhanvien
Trang 58 Cấu trúc bảng Mượn trả sách
Bảng chitietmuon thể hiện thông tin sách mượn và ngày mượn, ngày trả của độc giả
STT Tên thuộc tính Kiểu dữ liệu Khóa chính Diễn giải
1 Mã phiếu Nvarchar x Mã số phiếu mượn của độc giả
thjam chiếu tới bảng phieumuon
chiếu tới bản sach
9 Lược đồ quan hệ
Trang 6
Phần 2: Sơ đồ chức năng phân rã
Trang 7Phần 3: Giao diện của các chức năng
Đăng nhập
Đăng xuất Thoát
Hệ thống
Độc giả Nhân viên Quản lý sách Thể loại Tác giả Nhà xuất bản
Danh mục
Mượn trả sách
Tìm kiếm sách Tìm độc giả
Trang 81 Giao diện chương trình chính
2 Giao diện đăng nhập
Giao diện này cho phép người dùng đăng nhập vào hệ thống quản lý thư viện của trường
3 Giao diện Thể loại sách
Trang 9Giao diện cho phép người dùng thêm các thể loại sách mới; sửa, xóa các thể loại sách
đã có trong database
4 Giao diện Tác giả
Cho phép thêm các tác giả mới bằng việc thêm mã tác giả và tên tác giả
Trang 10Xóa hoặc sửa các tác giả đã sẵn có
5 Giao diện Sách
- Tìm kiếm sách: có thể tìm kiếm sách dựa vào mã sách hoặc tên sách
- Cập nhật sách bằng các thuộc tính: mã sách, tên sách, nhà xuất bản, năm xuất bản, tác giả,
mã tác giả,
- Thêm: cho phép người dùng thêm mới mã sách, tên sách, mã tác giả, nhà xuất bản,
- Sửa, xóa: có thể sửa hoặc xóa thông tin của các cuốn sách đã có trong database
- Lưu: lưu các thông tin vừa thêm, sửa xóa
6 Giao diện Nhân viên
Trang 11- Cập nhật nhân viên bằng các thuộc tính: mã nhân viên, tên nhân viên, ngày sinh, giới tính, địa chỉ, điện thoại
- Thêm: cho phép người dùng thêm mới mã nhân viên, tên nhân viên, ngày sinh, giới tính, địa chỉ, điện thoại.
- Sửa, xóa: có thể sửa hoặc xóa thông tin của các nhân viên đã có trong database
- Lưu: lưu các thông tin vừa thêm, sửa xóa
7 Giao diện Độc giả
Trang 12- Cập nhật nhân viên bằng các thuộc tính: mã độc giả, tên độc giả, ngày sinh, giới tính, lớp
- Thêm: cho phép người dùng thêm mới mã độc giả, tên độc giả, ngày sinh, giới tính, lớp.
- Sửa, xóa: có thể sửa hoặc xóa thông tin của các nhân viên đã có trong database
- Lưu: lưu các thông tin vừa thêm, sửa xóa
8 Giao diện Mượn trả sách
Giao diện này giúp tạo phiếu mượn sách cho độc giả
Cho phép thêm, sửa xóa thông tin của phiếu mượn bao gồm mã phiếu, mã độc giả và mã nhân viên tạo phiếu mượn
Trang 13Giao diện Chi tiết mượn trả thể hiện thông tin bạn đọc đã mượn cuốn sách nào, thời gian mượn
và thời gian trả sách
Có thể thêm thông tin độc giả đã mượn sách
Gia hạn thời gian trả sách, ghi chú tình trạng sách
Lưu các thông tin đã thêm hoặc sửa đổi.
9 Giao diện tìm kiếm sách
Người dùng có thể tìm kiếm sách theo mã sách hoặc tên sách
Từ đó hệ thống sẽ cung cấp thông tin chi tiết về các cuốn sách
10.Giao diện Tìm kiếm độc giả
Trang 14Người dùng có thể tìm kiếm độc giả dựa vào một trong hai thông tin là mã độc giả và tên độc giả
Hệ thống sẽ cung cấp thông tin chi tiết về độc giả cho người dùng như: mã độc giả, họ và tên, giới tính, ngày sinh, lớp
11 Giao diện Thống kê sách
Trang 15Thống kê sách dựa trên các thông tin sẵn có trong database
12 Giao diện Thống kê độc giả
Thống kê độc giả dựa trên các thông tin chi tiết về độc giả trong database
Phần 4: Mã nguồn (Source code)
1 Mã nguồn của chương trình chính
Trang 16this.Visible = false;
Form f = new Form1();
Trang 18Themsuaxoa t = new Themsuaxoa();
string user = "admin";
Trang 19Themsuaxoa t = new Themsuaxoa();
privatevoid loaddata()
Trang 20privatevoid them_Click(object sender, EventArgs e)
Trang 22else MessageBox.Show("Lỗi");
Trang 23Themsuaxoa t = new Themsuaxoa();
privatevoid loaddata()
Trang 24privatevoid them_Click(object sender, EventArgs e)
Trang 27elseif (t.thucthidulieu("INSERT INTO tacgia VALUES (N'" + txtmatacgia.Text + "', '" + txttentacgia.Text + "')") == true)
Trang 28Themsuaxoa t = new Themsuaxoa();
privatevoid loaddata()
Trang 30privatevoid sua_Click(object sender, EventArgs e)
MessageBox.Show("Cập nhật dữ liệu thành công");
Trang 31privatevoid thoat_Click(object sender, EventArgs e)
Trang 32Themsuaxoa t = new Themsuaxoa();
privatevoid loaddata()
Trang 33DataTable dt = t.docdulieu("select * from nhaxb");
DataTable dt1 = t.docdulieu("select * from theloai");
DataTable dt2 = t.docdulieu("select * from tacgia");
privatevoid them_Click(object sender, EventArgs e)
{
txtmasach.Text = "";
txttensach.Text = "";
Trang 35== true)
}
elseif (t.thucthidulieu("update SACH set tensach=N'" + txttensach.Text + "', namxb=N'" + txtnamxb.Text + "', manxb='" + comnhaxb.Text + "', matheloai='" + comtheloai.Text + "', matacgia='" + comtacgia.Text + "'where masach=N'" + txtmasach.Text + "'") == true)
Trang 36DialogResult chon = MessageBox.Show("Bạn có muốn xóa sách có mã số " + txtmasach.Text +
"", "thông báo", MessageBoxButtons.YesNo);
if (chon == DialogResult.Yes)
{
try
{
t.thucthidulieu("delete from sach where masach='" + txtmasach.Text + "'");
MessageBox.Show("Xóa thành Công", "Thông báo");
Trang 37privatevoid thoat_Click(object sender, EventArgs e)
Trang 38privatevoid thoat_Click(object sender, EventArgs e)
Trang 39privatevoid Formnhanvien_Load(object sender, EventArgs e) {
privatevoid luu_Click(object sender, EventArgs e)
Trang 40elseif (t.thucthidulieu("INSERT INTO nhanvien(manv,hoten,ngaysinh,diachi,dienthoai,gioitinh) VALUES (N'" + txtmanhanvien.Text + "','" + txttennhanvien.Text + "','" + ngayhh + "','" + txtdiachi.Text +
"','" + txtdienthoai.Text + "','" + comgioitinh.Text + "')") == true)
Trang 41}
else
{
DialogResult chon = MessageBox.Show("Bạn có muốn xóa nhân viên có mã số " +
txtmanhanvien.Text + "", "thông báo", MessageBoxButtons.YesNo);
MessageBox.Show("Xóa thành Công", "Thông báo");
else MessageBox.Show("Lỗi không thể xóa dữ liệu", "Thông báo");
Trang 42elseif (t.thucthidulieu("update nhanvien set hoten=N'" + txttennhanvien.Text + "',
ngaysinh=N'" + ngayhh + "', diachi=N'" + txtdiachi.Text + "', dienthoai='" + txtdienthoai.Text + "'where manv=N'" + txtmanhanvien.Text + "'") == true)
Trang 43Themsuaxoa t = new Themsuaxoa();
privatevoid Formdocgia_Load(object sender, EventArgs e)
sua.Text = "Sửa";
them.Enabled = true;
Trang 44privatevoid them_Click(object sender, EventArgs e)
Trang 45txtlop.Focus();
}
elseif (t.thucthidulieu("INSERT INTO docgia VALUES (N'" + txtmadocgia.Text + "','" + txttendocgia.Text + "','" + ngayhh + "','" + comgioitinh.Text + "','" + txtlop.Text + "')") == true) {
MessageBox.Show("Thêm thành công");
Trang 46elseif (t.thucthidulieu("update docgia set hoten=N'" + txttendocgia.Text + "', ngaysinh=N'" + ngayhh + "', gioitinh=N'" + comgioitinh.Text + "', thongtin='" + txtlop.Text + "'where madocgia=N'" + txtmadocgia.Text + "'") == true)
DialogResult chon = MessageBox.Show("Bạn có muốn xóa độc giả có mã số " +
txtmadocgia.Text + "", "thông báo", MessageBoxButtons.YesNo);
MessageBox.Show("Xóa thành Công", "Thông báo");
else MessageBox.Show("Lỗi không thể xóa dữ liệu", "Thông báo");
Trang 47public DateTime date1, date2;
public TimeSpan time;
public int day;
Trang 48luoi.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells; xoa.Enabled = true;
DataTable dt = t.docdulieu("select * from docgia");
DataTable dt1 = t.docdulieu("select * from nhanvien");
DataTable dt2 = t.docdulieu("select * from phieumuon");
DataTable dt3 = t.docdulieu("select * from sach");
Trang 49private void them_Click(object sender, EventArgs e)
Trang 50Form f = new Formchinh();
f.Show();
}
private void luu_Click(object sender, EventArgs e)
{
if (t.thucthidulieu("INSERT INTO phieumuon VALUES (N'" + dem + "','" +
comdocgia.SelectedValue.ToString() + "','" + comnhanvien.SelectedValue.ToString() + "')") == true) {
Trang 52private void luoi1_SelectionChanged(object sender, EventArgs e)
string ngayhhh = ngaytrasach.Value.ToString("yyyy/MM/dd");
date1 = Convert.ToDateTime(ngaymuonsach.Text);//lấy thông tin ngày mượn ngày trả để kiêmtra đk ngày mượn<=ngày trả
Trang 53MessageBox.Show("Lỗi, ngày hẹn trả không hợp lý", "Thông báo");
ngaytrasach.Focus();
}
else if (t.thucthidulieu("INSERT INTO chitietmuon VALUES (N'" +
commaphieumuon.SelectedValue.ToString() + "','" + commasach.SelectedValue.ToString() + "','" + ngayhh + "','" + ngayhhh + "','" + ghichu.ToolTipText + "')") == true)
string ngayhhh = ngaytrasach.Value.ToString("yyyy/MM/dd");
date1 = Convert.ToDateTime(ngaymuonsach.Text);//lấy thông tin ngày mượn ngày trả để kiêmtra đk ngày mượn<=ngày trả
Trang 54DialogResult chon = MessageBox.Show("Bạn có muốn xóa trả sách có mã " +
commasach.Text + "", "thông báo", MessageBoxButtons.YesNo);
Trang 55Themsuaxoa t = new Themsuaxoa();
privatevoid loaddata()
Trang 56privatevoid button2_Click(object sender, EventArgs e)
Themsuaxoa t = new Themsuaxoa();
privatevoid loaddata()
{
DataTable dt = t.docdulieu("select * from docgia");
t.text = dt.Rows.Count.ToString();
Trang 58Themsuaxoa t = new Themsuaxoa();
privatevoid loaddata()
{
DataTable dt = t.docdulieu("select sach.masach, sach.tensach,
nhaxb.tennxb,sach.namxb,theloai.tentheloai from sach, nhaxb, theloai where
(sach.manxb=nhaxb.manxb and sach.matheloai=theloai.matheloai)");
}
privatevoid loaddata1()
{
DataTable dt = t.docdulieu("select sach.masach,sach.tensach,
nhaxb.tennxb,sach.namxb,theloai.tentheloai from sach, nhaxb,chitietmuon, theloai where (sach.manxb=nhaxb.manxb and sach.matheloai=theloai.matheloai and
sach.masach=chitietmuon.masach)");
Trang 59}
privatevoid loaddata2()
{
DataTable dt = t.docdulieu("select sach.masach,sach.tensach,
nhaxb.tennxb,sach.namxb,theloai.tentheloai from sach, nhaxb,chitietmuon, theloai where (sach.manxb=nhaxb.manxb and sach.matheloai=theloai.matheloai and
sach.masach=chitietmuon.masach and chitietmuon.ngaytra<GETDATE())");
Trang 60Themsuaxoa t = new Themsuaxoa();
privatevoid label1_Click(object sender, EventArgs e)
{
}
Trang 61privatevoid loaddata()
luoi.Columns[1].HeaderText = "Tên độc giả";
luoi.Columns[2].HeaderText = "Ngày sinh";
DataTable dt = t.docdulieu("select distinct docgia.madocgia,docgia.hoten,
docgia.ngaysinh,docgia.gioitinh, docgia.thongtin from docgia, phieumuon,chitietmuon where (docgia.madocgia=phieumuon.madg and phieumuon.maphieu=chitietmuon.mapm and chitietmuon.ngaytra<GETDATE())");
luoi.Columns[1].HeaderText = "Tên độc giả";
luoi.Columns[2].HeaderText = "Ngày sinh";
Trang 62privatevoid button2_Click(object sender, EventArgs e)
SqlConnection con = new SqlConnection(@"Data Source=NOTEBOOK-PC\SQLEXPRESS;Initial
internalstring text;
publicvoid moketnoi() //Phương thức kết nối
Trang 63moketnoi();//mở kết nối dữ liệu
Boolean check = false;// gán check = sai
public DataTable docdulieu(string cmd)//hàm đọc dữ liệu đỗ dữ liệu vào lướisử dụng sqldatadapter
để chuyển đổi dữ liệu từ lệnh cmd trả về Sau đó thì dùng Fill để đổ dữ liệu từ adapter vào datatable và cuối cùng là trả về một bảng chứa dữ liệu đã truy vấn
SqlCommand sc = new SqlCommand(cmd, con);
SqlDataAdapter sda = new SqlDataAdapter(sc);