lOMoARcPSD| 60729183
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐÔNG Á
BÀI TẬP LỚN
HỌC PHẦN: ĐỒ ÁN CHUYÊN NGÀNH 1
N BÀI TẬP LỚN: ĐỒ ÁN CHUYÊN NGÀNH 1
Sinh viên thực hiện
Khóa
Lớp
Mã sinh viên
Nguyễn Văn Duy
K11
CNTT5
20201193
Nguyễn Hải Tiến
K11
CNTT5
20201733
Đinh Ngọc Anh
K11
CNTT5
20201404
Hoàng Kim Phượng
K11
CNTT5
20200830
Phạm Minh Hiếu
K11
CNTT5
20201311
Bắc Ninh, tháng 9 năm 2022
1
lOMoARcPSD| 60729183
MỤC LỤC
Chương I. Tổng quan về đề tài ......................................................................................... 4
1.1. Giới thiệu về đề tài ................................................................................................... 4
1.3. Giải pháp, các công nghệ sử dụng ............................................................................ 5
Chương II. Mô hình cơ sở dữ liệu quan hệ (ERD) ......................................................... 5
2.1. Thiết kế cơ sở dữ liệu ............................................................................................... 5
2.1. Thực thể, thuộc tính, ràng buộc của mô hình ........................................................... 7
2.2. Mối liên hệ giữa các thực thể với nhau, lược đồ ER ................................................ 9
Chương III. Ứng dụng WINDOW FORM kết nối CSDL ............................................. 9
3.1. Lớp Dangnhap.cs ...................................................................................................... 9
3.2. Lớp Quanlynhanvien.cs .......................................................................................... 13
3.3. Lớp PhongBanForm.cs ........................................................................................... 19
3.4. DuAnForm.cs ......................................................................................................... 23
3.5. Lớp DAL.cs ............................................................................................................ 26
3.7. Lớp DTO ................................................................................................................. 36
Kết luận ............................................................................................................................ 39
Kết quả thu được............................................................................................................ 39
Hạn chế và hướng phát triển của đề tài ......................................................................... 40
Danh mục sách tham khảo ............................................................................................. 40
lOMoARcPSD| 60729183
DANH MỤC BẢNG BIỂU VÀ SƠ ĐỒ
Số hiệu
Tên
2.1
Sơ đồ Diagram
2.2.1
Lược đồ ER và mối liên hệ giữa các thực thể
3.1.1
Form Đăng nhập
3.1.2
Form Đăng ký
3.2
Form NhanSuForm
3.3
PhongBanForm
3.4
DuAnForm
lOMoARcPSD| 60729183
PHÂN CÔNG CÔNG VIỆC
Thành viên
Chức vụ
Công việc
Theo %
Đinh Ngọc Anh
Nhóm
trưởng
NhanVienForm, NhanVien_BUS,
nhanvien_DTO, word
20
Nguyễn Văn Duy
Thành viên
PhongbanForm, phongban_BUS,
phongban_DTO
20
Nguyễn Hải Tiến
Thành viên
duanForm,duann_BUS, duan_DTO
25
Hoàng Kim
Phượng
Thành viên
dangnhapForm, user_BUS,user_DTO,
word
20
Phạm Minh Hiếu
Thành viên
DAL, sự kiện button, power point
15
Chương I. Tổng quan về đề tài
1.1. Giới thiệu về đề tài
- Quản nhân sự hay Quản nguồn nhân lực công tác quản các lực lượng lao
động của một tổ chức, công ty, xã hội, nguồn nhân lực. Chịu trách nhiệm thu hút, tuyển
dụng, đào tạo, đánh giá, và tưởng thưởng người lao động, đồng thời giám sát lãnh đạo
và văn hóa của tổ chức, và bảo đảm phù hợp với luật lao động và việc làm.
- Quản lý nhân sự là một trong những công việc vô cùng quan trọng và thiết yếu đối với
mỗi công ty từ trước đến nay. Dựa trên nhu cầu thực tế của hội nhằm giải quyết để
giảm đi những bất cập trong công c quản lý nhân sự và lương trong công ty, giải pháp
hiệu quả nhất hiện nay đầu công nghệ và thiết bị hiện đại, ứng dụng công nghệ
thông tin tự động hoá trong điều hành quản nhân sự để nâng cao chất ợng
phục vụ, đổi mới phương thức quản lý, tăng năng xuất hiệu quả. .. Đó những nội
dung cơ bản đề cập đến trong đề tài này.
1.2. Lý do chọn đề tài
- Với cách thức quản lý nhân sự như hiện nay, hầu hết các công ty vẫn còn sử dụng cách
quản lý truyền thống đó là sử dụng Word hoặc Exel nên vẫn chưa được chuyên nghiệp,
còn mắc phải nhiều hạn chế như khó kiểm soát dữ liệu, không có tính bảo mật cao,…
lOMoARcPSD| 60729183
- Nhận thức được điều đó, khi được học môn lập trình với ngôn ngữ #C và kiến thức về
hệ quản trị sở dữ liệu SQL Sever chúng em đã xây dựng một phần mềm quản
nhân sự đơn giản để có thể tháo gỡ những nhược điểm ở cách quản lý thông thường.
1.3. Giải pháp, các công nghệ sử dụng
- Giải pháp: Xây dựng phần mềm quản lý nhân sự dạng window form, kết nối cơ
sở dữ liệu nhằm hỗ trợ việc quản lý nhân sự thông minh và hiệu quả hơn.
- Visual Studio 2019, 2022
- Microsoft SQL Server Management Studio 18
Chương II. Mô hình cơ sở dữ liệu quan hệ (ERD)
2.1. Thiết kế cơ sở dữ liệu
Quan hệ NHANVIEN (nhân viên)
Tên cột
(thuộc tính)
Kiểu dữ liệu
Độ rộng
Miêu tả
id_Nv
nchar
10
Mã nhân viên
name_Nv
nvarchar
100
Tên nhân viên
ngaysinh_Nv
date
Ngày sinh
diachi_Nv
nvarchar
50
Địa chỉ
luong_Nv
int
Lương
id_Pb
nchar
10
Mã phòng ban
id_Da
nchar
10
Mã dự án
Quan hệ PHONGBAN (phòng ban)
Tên cột
(thuộc tính)
Kiểu dữ liệu
Độ rộng
Miêu tả
id_Pb
nchar
10
Mã phòng ban
name_Pb
nvarchar
50
Mã phòng ban
sonv_Pb
int
Số nhân viên
mota_Pb
nvarchar
100
Mô tả
Quan hệ DUAN (dự án)
lOMoARcPSD| 60729183
Tên cột
(thuộc tính)
Kiểu dữ liệu
Độ rộng
Miêu tả
id_Da
nchar
10
Mã dự án
name_ Da
nvarchar
50
Tên dự án
sonv_ Da
int
Số nhân viên
mota_ Da
nvarchar
100
Mô tả
Quan hệ DANGNHAP (đăng nhập)
Tên cột
(thuộc tính)
Kiểu dữ liệu
Độ rộng
Miêu tả
username
nchar
50
Tên đăng nhập
password
nchar
20
Mật khẩu
id_Nv
nchar
10
Mã nhân viên
lOMoARcPSD| 60729183
Hình 2.1. Sơ đồ Diagram
2.1. Thực thể, thuộc tính, ràng buộc của mô hình
Các thực thể:
o 1 nhân viên là một thực thể o 1 phòng ban là một thực thể o 1
dự án là một thực thể o 1 đăng nhập là một thực thể
Thuộc tính:
o NHANVIEN: id_Nv, name_NV, ngaysinh_Nv, diachi_Nv,
luong_NV, id_Pb, id_Da.
o PHONGBAN: id_Pb, name_Pb, sonv_Pb, mota_Pb.
lOMoARcPSD| 60729183
o DUAN: id_Da, name_Da, sonv_Da, mota_Da o DANGNHAP:
username, password, id_nv.
Ràng buộc:
lOMoARcPSD| 60729183
2.2. Mối liên hệ giữa các thực thể với nhau, lược đồ ER
Hình 2.2.1. Lược đồ ER và mối liên hệ giữa các thực thể
Chương III. Ứng dụng WINDOW FORM kết nối CSDL
3.1. Lớp Dangnhap.cs
- Đầu tiên khi mở phần mềm sẽ hiện giao diện đăng nhập tài khoản
Hình 3.1.1. Form Đăng nhập
lOMoARcPSD| 60729183
- Nhân viên sẽ nhập tài khoản và mật khẩu cá nhân của mình rồi nhấn nút Đăng nhập
để vào hệ thống. Trường hợp nhân viên mới chưa tài khoản thì sẽ nhấn vào nút
Đăng ký để tạo tài khoản
Hình 3.1.2. Form Đăng
- Code DangNhapForm.cs
using System;
using System.Collecons.Generic;
lOMoARcPSD| 60729183
using System.ComponentModel;
using System.Data; using
System.Drawing; using System.Linq;
using System.Text; using
System.Windows.Forms; using
System.Data.SqlClient;
using BTL_QLNS.BUS; namespace
BTL_QLNS
{
public paral class DangNhapForm : Form
{
Uls a = new Uls(); public
DangNhapForm()
{
InializeComponent(); remember();
}
private void frmdangky_Closed(object sender, FormClosedEventArgs e)
{
this.Show();
}
private void frmmhc_Closed(object sender, FormClosedEventArgs e)
{
this.Show();
}
User_BUS ub = new User_BUS();
private void btnDangnhap_Click(object sender, EventArgs e)
{
if (txtUsername.Text == "" || txtPassword.Text == "") {
MessageBox.Show("Vui lòng nhập tài khoản hoặc mật khẩu"); return;
}
String condion;
condion = " username ='" + txtUsername.Text + "' AND password ='" + txtPassword.Text + "'";
DataTable dt = new DataTable(); try
{
dt = ub.getUser(condion); if
(dt.Rows.Count>0)
{
MessageBox.Show("Đăng nhập thành công !"); a.setus(txtUsername.Text);
a.setpw(txtPassword.Text);
NhanSuForm form = new NhanSuForm();
form.FormClosed += new FormClosedEventHandler(frmmhc_Closed);
form.Show(); this.Hide();
}
else
{
MessageBox.Show("Đăng nhập không thành công , mời bạn đăng ký !");
DangKyForm form = new DangKyForm();
lOMoARcPSD| 60729183
form.FormClosed += new FormClosedEventHandler(frmdangky_Closed);
form.Show(); this.Hide();
}
}
catch (FormatExcepon)
{
MessageBox.Show("Bạn đã nhập sai cú pháp");
}
catch (SqlExcepon)
{
MessageBox.Show("Lỗi kết nối CSDL !");
}
}
private void btnDangky_Click(object sender, EventArgs e)
{
DangKyForm form = new DangKyForm();
form.FormClosed += new FormClosedEventHandler(frmdangky_Closed); form.Show();
this.Hide();
}
private void txtPassword_KeyDown(object sender, KeyEventArgs e)
{
if(e.KeyCode == Keys.Enter) btnDangnhap_Click(sender, e);
}
private void remember() { if(a.remember) {
txtUsername.Text = a.getUsername(); txtPassword.Text =
a.getPw();
} else {
txtUsername.Text = ""; txtPassword.Text = "";
}
}
}
}
lOMoARcPSD| 60729183
3.2. Lớp Quanlynhanvien.cs
Hình 3.2. Form NhanSuForm
- Ở trang quản lý nhân viên sẽ hiện bảng danh sách nhân viên và các nút chức năng:
o Nút Reset để làm mới các ô textbox. o Nút Thêm cho phép ta thêm thông
tin một nhân viên mới.
o Nút Sửa cho phép ta sửa thông tin của nhân viên theo nhân viên trong
bảng. Nhấp vào dòng thông tin của nhân viên đó, thông tin sẽ hiện trên ô
textbox và thực hiện sửa rồi ấn nút Sửa.
o Nút Xóa cho phép ta xóa toàn bộ thông tin của nhân viên. Nhấp o dòng
thông tin của nhân viên đó rồi ấn nút Xóa.
o Nút Tìm kiếm cho phép ta tìm kiếm theo mã nhân viên hoặc tên nhân viên.
lOMoARcPSD| 60729183
- Code NhanSuForm.cs
using System;
using System.Collecons.Generic; using
System.ComponentModel;
using System.Data; using
System.Drawing; using
System.Linq; using
System.Text;
lOMoARcPSD| 60729183
using System.Windows.Forms; using
BTL_QLNS.BUS; using System.Data.SqlClient;
using Microso.Oce.Interop.Excel;
using app = Microso.Oce.Interop.Excel.Applicaon; namespace BTL_QLNS
{
public paral class NhanSuForm : Form
{
public NhanSuForm()
{
InializeComponent(); }
private void btnExit_Click(object sender, EventArgs e)
{
Uls frmmch = new Uls();
frmmch.Show(); this.Hide();
}
NhanVien_BUS nvb = new NhanVien_BUS();
private void Quanlynhanvien_Load(object sender, EventArgs e)
{
//// TODO: This line of code loads data into the
'quanlynhasu_3FDataSet1.DUAN' table. You can move, or remove it, as needed.
//this.dUANTableAdapter.Fill(this.quanlynhasu_3FDataSet1.DUAN); //// TODO:
This line of code loads data into the
'quanlynhasu_3FDataSet.PHONGBAN' table. You can move, or remove it, as needed.
//this.pHONGBANTableAdapter.Fill(this.quanlynhasu_3FDataSet.PHONGBAN);
dgvNhanVien.DataSource = nvb.getNhanvien();
}
private void btnExit_Click_1(object sender, EventArgs e)
{
DangNhapForm frmmch = new DangNhapForm();
frmmch.Show(); this.Hide();
}
private void btnThem_Click(object sender, EventArgs e)
{
int luongnv=0 ; try
{
luongnv = int.Parse(txtLuong.Text);
}
catch (FormatExcepon)
{
MessageBox.Show("Kiểu dliệu của lương phải là kiểu số !");
}
if (txtMaNv.Text.Trim() == "")
MessageBox.Show("Mã nhân viên không được để trống !"); else if
(txtTenNv.Text.Trim() == "")
MessageBox.Show("Tên nhân viên không được đtrống !"); else if (luongnv
== 0)
MessageBox.Show("Thêm tht bại !");
lOMoARcPSD| 60729183
lOMoARcPSD| 60729183
else
{
nvb.insertNV(txtMaNv.Text, txtTenNv.Text,ngaysinh.Text, txtDiachi.Text, luongnv,
cbxPhongban.Text, cbxDuan.Text);
}
Quanlynhanvien_Load(sender, e);
}
private void btnSua_Click(object sender, EventArgs e)
{
int luongnv = 0; try
{
luongnv = int.Parse(txtLuong.Text);
}
catch (FormatExcepon)
{
MessageBox.Show("Kiểu dliệu của lương phải là kiểu số !");
}
if (txtMaNv.Text.Trim() == "")
MessageBox.Show("Mã nhân viên không được để trống !"); else if
(txtTenNv.Text.Trim() == "")
MessageBox.Show("Tên nhân viên không được đtrống !"); else if
(luongnv == 0)
MessageBox.Show("Sửa tht bại !"); else
nvb.updateNV(txtMaNv.Text, txtTenNv.Text, ngaysinh.Text,
txtDiachi.Text, luongnv, cbxPhongban.Text, cbxDuan.Text);
Quanlynhanvien_Load(sender, e); }
private void btnXoa_Click(object sender, EventArgs e)
{
nvb.deleteNV(txtMaNv.Text);
Quanlynhanvien_Load(sender, e); }
private void dgvNhanVien_CellClick(object sender, DataGridViewCellEventArgs e)
{
String mapb, mada; int
row = e.RowIndex; if (row >= 0)
{
txtMaNv.Text = dgvNhanVien.Rows[row].Cells[0].Value.ToString(); txtTenNv.Text =
dgvNhanVien.Rows[row].Cells[1].Value.ToString(); ngaysinh.Text =
DateTime.Parse(dgvNhanVien.Rows[row].Cells[2].Value.ToString()).ToString("dd-MMyyyy");
txtDiachi.Text = dgvNhanVien.Rows[row].Cells[3].Value.ToString();
txtLuong.Text = dgvNhanVien.Rows[row].Cells[4].Value.ToString(); mapb =
dgvNhanVien.Rows[row].Cells[5].Value.ToString(); mada =
dgvNhanVien.Rows[row].Cells[6].Value.ToString(); cbxPhongban.Text =
nvb.selectPB(mapb); cbxDuan.Text = nvb.selectDA(mada);
lOMoARcPSD| 60729183
}
}
private void btnTim_Click(object sender, EventArgs e)
{
if (txtSearch.Text == "") {
MessageBox.Show("Vui lòng nhập mã hoặc tên cần m"); return;
}
dgvNhanVien.DataSource = nvb.Search(txtSearch.Text);
}
private void btnreset_Click(object sender, EventArgs e)
{
txtDiachi.Text = ""; txtLuong.Text =
""; txtMaNv.Text = ""; txtSearch.Text
= ""; txtTenNv.Text = "";
ngaysinh.Text = "(ngày / tháng/ năm)";
}
private void ngaysinh_Enter(object sender, EventArgs e) { if
(!(ngaysinh.Text == "(ngày / tháng/ năm)")) return; ngaysinh.Text = "";
ngaysinh.ForeColor = Color.Black;
}
private void ngaysinh_Leave(object sender, EventArgs e) { if
(!(ngaysinh.Text == "")) return; ngaysinh.Text = "(ngày / tháng/ năm)";
ngaysinh.ForeColor = Color.Silver;
}
private void btnPhongBan_Click(object sender, EventArgs e) { Uls form =
new Uls();
form.btnPhongBan_Click(sender, e); this.Hide();
}
private void btnDuan_Click(object sender, EventArgs e) { Uls
form = new Uls(); form.btnDuan_Click(sender, e); this.Hide();
}
private void ngaysinh_TextChanged(object sender, EventArgs e) { ngaysinh.ForeColor = Color.Black;
}
}
}
lOMoARcPSD| 60729183
3.3. Lớp PhongBanForm.cs
Hình 3.3. PhongBanForm
- trang Quản phòng ban sẽ hiện thị bảng danh sách các phòng ban các
nút chức năng:
o Nút Thêm cho phép ta thêm thông tin của một phòng ban mới.
o Nút Sửa cho phép ta sửa thông tin của phòng ban theo phòng ban trong
bảng. Nhấp vào dòng thông của phòng ban, thông tin sẽ hiện trên ô textbox
và thực hiện sửa rồi ấn nút Sửa.
o Nút Xóa cho phép ta xóa thông tin của một phòng ban. Nhấp vào dòng thông
tin của phòng ban cần xóa rồi ấn nút Xóa.
o Nút m kiếm cho phép ta tìm kiếm thông tin của phòng ban theo mã hoặc
tên phòng ban.
lOMoARcPSD| 60729183
- Code PhongBanForm.cs
using System;
using System.Collecons.Generic; using
System.ComponentModel;
using System.Data; using
System.Drawing;

