Đồ án: Tìm hiểu Flask & Xây dựng Web bán phim online với hệ thống khuyến nghị

Tài liệu đồ án xây dựng web bán phim online bằng Flask (Python). Báo cáo chi tiết về hệ thống khuyến nghị sản phẩm và các công nghệ sử dụng.

2022

105
0
0

Phí lưu trữ

35 Point

Tóm tắt

I. Giới thiệu về Đồ án Flask Xây dựng Web Bán Phim

Đồ án Flask là một dự án học tập hoàn chỉnh được thực hiện tại Trường Đại học Công nghệ Thông tin, Đại học Quốc gia TP. Hồ Chí Minh. Đây là một web application bán phim online kết hợp với hệ thống khuyến nghị sản phẩm tiên tiến. Dự án này được hướng dẫn bởi TS. Nguyễn Hồng Thủy và nhằm mục đích giáo dục sinh viên về các công nghệ web hiện đại. Flask là một framework Python nhẹ, linh hoạt và dễ học, được sử dụng rộng rãi để xây dựng các ứng dụng web. Dự án kết hợp xây dựng giao diện người dùng, quản lý cơ sở dữ liệu, và thuật toán khuyến nghị để tạo trải nghiệm mua sắm tối ưu cho người dùng.

1.1. Lý do chọn Flask và Python

Python là ngôn ngữ lập trình phổ biến nhất năm 2022 theo Google Trend và TIOBE Index. Nó được ưa chuộng trong phát triển web, machine learning, và data science. Flask cung cấp một cách tiếp cận đơn giản, flexible để xây dựng web application. So với các framework khác, Flask cho phép developers kiểm soát tốt hơn cấu trúc ứng dụng, đặc biệt là trong xây dựng REST API.

1.2. Mục tiêu dự án

Mục tiêu chính là xây dựng một nền tảng thương mại điện tử chuyên biệt bán phim với các tính năng quản lý sản phẩm, xác thực người dùng, và hệ thống khuyến nghị thông minh. Dự án cung cấp cả giao diện người dùng thân thiện và giao diện quản lý cho nhân viên, demonstrating full-stack development capabilities.

II. Kiến trúc Hệ thống và Công nghệ Sử dụng

Kiến trúc hệ thống của đồ án Flask được thiết kế theo mô hình client-server với các thành phần rõ ràng. Backend được xây dựng bằng Flask kết hợp với Python, front-end sử dụng HTML, CSS, Javascript và Bootstrap để tạo giao diện responsive. Cơ sở dữ liệu được quản lý bằng Microsoft SQL Server, đảm bảo lưu trữ dữ liệu an toàn và hiệu quả. Hệ thống được phát triển sử dụng Visual Studio Code làm công cụ chính, Postman để kiểm thử API, và Github để quản lý phiên bản code. Kiến trúc này cho phép scalabilitymaintainability tốt cho ứng dụng web bán phim.

2.1. Các công nghệ Backend với Flask

Flask được sử dụng để xây dựng REST API và logic xử lý server-side. Dự án tận dụng các tính năng như routing, static file management, secret key configuration để bảo mật. Jinja2 template engine được tích hợp để render động HTML templates. Flask cấu trúc rõ ràng với thư mục models, views, controllers giúp code organization tốt hơn và dễ bảo trì trong quá trình development.

2.2. Frontend và Database

Front-end sử dụng HTML, CSS, Javascript với framework Bootstrap để xây dựng responsive design. Microsoft SQL Server lưu trữ tất cả dữ liệu sản phẩm, người dùng, đơn hàng. Kết nối database thông qua ORM hoặc direct SQL queries từ Flask. Giao diện quản lý (admin panel) được thiết kế để nhân viên dễ dàng quản lý phim, khuyến mãi, và đơn hàng.

III. Hệ thống Khuyến nghị và Chức năng Chính

Hệ thống khuyến nghị sản phẩm là tâm điểm của dự án, sử dụng hai phương pháp chính: Content-based filteringCollaborative filtering. Content-based phân tích các đặc điểm của phim như thể loại, diễn viên, đạo diễn để đưa ra gợi ý tương tự. Collaborative filtering phân tích hành vi người dùng - nếu hai người dùng có sở thích giống nhau, hệ thống sẽ khuyến nghị phim mà một người đã xem cho người kia. Dự án cũng bao gồm các tính năng cơ bản như đăng nhập, đăng ký, quản lý tài khoản, xem chi tiết phim, giỏ hàng, và thanh toán. Giao diện dashboard quản lý cho phép nhân viên thêm/sửa/xóa phim.

