You are on page 1of 81

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP. HỒ CHÍ MINH


VIỆN CÔNG NGHỆ VIỆT – NHẬT

ĐỒ ÁN TỐT NGHIỆP

WEB BÁN HÀNG LINH KIỆN ĐIỆN TỬ


CHO CÔNG TY HYT

Ngành: CÔNG NGHỆ THÔNG TIN

Giảng viên hướng dẫn : ThS. Nguyễn Thanh Tùng


Sinh viên thực hiện :
Phạm Phúc Thịnh 1811063154 18DTHJB1
Lê Huỳnh Ý 1811061247 18DTHJB1
Lê Thành Hậu 1811062932 18DTHJB1

TP. Hồ Chí Minh, 2023

i
LỜI CAM ĐOAN
Tôi xin cam đoan đồ án trên là công trình nghiên cứu của nhóm dưới sự hướng
dẫn của ThS. Nguyễn Thanh Tùng. Mọi thứ được dựa trên sự cố gắng cũng như sự nỗ
lực không ngừng của nhóm với sự giúp đỡ tận tình từ thầy Tùng.
TP. Hồ Chí Minh, ngày 23 tháng 5 năm 2023
Sinh viên thực hiện

ii
LỜI CẢM ƠN
Lời đầu tiên nhóm em xin gửi lời cảm ơn đến nhà trường vì đã tạo điều kiện cho
nhóm thực hiện đồ án tốt nghiệp. Qua đó, em cũng xin được phép cảm ơn thầy ThS.
Nguyễn Thanh Tùng – giảng viên của Trường Đại Học Công Nghệ TP.HCM đã hướng
dẫn nhóm tận tình vì thầy đã đưa ra những khía cạnh của đồ án mà chúng em còn sót.
Việc tìm hướng đi tiếp theo cho đồ án là điều không dễ dàng vì nó phải cung cấp cho
khách hàng một sản phẩm tốt thì thầy Tùng đã tạo ra hướng đi cho nhóm để tiếp tục
làm. Website bán hang là đề tài đã có nhiều người sử dụng nhưng thầy vẫn hướng dẫn
chi tiết để tụi em chỉnh sửa và hoàn thiện hết những thứ cần thiết cho đề tài.
Trong quá trình thực hiện đề tài, việc đi tìm yêu cầu của bài toán có đôi chút khó
khăn khiến cả nhóm mất thời gian nhưng cũng đã cố gắng để hoàn thành.
Ý kiến đóng góp của thầy đã giúp em nhận ra những thiếu sót trong đề tài này và
đồng thời giúp em hiểu ra được tầm quan trọng của việc đi tìm yêu cầu của bài toán.
Qua đó, nhóm có thể tích lũy nhiều kiến thức và kinh nghiệm trên hành trình năm cuối
này và cả đi làm.
Nhóm em xin chân thành cảm ơn.
TP.HCM, ngày 23 tháng 5 năm 2023
Sinh viên

iii
MỤC LỤC
LỜI CAM ĐOAN ........................................................................................................ii
LỜI CẢM ƠN ........................................................................................................... iii
MỤC LỤC iv
DANH MỤC CÁC BẢNG ......................................................................................... vii
TÓM TẮT NỘI DUNG BÁO CÁO ............................................................................. x
LỜI MỞ ĐẦU ............................................................................................................. 1
CHƯƠNG 1. MÔ TẢ ĐỀ TÀI ..................................................................................... 3
1.1. Khảo sát ....................................................................................................... 3
1.2. Mục tiêu đề tài ............................................................................................. 4
1.3. Mô tả nghiệp vụ ........................................................................................... 4
1.4. Các chức năng.............................................................................................. 5
CHƯƠNG 2. CÔNG NGHỆ SỬ DỤNG ..................................................................... 7
2.1. Spring là gì? ................................................................................................. 7
2.2. Java IDE ...................................................................................................... 9
2.3. MySQL ....................................................................................................... 10
2.4. jQuery và bootstrap .................................................................................. 10
CHƯƠNG 3. NGHIỆP VỤ ....................................................................................... 12
3.1. Usecase tổng quát ...................................................................................... 12
3.2. Phân rã usecase.......................................................................................... 12
3.3. Đặc tả usecase ............................................................................................ 19
3.4. Sơ đồ hoạt động ......................................................................................... 25
CHƯƠNG 4. MÔ HÌNH DỮ LIỆU .......................................................................... 31
4.1. Mô hình quan hệ dữ liệu ........................................................................... 31
4.2. Danh sách các bảng ................................................................................... 32
4.3. Thiết kế chi tiết CSDL ............................................................................... 33
CHƯƠNG 5. CHỨC NĂNG VÀ QUÁ TRÌNH HÌNH THÀNH ............................... 44
5.1. Cấu hình..................................................................................................... 44
5.1.1. Công cụ hỗ trợ ......................................................................................... 44
5.1.2. Tổ chức Source ........................................................................................ 44
5.1.3. Thư viện hỗ trợ ........................................................................................ 45
5.2. Khởi tạo ..................................................................................................... 48
iv
5.2.1. Cấu hình Source Common ........................................................................ 48
5.2.2. Cấu hình Source Admin (BackEnd) .......................................................... 49
5.2.3. Cấu hình Source Client (FrontEnd) ........................................................... 50
5.2.4. Cấu hình Pagination, tìm kiếm, sort ......................................................... 51
5.3. Thực hiện hóa chức năng và phi chức năng ............................................. 51
5.3.1 Các chức năng chính và phổ biến ............................................................. 51
5.3.2. Các chức năng riêng biệt .......................................................................... 55
5.3.3. Phi chức năng .......................................................................................... 68
CHƯƠNG 6. KẾT LUẬN .......................................................................................... 70
6.1. Đánh giá ..................................................................................................... 70
6.1.1. Ưu điểm ................................................................................................... 70
6.1.2. Nhược điểm ............................................................................................. 70
6.2. Hướng phát triển mở rộng đề tài .............................................................. 70
6.3. Kết luận chung ........................................................................................... 70
TÀI LIỆU THAM KHẢO.................................................................................... 71

v
Danh mục từ viết tắt

Từ viết tắt Cụm từ đầy đủ


CSV Comma Separated Values
PDF Portable Document Format
JPA Java Persitent API
MAC Media Access Control

