CHƯƠNG 1: KHẢO SÁT HIỆN TRẠNG 1. Phân tích hiêṇ trạng: Thương mại điê ̣n tử ngày càng bùng nổ trên toàn cầu, và Việt Nam chính là một trong những đất nước sử dụng điện thoại di động thường xuyên nhất. Theo báo cáo từ Picodi cho biết, cứ 10 giao dịch thì 8 giao dịch được thực hiện bằng internet mỗi ngày trong năm 2019. Bên cạch những món đồ da dụng được mua hàng ngày thì những linh kiê ̣n thiết bị điê ̣n tử ngày càng được khách hàng tin tưởng và mua nhiều hơn.
Do đó, nhu cầu xây dựng một website bán các thiết bị điện tử trở nên thiết yếu. Chính vì vậy, nhóm đã quyết định chọn đề tài “Xây dựng và thiết kế website bán linh kiện và thiết bị điện tử” này, mục đích là tạo ra một sản phẩm đáp ứng được nhu cầu của thị trường hiện nay. Với các chức năng hoàn chỉnh, có tính đóng gói cùng với giao diện nổi bật, dễ dàng thao tác. Nhóm quyết định chọn Website phongvu.vn là tài liệu tham khảo để phát triển đề tài lần này.
Phân tích yêu cầu 1. Yêu cầu chức năng nghiêp̣ vụ: Lưu trữ: - Người dùng: tên, email, mật khẩu - Sản phẩm: tên, giá tiền, bảo hành, nhãn hiệu, mô tả, nô ̣i dung, hình ảnh, loại sản phẩm, số lượng sản phẩm, số lượng sản phẩm đã bán, sản phẩm đã xoá. - Loại sản phẩm: tên loại. - Đơn hàng: thông tin người mua, địa chỉ, giỏ hàng, số lượng, giá, tổng giá, trạng thái đơn hàng, chi phí giao hàng.
Tra cứu: - Sản phẩm: Theo mô ̣t tiêu chuẩn nào đó. - Đơn hàng: Theo mô ̣t tiêu chuẩn nào đó. - Loại sản phẩm: Theo mô ̣t tiêu chuẩn nào đó. Tính toán: - Tính tổng tiền khi mua sản phẩm.
- Thống kê doanh thu. Kết xuất: - Báo cáo doanh thu. Tieu luan Báo cáo tiểu luận chuyên ngành 1. Bảng yêu cầu chức năng nghiêp̣ vụ: STT Công viêc̣ Chức năng Quy định Ghi chú 1 Đăng Lưu trữ Người QTV hoă ̣c người dùng phải QTV: quản nhâ ̣p và đăng nhâ ̣p để sử dụng phần mềm, trị viên đăng kí nếu người dùng chưa có tài khoản thì có thể đăng ký.
2 Câ ̣p nhâ ̣t Lưu trữ QTV có thể thêm, xoá, sửa sản QTV: quản sản phẩm phẩm. trị viên 3 Tính tiền Tính toán Tính tổng tiền khi người dùng checkout sản phẩm 4 Tra cứu Tra cứu Việc tìm thông tin sản phẩm dựa trên thông tin thông tin tên sản phẩm, loại sản về sản phẩm. Bảng yêu cầu chức năng nghiệp vụ 1. Bảng yêu cầu chức năng hê ̣ thống: STT Nội dung Mô tả chi tiết Ghi chú 1 Phân quyền - Quản trị viên: được phép sử dụng tất cả sử dụng các chức năng - Người dùng chỉ được sử dụng ở tầng giao diện người dùng gồm các chức năng cơ bản sau: đăng kí, đăng nhập, xem hoặc mua sản phẩm… Bảng 1.
Bảng yêu cầu chức năng hệ thống Tieu luan Báo cáo tiểu luận chuyên ngành CHƯƠNG 2: CƠ SỞ LÝ THUYẾT MERN stack là tâ ̣p hợp của bốn công nghệ mã nguồn mở đều liên quan đến Javascript được sử dụng rô ̣ng rãi đó là: MongoDB, ExpressJS, React/React Native, NodeJS. Người ta dùng MERN stack để xây dựng React Universal App. MongoDB MongoDB là một cơ sở dữ liệu mã nguồn mở và là cơ sở dữ liệu NoSQL (*) hàng đầu, được hàng triệu người sử dụng. MongoDB được viết bằng C++.
Ngoài ra, MongoDB là một cơ sở dữ liệu đa nền tảng, hoạt động trên các khái niệm Collection và Document, nó cung cấp hiệu suất cao, tính khả dụng cao và khả năng mở rộng dễ dàng. Ưu điểm của của Mongo DB Ít schema hơn: Vì schema được sinh ra là để nhóm các đối tượng vào 1 cụm, dễ quản lý. Ví dụ như tạo một schema tên là Students chẳng hạn thì chỉ có những gì liên quan đến student thì mới được cho vào schema này. Trong khi đó trong mongodb thì chỉ 1 collection ta có thể chứa nhiều document khác nhau.
Với mỗi document thì số trường, nội dung, kích thước lại có thể khác nhau. Cấu trúc của một đối tượng rõ ràng. Không có các Join phức tạp. Khả năng mở rộng cực lớn: việc mở rộng dữ liệu mà không phải lo đến các vấn đề như khóa ngoại, khóa chính, kiểm tra ràng buộc.
MongoDB cho phép thực hiện replication và sharding nên việc mở rộng cũng thuận lợi hơn. Sử dụng bộ nhớ trong để lưu giữ cửa sổ làm việc cho phép truy cập dữ liệu nhanh hơn. Việc cập nhật được thực hiện nhanh gọn nhờ update tại chỗ (in- place). Nhược điểm của của Mongo DB Dữ liệu được caching, lấy RAM làm trọng tâm hoạt động vì vậy khi hoạt động yêu cầu một bộ nhớ RAM lớn Tieu luan Báo cáo tiểu luận chuyên ngành Như đã giới thiệu ở trên, mọi thay đổi về dữ liệu mặc định đều chưa được ghi xuống ổ cứng ngay lập tức vì vậy khả năng bị mất dữ liệu từ nguyên nhân mất điện đột xuất là rất cao.
Do là một hệ quản trị cơ sở dữ liệu mới ra đời và phát triển chưa được lâu, nên MongoDB cũng chưa thể hổ trợ các tính năng liên quan đến việc bảo mật cơ sở dữ liệu một cách hoàn chỉnh và ổn định như các đàn anh đi trước. (*): NoSQL là một dạng CSDL mã nguồn mở không sử dụng Transact-SQL để truy vấn thông tin. NoSQL viết tắt bởi: None-Relational SQL, hay có nơi thường gọi là Not-Only SQL. CSDL này được phát triển trên Javascript Framework với kiểu dữ liệu JSON.
(Cú pháp của JSON là “key: value”) NoSQL ra đời như là 1 mảnh vá cho những khuyết điểm và thiếu xót cũng như hạn chế của mô hình dữ liệu quan hệ RDBMS về tốc độ, tính năng, khả năng mở rộng, memory cache… 2. ExpressJS Expressjs là một framework đượ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. Expressjs hỗ trợ các method HTTP và midleware tạo ra API vô cùng mạnh mẽ và dễ sử dụng.
Để có thể áp dụng công nghệ này cho đề tài, nhóm sẽ sử dụng Expressjs để phát triển các services là các Rest API. Mục đích của việc dùng Rest API là vì chúng ta có thể dễ dàng phát triển hệ thống trên nhiều nền tảng khác không chỉ riêng cho việc viết web trực tuyến, đồng thời như đã nói ở trên về công dụng của Microservices thì phát triển hệ thống như thế này là sẽ chia hệ thống ra thành 2 thành phần đó là server và client. Server ở đây chính là các services được chia nhỏ ra với ExpressJS Framework, ở đây xử lý dữ liệu sau đó sẽ trả dữ liệu có ích về cho Client hiển thị cho người dùng. React React là một thư viện JavaScript mã nguồn mở, giao diện người dùng để xây dựng giao diện người dùng hoặc các thành phần UI.
Nó được duy trì bởi Facebook và một cộng đồng các nhà phát triển và công ty cá nhân. React có thể được sử dụng như một cơ sở để phát triển các ứng dụng trang web hoặc di động.js là một hệ thống phần mềm được thiết kế để viết các ứng dụng internet có khả năng mở rộng, đặc biệt là máy chủ web. Chương trình được viết bằng C, C++, JavaScript, sử dụng kỹ thuật điều khiển theo sự kiện, nhập/xuất không đồng bộ để tối thiểu tổng chi phí và tối đa khả năng mở rộng. Tieu luan Báo cáo tiểu luận chuyên ngành NodeJS ra đời nhờ những lập trình viên đầu tiên của JavaScript mở rộng nó từ một ngôn ngữ chỉ có thể thực thi trên trình duyệt thành ngôn ngữ có thể thực thi độc lập trên máy tính.
NodeJS cũng giống với trình duyệt hiện nay, được chạy dựa trên V8 JavaScript engine - công cụ giúp trình duyệt dịch và thực thi JavaScript. Ngoài ra, NodeJS cung cấp một số thư viện không có sẵn trong V8 engine. Tieu luan Báo cáo tiểu luận chuyên ngành CHƯƠNG 3: PHÂN TÍCH TRANG WEB 3.1 Thành phần dữ liệu 3. Thành phần tổ chức 3.
Front-end Phần front-end của một trang web là phần tương tác với người dùng. Tất cả mọi thứ bạn nhìn thấy khi điều hướng trên Internet, từ các font chữ, màu sắc cho tới các menu xổ xuống và các thanh trượt, là một sự kết hợp của HTML, CSS, và JavaScript được điều khiển bởi trình duyệt máy tính của bạn. Nó sẽ thực hiện việc nhận và gửi dữ liệu giữa giao diện người dùng với Server thông qua các API. Back-end Xử lý các dữ liệu được gửi đến từ phía Client để lưu xuống Database, lấy dữ liệu thô từ dưới Database, điều chỉnh trở về các dữ liệu có ích để hiển thị trên UI và trả về cho Client: 3.
Thành phần dữ liệu 3. Users (_id, name, email, password, addresses, role, cart, isBlock, createdAt, updatedAt) ST Tên Cột Kiểu Miền Dữ Liệu Ý Nghĩa T 1 _id ObjectID Khóa chính Mã ID của user. 2 Name String Tên của user 3 Email String Địa chỉ email của người dung 4 Password String Mật khẩu của người dung 5 Addresses String Danh sách địa chỉ người dung 6 Cart Array Giỏ hàng 7 isBlock Boolean Trạng thái user 8 createdAt Date Ngày tạo user 9 updatedAt Date Ngày cập nhật user Bảng 3. Bảng Users Tieu luan Báo cáo tiểu luận chuyên ngành 3.
Products (_id, title, prices, warranty, brand, description, content, images, category, quantity, sold, isDelete, createdAt, updatedAt) ST Tên Cột Kiểu Miền Dữ Liệu Ý Nghĩa T 1 _id ObjectID Khóa chính Mã ID của sản phẩm. 2 Title String Tên của sản phẩm 3 Prices Number Giá sản phẩm 4 Warranty String Hạn bảo hành sản phẩm 5 Brand String Nhãn hiệu 6 Description String Mô tả sản phẩm 7 Content String Nội dung sản phẩm 8 Images Object Hình ảnh 9 Category String Loại sản phẩm 10 Quantity Number Số lượng sản phẩm 11 Sold Number Số sản phẩm đã bán 12 isDelete Boolean Trạng thái sản phẩm (Đã xoá) 13 createdAt Date Ngày tạo sản phẩm 14 updatedAt Date Ngày cập nhật sản phẩm Bảng 3. Categories (_id, name, createdAt, updatedAt) ST Tên Cột Kiểu Miền Dữ Liệu Ý Nghĩa T 1 _id ObjectID Khóa chính Mã ID của loại sản phẩm. 2 Name String Tên của loại sản phẩm 3 createdAt Date Ngày tạo sản phẩm 4 updatedAt Date Ngày cập nhật sản phẩm Bảng 3.
Bảng Categories Tieu luan Báo cáo tiểu luận chuyên ngành 3. Checkout (_id, userId, name, email, address, cart, status, payments, tax, deliveryCharges, createdAt, updatedAt) ST Tên Cột Kiểu Miền Dữ Liệu Ý Nghĩa T 1 _id ObjectID Khóa chính Mã ID của đơn hàng.