đồ án 1 website quản lý môn đồ án

40 1 0
Tài liệu đã được kiểm tra trùng lặp
đồ án 1 website quản lý môn đồ án

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Vì vậy, nhóm chúng em quyết định chọn đề tài Website quản lý môn đồ án làm đồ án 1 để có thể tối ưu, hỗ trợ quy trình quản lý, giám sát và thực hiện đồ án của giáo vụ, giảng viên và sinh

Trang 1

ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

TP HỒ CHÍ MINH, 2023

Trang 2

LỜI CẢM ƠN

Nhóm chúng em xin gửi lời cảm ơn chân thành tới Khoa Công nghệ Phần mềm và Th.S Huỳnh Hồ Thị Mộng Trinh - giảng viên hướng dẫn Vì sự giúp đỡ và hỗ trợ mà chúng em đã nhận được trong quá trình thực hiện đồ án 1

Trong suốt quá trình thực hiện đồ án, chúng chúng em đã gặp phải nhiều thách thức và khó khăn Tuy nhiên, dưới sự chỉ dẫn tận tâm và kiến thức sâu sắc của Th.S Huỳnh Hồ Thị Mộng Trinh, chúng chúng em đã có được sự hỗ trợ và định hướng chính xác để vượt qua những khó khăn đó

Th.S Huỳnh Hồ Thị Mộng Trinh đã luôn sẵn lòng lắng nghe và giải đáp mọi thắc mắc của chúng chúng em, cung cấp những thông tin quan trọng và những lời khuyên hữu ích để chúng chúng em có thể tiến bộ và hoàn thành đồ án một cách tốt nhất Bên cạnh đó, Th.S Huỳnh Hồ Thị Mộng Trinh cũng đã tạo điều kiện cho chúng chúng em để nắm vững các kiến thức và kỹ năng cần thiết trong lĩnh vực công nghệ phần mềm

Chúng chúng em nhận thức rằng đồ án của chúng chúng em vẫn có thể tồn tại một số sai sót và hạn chế Tuy nhiên, nhờ sự hướng dẫn tận tâm và sự động viên không ngừng của Th.S Huỳnh Hồ Thị Mộng Trinh, chúng chúng em đã tạo ra một sản phẩm đồ án đáng tự hào, mang tính thực tiễn và đáp ứng được yêu cầu đề ra Chúng chúng em biết ơn sự tận tuỵ và những giá trị mà thầy cô công tác ở Khoa Công nghệ Phần mềm đã truyền đạt cho chúng chúng em trong quá trình học tập và thực hiện đồ án Những kiến thức và kỹ năng mà chúng chúng em đã học được sẽ mãi mãi có giá trị và ảnh hưởng đến sự nghiệp của chúng chúng em trong tương lai.

Trang 3

2 Sơ đồ Use case 20

2 Danh mục Use case 22

3 Đặc tả Use case 22

1 Use case 01 - Config number of student enroll in a project 23

Trang 4

2 Use case 02 - Allow students registration 24

3 Use case 03 – Modify Project 25

4 Use case 04 – Add Project 26

5 Use case 05 – Delete Project 27

6 Use case 06 – Add Course 28

7 Use case 07 – Create Notification 29

8 Use case 08 – Export Grade 30

9 Use case 09 – Insert Grade 31

10 Use case 10 – Comment 32

11 Use case 11 – Submit project 33

12 Use case 12 – Register for consideration 34

13 Use case 13 – Login 35

14 Use case 14 – Add Student to a course 36

Trang 5

Bảng 3.3.1 Use case 01 - Config number of student enroll in a project 23Bảng 3.3.2 Use case 02 - Allow students registration 24

Bảng 3.3.12 Use case 12 - Register for consideration 34

Trang 6

Bảng 3.3.14 Use case 14 - Add Student to a course 36

Trang 7

7

Chương 1 Mở đầu 1 Lý do chọn đề tài

Đồ án 1 và Đồ án 2 là 2 môn học bắt buộc cần phải hoàn thành đối với mỗi sinh viên trước khi ra trường 2 môn này có một quy trình cụ thể, khác với các môn học khác về cách thức thực hiện, yêu cầu, nộp báo cáo, tài liệu

