Tải bản đầy đủ (.docx) (53 trang)

Xây dựng chương trình quản lý thư viện bằng .NET (52 trang chi tiết kèm Source code, cơ sở dữ liệu)

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 (9.9 MB, 53 trang )

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 1 + BTL

1


MỤC LỤC
PHẦN 1: THIẾT KẾ CƠ SỞ DỮ LIỆU.................................................................................................................3
1.

Cấu trúc bảng SACH.......................................................................................................................................3

2.

Cấu trúc bảng NXB.........................................................................................................................................3

3.

Cấu trúc bảng TACGIA...................................................................................................................................3

4.

Cấu trúc bảng LOAI........................................................................................................................................4

5.

Cấu trúc bảng PHIEUMUON.........................................................................................................................4


6.

Cấu trúc bảng THEDOCGIA..........................................................................................................................4

7.

Cấu trúc bảng KHOA......................................................................................................................................5

8.

Cấu trúc bảng CHITIET_PM..........................................................................................................................5

9.

Lược đồ quan hệ..............................................................................................................................................5

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................................................................................................8
1.

Giao diện chương trình chính.........................................................................................................................8

2.

Giao diện đăng nhập........................................................................................................................................8

3.

Giao diện Đổi mật khẩu..................................................................................................................................9


4.

Giao diện Sách.................................................................................................................................................9

5.

Giao diện Nhà xuất bản.................................................................................................................................10

6.

Giao diện Thẻ độc giả...................................................................................................................................10

7.

Giao diện Tác giả...........................................................................................................................................11

8.

Giao diện Quản trị viên.................................................................................................................................12

9.

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
1.

Trang chủ.......................................................................................................................................................18

2.

Đăng nhập......................................................................................................................................................20

3.

Đổi mật khẩu.................................................................................................................................................22

4.

Hiển thị danh mục sách.................................................................................................................................23

5.

Sách...............................................................................................................................................................25

6.

Thẻ độc giả....................................................................................................................................................30

7.

Nhà xuất bản..................................................................................................................................................33

8.


Tác giả...........................................................................................................................................................36

9.

Quản trị viên..................................................................................................................................................40

10. Phiếu mượn....................................................................................................................................................43
2


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

3


PHẦN 1: THIẾT KẾ CƠ SỞ DỮ LIỆU
1. Cấu trúc bảng SACH
Thể hiện Sách, tài liệu. Các cuốn sách, tài liệu phân biệt với nhau bởi mã sách.
STT

Tên thuộc tính

Kiểu dữ liệu


Khóa
chính

Khóa
ngoại

Diễn giải

1

masach

Varchar(10) x

Mã sách, tài liệu

2

Tensach

Varchar(50)

Tên cuốn sách, tài liệu

3

Sotrang

Int


Số trang

4

Soluong

Int

Số lượng cuốn

5

Manxb

Varchar(10)

x

6

Matg

Varchar(10)

x

7

Matheloai


Varchar(10)

x

8

namxb

int

Mã nhà xuất bản cuốn
sách tham chiếu đển bảng
NXB
Mã tác giả cuốn sách tham
chiếu đển bảng TACGIA
Mã thể loại
Năm xuất bản

2. Cấu trúc bảng NXB
Thể hiện Nhà xuất bản. Các nhà xuất bản phân biệt với nhau bởi mã nhà xuất bản.
STT

Tên thuộc tính

Kiểu dữ liệu

Khóa
chính

x


1

Manxb

Varchar(10)

2

Tennxb

3

Diachi

4

Email

Nvarchar(50
)
Nvarchar(50
)
Nvarchar(50
)

Khóa
ngoại

Diễn giải


Mã nhà xuất bản
Tên nhà xuất bản
Địa chỉ nhà xuất bản
Email

3. Cấu trúc bảng TACGIA
Thể hiện Tác giả. Các tác giả phân biệt với nhau bởi mã tác gải.
STT

Tên thuộc tính

Kiểu dữ liệu

Khóa
chính

x

1

Matg

