1. Trang chủ
  2. » Tất cả

(Đồ án tốt nghiệp) Xây dựng website đấu giá trực tuyến sử dụng công nghệ Mern Stack

87 43 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 87
Dung lượng 4,45 MB

Nội dung

(Đồ án tốt nghiệp) Xây dựng website đấu giá trực tuyến sử dụng công nghệ Mern Stack(Đồ án tốt nghiệp) Xây dựng website đấu giá trực tuyến sử dụng công nghệ Mern Stack(Đồ án tốt nghiệp) Xây dựng website đấu giá trực tuyến sử dụng công nghệ Mern Stack(Đồ án tốt nghiệp) Xây dựng website đấu giá trực tuyến sử dụng công nghệ Mern Stack(Đồ án tốt nghiệp) Xây dựng website đấu giá trực tuyến sử dụng công nghệ Mern Stack(Đồ án tốt nghiệp) Xây dựng website đấu giá trực tuyến sử dụng công nghệ Mern Stack(Đồ án tốt nghiệp) Xây dựng website đấu giá trực tuyến sử dụng công nghệ Mern Stack(Đồ án tốt nghiệp) Xây dựng website đấu giá trực tuyến sử dụng công nghệ Mern Stack(Đồ án tốt nghiệp) Xây dựng website đấu giá trực tuyến sử dụng công nghệ Mern Stack(Đồ án tốt nghiệp) Xây dựng website đấu giá trực tuyến sử dụng công nghệ Mern Stack(Đồ án tốt nghiệp) Xây dựng website đấu giá trực tuyến sử dụng công nghệ Mern Stack(Đồ án tốt nghiệp) Xây dựng website đấu giá trực tuyến sử dụng công nghệ Mern Stack(Đồ án tốt nghiệp) Xây dựng website đấu giá trực tuyến sử dụng công nghệ Mern Stack(Đồ án tốt nghiệp) Xây dựng website đấu giá trực tuyến sử dụng công nghệ Mern Stack(Đồ án tốt nghiệp) Xây dựng website đấu giá trực tuyến sử dụng công nghệ Mern Stack(Đồ án tốt nghiệp) Xây dựng website đấu giá trực tuyến sử dụng công nghệ Mern Stack(Đồ án tốt nghiệp) Xây dựng website đấu giá trực tuyến sử dụng công nghệ Mern Stack

Trang 1



ĐỒ ÁN TỐT NGHIỆP

Tp Hồ Chí Minh, tháng 12 năm 2020

XÂY DỰNG WEBSITE ĐẤU GIÁ TRỰC TUYẾN

SỬ DỤNG CÔNG NGHỆ MERN STACK

Trang 2



ĐỒ ÁN TỐT NGHIỆP

XÂY DỰNG WEBSITE ĐẤU GIÁ TRỰC TUYẾN

SỬ DỤNG CÔNG NGHỆ MERN STACK

Tp Hồ Chí Minh, tháng 12 năm 2020

Trang 3

Đầu tiên, nhóm chúng em trong học kỳ này gửi lời cảm ơn chân thành nhất đến Khoa

Đào tạo Chất lượng cao Trong học kỳ này, sinh viên toàn trường đã mất một khoảng

thời gian rất dài khoảng ba tháng để nghỉ dịch COVID-19 Tuy nhiên, khoa đã kịp đưa

ra lịch trình và cách xử lí để tạo điều kiện cho chúng em tốt nhất có thể để hoàn thành

khóa luận tốt nghiệp

Và chúng em cũng gửi lời cảm ơn các thầy cô bộ môn Trong suốt những năm học qua,

các thầy cô đã truyền đạt rất nhiều kiến thức hay, bổ ích, giúp nhóm vận dụng được rất

nhiều trong đồ án tốt nghiệp này và đặc biệt là hành trang bước vào đời khi ra trường

Cuối cùng, chúng em xin gửi lời cảm ơn sâu sắc đển thầy Nguyễn Thanh Phước Trước

hết, cảm ơn thầy đã nhận và hướng dẫn nhóm trong đồ án tốt nghiệp này Lúc nhóm nhận

đề tài từ thầy thì cũng là lúc mà cả đất nước đang chống dịch COVID-19, việc gặp gỡ

trao đổi trực tiếp gần như là không thể, thay vào đó nhóm và thầy phải trao đổi qua mạng,

làm việc online, sau này khi có thông báo được đến trường lại thì nhóm và thầy mới có

thể gặp nhau nhiều hơn Những đóng góp ý kiến, sự hướng dẫn của thầy đã giúp nhóm

cải thiện chất lượng đồ án, đảm bảo tiến độ và hoàn thành đồ án tốt nhất có thể Một lần

nữa, chúng em cảm ơn thầy rất nhiều và chúc thầy mạnh khỏe, giữ vững ngọn lửa nhiệt

huyết, truyền đạt những kiến thức mới, hay và bổ ích đến cho các bạn sinh viên

Sự thiếu sót trong đồ án là điều khó tránh khỏi, rất mong nhận được những đóng góp ý

kiến, phản hồi từ thầy cô và các bạn

Chúng em xin chân thành cảm ơn

Nhóm sinh viên

Đỗ Hoàng Anh – Trần Tuấn Kiệt

Trang 4

Đây là một đề tài được chúng em nghĩ ra khi nhận thấy rằng xu hướng của người tiêu dùng bây giờ sử dụng những trang web thương mại điện tử ngày một nhiều, nhất là trong thời điểm dịch COVID hoành hành Tuy nhiên, đa phần những trang web thương mại điện tử bây giờ đều theo hình thức buôn bán thông thường, chưa có sự mới lạ trong cách giao dịch Vì thế nhằm tạo ra sân chơi mới cho người tiêu dùng, giúp cho họ có thể thuận buôn vừa bán, có thể mua và bán được những món đồ vừa ý với bản thân họ Đó cũng là

lí do chúng em chọn đề tài này

Mục tiêu phát triển đề tài là hoàn thiện trang web ở mức cao nhất có thể, có thể chưa hoàn thiện để sử dụng trên thị trường Củng cố lại các chức năng cơ bản đã làm bao gồm: đăng nhập, đăng ký, đấu giá, tạo sản phẩm đấu giá, xem lích sử đấu giá, thanh toán Từ

đó phát triển các chức năng nâng cao như tạo cho khách hàng nhiều phươn thức để đấu giá hơn, đánh giá người bán qua các sản phẩm mà người đó đã bán được Sau đó deploy trang web online để tiếp cận được đến người dùng

Kết quả đạt được của nhóm không được tốt lắm, chỉ hoàn thành được tương đối các chức năng cơ bản, lên ý tưởng cho các chức năng nâng cao và deploy trang web online Vẫn chưa thực hiện được các chức năng nâng cao đặc biệt và chưa tối ưu hóa được trang web

Có thể nói ứng dụng chỉ đạt được 70% mục tiêu đề ra

Trang 5

- Nghiên cứu về nghiệp vụ Đấu giá trực tuyến

- Deploy ứng dụng sử dụng Heroku và một số công nghệ liên quan

- Áp dụng các kiến thức trên để triển khai xây dựng ứng dụng website Đấu giá trực tuyến bằng công nghệ MERN STACK

NỘI DUNG:

- Nghiên cứu về các khái niệm, thành phần cơ bản, cách hoạt động của MERN STACK

- Nghiên cứu và deploy website sử dụng Heroku

- Tìm hiểu quy trình n.ghiệp vụ cũng như các chức năng thực hiện trong ứng dụng

đấu giá trực tuyến

HƯỚNG TIẾP CẬN VÀ GIẢI QUYẾT VẤN ĐỀ:

- Tra cứu, đọc các tài liệu và tham khảo liên quan đến công nghệ MERN STACK

- Tìm hiểu thương mại điện tử, các hình thức đấu giá trực tuyến từ các website thương mại điện tử như: chilindo, ebay, …

Trang 6

PHIẾU NHẬN XÉT CỦA GIẢNG VIÊN PHẢN BIỆN i

LỜI CẢM ƠN iv

LỜI MỞ ĐẦU v

CHƯƠNG 1: TỔNG QUAN 1

1.1 Khảo sát hiện trạng 1

1.2 Giới thiệu sản phẩm 2

1.3 Mục tiêu đề tài 2

1.4 Cấu trúc khóa luận 3

CHƯƠNG 2: GIỚI THIỆU VỀ CÔNG NGHỆ 5

2.1 Công nghệ MERN STACK là gì? 5

2.1.1 MongoDB là gì? 5

2.1.2 ExpressJS là gì? 7

2.1.3 ReactJs là gì? 8

2.1.4 NodeJS là gì? 10

2.2 RESTful API là gì 11

2.2.1 Khái niệm 11

2.2.2 Các phương thức HTTP được sử dụng trong REST 11

2.2.3 Ưu điểm 11

2.3 JSON Web Token (JWT) là gì? 12

2.3.1 Khái niệm 12

2.3.2 Thành phần 13

2.4 Heroku là gì 14

2.4.1 Khái niệm 14

2.4.2 Ưu điểm 14

2.4.3 Nhược điểm 14

2.5 Firebase là gì? 15

Trang 7

CHƯƠNG 3: ỨNG DỤNG ĐẤU GIÁ TRỰC TUYẾN 16

3.1 Giới thiệu ứng dụng 16

3.1.1 Khái niệm Đấu Giá Trực Tuyến 16

3.1.2 Khảo sát thị trường 16

3.1.3 Mô tả bài toán 16

CHƯƠNG 4: THIẾT KẾ HỆ THỐNG 18

4.1 Yêu cầu chức năng 18

4.1.1 Guest 18

4.1.2 User 19

4.1.3 Admin 21

4.2 Yêu cầu phi chức năng 21

4.3 Thiết kế sơ đồ use case 23

4.3.1 Sơ đồ use case 23

4.3.2 Đặc tả use case 23

4.4 Một số lược đồ Activity chính 34

4.4.1 Activity đăng nhập 34

4.4.2 Activity đăng kí 35

4.4.3 Activity xem danh sách sản phẩm 36

4.4.4 Activity xem chi tiết sản phẩm 37

4.4.5 Activity đăng sản phẩm 37

4.4.6 Activity đặt giá 38

4.4.7 Activity duyệt sản phẩm 39

4.5 Một số lược đồ tuần tự chính 40

4.5.1 Lược đồ tuần tự chức năng đăng nhập 40

4.5.2 Lược đồ tuần tự chức năng đăng kí 41

4.5.3 Lược đồ tuần tự chức năng xem danh sách sản phẩm 42

Trang 8

4.6 Mô hình dữ liệu quan hệ 44

4.6.1 Rành buộc 45

4.7 Thiết kế giao diện hệ thống 47

4.7.1 Màn hình chính 47

4.7.2 Màn hình đăng nhập 49

4.7.3 Màn hình đắng kí tài khoản 51

4.7.4 Màn hình danh sách sản phẩm 51

4.7.5 Màn hình chi tiết sản phẩm 54

4.7.6 Màn hình đăng sản phẩm 56

4.7.7 Màn hình lịch sử đấu giá - theo dõi đấu giá 58

4.7.8 Màn hình thanh toán 59

4.7.9 Màn hình thông tin người dùng – hóa đơn – lịch sử 62

4.7.10 Màn hình đăng nhập admin 66

4.7.11 Màn hình quản lý người dùng – sản phẩm – đơn hàng 66

CHƯƠNG 5: KẾT QUẢ, THỰC NGHIỆM, PHÂN TÍCH 72

5.1 Kết quả đạt được 72

5.2 Ưu điểm 72

5.3 Nhược điểm 72

5.4 Thực nghiệm 73

5.5 Phân tích 73

CHƯƠNG 6: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 74

6.1 Kết luận 74

6.2 Hướng phát triển 74

TÀI LIỆU THAM KHẢO 75

Trang 9

Hình 2.1: MEARN STACK 5

Hình 2.2: MongoDB 5

Hình 2.3: Express 7

Hình 2.4: React 8

Hình 2.5: NodeJs 10

Hình 2.6: Cách hoạt động của JWT 12

Hình 2.7: Thành phần của JWT 13

Hình 4.1: Sơ đồ Use Case 23

Hình 4.2: Activity đăng nhập 34

Hình 4.3: Activity đăng kí 35

Hình 4.4: Activity xem danh sách sản phẩm 36

Hình 4.5: Activity xem chi tiết sản phẩm 37

Hình 4.6: Activity đăng sản phẩm 37

Hình 4.7: Activity đặt giá 38

Hình 4.8: Activity duyệt sản phẩm 39

Hình 4.9: Lược đồ đăng nhập 40

Hình 4.10: Lược đồ đăng kí 41

Hình 4.11: Lược đồ xem danh sách sản phẩm 42

Hình 4.12: Lược đồ xem chi tiết sản phẩm 42

Hình 4.13: Lược đồ đăng sản phẩm 43

Hình 4.14: Lược đồ đặt giá 44

Hình 4.15: Mô hình quan hệ dữ liệu 45

Hình 4.17: Màn hình đăng nhập 49

Hình 4.18: Màn hình đăng kí 51

Hình 4.20: Màn hình chi tiết sản phẩm 55

Hình 4.21: Màn hình đăng sản phẩm 57

Trang 10

Hình 4.24: Màn hình thông tin người dùng 64 Hình 4.25: Màn hình đăng nhập Admin 66 Hình 4.26: Màn hình doanh thu 70

Trang 11

Bảng 4.2: Yêu cầu chức năng của User 19

Bảng 4.3: Yêu cầu chức năng Admin 21

Bảng 4.4: Yêu cầu phi chức năng 21

Bảng 4.5: Use case đăng nhập 23

Bảng 4.6: Use case đăng kí 24

Bảng 4.7: Use case xem trang chủ 25

Bảng 4.8: Use case xem danh sách sản phẩm 26

Bảng 4.9: Use case xem chi tiết sản phẩm 26

Bảng 4.10: Use case quản lý tài khoản 27

Bảng 4.11: Use case quản lý sản phẩm 28

Bảng 4.12: Use case đấu giá sản phẩm 29

Bảng 4.13: Use case theo dõi sản phẩm 29

Bảng 4.14: Use case mua sản phẩm ngay 30

Bảng 4.15: Use case đánh giá 30

Bảng 4.16: Use case thanh toán 31