vi
DANH MỤC CÁC BẢNG
Hình 1. Dưới đây là kiến trúc tổng thể của Spring Framework ..................................... 8
Hình 2. Spring và thymeleaf ........................................................................................ 9
Hình 3. Java IDE ......................................................................................................... 9
Hình 4. MySQL ......................................................................................................... 10
Hình 5. jQuery và bootstrap ....................................................................................... 10
Hình 6. HTML, CSS, Java, .... ................................................................................... 11
Hình 7. Usecase tổng quát.......................................................................................... 12
Hình 8. Phân rã use case “Quản lý mật khẩu” ............................................................ 12
Hình 9. Phân rã use case “Quản lý địa chỉ” ................................................................ 13
Hình 10. Phân rã use case “Quản lý báo cáo bán hàng” .............................................. 13
Hình 11. Phân rã use case “Quản lý tin tức” ............................................................... 14
Hình 12. Phân rã use case “Quản lý thông báo” ......................................................... 14
Hình 13. Phân rã use case “Quản lý ảnh quảng cáo” .................................................. 15
Hình 14. Phân rã use case “Quản lý sản phẩm” .......................................................... 15
Hình 15. Phân rã use case “Quản lý thương hiệu” ...................................................... 16
Hình 16. Phân rã use case “Quản lý khu vực giao hàng” ............................................ 16
Hình 17. Phân rã use case “Quản lý khách hàng” ....................................................... 17
Hình 18. Phân rã use case “Quản lý đơn hàng” .......................................................... 17
Hình 19. Phân rã use case “Quản lý danh mục sản phẩm” .......................................... 18
Hình 20. Phân rã use case “Quản lý nhân viên” ......................................................... 18
Hình 21. Mô hình quan hệ dữ liệu .............................................................................. 31
Hình 22. bảng thiết kế database của setting ................................................................ 33
Hình 23. bảng thiết kế database của currencies .......................................................... 33
Hình 24. bảng thiết kế database của Backup .............................................................. 34
Hình 25. bảng thiết kế database của Countries ........................................................... 34
Hình 26. bảng thiết kế database của states .................................................................. 34
Hình 27.bảng thiết kế database của client_info .......................................................... 34
Hình 28. bảng thiết kế database của Users ................................................................. 35
Hình 29.bảng thiết kế database của users_roles .......................................................... 35
Hình 30. bảng thiết kế database của Roles ................................................................. 35
Hình 31. bảng thiết kế database của Customers .......................................................... 36
vii
Hình 32.bảng thiết kế database của customer_activity ............................................... 36
Hình 33. bảng thiết kế database của Brands ............................................................... 36
Hình 34. bảng thiết kế database của brands_categories .............................................. 37
Hình 35. bảng thiết kế database của Categories .......................................................... 37
Hình 36. bảng thiết kế database của Products ............................................................. 37
Hình 37. bảng thiết kế database của product_images ................................................. 38
Hình 38. bảng thiết kế database của product_details .................................................. 38
Hình 39. bảng thiết kế database của cart_items .......................................................... 38
Hình 40. bảng thiết kế database của orders................................................................. 39
Hình 41. bảng thiết kế database của order_track ........................................................ 39
Hình 42. bảng thiết kế database của order_details ...................................................... 40
Hình 43. bảng thiết kế database của shipping_rates .................................................... 40
Hình 44. bảng thiết kế database của comments .......................................................... 41
Hình 45. bảng thiết kế database của comment_replies................................................ 41
Hình 46. bảng thiết kế database của board ................................................................. 42
Hình 47. bảng thiết kế database của Notice ................................................................ 42
Hình 48. bảng thiết kế database của Slider ................................................................. 42
Hình 49. bảng thiết kế database của Addresses .......................................................... 43
Hình 50. Cấu trúc tổ chức Source theo cây. Thể hiện bởi sơ đồ sau đây ..................... 45
Hình 51. Tạo quản trị viên trong phần admin ............................................................. 51
Hình 52. Tất cả nhân viên đã được có ........................................................................ 52
Hình 53. Khi click vào icon sửa sẽ trả lại giao diện giống như mới tạo admin mới .... 53
Hình 54. Bấm vào nút xóa nhân viên nếu muốn xóa nhân viên nào đó ....................... 53
Hình 55. Giao diện quản lý nhân viên ........................................................................ 54
Hình 56. Giao diện xuất file ....................................................................................... 54
Hình 57. Thống kê được thể hiện theo ngày tháng ..................................................... 56
Hình 58. Thống kê được thể hiện theo danh mục ....................................................... 56
Hình 59. Thống kê theo sản phẩm .............................................................................. 57
Hình 60. Giao diện nút sao lưu .................................................................................. 57
Hình 61. Giao diện option sao lưu dữ liệu .................................................................. 58
Hình 62. Giao diện download dữ liệu đã lưu lại trong mySQL ................................... 58
Hình 63. Giao diện cập đăng ký thông tin tài khoản ................................................... 59
viii
Hình 64. Hoàn tất cập đăng ký tin tài khoản............................................................... 60
Hình 65. Đã gửi mail xác nhận để kích hoạt ............................................................... 60
Hình 66.Giao diện khi đã đăng ký tài khoản thành công ............................................ 61
Hình 67. Giao diện quên mật khẩu ............................................................................. 61
Hình 68. Giao diện quên mật khẩu ............................................................................. 61
Hình 69. Sau đó tại Gmail của khách hàng, mở hộp thư yêu cầu thay đổi mật khẩu ... 62
Hình 70. Giao diện nhập mật khẩu muốn đổi ............................................................. 62
Hình 71. Giao diện của sản phẩm............................................................................... 63
Hình 72. Đã thêm sản phẩm vào giỏ hàng thành công ................................................ 63
Hình 73. Giao diện giỏ hàng ...................................................................................... 64
Hình 74. Giao diện chọn địa chỉ giao hàng ................................................................. 65
Hình 75. Giao diện đặt địa chỉ giao hàng mặc định .................................................... 65
Hình 76. Giao diện thanh toán sản phẩm .................................................................... 66
Hình 77. Thông tin chi tiết đơn hàng.......................................................................... 66
Hình 78. Yêu cầu xác nhận đã được gởi vào gmail .................................................... 67
Hình 79. Đồng thời xác nhận nằm ở trang web .......................................................... 67
Hình 80. Xem thông tin đơn hàng đã đặt .................................................................... 67
Hình 81. Xem trạng thái đơn hàng ............................................................................. 68
Hình 82. Lịch sử đã hoạt động của user ..................................................................... 69
Hình 83. Lịch sử của thiết bị hoạt động tại trang web không đăng ký user ................. 69

ix
TÓM TẮT NỘI DUNG BÁO CÁO
Mục đích của nhóm là làm ra website bán linh kiện máy tính này để giải quyết
một số khó khăn mà người mua hàng gặp phải khi mua máy tính và linh kiện tại cửa
hàng. HYT có thể rao bán những mặt hàng mà họ muốn cung cấp cho người tiêu dùng
nhằm tăng doanh thu hiệu quả hơn.

x
LỜI MỞ ĐẦU
Chúng em thiết kế ra website bán máy tính để có thể giải quyết những khó khăn
mà người mua gặp phải:
- Tiện lợi và tiết kiệm được thời gian: Việc mua máy tính trực tuyến giúp người
mua tiết kiệm thời gian và công sức để mày mò và di chuyển lòng vòng. Người mua
có thể dễ dàng truy cập vào trang web bán máy tính từ bất kỳ đâu và mua sản phẩm chỉ
trong vài cú nhấp chuột.
- Sự đa dạng về lựa chọn: Trang web bán máy tính thường có nhiều mặt hàng,
cung cấp nhiều sự lựa chọn về thương hiệu, mẫu mã, cấu hình và giá cả. Người mua có
thể so sánh các sản phẩm khác nhau và chọn lựa máy tính phù hợp với nhu cầu và
ngân sách của mình.
- Thông tin chi tiết và đánh giá: Trang web bán máy tính thường cung cấp thông
tin chi tiết về từng sản phẩm, bao gồm thông số kỹ thuật, hình ảnh và đánh giá từ
người tiêu dùng. Điều này giúp cho người mua hiểu rõ về sản phẩm trước khi quyết
định mua.
- Giá cả cạnh tranh: Trực tuyến, người mua có thể tìm thấy các ưu đãi, khuyến
mãi và giảm giá đặc biệt từ cửa hàng. Website bán máy tính thường có chính sách giá
cả cạnh tranh để thu hút người mua và cung cấp sự lựa chọn tốt nhất về giá trị cho
người bán.
- Dịch vụ hỗ trợ và chăm sóc khách hàng: Trang web bán máy tính thường cung
cấp dịch vụ hỗ trợ và chăm sóc khách tiện lợi. Bạn có thể nhận được sự tư vấn từ nhân
viên bán hàng qua điện thoại, trò chuyện trực tuyến hoặc email. Ngoài ra, dịch vụ hậu
mãi của cửa hàng như bảo hành, sửa chữa và đổi trả sản phẩm cũng được cung cấp để
đảm bảo sự hài lòng của khách hàng.
- Đánh giá và phản hồi từ khách hàng: Trên trang web bán máy tính, khách hàng
có thể đọc phản hồi của khách hàng đã mua trước. Khách hàng cũng có thể đánh giá về
sản phẩm mình đã mua.

1
Về công ty HYT
- Mở rộng phạm vi kinh doanh: Với một trang web bán hàng điện tử, cửa hàng có
thể tiếp cận người mua, tăng khả năng tiếp cận đến một số lượng lớn khách hàng tiềm
năng hơn so với việc chỉ có cửa hàng vật lý.
- Tăng doanh số bán hàng: Khách hàng có thể dễ dàng xem xét qua các sản
phẩm, thêm vào giỏ hàng và thanh toán trực tuyến. Điều này tạo ra sự tiện lợi và thúc
đẩy quyết định mua hàng của khách hàng.
- Giảm chi phí hoạt động: Một cửa hàng vật lý đòi hỏi chi phí cao cho việc thuê
mặt bằng, trang trí cửa hàng, nhân viên bán hàng và chi phí vận hành hàng ngày. Một
trang web có thể giảm thiểu một số chi phí này. Mặc dù vẫn cần có các chi phí liên
quan đến phát triển và duy trì trang web, nhưng chúng thường ít hơn so với các chi phí
hoạt động cửa hàng truyền thống.
- Khả năng tùy chỉnh: Một trang web cho phép cửa hàng tăng trải nghiệm mua
hàng dựa trên sở thích và nhu cầu của người mua. Bằng cách cung cấp chức năng tìm
kiếm, bộ lọc sản phẩm, đề xuất sản phẩm và đánh giá từ khách hàng, trang web có thể
cung cấp trải nghiệm mua hàng cá nhân hóa và tăng khả năng tìm kiếm được sản phẩm
mong muốn.
- Tiếp cận dữ liệu khách hàng: cho phép cửa hàng thu thập thông tin về khách
hàng và hành vi mua hàng. Điều này cung cấp thông tin quan trọng.
Báo cáo sẽ bao gồm các phần
Chương 1: Mô tả đề tài
Chương 2: Công nghệ sử dụng
Chương 3: Nghiệp vụ
Chương 4: Thiết kế database
Chương 5: Chức năng và quá trình hình thành

2
CHƯƠNG 1. MÔ TẢ ĐỀ TÀI
1.1. Khảo sát
Hiện nay thời đại công nghệ càng ngày phát triển nếu không có trang web bán
hàng điện tử, người bán có thể gặp phải nhiều khó khăn và hạn chế trong việc kinh
doanh:
- Giới hạn đối tượng khách hàng: Một trang web có thể tiếp cận được với người
mua trên toàn thế giới. Trong khi đó, nếu không có trang web, người bán chỉ có thể
tiếp cận được với khách hàng trong phạm vi hạn chế, chẳng hạn như khách hàng trong
cùng khu vực hoặc thành phố.
- Hạn chế thời gian kinh doanh: Một trang web bán hàng điện tử hoạt động liên
tục, cho phép khách hàng mua sắm bất kỳ lúc nào trong ngày. Nếu không có trang
web, người bán chỉ có thể bán hàng trong khoảng thời gian cố định hoặc khi cửa hàng
mở cửa.
- Chi phí quảng cáo cao: Quảng cáo trực tuyến thông qua trang web, mạng xã hội
và công cụ tìm kiếm có thể giúp người bán tiếp cận người mua một cách hiệu quả và
tiết kiệm chi phí. Nếu không có trang web, người bán có thể phải chi trả nhiều hơn cho
các hình thức quảng cáo truyền thống như quảng cáo trên truyền hình, radio, báo chí,
hoạt đi phát tờ rơi.
- Khó khăn trong việc quản lý hàng hóa: Một trang web cung cấp các công cụ
quản lý hàng trong kho, đơn hàng và thanh toán tự động. Nếu không người bán có thể
gặp khó khăn trong việc theo dõi lượng hàng trong kho, xử lý đơn hàng và quản lý
thông tin thanh toán.
- Cạnh tranh không công bằng: Trong thế giới kinh doanh ngày nay, nhiều người
tiêu dùng dựa vào trang web để tìm kiếm và mua hàng. Nếu không có trang web,
người bán sẽ mất đi một kênh bán hàng quan trọng, trong khi đối thủ cạnh tranh có thể
tiếp cận được khách hàng tiềm năng thông qua trang web của họ.
Còn đối với người mua:
- Sẽ hạn chế trong việc tìm kiếm sản phẩm: Một trang web thường cung cấp chức
năng tìm kiếm, giúp người mua dễ dàng tìm kiếm sản phẩm theo từ khóa, danh mục,
hoặc bộ lọc. Nếu không có trang web, người mua có thể gặp khó khăn trong việc tìm