Varchar(10)

2

Tentg

3


Namsinh

Nvarchar(50
)
int

4

Nammat

int

5

Sdt

Nvarchar(20
)
4

Khóa
ngoại

Diễn giải

Mã tác giả
Họ tên tác giả
Năm sinh. Khơng rõ thì
để giá trị null

Năm mất. Khơng rõ thì
để giá trị null
Số điện thoại của tác
giả. Khơng có thì để giá


trị null
4. Cấu trúc bảng LOAI
Thể hiện Thể loại. 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

x

1

Maloai

varchar(10)

2

Tenloai


Nvarchar(50
)

Khóa
ngoại

Diễn giải

Mã thể loại
Tên thể loại

5. Cấu trúc bảng PHIEUMUON
Thể hiện Phiếu mượn. Các phiếu mượn phân biệt với nhau bởi mã phiếu mượn.
STT

Tên thuộc tính

Kiểu dữ liệu

Khóa
chính

x

Khóa
ngoại

Diễn giải

1


Mapm

Varchar(10)

Mã phiếu mượn

2

Mathe

Varchar(10)

x

3

Maqtv

Varchar(10)

x

4

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

5

Hantra

Date

Ngày dự kiến trả

6

tinhtrang

Nvarchar(15
)

Tình trạng phiếu mượn.
Là một trong 3 giá trị:
Chưa trả, Đã trả và Quá
hạn trả

6. Cấu trúc bảng THEDOCGIA
Thể hiện Thẻ độc giả. Các thẻ độc giả phân biệt với nhau bởi mã thẻ.
STT


Tên thuộc tính

Kiểu dữ liệu

Khóa
chính

x

1

Mathe

Varchar(10)

2

Hoten

3

Namsinh

Nvarchar(50
)
int

4


Makhoa

Varchar(10)

5

Sdt

Varchar(11)

6

Ngaylapthe

date

Khóa
ngoại

Mã thẻ độc giả
Họ tên độc giả
Năm sinh
x

7. Cấu trúc bảng KHOA
5

Diễn giải

Mã khoa tham chiếu đển

bảng KHOA
Số điện thoại của độc
giả
Ngày lập thẻ


Thể hiện Khoa. Các khoa phân biệt với nhau bởi mã khoa.
STT

Tên thuộc tính

Kiểu dữ liệu

Khóa
chính

X

1

Makhoa

Varchar(10)

2

Tenkhoa

Nvarchar(50
)


Khóa
ngoại

Diễn giải

Mã khoa
Tên khoa

8. Cấu trúc bảng CHITIET_PM
Thể hiện Chi tiết các cuốn sách của Phiếu mượn. Các chi tiết phân biệt với nhau bởi mã
chi tiết
STT

Tên thuộc tính

Kiểu dữ liệu

Khóa
chính

Khóa
ngoại

1

Machitiet

Varchar(10) x


2

Mapm

Varchar(10)

x

3

Masach

Varchar(10)

x

4

soluong

int

9. Lược đồ quan hệ

6

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 khẩu

Nhà xuất bản

Đăng nhập

Xem danh mục
sách

Quản lý dữ
liệu

Thống kê tổng
quan


Tác giả

Nhân viên

7


PHẦN 3: GIAO DIỆN CỦA CÁC CHỨC NĂNG
1. Giao diện chương trình chính

Nếu chưa đăng nhập, người dùng chỉ có quyền xem Danh mục sách và Thông tin phần mềm,
không được cấp quyền sử dụng các chức năng khác.
2. Giao diện đăng nhập

Chức năng này cho phép người dùng đăng nhập vào hệ thống với tên và mật khẩu.
+ 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” và “Mật khẩu”.
+ Hệ thống sẽ kiểm tra tên và mật khẩu được nhập và cho phép người dùng đăng nhập vào hệ
thống.
3. Giao diện Đổi mật khẩu
8


Giao diện này cho phép người dùng tiến hành đổi mật khẩu.
Phải nhập đúng mật khẩu cũ; mật khẩu mới và mật khẩu nhập lại phải trùng nhau thì mới cập
nhật thành công.
4. Giao diện Sách