Bảng 4.17: Use case đăng xuất 31

Bảng 4.18: Use case thống kê doanh thu 32

Bảng 4.19: Use case quản lý sản phẩm Admin 32

Bảng 4.20: Use case xem thông tin người dùng 33

Bảng 4.21: Mô tả màn hình chính 47

Bảng 4.22: Mô tả màn hình đăng nhập 50

Bảng 4.23: Mô tả màn hình đăng kí tài khoản 51

Bảng 4.24: Mô tả màn hình danh sách sản phẩm 53

Bảng 4.25: Mô tả màn hình chi tiết sản phẩm 55

Trang 12

Bảng 4.29: Mô tả màn hình thông tin người dùng 65 Bảng 4.30: Mô tả màn hình đăng nhập Admin 66 Bảng 4.31: Mô tả tổng quan màn hình trang Admin 70

Trang 13

CHƯƠNG 1: TỔNG QUAN 1.1 Khảo sát hiện trạng

Cùng với sự phát triển mạnh mẽ của hạ tầng công nghệ thông tin và Internet, hiện nay thương mại điện tử đang ở giai đoạn bùng nổ, rất nhiều các trang web thương mại điện tử của các doanh nghiệp lớn (Amazon, Alibaba,…) trên thế giới được ra đời Trong

đó thương mại điện tử đã giúp nhiều doanh nghiệp về marketing, đặc biệt là marketing

ra thị trường quốc tế, cắt giảm nhiều chi phí (chi phí nhân lực, chi phí bán hàng, chi phí liên lạc, chi phí mặt bằng,…) bán hàng qua mạng, liên kết các nhà cung ứng, hỗ trợ khách hàng từ xa Do vậy, các doanh nghiệp không ngừng ứng dụng thương mại điện tử nhằm tạo ra cho mình lợi thế riêng, đồng thời mở rộng mạng lưới kinh doanh, phân phối sản phẩm cũng như nâng cao chất lượng dịch vụ Trong đó hiện nay website thực sự đã trở thành một kênh kinh doanh mới, hiệu quả và rất kinh tế cho hầu hết các doanh nghiệp Việt Nam Website giúp doanh nghiệp không những quảng bá được hình ảnh doanh nghiệp, sản phẩm với chi phí thấp và tiện lợi mà còn mở rộng hơn nữa cơ hội tìm kiếm khách hàng, nhà cung cấp không chỉ trong nước mà còn trên phạm vi toàn cầu Để có được một website thương mại điện tử hiện đại có nhiều chức năng, các doanh nghiệp cần nghiên cứu, phân tích và thiết kế các module chức năng cơ bản như cung ứng hàng hóa, quản trị khách hàng, thanh toán, bảo mật,…kết hợp chặt chẽ với việc ứng dụng các tiêu chuẩn công nghệ tiên tiến, phù hợp Do đó, việc nghiên cứu khảo sát các mô hình thiết

kế xây dựng mô hình website thương mại điện tử với đầy đủ các module chức năng cơ

bản nhằm giúp các doanh nghiệp tối đa hóa hoạt động sản xuất kinh doanh là việc rất

cần thiết

Cùng trở lại với đề tài, đề tài xây dựng website đấu giá trực tuyến khi khảo sát trực tuyến thì có vẻ ở Việt Nam còn khá mới mẻ, hoặc là chưa được mọi người chú ý tới nhiều so với các trang thương mai điện tử thông thường Mặc dù vậy, đấu giá vẫn là một chức năng hay ho, có tiềm năng vì trên thực tế, các website thương mại điện tử lớn hầu hết đều có chức năng đấu giá và trên facebook cũng có rất nhiều các group nhóm đấu giá

có số lượng thành viên lên đến hàng chục ngàn người Về phần xử lí giao diện, do như nói ở trên trang web về đấu giá online còn ít nên tụi em xử lí giao diện có vẻ như là trông giống hầu hết các trang web bán hàng Tuy nhiên tụi em có tinh chỉnh sao cho phù hợp

Trang 14

1.2 Giới thiệu sản phẩm

Sản phẩm nhóm chúng em xây dựng thông qua việc sử dụng công nghệ MERN STACK đã có thể được coi là đáp ứng các yêu cầu cơ bản của một trang web đấu giá trực tuyến Người dùng khi vào trang web chúng em có thể đăng sản phẩm lên để đấu giá, tạo bước giá và thời gian đấu giá tùy ý và phù hợp với nhu thị yếu, … Từ đó tạo ra sự thoải mái, không bị gò bó và đơn giản để người dùng có thể dễ dàng tiếp cận trang web một cách hoàn hảo nhất

Về công nghệ thì ngôn ngữ lập trình JavaScript là một ngôn ngữ lập trình vô cùng phổ biến trên thế giới trong những năm qua Nó là một trong ba ngôn ngữ chính của lập trình web: HTML, CSS, JavaScript Và khi nhắc đến JavaScript thì không thể không kể đến bộ MERN STACK Đây là một bộ công cụ để lập trình trang web full stack từ back end đến front end bao gồm: MongoDB, ExpressJS, ReactJS, NodeJS

Hệ thống website đấu giá của chúng em hiện tại đang hướng đến các mặt hàng điện tử Tuy nhiên, nếu cần thiết có thể tinh chỉnh hoặc mở rộng để có thể được sử dụng để đấu giá nhiều mặt hàng đa dạng hơn như quần áo, giày dép, xe cộ, và một số đồ dùng khác

mà người dùng có nhu cầu

1.3 Mục tiêu đề tài

- Nắm được nghiệp vụ cơ bản của các trang web đang hoạt động: Do trang web

chúng em đang xây dựng là trang web đấu giá nên thế mạnh của trang web đó là nghiệp vụ chức năng trải nghiệm của người dùng là tối quan trọng Dựa vào việc khảo sát hiện trạng, từ đó có thể nắm được các nghiệp vụ về chức năng cũng như hiểu về các luồng xử lý, cách hoạt động của từng chức năng của các trang web lớn sẽ giúp xây dựng một hệ thống tốt, các chức năng hoàn thiện và đảm bảo về

mặt trải nghiệm của người dùng

- Tìm hiểu về công nghệ đang được sử dụng cho trang web MERN STACK

MERN STACK là công nghệ chính được áp dụng trong việc xây dựng hệ thống Công nghệ này được viết bằng ngôn ngữ JavaScript và bao gồm những thành phần chính là:

o MongoDB: Là một noSQL database hot nhất hiện nay MongoDB thường

đi với Mongoose – một library để giao tiếp với MongoDB dễ dàng hơn

o ExpressJS: Là web framework được xây dựng bằng Javascript chạy trên nền Node.js Nó hỗ trợ thêm nhiều tính năng cần có của một web framewok như: routing, middlewares, template engines, vv

o ReactJS: React Js là một thư viện javascript dùng để xây dựng UI, UI ở đây được dùng chính ở 2 nền tảng Web và Mobile Ở lĩnh vực Web, sử

Trang 15

dụng React Js có thể đem lại trải nghiệm tốt cho người dùng, cũng như khả năng Hot Reload giúp bạn lập trình nhanh hơn

