Quản lý khách hàng: Thêm, sửa, xóa thông tin khách hàng, lịch sửmua hàng.Bán sách: Thực hiện giao dịch bán sách, xuất hóa đơn.. Em dùng các câu truy vấn “SELECT TaiKhoan, Matkhau, QuyenF
Trang 1BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG THƯƠNG TPHCM KHOA CÔNG NGHỆ THÔNG TIN
Trang 2MỤC LỤC
LỜI MỞ ĐẦU 4
1 Giới thiệu đồ án 5
1.1 Định nghĩa vấn đề 5
1.2 Phạm vi của đồ án 6
1.3 Mục tiêu, sự cần thiết của đề tài, tại sao lại chọn đề tài này? 6
2 Phân tích đề tài 8
2.1 Phân tích yêu cầu hệ thống 8
2.2 Yêu cầu chức năng 9
2.3 Các công việc cần giải quyết 10
3 Chương trình ứng dụng 11
3.1 Sơ đồ cơ sở dữ liệu 11
3.2 Bảng DangNhap 12
3.3 Bảng Sach 13
3.4 Bảng NhaPP 15
3.5 Bảng ChiTietHoaDon 16
3.6 Bảng PhieuNhapSach & ChiTietPhieuNhap 17
3.7 Bảng KhuyenMai 19
4 Giới thiệu chương trình 20
4.1 Kết nối SQL Server 20
4.2 Form Thêm 21
4.3 Form Lưu 22
4.4 Form Xoá 23
4.5 Form Sửa 24
4.6 Form Làm mới 25
5 Trang chủ 25
Trang 35.1 Form Đăng nhập 25
5.2 Form Trang chủ 28
5.3 FORM QUẢN LÝ 29
5.4 Form Báo cáo 30
5.5 Nút đăng xuất 31
6 Form Quản lý sách 32
6.1 Form Thêm nhà phân phối 32
6.2 Form Thêm sách 35
6.3 Form Trang chủ (Quyền nhân viên) 37
6.4 Form Thanh toán 37
6.5 Form InHoaDon 40
40
Kết luận môn Công nghệ Net 41
Lời nhận xét 42
Tài liệu tham khảo 43
Trang 4LỜI MỞ ĐẦU
Để có thể hoàn tất được bài đồ án này, trước tiên phải kể đếncông sức của Thầy Lương Thái Hiền Em kính lời cảm ơn đến thầy đãtận tình hướng dẫn và giúp đỡ trong thời gian thực hiện thực tập tốtnghiệp này Em xin tỏ lòng biết ơn sâu sắc đối với gia đình đã độngviên, tạo điều kiện để thực hiện tốt bài thực tâ Ap tốt nghiê Ap Em cũngxin chân thành cảm ơn đến các thầy cô khoa Công nghệ thông tintrường Cao ĐDng Công Thương Thành Phố Hồ Chí Minh đã truyền đạtnhững kiến thức, kinh nghiệm quý báu cho chúng em trong quá trìnhhọc tập tại trường Em cũng xin chân thành cảm ơn đến các bạn bè đãgiúp đỡ tài liệu, trao đổi học thuật mới có thể thực hiện bài thực tâ Ap tốtnghiê Ap
Trang 51 Giới thiệu đồ án
1.1 Định nghĩa vấn đề
Phần mềm quản lý nhà sách là một công cụ kỹ thuật số được thiết
kế để hỗ trợ và tối ưu hóa quá trình quản lý hoạt động của một cửa hàngsách Chức năng chính của nó là giúp quản lý hiệu quả các khía cạnhnhư tồn kho sách, tài chính, nhân sự, và tương tác với khách hàng
Chức năng chính của phần mềm quản lý nhà sách:
a Quản lý tồn kho sách:
Theo dõi số lượng sách tồn kho
Theo dõi thông tin về sách, bao gồm tác giả, nhà xuất bản, năm xuất bản
Đặt hàng và nhận sách mới
b Quản lý nhân sự:
Giao nhiệm vụ và theo dõi tiến độ công việc của nhân viên
Đào tạo nhân viên mới về các quy trình và chính sách của cửa hàng sách
Tích hợp chức năng quản lý lương và thưởng
c Quản lý tài chính:
Theo dõi doanh số bán hàng và lợi nhuận
Tổng hợp các chi phí liên quan đến quản lý cửa hàng, bao gồm mua sách, chi phí marketing, chi phí nhân viên, và chi phí khác
Trang 6e Báo cáo và phân tích:
Tạo báo cáo về doanh số bán hàng, tồn kho, và các chỉ số kinh doanh quan trọng khác
Phân tích dữ liệu để hỗ trợ quyết định chiến lược và phát triển kinhdoanh
Trang 7Tăng hiệu suất: Phần mềm sẽ giúp tăng cường hiệu suất làm việc,giảm thiểu công sức và thời gian ghi chú thông tin.
Chính xác và đồng nhất: Quản lý thông tin một cách chính xác vàđồng nhất giúp tránh nhầm lẫn và sai sót trong quá trình giao dịch và bánhàng
Theo dõi kịp thời: Theo dõi tồn kho, lịch sử giao dịch giúp kịp thờiđưa ra quyết định kinh doanh thông minh và linh hoạt
Phục vụ khách hàng tốt hơn: Tính năng quản lý thông tin kháchhàng giúp cung cấp dịch vụ tốt hơn, tạo sự hài lòng và tăng cơ hội duytrì và phát triển khách hàng
Sự cần thiết của đề tài:
Tăng hiệu suất: Phần mềm sẽ giúp tăng cường hiệu suất làm việc,giảm thiểu công sức và thời gian ghi chú thông tin
Chính xác và đồng nhất: Quản lý thông tin một cách chính xác vàđồng nhất giúp tránh nhầm lẫn và sai sót trong quá trình giao dịch và bánhàng
Theo dõi kịp thời: Theo dõi tồn kho, lịch sử giao dịch giúp kịp thờiđưa ra quyết định kinh doanh thông minh và linh hoạt
Phục vụ khách hàng tốt hơn: Tính năng quản lý thông tin kháchhàng giúp cung cấp dịch vụ tốt hơn, tạo sự hài lòng và tăng cơ hội duytrì và phát triển khách hàng
Tại sao lại chọn đề tài này?
Nhu cầu thị trường: Ngành bán sách ngày càng cạnh tranh và đòihỏi sự chuyên nghiệp trong quản lý
Trang 8 Áp dụng công nghệ mới: WinForm là một công nghệ phổ biến vàlinh hoạt, thích hợp cho ứng dụng desktop.
Kiến thức và kỹ năng: Đề tài này cung cấp cơ hội để áp dụng vàphát triển kiến thức về lập trình WinForm, xử lý cơ sở dữ liệu, vàquản lý dự án phần mềm
2 Phân tích đề tài
2.1 Phân tích yêu cầu hệ thống
a Người dùng và vai trò
Người quản lý nhà sách: Có quyền truy cập đầy đủ chức năng của
hệ thống để quản lý sách, nhân viên, giao dịch, và báo cáo
Nhân viên bán sách: Có quyền thực hiện các chức năng bán sách,quản lý khách hàng, và kiểm tra tồn kho
Trang 9Quản lý khách hàng: Thêm, sửa, xóa thông tin khách hàng, lịch sửmua hàng.
Bán sách: Thực hiện giao dịch bán sách, xuất hóa đơn
Tìm kiếm sách: Cho phép tìm kiếm sách theo tác giả, nhà xuất bản,thể loại, hay tên sách
Báo cáo và thống kê: In báo cáo doanh số bán hàng, lịch sử giaodịch, và tồn kho
c Bảo mật
Quản lý người dùng và quyền truy cập: Hệ thống cần đảm bảo rằngmỗi người dùng chỉ có quyền truy cập vào những chức năng cần thiếttheo vai trò của họ
Bảo mật thông tin sách và khách hàng: Đảm bảo thông tin sách vàkhách hàng được bảo vệ an toàn và không bị truy cập trái phép
2.2 Yêu cầu chức năng
a Quản lý sách
Thêm mới sách với các thông tin như tên sách, tác giả, nhà xuấtbản, giá bán, và số lượng tồn kho
Sửa đổi thông tin sách khi cần thiết
Xóa sách khỏi hệ thống khi không còn cung cấp
b Quản lý nhân viên
Thêm mới nhân viên với các thông tin như tên, địa chỉ, số điệnthoại, và quyền truy cập
Sửa đổi thông tin nhân viên và quyền truy cập
Xóa nhân viên khỏi hệ thống khi cần
Trang 10c Quản lý khách hàng
Thêm mới khách hàng với các thông tin như tên, địa chỉ, số điệnthoại, và lịch sử mua hàng
Sửa đổi thông tin khách hàng khi cần thiết
Xóa khách hàng khỏi hệ thống nếu yêu cầu
d Bán sách
Ghi chú thông tin giao dịch bán sách
Xuất hóa đơn cho khách hàng sau mỗi giao dịch
Cập nhật số lượng tồn kho sau mỗi giao dịch
e Tìm kiếm và lọc sách
Tìm kiếm sách theo các tiêu chí như tên sách, tác giả, nhà xuất bản,thể loại, và giá bán
2.3 Các công việc cần giải quyết
Thiết kế giao diện người dùng thân thiện: Đảm bảo giao diện dễ sửdụng và thân thiện với người dùng
Xây dựng cơ sở dữ liệu: Lưu trữ thông tin sách, nhân viên, kháchhàng, và giao dịch một cách hiệu quả
Xử lý nghiệp vụ: Thực hiện logic xử lý cho các chức năng quản lýsách, nhân viên, khách hàng, và giao dịch
Kiểm thử và sửa lỗi: Đảm bảo rằng phần mềm hoạt động đúng đắn
và không có lỗi phát sinh
Triển khai và duy trì: Triển khai hệ thống vào môi trường thực tế
và duy trì nó sau đó
Trang 123 TaiKhoan Tài khoản Nvarchar 50
Trang 134 Quyen Quyền hạn Nvarchar 50
3.3 Bảng Sach
Sach
ST
T Tên thuộc tính Diễn giải Kiểu Kích thước Ghi chú
chính
2 TenSach Tên sách nvarchar 100
Trang 144 SoLuongTon Số lượng
tồn
In
5 DonGia Đơn giá Float
6 GiaNhap Giá nhập Float
7 TheLoai Thể loại Nvarchar 50
phân phối
phụ
Trang 152 TenNPP Tên nhà phân
Trang 161 MaCTHD Mã chi tiết hóa
2 TenSach Tên sách Nvarchar 100
3 TenKH Tên khách hàng Nvarchar 100
Trang 174 MaSach Mã sách Int
7 ThanhTien Thành tiền Float
3.6 Bảng PhieuNhapSach & ChiTietPhieuNhap
chính
Trang 18STT Tên thuộc
tính Diễn giải Kiểu Kích thước Ghi chú
1 MaCTPN Mã chi tiết phiếu
phụ
phụ
Trang 204 TenSach Tên sách Nvarchar 100
5 DonGiaKM Đơn giá
khuyến mãi Float
6 TGBatDau Thời gian
Trang 21Em dùng các câu truy vấn “SELECT TaiKhoan, Matkhau, QuyenFROM DangNhap” và tham số thứ hai “con” để kết nối với SQL Sau đó em tạo 1 đối tượng DataTable mới có tên là dt
DataTable đc dùng để lưu trữ dữ liệu
Da.Fill (dt) Sử dụng đối tượng SqlDataAdapter để điền dữ liệu vàoDataTable Các cột sẽ đc lưu vào Datable
Dtg_User.DataSoure = dt gán DataSoure của DatagirdView(dtg_User)bằng DataTable Điều này có nghĩa là DataTable sẽ được hiển thị trongDataGirdView
Tóm lại đoạn này thực hiện việc truy vấn dữ liệu từ cơ sở dữ liệu và hiệnthị nó ở datagirdview có tên là dtg_User
4.2 Form Thêm
Đoạn code trên là một hàm xử lý sự kiện Click của nút Thêm trên mộtgiao diện người dùng Windows Forms Hàm này sẽ được thực thi khingười dùng nhấp vào nút Thêm
Trang 22Hàm bắt đầu bằng việc gán giá trị của các trường Tên tài khoản, Mậtkhẩu và Quyền cho các biến taikhoan, matkhau và quyen Các biến này
sẽ được sử dụng để tạo lệnh SQL để thêm một bản ghi mới vào bảngDangNhap
Tiếp theo, hàm sử dụng câu lệnh if để kiểm tra xem các biến taikhoan,matkhau và quyen có rỗng hay không Nếu có, hàm sẽ hiển thị thông báolỗi và trả về
Nếu các biến không rỗng, hàm sẽ sử dụng câu lệnh try-catch để thực thilệnh SQL Câu lệnh try sẽ cố gắng thực thi lệnh SQL Nếu có lỗi xảy ra,câu lệnh catch sẽ xử lý lỗi và hiển thị thông báo lỗi
Nếu lệnh SQL thực thi thành công, hàm sẽ hiển thị thông báo thànhcông
Trang 23Tiếp theo, hàm sử dụng câu lệnh try-catch để thực thi lệnh SQL Câulệnh try sẽ cố gắng thực thi lệnh SQL Nếu có lỗi xảy ra, câu lệnh catch
sẽ xử lý lỗi và hiển thị thông báo lỗi
Trang 254.5 Form Sửa
Đầu tiên kiểm tra xem dòng nào đó được chọn có trong DataGridView
có tên là dtg_User và Lấy giá trị từ các ô trong dòng đầu tiên được chọncủa DataGridView và gán chúng vào các controls trên giao diện Đây làmột phương thức để hiển thị thông tin của một người dùng được chọn đểchỉnh sửa
4.6 Form Làm mới
lammoi là một phương thức (method) được tạo ra để làm mới dữ liệutrên giao diện người dùng Trong trường hợp này, nó làm những côngviệc sau:
cbbQuyen.SelectedItem = null;: Đặt giá trị được chọn của ComboBox(cbbQuyen) thành null Điều này giúp làm trống giá trị đã chọn (nếu có)trong ComboBox
txtTaiKhoan.Text = "";: Đặt giá trị của TextBox txtTaiKhoan thànhchuỗi rỗng, làm trống nội dung trong TextBox
txtMatKhau.Text = " ";: Tương tự, đặt giá trị của TextBox txtMatKhauthành chuỗi rỗng
txtTaiKhoan.Enabled = true;: Bật tính năng chỉnh sửa cho TextBoxtxtTaiKhoan Điều này có thể được sử dụng để cho phép người dùngnhập liệu mới sau khi đã làm mới
Trang 26btnLamMoi_Click là sự kiện xảy ra khi người dùng click vào nút "Làm Mới" (btnLamMoi) Khi xảy ra sự kiện này, nó gọi phương thức lammoi() để thực hiện việc làm mới dữ liệu trên giao diện.
5 Trang chủ
5.1 Form Đăng nhập
Có chức năng đăng nhập kết nối cơ sở dữ liệu , nhập trong bảng
Trang 27design cua DangNhap để thêm tài khoản và mật khẩu , quyền Adminhoặc Nhân Viên để đăng nhập
Tạo truy vấn SQL để đếm số bản ghi trong bảng DangNhap cóTaiKhoan và MatKhau khớp với các giá trị được nhập vào hộp văn bảntxtUser và txtPass tương ứng
Tạo kết nối với cơ sở dữ liệu và thực thi truy vấn bằng đối tượngSqlCommand
Chuyển đổi kết quả của truy vấn thành int và lưu vào biến count.Kiểm tra xem biến count có bằng 1 hay không Nếu có, điều này cónghĩa là đã tìm thấy một bản ghi trong cơ sở dữ liệu với tên đăng nhập
và mật khẩu khớp nhau
Nếu count bằng 1, gọi hàm ChucVu() để lấy vai trò của ngườidùng từ cơ sở dữ liệu
Trang 28Kiểm tra xem vai trò của người dùng có phải là "Admin" hoặc
"Nhân Viên" hay không Nếu có, form tương ứng (Admin hoặcNhanVien) sẽ được hiển thị và form hiện tại sẽ bị ẩn
Nếu count không bằng 1, hộp thoại sẽ được hiển thị thông báo chongười dùng rằng tên đăng nhập hoặc mật khẩu không chính xác
5.2 Form Trang chủ
Trang 29Tạo đối tượng DataTable trống để lưu trữ dữ liệu được truy xuất từ
cơ sở dữ liệu
Trang 30Sử dụng đối tượng SqlDataAdapter để điền dữ liệu từ cơ sở dữ liệuvào đối tượng DataTable.
5.4 Form Báo cáo
Bên form báo cáo gồm có kho sách và doanh thu , tài khoản sử dụng
Trang 31Truy xuất và hiển thị tổng số sách
Sử dụng đối tượng SqlDataAdapter để truy xuất dữ liệu từ bảngSach Truy vấn SQL được sử dụng để truy xuất tổng số sách trong kho.Kết quả truy vấn được lưu trữ trong đối tượng DataTable Dòng cuốicùng của đoạn code này hiển thị tổng số sách trong nhãn SL_Sach.Truy xuất và hiển thị tổng doanh thu : sử dụng đối tượngSqlDataAdapter để truy xuất dữ liệu từ bảng ChiTietHoaDon Truy vấnSQL được sử dụng để truy xuất tổng doanh thu của tất cả các hóa đơn.Truy xuất và hiển thị tổng số tài khoản
5.5 Nút đăng xuất
Form đăng xuất sẽ trở lại trang đăng nhập trước đó
Dòng code này hiển thị hộp thoại có hai nút: "Có" và "Không"
Trang 32Biến result sẽ lưu trữ lựa chọn của người dùng.
Nếu người dùng nhấp vào "Không", phương thức sẽ trả về vàkhông có hành động nào khác được thực hiện
Tạo một thể hiện mới của form DangNhap (có thể là form đăngnhập) và hiển thị nó
Ẩn form hiện tại, thực chất là đăng xuất người dùng
6 Form Quản lý sách
6.1 Form Thêm nhà phân phối
Trang 33Có chức năng thêm mới một nhà phân phối vào cơ sở dự liệu củanhà sách Với các thông tin của nhà phân phối bao gồm: Mã NPP, TênNPP, SĐT, Địa Chỉ Với Mã NPP sẽ được tự động tăng.
Để giá trị mã nhà phân phối tự động tăng khi thêm một nhà phânphối mới vào cơ sở dữ liệu NhaSach, dùng câu truy vấn SELECTMAX(MaNPP) FROM NhaPhanPhoi để get giá trị lớn nhất của MaNPPtrong bảng NhaPhanPhoi Sau khi lấy được mã nhà phân phối hiện tại sẽtiến hành +1 và hiển thị ra textbox maNhaPhanPhoi
Trang 34Khi nhân viên đã điền đầy đủ các trường thông tin, tiếp theo tiếnhành thêm dữ liệu vào bảng NhaPhanPhoi
Kiểm tra xem các trường dữ liệu txtNhaPP, txtSDT và txtDiaChi
có rỗng hoặc null hay không bằng cách sử dụng phương thứcIsNullOrEmpty của lớp string Nếu một trong các trường này rỗng,hiển thị hộp thoại thông báo yêu nhập đầy đủ thông tin và thoátkhỏi phương thức bằng từ khóa return
Tạo câu truy vấn để thêm một bản ghi mới vào bảng
"NhaPhanPhoi"
Sử dụng đối tượng SqlCommand để thực thi câu truy vấn INSERTtrên kết nối cơ sở dữ liệu đã mở Các tham số được thiết lập bằngphương thức Parameters.AddWithValue để truyền giá trị từ cáctrường dữ liệu vào câu truy vấn
Sử dụng phương thức ExecuteNonQuery để thực thi câu truy vấnINSERT và không trả về kết quả Và thông báo thành công hoặcbáo lỗi sau khi thêm hoàn tất
Trang 356.2 Form Thêm sách
Đây là form có chức năng thực hiện việc thêm sách vào cơ sở dữ liệu của nhà sách Khi nhân viên nhập thiếu thông tin sẽ xuất câu thông báo yêu cầu nhập đầy đủ thông tin mới có thể thêm sách
Mã sách sẽ tự động tăng khi ta thêm một sách mới, cũng tương tự như phương thức tự động tăng mã nhà phân phối theo nguyên tắc lấy MaSach lớn nhất cộng 1
Nhà phân phối sử dụng combobox để load dữ liệu nhà phân phối từbảng NhaPhanPhoi
Trang 36Hàm GetMaNhaPP có chức năng lấy mã nhà phân phối trong bảngNhaPhanPhoi dựa vào tên của nhà phân phối đó Nếu tìm thấy dữ liệuphù hợp, hàm trả về mã Nhà Phân Phối tương ứng, còn không thì trả vềgiá trị mặc định.
Trang 376.3 Form Trang chủ (Quyền nhân viên)
6.4 Form Thanh toán
Form thanh toán kết nối cơ sở dữ liệu gồm mã sách,tên sách,tênkhách hàng,số lượng,và giá , in hóa đơn
Trang 38Đoạn mã này sử dụng vòng lặp foreach để duyệt qua các hàngtrong DataTable và thêm mã sách vào ComboBox Cụ thể, mỗi hàngtrong DataTable đều có một cột tên là "MaSach", đoạn mã sẽ lấy giá trịcủa cột này và thêm vào ComboBox.
Khi mục được chọn trong ComboBox thay đổi, đoạn mã sẽ lấy mãsách được chọn và sử dụng nó để lọc dataTable Đoạn mã sau đó sẽ hiểnthị mã sách, tên sách và đơn giá được chọn trong các hộp văn bản tươngứng
Xóa nội dung trong hộp văn bản