Giao diện này cho phép người dùng có thể cập nhật thêm, sửa, xóa sách, tài liệu.
Chúng ta có thể xem chi tiết về 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 bản của Sách.
Các chức năng trên giao diện:
• Thêm: Cho phép người dùng thêm các thơng tin vào CSDL


Cập nhật: sửa tất cả các mục trên form, trừ mã sách.
9





Xóa: xóa một cuốn sách trong danh sách.
Xem chi tiết: Khi bấm vào dịng nào trong listview, thơng tin của sách đó sẽ hiển thị
lên các textbox.
• Tìm: Tìm các thông tin của cuốn sách dựa vào mã sách.
Nếu chưa có NXB hoặc tác giả nào trong CSDL phù hợp cới cuốn sách đó, QTV có quyền tạo
Tạo mới NXB hoặc Tác giả.
5. Giao diện Nhà xuất bản

Giao diện này cho phép người dùng có thể cập nhật thêm, sửa, xóa Nhà xuất bản.
Chúng ta có thể xem chi tiết về mã nhà xuất bản, tên nhà xuất bản, địa chỉ, email của NXB.
Các chức năng trên giao diện:
• Thêm: Cho phép người dùng thêm các thơng tin vào CSDL


Tìm kiếm: Tìm các thơng tin của NXB dựa vào mã NXB.




Cập nhật: sửa tất cả các mục trên form, trừ mã NXB.




Xóa: xóa NXB trong danh sách.
Xem chi tiết: Khi bấm vào dịng nào trong listview, thơng tin của NXB đó sẽ hiển thị
lên các textbox.

6. Giao diện Thẻ độc giả

10


Chúng ta có thể xem chi tiết về mã thẻ độc giả, họ tên độc giả, năm sinh, mã khoa, số điện
thoại, ngày lập của Thẻ độc giả.
Các chức năng trên giao diện:
• Thêm: Cho phép người dùng thêm các thơng tin vào CSDL


Tìm: Tìm các thơng tin của thẻ độc giả dựa vào mã thẻ độc giả.



Cập nhật: sửa tất cả các mục trên form, trừ mã thẻ độc giả.




Xóa: xóa thẻ độc giả trong danh sách.

Xem chi tiết: Khi bấm vào dịng nào trong listview, thơng tin của Thẻ độc giả đó sẽ
hiển thị lên các textbox.

7. Giao diện Tác giả

Chúng ta có thể xem chi tiết về mã tác giả, Họ tên tác giả, năm sinh, năm mất, số điện thoại của
Tác giả.
Các chức năng trên giao diện:
• Thêm: Cho phép người dùng thêm các thơng tin vào CSDL


Tìm: Tìm các thơng tin của tác giả dựa vào mã thẻ độc giả.



Cập nhật: sửa tất cả các mục trên form, trừ mã tác giả.




Xóa: xóa thẻ tác giả trong danh sách.
Xem chi tiết: Khi bấm vào dòng nào trong listview, thơng tin của Tác giả đó sẽ hiển
thị lên các textbox.
Các nút di chuyển.



8. Giao diện Quản trị viên

11



Chúng ta có thể xem chi tiết về mã Quản trị viên, Họ tên, Năm sinh, SĐT, Địa chỉ, Vai trị của
QTV.
Các chức năng trên giao diện:
• Thêm: Cho phép người dùng thêm các thơng tin vào CSDL


Cập nhật: sửa tất cả các mục trên form, trừ mã thẻ QTV và mật khẩu.




Xóa: xóa Quản trị viên đó trong danh sách.
Xem chi tiết: Khi bấm vào dòng nào trong listview, thơng tin của QTV đó sẽ hiển thị
lên các textbox.

9. Giao diện Danh mục Sách

Chúng ta có thể xem và tìm kiêm chi tiết về 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 bản của Sách.
Các chức năng trên giao diện:
• Tìm: Tìm các thơng tin của sách dựa tên sách, mã NXB, mã tác giảm, thể loại.