o NodeJS: Là một nền tảng được xây dựng trên V8 JavaScript Engine – trình thông dịch thực thi mã JavaScript, giúp xây dựng các ứng dụng web một cách đơn giản và dễ dàng mở rộng

- Tích hợp phương thức thanh toán trực tuyến PayPal

Thanh toán trực tuyến là nền tảng của hệ thống thương mại điện tử Phát triển phương thức thanh toán trực tuyến sẽ hoàn thiện hóa thương mại điện tử theo đúng nghĩa là giao dịch hoàn toàn trên Internet Nhanh chóng, tiện lợi và tiết kiệm thời gian

- Triển khai ứng dụng trong môi trường thực tế

Triển khai ứng dụng trong môi trường thực tế tức là ứng dụng đã dược đưa ra thế giới bên ngoài, bắt đầu tiếp cận với nhiều người dùng thực tế Đối với việc triển khai trong môi trường thực tế các ứng dụng từ trường học sẽ có rât nhiều vấn đề cần giải quyết, đặc biệt là đối mặt với các vấn đề như bảo mật, khả năng lưu trữ cũng như sức chịu tải của trang web Với khả năng chúng em hiện giờ thì chưa thể tối ưu cũng như xử lí tốt vấn đề này được

Tuy nhiên chúng em vẫn sẽ triển khai trang web lên môi trường thực tế để có được những trải nghiệm cũng như kiến thức mới cho sau này Cụ thể thì chúng

em sẽ deploy backend lên Heroku, còn front end thì sẽ được deploy lên Firebase

1.4 Cấu trúc khóa luận

- CHƯƠNG 1: TỔNG QUAN

- CHƯƠNG 2: GIỚI THIỆU VỀ CÔNG NGHỆ

- CHƯƠNG 3: ỨNG DỤNG ĐẤU GIÁ TRỰC TUYẾN

- CHƯƠNG 4: THIẾT KẾ HỆ THỐNG

- CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

Trang 16

CHƯƠNG 2: GIỚI THIỆU VỀ CÔNG NGHỆ 2.1 Công nghệ MERN STACK là gì?

MERN STACK là nguyên bộ combo open source các công nghệ đều liên quan đến JavaScript hot nhất hiện nay: MongoDB, ExpressJS, ReactJS, NodeJS

Hình 2.1: MEARN STACK 2.1.1 MongoDB là gì?

Hình 2.2: MongoDB

2.1.1.1 Khái niệm

- MongoDB là một hệ quản trị cơ sở dữ liệu mã nguồn mở, là CSDL thuộc NoSql

và được hàng triệu người sử dụng

Trang 17

- MongoDB là một database hướng tài liệu (document), các dữ liệu được lưu trữ trong document kiểu JSON thay vì dạng bảng như CSDL quan hệ nên truy vấn sẽ rất nhanh

- Với CSDL quan hệ chúng ta có khái niệm bảng, các cơ sở dữ liệu quan hệ (như MySQL hay SQL Server ) sử dụng các bảng để lưu dữ liệu thì với MongoDB chúng ta sẽ dùng khái niệm là collection thay vì bảng

- So với RDBMS thì trong MongoDB collection ứng với table, còn document sẽ ứng với row, MongoDB sẽ dùng các document thay cho row trong RDBMS

- Các collection trong MongoDB được cấu trúc rất linh hoạt, cho phép các dữ liệu lưu trữ không cần tuân theo một cấu trúc nhất định

- Thông tin liên quan được lưu trữ cùng nhau để truy cập truy vấn nhanh thông qua ngôn ngữ truy vấn MongoDB

2.1.1.2 Ưu điểm

- Do MongoDB sử dụng lưu trữ dữ liệu dưới dạng Document JSON nên mỗi một collection sẽ có các kích cỡ và các document khác nhau, linh hoạt trong việc lưu trữ dữ liệu, nên bạn muốn gì thì cứ insert vào thoải mái

- Dữ liệu trong MongoDB không có sự ràng buộc lẫn nhau, không có join như trong RDBMS nên khi insert, xóa hay update nó không cần phải mất thời gian kiểm tra xem có thỏa mãn các ràng buộc dữ liệu như trong RDBMS

- MongoDB rất dễ mở rộng (Horizontal Scalability) Trong MongoDB có một khái niệm cluster là cụm các node chứa dữ liệu giao tiếp với nhau, khi muốn mở rộng

hệ thống ta chỉ cần thêm một node với vào cluster:

- Trường dữ liệu “_id” luôn được tự động đánh index (chỉ mục) để tốc độ truy vấn thông tin đạt hiệu suất cao nhất

- Khi có một truy vấn dữ liệu, bản ghi được cached lên bộ nhớ Ram, để phục vụ lượt truy vấn sau diễn ra nhanh hơn mà không cần phải đọc từ ổ cứng

- Hiệu năng cao: Tốc độ truy vấn (find, update, insert, delete) của MongoDB nhanh hơn hẳn so với các hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) Với một lượng

dữ liệu đủ lớn thì thử nghiệm cho thấy tốc độ insert của MongoDB có thể nhanh tới gấp 100 lần so với MySQL

2.1.1.3 Nhược điểm

Trang 18

- Một ưu điểm của MongoDB cũng chính là nhược điểm của nó MongoDB không

có các tính chất ràng buộc như trong RDBMS nên khi thao tác với mongoDB thì phải hết sức cẩn thận

- Tốn bộ nhớ do dữ liệu lưu dưới dạng key-value, các collection chỉ khác về value

do đó key sẽ bị lặp lại Không hỗ trợ join nên dễ bị dữ thừa dữ liệu

- Khi insert/update/remove bản ghi, MongoDB sẽ chưa cập nhật ngay xuống ổ cứng, mà sau 60 giây MongoDB mới thực hiện ghi toàn bộ dữ liệu thay đổi từ RAM xuống ổ cứng điêù này sẽ là nhược điểm vì sẽ có nguy cơ bị mất dữ liệu khi xảy ra các tình huống như mất điện

2.1.2 ExpressJS là gì?

Hình 2.3: Express 2.1.2.1 Khái niệm

- Express js là một Framework nhỏ, nhưng linh hoạt được xây dựng trên nền tảng của Nodejs Nó cung cấp các tính năng mạnh mẽ để phát triển web hoặc mobile

- Và hơn hết, các Framework nổi tiếng của NodeJS hiện nay đều sử dụng ExpressJS như một core function, chẳng hạn: MERN, SailsJS, MEAN,

Trang 19

o Controllers tương tác với cả views và models

- Models:

o Chứa các schema tương ứng với các trường dữ liệu trên server

o models chỉ tương tác với controller

- Public: Các file tĩnh như css, img, js

- Middleware: Là các hàm trung gian được dùng để tiền xử lý, lọc các request trước khi trả về response cho người dùng Nếu các request thỏa điều kiện thì mới cho chương trình chạy tiếp

2.1.3 ReactJs là gì?

Hình 2.4: React 2.1.3.1 Khái niệm

- ReactJS được hiểu nôm na là một thư viện trong đó có chứa nhiều JavaScript mã nguồn mở và cha đẻ của ReactJS đó chính là một ông lớn với cái tên ai cũng biết

đó chính là Facebook Mục đích của việc tạo ra ReactJS là để tạo ra những ứng dụng website hấp dẫn với tốc độ nhanh và hiệu quả cao với những mã hóa tối thiểu