Vì vậy, nhóm chúng em quyết định chọn đề tài Website quản lý môn đồ án làm đồ án 1 để có thể tối ưu, hỗ trợ quy trình quản lý, giám sát và thực hiện đồ án của giáo vụ, giảng viên và sinh viên khi tham gia vào môn học Đồ án 1 và Đồ án 2

Một trong những mục tiêu chính của đề tài là tạo một nơi lưu trữ tập trung cho tài liệu đồ án Website sẽ cung cấp khả năng lưu trữ các tài liệu, báo cáo, biểu mẫu và các tài liệu tham khảo liên quan đến quy trình thực hiện đồ án Điều này giúp sinh viên có thể dễ dàng truy cập và tìm kiếm thông tin cần thiết, đồng thời giảm thiểu rủi ro mất mát hoặc nhầm lẫn tài liệu

Hệ thống sẽ cung cấp chức năng lưu trữ và quản lý thông tin điểm số của sinh viên Giảng viên và giáo vụ có thể nhập điểm số và ghi chú liên quan vào hệ thống, từ đó tạo ra một bảng điểm tự động và dễ dàng truy cập Điều này giúp quản lý và giám sát tiến độ và kết quả của từng sinh viên trong quá trình thực hiện đồ án Sinh viên cũng có thể xem điểm số của mình để theo dõi và đánh giá quá trình làm việc của mình

Trang 8

8 Ngoài ra, đề tài cũng nhằm tạo ra một cơ chế đăng ký và tiếp nhận đồ án trực tuyến Sinh viên có thể đăng ký đề tài của mình thông qua hệ thống và nhận được phản hồi từ giảng viên hoặc giáo vụ Điều này giúp cho quá trình phân công, xem xét và chấm điểm đồ án trở nên dễ dàng và có thể được thực hiện một cách có hệ thống Như vậy, đề tài "Website quản lý môn đồ án" nhằm xây dựng một hệ thống trực tuyến để lưu trữ thông tin đồ án, đăng ký và tiếp nhận đồ án Điều này giúp tối ưu quy trình quản lý, giám sát và thực hiện đồ án, mang lại sự tiện lợi và hiệu quả cho giảng viên, giáo vụ và sinh viên trong quá trình học tập và thực hiện đồ án

3 Đối tượng và phạm vi nghiên cứu

Có 3 đối tượng nằm trong phạm vi của đề tài:

- Giáo vụ: người có quyền quản lý những chức năng đặc biệt như tùy chỉnh số lượng sinh viên đăng ký vào 1 đề tài, cho phép sinh viên đăng ký đồ án và thu thập toàn bộ điểm số sinh viên

- Giảng viên: người có quyền tạo đề tài đồ án (có thể bao gồm cả sinh viên), cho điểm sinh viên và tạo thông báo cho các sinh viên đăng ký giáo viên đó

- Sinh viên là người có thể đăng ký 1 đề tài trong danh sách đề tài Có thể thấy các thông báo từ giáo vụ, giảng viên hướng dẫn và bình luận ở các bài thông báo đó (nếu bài đăng là của giảng viên hướng dẫn), nộp các báo cáo cần thiết khi thông báo yêu cầu nộp bài

Phạm vi nghiên cứu của đề tài bao gồm: quản lý người dùng, quản lý đề tài, quản lý điểm số, thông báo, bình luận và nộp bài

4 Kết quả đạt được

Xây dựng hệ thống Website quản lý môn đồ án Học được cách lấy yêu cầu, phân tích yêu cầu, xây dựng hệ thống dựa trên yêu cầu đã phân tích Biết đến các công nghệ sử dụng trong sản phẩm như ASP.NET Core Web API, Spring Cloud Gateway, React JS, Docker, MongoDB

Trang 9

9

Chương 2 Tổng quan 1 Công nghệ sử dụng

1 ASP.NET Core Web API 7

ASP.NET Core là một framework mã nguồn mở, đa nền tảng, hiệu suất cao, dùng để xây dựng các ứng dụng hiện đại, hỗ trợ kết nối với cloud

Với ASP.NET Core, bạn có thể:

- Xây dựng ứng dụng web và dịch vụ, ứng dụng Internet of Things (IoT) và backend cho di động

- Sử dụng các công cụ phát triển ưa thích trên Windows, macOS và Linux

- Triển khai trên cloud hoặc on-premises ASP.NET Core mang lại các lợi ích sau:

- Một cách tiếp cận thống nhất để xây dựng giao diện người dùng web và web API

- Thiết kế cho khả năng kiểm thử

- Razor Pages giúp lập trình các kịch bản tập trung vào trang dễ dàng và hiệu quả hơn

- Blazor cho phép sử dụng C# trong trình duyệt cùng với JavaScript Chia sẻ logic ứng dụng phía máy chủ và phía máy khách viết bằng NET

- Khả năng phát triển và chạy trên Windows, macOS và Linux - Mã nguồn mở và tập trung vào cộng đồng

- Tích hợp các framework và luồng làm việc phát triển phía khách hàng hiện đại

- Hỗ trợ việc lưu trữ các dịch vụ Remote Procedure Call (RPC) bằng cách sử dụng gRPC

Trang 10

10 - Hệ thống cấu hình dựa trên môi trường, sẵn sàng cho cloud

- Hỗ trợ dependency injection tích hợp

- Một pipeline HTTP nhẹ, hiệu suất cao và có khả năng tùy chỉnh - Khả năng lưu trữ trên các nền tảng như:

- Hỗ trợ đa phiên bản song song

- Công cụ giúp đơn giản hóa phát triển web hiện đại

ASP.NET Core hỗ trợ hai phương pháp để tạo ra các API: phương pháp dựa trên controller và minimal APIs Trong một dự án API, các controller là các lớp mà thừa kế từ ControllerBase Minimal APIs xác định các điểm cuối với các xử lý logic trong các lambda hoặc phương thức Bài viết này chỉ ra sự khác biệt giữa hai phương pháp này

Thiết kế của minimal APIs mặc định ẩn lớp host và tập trung vào cấu hình và khả năng mở rộng thông qua các phương thức mở rộng nhận các hàm dưới dạng lambda expressions Controller là các lớp có thể nhận các dependency thông qua constructor injection hoặc property injection, và thường tuân theo các mẫu hướng đối tượng Minimal APIs hỗ trợ dependency injection thông qua các phương pháp khác như truy cập vào service provider

2 ReactJS

ReactJS là một mã nguồn mở chứa JavaScript Nó được ra đời vào năm 2013 bởi Facebook Mục đích chính của việc tạo ra ReactJS là cải thiện các ứng dụng web hiệu quả và hấp dẫn hơn với nỗ lực viết mã tối thiểu Nhà phát triển ReactJS mong muốn rằng bất kỳ trang web nào sử dụng ReactJS cũng phải mượt mà, nhanh chóng và khả năng mở rộng cao, dễ thực hiện

Có 2 điểm đáng chú ý trong ReactJS

- Declarative: React giúp tạo các UI tương tác một cách dễ dàng Thiết kế các khung nhìn đơn giản cho từng trạng thái trong ứng dụng, và React sẽ cập nhật

Trang 11

11 và render đúng các thành phần phù hợp khi dữ liệu thay đổi Việc khai báo các khung nhìn tường minh sẽ khiến cho code dễ sử dụng hơn và dễ dàng gỡ lỗi hơn

- Component-Based: Xây dựng các component và quản lý các trạng thái

của riêng chúng, sau đó kết hợp chúng để tạo các UI phức tạp Vì component logic

được viết bằng JavaScript thay vì các template, lập trình viên có thể dễ dàng truyền dữ liệu đa dạng qua ứng dụng của mình và tránh thao tác với DOM (Document Object Model)

3 Docker

Docker là một nền tảng để cung cấp cách để building, deploying và running ứng dụng dễ dàng hơn bằng cách sử dụng các containers (trên nền tảng ảo hóa) Ngoài ra, còn có các công nghệ triển khai sử dụng Docker Swarm hoặc Kubernetes và các phương pháp phát triển sử dụng microservices và serverless

Docker mang lại những lợi ích sau đây:

- Môi trường đồng nhất và cô lập của Docker đảm bảo việc triển khai ứng dụng ổn định

- Quá trình triển khai diễn ra trong vài giây: với kích thước nhỏ và khả năng tái sử dụng của Docker image, quá trình phát triển được tăng tốc đáng kể Đồng thời, khả năng tự động hóa của Docker giúp loại bỏ lỗi và đơn giản hóa chu kỳ bảo trì