3.1. Content Based Recommendation

Content-based filtering dựa trên phân tích nội dung phim. Hệ thống so sánh đặc tính sản phẩm - thể loại, năm sản xuất, diễn viên, ratings - với những gì người dùng đã xem. Nếu người dùng thích phim hành động, hệ thống sẽ gợi ý thêm các bộ phim hành động khác có rating cao hoặc cùng đạo diễn.

3.2. Collaborative Filtering và User Experience

Collaborative filtering tập trung vào user behavior patterns. Hệ thống tìm những người dùng với sở thích tương tự và gợi ý phim họ đã yêu thích. Điều này thường cho kết quả tốt hơn vì phản ánh xu hướng thực tế. Kết hợp cả hai phương pháp tạo hệ thống khuyến nghị hybrid mạnh mẽ, nâng cao user experience và tăng tỷ lệ bán hàng.

IV. Kết quả Đạt được và Hướng Phát triển

Dự án Flask web bán phim đã thành công trong việc xây dựng một nền tảng thương mại điện tử hoàn chỉnh với hệ thống khuyến nghị hoạt động hiệu quả. Các tính năng cốt lõi như đăng nhập, tìm kiếm phim, xem chi tiết sản phẩm, và mua hàng đã được triển khai thành công. Giao diện người dùng thân thiện, responsive trên các thiết bị khác nhau. Giao diện quản lý cho phép cập nhật sản phẩm dễ dàng. Hệ thống khuyến nghị cải thiện đáng kể trải nghiệm mua sắm. Mặc dù vậy, dự án vẫn có những hạn chế cần cải thiện như tối ưu hóa hiệu năng, bảo mật nâng cao, và tích hợp thêm payment gateway chuyên nghiệp.

4.1. Những tính năng đã triển khai

Dự án hoàn thành các tính năng chính: user authentication (đăng nhập/đăng ký), product management (xem danh sách, chi tiết phim), shopping cart (thêm/xóa sản phẩm), recommendation engine (gợi ý phim cá nhân), và admin dashboard (quản lý sản phẩm). Sơ đồ use case và tuần tự được định nghĩa rõ ràng cho từng tính năng, giúp developmenttesting hiệu quả.

4.2. Nhược điểm và Giải pháp Tương lai

Nhược điểm hiện tại bao gồm performance cần tối ưu, security cần tăng cường, và scalability cho người dùng nhiều. Giải pháp tương lai: caching với Redis, SSL/TLS encryption, microservices architecture, tích hợp payment gateway như Stripe, machine learning models nâng cao cho khuyến nghị, và mobile app phiên bản.

28/12/2025

Trích đoạn nội dung tài liệu

Chương 1. GIỚI THIỆU CHUNG. Lý do chọn đề tài. Tổng quan về chức năng.

Các khái niệm chính trong React (ReactJs). Cách hoạt động. Nhược điểm. Ưu điểm và Tại sao nên dùng ReactJs.

Các framework-package liên quan đến ReactJs. Nhược điểm của Spring Boot. Ưu điểm của Spring Boot. Các thư viện được sử dụng trong Spring Boot.

Xây dựng back-end cho đồ án bằng Spring Boot. Tổng quan Python. Độ phổ biến trong năm 2022. Ứng dụng của Python.

Nhược điểm. Frameworks và tools khác. Visual Studio Code. Microsoft SQL Server.

Ngôn ngữ Java. Ngôn ngữ thiết kế Web HTML-CSS-Javascript. XÂY DỰNG HỆ THỐNG. Xây dựng kiến trúc hệ thống.

Cơ sở dữ liệu. Thiết kế giao diện. Giao diện ứng dụng. Giao diện quản lý.

