LỜI MỞ ĐẦUTrong bối cảnh nền kinh tế ngày càng phát triển, việc quản lý kho hàng mộtcách hiệu quả là yếu tố quan trọng giúp các doanh nghiệp tối ưu hóa chi phí, nâng cao năng suất và đáp
Trang 1TRƯỜNG ĐẠI HỌC KIẾN TRÚC ĐÀ NẴNG KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO KẾT THÚC MÔN LẬP TRÌNH JAVA NÂNG CAO
Đề tài: Thiết kế và phát triển một ứng dụng quản lý kho hàng
Giảng viên hướng dẫn: TS Lý Quỳnh Trân
Lớp: 22CT2
Sinh viên thực hiện:
Lê Tấn Thống
Lê Chí Thanh Huỳnh Tỉnh Trương Minh Thuận Trương Quốc Trung
Trang 2cô đã giúp chúng em vượt qua nhiều khó khăn, hoàn thiện đồ án này.
Chúng em cũng xin gửi lời cảm ơn đến Thầy, Cô trong bộ môn Java nângcao đã tạo điều kiện tốt nhất cho chúng em trong quá trình học tập và nghiêncứu
Do kiến thức và thời gian có hạn, đồ án không thể tránh khỏi những thiếusót Chúng em rất mong nhận được sự góp ý từ Cô để đồ án được hoàn thiệnhơn
Với lòng biết ơn sâu sắc nhất, chúng em xin gửi đến quý Thầy, Cô ở KhoaCông nghệ thông tin – Trường Đại học Kiến Trúc đã truyền đạt vốn kiến thứcquý báu cho chúng em trong suốt thời gian học tập tại trường
Một lần nữa, chúng em xin chân thành cảm ơn!
Nhóm sinh viên
Lê Tấn Thống
Lê Chí ThanhHuỳnh TỉnhTrương Minh ThuậnTrương Quốc Trung
Trang 3MỤC LỤC
LỜI MỞ ĐẦU 3
CHƯƠNG 1 KHẢO SÁT THỰC TRẠNG HỆ THỐNG 4
1.1 Khảo sát thực trạng 4
1.2 Phát biểu bài toán/đề tài/dự án 5
1.3 Đề xuất các giải pháp kiến nghị để giải quyết bài toán/đề tài/dự án.6 1.4 Tiền xác định các yếu tố liên quan với dự án 6
CHƯƠNG 2 PHÂN TÍCH, THIẾT KẾ VÀ TRIỂN KHAI THỰC HIỆN WEBSITE BÁN HÀNG ONLINE 8
2.1 Tóm lược các nội dung quan trọng cần thực hiện 8
2.2 Phân tích và thiết kế hệ thống 8
2.2.1 Tác nhân của hệ thống 8
2.3 Thiết kế cơ sở database với MySQL Server 10
CHƯƠNG 3 KHÁI QUÁT CÔNG NGHỆ SỬ DỤNG 38
3.1 Hibernate framework? 38
3.1.1 Hibernate framework là gì? 38
3.1.2 Lợi ích khi sử dụng Hibernate framework 38
3.2 JavaFX 39
3.2.1 JavaFX là gì? 39
3.2.2 Cấu trúc của JavaFX 39
CHƯƠNG 4 ĐÁNH GIÁ KẾT QUẢ ĐẠT ĐƯỢC 44
4.1 Demo code và giao diện sản phẩm 44
4.1.1 Giao diện sản phẩm: 44
4.1.2 Một số hình ảnh của source code: 52
Trang 4CHƯƠNG 5 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 60 5.1 Thực hiện được 60 5.2 Hướng phát triển 60
Trang 5LỜI MỞ ĐẦU
Trong bối cảnh nền kinh tế ngày càng phát triển, việc quản lý kho hàng mộtcách hiệu quả là yếu tố quan trọng giúp các doanh nghiệp tối ưu hóa chi phí, nâng cao năng suất và đáp ứng kịp thời nhu cầu của thị trường Tuy nhiên, nhiềudoanh nghiệp hiện nay vẫn gặp khó khăn trong việc theo dõi, kiểm soát hàng hóa và xử lý dữ liệu kho bãi do phụ thuộc vào các phương pháp quản lý truyền thống hoặc thiếu hệ thống quản lý tự động hóa hiện đại
Xuất phát từ thực tế đó, nhóm chúng em đã lựa chọn đề tài "Xây dựng hệ thống quản lý kho hàng" làm nội dung nghiên cứu Mục tiêu chính của đề tài
là phát triển một hệ thống phần mềm giúp các doanh nghiệp dễ dàng quản lý thông tin nhập, xuất, tồn kho cũng như hỗ trợ quá trình lập báo cáo nhanh chóng, chính xác
Để thực hiện đề tài, chúng em đã áp dụng các kiến thức chuyên môn về lập trình, cơ sở dữ liệu, phân tích và thiết kế hệ thống thông tin, đồng thời kết hợp các phương pháp nghiên cứu thực tiễn nhằm đảm bảo tính ứng dụng cao cho hệ thống
Chúng em hy vọng rằng sản phẩm của mình sẽ không chỉ giải quyết được các vấn đề trong quản lý kho hàng mà còn mở ra tiềm năng phát triển thêm nhiều tính năng phù hợp với yêu cầu thực tế của các doanh nghiệp
Chúng em xin chân thành cảm ơn quý Thầy/Cô đã tận tình hướng dẫn và đồng hành trong suốt quá trình thực hiện đề tài Đồng thời, xin gửi lời cảm ơn đến gia đình và bạn bè đã luôn ủng hộ và động viên Mặc dù đã cố gắng hết mình, nhưng sản phẩm chắc chắn không tránh khỏi những hạn chế Chúng em rất mong nhận được sự góp ý quý báu từ quý Thầy/Cô và các bạn để đồ án được hoàn thiện hơn
Trang 6CHƯƠNG 1 KHẢO SÁT THỰC TRẠNG HỆ THỐNG 1.1 Khảo sát thực trạng
Quản lý kho hàng là một trong những hoạt động quan trọng đối với cácdoanh nghiệp trong việc vận hành sản xuất và kinh doanh Tuy nhiên, trong thực
tế, nhiều doanh nghiệp vẫn đối mặt với các thách thức trong việc quản lý khohàng hiệu quả, đặc biệt là trong bối cảnh chuyển đổi số đang diễn ra mạnh mẽ
Phương pháp quản lý kho hàng hiện nay
Quản lý thủ công:
Phương pháp này phổ biến ở các doanh nghiệp vừa và nhỏ Dữ liệuhàng hóa được ghi chép bằng tay hoặc lưu trữ trên các bảng tínhnhư Excel Mặc dù đơn giản và dễ thực hiện, cách quản lý này dễgặp phải các vấn đề như sai sót số liệu, mất mát thông tin, khó khăntrong việc truy xuất dữ liệu, và không hiệu quả khi quy mô khohàng mở rộng
Quảng lý bằng phần mềm:
Một số doanh nghiệp đã áp dụng các hệ thống quản lý kho hàng(Warehouse Management System - WMS) để tự động hóa quy trìnhnhập, xuất, và kiểm kê hàng hóa Các phần mềm này cho phépdoanh nghiệp kiểm soát số lượng, vị trí hàng hóa trong kho, và lậpbáo cáo nhanh chóng Tuy nhiên, chi phí triển khai và duy trì các hệthống này vẫn là trở ngại đối với các doanh nghiệp nhỏ
Những vấn đề thường gạp trong quản lý kho hàng:
● Sai sót trong nhập liệu và kiểm kê: Khi sử dụng phương pháp thủ công,việc ghi chép không chính xác dẫn đến tình trạng dư thừa hoặc thiếu hụthàng hóa
Trang 7● Khó khăn trong quản lý hàng thồn kho: Nhiều doanh nghiệp không nắm
rõ số lượng và tình trạng của hàng tồn kho, dẫn đến việc không tối ưu hóanguồn lực hoặc bị tổn thất do hàng hóa hết hạn hoặc hư hỏng
● Thiếu tính đồ bộ dữ liệu: Trong các doanh nghiệp lớn, việc quản lý khohàng tại nhiều chi nhánh có thể gặp khó khăn khi không có một hệ thốngtrung tâm để đồng bộ thông tin
● Chi phí quản lý cao: Việc duy trì hệ thống kho hàng, kiểm kê thủ cônghoặc sử dụng các giải pháp không phù hợp làm gia tăng chi phí vận hành
1.2 Phát biểu bài toán/đề tài/dự án
Đề tài “Phần mềm quản lý kho hàng” tập trung xây dựng một ứng dụnghoạt động trên các nền tảng web và khởi chạy tốt trên tất cả các nền tảng hệ điềuhành hỗ trợ chạy các trình duyệt cho phép như Chrome hay Firefox, với mụcđích chính là cho phép người quản lý ứng dụng (admin) và người dùng (user)nói chung có quyền được quản lý mua bán hàng thông qua hình thức online mộtcách thuận tiện và tự động hoá nhất có thể
Các chức năng chính của ứng dụng:
- Đăng nhập tài khoản quản lý
- Đăng nhập tài khoản người dùng
- Người dùng đăng ký
- Tìm kiếm và xem thông tin về các sản phẩm có sẵn
- Đặt, cập nhật, review, huỷ các đơn hàng (bookings) cho sản phẩmmong muốn
- Chỉnh sửa và cập nhật hồ sơ người dùng
1.3 Đề xuất các giải pháp kiến nghị để giải quyết bài toán/đề tài/dự án
Xây dựng và triển khai giao diện: sử dụng các giao diện có sẵn ở bên thứ3
Trang 8Ứng dụng desktop sử dụng JavaFX và Hibernate Ngôn ngữ sử dụng:Java, JSP.
Các mục khác cần chuẩn bị: Máy tính hoặc laptop đi kèm để test one với máy deploy chính
one-by-1.4 Tiền xác định các yếu tố liên quan với dự án
Các tác nhân hay các nhân tố chính sử dụng trang web chính: Admin(quản trị viên) và User (người dùng)
- Các chức năng thiết yếu của Admin bao gồm:
● Đăng nhập
● Quản lý sản phẩm: thêm, sửa, xóa sản phẩm
● Quản lý các User: xoá các User nếu thấy thực sự cần thiết
● Quản lý danh mục sản phầm: thêm, sửa, xoá danh mục sản phẩm
- Các chức năng thiết yếu của User bao gồm:
● Đăng nhập/ đăng ký
● Xem, chỉnh sửa hồ sơ người dùng
● Xem thông tin sản phẩm
● Tìm kiếm và các thông tin về sản phẩm
● Mua sản phẩm
● Lập hoá đơn
● Thanh toán
Trang 9CHƯƠNG 2 PHÂN TÍCH, THIẾT KẾ VÀ TRIỂN KHAI THỰC HIỆN
PHẦM MỀM QUẢN LÝ KHO HÀNG 2.1 Tóm lược các nội dung quan trọng cần thực hiện
- Phân tích thiết kế hệ thống ban đầu cho ứng dụng.
- Phác thảo giao diện từ bên thứ ba và chỉnh sửa giao diện UI/UX phù
hợp
- Thiết kế kiến trúc chung cho ứng dụng sử dụng các mô hình MVC hoặc
MVVM hoặc hướng tiếp cận sử dụng Servlet
- Liệt kê & xây dựng tương tác các chức năng chính, tương tác chính với
database trong MySQL
- Code giao diện UI/UX sử dụng JavaFX.
- Tiến hành apply các data tương ứng với các logic của project thông qua
mô hình MVC
- Tiến ành apply các logic tương ứng với UI của project.
- Chạy thử trên localhost và các máy tính khác so sánh kết quả.
- Kiểm thử & fix bug (nếu có).
- Deloy sản phẩm (deploy với heroku, CI/CD) (Hướng phát triển sau này) 2.2 Phân tích và thiết kế hệ thống
2.2.1 Tác nhân của hệ thống
- Admin: là tác nhân có vai trò chủ đạo trong cả hệ thống của trang web, làngười quản lý và theo dõi mọi diễn biến và hoạt động trên hệ thống, thực hiệnđược hầu như tất cả các chức năng của hệ thống
Các chức năng của trang web mua bán hàng online:
Đăng nhập: cho phép admin
Thêm sản phẩm: cho phép admin thêm sản phẩm vào hệ thống
Xóa sản phẩm: cho phép admin xóa các sản phẩm khỏi hệ thống
Trang 10 Cập nhật sản phẩm: cho phép admin cập nhật lại thông tin sản phẩm
trên hệ thống
Thêm sản phẩm: cho phép khách hàng chọn để lưu các sản phẩm
mình yêu thích vào giỏ hàng
Xem chi tiết sản phẩm: khách hàng có thể xem chi tiết các sản phẩm.
2.3 Thiết kế cơ sở database với MySQL Server:
Trang 11Table hanghoa:
Table user:
Table user_hanghoa:
Trang 12CHƯƠNG 3 KHÁI QUÁT CÔNG NGHỆ SỬ DỤNG
3.1 Hibernate framework?
3.1.1 Hibernate framework là gì?
Hibernate framework là một giải pháp ORM (Object Relational Mapping)
mã nguồn mở, gọn nhẹ Hibernate giúp đơn giản hoá sự phát triển của ứng dụngjava để tương tác với cơ sở dữ liệu
Tool ORM giúp đơn giản hoá việc tạo ra dữ liệu, thao tác dữ liệu và truycập dữ liệu Đó là một kỹ thuật lập trình để ánh xạ đối tượng vào dữ liệu đượclưu trữ trong cơ sở dữ liệu
Các tool ORM sử dụng JDBC API để tương tác với cơ sở dữ liệu
3.1.2 Lợi ích khi sử dụng Hibernate framework
Hibernate Framework có các lợi ích như dưới đây:
1 Mã nguồn mở và nhẹ: Hibernate Framework là mã nguồn mở có giấy
phép LGPL và nhẹ
2 Hiệu suất nhanh: Hiệu suất của Hibernate Framework là nhanh bởi vì
bộ nhớ cache được sử dụng trong nội bộ Hibernate Framework Có hai loại bộnhớ cache trong Hibernate Framework, gồm bộ nhớ cache cấp một và bộ nhớcache cấp hai Bộ nhớ cache cấp một được bật bằng lệnh mặc định
3 Truy vấn cơ sở dữ liệu độc lập: HQL (Hibernate Query Language) là
phiên bản hướng đối tượng của SQL Nó tạo ra các truy vấn cơ sở dữ liệu độclập Vì vậy, bạn không cần phải viết các truy vấn cơ sở dữ liệu cụ thể TrướcHibernate, nếu dự án có cơ sở dữ liệu bị thay đổi, chúng ta cần phải thay đổitruy vấn SQL dẫn đến sự cố bảo trì
Trang 134 Tạo bảng tự động: Hibernate framework cung cấp phương tiện để tạo
ra các bảng cơ sở dữ liệu tự động Vì vậy, không cần phải tạo ra các bảng trong
cơ sở dữ liệu bằng tay
5 Đơn giản lệnh join phức tạp: Có thể lấy dữ liệu từ nhiều bảng một
cách dễ dàng với Hibernate framework
6 Cung cấp thống kê truy vấn và trạng thái cơ sở dữ liệu: Hibernate
hỗ trợ bộ nhớ cache truy vấn và cung cấp số liệu thống kê về truy vấn và trạngthái cơ sở dữ liệu
3.2 JavaFX
3.2.1 JavaFX là gì?
JavaFX là một thư viện sử dụng trong ngôn ngữ lập trình java, dùng đểphát triển và phân phối các ưng dụng chạy trên máy tính để bàn và các ứng dụngRich Internet Applications (RIA) chạy trên nhiều thiết bị khác nhau
Hiểu một cách cụ thể, JavaFX là một framework bao gồm các gói dồ họa,công cụ hỗ trọ cho người lập trình có thể tạo, kiểm tra, gỡ lỗi và triển khai ứngdụng trên nhiều loại thiết bị như: Điện thoại di động, máy tính để bàn,
3.2.2 Cấu trúc JavaFX
Stage (Sân khấu)
Giai đoạn (một cửa số) chứa tất cả các đối tượng của ứng dụng JavaFX
Nó được đại diện bởi lớp Stage của gói javafx.stage Stage chính được tạo bởichính nền tảng của nó Đối tượng stage đã tạo sẽ được truyền như một đối sốcho phương thức start() của lớp Application (được giải thích trong phần tiếptheo)
Trang 14Mỗi sân khấu có hai tham số xác định vị trí của nó là Width và Height Nóđược chia thành Content Area (Khu vực nội dung) và Decoration (Trang trí)(Thanh tiêu đề và Đường viền).
Có năm loại sân khấu có sẵn:
Một bối cảnh tượng trưng cho nội dung vật lý của một ứng dụng JavaFX
Nó chứa tất cả nội dung của một biểu đồ cảnh Lớp Scene của gói javafx.sceneđại diện cho đối tượng cảnh Tại một thể hiện, đối tượng cảnh chỉ được thêmvào một giai đoạn
Bạn có thể tạo một cảnh bằng cách khởi tạo Lớp Scene Bạn có thể chọn kíchthước của cảnh bằng cách truyền kích thước của nó (chiều cao và chiều rộng)cùng với nút gốc tới hàm tạo của nó
Scene Graph và Node
Một đồ thị cảnh là một cây giống như cấu trúc dữ liệu (thứ bậc) thể hiện nộidung của một cảnh Ngược lại, một nút là một đối tượng trực quan/đồ họa củabiểu đồ cảnh
Trang 15Các vùng chứa (Ngân bố cục) chẳng hạn như Border Pane, Grid Pane, FlowPane, v.v.
Các phần tử media như Đối tượng Âm thanh, Video và Hình ảnh
Lớp Node của gói javafx.scene đại diện cho một nút trong JavaFX, lớp này làsiêu lớp của tất cả các nút
Như đã thảo luận trước đó, một nút có ba loại:
Nút gốc - Đồ thị cảnh đầu tiên được gọi là nút gốc
Nút nhành/Nút cha - Nút có các nút con được gọi là nút nhành/nút cha Lớp trừutượng có tên là Parent của gói javafx.scene là lớp cơ sở của tất cả các nút cha vàcác nút cha đó sẽ
thuộc các loại sau:
• Nhôm - Nút nhôm là một nút tập hợp có chứa danh sách các nút con Bất cứkhi nào nút nhóm được hiển thị, tất cả các nút con của nó được hiển thị theo thứ
tự Mọi biến đổi, trạng thái hiệu ứng được áp dụng trên nhóm sẽ được áp dụngcho tất cả các nút con
• Vùng - Đây là lớp cơ sở của tất cả các Điều khiển giao diện người dùng dựatrên Node JavaFX, chẳng hạn như Biểu đồ, Ngân và Điều khiển
• WebView - Nút này quản lý công cụ web và hiển thị nội dung của nó.Nút là - Nút không có nút con được gọi là nút là Ví dụ, Rectangle, Ellipse, Box,ImageView, MediaView là các ví dụ về các nút lá
Bắt buộc phải chuyển nút gốc vào đồ thị cảnh Nếu Nhóm được chuyển làm gốc,tất cả các nút sẽ được cắt bớt vào cảnh và bất kỳ thay đổi nào về kích thước củacảnh sẽ không ảnh hưởng
đến bố cục của cảnh
Trang 163.2.3 Các lợi ích của JavaFX là gì?
Giao diện người dùng đẹp mắt và tương tác cao
Đa nền tảng và tương thích ngược với Swing
Hỗ trợ các hiệu ứng đồ họa và hoạt ảnh phức tạp
Công cụ và thư viện mạnh mẽ để xây dựng ứng dụng phong phú
Tích hợp tốt với ngôn ngữ Java và các thư viện Java
CHƯƠNG 4 ĐÁNH GIÁ KẾT QUẢ ĐẠT ĐƯỢC
4.1 Demo code và giao diện sản phẩm
4.1.1 Giao diện sản phẩm:
Trang chủ:
Trang 17Trang chủ khi người dùng đăng nhập thành công:
Giao diện sản phẩm có sẵn:
Trang 18Giao diện nhập và xuất kho:
4.1.2 Một số hình ảnh của source code:
Login:
Trang 19Giao diện quản lý:
Hóa đơn:
Trang 20CHƯƠNG 5 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
5.1 Thực hiện được
Đầu tiên, nhóm chúng em đã làm được những việc như sau:
Khảo sát thực trạng các website hiện nay
Phát biểu được bài toán
Xây dựng được các biểu đồ như: Biểu đồ Usecase, biểu đồ lớp, biểu đồtuần tự và biểu đồ hoạt động
Xây dựng được giao diện và các tính năng cơ bản của trang web