TỔNG QUAN
Tổng quan về đồ án
1.1.1 Tên của đồ án: Xây dựng website cho trung tâm tư vấn và phát triển giáo dục theo Clean Architecture
1.1.2 Link Github quản lý mã nguồn: https://github.com/lehquy13/CED-ASP_NET_Core.DDD
Trung tâm tư vấn và phát triển giáo dục
Trung tâm tư vấn và phát triển giáo dục là các cơ sở dạy kèm chuyên nghiệp, tập trung vào việc tuyển chọn và đào tạo gia sư có chuyên môn từ các trường đại học sư phạm Những trung tâm này cung cấp nguồn nhân lực chất lượng, giúp học sinh tiếp cận với giáo viên có kinh nghiệm và kiến thức chuyên sâu.
Hiện nay, nhu cầu giáo dục ngày càng gia tăng, các trung tâm giáo dục không ngừng phát triển để đáp ứng yêu cầu học tập của học viên Đặc biệt sau đại dịch Covid-19, nhiều trung tâm đã chuyển sang mô hình giới thiệu gia sư và giảng viên dạy kèm 1-1 trực tuyến, trở thành cầu nối quan trọng đảm bảo chất lượng và hiệu quả cho lớp học.
Trung tâm tư vấn và phát triển giáo dục thường có các chức năng:
- Chịu trách nhiệm phỏng vấn, quản lý chuyên môn và phương pháp giảng dạy của người đi dạy
- Ghi danh nhu cầu học của học sinh và phụ huynh
- Điều phối, kết nối gia sư với phụ huynh học sinh
- Quản lý chất lượng, tiến độ hiệu quả, chất lượng của việc dạy và học
- Tư vấn và hướng dẫn các phụ huynh, học viên về phương pháp học tập và phát triển
Nhiệm vụ hàng đầu của trung tâm là đảm bảo sự trao đổi rõ ràng và minh bạch về các yêu cầu của phụ huynh đối với người gia sư, giúp họ đánh giá tính phù hợp và khả năng đáp ứng của gia sư.
12 khả năng để dạy, đặc biệt là trách nhiệm trong việc giao lớp, gãy lớp, xử lý trục trặc hoặc hoàn phí.
Những vấn đề tồn tại và cần nghiên cứu
Trong thời đại công nghệ thông tin phát triển mạnh mẽ, học viên ngày càng tìm kiếm môi trường học tập thuận tiện và chất lượng gia sư có chuyên môn sư phạm tốt Nhu cầu học tập đa dạng và gia tăng nhanh chóng đã buộc các trung tâm phải thay đổi để thích nghi với xu hướng mới.
Trong bốn năm qua, các trung tâm đã liên tục cập nhật và áp dụng công nghệ thông tin vào mô hình kinh doanh, bao gồm việc sử dụng fanpage trên mạng xã hội để quảng bá và chạy quảng cáo, cũng như tạo website giới thiệu và ứng dụng di động nhằm đáp ứng nhu cầu đa dạng của học viên Việc thay đổi và cập nhật phần mềm hệ thống là vô cùng quan trọng và cần được thiết kế một cách tỉ mỉ.
Việc phát triển hệ thống cho các trung tâm tư vấn và phát triển giáo dục cần đầu tư kỹ lưỡng về thiết kế, kiến trúc và cài đặt để tối ưu hóa khả năng mở rộng, phát triển và bảo trì Đồng thời, các yếu tố này cũng đảm bảo an toàn, bảo mật thông tin và giảm thiểu rủi ro về chi phí vận hành.
Khảo sát
Hiện nay, có nhiều trung tâm hoạt động trên toàn quốc, với Hà Nội và Thành phố Hồ Chí Minh là hai địa điểm tập trung nhiều trung tâm uy tín nhất.
Daykemtainha.vn là trung tâm uy tín tại Thành phố Hồ Chí Minh, chuyên cung cấp dịch vụ tư vấn và hỗ trợ cho phụ huynh và học viên về các môn học, ngành học, và phương pháp học tập Trung tâm cam kết đáp ứng nhu cầu thực tế của phụ huynh và học viên bằng cách đăng tải thông tin về các lớp học phù hợp.
13 tốt cho các người dùng có nhu cầu muốn đăng ký làm gia sư thông qua các thao tác và đăng ký đầu vào
Website Daykemtainha.vn thu hút lượng truy cập lớn hàng ngày với giao diện mới mẻ, dễ sử dụng Trang web quản lý người dùng như học viên, phụ huynh và gia sư thông qua việc đăng ký tài khoản, đặc biệt yêu cầu thông tin chuyên môn từ gia sư Ngày nào cũng có lớp học mới được cập nhật, người dùng có thể xem thông tin gia sư và truy cập nhiều blog bổ ích để chọn lựa lớp học phù hợp Trung tâm cung cấp dịch vụ tư vấn qua điện thoại, Zalo và trực tiếp tại văn phòng để hỗ trợ người dùng tốt nhất.
Trung tâm cung cấp một ứng dụng di động, khuyến khích người dùng tải về để cập nhật và sử dụng các dịch vụ một cách hiệu quả hơn.
Lopmoi.giasutrithuc.net, hay Gia sư tri thức, là một trung tâm uy tín và có ảnh hưởng lớn trên mạng xã hội Facebook, chuyên cung cấp dịch vụ cập nhật lớp học mới và tư vấn định hướng cho học viên Bạn có thể theo dõi hoạt động của trung tâm qua fanpage Facebook tại địa chỉ: facebook.com/lopdaykemcantimgiasutaitphcm.
Website lopmoi.giasutrithuc.net là một Landing Page mới, nhằm giới thiệu trung tâm và cập nhật thông tin về các lớp học mới hàng ngày Trước đây, trung tâm đã có một website tương tự nhưng hiện tại đã ngừng hoạt động.
Gia sư Bảo Châu là một trung tâm tư vấn và phát triển giáo dục hàng đầu tại Việt Nam, với nhiều cơ sở hoạt động tại các thành phố lớn như Thành phố Hồ Chí Minh, Khánh Hòa, Hà Nội, Đà Nẵng và Cần Thơ Trung tâm chú trọng vào việc tư vấn và hỗ trợ học viên, giúp nâng cao chất lượng giáo dục.
Trung tâm chú trọng đến xu hướng học tập và phát triển của 14 phụ huynh, đồng thời quản lý và hỗ trợ gia sư trong việc đăng ký và nhận lớp Các lớp học sẽ được cập nhật liên tục 24/7, đảm bảo uy tín và chất lượng giảng dạy luôn đạt mức tốt nhất.
Hiện nay, trung tâm hoạt động qua nhiều hình thức như trực tiếp tại văn phòng trên toàn quốc, tư vấn online qua Facebook, Zalo và điện thoại Trung tâm sử dụng website giasubaochau.net để quản lý và đăng tin các lớp học cần gia sư, đồng thời hỗ trợ đăng nhập và đăng ký làm gia sư Ngoài ra, trung tâm khuyến khích người dùng sử dụng ứng dụng di động để đảm bảo an toàn và nâng cao chất lượng hỗ trợ.
Gia sư Thăng Long, hay trungtamdaykem.com, là một trong những trung tâm lâu đời tại Thành phố Hồ Chí Minh, cung cấp đầy đủ dịch vụ tư vấn và phát triển giáo dục Tuy nhiên, website của trung tâm hiện nay chủ yếu chỉ cho phép xem thông tin các lớp học và giới thiệu về trung tâm, với giao diện cũ và tương tự như nhiều trung tâm nhỏ khác Việc sử dụng website gặp khó khăn do bộ lọc và tìm kiếm lớp học không tối ưu, dẫn đến trải nghiệm không thoải mái và có thể lọc thông tin sai.
CƠ SỞ LÝ THUYẾT
ASP.NET CORE 7
2.1.1 ASP.NET Core là gì?
ASP.NET Core là một framework mã nguồn mở đa nền tảng, lý tưởng cho việc phát triển các ứng dụng hiện đại dựa trên nền tảng NET Framework này cho phép ứng dụng chạy trên cả NET Core và phiên bản đầy đủ của NET Framework, được tối ưu hóa cho việc triển khai trên đám mây hoặc trên nền tảng on-premise.
ASP.NET Core là một framework được thiết kế theo mô hình module, giúp tối ưu hóa tài nguyên và giảm chi phí phát triển Điều này mang lại sự linh hoạt trong việc xây dựng giải pháp, cho phép phát triển và triển khai ứng dụng đa nền tảng trên các hệ điều hành Windows, Mac và Linux.
ASP.NET Core đã chuyển sang mô hình mã nguồn mở, đánh dấu một bước tiến quan trọng trong lĩnh vực phát triển phần mềm Sự thay đổi này không chỉ mang tính chất đáng chú ý mà còn mở ra xu hướng mới cho ngôn ngữ lập trình hiện đại.
ASP.NET Core đã ra đời và được phát triển như một sản phẩm của Net Framework, nhận được sự ủng hộ mạnh mẽ từ cộng đồng Sự xuất hiện của ASP.NET Core đã đánh dấu một bước chuyển mình mạnh mẽ với những đặc điểm nổi bật của công nghệ lập trình hiện đại.
ASP.NET Core được phát triển dựa trên kinh nghiệm từ các framework khác, với mục tiêu chính là module hóa Nó sử dụng các gói module gọi là NuGet Packages, giúp tối ưu hóa thiết kế ứng dụng chỉ với những thành phần cần thiết Nhờ đó, ứng dụng xây dựng trên nền tảng ASP.NET Core có kích thước nhỏ hơn, bảo mật tốt hơn, hiệu suất cao hơn và tính ổn định vượt trội.
16 hơn Quá trình xây dựng cũng trở nên đơn giản hơn, giúp việc phát triển và bảo trì dễ dàng hơn nhiều
Khi làm việc với ASP.NET Core, người dùng được hưởng những cải tiến đáng kể, bao gồm [2]:
- Tương thích hệ thống xây dựng Web UI và Web APIs
- Tích hợp những client–side frameworks hiện đại và những luồng phát triển
- Hệ thống cấu hình dựa trên mô hình đám mây thật sự
- Dependency injection được xây dựng sẵn
- HTTP request được tối ưu nhẹ hơn
- Có thể host trên IIS hoặc self- host trong process của riêng mình
- Được xây dựng trên NET Core, hỗ trợ thực sự app versioning
- Chuyển thực thể, thành phần, module như những NuGet packages
- Các công cụ mới để đơn giản hóa quá trình phát triển web hiện đại
- Xây dựng và chạy đa nền tảng
- Mã nguồn mở, tập trung vào cộng đồng.
Entity Framework Core
2.2.1 Entity Framework Core là gì?
Entity Framework Core (EF Core) là một framework ánh xạ cơ sở dữ liệu - đối tượng hiện đại dành cho NET, cho phép thực hiện các truy vấn LINQ, theo dõi thay đổi, và cập nhật cấu trúc cơ sở dữ liệu EF Core tương thích với nhiều hệ quản trị cơ sở dữ liệu như SQL Server, SQL Azure, SQLite, Azure Cosmos DB, MySQL, PostgreSQL và nhiều loại cơ sở dữ liệu khác thông qua mô hình plugin linh hoạt.
2.2.2 Lịch sử ra đời và các phiên bản
Entity Framework, ra mắt vào năm 2008, đã đơn giản hóa việc truy vấn cơ sở dữ liệu quan hệ, giúp dễ dàng học hỏi và giảm đáng kể thời gian phát triển dự án.
Lịch sử phiên bản EF Core:
- EF Core 2.0 tháng 8 năm 2017 NET Core 2.0, VS 2017
- Lõi EF 1.1 Tháng 11 năm 2016 NET Lõi 1.1
- EF Core 1.0 tháng 6 năm 2016 NET Core 1.0
2.2.3 Tại sao lại sử dụng Entity Framework Core?
Sử dụng Entity Framework mang đến những lợi ích sau đây:
Khi thực hiện truy vấn dữ liệu, việc sử dụng Linq to Entities cho phép thao tác trực tiếp với các đối tượng từ Entity Framework, giúp loại bỏ mã SQL và giảm độ phức tạp trong quản lý cơ sở dữ liệu, đồng thời tăng tính linh hoạt trong lập trình.
Việc cập nhật các lớp và câu lệnh trở nên dễ dàng hơn khi có sự thay đổi trong cơ sở dữ liệu, giúp tiết kiệm thời gian đáng kể và loại bỏ nhu cầu điều chỉnh thủ công mã mỗi khi cấu trúc cơ sở dữ liệu thay đổi.
Entity Framework tự động tạo ra các lớp và câu lệnh cho các thao tác chọn, chèn, cập nhật và xóa dữ liệu từ cơ sở dữ liệu quan hệ, giúp giảm thiểu công sức lập trình thủ công và đảm bảo tính nhất quán, chính xác trong quá trình xử lý dữ liệu.
Entity Framework cung cấp các lớp tự động để truy xuất cơ sở dữ liệu, giúp lập trình viên tiết kiệm thời gian viết mã Điều này hỗ trợ mạnh mẽ trong việc giảm thiểu công sức cần thiết khi thao tác với cơ sở dữ liệu.
Microsoft SQL Server
Microsoft SQL Server is a relational database management system (RDBMS) developed by Microsoft in 1988 It is designed for creating, maintaining, managing, and deploying RDBMS solutions.
Phần mềm SQL Server được ưa chuộng nhờ khả năng tối ưu cho môi trường cơ sở dữ liệu lớn lên đến Tera-Byte, phục vụ hàng ngàn người dùng đồng thời Ngoài ra, ứng dụng này còn cung cấp nhiều kiểu lập trình SQL đa dạng.
ANSI SQL (SQL truyền thống) đến SQL và cả T-SQL (Transaction-SQL) được sử dụng cho cơ sở dữ liệu quan hệ nâng cao
Microsoft SQL Server cung cấp nhiều dịch vụ và công cụ quản lý dữ liệu, bao gồm SQL Server Integration Services (SSIS), SQL Server Data Quality Services và SQL Server Master Data Services Để phát triển cơ sở dữ liệu, người dùng có thể sử dụng SQL Server Data, trong khi SQL Server Management Studio (SSMS) hỗ trợ quản lý, triển khai và giám sát cơ sở dữ liệu Đối với phân tích dữ liệu, SQL Server cung cấp các dịch vụ như SQL Server Analysis Services (SSAS), SQL Server Reporting Services (SSRS) và Machine Learning Services (R Services), giúp người dùng phân tích và báo cáo dữ liệu hiệu quả.
Kiến trúc Clean Architecture
2.4.1 Kiến trúc Clean Architecture là gì?
Clean Architecture là một kiến trúc ứng dụng nổi bật, tập trung vào việc loại bỏ sự phụ thuộc giữa các đối tượng và các lớp trong ứng dụng Nguyên lý này được phát triển từ Dependency Inversion, một trong những nguyên lý quan trọng trong SOLID.
2.4.2 Mô hình Clean Architecture và các thành phần cấu tạo
Kiến trúc Clean Architecture bao gồm bốn lớp được biểu diễn bằng các vòng tròn đồng tâm, trong đó các vòng tròn bên trong hoàn toàn không biết gì về các vòng tròn bên ngoài Nguyên tắc "hướng tâm" này tạo ra sự tách biệt rõ ràng giữa các lớp, giúp tối ưu hóa khả năng bảo trì và phát triển phần mềm.
Hình 2.1 The Clean Architecture By Robert C Martin (Uncle Bob) [3][4]
Hình 2.2 The Clean Architecture Cone By Robert C Martin (Uncle Bob) [3][4]
Về cơ bản các layer này sẽ làm việc qua thông qua các trừu tượng của nhau (interfaces) [3][4]
Entities are the foundational layer in a system and represent the most critical components They consist of specific objects and their associated business logic rules In Object-Oriented Programming (OOP), entities correspond to objects that encapsulate methods and properties, adhering to the principle of encapsulation.
- chỉ bên trong Object mới có thể thay đổi trạng thái (State) của chính nó [3]
Trong đối tượng Person, thuộc tính age không được nhỏ hơn 1 Để thay đổi giá trị của age, chúng ta cần tạo một hàm public setAge, hàm này cũng sẽ kiểm tra các điều kiện liên quan đến age.
Các business logic trong layer Entities hoàn toàn độc lập với các business logic ở các layer bên ngoài như Use Cases Ví dụ, quy tắc yêu cầu người dùng phải từ 18 tuổi trở lên để tạo tài khoản vẫn giữ nguyên giá trị của thuộc tính Age trong Entities.
Use Cases là layer chứa các business logic ở cấp độ cụ thể từng Use Case (hay application)[3][4]
VD: Use Case đăng ký tài khoản (tạo mới một Person/Account) sẽ cần tổ hợp một hoặc nhiều Entities tuỳ vào độ phức tạp của Use Case
Business logic của Use Case không phụ thuộc vào nguồn dữ liệu, thư viện adapter hay cách thức hiển thị dữ liệu, vì những yếu tố này thuộc về nhiệm vụ của layer Interface Adapters.
Interface Adapters are responsible for converting data formats to suit specific Use Cases and Entities, ensuring compatibility for both internal and external application needs.
Thông tin người dùng bao gồm các dữ liệu nhạy cảm như Email, Số điện thoại và Địa chỉ Tuy nhiên, không phải lúc nào dữ liệu cũng đầy đủ để phục vụ cho giao diện người dùng (GUI) trên web.
App) Tương tự với tuỳ vào hệ thống Database mà các adapter phải format dữ liệu hợp lý
Như vậy dữ liệu đầu vào và ra ở tầng Interface Adapter chỉ cần đủ và hợp lý
Tầng Frameworks & Drivers đảm nhiệm việc thu thập và hiển thị dữ liệu, do đó người dùng không cần quan tâm đến cách thức cụ thể mà dữ liệu được xử lý.
Frameworks & Drivers là lớp ngoài cùng trong kiến trúc Clean Architecture, bao gồm các công cụ cụ thể đáp ứng nhu cầu của người dùng cuối như thiết bị, web, ứng dụng và cơ sở dữ liệu Tầng này được xem là "nhẹ" nhất trong kiến trúc, vì không yêu cầu viết quá nhiều mã nguồn.
Trên thực tế, đây là nơi "biết tất cả", đảm nhận vai trò khởi tạo các đối tượng cho các tầng bên trong, hay còn được gọi là Setup Dependencies.
PHÂN TÍCH THIẾT KẾ HỆ THỐNG
Đối tượng và phạm vi nghiên cứu và lựa chọn giải pháp công nghệ
- Phụ huynh / học sinh có nhu cầu tìm lớp học gia sư, tư vấn giáo dục
- Gia sư có nhu cầu tìm lớp dạy thêm
- Nhân viên trung tâm cần quản lý nhiều lớp học và tài khoản cá nhân của gia sư, học viên
- Phạm vi môi trường: Triển khai trên website
+ Quản lý các lớp học và xác thực các tài khoản
+ Tìm kiếm lớp dạy phù hợp với chuyên môn của người dùng
+ Phụ huynh / học viên được tư vấn, đăng tin tìm lớp học
3.1.3 Lựa chọn giải pháp công nghệ
- ASP.NET Core 7.0 following The Clean Architecture
- Database: EF Core 7.0, SQL Server
Kiến trúc hệ thống
Hình 3.1 Kiến trúc hệ thống
Domain.Shared là tầng cơ sở mà tất cả các tầng khác trong hệ thống có thể phụ thuộc, trực tiếp hoặc gián tiếp Các thành phần trong tầng này có khả năng được sử dụng linh hoạt ở mọi vị trí trong hệ thống.
Domain là tầng phụ thuộc vào Domain.Shared, vốn đã là phần của domain Tầng này tập hợp các lớp đối tượng quan trọng cho hệ thống doanh nghiệp, được gọi là thực thể (Entity), cùng với giao diện của các dịch vụ liên quan đến cơ sở dữ liệu.
Tầng Application.Contracts bao gồm nhiều lớp đối tượng gọi là DTO (Data Transfer Object), có cấu trúc tương tự với các thực thể trong miền, nhằm mục đích bảo mật thông tin Ngoài ra, tầng này còn chứa các interface cho các dịch vụ xử lý nghiệp vụ của hệ thống.
Tầng Application phụ thuộc trực tiếp vào lớp Application.Contracts, nơi cài đặt các interface được định nghĩa và sử dụng các DTO Đồng thời, tầng Application cũng liên kết với Domain, vì việc cài đặt các dịch vụ cần đến các thực thể của hệ thống.
Hạ tầng là tầng chứa và cài đặt các thành phần, dịch vụ bên thứ ba, phụ thuộc vào tầng Domain để triển khai các dịch vụ đã được định nghĩa Đây cũng là tầng chính thực hiện các thao tác liên quan đến cơ sở dữ liệu, có thể tích hợp thêm các framework ORM (Object Relational Mapping) để hỗ trợ xử lý dữ liệu Tầng hạ tầng có tính linh hoạt cao, dễ dàng thay thế và bảo trì do không phụ thuộc vào các lớp khác.
Tầng Presentation là lớp ngoài cùng, bao gồm các công cụ cụ thể đáp ứng nhu cầu của người dùng cuối như thiết bị, web, ứng dụng và cơ sở dữ liệu Tầng này có tính linh hoạt cao và dễ dàng thay đổi để phù hợp với yêu cầu sử dụng.
Mô hình Use Case
Hình 3.2 Sơ đồ Use Case mức tổng quát
3.3.2 Phân rã và đặc tả Use Case
3.3.2.1 Use Case “Xem thông tin lớp và gia sư”
Hình 3.3 Use case “Xem thông tin lớp và gia sư”
Bảng 3.1 Danh sách Use-case “Xem thông tin lớp và gia sư”
1 Xem các lớp đang cần gia sư
2 Xem thông tin chi tiết của lớp
3 Xem các gia sư của trung tâm
4 Xem thông tin chi tiết của gia sư
5 Chat với tư vấn viên
6 Quản lý các môn học
7 Quản lý thông tin các lớp học
● Đặc tả Use Case “Xem các lớp đang cần gia sư”
Bảng 3.2 Đặc tả Use-case “Xem các lớp đang cần gia sư”
Tên Use Case Xem các lớp đang cần gia sư
Sự kiện kích hoạt Người dùng muốn xem tất cả các lớp đang tìm gia sư
Luồng chính 1 Người dùng truy cập trang web
2 Người dùng bấm vào mục New Classes
Luồng thay thế Không Điều kiện trước Điện thoại / máy tính phải có kết nối mạng Điều kiện sau Người dùng xem được danh sách các lớp mới
● Đặc tả Use Case “Xem thông tin chi tiết của lớp”
Bảng 3.3 Đặc tả Use-case “Xem thông tin chi tiết của lớp”
Tên Use Case Xem thông tin chi tiết của lớp
Sự kiện kích hoạt Người dùng muốn xem thông tin chi tiết của một lớp
Luồng chính 1 Người dùng truy cập trang web
2 Người dùng bấm vào mục New Classes
3 Người dùng bấm vào một lớp bất kỳ Điều kiện trước Điện thoại / máy tính phải có kết nối mạng Điều kiện sau Người dùng xem được thông tin chi tiết của một lớp
● Đặc tả Use Case “Xem các gia sư của trung tâm”
Bảng 3.4 Đặc tả Use-case “Xem các gia sư của trung tâm”
Tên Use Case Xem các gia sư của trung tâm
Sự kiện kích hoạt Người dùng muốn xem thông tin tất cả gia sư
Luồng chính 1 Người dùng truy cập trang web
2 Người dùng bấm vào mục Tutors Điều kiện trước Điện thoại / máy tính phải có kết nối mạng Điều kiện sau Người dùng xem được danh sách các gia sư
● Đặc tả Use Case “Xem thông tin chi tiết của gia sư”
Bảng 3.5 Đặc tả Use-case “Xem thông tin chi tiết của gia sư”
Tên Use Case Xem thông tin chi tiết của gia sư
Sự kiện kích hoạt Người dùng muốn xem thông tin chi tiết của một gia sư
Luồng chính 1 Người dùng truy cập trang web
2 Người dùng bấm vào mục Tutors
3 Người dùng bấm vào một gia sư bất kỳ Điều kiện trước Điện thoại / máy tính phải có kết nối mạng Điều kiện sau Người dùng xem được thông tin chi tiết của một gia sư
● Đặc tả Use Case “Chat với tư vấn viên”
Bảng 3.6 Đặc tả Use-case “Chat với tư vấn viên”
Tên Use Case Chat với tư vấn viên
Sự kiện kích hoạt Người dùng cần được trung tâm tư vấn
Luồng chính 1 Người dùng truy cập trang web
2 Người dùng bấm vào icon Messenger góc dưới bên phải
3 Người dùng bấm vào nút Start Chat
4 Người dùng chọn Use Messenger
5 Hệ thống chuyển sang màn hình đăng nhập của Facebook
6 Người dùng nhập tài khoản Facebook và chọn lệnh đăng nhập
7 Facebook xác thực thông tin đăng nhập thành công
8 Người dùng nhập tin nhắn vào chat box
9 Hệ thống nhận được tin nhắn của người dùng
Luồng thay thế 4a Người dùng chọn Continue as Guest
Use Case tiếp tục bước 8
Luồng ngoại lệ 7a Hệ thống xác thực thông tin đăng nhập không thành công và hiển thị thông báo
Để sử dụng Use Case, trước tiên, điện thoại hoặc máy tính cần phải có kết nối mạng Sau khi đáp ứng điều kiện này, người dùng sẽ nhận được tư vấn thông qua chat box.
● Đặc tả Use Case “Quản lý các môn học”
Bảng 3.7 Đặc tả Use-case “Quản lý các môn học”
Tên Use Case Quản lý các môn học
Sự kiện kích hoạt Quản lý cần quản lý các môn học
Luồng chính 1 Quản lý truy cập trang web
2 Quản lý thực hiện Use Case “Đăng nhập” UC-2.2
3 Quản lý bấm vào mục Subject
4 Quản lý bấm vào Edit ở một môn bất kỳ cần chỉnh sửa
5 Quản lý nhập các thông tin cần chỉnh
6 Quản lý bấm chọn Submit
7 Hệ thống ghi nhận những thay đổi về thông tin môn học đó
Luồng thay thế 4a Quản lý bấm vào Details ở một môn bất kỳ cần để xem thông tin chi tiết
4a1 Hệ thống hiển thị thông tin chi tiết môn học
4b Quản lý bấm vào Delete ở một môn bất kỳ để xoá môn đó
4b1 Hệ thống hiển thị thông tin chi tiết môn học
4b2 Quản lý bấm vào Delete để xác nhận xoá
4b3 Hệ thống lưu lại thay đổi Điều kiện trước Điện thoại / máy tính phải có kết nối mạng
Quản lý cần có tài khoản quản lý để nhận thông tin mong muốn và hệ thống sẽ cập nhật các thay đổi liên quan đến môn học (nếu có).
● Đặc tả Use Case “Quản lý thông tin các lớp học”
Bảng 3.8 Đặc tả Use-case “Quản lý thông tin các lớp học”
Tên Use Case Quản lý thông tin các lớp học
Sự kiện kích hoạt Quản lý cần quản lý các lớp học
Luồng chính 1 Quản lý truy cập trang web
2 Quản lý thực hiện Use Case “Đăng nhập” UC-2.2
3 Quản lý bấm vào mục Subject
4 Quản lý bấm vào Edit ở một lớpbất kỳ cần chỉnh sửa
5 Quản lý nhập các thông tin cần chỉnh
6 Quản lý bấm chọn Submit
7 Hệ thống ghi nhận những thay đổi về thông tin lớp
Luồng thay thế 4a Quản lý bấm vào Details ở một lớp bất kỳ cần để xem thông tin chi tiết
4a1 Hệ thống hiển thị thông tin chi tiết lớp đó
4b Quản lý bấm vào Delete ở một lớp bất kỳ để xoá lớp đó 4b1 Hệ thống hiển thị thông tin chi tiết lớp học
4b2 Quản lý bấm vào Delete để xác nhận xoá
4b3 Hệ thống lưu lại thay đổi
3a Quản lý bấm vào mục Create để tạo lớp mới
3a1 Quản lý nhập các thông tin chi tiết của lớp
Use Case tiếp tục bước 6 Điều kiện trước Điện thoại / máy tính phải có kết nối mạng
Tài khoản quản lý được tạo sẵn Điều kiện sau Người dùng đăng nhập thành công vào tài khoản quản lý
Người dùng nhận được thông tin mong muốn & hệ thống cập nhật thông tin thay đổi về lớp (nếu có)
Hình 3.4 Use case “Đăng nhập”
Bảng 3.9 Danh sách Use Case “Đăng Nhập”
5 Quản lý thông tin cá nhân
● Đặc tả Use Case “Đăng ký”
Bảng 3.10 Đặc tả Use-case “Đăng ký”
Tên Use Case Đăng ký
Sự kiện kích hoạt Người dùng có nhu cầu tại tài khoản trên website trung tâm
Luồng chính 1 Người dùng truy cập trang web
2 Người dùng bấm chọn Sign in
3 Người dùng chọn Create a account
4 Người dùng nhập các thông tin yêu cầu và chọn Create Account
Luồng ngoại lệ 4a Người dùng nhập Email không đúng định dạng
4a1 Hệ thống hiển thị thông báo lỗi
Thực hiện lại bước 4 Điều kiện trước Điện thoại / máy tính phải có kết nối mạng
Người dùng phải có email Điều kiện sau Người dùng đăng ký tài khoản thành công
● Đặc tả Use Case “Đăng nhập”
Bảng 3.11 Đặc tả Use-case “Đăng nhập”
Tên Use Case Đăng nhập
Tác nhân Khách hàng, Quản lý
Sự kiện kích hoạt Người dùng có nhu cầu đăng nhập tài khoản trên website trung tâm
Luồng chính 1 Người dùng truy cập trang web
2 Người dùng bấm chọn Sign in
3 Người dùng nhập tài khoản, mật khẩu và chọn Login
4 Hệ thống xác thực thông tin đăng nhập thành công và cho phép người dùng truy cập tài khoản
Luồng ngoại lệ 4a Hệ thống xác thực thông tin đăng nhập không thành công và hiển thị thông báo
4a1 Người dùng chọn lệnh Forgot Password
Tiếp tục Use Case UC-2.3 Điều kiện trước Điện thoại / máy tính phải có kết nối mạng Điều kiện sau Người dùng đăng nhập thành công vào tài khoản
● Đặc tả Use Case “Quên mật khẩu”
Bảng 3.12 Đặc tả Use-case “Quên mật khẩu”
Tên Use Case Quên mật khẩu
Tác nhân Khách hàng, Quản lý
Sự kiện kích hoạt Người dùng quên mật khẩu khi đăng nhập
Luồng chính 1 Người dùng truy cập trang web
2 Người dùng bấm chọn Sign in
3 Người dùng chọn lệnh Forgot Password
4 Người dùng nhập email đăng ký tài khoản
5 Hệ thống xác thực email thành công và gửi email reset mật khẩu
Luồng ngoại lệ 4a Hệ thống xác thực email không thành công và hiển thị thông báo
Use Case thực hiện lại bước 4 Điều kiện trước Điện thoại / máy tính phải có kết nối mạng
Người dùng phải có sẵn tài khoản Điều kiện sau Người dùng reset mật khẩu thành công
● Đặc tả Use Case “Đổi mật khẩu”
Bảng 3.13 Đặc tả Use-case “Đổi mật khẩu”
Tên Use Case Đổi mật khẩu
Tác nhân Khách hàng, Quản lý
Sự kiện kích hoạt Người dùng có nhu cầu đổi mật khẩu
Luồng chính 1 Người dùng truy cập trang web
2 Người dùng thực hiện Use Case “Đăng nhập” UC-2.2
3 Người dùng bấm vào tên tài khoản được hiển thị ở góc trên bên phải
4 Người dùng bấm vào My Profile, chọn tab Change Password
5 Người dùng nhập mật khẩu hiện tại, mật khẩu mới và xác nhận mật khẩu; bấm Change Password
6 Hệ thống xác thực mật khẩu thành công và hiển thị thông báo
Luồng ngoại lệ 6a Hệ thống xác thực mật khẩu thất bại và hiển thị thông báo
Use Case thực hiện lại bước 5 Điều kiện trước Điện thoại / máy tính phải có kết nối mạng
Người dùng phải có sẵn tài khoản
Người dùng đã đăng nhập tài khoản Điều kiện sau Người dùng đổi mật khẩu thành công
● Đặc tả Use Case “Quản lý thông tin cá nhân”
Bảng 3.14 Đặc tả Use-case “Quản lý thông tin cá nhân”
Tên Use Case Quản lý thông tin cá nhân
Tác nhân Khách hàng, Quản lý
Sự kiện kích hoạt Người dùng có nhu cầu chỉnh sửa thông tin cá nhân
Luồng chính 1 Người dùng truy cập trang web
2 Người dùng thực hiện Use Case “Đăng nhập” UC-2.2
3 Người dùng bấm vào tên tài khoản được hiển thị ở góc trên bên phải
4 Người dùng bấm vào My Profile, chọn tab Edit Profile
5 Người dùng nhập mật khẩu hiện tại, mật khẩu mới và xác
38 nhận mật khẩu; bấm Change Password
6 Hệ thống xác thực mật khẩu thành công và hiển thị thông báo
Luồng ngoại lệ 6a Hệ thống xác thực mật khẩu thất bại và hiển thị thông báo
Use Case thực hiện lại bước 6 Điều kiện trước Điện thoại / máy tính phải có kết nối mạng
Người dùng phải có sẵn tài khoản
Người dùng đã đăng nhập tài khoản Điều kiện sau Người dùng đổi thông tin tài khoản cá nhân thành công
● Đặc tả Use Case “Đăng xuất”
Bảng 3.15 Đặc tả Use-case “Đăng xuất”
Tên Use Case Đăng xuất
Tác nhân Khách hàng, Quản lý
Sự kiện kích hoạt Người dùng có nhu cầu chỉnh sửa thông tin cá nhân
Luồng chính 1 Người dùng truy cập trang web
2 Người dùng thực hiện Use Case “Đăng nhập” UC-2.2
3 Người dùng bấm vào tên tài khoản được hiển thị ở góc trên bên phải và chọn Sign out Điều kiện trước Điện thoại / máy tính phải có kết nối mạng
Người dùng phải có sẵn tài khoản
Người dùng đã đăng nhập tài khoản
39 Điều kiện sau Người dùng đăng xuất thành công
3.3.2.3 Use Case “Đăng ký nhận lớp”
Hình 3.5 Use case “Đăng ký nhận lớp”
Bảng 3.16 Danh sách Use-case “Đăng ký nhận lớp”
1 Đăng ký làm gia sư
3 Xem thông tin các lớp đang dạy
4 Xác thực thông tin gia sư
● Đặc tả Use Case “Đăng ký làm gia sư ”
Bảng 3.17 Đặc tả Use-case “Đăng ký làm gia sư”
Tên Use Case Đăng ký làm gia sư
Sự kiện kích hoạt Người dùng có nhu cầu đăng ký làm gia sư
Luồng chính 1 Người dùng truy cập trang web
2 Người dùng thực hiện Use Case “Đăng nhập” UC-2.2
3 Người dùng bấm vào Tutor Register
4 Người dùng điền các thông tin yêu cầu và bấm chọn Submit
Luồng thay thế 2a Người dùng không có tài khoản, bấm chọn Tutor
3a Người dùng điền các thông tin yêu cầu
Người dùng cần tích chọn mục "Create an account", sau đó nhập mật khẩu cho tài khoản và nhấn "Submit" Trước khi thực hiện, điện thoại hoặc máy tính phải có kết nối mạng Sau khi hoàn tất, người dùng sẽ đăng ký thành công làm gia sư.
● Đặc tả Use Case “Yêu cầu nhận lớp”
Bảng 3.18 Đặc tả Use-case “Yêu cầu nhận lớp”
Tên Use Case Yêu cầu nhận lớp
Sự kiện kích hoạt Gia sư có nhu cầu nhận một lớp để dạy
Luồng chính 1 Gia sư truy cập vào trang web
2 Gia sư thực hiện Use Case “Đăng nhập” UC-2.2
3 Gia sư bấm xem chi tiết lớp muốn nhận và chọn Register this class
4 Gia sư tiến hành thanh toán phí nhận lớp, hệ thống xác thực giao dịch thành công,
5 Gia sư xem được số điện thoại người học và tiến hành liên hệ
Luồng ngoại lệ 4 Hệ thống xác thực giao dịch thất bại
Use Case dừng lại Điều kiện trước Điện thoại / máy tính phải có kết nối mạng
Người dùng đã thực hiện Use Case “Đăng ký làm gia sư” UC-3.1
Lớp chưa có ai nhận Điều kiện sau Người dùng nhận lớp thành công
● Đặc tả Use Case “Xem thông tin các lớp đang dạy”
Bảng 3.19 Đặc tả Use-case “Xem thông tin các lớp đang dạy”
Tên Use Case Xem thông tin các lớp đang dạy
Sự kiện kích hoạt Gia sư có nhu cầu xem các lớp đang dạy
Luồng chính 1 Người dùng truy cập vào trang web
2 Người dùng thực hiện Use Case “Đăng nhập” UC-2.2
3 Người dùng bấm vào tên tài khoản được hiển thị ở góc trên bên phải
4 Người dùng bấm vào My Profile, chọn tab Teaching Class Điều kiện trước Điện thoại / máy tính phải có kết nối mạng
Người dùng đã thực hiện Use Case “Đăng ký làm gia sư” UC-3.1 Điều kiện sau Người dùng xem được danh sách các lớp từng nhận thành công
● Đặc tả Use Case “Xác thực thông tin gia sư”
Bảng 3.20 Đặc tả Use-case “Xác thực thông tin gia sư”
Tên Use Case Xác thực thông tin gia sư
Sự kiện kích hoạt Nhận được thông tin đăng ký làm gia sư mới
Luồng chính 1 Người dùng truy cập vào trang web
2 Người dùng thực hiện Use Case “Đăng nhập” UC-2.2
3 Người dùng bấm chọn Tutor trong mục User Management
4 Người dùng chọn lệnh Edit ở gia sư muốn xác thực
5 Người dùng chọn check ở ô Is tutor verified và bấm Submit để lưu lại Điều kiện trước Điện thoại / máy tính phải có kết nối mạng Điều kiện sau Quản lý xác thực thành công gia sư mới
3.3.2.4 Use Case “Yêu cầu tạo lớp mới”
Hình 3.6 Use case “Yêu cầu tạo lớp mới”
Bảng 3.21 Danh sách Use-case “Yêu cầu tạo lớp mới”
1 Yêu cầu tạo lớp mới
2 Yêu cầu gia sư cụ thể
3 Xem thông tin các lớp đang học
4 Xác thực thông tin lớp học
● Đặc tả Use Case “Yêu cầu tạo lớp mới”
Bảng 3.22 Đặc tả Use-case “Yêu cầu tạo lớp mới”
Tên Use Case Yêu cầu tạo lớp mới
Sự kiện kích hoạt Khách hàng có nhu cầu tạo lớp mới
Luồng chính 1 Người dùng truy cập vào trang web
2 Người dùng bấm chọn Get Started
3 Người dùng nhập thông tin liên hệ, yêu cầu về lớp học và gia sư
4 Người dùng bấm chọn Create
Luồng thay thế 2a Người dùng thực hiện Use Case “Chat với tư vấn viên”
UC-1.5 và nhớ nhân viên tạo lớp
Use Case kết thúc Điều kiện trước Điện thoại / máy tính phải có kết nối mạng Điều kiện sau Khách hàng yêu cầu tạo lớp mới thành công
● Đặc tả Use Case “Yêu cầu gia sư cụ thể”
Bảng 3.23 Đặc tả Use-case “Yêu cầu gia sư cụ thể”
Tên Use Case Yêu cầu gia sư cụ thể
Sự kiện kích hoạt Khách hàng có muốn chọn một gia sư cụ thể
Luồng chính 1 Người dùng truy cập vào trang web
2 Người dùng bấm vào mục Tutors
3 Người dùng bấm vào xem chi tiết một gia sư mình muốn và chọn “Create a request”
4 Người dùng nhập thông tin liên hệ, yêu cầu về lớp học và bấm Create
Luồng thay thế 2a Người dùng thực hiện Use Case “Chat với tư vấn viên”
UC-1.5 và nhớ nhân viên liên hệ gia sư
Để sử dụng tính năng tạo lớp mới với gia sư chỉ định, khách hàng cần đảm bảo rằng điện thoại hoặc máy tính của mình có kết nối mạng ổn định Sau khi đáp ứng điều kiện này, khách hàng sẽ thành công trong việc tạo lớp mới.
● Đặc tả Use Case “Xem thông tin các lớp đang học”
Bảng 3.24 Đặc tả Use-case “Xem thông tin các lớp đang học”
Tên Use Case Xem thông tin các lớp đang học
Sự kiện kích hoạt Người dùng muốm xem các lớp từng tạo
Luồng chính 1 Người dùng truy cập vào trang web
2 Người dùng thực hiện Use Case “Đăng nhập” UC-2.2
3 Người dùng bấm vào tên tài khoản được hiển thị ở góc trên bên phải
4 Người dùng bấm vào My Profile, chọn tab Learning Class Điều kiện trước Điện thoại / máy tính phải có kết nối mạng Điều kiện sau Xem được các lớp đã và đang học
● Đặc tả Use Case “Xác thực thông tin lớp học”
Bảng 3.25 Đặc tả Use-case “Xác thực thông tin lớp học”
Tên Use Case Xác thực thông tin lớp học
Sự kiện kích hoạt Quản lý cần xác thực thông tin lớp học
Luồng chính 1 Người dùng truy cập vào trang web
2 Người dùng thực hiện Use Case “Đăng nhập” UC-2.2
3 Người dùng bấm chọn Class Informations
4 Người dùng chọn Edit ở lớp muốn xác thực
5 Người dùng xác thực thông tin chính xác và set Current status thành Available
6 Người dùng chọn Submit để lưu lại
Luồng ngoại lệ 5 Người dùng xác thực thông tin gia sư không chính xác
Use Case dừng lại Điều kiện trước Điện thoại / máy tính phải có kết nối mạng Điều kiện sau Người dùng xác thực thông tin gia sư thành công
Sơ đồ mối quan hệ giữa các thực thể
Hình 3.7 Tổng quan cơ sở dữ liệu
Mô tả dữ liệu
Bảng 3.26 Mô tả bảng dữ liệu User
STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa/Ghi chú
1 Id uniqueidentifier PK Khóa chính của bảng
2 FirstName nvarchar Not-null Tên của người dùng
3 LastName nvarchar Not-null Họ (và tên lót) của người dùng
4 Email nvarchar Not-null Email dùng để đăng nhập
5 Address nvarchar Địa chỉ người dùng
6 BirthYear int Not-null Năm sinh của người dùng
7 CreationTime datetime2 Thời gian tạo tài khoản
8 Description nvarchar Mô tả bản thân của người dùng
9 Gender int Not-null Giới tính người dùng
10 IsDeleted bit Tài khoản này đã xóa hay chưa
11 IsEmailConfirmed bit Email của tài khoản này được xác thực chưa
12 PhoneNumber nvarchar Not-null Số điện thoại của người dùng
13 Role int Not-null Vai trò của người dùng
14 Image nvarchar Not-null Ảnh đại điện của người dùng
Bảng 3.27 Mô tả bảng dữ liệu Subject
STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa/Ghi chú
1 Id uniqueidentifier PK Khóa chính của bảng
2 Name nvarchar Not-null Tên của môn học
3 Description nvarchar Not-null Mô tả môn học
4 CreationTime datetime2 Not-null Thời gian tạo môn học
5 IsDeleted bit Môn học này đã xóa hay chưa
Bảng 3.28 Mô tả bảng dữ liệu Tutor
STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa/Ghi chú
1 Id uniqueidentifier PK,FK Khóa chính của bảng
2 AcademicLevel int Not-null Trình độ học vấn của gia sư
3 IsVerified bit Not-null Gia sư đã được xác nhận chưa?
4 Rate smallint Not-null Số sao đánh giá của gia sư
Bảng 3.29 Mô tả bảng dữ liệu ClassInformation
STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa/Ghi chú
1 Id uniqueidentifier PK Khóa chính của bảng
2 Title nvarchar Not-null Tiêu đề của môn học
3 Description nvarchar Not-null Mô tả lớp học
4 CreationTime nvarchar Not-null Thời gian tạo lớp học
5 IsDeleted nvarchar Lớp học này đã xóa hay chưa
6 Status int Not-null Tình trạng của lớp học
7 LearningMode int Not-null Thể thức học của lớp
8 Fee real Not-null Phí dạy từng buổi
9 ChargeFee real Not-null Phí nhận lớp
10 GenderRequireme nt int Not-null Yêu cầu giới tính
11 AcademicLevelRe quirement int Not-null Yêu cầu trình độ học vấn
12 NumberOfStudent int Not-null Tổng số lượng học viên
13 MinutePerSession int Not-null Thời gian học mỗi buổi
14 SessionPerWeek int Not-null Số buổi mỗi tuần
15 Address nvarchar Địa chỉ học
16 SubjectId uniqueidentifier FK, Not- null
Mã của môn học được dạy
17 StudentId uniqueidentifier FK Mã tài khoản của học viên
18 TutorId uniqueidentifier FK Mã tài khoản của gia sư
19 ContactNumber nvarchar Số điện thoại để liên quan đến học viên
Bảng 3.30 Mô tả bảng dữ liệu TutorMajor
STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa/Ghi chú
1 Id uniqueidentifier PK Khóa chính của bảng
2 SubjectId uniqueidentifier FK, Not- null
Mã của môn học chuyên môn của gia sư
3 TutorId uniqueidentifier FK, Not- null
Mã tài khoản của gia sư
Bảng 3.31 Mô tả bảng dữ liệu TutorVerificationInfo
STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa/Ghi chú
1 Id uniqueidentifier PK Khóa chính của bảng
2 Image uniqueidentifier nvarchar Ảnh xác thực của gia sư
3 TutorId uniqueidentifier FK, Not- null
Mã tài khoản của gia sư
Bảng 3.32 Mô tả bảng dữ liệu Subscriber
STT Tên thuộc tính Kiểu Ràng Ý nghĩa/Ghi chú
1 Id uniqueidentifier PK Khóa chính của bảng
2 TutorId uniqueidentifier FK, Not- null
Mã tài khoản của gia sư đăng ký nhận mail
Bảng 3.33 Mô tả bảng dữ liệu TutorReview
STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa/Ghi chú
PK Khóa chính của bảng
Mã lớp học được đánh giá
4 Rate smallint Not-null Số sao đánh giá gia sư
5 Description nvarchar Not-null Nhận xét chi tiết
Bảng 3.34 Mô tả bảng dữ liệu RequestGettingClass
STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa/Ghi chú
1 Id uniqueidentifier PK Khóa chính của bảng
2 TutorId uniqueidentifier FK, Not- null
Mã tài khoản của gia sư được đăng ký nhận lớp
3 LearnerId uniqueidentifier FK, Not- null
Mã tài khoản của học viên đánh giá
4 RequestStatus int Not-null Trạng thái của yêu cầu
5 Description nvarchar Not-null Ghi chú cho yêu cầu
TRIỂN KHAI ỨNG DỤNG
Giao diện của Khách hàng
4.1.2 Trang danh sách các lớp mới
Hình 4.2 Trang danh sách các lớp học mới
4.1.3 Trang chi tiết thông tin lớp học
Hình 4.3 Trang chi tiết thông tin lớp học
4.1.4 Trang danh sách các gia sư
Hình 4.4 Trang danh sách gia sư
4.1.5 Trang chi tiết thông tin gia sư
Hình 4.5 Trang chi tiết thông tin gia sư
4.1.8 Trang yêu cầu tạo lớp
Hình 4.8 Trang tạo yêu cầu lớp học mới
4.1.9 Trang đăng ký làm gia sư
Hình 4.9 Trang đăng ký làm gia sư
Giao diện của Quản lý
Hình 4.10 Trang đăng nhập (Admin)
4.2.3 Trang quản lý học viên
Hình 4.12 Trang quản lý học viên
4.2.4 Trang quản lý thông tin chi tiết của học viên
Hình 4.13 Trang thông tin chi tiết của học viên
4.2.5 Trang quản lý gia sư
Hình 4.14 Trang danh sách gia sư
4.2.6 Trang quản lý thông tin chi tiết của gia sư
Hình 4.15 Trang thông tin chi tiết của gia sư
4.2.7 Trang quản lý lớp học
Hình 4.16 Trang danh sách các lớp học
4.2.8 Trang quản lý thông tin chi tiết của lớp học
Hình 4.17 Trang thông tin chi tiết lớp học
4.2.9 Trang quản lý các môn học
Hình 4.18 Trang quản lý các môn học
4.2.10 Trang khái quát thông tin cá nhân
Hình 4.19 Trang khái quát thông tin cá nhân
4.2.11 Trang chỉnh sửa thông tin cá nhân
Hình 4.20 Trang chỉnh sửa thông tin cá nhân
Hình 4.21 Trang đổi mật khẩu