Kết quả đạt được. Nhược điểm và giải pháp.89 DANH MỤC HÌNH Hình 2-1 Mô hình DOM trong ứng dụng ReactJs_____________________4 Hình 2-2 Ví dụ về JSX__________________________________________5 Hình 2-3 Component___________________________________________6 Hình 2-4 Ví dụ props___________________________________________7 Hình 2-5 Component Lifecycle___________________________________8 Hình 2-6 Dữ liệu số người dùng các Framework____________________12 Hình 2-7 Ví dụ useState________________________________________13 Hình 2-8 Ví dụ useEffect_______________________________________13 Hình 2-9 Thiết lập một bộ chuyển trang bằng React Router____________15 Hình 2-10 Ví dụ về cách dùng useNavigate_________________________16 Hình 2-11 Ví dụ cách dùng useLocation___________________________16 Hình 2-12 Ví dụ cách lấy params_________________________________17 Hình 2-13 Cách dùng thẻ Link___________________________________18 Hình 2-14 Mô hình Redux______________________________________19 Hình 2-15 Các thành phần Slice, AsyncThunk trong ReduxToolkit______20 Hình 2-16 Hibernate: các hàm tương ứng sẽ có các anotation query và câu lệnh query tương ứng____________________________________________23 Hình 2-17 Ví dụ về việc sử dụng anotation_________________________24 Hình 2-18 Cấu trúc Backend đồ án.______________________________26 Hình 2-19 Python_____________________________________________28 Hình 2-20 Python Google Trend_________________________________29 Hình 2-21 Python TIOBE______________________________________29 Hình 2-22 Thư viện Python hỗ trợ Web____________________________30 Hình 2-23 Tổng quan ứng dụng Python____________________________30 Hình 2-24 Python và Machine Learning___________________________31 Hình 2-25 Jinja2 template______________________________________34 Hình 2-26 Cấu trúc Flask project_________________________________35 Hình 2-27 Flask Routing_______________________________________36 Hình 2-28 Flask static_________________________________________37 Hình 2-29 Flask secret key______________________________________37 Hình 2-30 Cấu trúc Flask API project_____________________________39 Hình 2-31 Khởi tạo Flask API Project_____________________________40 Hình 2-32 Ví dụ cho việc thực hiện API model______________________40 Hình 2-33 Load model mẫu_____________________________________41 Hình 2-34 Content – based ý tưởng_______________________________44 Hình 2-35 Collaborative – filtering ý tưởng________________________45 Hình 2-36 Intellij_____________________________________________46 Hình 2-37 Víual Studio Code____________________________________46 Hình 2-38 Postman____________________________________________47 Hình 2-39 SQL Server_________________________________________47 Hình 2-40 Github_____________________________________________48 Hình 2-41 Java_______________________________________________49 Hình 2-42 HTML-CSS-Javascript________________________________50 Hình 2-43 Bootstrap___________________________________________51 Hình 3-1 Sơ đồ kiến trúc hệ thống________________________________52 Hình 3-2 Sơ đồ use cases người dùng_____________________________53 Hình 3-3 Sơ đồ use cases hệ thống_______________________________54 Hình 3-4 Sơ đồ lớp____________________________________________55 Hình 3-5 Sơ đồ tuần tự đăng nhập________________________________56 Hình 3-6 Sơ đồ tuần tự đăng ký__________________________________57 Hình 3-7 Sơ đồ tuần tự chỉnh sửa thông tin_________________________58 Hình 3-8 Sơ đồ tuần tự xóa tài khoản_____________________________59 Hình 3-9 Sơ đồ tuần tự tạo tài khoản nhân viên______________________60 Hình 3-10 Sơ đồ tuần tự tạo phân loại_____________________________61 Hình 3-11 Sơ đồ tuần tự sửa phân loại_____________________________62 Hình 3-12 Sơ đồ tuần tự xóa phân loại____________________________63 Hình 3-13 Sơ đồ tuần tự tạo phim________________________________64 Hình 3-14 Sơ đồ tuần tự sửa thông tin phim________________________65 Hình 3-15 Sơ đồ tuần tự xóa phim________________________________66 Hình 3-16 Sơ đồ tuần tự mua hàng_______________________________67 Hình 3-17 Sơ đồ tuần tự tình trạng đơn hàng________________________68 Hình 3-18 Sơ đồ tuần tự thêm hàng vào giỏ________________________69 Hình 3-19 Sơ đồ tuần tự xóa hàng khỏi giỏ_________________________70 Hình 3-20 Sơ đồ Database______________________________________71 Hình 3-21 Trang chủ và slider___________________________________75 Hình 3-22 Giao diện thanh đầu trang______________________________75 Hình 3-23 Giao diện trang chủ với các phim bán chạy________________76 Hình 3-24 Trang chủ và các phim phổ biến_________________________76 Hình 3-25 Giao diện danh sách phim______________________________77 Hình 3-26 Giao diện chi tiết sản phẩm thông tin_____________________78 Hình 3-27 Giao diện chi tiết sản phẩm gợi_________________________79 Hình 3-28 Giao diện giỏ hàng___________________________________80 Hình 3-29 Giao diện thông tin khách______________________________80 Hình 3-30 Giao diện đặt hàng___________________________________81 Hình 3-31 Giao diện đăng nhập__________________________________82 Hình 3-32 Giao diện đăng ký____________________________________82 Hình 3-33 Dashboard 1________________________________________83 Hình 3-34 Dashboard 2________________________________________83 Hình 3-35 Dashboard 3________________________________________84 Hình 3-36 Giao diện sản phẩm___________________________________84 Hình 3-37 Giao diện tạo mới sản phẩm phim_______________________85 Hình 3-38 Giao diện chỉnh sửa sản phẩm__________________________85 Hình 3-39 Giao diện phân loại___________________________________86 Hình 3-40 Giao diện đơn hàng___________________________________86 Hình 3-41 Giao diện chi tiết đơn hàng_____________________________87 Hình 3-42 Giao diệ khách hàng__________________________________87 Hình 3-43 Giao diện nhân viên__________________________________88 Hình 3-44 Giao diện tạo nhân viên_______________________________88 DANH MỤC BẢNG DANH MỤC TỪ VIẾT TẮT Bảng 3-1 Users_______________________________________________72 Bảng 3-2 Roles_______________________________________________72 Bảng 3-3 Cart________________________________________________73 Bảng 3-4 CartInfo____________________________________________73 Bảng 3-5 Product_____________________________________________74 Bảng 3-6 Category____________________________________________75 TÓM TẮT ĐỒ ÁN Việc để tạo ra một trang Web bán hàng bắt mắt, tiện lợi cho người mua là một trong những vấn đề đang được quan tâm hàng đầu. Có rất nhiều cách để tạo ra một trang Web như thông qua các phần mềm thứ ba để tạo với những người thích thiết kế giao diện nhưng không có hiểu biết sâu rộng về lập trình hay lập trình với các ngôn ngữ, framework hỗ trợ phát triển ứng dụng Web : .NET, HTML-CSS, Javascript, Bootsrap, Vue.js, Angular… Trong đó nhóm đã chọn ReactJs cho phần thiết kế giao diện người dùng (front-end) và framework Java SpringBoot cho phần xử lý tác vụ logic, kết nối Database, để xây dựng một ứng dụng Web bán quần áo online. Ngoài ra nhóm còn kết hợp ứng dụng Machine Learning cho website thông qua việc sử dụng Framework Flask Python hỗ trợ cho model Recommender System qua API về Recommender System sẽ giúp tăng cao trải nghiệm người dùng với những khuyến nghị sản phẩm liên quan (nổi bật, mua nhiều,…) dựa trên CSDL về các đơn hàng, lịch sử mua hàng của người dùng khác.