- Docker hỗ trợ các phương pháp Agile và CI/CD DevOps

- Việc quản lý phiên bản dễ dàng của Docker giúp tăng tốc quá trình kiểm thử, quay trở lại phiên bản trước và triển khai lại Đối với việc phân đoạn ứng dụng để làm mới, dọn dẹp và sửa chữa, Docker đóng vai trò quan trọng Nhà phát triển có thể hợp tác để giải quyết vấn đề nhanh chóng và mở rộng các container khi cần thiết

- Docker image không phụ thuộc vào nền tảng, giúp đảm bảo tính di động cao

Trang 12

12 Tuy nhiên, Docker không phù hợp cho các ứng dụng có yêu cầu hiệu suất hoặc bảo mật cao, dựa trên kiến trúc Monolith, sử dụng các tính năng GUI phong phú hoặc thực hiện các chức năng tiêu chuẩn trên máy tính để bàn hoặc có hạn chế

4 Spring Cloud Gateway

Spring Cloud Gateway nhằm cung cấp một cách đơn giản nhưng hiệu quả để định tuyến đến các API và cung cấp các vấn đề chung cho chúng như: bảo mật, giám sát/thống kê và resiliency

Các tính năng của Spring Cloud Gateway:

- Được xây dựng trên Spring Framework và Spring Boot - Có thể khớp các route dựa trên bất kỳ thuộc tính yêu cầu nào - Predicates và filters đặc thù cho từng route

Dưới đây là một số đặc điểm và lợi ích chính của MongoDB:

- Cấu trúc dữ liệu linh hoạt: MongoDB không yêu cầu cấu trúc cố định cho dữ liệu, cho phép lưu trữ các tài liệu phi cấu trúc và có thể thay đổi theo thời gian Điều này rất hữu ích khi làm việc với dữ liệu không đồng nhất hoặc khi yêu cầu dữ liệu thay đổi linh hoạt

Trang 13

13 - Tính mở rộng dễ dàng: MongoDB hỗ trợ khả năng mở rộng ngang (horizontal scaling), cho phép tăng hiệu suất và khả năng chịu tải bằng cách thêm các node vào cụm MongoDB Điều này cho phép xử lý lượng dữ liệu lớn và mở rộng hệ thống một cách linh hoạt theo nhu cầu

- Truy vấn mạnh mẽ: MongoDB cung cấp một ngôn ngữ truy vấn linh hoạt và mạnh mẽ, cho phép tìm kiếm và truy xuất dữ liệu theo nhiều tiêu chí khác nhau Truy vấn trong MongoDB sử dụng cú pháp dễ hiểu và hỗ trợ các phép toán phức tạp như truy vấn theo điều kiện, phép kết hợp, sắp xếp và phân trang

- Hỗ trợ tốt cho lưu trữ dữ liệu lớn: MongoDB có khả năng xử lý và lưu trữ dữ liệu lớn, đồng thời hỗ trợ các tính năng như shard (chia nhỏ dữ liệu), replica set (chạy MongoDB với nhiều instance, đảm bảo tính tin cậy)

- Hệ sinh thái phong phú: MongoDB có một hệ sinh thái phong phú với các công cụ hỗ trợ phát triển, ví dụ như MongoDB Compass (giao diện đồ họa để thao tác với cơ sở dữ liệu), MongoDB Atlas (dịch vụ quản lý cơ sở dữ liệu dựa trên cloud)

2 Kiến trúc sử dụng

Kiến trúc microservices là một mô hình kiến trúc phần mềm tiên tiến, trong đó ứng dụng được phân tách thành các service nhỏ và độc lập Mỗi service tương ứng với một chức năng cụ thể và có khả năng hoạt động độc lập với nhau Các service này giao tiếp với nhau thông qua các giao thức Internet như HTTP/REST/gRPC/Web Socket/Message Queue và thường có cơ sở dữ liệu riêng biệt Kiến trúc microservices giúp tách biệt các thành phần của ứng dụng, tăng tính mô-đun hóa, linh hoạt và khả năng mở rộng của hệ thống

Sự phổ biến của kiến trúc microservices đã tăng lên trong những năm gần đây Mô hình này được ưa chuộng bởi khả năng chia nhỏ ứng dụng thành các dịch vụ nhỏ hơn, giúp tăng khả năng phát triển độc lập và đồng thời giảm sự phụ thuộc giữa các thành phần Nó cung cấp một cách tiếp cận linh hoạt và hiệu quả để xây dựng và triển