3
kiếm các sản phẩm mong muốn và phải dựa vào các phương tiện khác như mua hàng
trực tiếp tại cửa hàng.
- Giới hạn lựa chọn sản phẩm: cửa hàng thường có hàng ngàn hoặc thậm chí
hàng triệu sản phẩm nhập về từ nhiều nhà cung cấp khác nhau. Nếu không có trang
web, người mua sẽ bị hạn chế trong việc lựa chọn sản phẩm chỉ từ các cửa hàng trong
phạm vi hạn chế.
- Khó khăn trong việc so sánh giá và đánh giá: Trang web thường cung cấp thông
tin về giá cả, đánh giá và đánh giá của khách hàng. Nếu không có trang web, người
mua có thể gặp khó khăn trong việc so sánh giá cả và tìm hiểu về chất lượng và đáng
tin cậy của sản phẩm mà họ quan tâm.
- Thời gian và công sức tiêu tốn: Mua sắm trực tiếp tại cửa hàng yêu cầu người
mua phải dành thời gian và công sức để di chuyển đến cửa hàng, tìm kiếm sản phẩm
và thực hiện giao dịch. Điều này có thể tốn kém và không tiện lợi cho những người có
lịch trình bận rộn hoặc không có nhiều thời gian rảnh.
- Không thể mua hàng từ xa: Nếu không người mua không thể mua hàng từ xa,
đặc biệt là trong trường hợp họ muốn mua hàng từ một khu vực xa hoặc không có cửa
hàng trực tiếp gần đó.
1.2. Mục tiêu đề tài
- Dễ dàng tiếp cận với người mua
- Người bán thuận tiện trong việc quản bá cửa hàng và quản lý kho
1.3. Mô tả nghiệp vụ
- Phía khách hàng: người dùng có thể lướt tìm kiếm các sản phẩm mà mình muốn
mua. Khi muốn mua trực tiếp một món hàng nào đó người dùng cần phải đăng nhập,
nếu chưa có thì người mua cần phải đăng ký tài khoản bằng gmail hoặc bằng
facebook. Khi đăng ký thành công thì người dùng cần cập nhật địa chỉ và thông tin để
giao hàng. Khi đã thanh toán thành công sẽ có thư được gởi về gmail để xác nhận cho
người mua biết hoặc đó là hóa đơn để sau này có thể gởi phản hồi nếu gặp trục trặc.
Ngoài ra người mua cũng có thể xem lại lịch sử hoạt động mình đã hoạt những gì trên
trang web. Người mua cũng có thể xem bình luận các sản phẩm để tiếp cận với món
mình thích dễ hơn.
- Phía người bán: người bán có 2 trang chính là admin và trang web cửa hàng
chính. Về phía trang admin, người mua có thể chỉnh sửa thông tin như theo danh mục,
4
theo sản phẩm, tin tức, chạy quang cáo, chạy thông báo và chỉnh sửa tài khoản của
nhân viên trong phần admin.
1.4. Các chức năng
 Khách hàng có chức năng:
- Đăng nhập:
 Email
 Password
 Cập nhật mật khẩu
- Đăng ký:
 Email
 Facebook
 Password
- Tìm kiếm sản phẩm
- Lọc sản phẩm theo danh mục hoạt theo giá
- Xem sản phẩm
- Tăng giảm số lượng muốn mua của sản phẩm
- Thêm sản phẩm vào giỏ hàng
- Chọn hình thức thanh toán và thanh toán
- Xem lịch sử hoạt động
- Cập nhật thông tin của người bán
- Thêm và xóa địa chỉ và thông tin giao hàng
- Xem tin tức, thông báo
- Xem thông tin chi tiết và trạng thái của đơn hàng
 Người bán có chức năng:
- Thêm, sửa, xóa tài khoản cho nhân viên
- Cập nhật doanh thu
- Thêm, sửa, xóa thông báo
- Thêm, sửa, xóa tin tức
- Cập nhật thông tin trang web như tên công ty, thông tin liên lạc,...
- Thêm, sửa, xóa danh mục chính của hàng
- Thêm, sửa, xóa sản phẩm

5
- Thêm, sửa, xóa sản phẩm nào nằm trong danh mục nào
- Cập nhật trạng thái đơn hàng của khách hàng
 Đối tượng, phạm vi nghiên cứu:
- Đối tượng: các cửa hàng bán linh kiện điện tử đang kiếm một trang web
đẹp mắt và tiện lợi.
- Phạm vi nghiên cứu:
 Xây dựng các chức năng cơ bản cho quản trị viên.
 Tìm hiểu về các trang web phát triển và nâng cấp về hệ thống, quản lý hệ
thống.
 Xây dựng các chức năng cho người bán lẫn người mua.
 Tìm hiểu về ngôn ngữ java, Spring và các công cụ cần thiết để thiết kế
hệ thống.

6
CHƯƠNG 2. CÔNG NGHỆ SỬ DỤNG
2.1. Spring là gì?
- Spring là một Framework phát triển các ứng dụng Java được sử dụng bởi
hàng triệu lập trình viên. Nó giúp tạo các ứng dụng có hiệu năng cao, dễ
kiểm thử, sử dụng lại code…
- Spring nhẹ và trong suốt (nhẹ: kích thước nhỏ, version cơ bản chỉ khoảng
2MB; trong suốt: hoạt động một cách trong suốt với lập trình viên)
- Spring là một mã nguồn mở, được phát triển, chia sẻ và có cộng đồng
người dùng rất lớn.
- Spring Framework được xây dựng dựa trên 2 nguyên tắc design chính là:
Dependency Injection và Aspect Oriented Programming.
- Những tính năng core (cốt lõi) của Spring có thể được sử dụng để phát
triển Java Desktop, ứng dụng mobile, Java Web. Mục tiêu chính của
Spring là giúp phát triển các ứng dụng J2EE một cách dễ dàng hơn dựa
trên mô hình sử dụng POJO (Plain Old Java Objecs).
- Kiến trúc, các module của Spring Framework.
- Spring được chia làm nhiều module khác nhau, tùy theo mục đích phát
triển ứng dụng mà ta dùng 1 trong các module đó.

7
Hình 1. Dưới đây là kiến trúc tổng thể của Spring Framework
Test
- Tầng này cung cấp khả năng hỗ trợ kiểm thử với JUnit và TestNG.
- Spring Core Container.
- Bao gồm các module spring core, beans, context và expression languate
(EL).
- Spring core, bean cung cấp tính năng IOC và Dependency Injection.
- Spring Context hỗ trợ đa ngôn ngữ (internationalization), các tính năng
Java EE như EJB, JMX.
- Expression Language được mở rộng từ Expresion Language trong JSP.
Nó cung cấp hỗ trợ việc setting/getting giá trị, các method cải tiến cho phép
truy cập collections, index, các toán tử logic…
- AOP, Aspects and Instrumentation.
- Những module này hỗ trợ cài đặt lập trình hướng khía cạnh (Aspect
Oriented Programming), hỗ trợ tích hợp với AspectJ.
- Data Access / Integration.

8
- Nhóm này bao gồm JDBC, ORM, OXM, JMS và module Transaction.
Những module này cung cấp khả năng giao tiếp với database.
- Web.

Hình 2. Spring và thymeleaf

- Hay còn gọi là Spring MVC Nhóm này gồm Web, WebServlet… hỗ trợ
việc tạo ứng dụng web. Thymeleaf là gì:
 Thymeleaf là một Java template engine dùng để xử lý và tạo
HTML, XML, Javascript, CSS và text.
 Mục tiêu chính của thymeleaf là mang lại các template tự nhiên,
đồng nhất, đơn giản (nature templates) cho công việc phát triển.
2.2. Java IDE
IDE là gì?
- Môi trường phát triển tích hợp (IDE) là một ứng dụng phần mềm hỗ trợ lập
trình viên phát triển mã phần mềm một cách hiệu quả. Ứng dụng này giúp tăng năng
suất của nhà phát triển bằng cách kết hợp các tính năng như chỉnh sửa, xây dựng, kiểm
thử và đóng gói phần mềm vào trong một ứng dụng dễ sử dụng. Cũng giống như nhà
văn sử dụng phần mềm soạn thảo và kế toán sử dụng bảng tính, nhà phát triển phần
mềm dùng IDE để khiến công việc trở nên dễ dàng hơn.

Hình 3. Java IDE