Từ đó việc mua hàng của người dùng sẽ dễ dàng hơn trong việc chọn lựa cũng như giúp cửa hàng có thể tăng số lượng bán hàng và làm hài lòng khách hàng. GIỚI THIỆU CHUNG 1. Lý do chọn đề tài Với sự phát triển nhảy vọt của công nghệ thông tin hiện nay, Internet ngày càng giữ vai trò quan trọng trong các lĩnh vực khoa học kĩ thuật và đời sống. Internet là tập hợp kết nối giữa các máy tính, là một mạng máy tính toàn cầu mà bất kì ai cũng có thể truy cập bằng latop, PC, các thiết bị di dộng, thiết bị gia dụng thông minh,….

Vì thế cùng với sự lớn mạnh của Internet thì hàng loạt các sản phẩm mang tính thương mại ra đời với quy mô từ nhỏ đến lớn ở các ngành nghề, lĩnh vực liên quan và phổ biến,thông dụng ở mọi lĩnh vực khác. Internet đã tạo ra một cuộc cách mạng trao đổi thông tin trong mọi lĩnh vực văn hóa, y tế, xã hội, giáo dục,… nhờ đó góp phần thúc đẩy sự phát triển cảu thế giới. Trong đó nổi bật là các sản phẩm, thiết bị thương mại điện tử mà mọi người đều có thể sử dụng dễ dàng và hữu ích. Việc mua bán bây giờ không chỉ thông qua xem hàng – mua hàng trực tiếp mà còn có thể giao dịch qua các trang Web thương mại điện tử một cách tiện lợi nhưng vẫn đảm bảo được sự uy tín, chất lượng từ sản phẩm mà các doanh nghiệp, cửa hàng, siêu thị, cá nhân… cung cấp cho khách hàng cũng như sự hỗ trợ và chính sách bán hàng cần thiết.

Vì thế nhóm đã quyết định chọn đề tài đểt tạo nên một trang Web bán hàng để có thể đáp ứng nhu cầu người dùng cũng như người bán với các chức năng cần thiết nhất của một cửa hàng. Thêm vào đó các công nghệ như AI,Blockchain,IoT cũng đang ngày càng phát triển cho hầu hết các lĩnh vực đời sống và tất nhiên việc bán hàng cũng là một thị trường tiềm năng. Bởi với lượng người dùng càng tăng và lượng dữ liệu có được sẽ là một tài nguyên cho việc nghiên cứu. áp dụng các công nghệ trên.

Tổng quan về chức năng 2 Chương 2. Giới thiệu React (hay ReactJs, React.js) là một thư viện Javascript mã nguồn mở để xây dựng các thành phần giao diện có thể tái sử dụng. Nó được tạo ra bởi Jordan Walke, một kỹ sư phần mềm tại Facebook. Người bị ảnh hưởng bởi XHP ( Một nền tảng thành phần HTML cho PHP ).

ReactJs lần đầu tiên được triển khai cho ứng dụng Newsfeed của Facebook năm 2011, sau đó được triển khai cho Instagram.Nó được mở mã nguồn ( open-souced) tại JSConf US tháng 5 2013 ReactJs đang nổi lên trong những năm gần đây với xu hướng Single Page Application (SPA). Trong khi những framework khác cố gắng hướng đến một mô hình MVC hoàn thiện thì React nổi bật với sự đơn giản và dễ dàng phối hợp với những thư viện Javascript khác. Nếu như AngularJS là một Framework cho phép nhúng code Javasscript trong code HTML thông qua các attribute như ng- model, ng-repeat.thì với React là một library cho phép nhúng code HTML trong code Javascript nhờ vào JSX, bạn có thể dễ dàng lồng các đoạn HTML vào trong JS. Tích hợp giữa Javascript và HTML vào trong JSX làm cho các component dễ hiểu hơn.

Các khái niệm chính trong React (ReactJs) 2. Virtual DOM Virtual DOM chỉ là một đại diện ảo của DOM, Virtual DOM ra đời đã tăng hiệu suất các ứng dụng ReactJS một cách đáng kể. 3 Hình GIỚI THIỆU CHUNG-1 Mô hình DOM trong ứng dụng ReactJs 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 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.  Cách hoạt động cũng tựa như commit bracnh trên Github, Virtual DOM chỉ ghi nhận những thay đổi trên các component xảy ra từ đó chỉ thực việc render lại các component đó trên DOM thật. JSX JSX là một dạng ngôn ngữ cho phép viết các mã HTML trong Javascript. 4 Đặc điểm:  Nhanh hơn: JSX thực hiện tối ưu hóa trong khi biên dịch sang mã Javacsript.

Các mã này cho thời gian thực hiện nhanh hơn nhiều so với một mã tương đương viết trực tiếp bằng Javascript. Ngược với Javascript, JSX là kiểu statically typed, nghĩa là nó được biên dịch trước khi chạy, giống như Java, C++. Vì thế các lỗi sẽ được phát hiện ngay trong quá trình biên dịch. Ngoài ra, nó cũng cung cấp tính năng gỡ lỗi khi biên dịch rất tốt.

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. Như hình trên ta có thể thấy việc viết trực tiếp HTML vào function Javascript mà không có lỗi hay cần các dấu “” như xưa. HìnhGIỚI Hình GIỚITHIỆU THIỆUCHUNG-2 CHUNG-1VíVídụdụvềvềJSX JSX 2. Component Component có cú pháp như một function.

React được xây dựng xung quanh các component, chứ không dùng template như các framework khác. 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.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