Reset: Xố thơng tin ở các ơ textbox



Hiển thị số lượng kết quả tìm kiếm.

12




Tìm mã NXB, tác giả: Nếu khơng xác định chính xác mã NXB, mã tác giả thì có thể
mở form Tìm NXB, Tìm tác giả bằng cách bấm nút bên cạnh ơ textbox.

10. Giao diện Phiếu mượn

Chúng ta có thể xem chi tiết về mã phiếu mượn, mã thẻ độc giả mượn sách, mã quản trị viên
thực hiện, ngày mượn, hạn trả dự kiến, tình trạng của phiếu mượn.
Các chức năng trên giao diện:
• Thêm: Cho phép người dùng thêm các thơng tin vào CSDL


Cập nhật: sửa tất cả các mục trên form, trừ mã thẻ phiếu mượn và ngày mượn.



Thay đổi tình trạng phiếu mượn: Chọn nút bấm “Qúa hạn” hoặc “Trả sách”, tình
trạng sách sẽ được thay đổi.
Tìm: Tìm các thơng tin của sách dựa mã phiếu mượn
Xem chi tiết: Khi bấm vào dịng nào trong listview, thơng tin của Phiếu mượn đó sẽ
hiển thị lên các textbox.
Tìm mã Thẻ độc giả, QTV: Nếu khơng xác định chính xác mã thẻ độc giả, mã QTV
thì có thể mở form Tìm Thẻ độc giả, Tìm QTV bằng cách bấm nút bên cạnh ơ
textbox.






11. Giao diện Chi tiết phiếu mượn

13


Chúng ta có thể xem chi tiết về mã chi tiết, mã sách, số lượng sách có trong Phiếu mượn.
Các chức năng trên giao diện:
• Chọn phiếu: Mở ra form Chọn phiếu, trả về mã phiếu mượn .


Chọn sách: Mở ra form Chọn sách, trả về mã sách.



Thêm: Cho phép người dùng thêm các thơng tin vào CSDL



Sửa: sửa tất cả mã sách, số lượng sách.



Xóa: Xóa bỏ cuốn sách có trong phiếu mượn





Hiển thị số lượng kết quả sách có trong phiếu mượn.
Xem chi tiết: Khi bấm vào dịng nào trong listview, thông tin của mã sách, số lượng
sẽ hiển thị lên các textbox

12. Giao diện Thống kê độc giả

Chúng ta có thể xem và tìm kiêm chi tiết về mã thẻ độc giả, họ tên độc giả, năm sinh, mã khoa,
số điện thoại, ngày lập thẻ của Thẻ độc giả.
Các chức năng trên giao diện:
• Tìm: Tìm các thông tin của sách dựa mã thẻ độc giả, tên, năm sinh, mã .
14




Reset: Xố thơng tin ở các ơ textbox



Hiển thị số lượng kết quả tìm kiếm.

13. Giao diện Thống kê phiếu mượn

Chúng ta có thể xem và tìm kiêm chi tiết Phiếu mượn.
Các chức năng trên giao diện:
• Tìm: Tìm các thông tin của sách dựa mã phiếu mượn, mã thẻ, tình trạng.


Reset: Xố thơng tin ở các ơ textbox




Hiển thị số lượng kết quả tìm kiếm.

14. Giao diện Thống kê tổng quan

Hiển thị các thống kê về dữ liệu có trong thư viện.
Xem: Mở form Hiển thị các phiếu mượn q hạn.


*Phân quyền tài khoản:
Người dùng bình thường, khơng có tài khoản chỉ có thể xem Danh mục sách.

15






Quản trị viên có quyền truy cập các chức năng khác, ngoại trừ chức năng liên quan đến Quản
trị viên

Tổ trưởng thư viện: Được quyền truy cập vào tất cả các chức năng.

16


17



PHẦN 4: MÃ NGUỒN (SOURCE CODE)
1. Trang chủ
using
using
using
using
using
using
using
using
using