- Mục đích chủ chốt của ReactJS đó chính là mỗi website khi đã sử dụng ReactJS thì phải chạy thật mượt thật nhanh và có khả năng mở rộng cao và đơn giản thực hiện

- Công nghệ DOM ảo giúp tăng hiệu năng cho ứng dụng Việc chỉ node gốc mới

có trạng thái và khi nó thay đổi sẽ tái cấu trúc lại toàn bộ, đồng nghĩa với việc DOM tree cũng sẽ phải thay đổi một phần, điều này sẽ ảnh hưởng đến tốc độ xử

lý React JS sử dụng Virtual DOM (DOM ảo) để cải thiện vấn đề này.Virtual

Trang 20

DOM là một object Javascript, mỗi object chứa đầy đủ thông tin cần thiết để tạo

ra một DOM, khi dữ liệu thay đổi nó sẽ tính toán sự thay đổi giữa object và tree thật, điều này sẽ giúp tối ưu hoá việc re-render DOM tree thật

2.1.3.2 Thành Phần

- JSX: Là một dạng ngôn ngữ cho phép viết các mã HTML trong Javascript JSX

kế thừa dựa trên Javascript, vì vậy rất dễ dàng để cho các lập trình viên Javascripts

có thể sử dụng

- Components: Trong React, chúng ta xây dựng trang web sử dụng những thành phần (component) nhỏ Chúng ta có thể tái sử dụng một component ở nhiều nơi, với các trạng thái hoặc các thuộc tính khác nhau, trong một component lại có thể chứa thành phần khác Mỗi component trong React có một trạng thái riêng, có thể thay đổi, và React sẽ thực hiện cập nhật component dựa trên những thay đổi của

trạng thái Mọi thứ React đều là component

- Props: giúp các component tương tác với nhau, component nhận input gọi là props, và trả thuộc tính mô tả những gì component con sẽ render Prop là bất biến

- State: thể hiện trạng thái của ứng dụng, khi state thay đồi thì component đồng thời render lại để cập nhật UI

2.1.3.3 Ưu điểm:

- Tạo ra cho chính bản thân nó một dom ảo, đây là nơi mà các component được tồn tại trên đó

- Viết các đoạn code JS sẽ trởi nên dễ dàng hơn vì nó sử dụng một cú pháp đặc biệt

đó chính là cú pháp JSX nghĩa là cú pháp này cho phép ta trộn được giữa code HTML và Javascript

- Thân thiện với SEO: đây là một trong những điều đặc biệt và chỉ có mỗi ReactJS đây cũng chính là vấn đề lớn của các JS Frameworks vì hầu như các JS Frameworks không thân thiện với các cổ máy tìm kiếm mặc dù đã được cải thiện nhiều

- Có nhiều công cụ phát triển là lợi ích tiếp theo của ReactJS Khi bạn bắt đầu một ReactJS bạn đừng quên cài đặt thêm ứng dụng mở rộng của Chrome chuyên dành cho ReactJS nhé vì nó sẽ giúp cho bạn debug code một cách dễ dàng hơn, khi bạn

đã cài đặt nó xong bạn sẽ có một cái nhìn trực tiếp vào Virtual Dom và lúc đó cũng đồng nghĩa với việc là bạn đang xem một cây dom thông thường vậy

Trang 21

2.1.4 NodeJS là gì?

Hình 2.5: NodeJs 2.1.4.1 Khái niệm

- Nodejs là một nền tảng (Platform) phát triển độc lập được xây dựng ở trên Javascript Runtime của Chrome mà chúng ta có thể xây dựng được các ứng dụng mạng một cách nhanh chóng và dễ dàng mở rộng

- Nodejs được xây dựng và phát triển từ năm 2009, bảo trợ bởi công ty Joyent, trụ

sở tại California, Hoa Kỳ Dù sao thì chúng ta cũng nên biết qua một chút chút lịch sử của thứ mà chúng ta đang học một chút chứ nhỉ? =))

- Phần Core bên dưới của Nodejs được viết hầu hết bằng C++ nên cho tốc độ xử lý

và hiệu năng khá cao

- Nodejs tạo ra được các ứng dụng có tốc độ xử lý nhanh, realtime thời gian thực

- Nodejs áp dụng cho các sản phẩm có lượng truy cập lớn, cần mở rộng nhanh, cần đổi mới công nghệ, hoặc tạo ra các dự án Startup nhanh nhất có thể

2.1.4.2 Ưu điểm

- Chạy rất nhanh: NodeJ được xây dựng dựa vào nền tảng V8 Javascript Engine nên việc thực thi chương trình rất nhanh

- Đơn luồng nhưng khả năng mở rộng cao:

- Không đệm: NodeJS không đệm bất kì một dữ liệu nào và các ứng dụng này chủ yếu là đầu ra dữ liệu

- Có giấy phép: NodeJS đã được cấp giấy phép bởi MIT License

- Mã nguồn mở, miễn phí, chạy trên nhiều nền tảng và được viết bằng ngôn ngữ JavaScript

2.1.4.3 Nhược điểm

Trang 22

- Giống như hầu hết các công nghệ mới, việc triển khai Node.js trên host không phải là điều dễ dàng

2.2 RESTful API là gì

2.2.1 Khái niệm

REST là viết tắt của Representational State Tranfer REST là một chuẩn web dựa vào các kiến trúc cơ bản sử dụng giao thức HTTP Nó xử lí tài nguyên, nơi mà mỗi thành phần là một tài nguyên và nguồn tài nguyên này có thể được truy cập qua các giao diện chung bởi sử dụng các phương thức HTTP chuẩn REST lần đầu tiên được giới thiệu bởi Roy Fielding năm 2000

Về cơ bản, một REST Server cung cấp các chế độ truy cập đến nguồn tài nguyên

và REST Client truy cập và sửa đổi các nguồn tài nguyên này bởi sử dụng phương thức HTTP Ở đây mỗi nguồn tài nguyên được xác định bởi một URI REST sử dụng các cách biểu diễn khác nhau để biểu diễn các nguồn tài nguyên như text, JSON, XML nhưng phổ biến nhất vẫn là JSON

2.2.2 Các phương thức HTTP được sử dụng trong REST

HTTP định nghĩa một tập các phương thức để miêu tả các yêu cầu giữa các hệ thống với nhau để thêm, xóa, cập nhật, hoặc đơn giản là đọc một tài nguyên Có tổng cộng 9 loại phương thức: GET, HEAD, POST, PUT, PATCH, DELETE, CONNECT, OPTIONS, TRACE Trong đề tài này, nhóm thực hiện sử dụng các phương thức sau:

- GET: dùng để truy xuất dữ liệu và không sửa đổi thông tin theo bất kì cách nào

- POST: dùng để tạo ra một đối tượng mới trong cơ sở dữ liệu

- PATCH: dùng để cập nhật một phần thông tin của đối tượng được yêu cầu

- DELETE: dùng để xóa đối tượng được yêu cầu

2.2.3 Ưu điểm

- Khả năng mở rộng cao nhờ sự tách biệt giữa các thành phần

- Sử dụng được cho nhiều nền tảng khác nhau mobile, web…

- Giao tiếp giữa các thành phần được định nghĩa rõ ràng, dễ hiểu