Trang 14

14 khai các ứng dụng phân tán (distributed system), đáp ứng nhanh chóng các yêu cầu thay đổi và khả năng mở rộng Kiến trúc microservices cũng tạo điều kiện thuận lợi cho việc sử dụng công nghệ mới như cloud và giao diện lập trình ứng dụng (API)

Sự phổ biến của kiến trúc microservices cũng đi đôi với sự phát triển của các công cụ và framework hỗ trợ, bao gồm C# và ASP.NET Core Web API C# là một ngôn ngữ lập trình mạnh mẽ và được phát triển bởi Microsoft, trong khi ASP.NET Core Web API là một framework cho phép xây dựng các dịch vụ web RESTful sử dụng ngôn ngữ C# Với sự kết hợp giữa C# và ASP.NET Core Web API, bạn có thể xây dựng các dịch vụ web độc lập và linh hoạt trong kiến trúc microservices

Sử dụng C# và ASP.NET Core Web API trong kiến trúc microservices cung cấp các tính năng mạnh mẽ như định tuyến (routing), middleware, dependency injection (DI) và xác thực (authentication), giúp bạn xây dựng các dịch vụ web an toàn, linh hoạt và dễ bảo trì Bạn có thể xử lý các yêu cầu HTTP và trả về dữ liệu dưới dạng JSON hoặc XML, tạo các endpoint API để cung cấp dữ liệu và chức năng cho các ứng dụng khác

Với việc sử dụng C# và ASP.NET Core Web API trong kiến trúc microservices, bạn có thể tận dụng các lợi ích của ngôn ngữ C# và framework ASP.NET Core để xây dựng các ứng dụng web đa nền tảng và dễ dàng mở rộng trong môi trường phân tán

Các lợi ích của kiến trúc microservices:

- Cho phép dễ dàng continuous delivery và deployment các ứng dựng lớn, phức tạp:

- Cải thiện khả năng bảo trì - mỗi service tương đối nhỏ do đó dễ hiểu và thay đổi hơn

- Khả năng testing dễ dàng hơn - các services nhỏ hơn và nhanh hơn để test

Trang 15

15 - Khả năng triển khai tốt hơn - các services có thể được triển khai độc lập

- Cho phép các services được phát triển bởi những team khác nhau Mỗi team có thể phát triển, thử nghiệm, triển khai và mở rộng quy mô dịch vụ của mình một cách độc lập với tất cả các team khác

- Giảm thiểu rủi ro: Nếu có lỗi trong một service thì chỉ có service đó bị ảnh hưởng Các services khác sẽ tiếp tục xử lý các yêu cầu Trong khi đó, một thành phần hoạt động sai của kiến trúc một khối có thể làm ảnh hưởng toàn bộ hệ thống

- Dễ dàng thay đổi sử dụng các công nghệ mới: Khi triển khai các services bạn có thể lựa chọn nhiều công nghệ mới Tương tự khi có thay đổi lớn đối với các services hiện có bạn có thể dễ dàng thay đổi công nghệ

Nhược điểm của kiến trúc microservices:

- Các nhà phát triển phải đối phó với sự phức tạp của việc tạo ra một hệ thống phân tán:

- Cần implement việc communication giữa các inter-services - Handle partial failure là rất phức tạp vì một luồng xử lý cần đi qua nhiều services

- Việc thực hiện các requests trải rộng trên nhiều services khó khăn hơn, điều này cũng đòi hỏi sự phối hợp cẩn thận giữa các teams

- Khó khăn trong việc đảm bảo toàn vẹn CSDL nếu triển khai theo kiến trúc cơ sở dữ liệu phân vùng

- Triển khai và quản lý microservices nếu làm thủ công theo cách đã làm với ứng dụng một khối phức tạp hơn rất nhiều

Trang 16

16 - Phải xử lý sự cố khi kết nối chậm, lỗi khi thông điệp không gửi được hoặc thông điệp gửi đến nhiều đích đến vào các thời điểm khác nhau

3 Thiết kế hệ thống