Preview text:

lOMoAR cPSD| 60729183
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐÔNG Á BÀI TẬP LỚN
HỌC PHẦN: ĐỒ ÁN CHUYÊN NGÀNH 1
TÊN BÀI TẬP LỚN: ĐỒ ÁN CHUYÊN NGÀNH 1
Sinh viên thực hiện Khóa Lớp Mã sinh viên Nguyễn Văn Duy K11 CNTT5 20201193 Nguyễn Hải Tiến K11 CNTT5 20201733 Đinh Ngọc Anh K11 CNTT5 20201404 Hoàng Kim Phượng K11 CNTT5 20200830 Phạm Minh Hiếu K11 CNTT5 20201311
Bắc Ninh, tháng 9 năm 2022 1 lOMoAR cPSD| 60729183 MỤC LỤC
Chương I. Tổng quan về đề tài ......................................................................................... 4
1.1. Giới thiệu về đề tài ................................................................................................... 4
1.3. Giải pháp, các công nghệ sử dụng ............................................................................ 5
Chương II. Mô hình cơ sở dữ liệu quan hệ (ERD) ......................................................... 5
2.1. Thiết kế cơ sở dữ liệu ............................................................................................... 5
2.1. Thực thể, thuộc tính, ràng buộc của mô hình ........................................................... 7
2.2. Mối liên hệ giữa các thực thể với nhau, lược đồ ER ................................................ 9
Chương III. Ứng dụng WINDOW FORM kết nối CSDL ............................................. 9
3.1. Lớp Dangnhap.cs ...................................................................................................... 9
3.2. Lớp Quanlynhanvien.cs .......................................................................................... 13
3.3. Lớp PhongBanForm.cs ........................................................................................... 19
3.4. DuAnForm.cs ......................................................................................................... 23
3.5. Lớp DAL.cs ............................................................................................................ 26
3.7. Lớp DTO ................................................................................................................. 36
Kết luận ............................................................................................................................ 39
Kết quả thu được............................................................................................................ 39
Hạn chế và hướng phát triển của đề tài ......................................................................... 40
Danh mục sách tham khảo ............................................................................................. 40 lOMoAR cPSD| 60729183
DANH MỤC BẢNG BIỂU VÀ SƠ ĐỒ Số hiệu Tên Trang 2.1 Sơ đồ Diagram 8 2.2.1
Lược đồ ER và mối liên hệ giữa các thực thể 10 3.1.1 Form Đăng nhập 11 3.1.2 Form Đăng ký 11 3.2 Form NhanSuForm 14 3.3 PhongBanForm 18 3.4 DuAnForm 21 lOMoAR cPSD| 60729183
PHÂN CÔNG CÔNG VIỆC Thành viên Chức vụ Công việc Theo % Đinh Ngọc Anh Nhóm NhanVienForm, NhanVien_BUS, 20 trưởng nhanvien_DTO, word
Nguyễn Văn Duy Thành viên PhongbanForm, phongban_BUS, 20 phongban_DTO Nguyễn Hải Tiến Thành viên duanForm,duann_BUS, duan_DTO 25 Hoàng Kim Thành viên
dangnhapForm, user_BUS,user_DTO, 20 Phượng word
Phạm Minh Hiếu Thành viên
DAL, sự kiện button, power point 15
Chương I. Tổng quan về đề tài
1.1. Giới thiệu về đề tài
- Quản lý nhân sự hay là Quản lý nguồn nhân lực là công tác quản lý các lực lượng lao
động của một tổ chức, công ty, xã hội, nguồn nhân lực. Chịu trách nhiệm thu hút, tuyển
dụng, đào tạo, đánh giá, và tưởng thưởng người lao động, đồng thời giám sát lãnh đạo
và văn hóa của tổ chức, và bảo đảm phù hợp với luật lao động và việc làm.
- Quản lý nhân sự là một trong những công việc vô cùng quan trọng và thiết yếu đối với
mỗi công ty từ trước đến nay. Dựa trên nhu cầu thực tế của xã hội nhằm giải quyết để
giảm đi những bất cập trong công tác quản lý nhân sự và lương trong công ty, giải pháp
hiệu quả nhất hiện nay là đầu tư công nghệ và thiết bị hiện đại, ứng dụng công nghệ
thông tin và tự động hoá trong điều hành và quản lý nhân sự để nâng cao chất lượng
phục vụ, đổi mới phương thức quản lý, tăng năng xuất hiệu quả. .. Đó là những nội
dung cơ bản đề cập đến trong đề tài này.
1.2. Lý do chọn đề tài
- Với cách thức quản lý nhân sự như hiện nay, hầu hết các công ty vẫn còn sử dụng cách
quản lý truyền thống đó là sử dụng Word hoặc Exel nên vẫn chưa được chuyên nghiệp,
còn mắc phải nhiều hạn chế như khó kiểm soát dữ liệu, không có tính bảo mật cao,… lOMoAR cPSD| 60729183
- Nhận thức được điều đó, khi được học môn lập trình với ngôn ngữ #C và kiến thức về
hệ quản trị cơ sở dữ liệu SQL Sever chúng em đã xây dựng một phần mềm quản lý
nhân sự đơn giản để có thể tháo gỡ những nhược điểm ở cách quản lý thông thường.
1.3. Giải pháp, các công nghệ sử dụng
- Giải pháp: Xây dựng phần mềm quản lý nhân sự dạng window form, kết nối cơ
sở dữ liệu nhằm hỗ trợ việc quản lý nhân sự thông minh và hiệu quả hơn. - Visual Studio 2019, 2022
- Microsoft SQL Server Management Studio 18
Chương II. Mô hình cơ sở dữ liệu quan hệ (ERD)
2.1. Thiết kế cơ sở dữ liệu
Quan hệ NHANVIEN (nhân viên) Tên cột Kiểu dữ liệu Độ rộng Miêu tả (thuộc tính) id_Nv nchar 10 Mã nhân viên name_Nv nvarchar 100 Tên nhân viên ngaysinh_Nv date Ngày sinh diachi_Nv nvarchar 50 Địa chỉ luong_Nv int Lương id_Pb nchar 10 Mã phòng ban id_Da nchar 10 Mã dự án •
Quan hệ PHONGBAN (phòng ban) Tên cột Kiểu dữ liệu Độ rộng Miêu tả (thuộc tính) id_Pb nchar 10 Mã phòng ban name_Pb nvarchar 50 Mã phòng ban sonv_Pb int Số nhân viên mota_Pb nvarchar 100 Mô tả •
Quan hệ DUAN (dự án) lOMoAR cPSD| 60729183 Tên cột Kiểu dữ liệu Độ rộng Miêu tả (thuộc tính) id_Da nchar 10 Mã dự án name_ Da nvarchar 50 Tên dự án sonv_ Da int Số nhân viên mota_ Da nvarchar 100 Mô tả •
Quan hệ DANGNHAP (đăng nhập) Tên cột Kiểu dữ liệu Độ rộng Miêu tả (thuộc tính) username nchar 50 Tên đăng nhập password nchar 20 Mật khẩu id_Nv nchar 10 Mã nhân viên lOMoAR cPSD| 60729183
Hình 2.1. Sơ đồ Diagram
2.1. Thực thể, thuộc tính, ràng buộc của mô hình • Các thực thể:
o 1 nhân viên là một thực thể o 1 phòng ban là một thực thể o 1
dự án là một thực thể o 1 đăng nhập là một thực thể  Thuộc tính:
o NHANVIEN: id_Nv, name_NV, ngaysinh_Nv, diachi_Nv, luong_NV, id_Pb, id_Da.
o PHONGBAN: id_Pb, name_Pb, sonv_Pb, mota_Pb. lOMoAR cPSD| 60729183
o DUAN: id_Da, name_Da, sonv_Da, mota_Da o DANGNHAP: username, password, id_nv. • Ràng buộc: lOMoAR cPSD| 60729183
2.2. Mối liên hệ giữa các thực thể với nhau, lược đồ ER
Hình 2.2.1. Lược đồ ER và mối liên hệ giữa các thực thể
Chương III. Ứng dụng WINDOW FORM kết nối CSDL 3.1. Lớp Dangnhap.cs
- Đầu tiên khi mở phần mềm sẽ hiện giao diện đăng nhập tài khoản
Hình 3.1.1. Form Đăng nhập lOMoAR cPSD| 60729183
- Nhân viên sẽ nhập tài khoản và mật khẩu cá nhân của mình rồi nhấn nút Đăng nhập
để vào hệ thống. Trường hợp nhân viên mới chưa có tài khoản thì sẽ nhấn vào nút
Đăng ký để tạo tài khoản
Hình 3.1.2. Form Đăng ký - Code DangNhapForm.cs using System;
using System.Collections.Generic; lOMoAR cPSD| 60729183 using System.ComponentModel; using System.Data; using
System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.SqlClient; using BTL_QLNS.BUS; namespace BTL_QLNS {
public partial class DangNhapForm : Form {
Ultis a = new Ultis(); public DangNhapForm() {
InitializeComponent(); remember(); }
private void frmdangky_Closed(object sender, FormClosedEventArgs e) { this.Show(); }
private void frmmhc_Closed(object sender, FormClosedEventArgs e) { this.Show(); }
User_BUS ub = new User_BUS();
private void btnDangnhap_Click(object sender, EventArgs e) {
if (txtUsername.Text == "" || txtPassword.Text == "") {
MessageBox.Show("Vui lòng nhập tài khoản hoặc mật khẩu"); return; } String condition;
condition = " username ='" + txtUsername.Text + "' AND password ='" + txtPassword.Text + "'";
DataTable dt = new DataTable(); try {
dt = ub.getUser(condition); if (dt.Rows.Count>0) {
MessageBox.Show("Đăng nhập thành công !"); a.setus(txtUsername.Text); a.setpw(txtPassword.Text);
NhanSuForm form = new NhanSuForm();
form.FormClosed += new FormClosedEventHandler(frmmhc_Closed); form.Show(); this.Hide(); } else {
MessageBox.Show("Đăng nhập không thành công , mời bạn đăng ký !");
DangKyForm form = new DangKyForm(); lOMoAR cPSD| 60729183
form.FormClosed += new FormClosedEventHandler(frmdangky_Closed); form.Show(); this.Hide(); } } catch (FormatException) {
MessageBox.Show("Bạn đã nhập sai cú pháp"); } catch (SqlException) {
MessageBox.Show("Lỗi kết nối CSDL !"); } }
private void btnDangky_Click(object sender, EventArgs e) {
DangKyForm form = new DangKyForm();
form.FormClosed += new FormClosedEventHandler(frmdangky_Closed); form.Show(); this.Hide(); }
private void txtPassword_KeyDown(object sender, KeyEventArgs e) {
if(e.KeyCode == Keys.Enter) btnDangnhap_Click(sender, e); }
private void remember() { if(a.remember) {
txtUsername.Text = a.getUsername(); txtPassword.Text = a.getPw(); } else {
txtUsername.Text = ""; txtPassword.Text = ""; } } } } lOMoAR cPSD| 60729183
3.2. Lớp Quanlynhanvien.cs
Hình 3.2. Form NhanSuForm
- Ở trang quản lý nhân viên sẽ hiện bảng danh sách nhân viên và các nút chức năng:
o Nút Reset để làm mới các ô textbox. o Nút Thêm cho phép ta thêm thông tin một nhân viên mới.
o Nút Sửa cho phép ta sửa thông tin của nhân viên theo mã nhân viên trong
bảng. Nhấp vào dòng thông tin của nhân viên đó, thông tin sẽ hiện trên ô
textbox và thực hiện sửa rồi ấn nút Sửa.
o Nút Xóa cho phép ta xóa toàn bộ thông tin của nhân viên. Nhấp vào dòng
thông tin của nhân viên đó rồi ấn nút Xóa.
o Nút Tìm kiếm cho phép ta tìm kiếm theo mã nhân viên hoặc tên nhân viên. lOMoAR cPSD| 60729183 - Code NhanSuForm.cs using System;
using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; lOMoAR cPSD| 60729183
using System.Windows.Forms; using
BTL_QLNS.BUS; using System.Data.SqlClient;
using Microsoft.Office.Interop.Excel;
using app = Microsoft.Office.Interop.Excel.Application; namespace BTL_QLNS {
public partial class NhanSuForm : Form { public NhanSuForm() { InitializeComponent(); }
private void btnExit_Click(object sender, EventArgs e) { Ultis frmmch = new Ultis(); frmmch.Show(); this.Hide(); }
NhanVien_BUS nvb = new NhanVien_BUS();
private void Quanlynhanvien_Load(object sender, EventArgs e) {
//// TODO: This line of code loads data into the
'quanlynhasu_3FDataSet1.DUAN' table. You can move, or remove it, as needed.
//this.dUANTableAdapter.Fill(this.quanlynhasu_3FDataSet1.DUAN); //// TODO:
This line of code loads data into the
'quanlynhasu_3FDataSet.PHONGBAN' table. You can move, or remove it, as needed.
//this.pHONGBANTableAdapter.Fill(this.quanlynhasu_3FDataSet.PHONGBAN);
dgvNhanVien.DataSource = nvb.getNhanvien(); }
private void btnExit_Click_1(object sender, EventArgs e) {
DangNhapForm frmmch = new DangNhapForm(); frmmch.Show(); this.Hide(); }
private void btnThem_Click(object sender, EventArgs e) { int luongnv=0 ; try {
luongnv = int.Parse(txtLuong.Text); } catch (FormatException) {
MessageBox.Show("Kiểu dữ liệu của lương phải là kiểu số !"); }
if (txtMaNv.Text.Trim() == "")
MessageBox.Show("Mã nhân viên không được để trống !"); else if (txtTenNv.Text.Trim() == "")
MessageBox.Show("Tên nhân viên không được để trống !"); else if (luongnv == 0)
MessageBox.Show("Thêm thất bại !"); lOMoAR cPSD| 60729183 lOMoAR cPSD| 60729183 else {
nvb.insertNV(txtMaNv.Text, txtTenNv.Text,ngaysinh.Text, txtDiachi.Text, luongnv,
cbxPhongban.Text, cbxDuan.Text); }
Quanlynhanvien_Load(sender, e); }
private void btnSua_Click(object sender, EventArgs e) { int luongnv = 0; try {
luongnv = int.Parse(txtLuong.Text); } catch (FormatException) {
MessageBox.Show("Kiểu dữ liệu của lương phải là kiểu số !"); }
if (txtMaNv.Text.Trim() == "")
MessageBox.Show("Mã nhân viên không được để trống !"); else if (txtTenNv.Text.Trim() == "")
MessageBox.Show("Tên nhân viên không được để trống !"); else if (luongnv == 0)
MessageBox.Show("Sửa thất bại !"); else
nvb.updateNV(txtMaNv.Text, txtTenNv.Text, ngaysinh.Text,
txtDiachi.Text, luongnv, cbxPhongban.Text, cbxDuan.Text);
Quanlynhanvien_Load(sender, e); }
private void btnXoa_Click(object sender, EventArgs e) { nvb.deleteNV(txtMaNv.Text);
Quanlynhanvien_Load(sender, e); }
private void dgvNhanVien_CellClick(object sender, DataGridViewCellEventArgs e) { String mapb, mada; int
row = e.RowIndex; if (row >= 0) {
txtMaNv.Text = dgvNhanVien.Rows[row].Cells[0].Value.ToString(); txtTenNv.Text =
dgvNhanVien.Rows[row].Cells[1].Value.ToString(); ngaysinh.Text =
DateTime.Parse(dgvNhanVien.Rows[row].Cells[2].Value.ToString()).ToString("dd-MMyyyy");
txtDiachi.Text = dgvNhanVien.Rows[row].Cells[3].Value.ToString();
txtLuong.Text = dgvNhanVien.Rows[row].Cells[4].Value.ToString(); mapb =
dgvNhanVien.Rows[row].Cells[5].Value.ToString(); mada =
dgvNhanVien.Rows[row].Cells[6].Value.ToString(); cbxPhongban.Text =
nvb.selectPB(mapb); cbxDuan.Text = nvb.selectDA(mada); lOMoAR cPSD| 60729183 } }
private void btnTim_Click(object sender, EventArgs e) { if (txtSearch.Text == "") {
MessageBox.Show("Vui lòng nhập mã hoặc tên cần tìm"); return; }
dgvNhanVien.DataSource = nvb.Search(txtSearch.Text); }
private void btnreset_Click(object sender, EventArgs e) {
txtDiachi.Text = ""; txtLuong.Text =
""; txtMaNv.Text = ""; txtSearch.Text = ""; txtTenNv.Text = "";
ngaysinh.Text = "(ngày / tháng/ năm)"; }
private void ngaysinh_Enter(object sender, EventArgs e) { if
(!(ngaysinh.Text == "(ngày / tháng/ năm)")) return; ngaysinh.Text = "";
ngaysinh.ForeColor = Color.Black; }
private void ngaysinh_Leave(object sender, EventArgs e) { if
(!(ngaysinh.Text == "")) return; ngaysinh.Text = "(ngày / tháng/ năm)";
ngaysinh.ForeColor = Color.Silver; }
private void btnPhongBan_Click(object sender, EventArgs e) { Ultis form = new Ultis();
form.btnPhongBan_Click(sender, e); this.Hide(); }
private void btnDuan_Click(object sender, EventArgs e) { Ultis
form = new Ultis(); form.btnDuan_Click(sender, e); this.Hide(); }
private void ngaysinh_TextChanged(object sender, EventArgs e) { ngaysinh.ForeColor = Color.Black; } } } lOMoAR cPSD| 60729183
3.3. Lớp PhongBanForm.cs
Hình 3.3. PhongBanForm
- Ở trang Quản lý phòng ban sẽ hiện thị bảng danh sách các phòng ban và có các nút chức năng:
o Nút Thêm cho phép ta thêm thông tin của một phòng ban mới.
o Nút Sửa cho phép ta sửa thông tin của phòng ban theo mã phòng ban trong
bảng. Nhấp vào dòng thông của phòng ban, thông tin sẽ hiện trên ô textbox
và thực hiện sửa rồi ấn nút Sửa.
o Nút Xóa cho phép ta xóa thông tin của một phòng ban. Nhấp vào dòng thông
tin của phòng ban cần xóa rồi ấn nút Xóa.
o Nút Tìm kiếm cho phép ta tìm kiếm thông tin của phòng ban theo mã hoặc tên phòng ban. lOMoAR cPSD| 60729183 - Code PhongBanForm.cs using System;
using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing;