- Đảm bảo an toàn và bảo mật thông tin: Áp dụng các giải pháp bảo mật như mã hóa mật khẩu, hệ thống xác thực vi Refresh Token, và bảo vệ dữ liệu người dùng để đảm bảo an toàn thông tin
TỔNG QUAN
Lý do chọn đề tài
Sinh viên thường cần di chuyển giữa trường học, ký túc xá và nhà riêng, nhưng không phải ai cũng có phương tiện cá nhân hoặc khả năng sử dụng dịch vụ công cộng thuận tiện Trong bối cảnh công nghệ thông tin phát triển, việc kết nối và chia sẻ trở nên dễ dàng hơn Để đáp ứng nhu cầu di chuyển tiết kiệm và xây dựng cộng đồng bền vững, nhóm chúng tôi đã phát triển ứng dụng web Student Book dành cho sinh viên Ứng dụng này không chỉ hỗ trợ việc đi lại mà còn thúc đẩy sự gắn kết giữa các sinh viên, tạo cơ hội chia sẻ phương tiện và xây dựng mối quan hệ tốt đẹp Điều này mang lại lợi ích thiết thực và tạo ra môi trường hỗ trợ lẫn nhau trong trường học.
Ứng dụng không chỉ giúp bảo vệ môi trường bằng cách giảm số lượng xe lưu thông và hạn chế khí thải, mà còn giảm tắc nghẽn giao thông, tạo lợi ích cho người dùng và nâng cao ý thức cộng đồng Bằng cách cho phép người dùng đánh giá và phản hồi về các chuyến đi, ứng dụng xây dựng một hệ thống dịch vụ an toàn và đáng tin cậy, khuyến khích sinh viên tuân thủ quy định và tạo ra một môi trường sử dụng ứng dụng lành mạnh.
Đề tài "Xây dựng web Student Booking" được chọn nhằm cung cấp giải pháp toàn diện cho sinh viên, giúp giải quyết khó khăn trong di chuyển và tăng cường sự gắn kết giữa các bạn Hệ thống không chỉ hỗ trợ lẫn nhau mà còn mở ra cơ hội phát triển và mở rộng trong tương lai, đáp ứng nhu cầu của các cộng đồng khác.
Mục tiêu của đề tài
Mục tiêu chính của dự án "Xây dựng website Student Booking" là phát triển một nền tảng trực tuyến giúp sinh viên dễ dàng kết nối và chia sẻ phương tiện di chuyển Hệ thống này không chỉ hỗ trợ sinh viên trong việc di chuyển hàng ngày mà còn góp phần xây dựng một cộng đồng đoàn kết, an toàn và tiết kiệm.
Xây dựng hệ thống quản lý chuyến đi với giao diện trực quan và dễ sử dụng giúp sinh viên dễ dàng tạo và tìm kiếm các chuyến đi phù hợp Hệ thống này cần hỗ trợ việc đặt chỗ và quản lý chi tiết chuyến đi, bao gồm thời gian, điểm đi, điểm đến và chi phí chia sẻ.
Hệ thống đánh giá người dùng được tích hợp cho phép sinh viên thực hiện đánh giá lẫn nhau qua hai mục riêng biệt: một cho vai trò tài xế và một cho vai trò hành khách Chức năng này không chỉ nâng cao tính minh bạch mà còn gia tăng độ tin cậy của hệ thống.
Phát triển hệ thống quản lý người dùng cho phép sinh viên dễ dàng quản lý thông tin cá nhân, theo dõi lịch sử các chuyến đi đã tham gia và chỉnh sửa thông tin cá nhân của mình Đồng thời, quản trị viên có khả năng giám sát và quản lý các chuyến đi cùng với tài khoản người dùng, nhằm đảm bảo chất lượng dịch vụ tốt nhất.
Để đảm bảo an toàn và bảo mật thông tin, cần áp dụng các giải pháp bảo mật hiệu quả như mã hóa mật khẩu, sử dụng hệ thống xác thực với Refresh Token, và bảo vệ dữ liệu người dùng nhằm bảo vệ thông tin cá nhân một cách tối ưu.
Phát triển hệ thống nhắn tin trực tuyến cho phép sinh viên dễ dàng trao đổi thông tin về chuyến đi, xác nhận điểm đón và giải đáp thắc mắc một cách nhanh chóng và thuận tiện.
Hệ thống nhắn tin cần đảm bảo an toàn, bảo mật và dễ sử dụng.
Tối ưu hóa trải nghiệm người dùng là điều cần thiết, với thiết kế giao diện thân thiện và hoạt động mượt mà trên cả máy tính và thiết bị di động, giúp sinh viên dễ dàng truy cập và sử dụng dịch vụ.
Hiện trạng doanh nghiệp
Phạm vi nghiên cứu của đề tài "Xây dựng website Student Booking" bao gồm:
Hệ thống website được xây dựng nhằm hỗ trợ sinh viên trong việc tìm kiếm và đăng ký các chuyến đi chung, đáp ứng nhu cầu di chuyển hàng ngày Người dùng có thể dễ dàng tìm kiếm thông tin chi tiết về chuyến đi, tài xế và hành khách tiềm năng Bên cạnh đó, hệ thống cho phép người dùng quản lý thông tin cá nhân, theo dõi lịch sử các chuyến đi đã tham gia và đánh giá trải nghiệm của mình.
Hệ thống quản lý chuyến đi cho phép sinh viên dễ dàng tạo, tìm kiếm và tham gia các chuyến đi, bao gồm việc quản lý thông tin về điểm đi/đến, thời gian và chi phí chia sẻ Tính năng đánh giá người dùng tích hợp giúp sinh viên có thể đánh giá tài xế hoặc hành khách, nâng cao tính minh bạch và độ tin cậy Quản lý người dùng cho phép đăng nhập và thay đổi mật khẩu tài khoản cá nhân, trong khi hệ thống quản trị viên có khả năng giám sát và quản lý các chuyến đi, tài khoản cũng như nội dung đánh giá Cuối cùng, tính năng thông báo và nhắc nhở hỗ trợ gửi thông báo về các chuyến đi đã đặt hoặc thay đổi, cùng với gợi ý các chuyến đi tiềm năng.
Trong phạm vi kỹ thuật, giao diện người dùng sẽ được phát triển bằng công nghệ React hoặc Next.js, trong khi hệ thống quản lý phía server sẽ sử dụng Node.js và Express để kết nối với cơ sở dữ liệu Để lưu trữ thông tin về người dùng, thú cưng, sản phẩm và dịch vụ, chúng tôi sẽ áp dụng MongoDB Đồng thời, chúng tôi cam kết đảm bảo bảo mật thông tin người dùng và thanh toán thông qua các phương thức bảo mật cơ bản như mã hóa mật khẩu và token đăng nhập.
Hệ thống được triển khai trên nền tảng đám mây, cho phép truy cập từ nhiều thiết bị khác nhau, đồng thời đảm bảo khả năng mở rộng và tính ổn định cao.
1.4 Phương ph*p nghiên cứu. Để hoàn thành đề tài "Xây dựng website đặt lịch, bán thú cưng và đồ chăm sóc thú cưng," các phương pháp nghiên cứu chính được áp dụng như sau:
Phương pháp nghiên cứu tài liệu bao gồm việc thu thập và phân tích các tài liệu, bài viết liên quan đến xây dựng và phát triển hệ thống thương mại điện tử Các mô hình thiết kế website bán hàng, cùng với hệ thống quản lý sản phẩm và dịch vụ chăm sóc thú cưng, sẽ được tham khảo để lựa chọn những phương pháp phù hợp cho ứng dụng Bên cạnh đó, việc nghiên cứu các giải pháp bảo mật và quản lý dữ liệu cũng rất quan trọng nhằm đảm bảo tính bảo mật và hiệu quả cho hệ thống.
Phương pháp phân tích hệ thống bao gồm việc khảo sát và thu thập thông tin để xác định các yêu cầu của người dùng, từ đó xây dựng mô hình use case cho các chức năng chính Phân tích này cũng tập trung vào các thành phần chức năng của hệ thống, bao gồm quản lý sản phẩm, giỏ hàng, đặt lịch chăm sóc và quản lý người dùng.
Phương pháp thiết kế và phát triển phần mềm bao gồm việc thiết kế giao diện bằng các công cụ như Figma hoặc Adobe XD để nâng cao trải nghiệm người dùng (UX) Đối với phát triển website, các công nghệ hiện đại như React hoặc Next.js được sử dụng cho giao diện, trong khi Node.js và Express xây dựng backend, và MongoDB là cơ sở dữ liệu chính Cuối cùng, kiểm thử phần mềm được thực hiện thông qua các kỹ thuật kiểm thử đơn vị và kiểm thử tích hợp nhằm đảm bảo hệ thống hoạt động ổn định và chính xác.
Để đảm bảo tính tương thích và ổn định của hệ thống, cần tiến hành thử nghiệm trên nhiều thiết bị và trình duyệt khác nhau Bên cạnh đó, việc thu thập phản hồi từ người dùng thử nghiệm là rất quan trọng nhằm cải tiến và hoàn thiện hệ thống trước khi triển khai chính thức.
Phương pháp nghiên cứu
2.1 Gi1i thiệu về nền tảng chia sẽ chuyến đi
Nền tảng chia sẻ chuyến đi trực tuyến là mô hình dịch vụ dựa trên ứng dụng di động hoặc website, cho phép người dùng tìm kiếm, đặt và chia sẻ chuyến đi giữa các cá nhân Dịch vụ này kết nối tài xế với hành khách qua ứng dụng trực tuyến, giúp giảm chi phí di chuyển, tối ưu hóa lưu lượng giao thông và cung cấp dịch vụ vận chuyển linh hoạt, nhanh chóng Ngoài việc đáp ứng nhu cầu di chuyển, các nền tảng này còn cung cấp dịch vụ phụ trợ như giao hàng, gọi xe ôm và thanh toán trực tuyến.
Lý thuyết về nền tảng chia sẻ chuyến đi có thể chia thành các yếu tố sau:
Kinh tế chia sẻ là mô hình kinh tế tập trung vào việc chia sẻ tài nguyên chưa được khai thác, cho phép tài xế chia sẻ xe của họ với hành khách có nhu cầu di chuyển.
Nền tảng công nghệ được phát triển trên ứng dụng di động hoặc website, tích hợp các công nghệ như GPS, thanh toán điện tử và hệ thống đánh giá, nhằm kết nối tài xế và hành khách một cách an toàn và hiệu quả.
Mạng lưới kết nối là nền tảng chia sẻ chuyến đi, cho phép tài xế và hành khách dễ dàng tương tác, từ đó tạo ra một hệ sinh thái giao thông linh hoạt và tiết kiệm chi phí.
Các nền tảng chia sẻ dịch vụ tối ưu hóa tài nguyên và mang lại trải nghiệm tiện lợi cho người dùng Với sự phát triển không ngừng của công nghệ, xu hướng này sẽ tiếp tục mở rộng ra nhiều lĩnh vực, tạo cơ hội mới cho cộng đồng người dùng.
2.2 C*c chức năng và thành phần chính của nền tảng chia sẻ chuyến đi
Nền tảng chia sẻ chuyến đi là giải pháp phần mềm giúp doanh nghiệp quản lý và giám sát toàn bộ hoạt động đặt xe, bao gồm quản lý người dùng, theo dõi các chuyến đi và đánh giá dịch vụ.
CƠ SỞ LÝ THUYẾT
Công nghệ sử dụng
React.js là một thư viện mạnh mẽ để xây dựng giao diện người dùng, cho phép phát triển các component tái sử dụng, từ đó tối ưu hóa hiệu suất và quản lý trạng thái ứng dụng một cách dễ dàng Những ưu điểm này giúp nâng cao trải nghiệm người dùng và tăng cường khả năng bảo trì cho các dự án phát triển web.
Cung cấp cách tiếp cận component-based, giúp dễ dàng tổ chức mã nguồn.
Hỗ trợ Virtual DOM, giúp tăng tốc độ render và cải thiện hiệu suất.
Có một cộng đồng ln và nhiều thư viện hỗ trợ.
Next.js là một framework mạnh mẽ cho React, cho phép xây dựng ứng dụng web với khả năng render phía server (SSR) và tạo trang tĩnh (SSG), mang lại hiệu suất cao và tối ưu hóa SEO Ưu điểm của Next.js bao gồm khả năng cải thiện tốc độ tải trang, hỗ trợ tối ưu hóa cho các công cụ tìm kiếm và dễ dàng triển khai các ứng dụng phức tạp.
Cải thiện SEO nhờ vào khả năng render trang trưc khi gửi ti client.
Hỗ trợ tự động phân chia mã (code splitting), giúp tối ưu hóa tải trang.
Cung cấp các tính năng như routing tự động và tích hợp dễ dàng vi API.
MapBox can be effectively utilized with Next.js, a React framework, to develop web applications that support server-side rendering (SSR) and static site generation (SSG) This combination enhances performance and optimizes user experience, making it a powerful choice for modern web development.
Tích hợp MapBox dễ dàng trong các ứng dụng Next.js, cho phép hiển thị bản đồ tương tác và các dịch vụ liên quan đến địa lý.
Khả năng render phía server (SSR) và tạo trang tĩnh (SSG) của Next.js đóng vai trò quan trọng trong việc cải thiện SEO, giúp tối ưu hóa quá trình lập chỉ mục nội dung trên trang web.
Hiệu suất tốt hơn: Next.js hỗ trợ tự động phân chia mã (code splitting), giúp tải nhanh hơn và sử dụng hiệu quả tài nguyên.
Routing tự động giúp tổ chức và hiển thị các trang liên quan đến bản đồ một cách dễ dàng, cho phép người dùng xem nhiều địa điểm hoặc tuyến đường cùng lúc.
Tích hợp API: Dễ dàng kết nối và sử dụng API của MapBox cho các tính năng như tìm kiếm địa điểm, chỉ đường, và lp bản đồ tùy chỉnh
- Material-UI: Sử dụng Material-UI (hiện tại gọi là MUI) để tạo giao diện người dùng đẹp mắt và thân thiện vi người dùng. o Ưu điểm:
Cung Cung cấp một bộ thành phần UI phong phú và dễ dàng tùy chỉnh, giúp tăng tốc độ phát triển giao diện.
Tuân theo nguyên tắc thiết kế Material của Google, mang lại trải nghiệm người dùng mượt mà và nhất quán.
Hỗ trợ tính năng responsive, giúp giao diện hiển thị tốt trên các thiết bị khác nhau.
- WebSocket: Client sử dụng WebSocket để giao tiếp vi server. o Ưu điểm:
WebSocket cung cấp khả năng truyền nhận dữ liệu gần như tức thì giữa client và server, giúp nâng cao trải nghiệm người dùng với sự tương tác mượt mà hơn.
WebSocket duy trì một kết nối mở giữa client và server, cho phép việc trao đổi dữ liệu diễn ra liên tục mà không cần gửi yêu cầu mới qua HTTP cho từng sự kiện.
Vì dữ liệu được truyền trực tiếp qua một kết nối mở, độ trễ trong giao tiếp giữa client và server được giảm đáng kể.
Spring Boot là một framework mạnh mẽ trong hệ sinh thái Java, cho phép xây dựng ứng dụng web và API một cách nhanh chóng và dễ dàng Với khả năng cấu hình tự động và hỗ trợ tích hợp linh hoạt với cơ sở dữ liệu cũng như các dịch vụ web, Spring Boot giúp đơn giản hóa quy trình phát triển và triển khai ứng dụng.
- Spring MVC: Được tích hợp trong Spring Boot, Spring MVC giúp xử lý các yêu cầu
HTTP hỗ trợ xây dựng các API RESTful hiệu quả, cung cấp công cụ mạnh mẽ cho việc tạo và quản lý controller, service và repository Điều này giúp tổ chức mã nguồn một cách rõ ràng, dễ dàng bảo trì và nâng cao hiệu suất phát triển ứng dụng.
API RESTful sử dụng kiến trúc REST để tối ưu hóa giao tiếp giữa front-end và back-end, mang lại hiệu quả cao trong việc xử lý dữ liệu Bằng cách áp dụng các phương thức HTTP như GET, POST, PUT và DELETE, API RESTful không chỉ giúp ứng dụng hoạt động linh hoạt mà còn dễ dàng mở rộng trong tương lai.
- JPA/Hibernate: Để kết nối và thao tác vi cơ sở dữ liệu, Spring Boot sử dụng JPA
Java Persistence API (JPA) và Hibernate là những công nghệ ORM nổi bật, cho phép việc lưu trữ và truy xuất dữ liệu trong cơ sở dữ liệu quan hệ trở nên đơn giản và hiệu quả hơn.
- WebSocket: Để xử lý kết nối vi client, gửi dữ liệu thời gian thực đến client, nhận dữ liệu từ client để xử lý hoặc lưu trữ.
- MySQL: Sử dụng MySQL làm cơ sở dữ liệu quan hệ để lưu trữ thông tin
MySQL là một hệ quản trị cơ sở dữ liệu phổ biến và mạnh mẽ, lý tưởng cho các ứng dụng web nhờ khả năng quản lý dữ liệu hiệu quả Với cấu trúc dữ liệu quan hệ, MySQL lưu trữ dữ liệu trong các bảng, giúp dễ dàng quản lý và truy vấn thông tin có cấu trúc rõ ràng Hệ thống này cũng có khả năng mở rộng để xử lý lượng dữ liệu lớn thông qua các kỹ thuật như phân mảnh cơ sở dữ liệu và sao lưu Đặc biệt, MySQL nổi bật với hiệu suất cao, cho phép xử lý các truy vấn nhanh chóng nhờ vào việc tối ưu hóa chỉ mục và bộ nhớ đệm, phù hợp cho các ứng dụng yêu cầu tốc độ truy xuất cao và tính sẵn sàng của dữ liệu.
Sử dụng JavaMail API để gửi email từ ứng dụng là một giải pháp hiệu quả cho việc gửi thông báo như xác nhận đơn hàng, thông báo đặt lịch, hoặc cung cấp thông tin cho người dùng JavaMail là thư viện mạnh mẽ và linh hoạt, hỗ trợ nhiều giao thức khác nhau và cho phép tùy chỉnh cấu hình, giúp việc tích hợp chức năng gửi email vào ứng dụng Java trở nên dễ dàng hơn.
Sử dụng Git để quản lý mã nguồn là một phương pháp hiệu quả giúp theo dõi sự thay đổi trong quá trình phát triển phần mềm Git không chỉ hỗ trợ làm việc nhóm thông qua việc phân nhánh và quản lý phiên bản, mà còn giúp hợp nhất mã dễ dàng Ngoài ra, Git thường được tích hợp với các nền tảng như GitHub và GitLab, tạo điều kiện thuận lợi cho việc quản lý dự án một cách hiệu quả.
Kiểm thử API là một bước quan trọng trong phát triển phần mềm, và Postman là công cụ lý tưởng để thực hiện điều này Với giao diện thân thiện, Postman cho phép người dùng dễ dàng gửi yêu cầu HTTP và kiểm tra phản hồi từ server Việc sử dụng Postman giúp đảm bảo rằng API hoạt động đúng như mong đợi trước khi được triển khai vào thực tế.
PHÂN TÍCH HỆ THỐNG
Phân tích yêu cầu
Trong quá trình phát triển website "Xây dựng website Student Booking" các yêu cầu chức năng chính bao gồm:
Quản lý tài khoản người dùng cho phép người dùng thực hiện các thao tác như đăng nhập và đăng xuất Chức năng này bao gồm việc chỉnh sửa thông tin cá nhân, thay đổi mật khẩu và khôi phục mật khẩu khi cần thiết.
Người dùng có thể tìm kiếm, tạo và xem bài đăng chuyến xe qua các kênh tài xế và khách hàng Họ có khả năng tạo và chỉnh sửa bài đăng với thông tin như nơi đi, nơi đến, giờ xuất phát và số tiền cho chuyến xe Bài đăng sẽ hiển thị chi tiết về người đăng, địa điểm khởi hành và điểm đến, thời gian xuất phát cùng mức giá chuyến đi Ngoài ra, người dùng cũng có thể gửi yêu cầu đến các bài đăng chuyến xe từ cả hai kênh tài xế và khách hàng.
- Chức năng nhắn tin: o Người dùng có thể nhắn tin trực tiếp cho người gửi yêu cầu ti bài đăng hoặc người tạo bài đăng.
Người dùng có khả năng quản lý bài đăng của mình bằng cách chỉnh sửa thông tin như nơi đi, nơi đến, giờ xuất phát và số tiền cho chuyến xe Họ cũng có thể chấp nhận các yêu cầu gửi tới bài đăng, bao gồm thông tin về người gửi, nơi đi, nơi đến, giờ xuất phát và số tiền cho chuyến xe.
Người dùng có khả năng để lại đánh giá và bình luận sau mỗi chuyến xe, giúp chia sẻ trải nghiệm của mình Hệ thống sẽ quản lý các đánh giá này và công khai hiển thị trên trang cá nhân của người được đánh giá, tạo sự minh bạch và tin cậy cho cộng đồng.
Quản trị viên có quyền quản lý người dùng, chuyến đi, bài đăng và đánh giá trên website, bao gồm việc thêm, sửa đổi hoặc xóa người dùng và bài đăng Họ cũng có khả năng theo dõi các yêu cầu liên quan đến bài đăng, đảm bảo quản lý hiệu quả nội dung và trải nghiệm người dùng.
3.1.2 Yêu cầu phi chức năng
Các yêu cầu phi chức năng (Non-functional Requirements) của hệ thống " Xây dựng website Student Booking " bao gồm:
Hiệu năng của hệ thống rất quan trọng, với thời gian phản hồi khi tải trang không vượt quá 3 giây Hệ thống cần có khả năng xử lý đồng thời ít nhất 1000 yêu cầu từ người dùng trong giờ cao điểm mà không gây ra sự chậm trễ Bên cạnh đó, thời gian xử lý các thao tác hiện thông báo và yêu cầu tải cần diễn ra trong vòng 5 giây.
Độ tin cậy của hệ thống là yếu tố quan trọng, bao gồm khả năng phục hồi nhanh chóng sau sự cố như lỗi server, đảm bảo uptime tối thiểu 99,9% trong một tháng, và thực hiện sao lưu định kỳ dữ liệu của người dùng để tránh mất mát thông tin quan trọng.
Để đảm bảo tính bảo mật cho hệ thống, cần áp dụng các phương pháp hiện đại như xác thực JWT và OAuth cùng với việc phân quyền người dùng hợp lý Dữ liệu nhạy cảm như mật khẩu và thông tin cá nhân phải được mã hóa trước khi lưu trữ trong cơ sở dữ liệu Hệ thống cũng cần được bảo vệ khỏi các lỗ hổng bảo mật như SQL Injection, Cross-Site Scripting (XSS), và Cross-Site Request Forgery (CSRF) Đặc biệt, việc yêu cầu xác thực hai yếu tố (2FA) cho các thao tác quan trọng như thay đổi mật khẩu và thông tin tài khoản là cần thiết để tăng cường an ninh.
Khả năng sử dụng của website rất quan trọng, bao gồm giao diện người dùng thân thiện và dễ sử dụng, phù hợp với sinh viên từ nhiều khoa và năm học khác nhau Bên cạnh đó, tính tương thích đa thiết bị cũng cần được đảm bảo, giúp website hoạt động tốt trên các thiết bị di động, máy tính bảng và máy tính để bàn Cuối cùng, trải nghiệm người dùng (UX) phải mượt mà, dễ hiểu và không có nhiều bước thao tác phức tạp để người dùng cảm thấy thoải mái khi sử dụng.
Khả năng bảo trì (Maintainability) là yếu tố quan trọng trong phát triển phần mềm, bao gồm việc quản lý mã nguồn hiệu quả thông qua các công cụ kiểm soát phiên bản như Git, giúp dễ dàng theo dõi và sửa đổi mã Ngoài ra, tài liệu hệ thống cần được cung cấp đầy đủ và dễ hiểu, bao gồm kiến trúc hệ thống, API, và hướng dẫn sử dụng, để hỗ trợ đội ngũ phát triển và bảo trì trong quá trình làm việc.
Khả năng sử dụng của nền tảng được nâng cao với giao diện người dùng thân thiện và dễ hiểu, tương thích trên cả máy tính và thiết bị di động thông qua thiết kế responsive Nó hỗ trợ đa ngôn ngữ, tối ưu hóa trải nghiệm người dùng để việc tìm kiếm và mua sắm sản phẩm, cũng như đặt lịch dịch vụ trở nên thuận tiện hơn Bên cạnh đó, nền tảng cung cấp hướng dẫn sử dụng rõ ràng, giúp người dùng mới dễ dàng tiếp cận và sử dụng dịch vụ.
Để đảm bảo tuân thủ pháp lý, các tổ chức giáo dục cần chú ý đến việc bảo vệ dữ liệu cá nhân, đặc biệt là theo quy định của GDPR nếu có sinh viên quốc tế Họ cũng nên cung cấp chính sách bảo mật rõ ràng cho người dùng, bao gồm thông tin chi tiết về cách thức thu thập, sử dụng và bảo vệ thông tin cá nhân.
Đặc tả hệ thống
3.2.1 Đặc tả chức năng chính
Dưi đây là các chức năng chính của hệ thống website Student Booking:
Danh sách bài đăng chuyến xe bao gồm thông tin chi tiết về kênh tài xế và kênh khách hàng Mỗi bài đăng cung cấp các thông tin quan trọng như địa điểm đi, địa điểm đến, thời gian xuất phát và người đăng, giúp người dùng dễ dàng tìm kiếm và lựa chọn chuyến đi phù hợp.
Để tạo bài đăng cho chuyến xe, người dùng cần chọn địa điểm khởi hành và điểm đến cùng với thời gian xuất phát Bên cạnh đó, người dùng cũng có thể lựa chọn các yêu cầu phù hợp để gửi đến bài đăng mà họ cảm thấy thích hợp nhất.
Người dùng có thể dễ dàng đăng nhập và đăng xuất khỏi tài khoản của mình, đồng thời quản lý thông tin cá nhân một cách thuận tiện Ngoài ra, họ cũng có khả năng xem lại lịch sử các bài đăng đã tạo và các đánh giá phản hồi từ người khác về mình.
- Chức năng nhắn tin: o Người dùng có thể nhắn tin trực tiếp cho người gửi yêu cầu ti bài đăng hoặc người tạo bài đăng.
Người dùng có thể đánh giá và nhận xét về tài xế hoặc khách hàng sau khi kết thúc chuyến đi, giúp cải thiện chất lượng dịch vụ Bên cạnh đó, việc xem các đánh giá và nhận xét từ người khác về tài xế và khách hàng cũng cung cấp thông tin hữu ích, hỗ trợ người dùng đưa ra quyết định tốt hơn trong các chuyến đi tiếp theo.
Tìm kiếm nâng cao với bộ lọc giúp người dùng dễ dàng tìm bài đăng theo giờ Ngoài ra, chức năng tìm kiếm theo từ khóa cho phép người dùng nhanh chóng tìm thấy những bài viết phù hợp với nhu cầu của mình.
3.2.2 Đặc tả phi chức năng
- Hiệu suất (Performance) o Tốc độ tải trang: Website phải tải nhanh, vi thời gian phản hồi dưi
Hệ thống cho phép thực hiện hầu hết các thao tác chỉ trong 3 giây, bao gồm gửi yêu cầu, tạo bài đăng và đánh giá Với khả năng xử lý song song, hệ thống có thể xử lý nhiều yêu cầu đồng thời mà không ảnh hưởng đến hiệu suất, đảm bảo trải nghiệm người dùng mượt mà ngay cả khi lưu lượng truy cập cao.
Hệ thống cần có khả năng mở rộng theo cả chiều dọc và chiều ngang để đáp ứng nhu cầu tăng trưởng về người dùng và dữ liệu mà không làm giảm hiệu suất Đặc biệt, cơ sở dữ liệu phải có khả năng mở rộng linh hoạt khi số lượng sản phẩm, người dùng và lịch đặt dịch vụ gia tăng.
Bảo mật dữ liệu người dùng là ưu tiên hàng đầu, bao gồm việc bảo vệ thông tin cá nhân và thiết lập cơ chế xác thực mạnh mẽ như OAuth và JWT Hệ thống cần có quy trình phân quyền truy cập rõ ràng, chỉ cho phép người dùng truy cập vào các tính năng phù hợp với quyền hạn của họ Đồng thời, cần triển khai các biện pháp bảo vệ hiệu quả để chống lại các cuộc tấn công mạng, bao gồm SQL Injection, XSS (Cross-site scripting) và CSRF (Cross-site request forgery).
Khả năng chịu lỗi là yếu tố quan trọng trong hệ thống, cho phép xử lý lỗi một cách linh hoạt, đảm bảo rằng nếu một phần gặp sự cố, các phần còn lại vẫn hoạt động bình thường Để tăng cường tính ổn định, cần có cơ chế tự động sao lưu dữ liệu hàng ngày, giúp tránh mất mát thông tin trong trường hợp xảy ra sự cố.
Website cần đảm bảo khả năng tương thích đa nền tảng với các trình duyệt phổ biến như Chrome, Firefox, Safari và Microsoft Edge Đồng thời, website cũng phải hiển thị chính xác và hoạt động mượt mà trên mọi thiết bị, bao gồm máy tính, máy tính bảng và điện thoại di động, đáp ứng đầy đủ các tiêu chí của Responsive Web Design.
Khả năng bảo trì (Maintainability) là yếu tố quan trọng trong thiết kế hệ thống, yêu cầu hệ thống phải dễ dàng cập nhật, mở rộng tính năng và khắc phục lỗi mà không làm ảnh hưởng đến toàn bộ hệ thống Để đạt được điều này, cấu trúc hệ thống cần rõ ràng và các thành phần nên được tách biệt theo mô hình MVC hoặc các mô hình tương tự, giúp quá trình bảo trì trở nên thuận lợi hơn.
Khả năng sử dụng của hệ thống là yếu tố quan trọng, với giao diện thân thiện và trực quan giúp người dùng dễ dàng tạo bài đăng mà không gặp phải thao tác phức tạp Hệ thống cũng cần tối ưu cho người dùng thông qua các tính năng như tự động hoàn thành, gợi ý sản phẩm và các chức năng tiện ích khác, nhằm nâng cao trải nghiệm sử dụng.
Khả năng đáp ứng (Availability) của hệ thống là rất quan trọng, với việc đảm bảo website hoạt động liên tục 24/7 Điều này giúp giảm thiểu thời gian downtime, cho phép người dùng truy cập và sử dụng dịch vụ mọi lúc, mọi nơi.
THIẾT KẾ HỆ THỐNG
Sơ đồ phân rã chức năng
Hình 4.3 Sơ đồ phân rã chức năng
Quản lý tài khoản người dùng bao gồm các chức năng quan trọng như đăng nhập vào tài khoản đã được cung cấp, cập nhật thông tin cá nhân và mật khẩu, xem lịch sử và chi tiết bài đăng, cũng như kiểm tra lịch sử và chi tiết các đánh giá đã nhận.
Quản lý bài đăng chuyến đi cho phép người dùng dễ dàng thêm, chỉnh sửa và xóa các bài đăng của mình Người dùng có thể chấp nhận hoặc từ chối các yêu cầu gửi đến bài đăng của họ Hệ thống cũng hỗ trợ tìm kiếm và lọc bài đăng theo địa điểm, giúp người dùng nhanh chóng tìm thấy thông tin cần thiết Ngoài ra, người dùng có thể xem chi tiết bài đăng để nắm rõ thông tin Đặc biệt, người dùng có khả năng gửi yêu cầu tham gia chuyến đi, sửa đổi hoặc hủy yêu cầu tham gia vào bài đăng một cách thuận tiện.
Khách hàng có thể đánh giá tài xế sau mỗi chuyến đi, trong khi tài xế cũng có khả năng đánh giá khách hàng Ngoài ra, người dùng có thể nhắn tin trực tiếp với nhau, tạo sự giao tiếp thuận tiện và nhanh chóng.
Hệ thống thông báo bao gồm ba loại chính: Thông báo chuyến đi, thông báo chấp nhận và thông báo tin nhắn Thông báo chuyến đi sẽ được gửi đến người đăng khi có yêu cầu gửi bài đăng Thông báo chấp nhận sẽ thông báo cho người gửi yêu cầu khi có chấp nhận từ người đăng bài Cuối cùng, thông báo tin nhắn sẽ được gửi khi có người gửi tin nhắn đến.
Hệ thống quản lý cho phép Admin thực hiện nhiều chức năng quan trọng, bao gồm quản lý người dùng bằng cách thêm, sửa và khóa tài khoản vi phạm Admin cũng có thể theo dõi các chuyến đi để đảm bảo an toàn và hiệu quả Ngoài ra, việc báo cáo và xử lý vi phạm từ người dùng được thực hiện một cách nghiêm túc, giúp duy trì trật tự trong hệ thống Cuối cùng, Admin có quyền quản lý đánh giá, cho phép sửa hoặc xóa những đánh giá không chính xác.
Sơ đồ Use Case
Hình 4.4 Sơ đồ use case tổng quát
Hình 4.5 Use case đăng nhập
- Mô tả: Use case cho admin hoặc user đăng nhập vào hệ thống
- Điều kiện: Admin hoặc user đăng nhập vào hệ thống
Khi người dùng đăng nhập đúng, hệ thống sẽ hiển thị thông báo xác nhận và chuyển hướng đến trang tương ứng: trang quản lý cho Admin và trang chủ cho User Ngược lại, nếu thông tin đăng nhập không chính xác, sẽ có thông báo lỗi xuất hiện.
4.2.2 Usecase quản lý đánh giá
Hình 4.6 Usecase Quản lý đánh giá
- Mô tả: Use case cho admin quản lý đánh giá của hệ thống
- Điều kiện: Admin đã đăng nhập vào hệ thống
Trong sự kiện này, các chức năng xóa và sửa các đánh giá được thực hiện Nếu quá trình thành công, danh sách đánh giá sẽ được cập nhật và hiển thị Ngược lại, nếu có lỗi xảy ra, hệ thống sẽ thông báo cho người dùng.
4.2.3 Usecase quản lý người dùng
Hình 4.7 Usecase Quản lý người dùng
- Mô tả: Use case cho admin quản lý người dùng
- Điều kiện: Admin đã đăng nhập vào hệ thống
- Sự kiện và kết quả: o Thực hiện các chức năng -> nếu thành công sẽ cập nhật và hiển thị lại danh sách người dùng o Nếu sai sẽ báo lỗi
4.2.4 Usecase quản lý danh sách yêu cầu
Hình 4.8 Use case quản lý các yêu cầu
- Mô tả: Use case cho admin quản lý danh sách yêu cầu
- Điều kiện: Admin đã đăng nhập vào hệ thống
- Sự kiện và kết quả: o Thực hiện các chức năng -> nếu thành công sẽ cập nhật và hiển thị lại danh sách yêu cầu o Nếu sai sẽ báo lỗi
4.2.5 Usecase quản lý danh sách chuyến đi
Hình 4.9 Use case quản lý chuyến đi
- Mô tả: Use case cho admin quản lý danh sách chuyến đi
- Điều kiện: Admin đã đăng nhập vào hệ thống
- Sự kiện và kết quả: o Thực hiện các chức năng -> nếu thành công sẽ cập nhật và hiển thị lại danh sách chuyến đi o Nếu sai sẽ báo lỗi
4.2.6 Usecase quản lý danh sách bài đăng
Hình 4.10 Use case quản lý bài đăng
- Mô tả: Use case cho admin quản lý danh sách bài đăng
- Điều kiện: Admin đã đăng nhập vào hệ thống
- Sự kiện và kết quả: o Thực hiện các chức năng -> nếu thành công sẽ cập nhật và hiển thị lại danh sách o Nếu sai sẽ báo lỗi
4.2.7 Usecase cập nhật thông tin cá nhân
Hình 4.9 Use case cập nhật thông tin cá nhân
- Mô tả: Use case cho User cập nhật thông tin cá nhân
- Điều kiện: User đã đăng nhập vào hệ thống
Để cập nhật thông tin cá nhân, người dùng cần nhấn lưu thay đổi Nếu quá trình cập nhật thành công, thông tin mới sẽ được hiển thị Ngược lại, nếu có lỗi, hệ thống sẽ thông báo cho người dùng.
4.2.8 Usecase gửi yêu cầu bài đăng
Hình 4.10 Use case gửi yêu cầu tới bài đăng
- Mô tả: Use case cho User gửi yêu cầu ti bài đăng
- Điều kiện: User đã đăng nhập vào hệ thống
Để thực hiện gửi yêu cầu, bạn cần chọn bài đăng, xác định địa điểm và giá tiền Sau khi hoàn tất, nhấn gửi yêu cầu Nếu quá trình thành công, bạn sẽ nhận được thông báo thành công; ngược lại, nếu có lỗi, hệ thống sẽ thông báo cho bạn biết.
4.2.9 Usecase chấp nhận yêu cầu bài đăng
Hình 4.11 Use case đặt lịch chăm sóc thú cưng
- Mô tả: Use case cho User chấp nhận yêu cầu bài đăng
- Điều kiện: User đã đăng nhập vào hệ thống
Trong sự kiện này, người dùng thực hiện việc chấp nhận yêu cầu bằng cách chọn yêu cầu cụ thể Sau đó, họ có thể nhắn tin trao đổi với người dùng khác nếu cần thiết Khi đã hoàn tất, người dùng chọn xác nhận yêu cầu Nếu quá trình diễn ra thành công, họ sẽ được chuyển đến chuyến đi; ngược lại, nếu có sai sót, hệ thống sẽ thông báo lỗi.
4.2.10 Usecase tìm kiếm bài đăng theo địa chỉ
Hình 4.12 Use case tra cứu thông tin sản phẩm
- Mô tả: Use case cho User tìm kiếm bài đăng theo địa chỉ
- Điều kiện: User đã đăng nhập vào hệ thống
Khi người dùng nhập địa chỉ cần tìm kiếm, hệ thống sẽ tiến hành truy vấn cơ sở dữ liệu để hiển thị các bài đăng tương ứng Nếu địa chỉ nhập vào không chính xác, hệ thống sẽ thông báo lỗi cho người dùng.
Hình 4.13 Use case đánh giá
- Mô tả: Use case cho User đánh giá
- Điều kiện: User đã đăng nhập và vừa hoàn thành chuyến đi
Để tham gia sự kiện đánh giá, người dùng cần hiển thị bảng đánh giá, nhập bình luận, chọn số sao và tải lên hình ảnh (nếu có) Sau đó, nhấn nút đánh giá hoặc tắt chế độ đánh giá nếu không muốn gửi Nếu quá trình đánh giá thành công, kết quả sẽ được hiển thị; ngược lại, nếu có lỗi xảy ra, hệ thống sẽ thông báo lỗi cho người dùng.
Sơ đồ tuần tự
4.3.1 Sơ đồ tuần tự đăng nhập
Hình 4.14 Sơ đồ tuần tự đăng nhập
4.3.2 Sơ đồ tuần tự quản lý đánh giá
Hình 4.15 Sơ đồ tuần tự quản lý đánh giá
4.3.3 Sơ đồ tuần tự quản lý người dùng
Hình 4.16 Sơ đồ tuần tự quản lý người dùng
4.3.4 Sơ đồ tuần tự quản lý yêu cầu
Hình 4.17 Sơ đồ tuần tự quản lý yêu cầu
4.3.5 Sơ đồ tuần tự quản lý chuyến đi
Hình 4.18 Sơ đồ tuần tự quản lí chuyến đi
4.3.6 Sơ đồ tuần tự quản lý bài đăng
Hình 4.19 Sơ đồ tuần tự quản lý bài đăng
4.3.7 Sơ đồ tuần tự cập nhật thông tin cá nhân
Hình 4.20 Sơ đồ tuần tự cập nhật thông tin cá nhân
4.3.8 Sơ đồ tuần tự gửi yêu cầu bài đăng
Hình 4.21 Sơ đồ tuần tự đặt mua sản phẩm
4.3.9 Sơ đồ tuần tự chấp nhận yêu cầu bài đăng
Hình 4.22 Sơ đồ tuần tự chấp nhận yêu cầu bài đăng
4.3.10.Sơ đồ tuần tự tra tìm kiếm đăng theo địa chỉ
Hình 4.11 Sơ đồ tuần tự tìm kiếm bài đăng theo địa chỉ
4.3.11.Sơ đồ tuần tự đánh giá
Hình 4.12 Sơ đồ tuần tự đánh giá
Thiết kế cơ sở dữ liệu
Hình 4.13 Sơ đồ cơ sở dữ liệu 4.4.1 Mô tả các colleciton
Tên Kiểu dữ liệu Mô tả
The user account information includes an object ID, username, email address, mobile number, password, and the account creation date Each user is identified by a unique object ID and has a designated username, while their email and mobile number facilitate communication The password ensures account security, and the date indicates when the account was created.
Avatar string URL của ảnh đại diện role string Vai trò của người dùng
(admin/user) isBlocked boolean Trạng thái tài khoản bị khóa
Address array Danh sách địa chỉ của người dùng
Voucher array Danh sách voucher của người dùng [0] voucherID objectId ID của voucher favoritePets array Danh sách thú cưng yêu thích
[0] petID objectId ID của thú cưng yêu thích favoriteProduct array Danh sách sản phẩm yêu thích
[0] productID string ID của sản phẩm yêu thích
CartForProduc t array Giỏ hàng sản phẩm phụ kiện
[0] prodID objectId ID của sản phẩm trong giỏ hàng
CartForPet array Giỏ hàng thú cưng
PetID objectId ID của thú cưng trong giỏ hàng
Tên Kiểu dữ liệu Mô tả
Tên Kiểu dữ liệu Mô tả
_id objectId Id category nameCate string Tên category
Tên Kiểu dữ liệu Mô tả
The product information includes an object ID for identification, the product name, and the URL for product images It features a short title for quick reference, the available quantity in stock, and the product price Additionally, there is a detailed description of the product, a category ID for classification, and an array of ratings to reflect customer reviews.
PostBy objectId ID người dùng đăng đánh giá
[1] name string Tên người dùng đăng đánh giá
[2] comment string Bình luận của người dùng
Tên Kiểu dữ liệu Mô tả
[3] star numeric Số sao đánh giá
[4] feedback_img string URL hình ảnh phản hồi từ người dùng
Tên Kiểu dữ liệu Mô tả
The voucher includes an object ID, a name, and a discount value represented as either a percentage or a fixed amount It also specifies exclusive conditions, such as a minimum spending requirement, and has an expiry date indicating when the voucher is no longer valid.
Tên Kiểu dữ liệu Mô tả
_id objectId ID của tin tức title string Tiêu đề firtsWord string Lời nói đầu content string Nội dung image string Hình ảnh tiêu đề
Tên Kiểu dữ liệu Mô tả
_id objectId ID của đoạn chat members array Danh sách thành viên
Tên Kiểu dữ liệu Mô tả
_id objectId ID của mess chatID objectId Id đoạn chat senderId string Id người gửi text string Nội dung
Tên Kiểu dữ liệu Mô tả
_id objectId ID nameSpecies string Tên loài
Tên Kiểu dữ liệu Mô tả
Tên Kiểu dữ liệu Mô tả nameBreed string Tên giống loài species objectId Id loài
The data structure for pet information includes various fields: "id" represents the unique identifier for each pet, while "nameProduct" specifies the pet's name The "breed" field links to the pet's breed ID, and "imgPet" contains the URL for the pet's image The pet's "age" is recorded as a numeric value, and "gender" indicates its sex A detailed "description" provides insights about the pet, and "price" reflects its cost Additional health-related fields include "vaccination" and "deworming" status, both numeric, while "quantity" denotes the available number of pets The "characteristic" field highlights unique traits, and the "sold" status indicates whether the pet has been sold Lastly, "rating" holds an array of reviews for the pet.
PostBy objectId ID người dùng đánh giá
[1] name string Tên người dùng đánh giá
[2] comment string Bình luận của người dùng
[3] star numeric Số sao đánh giá (từ 1 đến 5) [4] feedback_img string URL hình ảnh phản hồi từ người dùng
Tên Kiểu dữ liệu Mô tả
_id objectId ID nameService string Tên dịch vụ description string Mô tả price numeric Giá
Tên Kiểu dữ liệu Mô tả id objectId ID user objectId ID user pet array Thông tin thú cưng
[0] namePet string Tên của thú cưng
[1] imgPet string URL hình ảnh của thú cưng
[2] nameBreed string Giống của thú cưng
[3] age string Tuổi của thú cưng
[4] gender string Gii tính của thú cưng
The vaccination service includes an object ID representing the selected care service, a total price indicating the overall cost of the appointment, and a status that reflects the booking's current state, such as pending, completed, or canceled.
Tên Kiểu dữ liệu Mô tả
_id objectId ID của đơn hàng
Product objectId ID sản phẩm trong đơn hàng (nếu có)
The article outlines key details regarding an order, including the pet ID associated with the order, the total cost of the order, the current status of the order (which can be pending, confirmed, delivered, or canceled), and the ID of any discount coupon applied to the order.
Note string Ghi chú từ khách hàng
OrderBy objectId ID người đặt hàng
Mỗi người dùng (User ) có thể sở hữu nhiều voucher, với thông tin chi tiết được lưu trữ trong collection User Trong collection này, trường Voucher là một mảng chứa các voucherID, mỗi voucherID đóng vai trò là khóa ngoại liên kết đến collection Voucher.
- User - FavoritePets và FavoriteProduct o Quan hệ: Một User có thể có nhiều thú cưng và sản phẩm yêu thích. o Chi tiết:
FavoritePets: Collection User chứa mảng favoritePets, mỗi phần tử có petID liên kết đến collection Pet.
FavoriteProduct: Collection User chứa mảng favoriteProduct, mỗi phần tử có productID liên kết đến collection Product.
- User - CartForProduct và CartForPet o Quan hệ: Một User có thể có nhiều sản phẩm và thú cưng trong giỏ hàng. o Chi tiết:
CartForProduct: Mảng chứa các prodID (ID sản phẩm) liên kết đến collection Product.
CartForPet: Mảng chứa các PetID liên kết đến collection Pet.
- Product – Category: o Quan hệ: Mỗi Product thuộc về một Category. o Chi tiết: Trong collection Product, trường caterogy là một khóa ngoại liên kết đến collection Category.
- Pet – Breed: o Quan hệ: Mỗi Pet thuộc về một Breed (giống loài). o Chi tiết: Trong collection Pet, trường breed là một khóa ngoại liên kết đến collection Breed.
- Breed – Species o Quan hệ: Mỗi Breed thuộc về một Species (loài). o Chi tiết: Trong collection Breed, trường species là một khóa ngoại liên kết đến collection Species.
- Booking – TypeService o Quan hệ: Một Booking có thể chứa nhiều dịch vụ (TypeService). o Chi tiết: Trong collection Booking, có mảng services liên kết đến collection TypeService.
Mỗi đơn hàng (Order) có thể bao gồm nhiều sản phẩm (Product), thú cưng (Pet) và nhiều mã giảm giá (Coupon) Trong bộ sưu tập đơn hàng, các trường Product và Pet được liên kết với các sản phẩm và thú cưng tương ứng, trong khi trường coupon được kết nối với Voucher.
Một cuộc trò chuyện (Chat) có thể bao gồm nhiều thành viên (User ) Trong bộ sưu tập Chat, trường members là một mảng chứa các userID liên kết đến từng User.
Mỗi tin nhắn (Message) đều thuộc về một cuộc trò chuyện (Chat) cụ thể, với trường chatID trong bộ sưu tập Message liên kết trực tiếp đến Chat tương ứng.
Thiết kế giao diện người dùng
Hình 4.15 Giao diện trang chủ
Hình 4.16 Giao diện About Us
4.5.4 Giao diện Spa & Hotel Service
Hình 4.17 Giao diện Spa & Hotel Service
4.5.5 Giao diện trang tin tức
Hình 4.18 Giao diện trang tin tức
4.5.6 Giao diện trang bài viết
4.5.7 Giao diện trang Sản phẩm thú cưng
Hình 4.19 Giao diện trang sản phẩm thú cưng
4.5.8 Giao diện trang Tất cả loài Chó hoặc Mèo
Hình 4.20 Giao diện trang Tất cả loài Chó hoặc Mèo
4.5.9 Giao diện giỏ hàng và thanh toán