- Khả năng thay đổi linh hoạt, không phụ thuộc vào một loại dữ liệu nhất định

Trang 23

2.3 JSON Web Token (JWT) là gì?

2.3.1 Khái niệm

JSON Web Token (JWT) là 1 tiêu chuẩn mở (RFC 7519) định nghĩa cách thức truyền tin an toàn giữa các thành viên bằng 1 đối tượng JSON Thông tin này có thể được xác thực và đánh dấu tin cậy nhờ vào "chữ ký" của nó Phần chữ ký của JWT sẽ được

mã hóa lại bằng HMAC hoặc RSA

Hình 2.6: Cách hoạt động của JWT

Những đặc điểm nổi bật của JWT:

- Kích thước nhỏ: JWT có thể được truyền thông qua URL, hoặc qua giao thức POST, hay nhét vào bên trong phần HTTP Header Kích thước nhỏ hơn ứng với công việc truyền tải sẽ nhanh hơn Dưới đây là cách thức truyền token vào trong HTTP Header sử dụng Bearer Schema

- Khép kín: Phần Payload (hiểu nôm na là khối hàng) chứa toàn bộ những thông tin mà chúng ta cần tới, ví dụ như thông tin của người dùng (thay vì phải truy vấn

cơ sở dữ liệu nhiều lần)

Trang 24

2.3.2 Thành phần

Hình 2.7: Thành phần của JWT

- HEADER: Gồm hai phần chính: loại token (mặc định là JWT - Thông tin này cho biết đây là một Token JWT) và thuật toán đã dùng để mã hóa (HMAC SHA256 HS256 hoặc RSA)

- PAYLOAD:Chứa các claims Claims là một các biểu thức về một thực thể (chẳng hạn user) và một số metadata phụ trợ Có 3 loại claims thường gặp trong Payload:

reserved, public và private claims

o Reserved claims: Đây là một số metadata được định nghĩa trước, trong đó một số metadata là bắt buộc, số còn lại nên tuân theo để JWT hợp lệ và đầy đủ thông tin

o Public claims: Claims được cộng đồng công nhận và sử dụng rộng rãi

o Private claims: Claims tự định nghĩa (không được trùng với Reserved Claims và Public Claims), được tạo ra để chia sẻ thông tin giữa 2 parties

đã thỏa thuận và thống nhất trước đó

- SIGNATURE: Chữ ký Signature trong JWT là một chuỗi được mã hóa bởi header, payload cùng với một chuỗi bí mật Do bản thân Signature đã bao gồm cả header và payload nên Signature có thể dùng để kiểm tra tính toàn vẹn của dữ liệu khi truyền tải

Trang 25

2.4 Heroku là gì

2.4.1 Khái niệm

Hình 2.8: Khái niệm Heroku

Heroku là gì? Nó là nền tảng đám mây cho phép các lập trình viên xây dựng, triển khai, quản lý và mở rộng ứng dụng (PaaS – Platform as a service)

Nó rất linh hoạt và dễ sử dụng, cung cấp cho một con đường đơn giản nhất để đưa sản phẩm tiếp cận người dùng Nó giúp các nhà phát triển tập trung vào phát triển sản phẩm mà không cần quan tâm đến việc vận hành máy chủ hay phần cứng…

2.4.2 Ưu điểm

- Có thể dùng miễn phí cho nhiều ngôn ngữ: Nodejs, PHP, Python, Kotlin,…

- Cung cấp Database, SSL miễn phí, hỗ trợ mạnh làm việc team cũng như liên kết với Github một cách đơn giản

2.4.3 Nhược điểm

- Việc miễn phí sẽ chỉ có giới hạn là 550 giờ mỗi tháng Nếu muốn tăng lên 1000 giờ thì bạn cần cài đặt phương thức thanh toán trên đó

Trang 27

CHƯƠNG 3: ỨNG DỤNG ĐẤU GIÁ TRỰC TUYẾN 3.1 Giới thiệu ứng dụng

Xây dựng Website thương mại điện tử cho phép khách hàng có thể mua hoặc bán sản phẩm theo hình thức đấu giá

3.1.1 Khái niệm Đấu Giá Trực Tuyến

Đấu giá là một quá trình mua và bán bằng cách người bán đưa ra món hàng cần đấu giá và giá khởi điểm, người mua ra giá, kết thúc phiên đấu giá người bán bán món hàng cho người mua có giá cao nhất hoặc hợp lý nhất

Đấu giá trực tuyến là hình thức cho phép mọi người tham gia đấu giá các sản phẩm hoặc các dịch vụ thông qua Internet

Và nhu cầu buôn bán theo hình thức đấu giá này ở Việt Nam cũng không hề nhỏ Theo khảo sát của nhóm chúng em thì có rất nhiều group bán hàng trên facebook đang

sử dụng hình thức đấu giá này để mua bán và trao đổi Mỗi group cũng tầm chục ngàn người tham gia Tuy nhiên, thương mại điện tử Việt Nam vẫn chưa khai thác hết tiềm năng của mình, chưa có website nào chiếm lĩnh được thị trường rộng lớn này, mô hình mua bán theo hình thức đấu giá chưa được phổ biến

3.1.3 Mô tả bài toán

Website ĐẤU GIÁ TRỰC TUYẾN tạo môi trường cho mọi thành viên sắm, tham gia đấu giá hoặc mang sản phẩm của mình rao bán đấu giá

- Hệ thống xây dựng tổ chức sàn đấu giá

- Thành viên đăng ký đặt sản phẩm của mình lên sàn đấu giá, cung cấp thông tin sản phẩm, giá khởi điểm, bước giá, thời gian đấu giá

Trang 28

- Sau khi đấu giá thành viên có thể đánh giá theo sản phẩm mình đã đấu giá

- Quản lý sản phẩm rao bán đấu giá theo thành viên

Trang 29

CHƯƠNG 4: THIẾT KẾ HỆ THỐNG 4.1 Yêu cầu chức năng

4.1.1 Guest

Bảng 1: Yêu cầu chức năng của Guest

Tạo tài khoản

«Functional» Status: Approved Priority: Hight Difficulty: Low

Cho phép Guest tạo tài khoản

Đăng nhập

«Functional» Status: Approved Priority: Hight Difficulty: Low

Cho phép Guest đăng nhập vào ứng dụng

Xem trang chủ

«Functional» Status: Approved Priority: Hight Difficulty: Medium

Cho phép Guest xem trang chủ của ứng dụng Bao gồm:

- Xem một số sản phẩm sắp hết hạn

- Xem một số sản phẩm theo từng loại sản phẩm (điện thoại, máy tính,…)

Xem danh sách sản phẩm

«Functional» Status: Approved Priority: Hight Difficulty: Medium

Cho phép Guest xem toàn bộ sản phẩm mà người dùng đã chọn

ở trang chủ Bao gồm:

- Xem một số sản phẩm sắp hết hạn, có phân trang

- Xem một số sản phẩm theo từng loại sản phẩm (điện thoại, máy tính,…), có phân trang

Xem chi tiết sản phẩm

«Functional» Status: Approved Priority: Hight Difficulty: Medium

Trang 30