9
2.3. MySQL
- MySQL là một hệ thống quản trị cơ sở dữ liệu mã nguồn mở (Relational
Database Management System, viết tắt là RDBMS) hoạt động theo mô hình
clientserver. RDBMS là một phần mềm hay dịch vụ dùng để tạo và quản lý các cơ sở
dữ liệu (Database) theo hình thức quản lý các mối liên hệ giữa chúng.
- MySQL là một trong số các phần mềm RDBMS. RDBMS và MySQL thường
được cho là một vì độ phổ biến quá lớn của MySQL. Các ứng dụng web lớn nhất như
Facebook, Twitter, YouTube, Google, và Yahoo! đều dùng MySQL cho mục đích lưu
trữ dữ liệu. Kể cả khi ban đầu nó chỉ được dùng rất hạn chế nhưng giờ nó đã tương
thích với nhiều hạ tầng máy tính quan trọng như Linux, macOS, Microsoft Windows,
và Ubuntu.

Hình 4. MySQL

2.4. jQuery và bootstrap


- Query nghĩa là một yêu cầu truy vấn thông tin. thông tin ở đây sẽ là thông tin
trích xuất từ một database – cơ sở dữ liệu. Query dùng để thực hiện các thao tác lên dữ
liệu đó (data manipulation) – thêm, xóa, thay đổi.
- Query của bạn phải dựa trên một cấu trúc code được định sẵn mà cơ sở dữ liệu
có thể hiểu được. Cấu trúc code này có thể xem như là ngôn ngữ truy vấn – query
language.

Hình 5. jQuery và bootstrap

10
- Bootstrap cho phép quá trình thiết kế website diễn ra nhanh chóng và dễ dàng
hơn dựa trên những thành tố cơ bản sẵn có như typography, forms, buttons, tables,
grids, navigation, image carousels…
Accessibility, Availability, Security, Performance, Scalability
- HTML HyperText Markup Language, là loại ngôn ngữ đánh dấu siêu văn bản,
dùng các thẻ để xác định các loại nội dung khác nhau, cũng như mục đích phục vụ cho
trang web.
- CSS Cascading Style Sheets, là ngôn ngữ định dạng được sử dụng để mô tả
cách trình bày trong các trang web, bao gồm màu sắc, cách bố trí và phông chữ, giúp
nội dung thể hiện được phong cách riêng cho tổng thể website.
- JavaScript được sử dụng nhằm mục đích biến những website tĩnh nhàm chán
sang trang thái động cuốn hút, đồng thời có khả năng tạo sự tương tác, cải thiện hiệu
suất máy chủ và nâng cao trải nghiệm người dùng.
- Nhưng để thực hiện tốt những hoạt động trên, JavaScript phải cần đến sự hỗ trợ
của HTML và CSS.

Hình 6. HTML, CSS, Java, ....

11
CHƯƠNG 3. NGHIỆP VỤ
3.1. Usecase tổng quát

Hình 7. Usecase tổng quát

3.2. Phân rã usecase


Phân rã use case “Quản lý mật khẩu”

Hình 8. Phân rã use case “Quản lý mật khẩu”

12
Phân rã use case “Quản lý địa chỉ”

Hình 9. Phân rã use case “Quản lý địa chỉ”

Phân rã use case “Quản lý báo cáo bán hàng”

Hình 10. Phân rã use case “Quản lý báo cáo bán hàng”

13
Phân rã use case “Quản lý tin tức”

Hình 11. Phân rã use case “Quản lý tin tức”

Phân rã use case “Quản lý thông báo”

Hình 12. Phân rã use case “Quản lý thông báo”

14
Phân rã use case “Quản lý ảnh quảng cáo”

Hình 13. Phân rã use case “Quản lý ảnh quảng cáo”

Phân rã use case “Quản lý sản phẩm”

Hình 14. Phân rã use case “Quản lý sản phẩm”

15
Phân rã use case “Quản lý thương hiệu”

Hình 15. Phân rã use case “Quản lý thương hiệu”

Phân rã use case “Quản lý khu vực giao hàng”

Hình 16. Phân rã use case “Quản lý khu vực giao hàng”

16
Phân rã use case “Quản lý khách hàng”

Hình 17. Phân rã use case “Quản lý khách hàng”

Phân rã use case “Quản lý đơn hàng”

Hình 18. Phân rã use case “Quản lý đơn hàng”

17
Phân rã use case “Quản lý danh mục sản phẩm”

Hình 19. Phân rã use case “Quản lý danh mục sản phẩm”

Phân rã use case “Quản lý nhân viên”

Hình 20. Phân rã use case “Quản lý nhân viên”

18
3.3. Đặc tả usecase
Đặc tả use case “Đăng ký”

Tên use case Đăng ký

Mô tả Người dùng thực hiện đăng ký tài khoản

Tác nhân Khách vãng lai

Tiền điều kiện Người dùng chưa có tài khoản

Hậu điều kiện Người dùng đăng ký tài khoản thành công

Luồng sự kiện 1. Từ giao diện trang chủ, người dùng chọn chức năng Đăng ký
chính 2. Hệ thống hiển thị giao diện trang Đăng ký
3. Người dùng nhập thông tin và nhấn nút Đăng ký
4. Hệ thống kiểm tra tính hợp lệ của dữ liệu đã nhập. Nếu hợp lệ, hệ
thống thực hiện lưu vào cơ sở dữ liệu và hiển thị thông báo đăng ký
thành công.

Ngoại lệ 3.1 Người dùng nhập thiếu thông tin


3.1.1 Hệ thống hiển thị thông báo lỗi nhập thiếu thông tin và yêu cầu
nhập lại
3.2 Người dùng nhập thông tin không hợp lệ
3.2.1 Hệ thống hiển thị thông báo lỗi nhập thông tin không hợp lệ và
yêu cầu nhập lại

Tên use case Đăng ký

Mô tả Người dùng thực hiện đăng ký tài khoản

Tác nhân Khách vãng lai

Tiền điều kiện Người dùng chưa có tài khoản

Hậu điều kiện Người dùng đăng ký tài khoản thành công

Luồng sự kiện 1. Từ giao diện trang chủ, người dùng chọn chức năng Đăng ký
chính 2. Hệ thống hiển thị giao diện trang Đăng ký
3. Người dùng nhập thông tin và nhấn nút Đăng ký
4. Hệ thống kiểm tra tính hợp lệ của dữ liệu đã nhập. Nếu hợp lệ, hệ
thống thực hiện lưu vào cơ sở dữ liệu và hiển thị thông báo đăng ký
thành công.

Ngoại lệ 3.1 Người dùng nhập thiếu thông tin


3.1.1 Hệ thống hiển thị thông báo lỗi nhập thiếu thông tin và yêu cầu
nhập lại
3.2 Người dùng nhập thông tin không hợp lệ
3.2.1 Hệ thống hiển thị thông báo lỗi nhập thông tin không hợp lệ và
yêu cầu nhập lại
19
Đặc tả use case “Đăng nhập”

Tên use case Đăng nhập

Mô tả Người dùng thực hiện đăng nhập vào hệ thống

Tác nhân Khách hàng

Tiền điều kiện Người dùng đã có tài khoản

Hậu điều kiện Người dùng đăng nhập vào hệ thống thành công

Luồng sự kiện 1. Từ giao diện trang chủ, người dùng chọn chức năng Đăng nhập
chính 2. Hệ thống hiển thị giao diện trang Đăng nhập
3. Người dùng nhập thông tin và nhấn nút Đăng nhập
4. Hệ thống kiểm tra tính hợp lệ của dữ liệu đã nhập. Nếu hợp lệ, hệ
thống hiển thị trang chủ tương ứng với tài khoản đã đăng nhập.

Ngoại lệ 3.1 Người dùng nhập thiếu thông tin


3.1.1 Hệ thống hiển thị thông báo lỗi nhập thiếu thông tin và yêu cầu
nhập lại
3.2 Người dùng nhập thông tin không hợp lệ
3.2.1 Hệ thống hiển thị thông báo lỗi nhập thông tin không hợp lệ và
yêu cầu nhập lại

Đặc tả use case “Thêm sản phẩm vào giỏ hàng”

Tên use case Thêm sản phẩm vào giỏ hàng

Mô tả Người dùng thực hiện thêm sản phẩm vào giỏ hàng

Tác nhân Khách hàng

Tiền điều kiện Người dùng đã đăng nhập vào hệ thống thành công

Hậu điều kiện Người dùng thêm sản phẩm vào giỏ hàng thành công

Luồng sự kiện 1. Từ giao diện trang Xem thông tin chi tiết sản phẩm, người dùng
chính nhấn nút Thêm vào giỏ hàng
2. Hệ thống kiểm tra tính hợp lệ của dữ liệu. Nếu hợp lệ, hệ thống
lưu vào cơ sở dữ liệu và hiển thị thông báo thêm sản phẩm vào giỏ
hàng thành công

Ngoại lệ 1.1 Người dùng thêm sản phẩm không tồn tại vào giỏ hàng
1.1.1 Hệ thống hiển thị thông báo sản phẩm không tồn tại và yêu cầu
thêm lại

20
Đặc tả use case “Thanh toán đơn hàng”

Tên use case Thanh toán đơn hàng

Mô tả Người dùng thực hiện thanh toán đơn hàng

Tác nhân Khách hàng

Tiền điều kiện Người dùng đã đăng nhập vào hệ thống thành công

Hậu điều kiện Người dùng thanh toán đơn hàng thành công

