Máy tính điện tử không còn là một thứ phương tiện lã lẫm đối với mọingười mà nó trở thành một công cụ làm việc và giải trí thông dụng và hữu ích của chúng ta, không chỉ ở công sở mà còn
Trang 1ĐẠI HỌC BÁCH KHOA HÀ NỘI
TRƯỜNG CÔNG NGHỆ THÔNG TIN & TRUYỀN
Sinh viên thực hiện: Nguyễn Công
Trang 3MỤC LỤC
Danh mục hình ảnh 4
LỜI MỞ ĐẦU 5
Chương 1 Cơ sở lý thuyết và công nghệ sử dụng 6
1.1 Express JS 6
1.2 NodeJS 7
1.3 MongoDB 8
Chương 2 Tổng quan về hệ thống 10
2.1 Biểu đồ use case 10
2.1.1 Biểu đồ use case tổng quan 10
2.1.2 Phân rã use case quản lý sản phẩm 11
2.1.3 Phân rã use case quản lý khách hàng 11
2.1.4 Phân rã use case quản lý đơn hàng 12
2.2 Đặc tả use case 12
2.2.1 Đặc tả use case đăng nhập 12
2.2.2 Đặc tả use case đăng ký 13
2.2.3 Đặc tả use case tìm kiếm sản phẩm 13
2.2.4 Đặc tả use case xem chi tiết sản phẩm 14
2.2.5 Đặc tả use case đăng xuất 14
2.2.6 Đặc tả use case xem giỏ hàng 15
2.2.7 Đặc tả use case xóa sản phẩm khỏi giỏ hàng 15
2.2.8 Đặc tả use case đặt hàng 15
2.2.9 Đặc tả use case xem lịch sử đơn hàng 16
2.2.10 Đặc tả use case xem chi tiết đơn hàng 16
2.2.11 Đặc tả use case hủy đơn hàng 17
2.2.12 Đặc tả use case quản lý sản phẩm 17
2.2.13 Đặc tả use case quản lý khách hàng 19
2.2.14 Dặc tả use case quản lý đơn hàng 20
2.3 Biểu đồ tuần tự 21
2.3.1 UC đăng nhập 21
2.3.2 UC đăng ký 21
2.3.3 UC đăng xuất 22
2.3.4 UC thêm sản phẩm 22
3 TIEU LUAN MOI download : skknchat123@gmail.com moi nhat
Trang 42.3.5 UC Tìm kiếm sản phẩm 23
2.3.6 UC xem danh sách sản phẩm 23
2.3.7 UC xem chi tiết sản phẩm 24
2.3.8 UC sủa sản phẩm 24
2.3.9 UC xóa sản phẩm 24
2.3.10 UC tìm kiếm khách hàng 24
2.3.11 UC xem danh sách khách hàng 25
Chương 3 Thiết kế và xây dựng website bán hàng 25
3.1 Giao diện trang đăng nhập 25
3.2 Giao diện trang đăng ký 25
3.3 Giao diện quên mật khẩu 26
3.4 Giao diện trang chủ 26
3.5 Giao diện danh sách sản phẩm 27
3.6 Giao diện xem chi tiết sản phẩm 28
3.7 Giao diện giỏ hàng 28
3.8 Giao diện trang thanh toán 28
3.9 Giao diện trang thông tin tài khoản 29
Chương 4 Triển khai thử nghiệm và đánh giá 29
4.1 Triển khai hệ thống 29
4.2 Đánh giá hệ thống 30
KẾT LUẬN 31
TÀI LIỆU THAM KHẢO 32
Trang 5Danh mục hình ảnh
Hình 1.1 Cấu trúc ExpressJs………6
Hình 2.1 Biểu đồ Use case tổng quan……….11
Hình 2.2 Biểu đồ phân rã use case quản lý sản phẩm……….11
Hình 2.3 Biểu đồ phân rã use case quản lý khách hàng……… 12
Hình 2.4 Biểu đồ phân rã use case quản lý đơn hàng……… 12
Hình 2.5 Biểu đồ tuần tự use case đăng nhập……… 21
Hình 2.6 Biểu đồ tuần tự use case đăng ký……….22
Hình 2.7 Biểu đồ tuần tự use case đăng xuất……… 22
Hình 2.8 Biểu đồ tuần tự use case thêm sản phẩm……… 23
Hình 2.9 Biểu đồ tuần tự use case tìm kiếm sản phẩm………
23 Hình 2.10 Biểu đồ tuần tự use case xem danh sách sản phẩm………23
Hình 2.11 Biểu đồ tuần tự use case xem chi tiết sản phẩm……….24
Hình 2.11 Biểu đồ tuần tự use case sửa sản phẩm……… 24
Hình 2.12 Biểu đồ tuần tự use case xóa sản phẩm……… 24
Hình 2.13 Biểu đồ tuần tự use case tìm kiếm khách hàng……… 24
Hình 2.14 Biểu đồ tuần tự use case xem danh sách khách hàng……….25
Hình 3.1 Giao diện trang đăng nhập………25
Hình 3.2 Giao diện trang đăng ký tài khoản………26
Hình 3.3 Giao diện trang quên mật khẩu……….26
Hình 3.4 Giao diện trang chủ……… 27
Hình 3.5 Giao diện trang danh sách sản phẩm………27
Hình 3.6 Giao diện trang xem chi tiết sản phẩm………28
Hình 3.7 Giao diện trang giỏ hàng……… 28
Hình 3.8 Giao diện trang thanh toán……… 29
Hình 3.9 Giao diện trang thông tin tài khoản……… 29
5 TIEU LUAN MOI download : skknchat123@gmail.com moi nhat
Trang 6LỜI MỞ ĐẦU
Ngày nay với sự phát triển mạnh mẽ của công nghệ thông tin và những ứng dụng của nótrong đời sống Máy tính điện tử không còn là một thứ phương tiện lã lẫm đối với mọingười mà nó trở thành một công cụ làm việc và giải trí thông dụng và hữu ích của chúng
ta, không chỉ ở công sở mà còn ngay cả trong gia đình
Trong nền kinh tế hiện nay, với xu thế toàn cầu hoá nền kinh tế thế giới, mọi mặt của đờisống xã hội ngày càng được nâng cao, đặc biệt là nhu cầu trao đổi hàng hoá của con ngườingày càng tăng cả về số lượng và chất lượng.Hiện nay các công ty tin học hàng đầu thếgiới không ngừng đầu tư và cải thiện các giải pháp cũng như các sản phẩm nhằm cho phéptiến hành thương mại hóa trên Internet Thông qua các sản phẩm và công nghệ này, chúng
ta dễ dàng nhận ra tầm quan trọng và tính tất yếu của thương mại điện tử Với những thaotác đơn giản trên máy có nối mạng Internet bạn sẽ có tận tay những gì mình cần mà khôngphải mất nhiều thời gian Bạn chỉ cần vào các trang dịch vụ thương mại điện tử, làm theohướng dẫn và click vào những gì bạn cần Các nhà dịch vụ sẽ mang đến tận nhà cho bạn
Để tiếp cận và góp phần đẩy mạnh sự phổ biến của thương mại điện tử ở Việt Nam, Em
đã tìm hiểu, xây dựng và cài đặt “Website bán hàng trực tuyến” với mặt hàng là: Quần áo.Qua khảo sát thực tế, ở Việt Nam thì hình thức bán hàng qua mạng này cũng khá phổ biến
Cùng với sự chỉ bảo tận tình của thầy Trịnh Văn Chiến em đã hoàn thành websitenày.Trong quá trình phân tích thiết kế hệ thống không thể tránh khỏi những sai sót mong
cô đóng góp ý kiến để trang Web được hoàn thiện hơn
Chương 1 Cơ sở lý thuyết và công nghệ sử dụng
Chương này nêu ra các công nghệ được sử dụng trong đề tài và tổng quan lý thuyết
về công nghệ được sử dụngChương 2 Phân tích thiết kế hệ thống
Chương này nêu ra bài toán quản lí thông tin cho người dùng, phân tích quy trinhhoạt động của website Từ đó nêu lên mục đích, yêu cầu đặt ra và phân tich hêthông
Chương 3 Thiết kế và xây dựng website bán hàng Chương 4 Triển khai thử nghiệm và đánh giáChương này nêu cách cài đặt chương trình và môi trường
Trang 7Chương 1 Cơ sở lý thuyết và công nghệ sử dụng
1.1 Express JS1.1.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ảngcủa Nodejs Nó cung cấp các tính năng mạnh mẽ để phát triển web hoặc mobile
Về các package hỗ trợ: Expressjs có vô số các package hỗ trợ
Về performance: Express cung cấp thêm về các tính năng (feature) để dev lập trình tốt hơn Chứ không làm giảm tốc độ của NodeJS
Và hơn hết, các Framework nổi tiếng của NodeJS hiện nay đều sử dụngExpressJS như một core function, chẳng hạn: SailsJS, MERN,
1.1.2 Cấu trúc của Express JS
Hình 1.1 Cấu trúc Epress JS
Cấu trúc Express JS vô cùng đơn giản:
Rootapp.js chứa các thông tin về cấu hình, khai báo, các định nghĩa, để ứngdụng của chúng ta chạy ok
package.json chứa các package cho ứng dụng chạy Nếu bạn nào làm với PHP hoặc RoR rồi thì file này có chức năng tương tự như
composer.jsonhoặc GemfileFolder routes: chứa các route có trong ứng dụngFolder view: chứa view/template cho ứng dụngFolder public chứa các file css, js, images, cho ứng dụng1.1.3 Tìm hiểu về Router trong Express
1.1.3.1 Khái niệm
Router là một Object (khác Routing nhé), nó là một instance riêngcủa middleware và routes (Hai khái niệm này là gì thì chúng ta sẽ tìm hiểu saunhé) Chính vì nó là một instance của middleware và route nên nó có các chứcnăng của cả hai Chúng ta có thể gọi nó là một mini-application
7 TIEU LUAN MOI download : skknchat123@gmail.com moi nhat
Trang 8Các Application dùng ExpressJS làm core đều có phần Router được tích hợp sẵn trong đó.
Router hoạt động như một middleware nên chúng ta có thể dùng nó nhưmột arguments Hoặc dùng nó như một arguments cho route khác
Chúng ta cũng có thể sử dụng Router để chia route
1.1.3.2 Tìm hiểu về các method all của router
router.all() Method này phù hợp với việc định nghĩa mang tính chất toàn cục cho các prefix
Nếu ta đặt route này trên cùng (top) thì nó yêu cầu tất cả các route bên dướiphải được requireAuthentication Có nghĩa là xác thực trước khi thực hiệnmộthành động hay một task nào đó tiếp theo
1.1.4 Tìm hiều về router.METHOD()
Router.METHOD() cung cấp cho chúng ta chức năng Routing trong ExpressJS.Cụ thể METHOD() ở đây là các HTTP method mà chúng ta thường xuyên sửdụng Chẳng hạn GET, POST, PUT,
Tên METHOD phải được viết thường
Để bảo mật tốt hơn thì có thể sử dụng Regex để bắt các Endpoint1.2 NodeJS
1.2.1 Khái niệm
NodeJS là một mã nguồn được xây dựng dựa trên nền tảng Javascript V8 Engine,nó được sử dụng để xây dựng các ứng dụng web như các trang video clip, các forumvà đặc biệt là trang mạng xã hội phạm vi hẹp NodeJS là một
mã nguồn mở được sửdụng rộng bởi hàng ngàn lập trình viên trên toàn thế giới
NodeJS có thể chạy trên nhiều nền tảng hệ điều hành khác nhau từ WIndow chotới Linux, OS X nên đó cũng là một lợi thế NodeJS cung cấp các thư việnphong phúở dạng Javascript Module khác nhau giúp đơn giản hóa việc lập trình và giảm thờigian ở mức thấp nhất
Khi nói đến NodeJS thì phải nghĩ tới vấn đề Realtime Realtime ở đây chínhlàxử lý giao tiếp từ client tới máy chủ theo thời gian
thực 1.2.2 Các đặc tính của NodeJS
Không đồng bộ: Tất cả các API của NodeJS đều không đồng bộ( blocking), nó chủ yếu được dựa trên nền của NodeJS Server và chờ đợi Server trả dữ liệu về Việc di chuyển máy chủ đến các API tiếp theo sau khi gọi và cơ chế thông báo các sự kiện của NodeJS giúp máy chủ để có được một phản ứng từ các cuộc gọi API trươc(realtime)
none-Chạy rất nhanh: NodeJ được xây dựng dựa vào nền tảng V8 JavascriptEngine 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: Node.js sử dụng một mô hìnhluồng duy nhất với sự kiện lặp cơ chế tổ chức sự kiện giúp các máy chủ đểđáp ứng một cách không ngăn chặn và làm cho máy chủ cao khả năng mở rộng như trái ngược với các máy chủ truyền thống mà tạo đề hạn chế để xửlý yêu cầu Node.js sử dụng một chương trình đơn luồng và các chươngtrình tương tự có thể cung cấp dịch vụ cho một số lượng lớn hơn nhiều sovới yêu cầu máy chủ truyền thống như Apache HTTP Server
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
Trang 9Có giấy phép: NodeJS đã được cấp giấy phép bởiMIT License.
1.2.3 Hai NodeJS framework sử dụng1.2.3.1 Express
ExpressJS là một trong những framework phổ biến dùng để xây dựng APIvàWebsite phổ biến nhất của NodeJS Nó được sử dụng rộng rãi đến mức hầu nhưmọidự án Web nào đều bắt đầu bằng việc tích hợp Express Có rất nhiều lý do đểchọnExpressJS:
Có nhiều tính năng hỗ trợ tất cả những gì bạn cần trong việc xây dựng Web vàAPI
Quản lý các router dễ dàngCung cấp một nền tảng phát triển cho các API
Hỗ trợ nhiều thư viện và pluginBảo mật và an toàn hơn so với việc code thuần
Hỗ trợ cồng đồng tuyệt vời1.2.3.2 SocketIO
SocketIO là một web-socket framework có sẵn cho nhiều ngôn ngữ lập trình Trong NodeJS, SocketIO cho phép xây dựng một các ứng dụng realtime nhưchatbot, tickers, dashboard APIs, và nhiều ứng dụng khác SocketIO có lợi íchhơn so với NodeJS thông thường
Hỗ trợ route URL tùy chỉnh cho web socket Tích hợp dễ dàng hơn với Express JS
Hỗ trợ clustering với Redis1.3 MongoDB
1.3.1 Khái niệmMongoDB là phần mềm cơ sở dữ liệu mã nguồn mở NoSQL hỗ trợ đa nềntảngđược thiết kế theo hướng đối tượng Các bảng (trong MongoDB gọi làcollection) có cấu trúc linh hoạt cho phép dữ liệu không cần tuân theo dạng cấutrúc nào.Vì thế, nó có thể dùng để lưu trữ dữ liệu có cấu trúc phức tạp và đa dạng
Dữ liệuđược gọi là Big Data Đặc biệt, chương trình này lưu trữ dữ liệu vàocollection theohướng tài liệu kiểu JSON thay vì bảng nên có hiệu suất cao và tínhkhả dụng cao
1.3.2 NoSQLNoSQL (Non-Relational SQL) là dạng cơ sở dữ liệu mã nguồn mở được ra đờinhưmột mô hình tiến bộ hơn về tốc độ, tính năng,… so với hệ quản trị cơ sở dữliệuquan hệ RDBMS NoSQL có kiểu dữ liệu JSON Đây là dạng dữ liệu kiểu keyvàvalue cùng với hiệu suất nhanh và khả năng mở rộng không bị ràng buộc bởi việctạokhóa ngoại, khóa chính,… nên được ưa chuộng và sử dụng rất phổ biến
1.3.3 Tính năng của MongoDB1.3.3.1 Truy vấn ad họcTruy vấn ad hoc là một trong những tính năng tốt nhất của chương trình Nó hỗtrợcác trường, truy vấn phạm vi và tìm kiếm các biểu thức để trả về các trường tàiliệucụ thể bao gồm các hàm JavaScript do người dùng xác định hoặc các truy vấnnàyđược cấu hình và trả về mẫu kết quả ngẫu nhiên có kích thước nhất định Bêncạnh đó,các trường trong MongoDB có thể được dùng để lập các chỉ mục chính vàcác chỉ mục phụ
9 TIEU LUAN MOI download : skknchat123@gmail.com moi nhat
Trang 101.3.3.2 Nhân rộngĐây là tính năng mà chương trình cung cấp Replica set Nó bao gồm hai hoặcnhiều bản sao của dữ liệu Trong đó mỗi bản sao có thể đóng vai trò chính và phụ.
Trong quá trình nhân rộng, tất cả các dữ liệu ghi và đọc thực hiện trên bản sao chính
Bản sao thứ cấp sử dụng bản sao tích hợp để duy trì bản sao dữ liệu của bảnchính
Trong trường hợp một bản sao chính thất bại, Replica set chọn ra một bản saothứcấp để trở thành bản sao chính tiếp theo Replica thứ cấp có thể tùy chọn phụcvụcác hoạt động nhưng dữ liệu cuối cùng chỉ nhất quán theo mặc định
1.3.3.3 Cân bằng tảiBằng cách sử dụng Sharding, MongoDB chia tỷ lệ theo chiều ngang để ngườidùngchọn một Shard key Xác định các dữ liệu được phân phối trong collection.Nhìnchung, dữ liệu được chia thành các phạm vi và được phân phối đồng đều dựatrên các Shard key Nó chạy trên nhiều máy chủ, cân bằng tải hoặc sao chép dữ liệu
để giữhệ thống luôn hoạt động trong trường hợp có lỗi về phần cứng1.3.3.4 Lưu trữ tệp
Với tính năng lưu trữ tệp, MongoDB được sử dụng như một hệ thống tệp(GridFS)giúp cân bằng tải và sao chép dữ liệu trên nhiều máy tính để lưu trữ tệp.Trong đó,GridFS chia một tệp ra thành các phần hoặc các đoạn và lưu trữ thànhnhững tài liệuriêng biệt Bạn có thể truy cập GridFS bằng tiện ích Mongofiles hoặc plugin choNginx và Lighttpd
1.3.3.5 Tập hợp
Ởtính năng tập hợp, chương trình này cung cấp ba cách chính để thực hiện tậphợp
là Aggregation Pipeline, chức năng Mapreduce và Single-purposeAggregation.Trong đó, theo tài liệu của MongoDB thì Aggregation Pipeline đượccông nhận làcung cấp hiệu suất tốt hơn hầu hết các hoạt động tổng hợp
1.3.3.6 Thực thi Javascript phía máy chủJavaScript thường được thực thi trong các truy vấn, các hàm tổng hợp và đượcgửitrực tiếp đến cơ sở dữ liệu
1.3.3.7 Giới hạn kích thước collectionMongoDB hỗ trợ collection có kích thước cố định được gọi là collection giớihạn
Nó có kích cỡ cố định theo sau thứ tự chèn làm tăng hiệu suất các hoạt độngkháccó liên quan đến dữ liệu Khi dữ liệu vượt quá mức giới hạn thì các tài liệu cũ
sẽ bị xóamà không cần dùng bất cứ dòng lệnh nào
1.3.3.8 Giao dịchMongoDB còn có tính năng hỗ trợ cho các giao dịch ACID đa tài liệu, bắt đầucóhiệu dụng từ phiên bản 4.0 vào tháng 6 năm 2018
1.3.4 Ưu điểm của MongoDB
Trang 11Đầu tiên có thể nhắc đến là tính linh hoạt lưu trữ dữ liệu theo các kích cỡ khác nhau, dữ liệu dưới dạng hướng tài liệu JSON nên bạn có thể chèn vàothoải mái bất cứ thông tin gì bạn muốn.
Khác với RDBMS dữ liệu trong đây không có sự ràng buộc và không cóyêu cầu tuân theo khuôn khổ nhất định, điều này giúp bạn tiết kiệm thờigian cho việc kiểm tra sự thỏa mãn về cấu trúc nếu muốn chèn, xóa, cậpnhật hay thay đổi các dữ liệu trong bảng
MongoDB dễ dàng mở rộng hệ thống bằng cách thêm node vào cluster – cụm các node chứa dữ liệu giao tiếp với nhau
Ưu điểm thứ tư là tốc độ truy vấn nhanh hơn nhiều so với hệ quản trị cơ sở dữliệu quan hệ RDBMS do dữ liệu truy vấn được cached lên bộ nhớ RAMđể lượt truy vấn sau diễn ra nhanh hơn mà không cần đọc từ ổ cứng
Cũng là một ưu điểm về hiệu suất truy vấn của MongoDB, trường dữ liệu“_id” luôn được tự động đánh chỉ mục để đạt hiệu suất cao nhất1.3.5 Nhược điểm MongoDB
Dữ liệu trong MongoDB không bị ràng buộc như RDBMS nhưng người sửdụng lưu ý cẩn thận mọi thao tác để không xảy ra các kết quả ngoài ý muốngây ảnh hưởng đến dữ liệu
Một nhược điểm mà “dân công nghệ” hay lo ngại là bộ nhớ của thiết bị.Chương trình này thường tốn bộ nhớ do dữ liệu được lưu dưới dạng key-value, trong khi các collection chỉ khác về value nên sẽ lặp lại key dẫn đến thừa dữ liệu
Thông thường, dữ liệu thay đổi từ RAM xuống ổ cứng phải qua 60 giây thìchương trình mới thực hiện hoàn tất, đây là nguy cơ bị mất dữ liệu nếu bất ngờ xảy ra tình huống mất điện trong vòng 60 giây đó
Chương 2 Tổng quan về hệ thống
2.1 Biểu đồ use case2.1.1 Biểu đồ use case tổng quan
11 TIEU LUAN MOI download : skknchat123@gmail.com moi nhat
Trang 12Hình 2.1 Biểu đồ Use case tổng quan
2.1.2 Phân rã use case quản lý sản phẩm
Hình 2.2 Biểu đồ phân rã use case quản lý sản phẩm
2.1.3 Phân rã use case quản lý khách hàng
Trang 13Hình 2.3 Biểu đồ phân rã use case quản lý khách hàng
2.1.4 Phân rã use case quản lý đơn hàng
Hình 2.4 Biểu đồ phân rã use case quản lý đơn hàng
Trang 142.2.2 Đặc tả use case đăng ký
13 TIEU LUAN MOI download : skknchat123@gmail.com moi nhat
Trang 15Hậu điều kiện
2.2.3 Đặc tả use case tìm kiếm sản phẩm
Trang 16Luồng sự kiện thay thế
Hậu điều kiện
2.2.4 Đặc tả use case xem chi tiết sản phẩm
14 TIEU LUAN MOI download : skknchat123@gmail.com moi nhat
Trang 17Hậu điều kiện
2.2.5 Đặc tả use case đăng xuất
Hậu điều kiện
2.2.6 Đặc tả use case xem giỏ hàng
Mã Use case
Tác nhân
Tiền điều kiện
Trang 18Luồng sự kiện chính
(Thành công)
TIEU LUAN MOI download : skknchat123@gmail.com moi nhat
Trang 19Luồng sự kiện
thay thế
Hậu điều kiện
2.2.7 Đặc tả use case xóa sản phẩm khỏi giỏ hàng
Trang 20thay thế
Hậu điều kiện