Cho phép Guest xem chi tiết thông tin về sản phẩm như: tên sản phẩm một số hình ảnh của sản phẩm, giá hiện tại của sản phẩm, bược giá, giá mua liền, chi tiết sản phẩm và cả tên của những người đang đặt giá sản phẩm đó

4.1.2 User

Bảng 2: Yêu cầu chức năng của User

Xem trang chủ (giống với Guest)

Xem danh sách sản phẩm (giống với Guest)

Xem chi tiết sản phẩm (giống với Guest)

Tạo sản phẩm đấu giá

«Functional» Status: Approved Priority: Hight Difficulty: Low

Cho phép User tạo sản phẩm để bày lên đấu giá bằng cách nhập đầy đủ thông tin cần thiết Sản phẩm được tạo tối đa có được bốn hình

Đấu giá

«Functional» Status: Approved Priority: Hight Difficulty: Medium

Cho phép User thực hiện đấu giá sản phẩm mà họ mong muốn Giá đấu sẽ bằng chính giá hiện tại của sản phẩm cộng thêm bước giá

Thực hiện mua sản phẩm ngay lập tức

«Functional» Status: Approved Priority: Hight Difficulty: Low

Cho phép người dùng ngay lập tức mua được ngay sản phẩm

Xem danh sách sản phẩm đã tạo

«Functional» Status: Approved Priority: Hight Difficulty: Low

Trang 31

Cho phép User xem lại, theo dõi các sản phẩm mà mình đã tạo

Xem danh sách sản phẩm đã đấu giá

«Functional» Status: Approved Priority: Hight Difficulty: Low

Cho phép User xem lại, theo dõi các sản phẩm mà mình đã đấu giá

Xem thông tin cá nhân

«Functional» Status: Approved Priority: Hight Difficulty: Low

Cho phép User xem lại thông tin cá nhân của bản thân

Thanh toán sản phẩm

«Functional» Status: Approved Priority: Hight Difficulty: Medium

Cho phép User điền thêm thông tin để thanh toán sản phẩm Nếu User chỉ submit mỗi địa chỉ, ứng dụng sẽ hiểu là User sẽ thanh toán theo hình thức COD Ngoài ra, User có thể lựa chọn phươn thức thanh tóa qua ví điện tử PayPal

Rating người bán

«Functional» Status: Approved Priority: Medium Difficulty: Medium

Cho phép User đánh giá người dùng khác thông qua hóa đơn sản phẩm Mỗi hóa đơn thì User sẽ chỉ đánh giá được một lần

Thông báo

«Functional» Status: Approved Priority: Medium Difficulty: Medium

Cho phép User nhận được thông báo khi đấu giá thành công sản phẩm

Đăng xuất

«Functional» Status: Approved Priority: Hight Difficulty: Low

Trang 32

Cho phép User đăng xuất tài khoản Sau khi đăng xuất thì token, thông tin của User sẽ bị xóa

4.1.3 Admin

Bảng 3: Yêu cầu chức năng Admin

Đăng nhập admin

«Functional» Status: Approved Priority: Hight Difficulty: Low

Cho phép Admin đăng nhập với tài khoản đã có sãn

Xem thống kê

«Functional» Status: Approved Priority: Hight Difficulty: Low

Cho phép Admin xem thống kê doanh thu của ứng dụng

Quản lý tài khoản

«Functional» Status: Approved Priority: Hight Difficulty: Low

Cho phép Admin xem danh sách toàn bộ thông tin tài khoản Có thể xóa tài khoản nếu thấy cấn thiết

Quản lý sản phẩm

«Functional» Status: Approved Priority: Hight Difficulty: Low

Cho phép Admin xem danh sách thông tin toàn bộ sản phẩm, duyệt những sản phẩm hợp lệ để show trên trang web ứng dụng

4.2 Yêu cầu phi chức năng

Bảng 4: Yêu cầu phi chức năng

Khả năng mở rộng

«Functional» Status: Proposed Priority: Medium Difficulty: High

Có khả năng mở rộng thêm các chức năng mới

Giao diện

«Functional» Status: Approved Priority: High Difficulty: High

Trang 33

Giao diện dễ nhìn, dễ sử dụng

Authorization

«Functional» Status: Approved Priority: Hight Difficulty: Low

Xác thực người dùng Hệ thống phân quyền cho người dùng và lưu lại token khi người dùng đăng nhập vào hệ thống

Trang 34

4.3 Thiết kế sơ đồ use case

4.3.1 Sơ đồ use case

Hình 4.1: Sơ đồ Use Case

4.3.2 Đặc tả use case

4.3.2.1 Guest

4.3.2.1 Đăng nhập

Bảng 5: Use case đăng nhập

Tên use case Đăng nhập

Tóm tắt Usecase bắt đầu khi một người dùng muốn đăng nhập

Trang 35

Actor Guest

Dòng sự kiện chính 1 Người dùng chọn chức năng “Đăng nhập”

2 Hệ thống yêu cầu người dùng nhập tài khoản, mật khẩu

3 Người dùng nhập tài khoản, mật khẩu

4 Hệ thống kiểm tra tài khoản, mật khẩu được nhập

và cho phép người dùng đăng nhập vào hệ thống

5 Usecase kết thúc Dòng sự kiện phụ 1 Người dùng nhập sai tài khoản hoặc mật khẩu

2 Hệ thống đưa cho phép người dùng nhập lại, hệ thống trở về đầu dòng sự kiện chính

Các yêu cầu đặc biệt Không có

Điều kiện tiên quyết Có tài khoản trong hệ thống

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

cấp quyền tương ứng cho actor Ngược lại trạng thái hệ thống không thay đổi

4.3.2.2 Đăng kí

Bảng 6: Use case đăng kí

Tên use case Đăng kí

Tóm tắt Usecase bắt đầu khi một người dùng muốn tạo tài khoản Actor Guest

Dòng sự kiện chính 1 Người dùng chọn chức năng “Đăng ký”

2 Hệ thống hiển thị và yêu cầu người dùng điền các thông tin sau: họ tên, tài khoản, email, số điện thoại, ngày sinh, giới tính, địa chỉ

3 Người dùng điền đầy đủ các thông tin trên, đồng

ý “Đăng ký” với các điều khoản hệ thống đưa ra

4 Hệ thống kiểm tra tính hợp lệ của các thông tin:

a Họ tên, tài khoản, email, số điện thoại,

b Tài khoản chỉ bao gồm các ký tự là chữ cái hoặc số, dấu chấm, gạch dưới, không được có các

ký tự đặc biệt

Trang 36

c Tài khoản, Họ Tên không phản cảm, không có

ý nghĩa bậy bạ không có khoảng trắng

5 Hệ thống lưu thông tin xuống CSDL

6 Usecase kết thúc Dòng sự kiện phụ 1 Tài khoản đã tồn tại.-> Hệ thống yêu cầu người

dùng chọn tài khoản khác

2 Email hoặc Số điện thoại đã tồn tại.-> Hệ thống yêu cầu người dùng kiểm tra Email hoặc Số điện thoại Nếu người dùng đã đăng ký, vui lòng chọn chức năng “Khôi phục tài khoản”

3 Người dùng chưa nhập đầy đủ thông tin.-> Hệ thống yêu cầu người dùng nhập đầy đủ thông tin