Luồng sự kiện 1. Từ giao diện trang Giỏ hàng, người dùng nhấn nút Thanh toán
chính 2. Hệ thống hiển thị trang Thanh toán
3. Người dùng chọn phương thức thanh toán và nhấn nút Đặt hàng
4. Hệ thống kiểm tra tính hợp lệ của dữ liệu. Nếu hợp lệ, hệ thống
lưu vào cơ sở dữ liệu và hiển thị thông báo đặt hàng thành công

Ngoại lệ 3.1 Người dùng có thông tin đặt hàng không hợp lệ
3.1.1 Hệ thống hiển thị thông báo thông tin đặt hàng không hợp lệ và
yêu cầu đặt hàng lại

Đặc tả use case “Xem danh sách đơn hàng”

Tên use case Xem danh sách đơn hàng

Mô tả Người dùng thực hiện xem danh sách đơn hàng

Tác nhân Nhân viên bán hàng và quản trị viên

Tiền điều kiện Người dùng đã đăng nhập vào hệ thống thành công

Hậu điều kiện Người dùng xem danh sách đơn hàng thành công

Luồng sự kiện 1. Từ giao diện trang chủ, người dùng chọn chức năng Quản lý đơn
chính hàng
2. Hệ thống lấy danh sách đơn hàng trong cơ sở dữ liệu và hiển thị
lên cho người dùng

Ngoại lệ 2.1 Không có đơn hàng nào trong cơ sở dữ liệu


2.1.1 Hệ thống hiển thị thông báo “Không có đơn hàng nào”

Đặc tả use case “Tìm kiếm đơn hàng”

Tên use case Tìm kiếm đơn hàng

Mô tả Người dùng thực hiện tìm kiếm đơn hàng

Tác nhân Nhân viên bán hàng và quản trị viên

21
Tiền điều kiện Người dùng đã đăng nhập vào hệ thống thành công

Hậu điều kiện Người dùng tìm kiếm đơn hàng thành công

Luồng sự kiện 1. Từ giao diện trang chủ, người dùng chọn chức năng Quản lý đơn
chính hàng
2. Hệ thống hiển thị trang Quản lý đơn hàng
3. Người dùng nhập từ khóa và nhấn nút Tìm kiếm
4. Hệ thống tìm kiếm đơn hàng theo từ khóa và hiển thị danh sách
đơn hàng tìm thấy

Ngoại lệ 2.1 Không có đơn hàng nào trong cơ sở dữ liệu


2.1.1 Hệ thống hiển thị thông báo “Không có đơn hàng nào”
3.1 Người dùng nhập từ khóa không tồn tại trong cơ sở dữ liệu
3.1.1 Hệ thống hiển thị thông báo “Không tìm thấy đơn hàng nào”

Đặc tả use case “Chỉnh sửa đơn hàng”

Tên use case Chỉnh sửa đơn hàng

Mô tả Người dùng thực hiện chỉnh sửa đơn hàng

Tác nhân Nhân viên bán hàng và quản trị viên

Tiền điều kiện Người dùng đã đăng nhập vào hệ thống thành công

Hậu điều kiện Người dùng chỉnh sửa đơn hàng thành công

Luồng sự kiện 1. Từ giao diện trang chủ, người dùng chọn chức năng Quản lý đơn
chính hàng
2. Hệ thống hiển thị trang Quản lý đơn hàng
3. Người dùng nhấn nút Chỉnh sửa tại dòng chứa đơn hàng cần chỉnh
sửa
4. Hệ thống lấy thông tin chi tiết của đơn hàng và hiển thị lên cho
người dùng
5. Người dùng nhập thông tin và nhấn nút Lưu
6. Hệ thống kiểm tra tính hợp lệ của dữ liệu. Nếu hợp lệ, hệ thống
lưu vào cơ sở dữ liệu và hiển thị thông báo chỉnh sửa đơn hàng thành
công

Ngoại lệ 2.1 Không có đơn hàng nào trong cơ sở dữ liệu


2.1.1 Hệ thống hiển thị thông báo “Không có đơn hàng nào”
3.1 Người dùng nhấn chọn sản phẩm không tồn tại
3.1.1 Hệ thống hiển thị thông báo lỗi sản phẩm không tồn tại và yêu
cầu chọn lại
5.1 Người dùng nhập thiếu thông tin
5.1.1 Hệ thống hiển thị thông báo lỗi nhập thiếu thông tin và yêu cầu
nhập lại

22
5.2 Người dùng nhập thông tin không hợp lệ
5.2.1 Hệ thống hiển thị thông báo lỗi nhập thông tin không hợp lệ và
yêu cầu nhập lại

Đặc tả use case “Xóa đơn hàng”

Tên use case Xóa đơn hàng

Mô tả Người dùng thực hiện xóa đơn hàng

Tác nhân Nhân viên bán hàng và quản trị viên

Tiền điều kiện Người dùng đã đăng nhập vào hệ thống thành công

Hậu điều kiện Người dùng xóa đơn hàng thành công

Luồng sự kiện 1. Từ giao diện trang chủ, người dùng chọn chức năng Quản lý đơn
chính hàng
2. Hệ thống hiển thị trang Quản lý đơn hàng
3. Người dùng nhấn nút Xóa tại dòng chứa đơn hàng cần xóa
4. Hệ thống kiểm tra tính hợp lệ của dữ liệu. Nếu hợp lệ, hệ thống
xóa trong cơ sở dữ liệu và hiển thị thông báo xóa đơn hàng thành
công

Ngoại lệ 2.1 Không có đơn hàng nào trong cơ sở dữ liệu


2.1.1 Hệ thống hiển thị thông báo “Không có đơn hàng nào”
3.1 Người dùng nhấn chọn sản phẩm không tồn tại
3.1.1 Hệ thống hiển thị thông báo lỗi sản phẩm không tồn tại và yêu
cầu chọn lại

Đặc tả use case “Thêm trạng thái đơn hàng”

Tên use case Thêm trạng thái đơn hàng

Mô tả Người dùng thực hiện thêm trạng thái đơn hàng

Tác nhân Nhân viên bán hàng và quản trị viên

Tiền điều kiện Người dùng đã đăng nhập vào hệ thống thành công

Hậu điều kiện Người dùng thêm trạng thái đơn hàng thành công

Luồng sự kiện 1. Từ giao diện trang Chỉnh sửa đơn hàng, người dùng chọn tab
chính Trạng thái
2. Hệ thống hiển thị tab Trạng thái
3. Người dùng nhấn nút Thêm trạng thái

23
4. Hệ thống hiển thị panel Thêm trạng thái
5. Người dùng nhập thông tin và nhấn nút Lưu
6. Hệ thống kiểm tra tính hợp lệ của dữ liệu. Nếu hợp lệ, hệ thống
lưu vào cơ sở dữ liệu và hiển thị thông báo thêm trạng thái đơn hàng
thành công

Ngoại lệ 5.1 Người dùng nhập thiếu thông tin


5.1.1 Hệ thống hiển thị thông báo lỗi nhập thiếu thông tin và yêu cầu
nhập lại
5.2 Người dùng nhập thông tin không hợp lệ
5.2.1 Hệ thống hiển thị thông báo lỗi nhập thông tin không hợp lệ và
yêu cầu nhập lại

Đặc tả use case “Thống kê doanh thu”

Tên use case Thống kê doanh thu

Mô tả Người dùng thực hiện thống kê doanh thu

Tác nhân Nhân viên bán hàng, nhân viên hỗ trợ, nhân viên chỉnh sửa thông tin
và quản trị viên

Tiền điều kiện Người dùng đã đăng nhập vào hệ thống thành công

Hậu điều kiện Người dùng thống kê doanh thu thành công

Luồng sự kiện 1. Từ giao diện trang chủ, người dùng chọn chức năng Thống kê
chính 2. Hệ thống hiển thị trang Thống kê
3. Người dùng chọn thời gian cần thống kê
4. Hệ thống xử lý dữ liệu trong cơ sở dữ liệu và hiển thị lên cho
người dùng

Ngoại lệ 3.1 Người dùng chọn thời gian mà không có dữ liệu


3.1.1 Hệ thống hiển thị thông báo “Không có dữ liệu”

24
3.4. Sơ đồ hoạt động
Sơ đồ hoạt động “Đăng ký”

Sơ đồ hoạt động “Đăng nhập”

25
Sơ đồ hoạt động “Thêm sản phẩm vào giỏ hàng”

Sơ đồ hoạt động “Thanh toán đơn hàng”

26
Sơ đồ hoạt động “Xem danh sách đơn hàng”

Sơ đồ hoạt động “Tìm kiếm đơn hàng”

27
Sơ đồ hoạt động “Chỉnh sửa đơn hàng”

28
Sơ đồ hoạt động “Xóa đơn hàng”

Sơ đồ hoạt động “Thêm trạng thái đơn hàng”

29
Sơ đồ hoạt động “Thống kê doanh thu”

30
CHƯƠNG 4. MÔ HÌNH DỮ LIỆU

4.1. Mô hình quan hệ dữ liệu


Dựa trên chỉ tiêu và yêu cầu cần thiết thì database được thiết kế theo mối liên hệ mật
thiết dựa vào ER Diagram sau đây:

Hình 21. Mô hình quan hệ dữ liệu

