- Hệ thống cũng cần cung cấp tính năng thống kê để hiển thị thông tin tổng quan về số lượng sản phẩm, đơn nhập và đơn xuất, giúp người dùng dễ dàng theo dõi và quản lý hoạt động kinh do
Trang 1Giáo Viên Hướng Dẫn: Th.S Lê Thanh
Đề tài: Xây dựng chương trình
quản lý kho hàng điện tử
Trang 2
Chương I: Giới
Thiệu 1.1 Lí do chọn đề tài
Trong ngành công nghiệp máy tính, việc quản lý kho hàng linh kiện không chỉ là
nhiệm vụ cần thiết mà còn là yếu tố quyết định sự thành công của mỗi doanh
nghiệp Để đảm bảo rằng sản phẩm luôn sẵn sàng và được theo dõi một cách chính xác, việc áp dụng công nghệ điện thoại vào quản lý kho là không thể phủ nhận
Bằng cách sử dụng ứng dụng di động đơn giản nhưng hiệu quả, nhân viên có thể dễ dàng ghi nhận thông tin về hàng hóa, kiểm tra tồn kho và cập nhật dữ liệu một cách nhanh chóng từ bất kỳ đâu Điều này giúp giảm thiểu thời gian và công sức cần
thiết cho việc quản lý kho, từ đó tăng cường hiệu suất làm việc và đáng kể cải thiện trải nghiệm của khách hàng.
Trang 3Khái niệm về Java
Java được khởi đầu bởi James Gosling
và bạn đồng nghiệp
ở Sun MicroSystem năm
1991 Ban đầu Java được tạo ra nhằm mục đích viết phần mềm cho các sản phẩm gia dụng, và
lại từ Sun MicroSystem.
Java được tạo ra với tiêu
chí “Viết (code) một lần,
thực thi khắp nơi”
(Write Once, Run Anywhere – WORA) Chương trình phần mềm viết bằng Java có thể chạy trên mọi nền tảng (platform) khác nhau thông qua một môi trường thực thi với điều kiện có môi trường thực thi thích hợp hỗ trợ nền
tảng đó.
Trang 4Ngôn ngữ lập trình Java thuộc loại ngôn ngữ thông dịch Chính xác hơn, Java là loại ngôn ngữ vừa biên dịch vừa thông dịch Cụ thể như sau
Khi viết mã, hệ thống tạo ra một tệp java Khi biên dịch mã nguồn của chương trình sẽ được biên dịch ra mã byte
code Máy ảo Java (Java Virtual Machine) sẽ thông dịch mã byte code này thành machine code (hay native code) khi nhận được yêu cầu chạy chương trình
Cơ chế hoạt động của quá trình biên dịch và thông dịch của
Java
Trang 5Khi thực hiện một chương trình, máy ảo Java lần lượt thông dịch các chỉ thị dưới dạng Bytecode thành các chỉ thị dạng nhị phân của máy tính thực và thực thi thực sự chúng trên máy tính thực (còn gọi là khả năng khả chuyển).
Máy ảo thực tế đó là một chương trình thông dịch Vì thế các hệ điều hành khác nhau sẽ có các máy ảo khác nhau Để thực thi một ứng dụng của Java trên một hệ điều hành cụ thể, cần phải cài đặt máy ảo tương ứng cho hệ điều hành đó.JVM cung cấp môi trường thực thi cho chương trình Java (còn gọi là khả năng độc lập với nền)
Có nhiều JVM cho các nền tảng khác nhau chẳng hạn như: Windows, Liux, và Mac
Hình 2 Sơ đồ hoạt động của
JVM
Trang 6Hình 3 Các ứng dụng được phát triển sử dụng
Java
Trang 7Các phiên bản của Java
Java Enterprise Edition (Java EE) – Được xây
dựng trên nền tảng Java SE, giúp phát triển các ứng dụng web, các ứng dụng ở cấp doanh nghiệp…
nền tảng cho phép phát triển các ứng dụng nhúng vào các thiết bị điện tử như mobile…
Trang 81.3.1.5 Các thành phần của Java SE Platform
Gồm 2 thành phần:
JRE (Java Runtime Environment): cung cấp JVM (Java Virtual Machine) và thư viện được sử dụng để chạy chương
trình Java
JDK (Java Development Kit): được biết đến như bộ cung cụ phát triển Java, bao gồm: trình biên dịch và trình gỡ rối
được sử dụng để phát triển các ứng dụng Java
Hình 4 Các thành phần của Java SE
Platform
Trang 9Chương II: Phân tích và thiết kế hệ thống
2.3 Phân tích và thiết kế hệ thống
2.3.1 phân tích hệ thống
Yêu cầu chức năng:
- Hệ thống quản lý kho hàng cần hỗ trợ quản lý thông tin của các đối tượng như tài khoản, người dùng, khách hàng,
sản phẩm, hãng sản xuất, đơn nhập và đơn xuất
- Người dùng được cung cấp các chức năng quản lý như thêm, xoá, sửa thông tin của các đối tượng nêu trên, cũng
như tìm kiếm và xem chi tiết
- Hệ thống cũng cần cung cấp tính năng thống kê để hiển thị thông tin tổng quan về số lượng sản phẩm, đơn nhập và
đơn xuất, giúp người dùng dễ dàng theo dõi và quản lý hoạt động kinh doanh của kho hàng
Thực thể chính:
Tài khoản: Thông tin về các tài khoản người dùng của hệ thống
Người dùng: Các thông tin liên quan đến người sử dụng hệ thống quản lý kho hàng
Khách hàng: Thông tin về các khách hàng mua hàng từ kho
Sản phẩm: Các thông tin về sản phẩm được lưu trữ và quản lý trong kho
Hãng sản xuất: Thông tin về các hãng sản xuất cung cấp sản phẩm cho kho
Đơn nhập: Thông tin về các đơn hàng nhập hàng vào kho từ nhà cung cấp
Đơn xuất: Thông tin về các đơn hàng xuất hàng ra khỏi kho đến khách hàng
Trang 102.3.2 Thiết kế hệ thống
2.3.2.1 Tổng quan
Hình 5 Sơ đồ tổng quan chức năng hệ
thống
Trang 112.3.2.2 Các chức năng quản lý tài khoản
Hình 6 Sơ đồ chức năng quản lý tài khoản
Trang 122.3.2.3 Chức năng quản lý người dùng
Hình 7 Sơ đồ chức năng quản lý người dùng
Trang 132.3.2.4 Chức năng quản lý khách hàng
Hình 8 Sơ đồ chức năng quản lý khách hàng
Trang 142.3.2.5 Chức năng quản lý sản phẩm
Hình 9 Sơ đồ chức năng quản lý sản phẩm
Trang 152.3.2.6 Chức năng quản lý hãng sản xuất
Hình 10 Sơ đồ chức năng quản lý hãng sản xuất
Trang 162.3.2.7 Chức năng quản lý đơn nhập
Hình 11 Sơ đồ chức năng quản lý đơn nhập
Trang 172.3.2.8 Chức năng quản lý đơn xuất
Hình 12 Sơ đồ chức năng quản lý đơn xuất
Trang 182.4 Thiết kế cơ sở dữ liệu
2.4.1 Bảng nhân viên
Hình ảnh của nhân viên (dưới dạng dữ liệu nhị phân)
Trang 20Hình ảnh của sản phẩm (dưới dạng dữ liệu nhị phân)
đích đơn giản)
Trang 21Hệ điều hành của sản phẩm
Dung lượng pin của sản phẩm
Loại phụ kiện đi kèm với sản phẩm
Trang 232.4.7 Bảng chi tiết hóa đơn
maCTHD INTEGER PRIMARY KEY, AUTOINCREMENT Mã chi tiết hóa đơn (tự tăng, duy nhất)
HoaDon)
SanPham)
mục đích đơn giản)
Trang 24Các ô chứa thông tin: Giao diện có bốn ô chứa thông tin được thiết kế dưới dạng
LinearLayout.
Mỗi ô chứa một hình ảnh đại diện cho một loại hoạt động và một TextView để hiển thị thông tin liên quan.
Các ô này bao gồm:
"Sản Phẩm" (car_SP): Hiển thị số lượng sản phẩm, được đặt ở góc trái trên của giao diện.
"Khách Hàng" (car_KH): Hiển thị số lượng khách hàng, được đặt ở góc phải trên của giao diện.
"Đơn Nhập" (car_HDN): Hiển thị số lượng đơn nhập, được đặt dưới ô "Sản Phẩm".
"Đơn Xuất" (car_HDX): Hiển thị số lượng đơn xuất, được đặt dưới ô "Khách Hàng".
Thông tin doanh thu: Dưới các ô chứa thông tin, có một TextView (textView10) hiển thị
tiêu đề "Doanh thu" ở giữa màn hình, với màu cam nổi bật.
Dưới đó là một ConstraintLayout chứa các TextView hiển thị thông tin chi tiết về doanh thu, bao gồm:
Số hóa đơn (tv_soHD)
Số lượng bán (tv_SLBan)
Tổng tiền (tv_bank)
Mỗi TextView trong ConstraintLayout này được đặt ở một hàng ngang, có màu đen và có
kiểu chữ đậm.
Thiết kế và Kích thước: Các thành phần được định vị sử dụng ConstraintLayout để có thể
điều chỉnh tỷ lệ trên mọi loại màn hình.
Kích thước của các ô chứa thông tin được định nghĩa trong file dimens.xml để có thể dễ
dàng thay đổi.
Trang 252.5.2.2 Giao diện điều hướng chính activity_main
DrawerLayout: Là layout chính của giao diện, chứa toàn bộ nội dung của
activity, bao gồm cả nội dung chính và menu điều hướng.
Có thuộc tính fitsSystemWindows="true" để đảm bảo rằng nội dung sẽ
không bị che phủ bởi các phần tử giao diện hệ thống như thanh trạng thái hay thanh điều hướng.
Sử dụng tools:openDrawer="start" để mở menu điều hướng ở phía bên
trái khi mô phỏng trong Android Studio.
app_bar_main: Là một phần của nội dung chính của giao diện, được
include từ một layout khác (có thể là một toolbar hoặc một action bar).
Chiếm toàn bộ chiều rộng và chiều cao của DrawerLayout.
NavigationView: Là một thành phần của DrawerLayout, chứa các mục
menu điều hướng.
Được đặt bên trong DrawerLayout và có thuộc tính layout_gravity="start"
để đặt nó ở phía bên trái của giao diện.
Có thuộc tính fitsSystemWindows="true" để đảm bảo rằng nội dung của
nó không bị che phủ bởi các phần tử giao diện hệ thống.
Sử dụng app:headerLayout="@layout/nav_header_main" để chỉ định
layout cho phần header của NavigationView.
Sử dụng app:menu="@menu/activity_main_drawer" để chỉ định menu sẽ được hiển thị trong NavigationView.
Trang 26Thuộc tính tools:showIn: Xác định nơi mà layout này được hiển thị trong Design Editor của Android Studio, trong
trường hợp này là @layout/app_bar_main
Trang 272.5.2.6 Giao diện quản lý tài khoản
2.5.2.6.1 Giao diện thêm tài khoản
ConstraintLayout: Đây là gốc của cấu trúc giao diện, sử dụng
ConstraintLayout để xác định các quy tắc vị trí cho các phần tử con
TextInputLayouts: Đây là các phần tử để nhập văn bản với
tính năng định dạng và kiểm soát lỗi Mỗi TextInputLayout bao gồm:
EditText: Các trường để người dùng nhập thông tin
startIconDrawable: Biểu tượng bắt đầu bên trong trường nhập văn bản
endIconMode: Chế độ hiển thị biểu tượng cuối cùng, ở đây
được đặt thành clear_text để cho phép xóa văn bản.
LinearLayout: Được sử dụng để chứa một biểu tượng và một
văn bản bên cạnh nhau Trong trường hợp này, nó chứa một
biểu tượng và một văn bản để hiển thị mật khẩu mặc định cho tài khoản mới
ImageView và TextView: Dùng để hiển thị biểu tượng và văn bản trong LinearLayout
Margin và Padding: Sử dụng margin và padding để tạo khoảng cách giữa các phần tử và việc điều chỉnh kích thước
Trang 282.5.2.6.2 Giao diện chi tiết tài khoản
ConstraintLayout: Gốc của cấu trúc giao diện, sử dụng
ConstraintLayout để xác định các quy tắc vị trí cho các phần tử con
TextView: Được sử dụng để hiển thị các nhãn hoặc thông tin
về tài khoản, như "Tên tài khoản", "Số điện thoại", "Địa chỉ",
"Năm sinh", "Mật khẩu quên" Các TextView này thường có một phong cách và kích thước văn bản được xác định trong tệp values/dimens.xml
LinearLayout: Được sử dụng để chứa các thông tin cụ thể về
tài khoản, mỗi LinearLayout chứa một cặp nhãn và giá trị
tương ứng Các LinearLayout này có một nền trắng và được
xếp chồng lên nhau dọc theo chiều dọc
Button: Được sử dụng để hiển thị nút "Đặt lại mật khẩu", cho
phép người dùng thực hiện hành động liên quan đến mật khẩu Nút này có một màu nền và một văn bản trắng, có thể được tùy chỉnh bằng các thuộc tính như android:backgroundTint,
android:textColor, và android:textAllCaps
Trang 292.5.2.6.3 Giao diện chỉnh sửa tài khoản
ConstraintLayout: Gốc của cấu trúc giao diện, sử dụng
ConstraintLayout để xác định các quy tắc vị trí cho các phần tử con.
TextInputLayout và EditText: Được sử dụng để chứa
và chỉnh sửa các trường thông tin của tài khoản như Mã nhân viên, Họ tên, Số điện thoại, Tên tài khoản, Địa chỉ
và Năm sinh Mỗi TextInputLayout kèm theo một
EditText tương ứng để người dùng nhập dữ liệu.
startIconDrawable: Được sử dụng để hiển thị biểu
tượng bắt đầu của TextInputLayout, thường là một biểu tượng đại diện cho loại thông tin được nhập vào.
endIconMode: Xác định chế độ của biểu tượng kết thúc
của TextInputLayout, thường là một biểu tượng xóa dữ liệu đã nhập.
Trang 302.5.2.6.4 Giao diện danh sách tài khoản
ConstraintLayout: Gốc của cấu trúc giao diện, sử dụng
ConstraintLayout để xác định các quy tắc vị trí cho các phần
tử con
Toolbar: Được sử dụng để hiển thị thanh tiêu đề ở đầu trang,
cho phép người dùng tương tác với ứng dụng Trong trường hợp này, thanh Toolbar chứa một Spinner để chọn các tùy
chọn lọc và một biểu tượng collapse (hoặc back) ở góc trái
collapseIcon: Biểu tượng collapse (hoặc back) hiển thị bên
trái của thanh Toolbar
Spinner: Một thành phần Spinner cho phép người dùng chọn
các tùy chọn lọc từ danh sách
RecyclerView: Được sử dụng để hiển thị danh sách các tài
khoản RecyclerView này được đặt bên dưới thanh Toolbar
và được giới hạn bởi ràng buộc của ConstraintLayout, cho
phép nó mở rộng theo chiều ngang và chiều dọc của màn
hình
Trang 312.5.2.7 Giao diện quản lý người dùng
2.5.2.7.1 Giao diện chi tiết người dùng
ConstraintLayout: Gốc của cấu trúc giao diện, sử dụng ConstraintLayout để
xác định các quy tắc vị trí cho các phần tử con.
CircleImageView (imgNguoiDung): Một ImageView được tạo với thư viện
CircleImageView để hiển thị hình ảnh người dùng dưới dạng hình tròn Được đặt ở đầu trang.
ImageView (imgChonAnh): Hiển thị một biểu tượng máy ảnh Được đặt bên
cạnh CircleImageView để cho phép người dùng chọn hoặc chụp hình ảnh mới.
LinearLayout: Một layout horizontal chứa một TextView và một ImageView
TextView hiển thị một tiêu đề, trong khi ImageView hiển thị một biểu tượng chỉnh sửa thông tin người dùng.
LinearLayout: Chứa một TextView và một TextView khác để hiển thị thông
tin về họ và tên của người dùng.
LinearLayout Chứa một TextView và một TextView khác để hiển thị thông
tin về số điện thoại của người dùng.
LinearLayout: Chứa một TextView và một TextView khác để hiển thị thông
tin về địa chỉ của người dùng.
LinearLayout: Chứa một TextView và một TextView khác để hiển thị thông
tin về năm sinh của người dùng.
Button (btnChangePass): Để chuyển đến giao diện đổi mật khẩu.
Trang 322.5.2.7 Giao diện đổi mật khẩu
ConstraintLayout: Gốc của cấu trúc giao diện, sử dụng
ConstraintLayout để xác định các quy tắc vị trí cho các phần tử con
TextView: Hiển thị một văn bản nhắc nhở người dùng về việc
quên mật khẩu hoặc cần hỗ trợ Được đặt dưới các phần tử nhập mật khẩu
Button (btnReSetPassNguoiDung): Để người dùng có thể chọn
để thực hiện việc đặt lại mật khẩu Được đặt ở cuối trang
Trang 332.5.2.8 Giao diện quản lý sản phẩm 2.5.2.8.1 Giao diện thêm sản phẩm
Trang 342.5.2.8.2 Giao diện chi tiết sản phẩm
ScrollView: Đây là một thành phần UI cho phép người
dùng cuộn nếu nội dung vượt quá kích thước màn hình
ConstraintLayout: Đây là một loại Layout trong
Android cho phép bạn xác định các quan hệ giữa các
thành phần UI dựa trên ràng buộc
ImageView (imgSanPhamDeltail): Đây là nơi hiển thị
hình ảnh của sản phẩm
LinearLayouts: Có nhiều LinearLayouts để hiển thị
thông tin chi tiết của sản phẩm, bao gồm tên sản phẩm, hãng sản xuất, loại sản phẩm, tình trạng, giá tiền, trạng thái, bộ nhớ, RAM, chip, hệ điều hành, màn hình, pin,
cổng sạc, loại phụ kiện, và mô tả sản phẩm
TextViews: Các TextViews được sử dụng để hiển thị các
nhãn và thông tin chi tiết của sản phẩm
Kích thước và màu sắc: Có sự sử dụng các kích thước
và màu sắc được định nghĩa trong tệp dimens.xml và
colors.xml
Trang 352.5.2.8.3 Giao diện chỉnh sửa sản phẩm
ScrollView: Đây là một View Group trong Android được
sử dụng để cuộn nếu nội dung vượt quá kích thước màn
hình.
ConstraintLayout: Đây là một loại Layout trong Android,
cho phép bạn xác định các quan hệ giữa các View trong
giao diện một cách linh hoạt bằng cách sử dụng các ràng
buộc (constraints).
ImageView: Hiển thị hình ảnh của sản phẩm Có một
ImageView để hiển thị hình ảnh và một ImageView khác để chọn hình ảnh mới.
TextInputLayout và EditText: Được sử dụng để nhập
thông tin về sản phẩm như mã sản phẩm, tên sản phẩm, giá tiền, bộ nhớ, RAM, chipset, hệ điều hành, màn hình, pin,
loại, loại phụ kiện và mô tả sản phẩm.
TextView: Được sử dụng để hiển thị nhãn (label) cho các
trường nhập liệu hoặc để hiển thị các thông tin như loại sản phẩm và trạng thái.
RadioGroup và RadioButton: Sử dụng để chọn loại sản phẩm
(điện thoại hoặc phụ kiện) và trạng thái của sản phẩm (cũ, like new, mới), cũng như trạng thái trước khi bán (chưa làm kí, đã làm kí)
Trang 362.5.2.8.4 Giao diện danh sách sản phẩm
ConstraintLayout: Là một ViewGroup trong Android được
sử dụng để xây dựng giao diện bằng cách đặt các thành
phần UI (View) dưới dạng ràng buộc với nhau.
Toolbar: Toolbar được sử dụng để hiển thị tiêu đề của màn
hình danh sách sản phẩm và các tùy chọn lọc.
ImageView: Hiển thị một biểu tượng (icon) để mở tùy chọn
lọc sản phẩm.
Spinner: Là một dropdown menu cho phép người dùng
chọn một tùy chọn lọc từ danh sách các tùy chọn.
RecyclerView: RecyclerView được sử dụng để hiển thị
danh sách sản phẩm.