4 Thông tin về họ, tên, email, số điện thoại ngày sinh, giới tính, chỗ ở hiện nay không hợp lệ.-> Hệ thống yêu cầu người dùng khai báo chính xác, kèm theo hướng dẫn giúp người dùng thực hiện Các yêu cầu đặc biệt Không có

Điều kiện tiên quyết Có tài khoản trong hệ thống

Hậu điều kiện Kết thúc usecase: Nếu thành công, người dùng tạo tài

khoản thành công và trở thành thành viên của hệ thống

Hệ thống cập nhật CSDL Người dùng có thể Đăng nhập vào hệ thống và tham gia đấu giá hay đăng sản phẩm cho người khác đấu giá Ngược lại, trạng thái hệ thống không thay đổi

4.3.2.3 Xem trang chủ

Bảng 7: Use case xem trang chủ

Tên use case Xem trang chủ

Tóm tắt Usecase bắt đầu khi người dùng đăng nhập hay mở trang

web lên

Actor: Guest, User

Dòng sự kiện chính Người dùng có thể thấy được thông tin, giao diện chính

của trang web

Trang 37

Dòng sự kiện phụ Không có

Các yêu cầu đặc biệt Không có

Điều kiện tiên quyết Phải đăng nhập vào hệ thống

Hậu điều kiện Kết thúc usecase, người dùng xem được sản phẩm và có

thể thao tác để tiến tới thao tác xem danh sách sản phẩm

4.3.2.4 Use case xem danh sách sản phẩm

Bảng 8: Use case xem danh sách sản phẩm

Tên use case Xem danh sách sản phẩm

Tóm tắt Usecase bắt đầu khi người dùng muốn xem danh sách

sản phẩm

Actor: Người dung

Dòng sự kiện chính 1 Người dùng có nhu cầu lựa chọn sản phẩm

2 Hệ thống cho phép người dùng xem danh sách sản phẩm

3 Người dùng chọn danh sách muốn xem theo danh mục hoặc có thể là những sản phẩm sắp hết thời gian đấu giá

4 Hệ thống hiển thị danh sách sản phẩm

5 Usecase kết thúc

Dòng sự kiện phụ Không có

Các yêu cầu đặc biệt Không có

Điều kiện tiên quyết Không có

Hậu điều kiện Kết thúc usecase, người dùng xem được danh sách sản

phẩm mong muốn

4.3.2.5 Xem chi tiết sản phẩm

Bảng 9: Use case xem chi tiết sản phẩm

Tên use case Xem chi tiết sản phẩm

Tóm tắt Usecase mô tả các cách người dùng xem thông tin sản

phẩm

Trang 38

Actor: Guest, User

Dòng sự kiện chính 1 Người dùng chọn sản phẩm muốn xem

2 Hệ thống hiển thị chi tiết sản phẩm bao gồm các thông tin: tên sản phẩm, hình ảnh sản phẩm, thông tin chi tiết sản phẩm, tình trạng sản phẩm, giá hiện tại, bước giá, thời gian kết thúc đấu giá,

và danh sách các phiên đấu giá của trước đó của sản phẩm

3 Usecase kết thúc

Dòng sự kiện phụ Không có

Các yêu cầu đặc biệt Không có

Điều kiện tiên quyết Không có

Hậu điều kiện Kết thúc usecase, người dùng xem được thông tin chi tiết

sản phẩm

4.3.2.6 Quản lý tài khoản

Bảng 4.10: Use case quản lý tài khoản

Tên use case Quản lý thông tin tài khoản

Tóm tắt Usecase mô tả các cách người dùng xem thông tin tài

khoản

Actor: User

Dòng sự kiện chính 1 Người dùng bấm vào chọn thông tin cá nhân

2 Hệ thống hiển thị thông tin cá nhân của người dùng

3 Người dùng có thể chỉnh sửa thông tin cá nhận của bản thân

4 Usecase kết thúc

Dòng sự kiện phụ Không có

Các yêu cầu đặc biệt Không có

Điều kiện tiên quyết Phải đăng nhập vào hệ thống

Hậu điều kiện Kết thúc usecase, người dùng xem, chỉnh sửa được

thông tin của bản thân

Trang 39

4.3.2.7 Quản lý sản phẩm

Bảng 4.11: Use case quản lý sản phẩm

Tên use case Quản lý sản phẩm đăng bán

Tóm tắt Usecase mô tả các cách người dùng đăng bán sản phẩm

hoặc theo dõi, xem lại sản phẩm mình đã đăng

Actor: User

Dòng sự kiện chính 1 Thành viên chọn chức năng “Đăng sản phẩm”

2 Hệ thống hiển thị giao diện đăng sản phẩm cho thành viên điền thông tin

3 Thành viên điền các thông tin của sẩn phẩm cần đăng

4 Hệ thống kiểm tra tính hợp lệ của các thông tin Thành viên đã điền vào

5 Hệ thống cho phép Thành viên đăng hình ảnh sản phẩm, tối đa 4 hình ảnh

6 Thành viên đồng ý “Hoàn Tất”

7 Hệ thống lưu sản phẩm và đặt sản phẩm ở trạng thái “Chưa đấu giá”, phải đợi admin duyệt xem sản phẩm có hợp lệ

8 Nếu hợp lí sản phẩm sẽ được đăng lên để mọi người khác đấu giá

9 Người dùng có thể chọn xem lại sản phẩm đã đăng để có thể theo dõi tình hình cũng như giá hiện tại của sản phẩm

10 Usecase kết thúc

Dòng sự kiện phụ Không có

Các yêu cầu đặc biệt Không có

Điều kiện tiên quyết Phải đăng nhập vào hệ thống

Hậu điều kiện Không có

4.3.2.8 Đấu giá sản phẩm

Trang 40

Bảng 4.12: Use case đấu giá sản phẩm

Tên use case Đấu gia sản phẩm

Tóm tắt Usecase bắt đầu khi thành viên muốn tham gia đấu giá

sản phẩm

Actor: User

Dòng sự kiện chính 1 Thành viên chọn đấu giá sản phẩm

2 Hệ thống cập nhật “giá hiện tại” theo bước giá mà người đăng bán đã đặt và thành viên, người ra giá hiện tại xuống CSDL và hiện lên trên bảng các phiên đấu giá của sản phẩm

3 Usecase kết thúc

Dòng sự kiện phụ Không có

Các yêu cầu đặc biệt Không có

Điều kiện tiên quyết Thành viên đã đăng nhập vào hệ thống

Hậu điều kiện Kết thúc usecase: Thành viên đặt giá thành công

4.3.2.9 Theo dõi sản phẩm

Bảng 4.13: Use case theo dõi sản phẩm

Tên use case Theo dõi sản phẩm

Tóm tắt Usecase mô tả cách người dùng theo dõi các sản phẩm

mình đã đấu giá

Actor: User

Dòng sự kiện chính 1 Thành viên chọn xem lại lịch sử phiên đấu giá

2 Người dùng có thể thấy toàn bộ sản phẩm mình

đã đang đấu giá, theo dõi giá hiện tại của sản phẩm

3 Usecase kết thúc

Dòng sự kiện phụ Không có

Các yêu cầu đặc biệt Không có

Ngày đăng: 20/01/2023, 14:35

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w