31
4.2. Danh sách các bảng
Setting (key, value, category)
Currencies (id, name, symbol, code)
Backup (id, count_download, path_file, time_create)
Countries (id, name, code)
States (id, name, country_id)
Client_info (id, browser_name, browser_version, device_infor, ip_address,
mac_address)
Users (id, address, birth_place, date, date_range, email, enabled, full_name,
identity_by, issued_by, log_date, password, phone, photos, created_time,
updated_time, work_user, degrees, maritals, sexs)
User_roles (user_id, role_id)
Roles (id, description, name)
Customers (id, email, password, first_name, last_name, phone_number,
address_line_1, address_line_2, city, state, country_id, postal_code, created_time,
updated_time, enabled, verification_code, authentication_type, reset_password_then,
work_user)
Customer_activity (id, activity, log_in, log_out, time_ativity, customer_id, url_log)
Brands (id, name, logo)
Brands_categories (brand_id, category_id)
Categories (id, alias, enabled, image, name, parent_id, all_parent_ids)
Products ( id, name, alias, short_description, full_description, main_image,
created_time, updated_time, enabled, in_stock, cost, price, discount_percent, lenght,
width, height, weight, brand_id, category_id, size, color, fabric, work_user,
number_views, related_pdt, qty, kind, pdt_code)
Product_images (id, name, product_id)
Product_details (id, name, value, product_id)
Cart_items (id, customer_id, product_id, quantity)
Orders (id, address_line_1, address_line_2, city, country, deliver_date, deliver_days,
first_name, last_name, order_time, payment_method, phone_number, postal_code,
product_cost, shipping_cost, state, status, subtotal, tax, total, customer_id)
Order_track (id, notes, status, updated_time, work_user, order_id)
32
Order_details (id, product_cost, quantity, shipping_cost, subtotal, unit_price, oder_id,
product_id)
Shipping_rates (id, cod_supported, days, rate, state, country_id, created_time,
updated_time, work_user)
Comments (id, created_time, updated_time, work_user, content, customer_id,
product_id)
Comment_replies (id, created_time, updated_time, work_user, content, comment_id,
customer_id, product_id)
Board (id, board_cate, board_no, created_time, enabled, end_date, full_description,
kind_content, main_image, start_date, title, updated_time, work_user, number_views)
Notice (id, created_time, enabled, end_date, full_desciption, number_views,
short_description, start_date, updated_time, work_user, popup)
Slider (id, created_time, updated_time, work_user, enabled, end_date, image_url,
start_date)
Addresses (id, customer_id, country_id, first_name, last_name, phone_number,
address_line_1, address_line_2, city, state, postal_code, default_address)

4.3. Thiết kế chi tiết CSDL


Setting

Hình 22. bảng thiết kế database của setting

Currencies

Hình 23. bảng thiết kế database của currencies

33
Backup

Hình 24. bảng thiết kế database của Backup

Countries

Hình 25. bảng thiết kế database của Countries

States

Hình 26. bảng thiết kế database của states

Client_info

Hình 27.bảng thiết kế database của client_info

34
Users

Hình 28. bảng thiết kế database của Users

Users_roles

Hình 29.bảng thiết kế database của users_roles

Roles

Hình 30. bảng thiết kế database của Roles

35
Customers

Hình 31. bảng thiết kế database của Customers

Customer_activity

Hình 32.bảng thiết kế database của customer_activity

Brands

Hình 33. bảng thiết kế database của Brands

36
Brands_categories

Hình 34. bảng thiết kế database của brands_categories

Categories

Hình 35. bảng thiết kế database của Categories

Products

Hình 36. bảng thiết kế database của Products

37
Product_images

Hình 37. bảng thiết kế database của product_images

Product_details

Hình 38. bảng thiết kế database của product_details

Cart_items

Hình 39. bảng thiết kế database của cart_items

38
Orders

Hình 40. bảng thiết kế database của orders

Order_track

Hình 41. bảng thiết kế database của order_track

39
Order details

Hình 42. bảng thiết kế database của order_details

Shipping_rates

Hình 43. bảng thiết kế database của shipping_rates

40
Comments

Hình 44. bảng thiết kế database của comments

Comment_replies

Hình 45. bảng thiết kế database của comment_replies

41
Board

Hình 46. bảng thiết kế database của board

Notice

Hình 47. bảng thiết kế database của Notice

Slider

Hình 48. bảng thiết kế database của Slider

42
Addresses

Hình 49. bảng thiết kế database của Addresses

43
CHƯƠNG 5. CHỨC NĂNG VÀ QUÁ TRÌNH HÌNH THÀNH
5.1. Cấu hình
5.1.1. Công cụ hỗ trợ
- Spring tool Suite (4.16.0.0)
- Git
- Maven (3.6)
- MySQL Community Server (MySQL workbench)
- JDK (8.261)
5.1.2. Tổ chức Source

44
Hình 50. Cấu trúc tổ chức Source theo cây. Thể hiện bởi sơ đồ sau đây

5.1.3. Thư viện hỗ trợ


- Spring data JPA, Spring Security, Thymeleaf, Bootstrap (4.3.1), hibernate,
query (3.4.1), Unit test, Super CSV, Oppen Pdf, Oauth2, Mail, jquery Number,
jsBarcode, tinymce, jquery richtext, …

45
WebParent (pom.xml)

46
Admin (BackEnd)

47
Client (FrontEnd)

5.2. Khởi tạo


5.2.1. Cấu hình Source Common
Source Common chứa các Entity, Enum và các Exception. Nhằm mục đích tiết
kiệm tài nguyên và vận hành một cách chuẩn xác và nhanh chóng. Các Lớp được khai
báo ở Common thì Admin và Client đều có thể sử dụng được khi được gọi tới. Các
Entity ngoài mục đích khởi tạo và kết nối tới dữ liệu còn đóng vai trò xử lý dữ liệu
một cách hiệu quả. Bằng các thực hiện sau đây:
 TimeWorkBasedEntity
Đây là một Abstract Entity, nhằm mục đích tối ưu các trường cần có
trong một bảng.
Thực hiện tính toán các trường dữ liệu để hiển thị ra màn hình một cách
hiệu quả.
 AbstractAddress
Đây là một Abstract Entity, nhằm mục đích tối ưu các trường cần có
trong một bảng, AbstractAddress cung cấp các trường liên quan tới địa chỉ, số
điện thoại, tên của khách hàng.
48
 AuthenticationType
Cung cấp thông tin về các loại tài khoản mà người dung dung để đăng
nhập hoặc đăng kí.
Được thể hiện ở bảng Customer.
 Enum SettingCategory
Xác định kiểu dữ liệu: GENERAL, MAIL_SERVER,
MAIL_TEMPLATES, CURRENCY, PAYMENT
Setting được thể hiện ở màn hình setting, nhằm mục đích lưu trữ các
thông tin về cửa hàng/doanh nghiệp, các kiểu định dạng tiền tệ, Mail để gửi
Email tới khách hàng,…
Khi khởi tạo các kiểu dữ liệu trên có thể Insert thằng vào bảng Setting bằng câu
lệnh sql hoặc dùng DataJPA Test để thêm vào.
 Enum OrderStatus
Xác định các thông tin về đơn hàng, từ đó Order Track có thể dễ dàng sử
dụng và tái sử dụng.
 Enum PaymentMethod
Xác định kiểu hình thanh toán khi người dùng đặt hàng.
 Exception
Xác định lỗi khi chương trình trong lúc biên dịch đã gây ra một lỗi
không mong muốn.
5.2.2. Cấu hình Source Admin (BackEnd)
 Cấu hình properties
 Cấu hình folder save file
Đăng kí tên folder cho các file cần lưu trữ
Cấu hình lưu trữ file và xóa file
 Cấu hình Export file
Export file được cấu hình thông qua AbstractExporter. Các file exporter
sử dụng để xuất file: Category, Product, User. Đây là các bộ phận sử dụng đến
AbstractExporter, ngoài ra còn nhiều bộ phận khác cũng có tính năng Export
nhưng không sử dụng đến AbstractExporter mà thông qua thư viện có sẵn, đó là
“jquery datatables” nguồn: https://datatables.net/.
 AbstractExporter
49
Category Export file CSV
Category Export file Excel
User Export file PDF
 Datatables jquery:
Customer Export file csv, excel, pdf, print
 Cấu hình bảo mật
Cấu hình bảo mật sử dụng Spring security
Lấy thông tin người dung từ token thông qua UserDetails
Lấy Email đã đăng kí tài khoản thông qua UserDetailsService

5.2.3. Cấu hình Source Client (FrontEnd)

 Cấu hình yml


 Cấu hình folder save file
 Cấu hình bảo mật
Cấu hình bảo mật chung
Lấy thông tin người dùng
Tìm thông tin người dung từ Database.
Người dùng đăng nhập tài khoản thông qua tài khoản đã đăng kí.
Kiểm tra thông tin tài khoản đăng nhập.
Lấy thông tin người dùng từ OAuth2User.
Xử lý thông tin người dùng từ OAuth2User.
 Cấu hình CookieUtils
Dùng trong xác định từ tác vụ browser của người dùng đã thực hiện ẩn
popup thông báo hay chưa.
 Cấu hình Interceptor
Sử dụng cho dữ liệu có thể hoạt động ở mọi điểm mà không cần thông
qua một controller cố định, dữ liệu sẽ được hiển thị trên mọi trang mà không
cần gọi lại nhiều lần.
 Cấu hình Utility
Nhằm mục đích tái sử dụng nhiều lần, Utility được viết ra nhằm mục
đích tái sử dụng code, được dùng cho Gửi Mail, lấy thông tin đăng nhập của
người dùng, format tiền tệ cho hệ thống.
50
 Cấu hình thông tin người dùng và thiết bị
Thông tin thiết bị
Thông tin Browser

5.2.4. Cấu hình Pagination, tìm kiếm, sort