Dựa trên kết quả phân tích, nhóm em nhận thấy rằng có nhiều chức năng không tương tác với nhau trong quá trình thao tác Do đó, nhóm em đã quyết định áp dụng kiến trúc Microservices cho phần Backend và kiến trúc Monolithic cho phần Frontend Phần Backend và Frontend sẽ được liên kết thông qua một API Gateway, giao tiếp với nhau thông qua giao thức RESTful Để đảm bảo tính bảo mật giữa Frontend và Backend, chúng tôi sẽ sử dụng JSON Web Tokens (JWT) như cơ chế bảo mật Hệ thống đề xuất như sau:

Trang 17

17 Với Backend, nhóm em chia làm các service nhỏ như sau:

- AuthService: Đảm nhiệm phần phần đăng nhập, đăng ký với hệ thống - ProfileService: Đảm nhiệm phần thông tin của người dùng, phân cấp người dùng trong hệ thống

Hinh 2.3 Sơ đồ kiến trúc hệ thống

Trang 18

18 - CourseService: Đảm nhiệm thông tin lớp học (lớp đồ án) và điểm số, cũng như lưu trữ các thành viên và đề tài trong lớp

- ProjectService: Đảm nhiệm phần thông tin đề tài, thông tin sinh viên thực hiện, giảng viên hướng dẫn, tên và nội dung của đề tài đó

- SharedLibrary: Dùng để lưu trữ các model, connection string, configuration

Chương 3 Kết quả

1 Phân tích nghiệp vụ 1 Quy trình

Qua quá trình trao đổi và thảo luận cùng giảng viên hướng dẫn – ThS Huỳnh Hồ Thị Mộng Trinh và tìm hiểu trên trang khoa Công nghệ phần mềm, nhóm em đã xác định được yêu cầu, cũng như phân tích quy trình thực hiện Đồ án 1 và Đồ án 2 Tổng kết lại theo sơ đồ sau:

Trang 19

19 Quy trình gồm 5 bước:

- Bước 1 Thông báo và chuẩn bị đề tài: Giáo vụ thông báo đến giảng viên chuản bị đề tài và gửi lại đến giáo vụ Thời gian diễn ra là 1 tuần trước khi bắt đầu học kỳ

Hình 2.1 Sơ đồ nghiệp vụ [1]

Trang 20

20 - Bước 2 Đăng ký đề tài: Giáo vụ thông báo đến sinh viên các đề tài mà giảng viên đã giao Sinh viên đăng ký các đề tài đó trong vòng khoảng 1 tuần Thời gian diễn ra là tuần 1 của học kỳ

- Bước 3 Thông báo kết quả đăng ký đề tài

- Bước 4 Thực hiện đề tài và báo cáo: Sinh viên liên hệ giảng viên hướng dẫn khi đã có thông báo công bố danh sách đăng ký đề tà Thời gian diễn ra là từ tuần 2 đến tuần 18 của học kỳ

- Bước 5 Kết thúc đồ án: Sinh viên thực hiện nộp đồ án cho khoa, báo cáo đồ án cho giảng viên hướng dẫn Giảng viên chấm và gửi điểm đến giáo vụ để giáo vụ cập nhật điểm lên hệ thống Thời gian diễn ra là tuần thứ 19 của học kỳ

1 Danh sách Actor

Hệ thống bao gồm các actor như sau:

- Giáo vụ: người có quyền quản lý những chức năng đặc biệt như tùy chỉnh số lượng sinh viên đăng ký vào 1 đề tài, cho phép sinh viên đăng ký đồ án và thu thập toàn bộ điểm số sinh viên

- Giảng viên: người có quyền tạo đề tài đồ án (có thể bao gồm cả sinh viên), cho điểm sinh viên và tạo thông báo cho các sinh viên đăng ký giáo viên đó

- Sinh viên là người có thể đăng ký 1 đề tài trong danh sách đề tài Có thể thấy các thông báo từ giáo vụ, giảng viên hướng dẫn và bình luận ở các bài thông báo đó (nếu bài đăng là của giảng viên hướng dẫn), nộp các báo cáo cần thiết khi thông báo yêu cầu nộp bài

2 Sơ đồ Use case

Sơ đồ Use case định nghĩa các chức năng cần có:

Ngày đăng: 15/05/2024, 09:30

Tài liệu cùng người dùng

Tài liệu liên quan