System;
System.Collections.Generic;
System.ComponentModel;
System.Data;
System.Drawing;
System.Linq;
System.Text;
System.Threading.Tasks;
System.Windows.Forms;

namespace QuanLyThuVien
{
public partial class formMain : Form
{
public formMain()
{
InitializeComponent();

}

void MenuTruocLoginThanhcong()
{
menuQuanly.Enabled = false;
menuQuanlyMuontra.Enabled = false;
menuDoiMK.Enabled = false;
menuDangxuat.Enabled = false;
menuDoiMK.Enabled = false;
menuThongke.Enabled = false;
btnDangnhap.Visible = true;
btnThoat.Visible = true;
}
void MenuSauLoginThanhcong()
{
menuQuanly.Enabled = true;
menuQuanlyMuontra.Enabled = true;
menuDoiMK.Enabled = true;
menuDangxuat.Enabled = true;
menuDoiMK.Enabled = true;
menuThongke.Enabled = true;
btnDangnhap.Visible = false;
btnThoat.Visible = false;
}

private void menuDangxuat_Click(object sender, EventArgs e)
{
DialogResult dr = MessageBox.Show("Bạn có chăc chắn muốn đăng xuất ?", "Thông báo",
MessageBoxButtons.YesNo);
if (dr == DialogResult.Yes) // Nếu người sử dụng chọn nút yes

{
classThuvien.trangthaidangnhap = false;
MenuTruocLoginThanhcong();
}
}
private void menuDoiMK_Click(object sender, EventArgs e)
{
formDoimatkhau f = new formDoimatkhau();
f.ShowDialog();
}
private void formMain_Load(object sender, EventArgs e)
{

18


if (classThuvien.trangthaidangnhap == false)
{
MenuTruocLoginThanhcong();
}
else if (classThuvien.trangthaidangnhap == true)
{
MenuSauLoginThanhcong();
}
if (classThuvien.laTotruong == true)
{
menuQTV.Enabled = true;
}
else
{

menuQTV.Enabled = false;
}
}
private void formMain_FormClosing(object sender, FormClosingEventArgs e)
{
Application.Exit();
}
private void thốngKêPhiếuMượnToolStripMenuItem_Click(object sender, EventArgs e)
{
formThongkePhieumuon f = new formThongkePhieumuon();
f.ShowDialog();
}
private void thốngKêĐộcGiảToolStripMenuItem_Click(object sender, EventArgs e)
{
formThongkeDocgia f = new formThongkeDocgia();
f.ShowDialog();
}
private void btnDangnhap_Click(object sender, EventArgs e)
{
formDangnhap f = new formDangnhap();
f.ShowDialog();
}
private void btnThoat_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void menuDanhmuc_Sach_Click(object sender, EventArgs e)
{
formTimDanhmucSach f = new formTimDanhmucSach();
f.ShowDialog();

}
private void menuThedocgia_Click(object sender, EventArgs e)
{
formTaoThedocgia f = new formTaoThedocgia();
f.ShowDialog();
}
private void menuSach_Click(object sender, EventArgs e)
{
formTaosach f = new formTaosach();
f.ShowDialog();
}
private void menuNXB_Click(object sender, EventArgs e)

19


{
}

formTaoNXB f = new formTaoNXB();
f.ShowDialog();

private void menuTacgia_Click(object sender, EventArgs e)
{
formTaoTacgiamoi f = new formTaoTacgiamoi();
f.ShowDialog();
}
private void menuQTV_Click(object sender, EventArgs e)
{
formQTV f = new formQTV();

f.ShowDialog();
}
private void menuPhieumuon_Click(object sender, EventArgs e)
{
formPhieumuon f = new formPhieumuon();
f.ShowDialog();
}
private void menuChitietPM_Click(object sender, EventArgs e)
{
formChitietPhieumuon f = new formChitietPhieumuon();
f.ShowDialog();
}
private void menuLienlac_Click(object sender, EventArgs e)
{
formLienlac f = new formLienlac();
f.ShowDialog();
}
private void menuGioithieuu_Click(object sender, EventArgs e)
{
formGioithieu f = new formGioithieu();
f.ShowDialog();
}
private void menuThongketongquan_Click(object sender, EventArgs e)
{
XemSophieuquahan f = new XemSophieuquahan();
f.ShowDialog();
}
}

}