Lấy các tham số về danh sách và đường dẫn được gọi tới.
Nhận các giá trị tham số và giải quyết giá trị tham số.
Xử lý phân trang và sắp xếp.
Gọi đến bảng được chỉ định.
5.3. Thực hiện hóa chức năng và phi chức năng
5.3.1 Các chức năng chính và phổ biến
- Chức năng chính thường được sử dụng trong Source bao gồm: Thêm,
sửa, xóa, tìm kiếm, phân trang, xem chi tiết, cập nhật trạng thái, sắp xếp dữ liệu.
- Các chức năng trên được sử dụng cho quản lý sản phẩm, quản lý nhân
viên, quản lý thương hiệu, quản lý danh mục, quản lý khách hang (không bao
gồm thêm), quản lý thông báo, quản lý tin tức, quản lý quảng cáo, quản lý khu
vực.
- Thực hiện cho quản lý nhân viên và các phần tương tự.
 Chức năng thêm
Tại đây người quản trị viên cần nhập đầy đủ thông tin của người
dùng

Hình 51. Tạo quản trị viên trong phần admin

Sau đó dữ liệu từ form được chuyển đến Controller để xử lý:

51
Hình ảnh sẽ được lưu vào folder đăng kí trước đó và thông tin
Nhân viên sẽ được chuyển đến Service để thực hiện lưu
Tại Service sẽ thực hiện kiểm tra tài khoản bằng id, nếu id đã tồn
tại chỉ thực hiện cập nhật các thông tin đã bị thay đổi, nếu id chưa tồn tại
sẽ tạo ra nhân viên mới. Thực hiện cập nhật đối với thông tin đó bởi
người dùng đang đăng nhập vào trường “workUser”, lấy thời gian cập
nhật và thời gian khởi tạo đối với từng trường hợp.
Sau khi dữ liệu được kiểm tra hoàn tất sẽ thực hiện lưu vào bảng
thông qua Spring Data JPA
Mọi thứ thành công sẽ thông báo trạng thái “Thêm tài khoản
thành công”.
 Chức năng sửa
Tại giao diện người dùng click vào icon sửa

Hình 52. Tất cả nhân viên đã được có

Tại đây lấy Id của nhân viên và thực hiện truy xuất các thông tin
của nhân viên đó.
Controller sẽ xử lý id nhân viên có được và trả về trang chỉnh sửa
nếu như hoàn tất
Dữ liệu được chuyển đến Service và thực hiện tìm kiếm nhân viên
với Id đó.

52
Nếu tìm thấy sẽ trả về Controller và tiếp tục thực hiện, nếu không
thì thông báo lỗi được trả về Controller xử lý.
Dữ liệu được tìm thông qua Spring Data JPA.
Nếu tìm thấy Id nhân viên trong database, Dữ liệu nhân viên đó sẽ
được hiển thị ra form cùng với form thêm mới nhân viên và thực hiện
tương tự với thêm mới nhân viên.
Giao diện trả về khi click vào icon sửa:

Hình 53. Khi click vào icon sửa sẽ trả lại giao diện giống như mới tạo admin mới

 Chức năng xóa


Tại giao diện nhân viên click vào button xóa trên màn hình:

Hình 54. Bấm vào nút xóa nhân viên nếu muốn xóa nhân viên nào đó

53
Tại đây lấy id của nhân viên cần xóa và trả về Controller xử lý.
Dữ liệu được xử lý với Id nhân viên có được và gọi tới Service
Tại đây id của nhân viên sẽ thực thiện tìm kiếm thông qua
Repository và tiến hành kiểm tra trước khi xóa
Gọi tới Repository để tìm kiếm tất cả các khóa chính có Id tương
ứng.
Sau khi tìm kiếm hoàn tất, nếu dữ liệu có id tương ứng sẽ thực
hiện xóa tại Service và trả về thông báo “Đã xóa tài khoản ID:”. Ngược
lại sẽ trả về thông báo “Không tìm thấy ID người dùng:”
 Chức năng cập nhật trạng thái
Tại giao điện nhân viên click vào icon trạng thái:

Hình 55. Giao diện quản lý nhân viên

Tại đây lấy Id của nhân viên gửi tới Controller để xử lý


Tại Controller gọi tới Service để xử lý dữ liệu.
Trong Service gọi tới Repository để cập nhật trạng thái.
Sau khi hoàn tất quá trình cập nhật trả về thông báo “Tài khoản
(ID: 32) đã được cập nhật trạng thái ẩn”.
 Chức năng xuất file
Tại giao diện quản lý nhân nhiên lick vào xuất file csv/excel/pdf:

Hình 56. Giao diện xuất file

54
Sau khi click vào một trong 3 nút trên dữ liệu được xử lý tại
Controller.
Tại Controller xử lý các yêu cầu theo file cấu hình Export trước
đó được kế thừa từ AbstractExporter.
Lấy danh sách cần xuất file csv
Lấy danh sách xuất PDF
Lấy danh sách xuất file Excel

5.3.2. Các chức năng riêng biệt

 Thống kê
Phân loại thống kê: ngày tháng, danh mục, sản phẩm.
Tùy thuộc vào giá trị yêu cầu từ người dùng mà trả về các giá trị
được xử lý tương ứng, được thể hiện ở Controller.
Tại đây Dữ liệu được xử lý với các giá trị tương ứng với:
o getReportDataByDatePeriod: Sử dụng chung cho tất các
các tab khi mới bắt đầu duyệt với giá trị mặc định là 7 ngày qua.
o getReportDataByDatePeriod: Sử dụng cho lọc tất cả theo
ngày tháng năm với giá trị trong khoảng nhất định.
o getReportDataByCategoryOrProductDateRange: được sử
dụng để duyệt cho đối tượng Danh mục hoặc sản phẩm thông qua ‘groupby” và
giá trị thời gian được chỉ định.
o getReportDataByCategoryOrProduct: được sử dụng cho
đối tượng Danh mục hoặc sản phẩm với giá trị thời gian mặc định.
Dữ liệu được xử lý tại 2 đối tượng Service chính: Theo ngày
tháng năm hoặc theo danh mục hoặc sản phẩm. Cả 2 đều được kế thừa từ
đối tượng cha AbstractReportService.
MasterOrderReportService xử lý duyệt theo ngày tháng.
OrderDetailReportService xử lý cho đối tượng Danh mục hoặc
Sản phẩm.

55
Thống kê được thể hiện theo ngày tháng:

Hình 57. Thống kê được thể hiện theo ngày tháng

Thống kê được thể hiện theo danh mục:

Hình 58. Thống kê được thể hiện theo danh mục

56
Thống kê được thể hiện theo sản phẩm:

Hình 59. Thống kê theo sản phẩm

 Backup data
Backup data được thực hiện theo 2 thành phần chính: Backup
theo click và Tự động Backup mỗi ngày.
Backup theo click vào button.
Tại giao diện Setting click vào button “Sao lưu dữ liệu”:

Hình 60. Giao diện nút sao lưu

Yêu cầu được gửi tới Controller.


Tại đây xử lý các yêu cầu: lấy thời gian thực làm tên file cho
backup, Tạo ra file sql và lưu trữ vào folder backup data, thực hiện kiểm
tra backup nếu không thành công xuất lỗi, ngược lại lưu đường đẫn file
backup được tạo ra vào PathFile của bảng Backup và các thông tin cần
thiết cho dữ liệu.
Backup tự động mỗi ngày.

57
Xác định backup dựa vào giá trị BACKUP_YN của bảng setting.
Với Y sẽ tự động sao lưu mỗi ngày và ngược lại:
Tại màn hình Setting người dùng chọn option Có hoặc Không:

Hình 61. Giao diện option sao lưu dữ liệu

Code được thực hiện dựa trên Schedule của Spring cung cấp. Cho
phép thực hiện các lịch đã lên sẵn với thời gian cố định.
Từ đó thực thiện kiểm tra lịch đã được lên sẵn và thực hiện kiểm
tra dữ liệu của BACKUP YN để xách định các tác vụ.
Tại đây giá trị BACKUP_YN với Y sẽ thực hiện Backup và
ngược lại backupTime xác định thời gian sẽ backup (23 giờ 19 phút).
Sau đó thực hiện Backup.
 Download file
Tại màn hình danh sách các file đã backup người dùng bấm vào
nút tải xuống file muốn tải.

Hình 62. Giao diện download dữ liệu đã lưu lại trong mySQL

Sau khi thực hiện tải xuống. Dữ liệu được xử lý ở Controller.


Tại đây thực hiện tác vụ tải file với đường dẫn file được lấy từ
phía màn hình gửi xuống. Sau khi tải xuống thành công cập nhật giá trị đã tải xuống
tang lên 1.
 Đăng kí

58
Tại màn hình đăng kí, người dùng nhập đầy đủ các thông tin cần
thiết:

Hình 63. Giao diện cập đăng ký thông tin tài khoản

59
Sau khi nhấn nút đăng kí. Tại Controller xử lý các yêu cầu và gửi
mail tới tài khoản đã đăng kí. Tại đây sẽ gửi một mã Token tới Gmail và
yêu cầu xác thực.
Sau đó trả về trang xác nhận tài khoản đã đăng kí.

Hình 64. Hoàn tất cập đăng ký tin tài khoản

Tại gmail mở hộp thư yêu cầu xác thực:

Hình 65. Đã gửi mail xác nhận để kích hoạt

Sau khi click Verify chuyển qua đường dẫn tới trang.
Tại gmail xác định Verify với mã Token được cấp trước đó ở
bảng Customer.
Nếu thành công trả về trang đăng kí thành công và ngược lại.

60
Kết quả trả về sau khi Verify

