TRƯỜNG ĐẠI HỌC CÔNG NGHỆ GIAO THÔNG VẬN TẢI
KHOA CÔNG NGHỆ THƠNG TIN
**********
BÁO CÁO BÀI TẬP LỚN
LẬP TRÌNH TRỰC QUAN C#
ĐỀ TÀI: “Xây dựng chương trình quản lý thư viện”
NHĨM SINH VIÊN: TRƯƠNG BÁ CÁT TRƯỜNG
NGUYỄN CÔNG THÀNH
TRỊNH ĐỨC TÙNG
TRỊNH TIẾN QUANG
LỚP:
71DCTT21
NHÓM:
7
GIẢNG VIÊN:
TRẦN THỊ XUÂN HƯƠNG
Hà Nội, 2022
CHƯƠNG 1: KHẢO SÁT VÀ PHÂN TÍCH THIẾT KẾ HỆ THỐNG
1. Khảo sát và phân tích bài tốn
1.1. Xác định yêu cầu bài toán:
Cùng với sự phát triển của nền kinh tế thì giáo dục cũng được mở rộng về
quy mơ và chất lượng để có thể cung cấp nhân lực có trình độ, chun mơn, …
phục vụ cho nền kinh tế ngày càng vững mạnh. Bộ phận thư viện là bộ phận
không thể thiếu trong các trường đại học cũng như trong các trường phổ thông,
trung học… để phục vụ cho việc nghiên cứu, tìm kiếm các tài liệu học một cách
tốt nhất cho các học sinh, sinh viên.
Thư viện trường quản lý khoảng hàng trăm ngàn đầu sách và tạp chí, phục
vụ cho sinh viên của trường học tập tham khảo. Sinh viên có thể mượn sách đọc
thơng qua thẻ độc giả. Để phục vụ độc giả nhanh, gọn và chính xác, thư viện cần
tin học hố cơng việc quản lý danh mục sách và quản lý độc giả của mình.
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ứ 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, …
1.2. Xác định tác nhân:
+ Bạn đọc: Những người được hệ thống phục vụ: mượn sách, trả sách…
+ Nhân viên: là người trực tiếp sử dụng các chức năng hệ thống như giám đốc
TTTTTL, Thủ thư…
+ Admin: Đảm bảo hệ thống hoạt động thông suốt, đồng thời là người điều
hành hệ thống, có quyền bổ sung, thay đổi người sử dụng hệ thống.
2. Xây dựng cơ sở dữ liệu
- Sơ đồ cơ sở dữ liệu:
- Chi tiết các bảng:
2.1. Bảng Thủ Thư
Mô Tả: Bảng Dữ Liệu Chứa Thông Tin Người Thủ Thư
Column
Name
MaThuThu
TenThuThu
Description
Mã
Type
Thủ Nvarcha
Thư
Tên
Data
r
Thủ Nvarcha
Thư
r
NamSinh
Năm Sinh
Date
GioiTinh
Giới Tính
ChucVu
Chức Vụ
DiaChi
Địa Chỉ
MatKhau
Mật Khẩu
Nvarcha
r
Nvarcha
r
Nvarcha
r
Nvarcha
Size Required
Default
Constrain
Value
t
50
Not Null N/A
50
Null
Null
50
Null
50
Null
50
Null
50
Null
PK
r
2.2. Bảng Độc Giả
Mô Tả: Bảng Dữ Liệu Chứa Thông Tin Độc Giả
Column
Name
MaDocGia
MatKhau
Description
Mã
Data
Type
Độc Nvarcha
Giả
r
Mật Khẩu
Nvarcha
r
Tên
Độc Nvarcha
Giả
r
NamSinh
Năm Sinh
Date
GioiTinh
Giới Tính
TenDocGia
NgheNghiep
DiaChi
SoDienThoai
NgayMuaThe
NgayHetHan
Nvarcha
r
Nghề
Nvarcha
Nghiệp
r
Nvarcha
Địa Chỉ
Số
r
Điện Nvarcha
Thoại
r
Ngày Mua
Thẻ
Ngày
Hết
Hạn
Size Required
Default Constrain
Value
50
Not Null N/A
50
Null
50
Null
t
PK
Null
50
Null
50
Null
50
Null
50
Null
Date
Null
Date
Null
2.3. Bảng Sách
Mô Tả: Bảng Dữ Liệu Chứa Thông Tin Về Sách
Column
Description
Data
Siz
Required Default Constrain
Name
Type
e
MaSach
Mã Sách
Nvarchar 50
Not Null
TenSach
Tên Sách
Nvarchar 50
Null
TacGia
Tác Giả
Nvarchar 50
Null
Nvarchar 50
Null
Bigint
Null
Nvarchar 50
Null
NXB
Gia
ChuyenMuc
Nhà
Xuất
Bản
Giá
Chuyên
Mục
ViTri
Vị Trí
Nvarchar 50
Null
SoLuong
Số Lượng
Int
Null
Value
t
N/A
PK
2.4. Bảng Phiếu Mượn
Mơ Tả: Bảng Dữ Liệu Chứa Thông Tin Chi Tiết Về Phiếu
Column Name
MaPhieuMuon
MaDocGia
MaSach
NgayMuon
Description
Mã
Data
Type
Phiếu Nvarcha
Mượn
r
Mã
Độc Nvarcha
Giả
r
Mã Sách
Ngày
Mượn
NgayTra
Ngày Trả
2.5. Bảng Phiếu Trả
Nvarcha
r
Size Required
Default
Constrain
Value
t
50
Not Null N/A
PK
50
Null
N/A
FK
50
Null
Default
Constrain
Value
t
Date
Null
Date
Null
Mô Tả: Bảng Dữ Liệu Chứa Thông Tin Chi Tiết Về Phiếu
Column Name
Description
MaPhieuTra
Mã
Data
Type
Phiếu Nvarcha
Size Required
50
Not Null N/A
PK
MaPhieuMuon
MaThuThu
TienPhat
Trả
r
Mã
Phiếu Nvarcha
Mượn
Mã
r
Thủ Nvarcha
Thư
Tiền Phạt
r
Nvarcha
r
NgayPhaiTra
Ngày Trả
2.6. Bảng Hoá Đơn
Date
Column
Data
Name
Description
Type
Nvarcha
50
Null
N/A
FK
50
Null
N/A
FK
50
Null
Default
Constrain
Value
t
Null
Size Required
MaHoaDon
Mã Hoá Đơn
MaSach
MaSach
TenSach
Tên Sách
SoLuong
Số Lượng
Gia
Giá
Bigint
Null
ThanhTien
Thành Tiền
Bigint
Null
NgayBan
Ngày Bán
date
Null
r
Nvarcha
r
Nvarcha
r
Nvarcha
r
50
Not Null N/A
PK
50
Null
FK
50
Null
50
Null
N/A
CHƯƠNG 2: CƠ SỞ NGHIÊN CỨU LÝ THUYẾT
1. Ngôn ngữ truy vấn SQL
1.1. Insert:
Mục đích: Thêm dữ liệu vào bảng
Cú pháp:
INSERT INTO Table_Ten (cot1, cot2, cot3, …, cotN)]
VALUES (giatri1, giatri2, giatri3, …, giatriN);
Ví Dụ:
INSERT INTO TheLoai (matheloai, tentheloai)
VALUES (p_matheloai, p_tentheloai)
1.2. Update:
Mục đích: Cập nhật dữ liệu vào bảng
Cú Pháp:
UPDATE ten_bang
SET cot1 = giatri1, cot2 = giatri2, …, cotN = giatriN
WHERE [dieu_kien];
Ví dụ: UPDATE GiaoVien SET Luong = 3500 WHERE MAGV = 001
1.3. Delete:
Mục đích: Xóa dữ liệu trong bảng
Cú pháp:
DELETE FROM ten_bang [WHERE dieu_kien];
Ví dụ: DELETE GiaoVien WHERE MaGV = 002
1.4. Select:
Mục đích: Tên cột trong danh sách chọn
Cú pháp: SELECT giatri1, giatri2, …, giatriN FROM table name;
Ví dụ: SELECT * FROM KhachHang;
1.5. Store proceduce:
Store Procedure là một tập hợp một hay nhiều câu lệnh T-SQL thành một
nhóm đơn vị xử lý logic. Trong SQL Server ta có thể truyền tham số vào store
tuy nhiên nó khơng trả về giá trị cụ thể như function nhưng cho biết việc thực thi
thành công hay thất bại.
Ta chỉ tạo store 1 lần nhưng có thể gọi nó với số lần bất kỳ. Store
procedure có khả năng thực thi nhanh hơn là việc xử lý một đoạn lện T-SQL lớn,
lặp.
+ Cú Pháp:
Create procedure
As
Begin
<SQL Statement>
END;
VD: Tạo procedure thêm thủ thư vào bảng thủ thư bao gồm các thông tin:
MaThuThu, TenThuThu, NamSinh, GioiTinh, ChucVu, DiaChi
ALTER PROCEDURE [dbo].[ThuThu_Ins]
-- Add the parameters for the stored procedure here
@MaThuThu nvarchar(50),
@TenThuThu nvarchar(50),
@NamSinh date,
@GioiTinh nvarchar(50),
@ChucVu nvarchar(50),
@DiaChi nvarchar(50)
AS
BEGIN
insert
into
ThuThu
values(@MaThuThu,
@TenThuThu,
@NamSinh, @GioiTinh, @ChucVu, @DiaChi)
END
2. Ngôn ngữ lập trình C#
- Form
- Các Control (điều khiển cơ bản): Lable, Textbox, Combobox, Listbox,
Listview, Button, Radio button, Checkbox, DatagridView,…
- ADO.net, SqlConnection, SQLCommand, SQLDataAdapter, DataSet,
DataTable
CHƯƠNG 3: XÂY DỰNG PHẦN MỀM
1. Sơ đồ chức năng của phần mềm
2. Một số chức năng chính.
2.1. Quản Lý, Nhân Viên
a. Chức năng 1: Đăng Nhập
- Mô tả: Đăng nhập vào chương trình quản lý
- Giao diện:
- Code:
class KiemTraDocGia{
public int CheckLogin(string username, string password){
AccessData acc = new AccessData();
SqlDataReader reader = acc.ExecuteReader("SELECT MaDocGia,
MatKhau FROM DocGia");
while (reader.Read()){
if (reader[0].ToString() == username && reader[1].ToString() ==
password) {
return 1;
}
}
return 0;
}}
class KiemTraThuThu{
public int CheckLogin(string username, string password){
AccessData acc = new AccessData();
SqlDataReader reader = acc.ExecuteReader("SELECT MaThuThu,
MatKhau FROM ThuThu");
while (reader.Read()){
if (reader[0].ToString() == username && reader[1].ToString() ==
password) {
return 1;
}}
return 0;
}}
private void btQuanLy_Click(object sender, EventArgs e){
KiemTraThuThu dn = new KiemTraThuThu();
if (dn.CheckLogin(txtTaiKhoan.Text, txtMatKhau.Text) == 1){
Manager_QuanLy hd = new Manager_QuanLy();
MessageBox.Show("Đăng Nhập Thành Công","Thông Báo");
this.Hide();
hd.ShowDialog();
}
else{
lblThongBao.ForeColor = System.Drawing.Color.Red;
lblThongBao.Text = "Sai mã thủ thư hoặc mật khẩu. Vui lòng nhập lại
";
txtTaiKhoan.Clear();
txtMatKhau.Clear();
}}
private void btNguoiDung_Click(object sender, EventArgs e){
KiemTraDocGia dn = new KiemTraDocGia();
Manager_NguoiDung GDKH = new Manager_NguoiDung();
if (dn.CheckLogin(txtTaiKhoan.Text, txtMatKhau.Text) == 1){
MessageBox.Show("Đăng Nhập Thành Công","Thông Báo");
this.Hide();
GDKH.ShowDialog();
}
else
{
lblThongBao.ForeColor = System.Drawing.Color.Red;
lblThongBao.Text = "Sai mã độc giả hoặc mật khẩu. Vui lòng nhập lại
!!!";
txtTaiKhoan.Clear();
txtMatKhau.Clear();
}}
private void cbHienThiMatKhau_CheckedChanged(object sender,
EventArgs e)
{
if (cbHienThiMatKhau.Checked)
{
txtMatKhau.PasswordChar = (char)0;
}
else
{
txtMatKhau.PasswordChar = '*';
}
}
b. Chức năng 2: Giao diện chính của đối tượng Quản Lý
- Mơ tả: Giao diện chính của đối tượng Quản Lý giúp truy cập vào
các chức năng.
- Giao diện:
- Code:
private void lapHoaDonToolStripMenuItem_Click(object sender,
EventArgs e)
{
HoaDon hoaDon = new HoaDon();
hoaDon.Show();
}
private void thànhViênToolStripMenuItem_Click(object sender, EventArgs
e)
{
ThanhVien thanhVien = new ThanhVien();
thanhVien.Show();
}
private void phiếuMượnToolStripMenuItem_Click(object sender,
EventArgs e)
{
PhieuMuon phieuMuon = new PhieuMuon();
phieuMuon.Show();
}
private void sáchToolStripMenuItem_Click(object sender, EventArgs e)
{
QuanLySach quanLySach = new QuanLySach();
quanLySach.Show();
}
private void thốtToolStripMenuItem_Click(object sender, EventArgs e)
{
if (MessageBox.Show("Bạn có muốn thốt khơng?", "Cảnh Báo",
MessageBoxButtons.YesNo) == DialogResult.Yes)
Close();
}
private void phiếuTrảToolStripMenuItem_Click(object sender, EventArgs
e)
{
PhieuTra phieutra = new PhieuTra();
phieutra.Show();
}
private void độcGiảToolStripMenuItem_Click(object sender, EventArgs e)
{
DocGia docgia = new DocGia();
docgia.Show();
}
private void thốngKêToolStripMenuItem_Click(object sender, EventArgs
e)
{
ThongKeSach thongKe = new ThongKeSach();
thongKe.Show();
}
c. Chức năng 3: Quản Lý Độc Giả
- Mô tả: Người quản lí có thể đăng kí tài khoản cho độc giả và quản
lý thông tin của độc giả
- Giao Diện:
- Code:
private void Load_grvDocGia()
{
if (con.State != ConnectionState.Open)
con.Open();
SqlCommand cmd = new SqlCommand("select * from DocGia", con);
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
cmd.Dispose();
con.Close();
DataTable tb = new DataTable();
da.Fill(tb);
grvDocGia.DataSource = tb;
grvDocGia.Refresh();
}
private void ThemTheDocGia_Load(object sender, EventArgs e)
{
Load_grvDocGia();
}
private void Check_maDocGiatrung(string p_MaDocGia, ref int p_kq)
{
if (con.State != ConnectionState.Open)
con.Open();
SqlCommand cmd = new SqlCommand("Check_trungmaDocGIa", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@MaDocGia", SqlDbType.NVarChar, 50).Value =
p_MaDocGia;
SqlParameter kq = new SqlParameter("@kq", SqlDbType.Int);
cmd.Parameters.Add(kq).Direction = ParameterDirection.Output;
cmd.ExecuteNonQuery();
p_kq = (int)kq.Value;
cmd.Dispose();
con.Close();
}
private void button1_Click(object sender, EventArgs e)
{
string p_MaDocGia = txtMaDocGia.Text.Trim();
string p_MatKhau = txtMatKhau.Text.Trim();
string p_TenDocGia = txtTenDocGia.Text.Trim();
DateTime p_NamSinh = dtNgaySinh.Value;
string p_gioitinh = "";
if (this.rdMale.Checked == true){
p_gioitinh = "Nam";
}
else if (this.rdFemale.Checked == true){
p_gioitinh = "Nữ";
}
else{
p_gioitinh = "Khác";
}
string p_DiaChi = txtDiaChi.Text.Trim();
string p_SoDienThoai = txtSoDienThoai.Text.Trim();
DateTime p_NgayMuaThe = dtMuaThe.Value;
DateTime p_NgayHetHan = dtHetHan.Value;
if (p_MaDocGia == ""){
txtMaDocGia.Focus();
txtMaDocGia.BackColor = Color.Pink;
MessageBox.Show("Mã Độc Giả không được rỗng");
}
else{
int p_kq = 0;
Check_maDocGiatrung(p_MaDocGia, ref p_kq);
if (p_kq == 1){
txtMaDocGia.Focus();
txtMaDocGia.BackColor = Color.Red;
MessageBox.Show("Mã đã tồn tại. Nhập mã khác!");
}
else{
if (con.State != ConnectionState.Open)
con.Open();
SqlCommand cmd = new SqlCommand("DocGia_Ins2", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@MaDocGia",SqlDbType.NVarChar,
50).Value = p_MaDocGia;
cmd.Parameters.Add("@MatKhau",SqlDbType.NVarChar,
50).Value = p_MatKhau;
cmd.Parameters.Add("@TenDocGia",SqlDbType.NVarChar,
50).Value = p_TenDocGia;
cmd.Parameters.Add("@NamSinh",SqlDbType.Date).Value=
p_NamSinh;
cmd.Parameters.Add("@GioiTinh",SqlDbType.NVarChar,
50).Value = p_gioitinh;
cmd.Parameters.Add("@DiaChi", SqlDbType.NVarChar, 50).Value
= p_DiaChi;
cmd.Parameters.Add("@SoDienThoai", SqlDbType.NVarChar,
50).Value = p_SoDienThoai;
cmd.Parameters.Add("@NgayMuaThe", SqlDbType.Date).Value =
p_NgayMuaThe;
cmd.Parameters.Add("@NgayHetHan", SqlDbType.Date).Value =
p_NgayHetHan;
cmd.ExecuteNonQuery();
cmd.Dispose();
con.Close();
Load_grvDocGia();
MessageBox.Show("Thêm mới thành công");
ClearTextBox();
}}
}
private void btThoat_Click(object sender, EventArgs e)
{
if (MessageBox.Show("Bạn có muốn thốt khơng?", "Cảnh Báo",
MessageBoxButtons.YesNo) == DialogResult.Yes)
Close();
}
private void Them_Click(object sender, EventArgs e)
{
string p_MaDocGia = txtMaDocGia.Text.Trim();
string p_MatKhau = txtMatKhau.Text.Trim();
string p_TenDocGia = txtTenDocGia.Text.Trim();
DateTime p_NamSinh = dtNgaySinh.Value;
string p_gioitinh = "";
if (this.rdMale.Checked == true){
p_gioitinh = "Nam";
}
else if (this.rdFemale.Checked == true){
p_gioitinh = "Nữ";
}
else{
p_gioitinh = "Khác";
}
string p_NgheNghiep = txtNgheNghiep.Text.Trim();
string p_DiaChi = txtDiaChi.Text.Trim();
string p_SoDienThoai = txtSoDienThoai.Text.Trim();
DateTime p_NgayMuaThe = dtMuaThe.Value;
DateTime p_NgayHetHan = dtHetHan.Value;
if (p_MaDocGia == ""){
txtMaDocGia.Focus();
txtMaDocGia.BackColor = Color.Pink;
MessageBox.Show("Mã Độc Giả không được rỗng","Thông báo");
}
else{
int p_kq = 0;
Check_maDocGiatrung(p_MaDocGia, ref p_kq);
if (p_kq == 1){
txtMaDocGia.Focus();
txtMaDocGia.BackColor = Color.Red;
MessageBox.Show("Mã đã tồn tại. Nhập mã khác!","Thông báo");
}
else{
if (con.State != ConnectionState.Open)
con.Open();
SqlCommand cmd = new SqlCommand("DocGia_Ins2", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@MaDocGia",SqlDbType.NVarChar,
50).Value =
p_MaDocGia;
cmd.Parameters.Add("@MatKhau",SqlDbType.NVarChar,
50).Value =
p_MatKhau;
cmd.Parameters.Add("@TenDocGia",SqlDbType.NVarChar,
50).Value =
p_TenDocGia;
cmd.Parameters.Add("@NamSinh",SqlDbType.Date).Value=
p_NamSinh;
cmd.Parameters.Add("@GioiTinh",SqlDbType.NVarChar,
50).Value =
p_gioitinh;
cmd.Parameters.Add("@NgheNghiep",SqlDbType.NVarChar,
50).Value = p_NgheNghiep;
cmd.Parameters.Add("@DiaChi", SqlDbType.NVarChar, 50).Value
=
p_DiaChi;
cmd.Parameters.Add("@SoDienThoai",SqlDbType.NVarChar,
50).Value = p_SoDienThoai;
cmd.Parameters.Add("@NgayMuaThe", SqlDbType.Date).Value =
p_NgayMuaThe;
cmd.Parameters.Add("@NgayHetHan", SqlDbType.Date).Value =
p_NgayHetHan;
cmd.ExecuteNonQuery();
cmd.Dispose();
con.Close();
Load_grvDocGia();
MessageBox.Show("Thêm mới thành công", "Thông báo ");
ClearTextBox();
}}}
private void Sua_Click(object sender, EventArgs e)
{
string p_MaDocGia = txtMaDocGia.Text.Trim();
string p_MatKhau = txtMatKhau.Text.Trim();
string p_TenDocGia = txtTenDocGia.Text.Trim();
DateTime p_NamSinh = dtNgaySinh.Value;
string p_gioitinh = "";
if (this.rdMale.Checked == true){
p_gioitinh = "Nam";
}
else if (this.rdFemale.Checked == true){
p_gioitinh = "Nữ";
}
else{
p_gioitinh = "Khác";
}
string p_NgheNghiep = txtNgheNghiep.Text.Trim();
string p_DiaChi = txtDiaChi.Text.Trim();
string p_SoDienThoai = txtSoDienThoai.Text.Trim();
DateTime p_NgayMuaThe = dtMuaThe.Value;
DateTime p_NgayHetHan = dtHetHan.Value;
if (con.State != ConnectionState.Open)
con.Open();
SqlCommand cmd = new SqlCommand("DocGia_Update", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@MaDocGia", SqlDbType.NVarChar, 50).Value =
p_MaDocGia;
cmd.Parameters.Add("@MatKhau", SqlDbType.NVarChar, 50).Value =
p_MatKhau;
cmd.Parameters.Add("@TenDocGia", SqlDbType.NVarChar, 50).Value
=
p_TenDocGia;
cmd.Parameters.Add("@NamSinh",SqlDbType.Date).Value =
p_NamSinh;
cmd.Parameters.Add("@GioiTinh", SqlDbType.NVarChar, 50).Value =
p_gioitinh;
cmd.Parameters.Add("@NgheNghiep",SqlDbType.NVarChar, 50).Value
= p_NgheNghiep;
cmd.Parameters.Add("@DiaChi", SqlDbType.NVarChar, 50).Value =
p_DiaChi;
cmd.Parameters.Add("@SoDienThoai",SqlDbType.NVarChar, 50).Value
= p_SoDienThoai;
cmd.Parameters.Add("@NgayMuaThe",SqlDbType.Date).Value =
p_NgayMuaThe;
cmd.Parameters.Add("@NgayHetHan",SqlDbType.Date).Value =
p_NgayHetHan;
cmd.ExecuteNonQuery();
cmd.Dispose();
con.Close();
Load_grvDocGia();
MessageBox.Show("Sửa thành công");
txtMaDocGia.Enabled = true;
}
private
void
grvDocGia_CellClick(object
sender,
DataGridViewCellEventArgs e){
int i = e.RowIndex;
txtMaDocGia.Text = grvDocGia.Rows[i].Cells[0].Value.ToString();
txtMatKhau.Text = grvDocGia.Rows[i].Cells[1].Value.ToString();
txtTenDocGia.Text = grvDocGia.Rows[i].Cells[2].Value.ToString();
dtNgaySinh.Text = grvDocGia.Rows[i].Cells[3].Value.ToString();
rdMale.Text = "Nam";
rdFemale.Text = "Nữ";
rdKhac.Text = "Khác";
if (grvDocGia.SelectedCells[0].Value.ToString() == "Nữ"){
rdFemale.Checked = true;
}
else if (grvDocGia.SelectedCells[0].Value.ToString() == "Nam"){
rdMale.Checked = true;
}
else{
rdKhac.Checked = true;
}
txtNgheNghiep.Text = grvDocGia.Rows[i].Cells[4].Value.ToString();
txtDiaChi.Text = grvDocGia.Rows[i].Cells[6].Value.ToString();
txtSoDienThoai.Text = grvDocGia.Rows[i].Cells[7].Value.ToString();
dtMuaThe.Text = grvDocGia.Rows[i].Cells[8].Value.ToString();
dtHetHan.Text = grvDocGia.Rows[i].Cells[9].Value.ToString();
txtMaDocGia.Enabled = false;
}
private void Xoa_Click(object sender, EventArgs e){
string p_MaDocGia = txtMaDocGia.Text.Trim();
if (con.State != ConnectionState.Open)
con.Open();
SqlCommand cmd = new SqlCommand("DocGia_Del", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@MaDocGia", SqlDbType.NVarChar, 50).Value =
p_MaDocGia;
cmd.ExecuteNonQuery();
cmd.Dispose();
con.Close();
Load_grvDocGia();
MessageBox.Show("Xóa thành cơng");
txtMaDocGia.Enabled = true;
}
private void btTimKiem_Click(object sender, EventArgs e){
string p_MaDocGia = txttimkiem_madocgia.Text.Trim();
if (con.State != ConnectionState.Open)
con.Open();
SqlCommand cmd = new SqlCommand("DocGia_Find", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@MaDocGia", SqlDbType.NVarChar, 50).Value =
p_MaDocGia;
cmd.ExecuteNonQuery();
cmd.Dispose();
con.Close();
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
DataTable tb = new DataTable();
da.Fill(tb);
grvDocGia.DataSource = tb;
grvDocGia.Refresh();
}
d. Chức năng 4: Quản Lý Sách
- Mô tả: Quản lý thông tin sách (Số lượng, vị trí, Giá, …)
- Giao diện:
- Code:
private void Load_grvSach(){
if (con.State != ConnectionState.Open)
con.Open();
SqlCommand cmd = new SqlCommand("select * from Sach", con);
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
cmd.Dispose();
con.Close();
DataTable tb = new DataTable();
da.Fill(tb);
grvSach.DataSource = tb;
grvSach.Refresh();
}
private void QuanLySach_Load(object sender, EventArgs e){
Load_grvSach();
}
private bool KtraDinhDanglaSo(string text){
int kq;
return int.TryParse(text, out kq);
}
private void Check_maSachtrung(string p_MaSach, ref int p_kq){
if (con.State != ConnectionState.Open)
con.Open();
SqlCommand cmd = new SqlCommand("Check_trungmaSach", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@MaSach", SqlDbType.NVarChar, 50).Value =
p_MaSach;
SqlParameter kq = new SqlParameter("@kq", SqlDbType.Int);
cmd.Parameters.Add(kq).Direction = ParameterDirection.Output;
cmd.ExecuteNonQuery();
p_kq = (int)kq.Value;
cmd.Dispose();
con.Close();
}
private void btThemSach_Click(object sender, EventArgs e){
string p_MaSach = txtMaSach.Text.Trim();
string p_TenSach = txtTenSach.Text.Trim();
string p_TacGia = txtTacGia.Text.Trim();
string p_NXB = txtNXB.Text.Trim();
string p_ChuyenMuc = txtChuyenMuc.Text.Trim();
string p_ViTri = txtViTri.Text.Trim();
int p_SoLuong = int.Parse(txtSoLuong.Text.Trim());
if (KtraDinhDanglaSo(txtGia.Text.Trim()) == false){
txtGia.Focus();
txtGia.BackColor = Color.Green;
MessageBox.Show("Hãy nhập số!");
}
else{
long p_Gia = long.Parse(txtGia.Text.Trim());
if (p_MaSach == ""){
txtMaSach.Focus();
txtMaSach.BackColor = Color.Pink;
MessageBox.Show("Mã Thủ Thư không được rỗng");
}
else{
int p_kq = 0;
Check_maSachtrung(p_MaSach, ref p_kq);
if (p_kq == 1){
txtMaSach.Focus();
txtMaSach.BackColor = Color.Red;
MessageBox.Show("Mã đã tồn tại. Nhập mã khác!");
}
else{
if (con.State != ConnectionState.Open)
con.Open();
SqlCommand cmd = new SqlCommand("Sach_Ins", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@MaSach",SqlDbType.NVarChar,
50).Value = p_MaSach;
cmd.Parameters.Add("@TenSach",SqlDbType.NVarChar,
50).Value = p_TenSach;
cmd.Parameters.Add("@TacGia",SqlDbType.NVarChar,
50).Value = p_TacGia;
cmd.Parameters.Add("@NXB",SqlDbType.NVarChar, 50).Value
= p_NXB;
cmd.Parameters.Add("@Gia", SqlDbType.BigInt).Value =
p_Gia;
cmd.Parameters.Add("@ChuyenMuc",SqlDbType.NVarChar,
50).Value = p_ChuyenMuc;
cmd.Parameters.Add("@ViTri",SqlDbType.NVarChar, 50).Value
= p_ViTri;
cmd.Parameters.Add("@SoLuong",SqlDbType.Int).Value =
p_SoLuong;
cmd.ExecuteNonQuery();
cmd.Dispose();
con.Close();
Load_grvSach();
MessageBox.Show("Thêm mới thành công","Thông Báo");
LamMoi();
}}}}
private void btSuaThongTin_Click(object sender, EventArgs e){