2. Đăng nhập
using
using
using
using
using
using
using
using
using
using

System;
System.Collections.Generic;
System.ComponentModel;
System.Data;
System.Drawing;
System.Linq;
System.Text;
System.Threading.Tasks;
System.Windows.Forms;
System.Data.SqlClient;

namespace QuanLyThuVien
{
public partial class formDangnhap : Form
{
SqlConnection cn = new SqlConnection();
SqlCommand cmd;

public formDangnhap()

20


{

InitializeComponent();

}
void Moketnoi()
{
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");
}
}
private void button1_Click(object sender, EventArgs e)
{
if (boxMa.Text != "" || boxPassword.Text != "")
{
Moketnoi();
formMain f = new formMain();

formMain f2 = new formMain();
f.Close();
string Sql = "SELECT * FROM QTV where maqtv ='" + boxMa.Text + "' and matkhau = '" +
boxPassword.Text + "'";
cmd = new SqlCommand(Sql, cn);
SqlDataReader dr = cmd.ExecuteReader();
if (dr.HasRows)
{
while (dr.Read())
{
this.Hide();
classThuvien.trangthaidangnhap = true;
classThuvien.maQTV = boxMa.Text;
if (Boolean.Parse(dr["totruong"].ToString()) == false)
{
classThuvien.laTotruong = false;
}
else
{
classThuvien.laTotruong = true;
}
f.Close();
f2.ShowDialog();
}
}
else
{
MessageBox.Show("Tên đăng nhập hoặc mật khẩu khơng chính xác. Mời nhập lại.");
boxPassword.Clear();
boxPassword.Focus();

}
}
else
{
MessageBox.Show("Mời nhập đầy đủ cả hai textbox");
}
}
private void btnThoat_Click(object sender, EventArgs e)
{
this.Close();
}
private void boxPassword_KeyDown(object sender, KeyEventArgs e)

21


{

}

if (e.KeyCode == Keys.Enter)
{
button1_Click(sender, e);
}

private void formDangnhap_Load(object sender, EventArgs e)
{
}

}


}

3. Đổi mật khẩu
.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 formDoimatkhau : Form
{
SqlConnection cn = new SqlConnection();

SqlCommand cmd;
public formDoimatkhau()
{
InitializeComponent();
}
private void Moketnoi()
{
if (cn.State == ConnectionState.Open) cn.Close();
cn.Open();
}
private void formDoimatkhau_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");
}
boxMaqtv.Text = classThuvien.maQTV;
boxMatkhauCu.Focus();
}
private void btnCapnhat_Click(object sender, EventArgs e)
{
if (boxMatkhaumoi.Text == boxXacnhanMatkhau.Text)
{

Moketnoi();
string Sql = "UPDATE QTV SET matkhau = '"+ boxXacnhanMatkhau.Text + "' WHERE matkhau
= '"+ boxMatkhauCu.Text +"' and maqtv = '"+ boxMaqtv.Text +"'";

22


cmd = new SqlCommand(Sql, cn);
if (cmd.ExecuteNonQuery() > 0)
{
MessageBox.Show("Đổi mật khẩu thành công");
}
else
{
MessageBox.Show("Nhập sai mật khẩu cũ. Mời nhập lại");
boxMatkhauCu.Clear();
boxMatkhauCu.Focus();
}

}
else
{
MessageBox.Show("Xác nhân mật khẩu không đúng. Mời nhập lại");
boxXacnhanMatkhau.Clear();
boxXacnhanMatkhau.Focus();
}
}

}


private void btnThoat_Click(object sender, EventArgs e)
{
this.Close();
}

}