Hình 66.Giao diện khi đã đăng ký tài khoản thành công


 Quên mật khẩu
Sau khi bấm vào nút quên mật khẩu, form nhập thông tin tài
khoản đã đăng kí được hiện ra.
Người dung nhập Gmail đã đăng kí, Dữ liệu sau đó được xử lý tại
Controller
Tại đây tạo ra 1 token mới sau đó lưu vào bảng Customer. Từ mã
token có được Gửi mail với token yêu cầu thay đổi mật khẩu tới mail đã
đăng kí

Hình 67. Giao diện quên mật khẩu

Hình 68. Giao diện quên mật khẩu

61
Sau đó tại Gmail của khách hàng, mở hộp thư yêu cầu thay đổi
mật khẩu.

Hình 69. Sau đó tại Gmail của khách hàng, mở hộp thư yêu cầu thay đổi mật khẩu

Tại đây bấm vào “Thay đổi mật khẩu”. Mở ra đường dẫn mới về
form nhập mật khẩu mới

Hình 70. Giao diện nhập mật khẩu muốn đổi

Nhập mật khẩu mới cần nhập vào và thực hiện bấm nút lưu.
Sau khi bấm lưu dữ liệu được chuyển đến Controller và thực hiện
thay đổi mật khẩu.
 Giỏ hàng
 Thêm

62
Từ giao diện chi tiết sản phẩm bấm vào nút thêm vào giỏ cùng với
số lượng mong muốn.

Hình 71. Giao diện của sản phẩm

Sau khi bấm vào nút, dữ liệu được gửi tới Controller.
Tại Controller thực hiện kiểm tra đăng nhập, cũng như kiểm tra số lượng
thêm vào giỏ.

Hình 72. Đã thêm sản phẩm vào giỏ hàng thành công

Sau đó dữ liệu được gửi tới Service để thực hiện thêm vào giỏ với số
lượng và sản phẩm tương ứng.Kiểm tra id sản phẩm và số lượng cho phép. Sau
đó them sản phẩm và số lượng vào bảng Cart. Sau khi hoàn tất them vào giỏ, trả
về modal thông báo.
 Cập nhật số lượng:

63
Tại giao diện giỏ hàng bấm vào nút tang số lượng hoặc giảm số
lượng.

Hình 73. Giao diện giỏ hàng

Sau khi bấm vào nút tăng/giảm số lượng sản phẩm dữ liệu được
trả về Controller để xử lý.
Tại đây cập nhật số lượng vào bảng Cart thông qua Service. Cập
nhật lại số lượng, giá tiền, tổng tiền.
 Địa chỉ
Địa chỉ của người dùng được dùng theo địa chỉ gốc là địa chỉ đã
được thiết lập khi đã đăng kí tài khoản địa chỉ đó được lấy từ Bảng
Customer.
Thiết lập thêm địa chỉ giao hàng, địa chỉ này sẽ được lưu vào
bảng Address.
Về cơ bản thì các chức năng thêm sửa xóa tương tự như các chức
năng khác. Điều khác biệt ở quản lý địa chỉ người dùng là thiết lập địa
chỉ làm địa chỉ gốc để giao hàng và phân biệt địa chỉ của tài khoản và địa
chỉ của giao hàng.
Sau khi đã thêm địa chỉ giao hàng mới. Người dùng bấm vào nút
đặt làm địa chỉ mặc định để giao hàng.
Sau khi bâm vào nút đặt làm địa chỉ mặc định. Dữ liệu yêu cầu
được gửi tới Controller.

64
Hình 74. Giao diện chọn địa chỉ giao hàng

Tại đây thực hiện kiểm tra tài khoản, sau đó thực hiện đặt làm địa
chỉ mặc định thông qua Service.
Tại đây kiểm tra nếu địa chỉ đó chưa làm địa chỉ mặc định thì set
làm địa chỉ mặc định. Sau đó các địa chỉ mặc định hiện tại gán về không
còn là địa chỉ mặc định.

Giao diện sau khi địa chỉ mặc định khác được gán:

Hình 75. Giao diện đặt địa chỉ giao hàng mặc định

 Đặt hàng
Chức năng đặt hàng được cho phép thực hiện khi đầy đủ các yếu
tố sau:
- Địa chỉ nhận hang phải cùng khu vực giao hàng mà hệ
thống đang hỗ trợ.
- Giỏ hàng không được rỗng.
65
Tại giao diện Giỏ hàng. Người dùng bấm vào “Thanh Toán”.

Hình 76. Giao diện thanh toán sản phẩm

Sau khi bấm vào thanh toán. Hiển thị giao diện thanh toán. Tại
đây thực hiện tính toán phí ship với các sản phẩm có tính ship + phí ship
của khu vực được ship.

Hình 77. Thông tin chi tiết đơn hàng

Thực hiện tính toán tại Service.


Tương tự như Thay đổi mật khẩu, Khi đặt hang, thông tin đơn
hàng được gửi tới Gmail của tài khoản đã đặt.

66
Tại giao diện thanh toán sau khi người dùng chọn loại hình thanh
toán, và bấm vào đặt hang. Một Email thông tin đơn hàng được gửi tới.

Hình 78. Yêu cầu xác nhận đã được gởi vào gmail

Sau đó trả về giao diện cảm ơn.

Hình 79. Đồng thời xác nhận nằm ở trang web

 Đơn hàng của tôi


Sau khi đặt hàng người dùng có thể xem đơn hàng của tôi bằng
cách bấm vào tên tài khoản và chọn vào đơn hàng của tôi. Sau khi chọn
đơn hàng của tôi.

Hình 80. Xem thông tin đơn hàng đã đặt

67
Tại đây người dùng cũng có thể theo dõi đơn hàng của mình bằng
cách bấm vào icon ở trường hành động đối với mỗi đơn hàng.

Hình 81. Xem trạng thái đơn hàng


 Các chức năng khác
Ngoài các chức năng trên còn một số chức năng khác: tin tức,
thông báo, quảng cảo. Cả 3 đều được lấy thông tin từ phía Admin đã
them vào là lấy theo khoảng thời gian được cho phép hiển thị.
Chức năng lọc sản phẩm ở Client được phân chi theo 2 dạng:
 Lọc theo giá
 Lọc theo giá và danh mục

5.3.3. Phi chức năng

 Lịch sử hoạt động


Lịch sử hoạt động của người dùng được lưu lại vào bảng
customer_activity khi người dùng có các hành động thêm vào giỏ, cập
nhật số lượng sản phẩm trong giỏ, thay đổi địa chỉ, thay đổi thông tin tài
khoản, đặt hàng, …

68
Hình 82. Lịch sử đã hoạt động của user

 Thông tin thiết bị


Thông tin thiết bị được lưu lại khi người dùng truy cập vào
website. Các thông tin như địa chỉ IP, địa chỉ MAC, tên trình duyệt,
phiên bản trình duyệt,… Các thông tin đó được lưu vào bảng
Client_infor

Hình 83. Lịch sử của thiết bị hoạt động tại trang web không đăng ký user

69
CHƯƠNG 6. KẾT LUẬN
6.1. Đánh giá
6.1.1. Ưu điểm
- Giao diện dễ sử dụng.
- Thuận tiện cho người mua có thể xem được nhiều mặt hàng.
- Thanh toán nhanh chóng cho dù ở xa.
- Đầy đủ những chức năng cần thiết về trang web bán hàng cho người bán.
- Dễ dàng điều chỉnh các mặt hàng.
- Xem được thông tin sản phẩm có những bình luận gì.
- Biết được ai quan tâm tới sản phẩm.
- Người mua dễ dàng xem lịch sử hoạt động.
- Người bán dễ thêm, xóa, sửa trong phần cài đặt quản lý admin.
- Xem được thống kê người mua.
- Dễ dàng quản lý được kho hàng.
6.1.2. Nhược điểm
- Bảo mật kém.
- Chưa đăng ký tài khoản nhanh chóng.
- Bị nhiều ràng buộc admin không thể xóa sản phẩm nhanh chóng.
6.2. Hướng phát triển mở rộng đề tài
- Gia tăng bảo mật.
- Hiện thông tin kích sử hoạt động chi tiết về thiết bị và địa chỉ IP MAC
cho người mua chưa đăng nhập tài khoản.
- Xóa bỏ nhiều ràng buộc về chức năng xóa cho nhiều tính năng
6.3. Kết luận chung
- Nhóm chúng em đã thực hiện hết những tính năng cơ bản mà một web
bán hàng cần phải có.
- Nhóm chúng em sẽ cố gắng để phát triển đồ án lẫn bản thân để sau này
tốt hơn trong tương lai gần.

70
TÀI LIỆU THAM KHẢO
1. https://viblo.asia/p/tong-quan-ve-spring-framework-YWOZryEyKQ0 -
02/03/2023 - Khái quát về spring
2. https://topdev.vn/blog/html-la-gi/- 02/03/2023 – Giới thiệu html
3. https://topdev.vn/blog/css-la-gi/ - 13/03/2023 – Giới thiệu css
4. https://vietnix.vn/spring-boot-la-gi/ - 14/03/2023 – Spring boot
5. https://aws.amazon.com/vi/what-is/java/ - 15/03/2023 – Java là gì
6. https://wiki.matbao.net/jquery-la-gi-tong-quan-ve-jquery-va-huong-dan-su-
dung-jquery/ - 10/4/2023 – Cách sử Jquery
7. https://www.hostinger.vn/huong-dan/mysql-la-gi/ - 16/04/2023 – Tổng quát
mySQL

71

You might also like