Kế hoạch làm đề tài.1.2.1.Nghiên cứu và phân tích yêu cầu• Khảo sát và thu thập thông tin về quy trình bán hàng hiện tại của doanh nghiệp• Xác định các chức năng cần thiết của ứng dụng q
TỔNG QUAN VỀ ĐỀ TÀI
Giới thiệu về đề tài
1.1.1 Bối cảnh và lý do lựa chọn đề tài:
Hoạt động bán hàng đóng vai trò quan trọng trong sự thành công của bất kỳ doanh nghiệp nào Việc quản lý bán hàng hiệu quả giúp doanh nghiệp tiết kiệm chi phí, tăng doanh thu và lợi nhuận Tuy nhiên, việc quản lý bán hàng thủ công thường gặp nhiều khó khăn, tốn thời gian và dễ xảy ra sai sót Do đó, việc xây dựng ứng dụng quản lý bán hàng là một giải pháp thiết thực giúp nâng cao hiệu quả quản lý và tối ưu hóa hoạt động bán hàng.
• Phân tích nhu cầu và yêu cầu của doanh nghiệp đối với ứng dụng quản lý bán hàng.
• Nghiên cứu các giải pháp quản lý bán hàng hiện có trên thị trường.
• Thiết kế và xây dựng một ứng dụng quản lý bán hàng phù hợp với nhu cầu của doanh nghiệp.
• Đánh giá hiệu quả và khả năng ứng dụng của ứng dụng.
Kế hoạch làm đề tài
1.2.1.Nghiên cứu và phân tích yêu cầu
• Khảo sát và thu thập thông tin về quy trình bán hàng hiện tại của doanh nghiệp
• Xác định các chức năng cần thiết của ứng dụng quản lý bán hàng
• Phân tích và tài liệu hóa các yêu cầu chức năng, phi chức năng
• Thiết kế kiến trúc phần mềm và cơ sở dữ liệu
• Thiết kế giao diện người dùng (UI) và trải nghiệm người dùng (UX)
• Kiểm thử từng module và tích hợp toàn hệ thống
• Triển khai ứng dụng lên môi trường máy chủ
1.2.4.Kiểm thử và đánh giá
• Tiến hành kiểm thử hệ thống toàn diện (kiểm thử chức năng, hiệu suất, an ninh, v.v.)
• Đánh giá sự phù hợp của ứng dụng so với các yêu cầu ban đầu
• Lấy phản hồi từ người dùng và cải thiện ứng dụng
Các công nghệ sử dụng
1.3.1 Giới thiệu về nền tảng NET
NET là một nền tảng chứ không phải là một sản phẩm đơn lẻ.NET được định nghĩa dưới dạng một khung ứng dụng .NET cung cấp một khung cho những ứng dụng nào được xây dựng, nó xác định những ứng dụng truy nhập các hàm như thế nào qua các hệ thống và các mạng Net cung cấp một nền tảng mà trên đó các giải pháp và các dịch vụ Web có thể được xây dựng, một nền tảng giải phóng những sự ràng buộc và tự bản thân nó giải phóng khỏi Microsoft Windows Nói cách khác, NET là một cách để xây dựng các ứng dụng và các dịch vụ mà nó hoạt động không phụ thuộc vào một nền tảng nào Đây là một cách để tạo ra các trao đổi thông tin truyền thông) giữa những hệ thống đa dạng và các ứng dụng cũng như tích hợp nhiều thiết bị vào trong việc trao đổi thông tin này.
.NET gồm có hai phần: Framework và Integrated Development Environment (IDE) Framework cung cấp tất cả những gì cần thiết căn bản.
Khung framework là hệ thống nền tảng theo các quy ước nhất định giúp công việc diễn ra suôn sẻ Ngược lại, IDE là một môi trường hỗ trợ triển khai nhanh chóng và thuận tiện hơn Mặc dù IDE rất hữu ích, nhưng framework vẫn đóng vai trò cốt yếu, trong khi IDE chỉ là một công cụ bổ sung hoạt động trên nền tảng framework.
1.3.2 Giới thiệu ngôn ngữ lập trình C#
C# là ngôn ngữ được phát triển trên nền tảng net, C# có tính diễn đạt cao, hỗ trợ lập trình có cấu trúc, hướng đối tượng và hướng thành phần Trọng tâm của ngôn ngữ hướng đối tượng là Bảng Bảng định nghĩa kiểu dữ liệu mới, cho phép mở rộng ngôn ngữ theo hướng cần giải quyết.
C# hỗ trợ khái niệm giao diện, (interfaces) Một Bảng chỉ có thể kế thừa duy nhất một Bảng cha nhưng có thể cài đặt nhiều giao diện.
C# cũng cho truy cập trực tiếp bộ nhớ dùng con trỏ kiểu C++, nhưng vùng mã đó được xem như không an toàn CLR sẽ không thực thi việc thu dọn rác tự động các đối tượng được tham chiếu bởi con trỏ cho đến khi lập trình viên tự giải phóng.
Các ứng dụng của ngôn ngữ C#:
Chương trình ứng dụng Console
• Giao tiếp với người dùng bằng bàn phím
• Không có gioa diện đồ họa Chương trình Winform
• Giao tiếp với người dùng bằng bàn phím và chuột\
• Giao diện đồ họa và có sử lý sự kiện Chương trình WebForm
• Kết hợp ASP.NET, C# làm nền tương tác CSDL và sử lý sự kiện
• Giao diện đồ họa có sử lý sự kiện C# là một ngôn ngữ khá mạnh có tính tương tác CSDL nên được sử dụng khá rộng rãi trong việc triển khai các ứng dụng phần mềm, chương trình quản lý.
Lập trình với C# cũng khá đơn giản Nếu như bạn đã từng lập trình VB6 hay VB.NET thì việc lập trình C# cũng tương tự như vậy Thực tế đã giúp em rút ra điều đó trong khóa 49 sinh viên đã từng học qua VB6 trong trường ĐH KTQD mặc dù chưa từng được đào tạo chính quy ngôn ngữ C# nhưng khi triển khai ứng dụng bằng C# lại có thể cập nhật kiến thức mới khác nhanh nhạy và thích nghi khá tốt Điều này là sự đúc rút của nhiều người và khẳng định ngôn ngữ C# đơn giản hơn so với 1 số ngôn ngữ khác Chư C++ hay Java.
1.3.3 Giới thiệu về SQL Sever 1.3.3.1 Khái niệm về SQL Sever
SQL Server is designed to operate effectively in Very Large Database (VLDB) environments up to terabytes in size, accommodating thousands of concurrent users It seamlessly integrates with other Microsoft servers, including Internet Information Server (IIS), E-Commerce Server, and Proxy Server.
SQL cung cấp khả năng định nghĩa các cơ sở dữ liệu, các cấu trúc lưu trữ và tổ chức dữ liệu cũng như mối quan hệ giữa các thành phần dữ liệu.
Truy xuất và thao tác dữ liệu: Với SQL, người dùng có thể dễ dàng thực hiện các thaotác truy xuất, bổ sung, cập nhật và loại bỏ dữ liệu trong các cơ sở dữ liệu. Điều khiển truy cập: SQL có thể được sử dụng để cấp phát và kiểm soát các thao tác củangười sử dụng trên dữ liệu, đảm bảo sự an toàn cho cơ sở dữ liệu • Đảm bảo toàn vẹn dữ liệu: SQL định nghĩa các ràng buộc toàn vẹn trong cơ sở dữ liệu nhờ đó đảm bảo tính hợp lệ và chính xác của dữ liệu trước các thao tác cập nhật cũng như các lỗi của hệ thống.
Như vậy, có thể nói rằng SQL là một ngôn ngữ hoàn thiện được sử dụng trong các hệ thống cơ sở dữ liệu và là một thành phần không thể thiếu trong các hệ quản trị cơ sở dữ liệu Mặc dù SQL không phải là một ngôn ngữ lập trình như C, C++, Java, song các câu lệnh mà SQL cung cấp có thể được nhúng vào trong các ngôn ngữ lập trình nhằm xây dựng các ứng dụng tương tác với cơ sở dữ liệu.
Ngôn ngữ SQL khác biệt với các ngôn ngữ lập trình thường dùng như C, C++, Java, ở tính khai báo của nó Người dùng SQL chỉ cần mô tả các yêu cầu thực hiện trên cơ sở dữ liệu mà không cần chỉ định cách thức thực hiện các yêu cầu đó.
MÔ HÌNH HỆ THỐNG
Các chức năng của hệ thống
2.1.1 Chức năng đăng ký tài khoản
Quá trình đăng ký tài khoản là bước tạo tài khoản mới trên hệ thống hoặc ứng dụng cụ thể, gồm những bước sau:
• Cung cấp thông tin: Người dùng cần cung cấp một số thông tin cá nhân, chẳng hạn như tên, địa chỉ email, mật khẩu và đôi khi là các thông tin bổ sung như số điện thoại, địa chỉ nhà, v.v.
• Thiết lập tài khoản: Sau khi xác nhận thông tin, tài khoản của người dùng sẽ được tạo và họ có thể bắt đầu sử dụng hệ thống hoặc ứng dụng.
- Người dùng từ form đăng nhập rồi ấn vào nút đăng ký để vào form đăng ký- Người sử dụng : nhân viên hoặc quản lý
2.1.2 Chức năng đăng nhập tài khoản
- Chức năng đăng nhập tài khoản cho phép người dùng đã đăng ký truy cập tài khoản của họ trong hệ thống hoặc ứng dụng Quá trình này thường bao gồm các bước sau:
• Xác định người dùng: Người dùng nhập thông tin đăng nhập đã đăng ký của họ, chẳng hạn như tên người dùng hoặc địa chỉ email và mật khẩu, vào các trường được chỉ định trên trang đăng nhập.
• Xác minh thông tin đăng nhập: Hệ thống xác minh thông tin đăng nhập được nhập với dữ liệu người dùng được lưu trữ Điều này có thể liên quan đến việc băm và so sánh mật khẩu, khớp tên người dùng với các định danh duy nhất hoặc sử dụng các phương thức xác thực khác.
• Đăng nhập thành công: Nếu thông tin đăng nhập hợp lệ, người dùng được cấp quyền truy cập vào tài khoản của họ và các tính năng của hệ thống Họ có thể được chuyển hướng đến trang chủ cá nhân hóa, bảng điều khiển hoặc các khu vực khác của ứng dụng.
• Đăng nhập thất bại: Nếu thông tin đăng nhập không hợp lệ, hệ thống hiển thị thông báo lỗi cho biết nỗ lực đăng nhập không thành công Người dùng có thể được nhắc thử lại hoặc đặt lại mật khẩu.
- Mục đích của chức năng đăng nhập tài khoản:
• Kiểm soát truy cập an toàn: Chức năng đăng nhập hạn chế quyền truy cập chỉ cho những người dùng được ủy quyền, ngăn chặn những cá nhân trái phép xâm nhập vào tài khoản và có thể xâm phạm dữ liệu nhạy cảm hoặc thực hiện các hành động trái phép.
• Xác thực người dùng: Nó xác minh danh tính của người dùng, đảm bảo rằng họ là người mà họ tuyên bố Điều này rất quan trọng đối với các hệ thống xử lý thông tin cá nhân, giao dịch tài chính hoặc các vấn đề nhạy cảm khác.
Đăng nhập thành công sẽ đưa người dùng đến với trải nghiệm được cá nhân hóa, nơi họ có thể thiết lập sở thích, truy cập hoạt động trong quá khứ và thông tin tài khoản cụ thể Tính năng này nâng cao tối đa trải nghiệm người dùng, cho phép họ tương tác hiệu quả hơn với hệ thống.
• Quản lý phiên: Khi người dùng đăng nhập, một phiên được thiết lập, cho phép hệ thống duy trì danh tính và ngữ cảnh của người dùng trong suốt quá trình tương tác của họ Điều này cho phép các tính năng như đăng nhập trên nhiều trang, giữ lại các mặt hàng trong giỏ hàng hoặc tiếp tục các nhiệm vụ mà không cần nhập lại thông tin đăng nhập.
2.1.3 Chức năng của trang hóa đơn
Tính năng tạo hóa đơn của phần mềm cho phép người dùng tạo hóa đơn mới cho khách hàng, thêm các mặt hàng, chỉ định số lượng, áp dụng chiết khấu và tính toán tổng số tiền phải thanh toán.
• Xem hóa đơn: Cung cấp danh sách tất cả các hóa đơn, với các tùy chọn để lọc, tìm kiếm và sắp xếp dựa trên các tiêu chí khác nhau như số hóa đơn, tên khách hàng, ngày tháng hoặc số tiền.
Người dùng có thể chỉnh sửa các hóa đơn hiện có để thay đổi chi tiết mặt hàng, điều chỉnh số lượng, áp dụng chiết khấu hoặc sửa lỗi.
• Xóa hóa đơn: Cho phép người dùng xóa các hóa đơn không còn cần thiết hoặc đã bị hủy.
• Tìm kiếm hóa đơn : cho phép người dùng tìm các hóa đơn khác nhau
Các giao diện có trong hệ thống
STT Tên đối tượng Kiểu Ý nghĩa Ghi chú
1 brm_dangky Form Form quản lý bán hàng 2 btn_thoat Button Click thoát khỏi trang 3 btn_dk Button Đăng ký tài khoản 4 btn_luu Button Lưu tài khoản 5 Txt_tdn Textbo x
STT Tên đối tượng Kiểu Ý nghĩa Ghi chú
Form Form quản lý bán hàng
2 btn_dn Button Nút đăng nhập 3 btn_thoat Button Nút thoát khỏi trang 4 btn_dk Button Nút Đăng ký tài khoản 5 Txt_tdn Textbo x
STT Tên đối tượng Kiểu Ý nghĩa Ghi chú 1 frm_trangchu Form Form trang chủ
Click thoát khỏi trang 3 danhSáchNhàCungCấpTool
Strip MenuItem Đăng ký tài khoản
4 hóaĐơnToolStripMenuItem Nhập tên đăng nhập 5 nhânViênToolStripMenuIte m
STT Tên đối tượng Kiểu Ý nghĩa Ghi chú
1 frm_hoadon Form Form trang chủ
2 Txt_mahd Textbox Nhập mã hóa đơn
3 Dtp_ngaylap datetimePicker Nhập ngày lập hóa đơn 4 Txt_makh Textbox Nhập mã khách hàng
5 Txt_manv Textbox Nhập mã nhân viên 6 Txt_tongtien Textbox Nhập tổng tiền
7 btn_them Button Nút thêm
8 btn_luu Button Nút lưu
STT Tên đối tượng Kiểu Ý nghĩa Ghi chú 1 frm_khachhan g
2 Txt_makh Textbox Nhập mã hóa đơn 3 Dtp_ngaysinh datetimePic ker
Nhập ngày sinh khách hàng 4 Txt_hoten Textbox Nhập tên của khách hàng 5 Txt_sdt Textbox Nhập số điện thoại 6 rdb_nam RadioButton Nhập giới tính nam 7 rdb_nu RadioButton Nhập giới tính nữ 8 Txt_diachi Textbox Nhập địa chỉ khách hàng 9 rdb_matk RadioButton Nút chọn mã tài khoản 10 btn_them Button Nút thêm
11 btn_luu Button Nút lưu
12 btn_sua Button Nút sửa
13 btn_xoa Button Nút xóa
14 btn_timkiem Button Nút tìm kiếm15 dgv_khachhan DataGridVie Bảng hiển thị dữ liệu g w
STT Tên đối tượng Kiểu Ý nghĩa Ghi chú 1 frm_mathang Form Form trang chủ
2 Txt_mah Textbox Nhập mã hàng 3 Txt_tenh Textbox Nhập tên hàng 4 Txt_dongia Textbox Nhập giá tiền của hàng 5 Txt_slton Textbox Nhập số lượng tồn trong kho 6 Txt_mancc Textbox Nhập mã nhà cung cấp 7 Txt_manv Textbox Nhập mã nhân viên 8 Txt_diachi Textbox Nhập địa chỉ khách hàng
Bảng hiển thị dữ liệu
2.2.5 Giao diện nhà cung cấp
STT Tên đối tượng Kiểu Ý nghĩa Ghi chú 1 frm_nhacungc ap
2 Txt_mancc Textbox Nhập mã nhà cung cấp 3 Txt_tenncc Textbox Nhập tên nhà cung cấp 4 Txt_nguoilienh e
Textbox Nhập tên người liên hệ 5 Txt_sdt Textbox Nhập số điện thoại 6 Txt_diachi Textbox Nhập địa chỉ
7 txt_mancctk Textbox Nhập mã nhà cung câp bên tìm kiếm 8 txt_diachitk Textbox Nhập địa chỉ bên tìm kiếm
9 btn_them Button Nút thêm
10 btn_load Button Nút làm mới trang
11 btn_sua Button Nút sửa
12 btn_xoa Button Nút xóa
13 btn_timkiem Button Nút tìm kiếm 14 dgv_nhacungc ap
Bảng hiển thị dữ liệu
2.2.6 Giao diện quản lý nhân viên
STT Tên đối tượng Kiểu Ý nghĩa Ghi chú 1 frm_nhanvien Form Form trang chủ
2 Txt_manv Textbox Nhập mã nhà cung cấp 3 Txt_hoten Textbox Nhập tên nhà cung cấp4 Txt_matk Textbox Nhập mã tài khoản5 Txt_sdt Textbox Nhập số điện thoại
12 btn_timkiem Button Nút tìm kiếm 13 dgv_nhanvien DataGridVie w
Bảng hiển thị dữ liệu
Mô hình cơ sở dữ liệu
2.4.1 Mô hình cơ sở dữ liệu quan hệ
2.4.2.Lược đồ cơ sở dữ liệu quan hệ
- Bảng tài khoản dbo.TaiKhoan
- Bảng nhân viên dbo.NhanVien
- Bảng khách hàng dbo.KhachHang
- bảng hàng hóa dbo.HangHoa
- Bảng nhà cung cấp dbo.NhaCungCap
Các tiện ích
- ThemThongTinHĐ(): Thêm thông tin hóa đơn - SuaThongTinHĐ(): Sửa thông tin hóa đơn - XoaThongTinHĐ(): Xóa thông tin hóa đơn - CapNhatThongTinHĐ(): Cập nhật thông tin hóa đơn - TimKiemHĐ(): Tìm kiếm hóa đơn theo mã HD
Hệ thống quản lý thông tin hàng hóa và khách hàng cung cấp các chức năng chính sau: Thêm, sửa, xóa và cập nhật thông tin hàng hóa thông qua các hàm ThemThongTinHangHoa(), SuaThongTinHangHoa(), XoaThongTinHangHoa() và CapNhatThongTinHangHoa() Tương tự, hệ thống cũng cung cấp các chức năng tương ứng cho thông tin khách hàng thông qua các hàm ThemThongTinKhachHang(), SuaThongTinKhachHang(), XoaThongTinKhachHang() và CapNhatThongTinKhachHang() Ngoài ra, hệ thống hỗ trợ tìm kiếm hàng hóa theo mã hàng thông qua hàm TimKiemHangHoa() và tìm kiếm khách hàng theo mã khách hàng thông qua hàm TimKiemKhachHang().
- Thêm thông tin nhân viên mới vào hệ thống với ThemThongTinNV().- Cập nhật thông tin nhân viên hiện tại với SuaThongTinNV().- Xóa thông tin nhân viên không còn làm việc tại công ty với XoaThongTinNV().- Cập nhật thông tin nhân viên khi có thay đổi với CapNhatThongTinNV().- Tìm kiếm thông tin nhân viên theo mã nhân viên với TimKiemNV().
- ThemThongTinNCC(): Thêm thông tin nhà cung cấp- SuaThongTinNCC(): Sửa thông tin nhà cung cấp- XoaThongTinNCC(): Xóa thông tin nhà cung cấp- CapNhatThongTinNCC(): Cập nhật thông tin nhà cung cấp- TimKiemNCC(): Tìm kiếm nhà cung cấp theo mã NCC
PHÁT TRIỂN HỆ THỐNG
Lớp GUI
3.2.1 Giao diện đăng nhập namespace GUI { public partial class frm_DangNhap : Form { public frm_DangNhap() {
} TK_DTO TK = new TK_DTO();
TK_BLL TKBLL = new TK_BLL(); private void btn_thoat_Click(object sender, EventArgs e) {
} private void btn_dn_Click(object sender, EventArgs e) {
TK.TenDN = txt_tdn.Text;
TK.MatKhau = txt_mk.Text; string getuserr = TKBLL.KT(TK); switch (getuserr) { case "ten":
MessageBox.Show("Tên không được để trống"); return;
MessageBox.Show("sai tk mk"); return;
} frm_trangchu frmtrangchu = new frm_trangchu(); frmtrangchu.Show(); this.Hide();
3.2.2 Giao diện trang chủ namespace GUI { public partial class frm_trangchu : Form { public frm_trangchu() {
} private void mặtHàngToolStripMenuItem_Click(object sender, EventArgs e) { frm_mathang frmmathang = new frm_mathang(); frmmathang.Show(); this.Hide();
} private void danhSáchNhàCungCấpToolStripMenuItem_Click(object sender, EventArgs e) { frm_nhacungcap frmncc = new frm_nhacungcap(); frmncc.Show(); this.Hide();
} private void hóaĐơnToolStripMenuItem_Click(object sender, EventArgs e) { frm_hoadon frmhoadon = new frm_hoadon(); frmhoadon.Show(); this.Hide();
} private void nhânViênToolStripMenuItem_Click(object sender, EventArgs e) { frm_nhanvien frmnhanvien = new frm_nhanvien(); frmnhanvien.Show(); this.Hide();
} private void kháchHàngToolStripMenuItem_Click(object sender, EventArgs e) { frm_khachhang frmkhachhang = new frm_khachhang(); frmkhachhang.Show(); this.Hide();
} private void đăngNhậpToolStripMenuItem_Click(object sender, EventArgs e) { frm_DangNhap frmdn = new frm_DangNhap(); frmdn.Show(); this.Hide();
3.2.3 Giao diện hóa đơn namespace GUI { public partial class frm_hoadon : Form { public frm_hoadon() {
} private void mặtHàngToolStripMenuItem_Click(object sender, EventArgs e) { frm_mathang frmmathang = new frm_mathang(); frmmathang.Show(); this.Hide();
} private void frm_hoadon_Load(object sender, EventArgs e) { dgv_hd.DataSource = HoaDon_BLL.LoadDataHD_BLL();
} private void danhSáchNhàCungCấpToolStripMenuItem_Click_1(object sender, EventArgs e) { frm_nhacungcap frmncc = new frm_nhacungcap(); frmncc.Show(); this.Hide();
} private void hóaĐơnToolStripMenuItem_Click_1(object sender, EventArgs e) { frm_hoadon frmhoadon = new frm_hoadon(); frmhoadon.Show(); this.Hide();
} private void nhânViênToolStripMenuItem_Click_1(object sender, EventArgs e) { frm_nhanvien frmnhanvien = new frm_nhanvien(); frmnhanvien.Show(); this.Hide();
} private void kháchHàngToolStripMenuItem_Click_1(object sender, EventArgs e) { frm_khachhang frmkhachhang = new frm_khachhang(); frmkhachhang.Show(); this.Hide();
} private void btn_them_Click(object sender, EventArgs e) { string MaHD = txt_mahd.Text;
DateTime NgayLap = dtp_ngaylap.Value; string MaKH = txt_makh.Text; string MaNV = txt_manv.Text; decimal TongTien = decimal.Parse(txt_tongtien.Text);
HoaDon_DTO hdon = new HoaDon_DTO(MaHD, NgayLap, MaKH, MaNV, TongTien);
HoaDon_BLL.inserthd_BLL(hdon);
MessageBox.Show("Bạn đã thêm Thành công"); dgv_hd.DataSource = HoaDon_BLL.LoadDataHD_BLL();
} private void btn_sua_Click(object sender, EventArgs e) { string MaHD = txt_mahd.Text;
DateTime NgayLap = dtp_ngaylap.Value; string MaKH = txt_makh.Text; string MaNV = txt_manv.Text; decimal TongTien = decimal.Parse(txt_tongtien.Text);
HoaDon_DTO hdon = new HoaDon_DTO(MaHD, NgayLap, MaKH, MaNV, TongTien);
HoaDon_BLL.update_BLL(hdon);
MessageBox.Show("Bạn đã sua Thành công"); dgv_hd.DataSource = HoaDon_BLL.LoadDataHD_BLL();
} private void btn_xoa_Click(object sender, EventArgs e) { private void btn_tkiem_Click(object sender, EventArgs e) { string MaHD = txt_mahdtk.Text;
HoaDon_DTO nvSearch = new HoaDon_DTO(MaHD); nvSearch.MaHD = MaHD;
DataTable dtSearch = HoaDon_BLL.search_BLL(nvSearch); dgv_hd.DataSource = dtSearch;
} private void dgv_hd_CellContentClick(object sender, DataGridViewCellEventArgs e) {
DataGridViewRow row = new DataGridViewRow(); row = dgv_hd.Rows[e.RowIndex]; txt_mahd.Text = row.Cells[0].Value.ToString(); dtp_ngaylap.Text = row.Cells[1].Value.ToString(); txt_makh.Text = row.Cells[2].Value.ToString(); txt_manv.Text = row.Cells[3].Value.ToString(); txt_tongtien.Text = row.Cells[4].Value.ToString();
} private void btn_load_Click(object sender, EventArgs e) { string MaHD = txt_mahd.Text;
DateTime NgayLap = dtp_ngaylap.Value; string MaKH = txt_makh.Text; string MaNV = txt_manv.Text; decimal TongTien = decimal.Parse(txt_tongtien.Text);
HoaDon_DTO hdon = new HoaDon_DTO(MaHD, NgayLap, MaKH, MaNV, TongTien); dgv_hd.DataSource = HoaDon_BLL.LoadDataHD_BLL();
3.2.4 Giao diện khách hàng namespace GUI { public partial class frm_khachhang : Form { public frm_khachhang() {
} private void frm_khachhang_Load(object sender, EventArgs e) { dgv_khachhang.DataSource = KhachHang_BLL.Loaddata_BLL();
} private void mặtHàngToolStripMenuItem_Click_1(object sender, EventArgs e) { frm_mathang frmmathang = new frm_mathang(); frmmathang.Show(); this.Hide();
} private void danhSáchNhàCungCấpToolStripMenuItem_Click_1(object sender, EventArgs e)
{ frm_nhacungcap frmncc = new frm_nhacungcap(); frmncc.Show(); this.Hide();
} private void hóaĐơnToolStripMenuItem_Click_1(object sender, EventArgs e) { frm_hoadon frmhoadon = new frm_hoadon(); frmhoadon.Show(); this.Hide();
} private void nhânViênToolStripMenuItem_Click_1(object sender, EventArgs e) { frm_nhanvien frmnhanvien = new frm_nhanvien(); frmnhanvien.Show(); this.Hide();
} private void kháchHàngToolStripMenuItem_Click_1(object sender, EventArgs e) { frm_khachhang frmkhachhang = new frm_khachhang(); frmkhachhang.Show(); this.Hide();
} private void btn_them_Click(object sender, EventArgs e)
KhachHang_BLL.insertkh_BLL(khang);
MessageBox.Show("Bạn đã thêm " + HoTen + " Thành công"); dgv_khachhang.DataSource = KhachHang_BLL.Loaddata_BLL();
} private void btn_sua_Click(object sender, EventArgs e) { string MaKH = txt_makh.Text; string HoTen = txt_hoten.Text; string SDT = txt_sdt.Text; string GioiTinh = cbb_gioitinh.Text;
DateTime NgaySinh = dtp_ngaysinh.Value; string DiaChi = txt_diachi.Text; string MaTK = txt_matk.Text;
KhachHang_DTO khang = new KhachHang_DTO(MaKH, HoTen, SDT, GioiTinh, NgaySinh, DiaChi, MaTK);
KhachHang_BLL.update_BLL(khang);
MessageBox.Show("Bạn đã sua " + HoTen + " Thành công"); dgv_khachhang.DataSource = KhachHang_BLL.Loaddata_BLL();
} private void dgv_khachhang_CellContentClick(object sender, DataGridViewCellEventArgs e) {
DataGridViewRow row = new DataGridViewRow(); row = dgv_khachhang.Rows[e.RowIndex]; txt_makh.Text = row.Cells[0].Value.ToString(); txt_hoten.Text = row.Cells[1].Value.ToString(); txt_sdt.Text = row.Cells[2].Value.ToString(); cbb_gioitinh.Text = row.Cells[3].Value.ToString(); dtp_ngaysinh.Text = row.Cells[4].Value.ToString(); txt_diachi.Text = row.Cells[5].Value.ToString(); txt_matk.Text = row.Cells[6].Value.ToString();
} private void btn_xoa_Click(object sender, EventArgs e) { string MaKH = txt_makh.Text; string HoTen = txt_hoten.Text; string SDT = txt_sdt.Text; string GioiTinh = cbb_gioitinh.Text;
DateTime NgaySinh = dtp_ngaysinh.Value; string DiaChi = txt_diachi.Text; string MaTK = txt_matk.Text;
KhachHang_DTO khang = new KhachHang_DTO(MaKH, HoTen, SDT, GioiTinh, NgaySinh, DiaChi, MaTK);
KhachHang_BLL.Delete_BLL(khang);
MessageBox.Show("Bạn đã xoa Thành công"); dgv_khachhang.DataSource = KhachHang_BLL.Loaddata_BLL();
} private void btn_tkiem_Click(object sender, EventArgs e) { string MaKH = txt_makhtk.Text; string DiaChi = txt_diachitk.Text;
KhachHang_DTO nvSearch = new KhachHang_DTO(MaKH,DiaChi); nvSearch.MaKH = MaKH; nvSearch.DiaChi = DiaChi;
DataTable dtSearch = KhachHang_BLL.search_BLL(nvSearch); dgv_khachhang.DataSource = dtSearch;
} private void btn_load_Click(object sender, EventArgs e) { string MaKH = txt_makh.Text; string HoTen = txt_hoten.Text; string SDT = txt_sdt.Text; string GioiTinh = cbb_gioitinh.Text;
DateTime NgaySinh = dtp_ngaysinh.Value; string DiaChi = txt_diachi.Text; string MaTK = txt_matk.Text;
KhachHang_DTO khang = new KhachHang_DTO(MaKH, HoTen, SDT, GioiTinh, NgaySinh, DiaChi, MaTK); dgv_khachhang.DataSource = KhachHang_BLL.Loaddata_BLL();
3.2.5 Giao diện mặt hàng namespace GUI { public partial class frm_mathang : Form { public frm_mathang() { this.Hide();
} private void danhSáchNhàCungCấpToolStripMenuItem_Click_1(object sender, EventArgs e) { frm_nhacungcap frmncc = new frm_nhacungcap(); frmncc.Show(); this.Hide();
} private void hóaĐơnToolStripMenuItem_Click_1(object sender, EventArgs e) { frm_hoadon frmhoadon = new frm_hoadon(); frmhoadon.Show(); this.Hide();
} private void nhânViênToolStripMenuItem_Click_1(object sender, EventArgs e) { frm_nhanvien frmnhanvien = new frm_nhanvien(); frmnhanvien.Show(); this.Hide();
} private void kháchHàngToolStripMenuItem_Click_1(object sender, EventArgs e) { frm_khachhang frmkhachhang = new frm_khachhang(); frmkhachhang.Show(); this.Hide();
} private void dgv_hanghoa_CellContentClick(object sender, DataGridViewCellEventArgs e) {
DataGridViewRow row = new DataGridViewRow(); row = dgv_hanghoa.Rows[e.RowIndex]; txt_mah.Text = row.Cells[0].Value.ToString(); txt_tenh.Text = row.Cells[1].Value.ToString(); txt_dongia.Text = row.Cells[2].Value.ToString(); txt_slton.Text = row.Cells[3].Value.ToString(); txt_mancc.Text = row.Cells[4].Value.ToString(); txt_manv.Text = row.Cells[5].Value.ToString();
The method btn_them_Click handles user input to add a new record It extracts data from the text boxes txt_mah (product code), txt_tenh (product name), txt_dongia (unit price), txt_slton (quantity on hand), txt_mancc (supplier code), and txt_manv (employee code) By parsing the numeric values, this method creates a new record with the specified information.
MatHang_DTO mhang = new MatHang_DTO(MaH,TenH, DonGia, SoLuongTon, MaNCC, MaNV);
MatHang_BLL.insertnmh_BLL(mhang);
MessageBox.Show("Bạn đã thêm Thành công"); dgv_hanghoa.DataSource = MatHang_BLL.LOadData_BLL();
} private void btn_sua_Click(object sender, EventArgs e) { string MaH = txt_mah.Text; string TenH = txt_tenh.Text; decimal DonGia = decimal.Parse(txt_dongia.Text); int SoLuongTon = int.Parse(txt_slton.Text); string MaNCC = txt_mancc.Text; string MaNV = txt_manv.Text;
MatHang_DTO mhang = new MatHang_DTO(MaH, TenH, DonGia, SoLuongTon, MaNCC, MaNV);
MatHang_BLL.update_BLL(mhang);
MessageBox.Show("Bạn đã sua Thành công"); dgv_hanghoa.DataSource = MatHang_BLL.LOadData_BLL();
} private void btn_xoa_Click(object sender, EventArgs e) { string MaH = txt_mah.Text; string TenH = txt_tenh.Text; decimal DonGia = decimal.Parse(txt_dongia.Text); int SoLuongTon = int.Parse(txt_slton.Text); string MaNCC = txt_mancc.Text; string MaNV = txt_manv.Text;
MatHang_DTO mhang = new MatHang_DTO(MaH, TenH, DonGia, SoLuongTon, MaNCC, MaNV);
MatHang_BLL.delete_BLL(mhang);
MessageBox.Show("Bạn đã xoa Thành công"); dgv_hanghoa.DataSource = MatHang_BLL.LOadData_BLL();
} private void btn_timkiem_Click(object sender, EventArgs e) { string MaH = txt_mahtk.Text;
MatHang_DTO nvSearch = new MatHang_DTO(MaH); nvSearch.MaH = MaH;
DataTable dtSearch = MatHang_BLL.search_BLL(nvSearch); dgv_hanghoa.DataSource = dtSearch;
} private void btn_load_Click(object sender, EventArgs e) { string MaH = txt_mah.Text; string TenH = txt_tenh.Text; decimal DonGia = decimal.Parse(txt_dongia.Text); int SoLuongTon = int.Parse(txt_slton.Text);
3.2.5 Giao diện nhà cung cấp namespace GUI { public partial class frm_nhacungcap : Form { public frm_nhacungcap() {
} private void frm_nhacungcap_Load(object sender, EventArgs e) { dgv_ncc.DataSource = NCC_BLL.LoadData_BLL();
} private void label2_Click(object sender, EventArgs e) {
} private void mặtHàngToolStripMenuItem_Click_1(object sender, EventArgs e) { frm_mathang frmmathang = new frm_mathang(); frmmathang.Show(); this.Hide();
} private void danhSáchNhàCungCấpToolStripMenuItem_Click_1(object sender, EventArgs e) { frm_nhacungcap frmncc = new frm_nhacungcap(); frmncc.Show(); this.Hide();
} private void hóaĐơnToolStripMenuItem_Click_1(object sender, EventArgs e) { frm_hoadon frmhoadon = new frm_hoadon(); frmhoadon.Show(); this.Hide();
} private void nhânViênToolStripMenuItem_Click_1(object sender, EventArgs e) { frm_nhanvien frmnhanvien = new frm_nhanvien(); frmnhanvien.Show(); this.Hide();
} private void kháchHàngToolStripMenuItem_Click_1(object sender, EventArgs e) { frm_khachhang frmkhachhang = new frm_khachhang(); frmkhachhang.Show(); this.Hide();
} private void btn_them_Click(object sender, EventArgs e) { string MaNCC = txt_mancc.Text; string TenNCC = txt_tenncc.Text; string NguoiLienHe = txt_nguoilienhe.Text; string SDT = txt_sdt.Text; string DiaChi = txt_diachi.Text;
NCC_DTO Ncc = new NCC_DTO(MaNCC, TenNCC, NguoiLienHe, SDT, DiaChi );
NCC_BLL.insertncc_BLL(Ncc);
MessageBox.Show("Bạn đã thêm " + TenNCC + " Thành công"); dgv_ncc.DataSource = NhanVien_BLL.loaddata_BLL();
The button click event triggers a function that gathers user-entered data from textboxes including supplier code, name, contact person, phone number, and address These values are stored in variables for further processing.
NCC_DTO Ncc = new NCC_DTO(MaNCC, TenNCC, NguoiLienHe, SDT, DiaChi);
NCC_BLL.update_BLL(Ncc);
MessageBox.Show("Bạn đã sua Thành công"); dgv_ncc.DataSource = NCC_BLL.LoadData_BLL();
} private void dgv_ncc_CellContentClick(object sender, DataGridViewCellEventArgs e) {
DataGridViewRow row = new DataGridViewRow(); row = dgv_ncc.Rows[e.RowIndex]; txt_mancc.Text = row.Cells[0].Value.ToString(); txt_tenncc.Text = row.Cells[1].Value.ToString(); txt_nguoilienhe.Text = row.Cells[2].Value.ToString(); txt_sdt.Text = row.Cells[3].Value.ToString(); txt_diachi.Text = row.Cells[4].Value.ToString();
NCC_DTO Ncc = new NCC_DTO(MaNCC, TenNCC,NguoiLienHe, SDT, DiaChi);
NCC_BLL.delete_BLL(Ncc);
MessageBox.Show("Bạn đã xoa Thành công"); dgv_ncc.DataSource = NCC_BLL.LoadData_BLL();
} private void btn_timkiem_Click(object sender, EventArgs e) { string MaNCC = txt_mancctk.Text; string DiaChi = txt_diachitk.Text;
NCC_DTO nvSearch = new NCC_DTO( MaNCC, DiaChi); nvSearch.MaNCC = MaNCC; nvSearch.DiaChi = DiaChi;
DataTable dtSearch = NCC_BLL.search_BLL(nvSearch); dgv_ncc.DataSource = dtSearch;
} private void btn_load_Click(object sender, EventArgs e) { string MaNCC = txt_mancc.Text; string TenNCC = txt_tenncc.Text; string NguoiLienHe = txt_nguoilienhe.Text; string SDT = txt_sdt.Text; string DiaChi = txt_diachi.Text;
NCC_DTO Ncc = new NCC_DTO(MaNCC, TenNCC, NguoiLienHe, SDT, DiaChi); dgv_ncc.DataSource = NCC_BLL.LoadData_BLL();
2.2.6 Giao diện quản lý nhân viên namespace GUI { public partial class frm_nhanvien : Form { public frm_nhanvien() {
} private void frm_nhanvien_Load(object sender, EventArgs e) { dgv_nhanvien.DataSource = NhanVien_BLL.loaddata_BLL();
} private void mặtHàngToolStripMenuItem_Click_1(object sender, EventArgs e) { frm_mathang frmmathang = new frm_mathang(); frmmathang.Show(); this.Hide();
} private void danhSáchNhàCungCấpToolStripMenuItem_Click_1(object sender, EventArgs e) { private void kháchHàngToolStripMenuItem_Click_1(object sender, EventArgs e) { frm_khachhang frmkhachhang = new frm_khachhang(); frmkhachhang.Show(); this.Hide();
} private void btn_them_Click(object sender, EventArgs e) { string MaNV=txt_manv.Text; string HoTen=txt_hoten.Text; string SDT=txt_sdt.Text; string DiaChi=txt_diachi.Text; string MaTK= txt_matk.Text;
NhanVien_DTO Nvien = new NhanVien_DTO(MaNV, HoTen, SDT, DiaChi, MaTK);
NhanVien_BLL.insertnv_BLL(Nvien);
MessageBox.Show("Bạn đã thêm " + HoTen + " Thành công"); dgv_nhanvien.DataSource = NhanVien_BLL.loaddata_BLL();
} private void dgv_nhanvien_CellContentClick(object sender, DataGridViewCellEventArgs e) {
When a row in the dgv_nhanvien DataGridView is clicked, the event handler retrieves the clicked row and populates text boxes with the cell values for the employee ID, name, phone number, address, and account ID The corresponding text boxes (txt_manv, txt_hoten, txt_sdt, txt_diachi, and txt_matk) are updated with the values from the selected row.
} private void btn_sua_Click(object sender, EventArgs e) { string MaNV = txt_manv.Text; string HoTen = txt_hoten.Text; string SDT = txt_sdt.Text; string DiaChi = txt_diachi.Text; string MaTK = txt_matk.Text;
NhanVien_DTO Nvien = new NhanVien_DTO(MaNV, HoTen, SDT, DiaChi, MaTK);
NhanVien_BLL.update_BLL(Nvien);
MessageBox.Show("Bạn đã sua " + HoTen + " Thành công"); dgv_nhanvien.DataSource = NhanVien_BLL.loaddata_BLL();
} private void btn_xoa_Click(object sender, EventArgs e) { string MaNV = txt_manv.Text; string HoTen = txt_hoten.Text; string SDT = txt_sdt.Text; string DiaChi = txt_diachi.Text; string MaTK = txt_matk.Text;
NhanVien_DTO Nvien = new NhanVien_DTO(MaNV, HoTen, SDT, DiaChi, MaTK);
NhanVien_BLL.delete_BLL(Nvien);
MessageBox.Show("Bạn đã xoa Thành công"); dgv_nhanvien.DataSource = NhanVien_BLL.loaddata_BLL();
} private void btn_timkiem_Click(object sender, EventArgs e) { string DiaChi = txt_diachiTK.Text;
NhanVien_DTO nvSearch = new NhanVien_DTO(DiaChi); nvSearch.DiaChi = DiaChi;
DataTable dtSearch = NhanVien_BLL.search_BLL(nvSearch); dgv_nhanvien.DataSource = dtSearch;
Lớp DAL
3.3.1 Kết nối với SQL namespace DAL { public class ketnoicsdl { public static SqlConnection connect() { string strconn = "Data Source=VANTHUAN\\SQLEXPRESS;Initial Catalog=BTL.NET_IT15;Integrated Security=True;";
SqlConnection conn = new SqlConnection(strconn); return conn;
} } public class Data_Access { public static string KT_DTO(TK_DTO TK) { string user = null;
SqlConnection conn = ketnoicsdl.connect(); conn.Open();
SqlCommand cmd = new SqlCommand("proce_login", conn); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@user", TK.TenDN); cmd.Parameters.AddWithValue("@pass", TK.MatKhau); cmd.Connection = conn;
SqlDataReader dr = cmd.ExecuteReader(); if (dr.HasRows) { while (dr.Read()) { user = dr.GetString(0);
} else { return "sai tk hoặc mk";
3.3.2 Quản Lý tài khoản namespace DAL{
3.3.3 Quản Lý hóa đơn namespace DAL { public class HoaDon_DAL { public static DataTable LoaddataHD_DAL() {
SqlCommand cmd = new SqlCommand("sql_load_hd", Connn); cmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter daa = new SqlDataAdapter(); daa.SelectCommand = cmd;
DataTable dtt = new DataTable(); daa.Fill(dtt);
} public static void Insert_HD(HoaDon_DTO hd) { using (SqlConnection Conn = ketnoicsdl.connect()) {
SqlCommand cmd = new SqlCommand("sql_insert_hd", Conn); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@MaHD", hd.MaHD); cmd.Parameters.AddWithValue("@NgayLap", hd.NgayLap); cmd.Parameters.AddWithValue("@MaKH", hd.MaKH); cmd.Parameters.AddWithValue("@MaNV", hd.MaNV); cmd.Parameters.AddWithValue("@TongTien", hd.TongTien);
} public static void Update_HD(HoaDon_DTO hd) { using (SqlConnection Conn = ketnoicsdl.connect()) {
SqlCommand cmd = new SqlCommand("sql_update_hd", Conn); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@MaHD", hd.MaHD); cmd.Parameters.AddWithValue("@NgayLap", hd.NgayLap); cmd.Parameters.AddWithValue("@MaKH", hd.MaKH); cmd.Parameters.AddWithValue("@MaNV", hd.MaNV); cmd.Parameters.AddWithValue("@TongTien", hd.TongTien);
} } public static void Delete_HD(HoaDon_DTO hd) { using (SqlConnection Conn = ketnoicsdl.connect()) {
SqlCommand cmd = new SqlCommand("sql_Delete_hd", Conn); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@MaHD", hd.MaHD); cmd.Parameters.AddWithValue("@NgayLap", hd.NgayLap); cmd.Parameters.AddWithValue("@MaKH", hd.MaKH); cmd.Parameters.AddWithValue("@MaNV", hd.MaNV); cmd.Parameters.AddWithValue("@TongTien", hd.TongTien);
} } public static DataTable Search_HD(HoaDon_DTO hd) {
DataTable dt = new DataTable(); using (SqlConnection Conn = ketnoicsdl.connect()) {
SqlCommand cmd = new SqlCommand("sql_search_hd", Conn); cmd.CommandType = CommandType.StoredProcedure;
// Thêm các tham số tương ứng với các trường dữ liệu cần tìm kiếm if (!string.IsNullOrEmpty(hd.MaHD)) cmd.Parameters.AddWithValue("@MaHD", hd.MaHD);
SqlDataAdapter adapter = new SqlDataAdapter(cmd); adapter.Fill(dt);
} } } namespace DAL { public class KhachHang_DAL { public static DataTable Loaddata_DAL() {
SqlCommand cmd = new SqlCommand("sql_load_kh", Connn); cmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter daa = new SqlDataAdapter(); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@Makh", kh.MaKH); cmd.Parameters.AddWithValue("@HoTen", kh.HoTen); cmd.Parameters.AddWithValue("@SDT", kh.SDT); cmd.Parameters.AddWithValue("@GioiTinh", kh.GioiTinh); cmd.Parameters.AddWithValue("@NgaySinh", kh.NgaySinh); cmd.Parameters.AddWithValue("@DiaChi", kh.DiaChi); cmd.Parameters.AddWithValue("@MaTK", kh.MaTK);
} } public static void Update_KH(KhachHang_DTO kh) { using (SqlConnection Connn = ketnoicsdl.connect()) {
SqlCommand cmd = new SqlCommand("sql_update_kh", Connn); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@Makh", kh.MaKH); cmd.Parameters.AddWithValue("@HoTen", kh.HoTen); cmd.Parameters.AddWithValue("@SDT", kh.SDT); cmd.Parameters.AddWithValue("@GioiTinh", kh.GioiTinh); cmd.Parameters.AddWithValue("@NgaySinh", kh.NgaySinh); cmd.Parameters.AddWithValue("@DiaChi", kh.DiaChi); cmd.Parameters.AddWithValue("@MaTK", kh.MaTK);
} } public static void Delete_kh(KhachHang_DTO kh) { using (SqlConnection Conn = ketnoicsdl.connect()) {
SqlCommand cmd = new SqlCommand("sql_Delete_kh", Conn); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@Makh", kh.MaKH); cmd.Parameters.AddWithValue("@HoTen", kh.HoTen); cmd.Parameters.AddWithValue("@SDT", kh.SDT); cmd.Parameters.AddWithValue("@GioiTinh", kh.GioiTinh); cmd.Parameters.AddWithValue("@NgaySinh", kh.NgaySinh); cmd.Parameters.AddWithValue("@DiaChi", kh.DiaChi); cmd.Parameters.AddWithValue("@MaTK", kh.MaTK);
} } public static DataTable Search_kh(KhachHang_DTO kh) {
DataTable dt = new DataTable(); using (SqlConnection Conn = ketnoicsdl.connect()) {
SqlCommand cmd = new SqlCommand("sql_search_kh", Conn); cmd.CommandType = CommandType.StoredProcedure;
// Thêm các tham số tương ứng với các trường dữ liệu cần tìm kiếm if (!string.IsNullOrEmpty(kh.MaKH)) cmd.Parameters.AddWithValue("@MaKH", kh.MaKH); if (!string.IsNullOrEmpty(kh.DiaChi)) cmd.Parameters.AddWithValue("@DiaChi", kh.DiaChi);
SqlDataAdapter adapter = new SqlDataAdapter(cmd); adapter.Fill(dt);
3.3.4 Quản Lý mặt hàng namespace DAL { public class MatHang_DAL { public static DataTable LOadData_DAL() {
SqlCommand cmd = new SqlCommand("sql_load_mh", Conn); cmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter da = new SqlDataAdapter(); da.SelectCommand = cmd;
DataTable dt = new DataTable(); da.Fill(dt);
} public static void Insert_MH(MatHang_DTO mh) { using (SqlConnection Conn = ketnoicsdl.connect()) {
SqlCommand cmd = new SqlCommand("sql_insert_mh", Conn); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@MaH", mh.MaH); cmd.Parameters.AddWithValue("@TenH", mh.TenH); cmd.Parameters.AddWithValue("@SoLuongTon", mh.SoLuongTon); cmd.Parameters.AddWithValue("@DonGia", mh.DonGia); cmd.Parameters.AddWithValue("@MaNCC", mh.MaNCC); cmd.Parameters.AddWithValue("@MaNV", mh.MaNV);
Conn.Open(); cmd.ExecuteNonQuery(); cmd.Parameters.AddWithValue("@MaH", mh.MaH); cmd.Parameters.AddWithValue("@TenH", mh.TenH); cmd.Parameters.AddWithValue("@SoLuongTon", mh.SoLuongTon); cmd.Parameters.AddWithValue("@DonGia", mh.DonGia); cmd.Parameters.AddWithValue("@MaNCC", mh.MaNCC); cmd.Parameters.AddWithValue("@MaNV", mh.MaNV);
} } public static void Delete_MH(MatHang_DTO mh) { using (SqlConnection Conn = ketnoicsdl.connect()) {
SqlCommand cmd = new SqlCommand("sql_Delete_mh", Conn); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@MaH", mh.MaH); cmd.Parameters.AddWithValue("@TenH", mh.TenH); cmd.Parameters.AddWithValue("@SoLuongTon", mh.SoLuongTon); cmd.Parameters.AddWithValue("@DonGia", mh.DonGia); cmd.Parameters.AddWithValue("@MaNCC", mh.MaNCC); cmd.Parameters.AddWithValue("@MaNV", mh.MaNV);
} } public static DataTable Search_MH(MatHang_DTO mh) {
DataTable dt = new DataTable(); using (SqlConnection Conn = ketnoicsdl.connect()) {
SqlCommand cmd = new SqlCommand("sql_search_mh", Conn); cmd.CommandType = CommandType.StoredProcedure;
// Thêm các tham số tương ứng với các trường dữ liệu cần tìm kiếm if (!string.IsNullOrEmpty(mh.MaH)) cmd.Parameters.AddWithValue("@MaH", mh.MaH);
SqlDataAdapter adapter = new SqlDataAdapter(cmd); adapter.Fill(dt);
3.3.5 Quản Lý nhà cung cấp namespace DAL
{ public class NCC_DAL { public static DataTable LoadData_DAL() {
SqlCommand cmd = new SqlCommand("sql_load_ncc", Conn); cmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter da = new SqlDataAdapter(); da.SelectCommand = cmd;
DataTable dt = new DataTable(); da.Fill(dt);
} public static void Insert_NCC(NCC_DTO ncc) { using (SqlConnection Conn = ketnoicsdl.connect()) {
Establishing a connection:** A new SqlCommand object is created, establishing a connection to the database.* **Defining the command type:** The SqlCommand is assigned the CommandType.StoredProcedure value, indicating that it will execute a stored procedure.* **Binding parameters:** Values from the ncc object are bound to the corresponding parameters of the SqlCommand.**Coherent Paragraph:**The SqlCommand object is configured to execute a stored procedure named "sql_insert_ncc" against the specified connection The CommandType is set to StoredProcedure to indicate that a stored procedure is being invoked Parameters representing the MaNCC, TenNCC, NguoiLienHe, SDT, and DiaChi properties of the ncc object are bound to the SqlCommand, ensuring that these values are passed to the stored procedure when executed.
} } public static void Update_NCC(NCC_DTO ncc) { using (SqlConnection Conn = ketnoicsdl.connect()) {
SqlCommand cmd = new SqlCommand("sql_update_ncc", Conn); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@MaNCC", ncc.MaNCC); cmd.Parameters.AddWithValue("@TenNCC", ncc.TenNCC); cmd.Parameters.AddWithValue("@NguoiLienHe", ncc.NguoiLienHe); cmd.Parameters.AddWithValue("@SDT", ncc.SDT); cmd.Parameters.AddWithValue("@DiaChi", ncc.DiaChi);
} } cmd.Parameters.AddWithValue("@SDT", ncc.SDT); cmd.Parameters.AddWithValue("@DiaChi", ncc.DiaChi);
} } public static DataTable Search_ncc(NCC_DTO ncc) {
DataTable dt = new DataTable(); using (SqlConnection Conn = ketnoicsdl.connect()) {
SqlCommand cmd = new SqlCommand("sql_search_ncc", Conn); cmd.CommandType = CommandType.StoredProcedure;
// Thêm các tham số tương ứng với các trường dữ liệu cần tìm kiếm if (!string.IsNullOrEmpty(ncc.MaNCC)) cmd.Parameters.AddWithValue("@MaNCC", ncc.MaNCC); if (!string.IsNullOrEmpty(ncc.DiaChi)) cmd.Parameters.AddWithValue("@DiaChi", ncc.DiaChi);
SqlDataAdapter adapter = new SqlDataAdapter(cmd); adapter.Fill(dt);
3.3.6 Quản Lý nhân viên namespace DAL { public class NhanVien_DAL { public static DataTable loaddata_DAL() {
SqlCommand cmd = new SqlCommand("sql_load_nv", Conn); cmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter da = new SqlDataAdapter(); da.SelectCommand = cmd;
DataTable dt = new DataTable(); da.Fill(dt);
} public static void Insert_NV(NhanVien_DTO nv) { using (SqlConnection Conn = ketnoicsdl.connect()) {
SqlCommand cmd = new SqlCommand("sql_insert_nv", Conn); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@MaNV", nv.MaNV); cmd.Parameters.AddWithValue("@HoTen", nv.HoTen); cmd.Parameters.AddWithValue("@SDT", nv.SDT); cmd.Parameters.AddWithValue("@DiaChi", nv.DiaChi); cmd.Parameters.AddWithValue("@MaTK", nv.MaTK);
} } public static void Update_NV(NhanVien_DTO nv) { using (SqlConnection Conn = ketnoicsdl.connect()) {
SqlCommand cmd = new SqlCommand("sql_update_nv", Conn); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@MaNV", nv.MaNV); cmd.Parameters.AddWithValue("@HoTen", nv.HoTen); cmd.Parameters.AddWithValue("@SDT", nv.SDT); cmd.Parameters.AddWithValue("@DiaChi", nv.DiaChi); cmd.Parameters.AddWithValue("@MaTK", nv.MaTK);
} } public static void Delete_nv(NhanVien_DTO nv) { using (SqlConnection Conn = ketnoicsdl.connect()) {
Lớp BLL
namespace BLL { public class TK_BLL {
TK_DAL truycap = new TK_DAL(); public string KT(TK_DTO TK) { if (TK.TenDN == "") { return "ten";
} if (TK.MatKhau == "") { return "mk";
} string info = TK_DAL.KT_DTO(TK); return info;
3.4.2 Quản lý hóa đơn namespace BLL { public class HoaDon_BLL { public static DataTable LoadDataHD_BLL() { return HoaDon_DAL.LoaddataHD_DAL();
} public static void inserthd_BLL(HoaDon_DTO hd) {
HoaDon_DAL.Insert_HD(hd);
} public static void update_BLL(HoaDon_DTO hd) {
HoaDon_DAL.Update_HD(hd);
} public static void delete_BLL(HoaDon_DTO hd) {
HoaDon_DAL.Delete_HD(hd);
} public static DataTable search_BLL(HoaDon_DTO hd) { return HoaDon_DAL.Search_HD(hd);
3.4.3 Quản lý khách hàng namespace BLL { public class KhachHang_BLL { public static DataTable Loaddata_BLL() { return KhachHang_DAL.Loaddata_DAL();
} public static void insertkh_BLL(KhachHang_DTO kh) {
KhachHang_DAL.INSERT_KH(kh);
} public static void update_BLL(KhachHang_DTO kh) {
KhachHang_DAL.Update_KH(kh);
} public static void Delete_BLL(KhachHang_DTO kh) {
KhachHang_DAL.Delete_kh(kh);
} public static DataTable search_BLL(KhachHang_DTO kh) { return KhachHang_DAL.Search_kh(kh);
3.4.4 Quản lý mặt hàng namespace BLL { public class MatHang_BLL { public static DataTable LOadData_BLL() { return MatHang_DAL.LOadData_DAL();
} public static void insertnmh_BLL(MatHang_DTO mh) {
MatHang_DAL.Insert_MH(mh);
} public static void update_BLL(MatHang_DTO mh) {
MatHang_DAL.Update_MH(mh);
} public static void delete_BLL(MatHang_DTO mh) {
MatHang_DAL.Delete_MH(mh);
} public static DataTable search_BLL(MatHang_DTO mh) { return MatHang_DAL.Search_MH(mh);
3.4.5 Quản lý nhà cung cấp namespace BLL { public class NCC_BLL { public static DataTable LoadData_BLL() { return NCC_DAL.LoadData_DAL();
} public static void insertncc_BLL(NCC_DTO ncc) {
NCC_DAL.Insert_NCC(ncc);
} public static void update_BLL(NCC_DTO ncc) {
NCC_DAL.Update_NCC(ncc);
} public static void delete_BLL(NCC_DTO ncc) {
NCC_DAL.Delete_ncc(ncc);
} public static DataTable search_BLL(NCC_DTO ncc) { return NCC_DAL.Search_ncc(ncc);
3.4.6 Quản lý nhân viên namespace BLL { public class NhanVien_BLL { public static DataTable loaddata_BLL() { return NhanVien_DAL.loaddata_DAL();
} public static void insertnv_BLL(NhanVien_DTO nv) {
NhanVien_DAL.Insert_NV(nv);
} public static void update_BLL(NhanVien_DTO nv) {
NhanVien_DAL.Update_NV(nv);
} public static void delete_BLL(NhanVien_DTO nv) {
NhanVien_DAL.Delete_nv(nv);
Các Procedured
GO /****** Object: StoredProcedure [dbo].[sql_Delete_hd] Script Date:
SET ANSI_NULLS ON GOSET QUOTED_IDENTIFIER ON GOALTER PROCEDURE [dbo].[sql_Delete_hd]
DELETE FROM HoaDon WHERE MaHD = @Mahd AND NgayLap = @NgayLap AND MaKH = @MaKH
AND MaNV = @MaNV AND TongTien = @TongTien;
CREATE PROC sql_insert_hd
BEGIN INSERT INTO HoaDon (Mahd, NgayLap, MaKH, MaNV, TongTien) VALUES (@Mahd, @NgayLap, @MaKH,@MaNV, @TongTien) END
CREATE PROCEDURE sql_load_kh AS
BEGINSELECT * FROM KhachHangEND
CREATE PROCEDURE sql_search_hd
BEGIN SELECT MaHD, NgayLap, MaKH, MaNV, TongTien FROM HoaDon
CREATE PROCEDURE sql_update_hd
UPDATE HoaDon SET NgayLap = @NgayLap,
MaKH = @MaKH, MaNV = @MaNV, TongTien = @TongTien
IF @@ROWCOUNT > 0 SELECT 'Cập nhật dữ liệu thành công!' ELSE
SELECT 'Cập nhật dữ liệu thấMt bại.' END
CREATE PROCEDURE sql_Delete_kh @Makh nchar(10),
CREATE PROC sql_insert_kh
BEGIN INSERT INTO KhachHang (Makh, HoTen, SDT, GioiTinh, NgaySinh, DiaChi, MaTK) VALUES (@Makh, @HoTen, @SDT,@GioiTinh, @NgaySinh, @DiaChi, @MaTK) END
CREATE PROCEDURE sql_load_kh AS
BEGIN SELECT * FROM KhachHang END
CREATE PROCEDURE sql_update_kh @Makh nchar(10),
BEGIN UPDATE KhachHang SET HoTen = @HoTen,
GioiTinh = @GioiTinh, NgaySinh = @NgaySinh, SDT = @SDT,
DiaChi = @DiaChi, MaTK = @MaTK WHERE MaKH = @MaKH
IF @@ROWCOUNT > 0 SELECT 'Cập nhật dữ liệu thành công!' ELSE
SELECT 'Cập nhật dữ liệu thấMt bại.' END
CREATE PROCEDURE sql_Delete_mh
DELETE FROM HangHoa WHERE MaH = @MaH AND TenH = @TenH
AND DonGia = @DonGia AND SoLuongTon = @SoLuongTon
CREATE PROC sql_insert_mh
@MaNV nchar(10) as BEGIN INSERT INTO HangHoa (MaH, TenH, DonGia, SoLuongTon, MaNCC, MaNV) VALUES (@MaH, @TenH, @DonGia, @SoLuongTon, @MaNCC, @MaNV) END
CREATE PROCEDURE sql_load_mh AS
BEGINSELECT * FROM HangHoaEND
CREATE PROCEDURE sql_update_mh
DonGia = @DonGia, SoLuongTon = @SoLuongTon, MaNCC = @MaNCC,
MaNV = @MaNV WHERE MaH = @MaH
IF @@ROWCOUNT > 0 SELECT 'Cập nhật dữ liệu thành công!' ELSE
SELECT 'Cập nhật dữ liệu thấMt bại.' END
CREATE PROCEDURE sql_search_mh
@MaH nchar(10) asbegin select MaH, TenH, DonGia, SoLuongTon, MaNCC, MaNV from HangHoa where MaH LIKE '%' + @MaH +'%'
CREATE PROCEDURE sql_search_kh @DiaChi NVARCHAR(50), @MaKH NCHAR(10)
AS BEGIN SELECT MaKH, HoTen, SDT, GioiTinh, NgaySinh, DiaChi, MaTK FROM KhachHang
WHERE MaKH LIKE '%' + @MaKH + '%' AND DiaChi = @DiaChi
CREATE PROCEDURE sql_Delete_ncc @MaNCC nchar(10),
DELETE FROM NhaCungCap WHERE MaNCC = @MaNCC AND TenNCC = @TenNCC
AND NguoiLienHe = @NguoiLienHe AND SDT = @SDT
CREATE PROC sql_insert_ncc
@DiaChi nvarchar(50) asBEGIN INSERT INTO NhaCungCap (MaNCC, TenNCC, NguoiLienHe, SDT, DiaChi) VALUES (@MaNCC, @Tenncc, @NguoiLienHe,@SDT, @DiaChi)
CREATE PROCEDURE sql_load_ncc AS
BEGINSELECT * FROM NhaCungCapEND
CREATE PROCEDURE sql_update_ncc
BEGIN UPDATE NhaCungCap SET TenNCC = @TenNCC,
DiaChi = @DiaChi WHERE MaNCC = @MaNCC
IF @@ROWCOUNT > 0 SELECT 'Cập nhật dữ liệu thành công!' ELSE
SELECT 'Cập nhật dữ liệu thấMt bại.' END
CREATE PROCEDURE sql_search_ncc
@DiaChi nvarchar(50) asbegin select MaNCC, TenNCC, NguoiLienHe, SDT, DiaChi from NhaCungCap where MaNCC LIKE '%' + @MaNCC +'%' AND DiaChi = @DiaChi