4. Hiển thị danh mục sách
.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 formTimDanhmucSach : Form
{
SqlConnection cn;
SqlCommand cmdSelect;
Sach s = new Sach();
DataTable dt;
public formTimDanhmucSach()
{
InitializeComponent();
}
private void brnTimNXB_Click(object sender, EventArgs e)
{
formChonNXB f = new formChonNXB();
f.ShowDialog();
if (classThuvien.maNXB != "")
{
boxMaNXB.Text = classThuvien.maNXB.ToString();
}
}
private void btnTimTacgia_Click(object sender, EventArgs e)
{
formChontg f = new formChontg();

23


}

f.ShowDialog();

if (classThuvien.maTG != "")
{
boxMatacgia.Text = classThuvien.maTG.ToString();
}

private void formTimDanhmucSach_Load(object sender, EventArgs e)
{
// TODO: This line of code loads data into the '_Quanlythuvien_BTLDataSet6.LOAI' table. You can
move, or remove it, as needed.
this.lOAITableAdapter.Fill(this._Quanlythuvien_BTLDataSet6.LOAI);
HienthiSach();
this.dataGridView1.DefaultCellStyle.Font = new Font("Tahoma", 11);
}
void HienthiSach()
{
dt = s.LayDSSach();
dataGridView1.DataSource = dt;
comboBox1.Text = "";
}
private void btnTim_Click(object sender, EventArgs e)
{
DataView dv = new DataView(dt);
//Nạp dữ liệu vào DataView
//bắt đầu lọc dữ liệu
string tensach, manxb, matg, matheloai;
int namxb;
if (boxTensach.Text == "") tensach = "*"; else tensach = boxTensach.Text.ToString();
if (boxMaNXB.Text == "") manxb = ""; else manxb = boxMaNXB.Text.ToString();
if (boxMatacgia.Text == "") matg = "*"; else matg = boxMatacgia.Text.ToString();
if (boxNamXB.Text == "") namxb = -1; else namxb = Convert.ToInt32(boxNamXB.Text);

if (comboBox1.Text == "") matheloai = ""; else matheloai =
comboBox1.SelectedValue.ToString();
if (boxNamXB.Text == "")
{
dv.RowFilter = "tensach like '%" + tensach + "%' and manxb like'%" + manxb + "%' and
matg like'%" + boxMatacgia.Text + "%'" +
"and matheloai like'%" + matheloai + "%' ";
}
else
dv.RowFilter = "tensach like '%" + tensach + "%' and manxb like'%" + manxb + "%' and
matg like'%" + boxMatacgia.Text + "%'" +
"and matheloai like'%" + matheloai + "%' and namxb = '" + namxb + "'";

}

dataGridView1.DataSource = dv;
boxSoluongtk.Text = dv.Count.ToString();
//Nạp kết quả lọc trong dv vào dataGridView1

private void btnReset_Click(object sender, EventArgs e)
{
boxMatacgia.Clear();
boxMaNXB.Clear();
boxTensach.Clear();
boxMatacgia.Clear();
comboBox1.Text = "";
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
}

}

}

5. Sách
24


.using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace QuanLyThuVien
{
public partial class formTaosach : Form
{
SqlConnection cn;
SqlCommand cmdSelect;
SqlCommand cmdInsert;
SqlCommand cmdXoa;
int i;
public formTaosach()
{
InitializeComponent();

}
private void Moketnoi()
{
if (cn.State == ConnectionState.Open) cn.Close();
cn.Open();
}
private void LoadListView()
{
Moketnoi();
cmdSelect = new SqlCommand("select * from SACH", cn);
SqlDataReader r = cmdSelect.ExecuteReader();
listView1.Items.Clear(); // Xóa tất cả dữ liệu trong listView1
while (r.Read())
{
string[] st = new string[8];
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();
st[6] = r[6].ToString();
st[7] = r[7].ToString();
ListViewItem lv = new ListViewItem(st);
listView1.Items.Add(lv);
}
cmdSelect.Dispose();
}
private void formTaosach_Load(object sender, EventArgs e)
{

try
{
25


×