Tải bản đầy đủ (.pdf) (82 trang)

đồ án 1 xây dựng ứng dụng quản lý sinh viên

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.96 MB, 82 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CƠNG NGHỆ THƠNG TIN </b>

<b>BÁO CÁO ĐỒ ÁN 1 SE121.M21.PMCL </b>

<b>ĐỀ TÀI: XÂY DỰNG ỨNG DỤNG QUẢN LÝ SINH VIÊN Giảng viên hướng dẫn: </b>

<b>Th.S Huỳnh Tuấn Anh Sinh viên thực hiện </b>

<b>19521649– Nguyễn Thanh Huỳnh </b>

<i><b>Tp. Hồ Chí Minh, 12/2023 </b></i>

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

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

<b>BÁO CÁO ĐỒ ÁN 1 SE121.M21.PMCL </b>

<b>ĐỀ TÀI: XÂY DỰNG ỨNG DỤNG QUẢN LÝ SINH VIÊN Giảng viên hướng dẫn: </b>

<b>Th.S Huỳnh Tuấn Anh Sinh viên thực hiện </b>

<b>19521649 – Nguyễn Thanh Huỳnh </b>

<i><b>Tp. Hồ Chí Minh, 12/2023 </b></i>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<b>LỜI CẢM ƠN </b>

Lời đầu tiên, cho nhóm chúng em gửi lời cảm ơn trực tiếp đến các quý thầy cô của Trường Đại học Công nghệ Thông tin – Đại học Quốc gia Thành phố Hồ Chí Minh nói chung và q thầy cô của Khoa Công nghệ Phần mềm đã giảng dạy và giúp đỡ chúng em có những kiến thức quý báu, để xây dựng nền tảng thực hiện đồ án lần này.

Điều thứ hai, chúng em muốn gửi lời cảm ơn trực tiếp đến thầy Lê Thanh Trọng, là giáo viên hướng dẫn trực tiếp đến nhóm. Những lời tư vấn, góp ý và hướng dẫn tận tính của thầy là những điều quý báu giúp nhóm chúng em thực hiện và hoàn thành được đồ án báo cáo của mình.

Trong quá trình thực hiện đồ án, nhóm chúng em đã áp dụng những kiến thức nền tảng đã học và tích lũy được đồng thời kết hợp với những kiến thức mới trong quá trình làm đồ án. Do kiến thức và kinh nghiệm khi thực hiện của nhóm cịn nhiều hạn chế, khó khăn ở từng giai đoạn thực hiện, từ đó có thể dẫn đến các sai sót. Vì vậy, chúng em mong nhận được những lời góp ý, ý kiến quý báu từ q thầy cơ để nhóm chúng em ngày càng hồn thiện hơn không chỉ là về đồ án hiện tại, mà cịn những đồ án mơn học sắp tới. Đây cũng chính là hành trang để chúng em định hướng, phát triển và hoàn thiện bản than trong tương lai.

Một lần nữa nhóm chúng em xin chân thành cảm ơn ạ.

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

<b>NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN </b>

(Kí và ghi rõ họ tên)

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

MỤC LỤC

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

<b><small>4.4ĐẶC TẢ CÁC USE-CASE </small></b> <small>27 </small>

<b><small>4.4.1Đặc tả Use-case “View list of existed user / User listing screen” </small></b> <small>27 </small>

<b><small>4.4.4Đặc tả Use-case “Allow super admin to add permission to user account” </small></b> <small>28 </small>

<b><small>4.4.7Đặc tả Use-case “View list of existed syllabus / Syllabus listing screen ” </small></b> <small>30 </small>

<b><small>1.4.11Đặc tả Use-case “Read all detail information of the syllabus” </small></b> <small>32 </small>

<b><small>1.4.13Đặc tả Use-case “Import syllabus/ syllabus importing screen” </small></b> <small>33 </small>

<b><small>1.4.15Đặc tả Use-case “View list of existed training program / Training program listing screen ” 34 </small></b>

<b><small>1.4.18Đặc tả Use-case “Update training program information” </small></b> <small>36 </small>

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

<b>CHƯƠNG 1: GIỚI THIỆU CHUNG 1.1 Giới thiệu đề tài </b>

Ngày nay, với sự phát triển vượt bậc của công nghệ, tất cả mọi thứ của con người ngày càng trở nên tiện ích hơn và nhanh chóng hơn. Nhu cầu khám phá, web khơng chỉ phát triển ở giới trẻ, mà gần như tất cả mọi người đều có quan tâm đến, dễ tiệm cận hơn với mọi độ tuổi. Các trang web khám phá dần trở nên là một chủ đề hot trong gần như các cuộc nói chuyện của mọi người. Cùng lúc với đó thì nó cũng sẽ ảnh hưởng đến q trình tư duy và nghiên cứu của các tập đoàn trên thế giới không chỉ riêng ở bất cứ quốc gia nào đang phát triển hay đang trên đà phát triển.

Mọi người có thể tìm kiếm địa điểm du lịch bây giờ dễ dàng với cơng cụ tìm kiếm Google và các ứng dụng khác, nhưng không chỉ dừng lại ở việc tìm kiếm tham khảo về trang web mà phù hợp với mọi người còn quan tâm đến các vấn đề khác về địa điểm đó qua những hình chia sẻ thực tế, đánh giá từ những người đã đến,kinh nghiệm từ những người đi trước, chất lượng của hình ảnh như thế nào? Đặc biệt, với nhu cầu (trong nước) sau đợt dịch đang ngày càng cao, khi mọi người đã ở nhà quá lâu, mọi người cần nơi tổng hợp những thông tin, những địa điểm mà họ quan tâm, những nhu cầu thiết yếu để mình thuyết phục các nhà đầu tư. Nhưng cốt lõi của việc làm web là vẫn phải giữ được giá trị cốt lõi của khách hàng đó là nhanh, đẹp, trình duyệt xử lí cao, tốc độ phản hổi khơng giới hạn, mở trang miễn phí và các phản hồi khác. Tuy nhiên những phát sinh nó vẫn ln tồn tại trong cuộc sống lẫn trong đời thường.

<b>Hiểu được vấn đề đó, nhóm chúng em quyết định xây dựng một ứng quản lý danh sách sinh viên để trở thành cầu nối giữa những con người u thích mơn web, mong </b>

muốn sẻ chia các địa điểm mới, những thông tin tương quan đến những người có chung sở thích chung chí hướng, hoặc đơn giản muốn góp phần đóng góp cho sự phát triển du lịch địa phương, trong nước. Cùng với sự hiện đại của cơng nghệ thì nó sẽ có sự phân tán doanh nghiệp, cơ sở, thông tin chuyên ngành, sức khỏe chuyên môn, đạo đức nghề nghiệp, mở rộng tầm hiểu biết và sẽ quan tâm hơn tới việc nâng cao nhận thức về định hướng sau này cũng như hiệu suất của q trình làm việc. Song song với đó, những thứ phức tạp thì nó ln địi hỏi thời gian trong khi những việc đơn giản nó đỡ tốn công sức và tiền bạc hơn là những việc thông dụng, bởi vì nó đã bào mịn những kiến thức và thông tin chúng ta thu thập được trong suốt quá trình ta học hỏi. Nhưng mà chuyện thực hành thì vơ cùng khó khăn do số lượng nhận lực chất lượng cao ngày càng khan hiếm mà đi đôi với việc đó thì có hơn một nửa nhân lực thấp bị đào thải do các hiệu ứng xã hội và các vấn đề chính liên quan đến ngành, những giá trị kinh tế, những thành phần ngoại giao và các vấn đề phát sinh khác.

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

<b>1.2 Mơ tả đề tài </b>

Ứng dụng quản lí sinh viên là một ứng dụng chia sẻ các dịch vụ phục vụ trong các doanh nghiệp trong nước bao gồm các trường đại học, mang đến một nơi chia sẻ du lịch cho tất cả mọi người thích khám phá, tìm kiếm những địa điểm du lịch.

Cùng với đó, ứng dụng cịn là nơi mọi người có thể tương tác, chia sẻ với nhau để cùng sẻ chia các kinh nghiệm làm web. Ứng dụng sẽ được kiểm soát bởi những admin, kiểm tra bài đăng của các người dùng có hợp lệ hay khơng, từ đó đưa đến những bài chia sẻ có chất lượng tốt nhất để người sử dụng ứng dụng, hoặc là hoạt động đăng nhập để khảo sát lại sinh viên hay là những việc như thêm, sửa, xóa, chỉnh sửa, chia sẻ, lượt tương tác, bài viết và các bình luận trên các dạng mạng xã hội, nhưng song song với đó có những mâu thuần trong việc vận hành những thao tác không người điều khiển này do sự phát triển chưa đồng nhất của AI, công nghệ hiện nay khơng có gì là đảm bảo hay chắc chắn nó sẽ hoạt động với công suất tối đa cả. Những khoảnh khắc mà nó xảy ra nó sẽ làm cho chúng ta nhớ mãi, cho đến khi nào thành thục được hoặc là nó sẽ đem lại những ảnh hưởng khác so với các doanh nghiệp khác, những thứ mà chúng ta khó có thể so sánh được, thế nhưng các tác hại nó sẽ ảnh hưởng sâu sắc đến tất cả những quá trình chúng ta thực hiện song song đó nó cũng mang lại khơng ít những hình dung hay những yếu tố riêng tư cũng như các yếu tố cạnh tranh đối với các doanh nghiệp khác, nhưng những việc khác thì sẽ được giải quyết nhanh chóng trong thời gian nó được thực thi. Chỉ cần có thời gian và làm ra trong những việc mà trong khả năng thì nó sẽ thực thi những việc mà máy nó làm ra được hoặc là khó có thể thực hiện.

Ứng dụng lấy nền tảng người dùng là chính, khi những đóng góp của người dùng cho ứng dụng sẽ làm cho ứng dụng ngày càng phổ biến và phát triển hơn.

<b>1.3 Mục tiêu của đề tài </b>

Xây dựng một Ứng dụng quản lý sinh viên trang web cung cấp các tính năng cơ bản cụ thể là thông tin của từng học sinh,. Người dùng có thể tìm kiếm và thêm vào danh sách u thích những thơng qua ứng dụng. Thơng qua ứng dụng người dùng sẽ có thêm những thơng tin từ chính thống đến các thơng tin bền lề về địa điểm mình đang quan tâm, cũng như các thơng tin khác liên quan đến vấn đề lập trình và các nội dung liên quan song khi đó những thứ cần thiết sẽ được tiếp tục tiến hành vào các dự án sau hoặc doanh nghiệp cá nhân. Sau đó những thành phần thiết yếu khơng được bảo tồn sẽ được thêm vào các đặc thù hình ành cũng như cái trạng thái cao siêu hơn. Nhưng vẫn phải có tư tưởng bảo vệ các hình thức mà mình quản lí, bởi vì nó sẽ mất những tài ngun cần thiết để hồn thành thiết nhu yếu. Trong đó các hệ thống phải được tính tốn kĩ lưỡng về độ chính xác cũng như cơ cấu đẹp để có thể tiếp cận đến người dùng, người điều hành, nhà phát hành, trong những có yếu cụ thể song vẫn giữ được nét truyền thống văn hóa. Đó là các vẫn nạn hiện tại chưa được đáp ứng.

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

Ngồi ra, ứng dụng cịn là nơi người dùng có thể mang những trải nghiệm của mình về một địa điểm mới nào đó, chia sẻ đến mọi người, những trải nghiệm, cảm xúc hay là những vấn đề tiêu cực trong xã hội cực đoan như hiện nay. Nó giúp con người kết nối lại với nhau nhưng đồng thời cũng làm gia tăng các vấn nạn xã hội, những ý kiến trái chiều, những phản hồi tiêu cực trong suốt quá trình tìm hiểu, những việc mà chúng ta không đề cập đến. Tuy nhiên việc bỏ thời gian ra để hoàn thành là một dấu chấm hỏi mà các nhà tuyển dụng quan tâm, bởi vì chất lượng đầu ra nó đem lại lợi ích cho tồn xã hội, khơng chỉ tính riêng cho một các nhân hay một doanh nghiệp, ảnh hưởng rất nhỏ đến nền kinh tế quốc dân nó sẽ làm thay đổi kinh tế của toàn nước so với các nước đang phát triển trong cùng khu vực, tùy vào tình hình chung của thực trạng kinh tế, nó sẽ làm chúng ta hồi tưởng đến những khu vực và trong các lĩnh vực thêm giá trị lợi nhuận hoặc các vấn đề tự nhiên. Do đó, những thứ cần thiết cho việc này là do quá trình phức tạp của học thức cũng như giá trị của chuyên ngành học sau này quyết định đến nhận thức chung của xã hội.

Song song với mục tiêu của ứng dụng, đề tài này cịn giúp nhóm có thêm các kiến thức về lập trình, cách thức xử lý, xây dựng và phát triển một ứng dụng di động, nhằm mục đích cho việc học tập, cũng như định hướng phát triển. Sự cống hiến cho một doanh nghiệp là sự cống hiến cần thiết cho một nền xã hội và chính trị phát triển, tuy nhiên nó chỉ ảnh hưởng gián tiếp đến một phần nhỏ trong tổng doanh thu toàn nước. Chung quy lại là nó sẽ giúp tất cả doanh nghiệp phát triển chung theo một quy chuẩn chung cao hơn so với những gì mà mọi ngành trong chun mơn này. Tóm lại, những thành phố phát triển sẽ bao gồm những doanh nghiệp phát triển và cũng sẽ hỗ trợ tất cả dịch vụ mà các ứng dụng đó cần cái đặt trong những tài ngun, mơi trường, hệ thống, sự hưng thịnh và cả doanh thu nữa.

<b>1.4 Phương pháp nghiên cứu </b>

● Nghiên cứu các tài liệu về nghiệp vụ có liên quan trực tiếp đến đề tài. ● Tham khảo các ứng dụng quản lý khác hiện hành.

● Nghiên cứu, tham khảo và tìm hiểu các tài liệu, video hướng dẫn liên quan đến các công nghệ sử dụng vào quá trình xây dụng phát triển ứng dụng.

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

<b>CHƯƠNG 2: CÔNG NGHỆ TRONG ỨNG DỤNG 2.1 TÌM HIỂU REACTJS </b>

<b>2.1.1 Khái niệm Reactjs </b>

ReactJS là một thư viện JavaScript được phát triển bởi Facebook để xây dựng giao diện người dùng (UI) cho các ứng dụng web. Nó được thiết kế để tối ưu hóa việc xây dựng các ứng dụng đơn trang (Single Page Applications - SPAs) thông qua việc quản lý trạng thái của ứng dụng và tái sử dụng các thành phần giao diện.

Dưới đây là một số khái niệm quan trọng của ReactJS:

<b>• Components (Thành phần): React ứng dụng được xây dựng từ các thành phần. </b>

Mỗi thành phần đại diện cho một phần của giao diện người dùng và có thể chứa mã HTML, CSS, và JavaScript để mô tả giao diện và xử lý sự kiện.

<b>• JSX (JavaScript XML): JSX là một phần quan trọng của React, nó cho phép </b>

bạn viết mã HTML trong JavaScript. JSX giúp dễ đọc và viết mã, cũng như giúp React hiểu được cấu trúc của ứng dụng.

<b>• Props (Thuộc tính): Thuộc tính được sử dụng để truyền dữ liệu từ một thành </b>

phần cha đến một thành phần con. Điều này giúp tái sử dụng thành phần và làm cho ứng dụng linh hoạt hơn.

<b>• State (Trạng thái): State đại diện cho dữ liệu và trạng thái của một thành phần. </b>

Khi state thay đổi, React tự động cập nhật giao diện người dùng để phản ánh sự thay đổi đó.

<b>• Virtual DOM (DOM Ảo): React sử dụng một DOM ảo để theo dõi sự thay đổi </b>

trong trạng thái và hiệu suất. Thay vì cập nhật DOM trực tiếp, React tương tác với DOM ảo và sau đó cập nhật DOM thực tế một cách hiệu quả.

<b>• Lifecycle methods (Phương thức vịng đời): React cung cấp một số phương </b>

thức vòng đời cho các thành phần, như componentDidMount, componentDidUpdate, và componentWillUnmount, giúp bạn thực hiện các hành động trong q trình mount, update, và unmount của thành phần.

<b>• React Router: Thư viện giúp quản lý định tuyến trong ứng dụng React, cho </b>

phép bạn chuyển đổi giữa các trang mà khơng cần tải lại tồn bộ trang web ReactJS giúp tạo ra các ứng dụng web hiệu quả, dễ duy trì và mở rộng, đặc biệt là khi xử lý các ứng dụng đơn trang và có nhu cầu cập nhật trạng thái linh hoạt.

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

Ưu và nhược điểm của Reactjs: Ưu điểm:

<b>• Hiệu suất cao với Virtual DOM: React sử dụng Virtual DOM để tối ưu </b>

hóa quá trình cập nhật giao diện, giúp cải thiện hiệu suất ứng dụng.

<b>• Tái sử dụng thành phần: Có khả năng tái sử dụng các thành phần giúp </b>

giảm độ phức tạp của mã nguồn và tăng khả năng duy trì.

<b>• Hỗ trợ cộng đồng lớn: React có một cộng đồng lớn và tích cực, điều này </b>

giúp người phát triển dễ dàng tìm kiếm giải pháp cho vấn đề cụ thể và có nhiều tài nguyên học tập.

<b>• Thư viện mạnh mẽ: React khơng phải là một framework hồn chỉnh mà </b>

chỉ là một thư viện, điều này mang lại sự linh hoạt cho nhà phát triển để lựa chọn các thư viện và cơng nghệ khác.

<b>• JSX: JSX giúp tạo mã nguồn dễ đọc và viết, đồng thời giúp kiểm sốt dễ </b>

dàng hơn về cú pháp.

<b>• Cập nhật linh hoạt: Quản lý trạng thái và cập nhật giao diện người dùng </b>

một cách hiệu quả, giúp ứng dụng React dễ dàng mở rộng và duy trì. Nhược điểm:

<b>• Học khái niệm mới: Việc làm quen với các khái niệm như JSX, Virtual </b>

DOM, và các phương thức vòng đời có thể địi hỏi một thời gian đối với người mới học React.

<b>• Phức tạp cho các ứng dụng lớn: Với các ứng dụng lớn, quản lý trạng thái </b>

và luồng dữ liệu có thể trở nên phức tạp hơn và đòi hỏi việc sử dụng thư viện bổ sung hoặc quy trình quản lý trạng thái (state management) như Redux.

<b>• SEO: Mặc dù React có khả năng tạo ứng dụng đơn trang, nhưng điều này có </b>

thể gây khó khăn trong việc tối ưu hóa cho cơng cụ tìm kiếm (SEO). Tuy nhiên, có các giải pháp như Server-Side Rendering (SSR) để giải quyết vấn đề này.

<b>• Có nhiều lựa chọn: Sự đa dạng của các lựa chọn và thư viện bên ngồi có </b>

thể khiến người mới vào React cảm thấy bối rối khi cố gắng xây dựng ứng dụng.

<b>• Cần kết hợp với các thư viện khác: Đối với một ứng dụng hồn chỉnh, bạn </b>

có thể cần sử dụng các thư viện bổ sung như React Router, Redux, hoặc Axios, điều này có thể làm tăng độ phức tạp của dự án.

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

<b>2.1.2 Khái niệm JavaScript </b>

JavaScript là một ngơn ngữ lập trình phổ biến được sử dụng chủ yếu để thêm tính năng tương tác động và động vào các trang web. Dưới đây là một số khái niệm cơ bản về JavaScript:

<b>1. Ngơn ngữ lập trình hướng sự kiện (Event-Driven Programming): JavaScript </b>

thường được sử dụng để xử lý các sự kiện tương tác từ người dùng như nhấn nút, di chuột, và gửi biểu mẫu. Điều này giúp tạo ra trải nghiệm người dùng động trên các trang web.

<b>2. Ngôn ngữ kịch bản (Scripting Language): JavaScript thường được sử dụng như </b>

một ngôn ngữ kịch bản để điều khiển và tương tác với các thành phần HTML trong trình duyệt web.

<b>3. Chạy ở phía máy khách (Client-Side): JavaScript chủ yếu chạy trực tiếp trên trình </b>

duyệt của người dùng, giúp thực hiện các tác vụ mà không cần gửi yêu cầu đến máy chủ.

<b>4. Biên dịch tại thời điểm chạy (Just-In-Time Compilation - JIT): JavaScript là một </b>

ngôn ngữ thông dịch và thường được biên dịch tại thời điểm chạy bởi trình duyệt, giúp tối ưu hóa hiệu suất.

<b>5. Đối tượng (Object): JavaScript là một ngơn ngữ lập trình hướng đối tượng. Hầu hết </b>

mọi thứ trong JavaScript là một đối tượng hoặc có thể thao tác như một đối tượng.

<b>6. Biến (Variable): Biến được sử dụng để lưu trữ dữ liệu. Trong JavaScript, bạn có </b>

thể khai báo biến bằng từ khóa var, let, hoặc const.

<b>7. Hàm (Function): Hàm là một khối mã có thể được gọi để thực hiện một nhiệm vụ </b>

cụ thể. JavaScript hỗ trợ định nghĩa hàm bằng từ khóa function.

<b>8. Biểu thức điều kiện (Conditional Statements): Sử dụng if, else if, và else để kiểm </b>

tra điều kiện và thực hiện các hành động tương ứng.

JavaScript đóng vai trị quan trọng trong phát triển web và đã mở ra nhiều thư viện và framework như React, Angular và Vue.js để xây dựng ứng dụng web mạnh mẽ và linh hoạt.

<b>2.1.3 Tại sao chọn Reactjs </b>

<b>• Thành phần và Tái sử dụng: ReactJS sử dụng mơ hình thành phần, giúp chia </b>

giao diện người dùng thành các thành phần độc lập và có thể tái sử dụng. Điều này giúp trong quản lý mã nguồn, gia tăng khả năng duy trì và giảm độ phức tạp của ứng dụng.

<b>• Virtual DOM và Hiệu suất: React sử dụng Virtual DOM để tối ưu hóa quá trình </b>

cập nhật giao diện người dùng. Thay vì cập nhật toàn bộ DOM, React chỉ cập nhật các phần thay đổi. Điều này giúp cải thiện hiệu suất của ứng dụng.

<b>• Cộng đồng lớn và Hỗ trợ mạnh mẽ: React có một cộng đồng lớn và tích cực, </b>

điều này có nghĩa là có nhiều tài nguyên, tư duy và các thư viện bổ sung sẵn có.

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

Cộng đồng đóng vai trị quan trọng trong việc giải quyết vấn đề, cung cấp các gói mở rộng, và chia sẻ kiến thức.

<b>• JSX - Cú pháp dễ đọc và viết: JSX là một phần của React, cho phép viết mã </b>

HTML bên trong JavaScript. Cú pháp này giúp làm cho mã nguồn trở nên dễ đọc và viết, đồng thời giúp kiểm sốt tốt hơn về cú pháp.

<b>• Hệ sinh thái của React: React không chỉ là một thư viện đơn lẻ, mà còn là một </b>

phần của hệ sinh thái phong phú với nhiều công cụ hỗ trợ như React Router, Redux, Next.js, và nhiều thư viện khác để giải quyết các vấn đề khác nhau trong quá trình phát triển.

<b>• Phù hợp với ứng dụng đơn trang (SPA): React rất phù hợp với việc xây dựng </b>

ứng dụng đơn trang, nơi mà việc tải lại trang web không cần thiết, và chỉ cần cập nhật các phần cần thiết của trang.

<b>• Hỗ trợ từ Facebook: React được Facebook phát triển và duy trì, điều này đồng </b>

nghĩa với việc nó nhận được sự chú ý và phát triển liên tục từ một tổ chức lớn. Tuy nhiên, lựa chọn giữa các công nghệ phụ thuộc vào nhiều yếu tố như yêu cầu cụ thể của dự án, kinh nghiệm của đội ngũ phát triển, và các yếu tố khác của dự án.

<b>2.2 TÌM HIỂU MYSQL </b>

<b>2.2.1 Khái niệm MySQL </b>

MySQL là một hệ quản trị cơ sở dữ liệu (Database Management System - DBMS) phổ biến, mã nguồn mở và miễn phí. Nó được sử dụng để quản lý và tổ chức dữ liệu trong các ứng dụng web và các hệ thống thông tin khác. Dưới đây là một số khái niệm quan trọng liên quan đến MySQL:

<b>• Cơ sở dữ liệu (Database): Là nơi lưu trữ dữ liệu theo cách có tổ chức và có </b>

thể truy cập được. Mỗi cơ sở dữ liệu có thể chứa nhiều bảng dữ liệu.

<b>• Bảng (Table): Là một tập hợp các dữ liệu được tổ chức theo cột và hàng. </b>

Mỗi bảng trong MySQL sẽ có một tên duy nhất và các cột có thể đại diện cho các thuộc tính khác nhau của dữ liệu.

<b>• Cột (Column): Là một trường trong bảng, đại diện cho một thuộc tính cụ </b>

thể của dữ liệu. Mỗi cột có một kiểu dữ liệu nhất định như INTEGER, VARCHAR, DATE, ...

<b>• Dịng (Row): Là một bản ghi cụ thể trong bảng, chứa dữ liệu cho tất cả các </b>

cột tương ứng với nó.

<b>• Khóa chính (Primary Key): Một cột hoặc một tập hợp các cột trong bảng </b>

được sử dụng để định danh mỗi dòng một cách duy nhất. Điều này giúp đảm bảo tính duy nhất của mỗi dịng trong bảng.

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

<b>• SQL (Structured Query Language): Là ngôn ngữ truy vấn cơ sở dữ liệu </b>

được sử dụng để thực hiện các thao tác như truy vấn dữ liệu, cập nhật dữ liệu, chèn dữ liệu, và xóa dữ liệu.

<b>• Truy vấn (Query): Là một câu lệnh SQL được sử dụng để tương tác với cơ </b>

sở dữ liệu, như lấy dữ liệu từ cơ sở dữ liệu hoặc thay đổi nó.

<b>• Quyền (Privilege): Là quyền hạn được cấp cho người dùng để thực hiện </b>

các thao tác nhất định trên cơ sở dữ liệu, ví dụ như SELECT, INSERT, UPDATE, DELETE.

Với việc sử dụng Firebase, developer có thể tập trung vào việc phát

triển application mà không cần lo về việc sản phẩm của mình sẽ hoạt động và được quản lý thể nào ở phía Backend.

<b>2.2.2 Ưu nhược điểm của MySQL Ưu điểm: </b>

<b>• Miễn phí và mã nguồn mở: MySQL là một hệ quản trị cơ sở dữ liệu mã </b>

nguồn mở và miễn phí, giúp giảm chi phí triển khai và sử dụng.

<b>• Độ ổn định và độ tin cậy cao: MySQL đã được thử nghiệm và sử dụng </b>

rộng rãi trên nhiều dự án lớn, đảm bảo độ ổn định và tin cậy cao.

<b>• Hiệu suất cao: MySQL cung cấp hiệu suất tốt, đặc biệt là đối với các ứng </b>

dụng có lượng truy cập lớn.

<b>• Hỗ trợ khóa ngoại: MySQL hỗ trợ khóa ngoại, giúp duy trì tính tồn vẹn </b>

của dữ liệu giữa các bảng.

<b>• Cộng đồng lớn và hỗ trợ mạnh mẽ: Có một cộng đồng lớn của các nhà </b>

phát triển và người dùng MySQL, cung cấp nguồn lực hữu ích, tài liệu và sự hỗ trợ.

<b>• Hỗ trợ nhiều ngơn ngữ lập trình: MySQL tương thích với nhiều ngơn ngữ </b>

lập trình, bao gồm PHP, Python, Java, và nhiều ngơn ngữ khác.

<b>• Dễ sử dụng và quản lý: MySQL có giao diện dễ sử dụng và các công cụ </b>

quản lý cơ bản, giúp người quản trị dễ dàng thực hiện các tác vụ quản lý.

<b>Nhược điểm: </b>

<b>● Nhược điểm về extensibility: MySQL có thể gặp khó khăn khi cần mở rộng các </b>

tính năng khơng nằm trong phạm vi cơ bản của nó. Điều này có thể địi hỏi sử dụng các công nghệ hoặc plugin bổ sung.

<b>● Khả năng mở rộng có hạn: Trong mơi trường có lượng truy cập rất lớn, việc mở </b>

rộng MySQL có thể trở thành thách thức, và mơ hình mở rộng của nó không linh hoạt như một số hệ thống cơ sở dữ liệu khác.

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

<b>● Chưa hỗ trợ đầy đủ JSON: Mặc dù MySQL 5.7 và phiên bản mới hơn hỗ trợ một </b>

số tính năng JSON, nhưng vẫn có một số hạn chế so với các hệ quản trị cơ sở dữ liệu khác.

<b>● Bản quyền và chủ quyền: Dù MySQL là một hệ quản trị cơ sở dữ liệu miễn phí, </b>

nhưng có các phiên bản cao cấp và tính năng chưa đầy đủ trong bản miễn phí, điều này có thể tạo ra chi phí cho các doanh nghiệp muốn sử dụng các tính năng cao cấp.

<b>● Thời gian phát triển chậm: Một số tính năng mới có thể mất thời gian để được </b>

thêm vào MySQL so với một số hệ quản trị cơ sở dữ liệu khác.

<b>2.3 TÌM HIỂU JAVA </b>

<b>2.3.1 Khái niệm Java </b>

Java là một ngơn ngữ lập trình mạnh mẽ và đa nền tảng, được sử dụng rộng rãi trong nhiều lĩnh vực khác nha

2. Hướng Đối Tượng (Object-Oriented Programming - OOP):

• Java là ngơn ngữ hướng đối tượng, sử dụng các khái niệm như class, object, inheritance, encapsulation, và polymorphism.

3. Máy Ảo Java (JVM - Java Virtual Machine):

• JVM là một mơi trường thực thi độc lập với nền tảng, giúp chuyển đổi bytecode thành mã máy tương ứng và quản lý bộ nhớ.

4. Biên Dịch và Thực Thi:

• Mã nguồn Java được biên dịch thành bytecode bởi trình biên dịch Java (javac). • Bytecode được thực thi trên JVM, giúp đảm bảo tính chất đa nền tảng của Java. 5. Thư Viện và API (Application Programming Interface):

• Java có một thư viện mạnh mẽ và API, cung cấp nhiều công cụ và chức năng sẵn có giúp lập trình viên phát triển ứng dụng một cách nhanh chóng.

6. Bảo Mật:

• Java có các tính năng bảo mật như quản lý bộ nhớ tự động, kiểm soát truy cập và cơ chế bảo mật để ngăn chặn các vấn đề như tràn bộ đệm và mã độc hại 7. Cộng Đồng Lập Trình Viên:

• Cộng đồng Java rộng lớn và tích cực, với nhiều diễn đàn, tài liệu, và nguồn tư vấn trực tuyến.

8. Phát Triển Ứng Dụng Web:

• Java được sử dụng rộng rãi trong phát triển ứng dụng web thông qua các framework như Spring, Hibernate, và JavaServer Faces (JSF).

9. Phát Triển Ứng Dụng Mobile:

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

• Java được sử dụng trong phát triển ứng dụng di động trên nền tảng Android 10. Phát Triển Ứng Dụng Desktop:

• Java cung cấp các cơng cụ và thư viện để phát triển ứng dụng desktop sử dụng giao diện người dùng đồ họa (GUI).

11. Cơng Nghệ Mới:

• Java liên tục cập nhật và phát triển với các phiên bản mới, tích hợp các tính năng và cải thiện hiệu suất.

<b>2.3.2 Khái niệm Java spring boot </b>

Spring Boot là một dự án con của Spring Framework, được thiết kế để giúp lập trình viên xây dựng ứng dụng Java một cách nhanh chóng và dễ dàng. Dưới đây là một số điểm quan trọng khi tìm hiểu về Spring Boot:

• Spring Boot Starter là các dependency được đóng gói sẵn giúp bạn bắt đầu với các loại ứng dụng cụ thể như web, data, security một cách nhanh chóng. 7. Spring Boot CLI:

• Command Line Interface cho Spring Boot giúp tạo và quản lý dự án một cách dễ dàng từ dòng lệnh.

8. Spring Boot Actuator:

• Cung cấp các endpoint để giám sát và quản lý ứng dụng, ví dụ như /health, /metrics, /info.

9. Spring Boot DevTools:

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

• Hỗ trợ trong q trình phát triển bằng cách cung cấp tái khởi động tự động, tải lại trình duyệt, và các tính năng khác.

10. Spring Boot và Microservices:

• Spring Boot thường được sử dụng trong kiến trúc microservices, giúp phát triển và triển khai các dịch vụ nhỏ và độc lập.

11. Cộng Đồng Rộng Lớn:

• Spring Boot có một cộng đồng lớn với nhiều tài liệu, diễn đàn, và nguồn tư vấn trực tuyến.

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

<b>CHƯƠNG 3: PHÂN TÍCH - THIẾT KẾ CƠ SỞ DỮ LIỆU </b>

<b>3.1 SƠ ĐỒ LỚP </b>

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

<b>3.3 MÔ TẢ CHI TIẾT CÁC LỚP </b>

<b>3.3.1 User Permission </b>

<b>STT Tên thuộc tính Kiểu dữ liệu <sup>Ràng </sup></b>

<b>buộc <sup>Ý nghĩa </sup></b>

1 Permission ID String Có Id phân quyền

2 Role String Có <sup>Phân quyền cho người </sup>đăng nhập 3 Syllabus String Không Phân loại user truy cập

quản trị

9 StartDate Datetime Có Thời gian bắt đầu học của class

</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">

10 EndDate Datetime Có Thời gian kết thúc học của Class

11 Created by String Có

Người tạo ra class (Supper_Admin hoặc

Admin) 12 Created date Datetime Có Ngày tạo ra class 13 Modified by String Có

Được update bởi ai (Supper_Admin hoặc

Admin) 14 Modified date Datetime Có Thời gian update

Được tạo bởi ai (Supper_Admin hoặc

Admin) 9 Created date Date Có Ngày tạo ra user 10 Modified by String Có

Được update bởi ai (Supper_Admin hoặc

Admin) 11 Modified date Datetime Có Thời gian update

</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">

4 Duration String Có

Thời gian học của các syllabus trong traning

program 5 Topic Code String Có Id của syllabus 6 Status String Có Trạng thái của traning

syllabus

6 <sub>Topcic outline </sub> String Không Id của kế hoạch syllabus 7 <sub>Training materials </sub> File Có Tài liệu dạy học 8 <sub>Public status </sub> String Có Trạng thái Outline

</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">

9 Created by String Có

Được tạo bởi ai (Supper_Admin hoặc

Admin) 10 Created date Date Có Ngày tạo ra traning

<b>3.3.7 Traning program syllabuss </b>

<b>STT Tên thuộc tính Kiểu dữ liệu <sup>Ràng </sup></b>

</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">

<b>CHƯƠNG 4: MƠ HÌNH USE-CASE </b>

<b>4.1 SƠ ĐỒ USE-CASE </b>

</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25">

<b>4.2 DANH SÁCH CÁC ĐỐI TƯỢNG </b>

<b>STT Tên của đối tượng Mô tả ngắn về đối tượng </b>

1 INSTRUCTOR <sup>Là trainer phụ trách các lớp học trong hệ </sup>thống quản lý

View list of existed user / User listing screen

Cho phép Admin xem danh sách người dùng hiện tại/Màn hình danh sách người dùng 2 Create user Cho phép Admin tạo mới người dùng 3 <sup>Update user </sup> <sup>Cho phép Admin cập nhật chi tiết người dùng </sup>

(thông tin người dùng) 4 <sup>Grant permission to user </sup>

View list of existed syllabus / Syllabus listing

screen

Cho phép Admin/Instructor xem danh sách màn hình danh sách giáo trình / giáo trình hiện có 8 <sup>Create syllabus general </sup>

Cho phép Admin/Instructor đọc toàn bộ thơng tin chi tiết của giáo trình

12 <sup>Update/edit </sup>syllabus information

Cho phép Admin/Instructor cập nhật thông tin giáo trình hiện có

13 <sup>Import syllabus/ syllabus </sup>importing screen

Cho phép Admin tạo giáo trình mới thơng qua nhập tệp CSV/excel

14 Duplicate syllabus <sup>Cho phép Instructor tạo phiên bản giáo trình mới </sup>bằng cách sao chép phiên bản hiện có

</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="26">

15

Training Program

View Training Program list Cho phép Admin xem danh sách Chương trình đào tạo

16 Create a Training Program Cho phép Admin tạo chương trình đào tạo mới 17 <sup>View detail Training </sup>

Program

Cho phép Admin/ BU lead/ Trainer/ Trainee xem chi tiết danh sách Chương trình đào tạo 18 Update Training Program Cho phép Admin cập nhật Chương trình đào tạo 19 <sup>Active/deactive training </sup>

View list of class Cho phép Admin xem danh sách lớp 21

Create class Cho phép Admin tạo lớp mới như training program, list of candidates, trainer, list of

</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27">

<b>4.4 ĐẶC TẢ CÁC USE-CASE </b>

<b>4.4.1 Đặc tả Use-case “View list of existed user / User listing screen” Tên use-case </b> View list of existed user / User listing screen

<b>Đối tượng chính Admin </b>

<b>Mơ tả </b> <sup>Admin xem danh sách người dùng hiện tại/Màn hình danh sách </sup>

<b>AC1: Danh sách các trường sẽ được hiển thị là: </b>

- Từ giáo trình: <small>name, code, created_date, created_by, output_standards</small>

- Từ Training_content: tổng(thời lượng) là thời lượng.

<b>AC2: Chế độ xem danh sách bảng với bộ lọc mặc định: </b>

- Trạng thái giáo trình trong ("Active ", " Draft ") - Danh sách giáo trình được sắp xếp theo ngày tạo

- Danh sách giáo trình được giới hạn 10 mục trên mỗi trang (có thể điều chỉnh)

<b>AC3: Trạng thái giáo trình bao gồm </b>

- "Draft" nếu nó đang được lưu dưới dạng bản nháp - "Active" nếu nó được xuất bản

- "Inactive" nếu nó bị hủy kích hoạt

<b>AC4: Tại màn hình danh sách giáo trình, Người dùng có thể sắp </b>

xếp danh sách giáo trình bằng cách nhấn vào biểu tượng sắp xếp bên cạnh tên cột trường.

<b>4.4.2 Đặc tả Use-case “Create user” Tên use-case </b> Create user

<b>Đối tượng chính Admin </b>

<b>Mô tả </b> Admin tạo mới người dùng

<b>Điều kiện tiên </b>

<b>quyết </b> <sup>1. Người dùng phải đăng nhập được vào ứng dụng </sup><b>Điều kiện sau </b> Ứng dụng sẵn sàn cho hoạt động tiếp theo

<b>Luồng cơ bản </b> <sup>AC1: Người dùng có thể điền vào tất cả các trường để tạo (Loại </sup>

người dùng, Tên, email, điện thoại, địa chỉ, Ngày sinh, Cấp độ)

</div><span class="text_page_counter">Trang 28</span><div class="page_container" data-page="28">

AC2: Thông báo '<Tên trường> là bắt buộc' (màu: đỏ) sẽ được hiển thị nếu có bất kỳ trường trống nào.

AC3: Tên người dùng và mật khẩu sẽ được gửi tới tài khoản người dùng qua email sau khi tạo thành công.

+ Method: Gửi email realtime sau khi tạo tài khoản thành công. + Title: “[FAMS] - Tài khoản được tạo thành cơng”

<b>Đối tượng chính Admin </b>

<b>Mô tả </b> Admin cập nhật chi tiết người dùng (thông tin người dùng)

<b>Điều kiện tiên quyết </b>

1. Người dùng phải đăng nhập được vào ứng dụng 2. Phải đảm bảo kết nối được Internet

<b>Điều kiện sau </b> Ứng dụng sẵn sàn cho hoạt động tiếp theo

<b>Luồng cơ bản </b>

AC1. Người dùng có thể cập nhật thông tin như user type, name, phone, DOB, Gender, Status. Tất cả các trường là bắt buộc (không thể thay đổi email)

AC2. Khi người dùng nhấp vào lưu, vai trò sẽ được cập nhật với quyền mới và thông báo 'Tài khoản được cập nhật thành công' sẽ hiển thị

<b>4.4.4 Đặc tả Use-case “Allow super admin to add permission to user account” Tên use-case </b> Allow super admin to add permission to user account

<b>Đối tượng chính Super_Admin </b>

Mơ tả Super_Admin thêm quyền vào tài khoản người dùng

</div><span class="text_page_counter">Trang 29</span><div class="page_container" data-page="29">

<b>Điều kiện tiên quyết </b>

1. Người dùng phải đăng nhập được vào ứng dụng 2. Phải đảm bảo kết nối với Internet

<b>Điều kiện sau </b> Ứng dụng sẵn sàn cho hoạt động tiếp theo

<b>Luồng cơ bản </b>

User có thể chọn một tài khoản và một bản đồ vai trò cùng nhau. Sau khi 'Lưu', tài khoản sẽ có quyền cụ thể theo vai trị của họ trong hệ thống.

<b>4.4.5 Đặc tả Use-case “View Permission” Tên use-case </b> View Permission

<b>Đối tượng chính Admin </b>

<b>Mơ tả </b> Admin có thể xem quyền người dùng

<b>Điều kiện tiên quyết </b>

1. Người dùng phải đăng nhập được vào ứng dụng 2. Phải đảm bảo kết nối với Internet

<b>Điều kiện sau </b> Ứng dụng sẵn sàn cho hoạt động tiếp theo

<b>Đối tượng chính Admin </b>

<b>Mơ tả </b> Admin cập nhật quyền người dùng

<b>Điều kiện tiên quyết </b>

1. Người dùng phải đăng nhập được vào ứng dụng 2. Phải đảm bảo kết nối với Internet

<b>Điều kiện sau </b> Ứng dụng sẵn sàn cho hoạt động tiếp theo

<b>Luồng cơ bản </b>

AC1. Người dùng có quyền chỉnh sửa quyền trong vai trò khi người dùng truy cập tab quyền, sau đó người dùng có thể thấy tất cả các nhóm quyền tồn tại trong hệ thống, sau đó vai trò sẽ được cập nhật với quyền mới.

<b>AC2. Thông báo “Role are updated successfully” sẽ hiển thị khi </b>

Người dùng cập nhật quyền thành công.

</div><span class="text_page_counter">Trang 30</span><div class="page_container" data-page="30">

<b>4.4.7 Đặc tả Use-case “View list of existed syllabus / Syllabus listing screen” Tên use-case </b> View list of existed syllabus / Syllabus listing screen

<b>Đối tượng chính Admin/Instructor </b>

<b>Mơ tả </b> <sup>Admin/Instructor xem danh sách màn hình danh sách giáo trình / </sup>

- danh sách giáo trình được sắp xếp theo ngày tạo

- danh sách giáo trình được giới hạn 10 mục trên mỗi trang (có thể điều chỉnh)

AC3: Trạng thái giáo trình bao gồm

- "Draft" nếu nó đang được lưu dưới dạng bản nháp - "Active" nếu nó được xuất bản

- "Inactive" nếu nó bị hủy kích hoạt

AC4: Tại màn hình danh sách giáo trình, Người dùng có thể sắp xếp danh sách giáo trình bằng cách nhấn vào biểu tượng sắp xếp bên cạnh tên cột trường.

<b>4.4.8 Đặc tả Use-case “Create Syllabus (General Tab)” Tên use-case </b> Create Syllabus (General Tab)”

<b>Đối tượng chính Admin/Instructor </b>

<b>Mơ tả </b> Admin/Instructor điền thơng tin chung vào giáo trình

<b>Điều kiện tiên quyết </b>

1. Người dùng phải đăng nhập được vào ứng dụng 2. Phải đảm bảo kết nối với Internet

<b>Điều kiện sau </b> Ứng dụng sẵn sàn cho hoạt động tiếp theo

<b>Luồng cơ bản </b>

AC1_Tại tab Chung

Người dùng GIVEN có quyền Tạo giáo trình AND người dùng đang ở trang giáo trình tạo

</div><span class="text_page_counter">Trang 31</span><div class="page_container" data-page="31">

THEN người dùng sẽ có thể nhập tên giáo trình AND người dùng có thể chọn cấp độ

AND người dùng có thể nhập số người tham dự

AND người dùng có thể nhập các yêu cầu kỹ thuật dưới dạng văn bản miễn phí

AND người dùng có thể nhập mục tiêu khóa học dưới dạng vùng văn bản miễn phí

THEN người dùng có thể lưu giáo trình để chuyển sang tab tiếp theo

OR người dùng có thể lưu tác phẩm dưới dạng bản nháp AC2. Người dùng sẽ có thể xem thanh tiến trình dưới dạng tab hiện tại

AC3. Sau khi người dùng thêm mục tiêu thành cơng, mã Giáo trình sẽ được tạo tự động theo định dạng sau: <loại mục tiêu

A/S/K/H><sequence>. Ví dụ. A01, S01, K05

<b>4.4.9 Đặc tả Use-case “Create Syllabus (Outline Screen)” Tên use-case </b> Create Syllabus (Outline Screen)

<b>Đối tượng chính Admin/Instructor </b>

<b>Mơ tả </b> Admin/Instructor điền thơng tin đề cương giáo trình

<b>Điều kiện tiên </b>

<b>quyết </b> <sup>1. Người dùng phải đăng nhập vào ứng dụng </sup><b>Điều kiện sau </b> Ứng dụng sẵn sàn cho hoạt động tiếp theo

<b>Luồng cơ bản </b>

Màn hình này hiển thị phần thứ hai của thơng tin giáo trình: đề cương, ngồi những thơng tin cơ bản, nó tập trung vào việc tạo các mục lịch học như days, units, and contents.

AC1: Hiển thị thanh tiến trình hiển thị bước hiện tại mà người dùng đang điền thông tin “outline” và các bước tiếp theo là gì, general phải có màu xanh để thông báo cho người dùng rằng bước này được đánh dấu là xong

AC2: Tại màn hình này, User có thể add/remove ngày mới (training_unit.day_number)

AC3: Trong mỗi day, người dùng có thể add/edit/remove đơn vị mới theo tên Training_unit.unit, unit_id sẽ được tạo tự động.

</div><span class="text_page_counter">Trang 32</span><div class="page_container" data-page="32">

AC4: Trong mỗi unit, người dùng có thể add/edit/remove new content/training material bằng cách tải tệp lên/đính kèm liên kết đến nội dung đó.

AC5: Các trường bắt buộc để tạo nội dung mới bao gồm name, objective (chọn từ danh sách thả xuống các mã mục tiêu có sẵn cho giáo trình này trong Syl2.1 AC4), thời lượng (0 phút - 480 phút), hình thức đào tạo (online/offline) và phân phối kiểu.

AC6: Hiển thị biểu đồ time allocation. Time allocation được tự động tính tốn lại mỗi khi nội dung đào tạo được

added/removed/edited

<b>4.4.10 Đặc tả Use-case “Create Syllabus (Other Screen)” Tên use-case </b> Create Syllabus (Other Screen)

<b>Đối tượng chính Admin/Instructor </b>

<b>Mơ tả </b> Admin/Instructor điền thơng tin đề cương giáo trình

<b>Điều kiện tiên </b>

<b>quyết </b> <sup>1. Người dùng phải đăng nhập vào ứng dụng </sup><b>Điều kiện sau </b> Ứng dụng sẵn sàn cho hoạt động tiếp theo

AC2: Người dùng có thể nhập sơ đồ đánh giá các mơn gồm quiz, assignment, final theory test, and final practice test. Tổng số là 100% khi tất cả các chương trình đánh giá được hồn thành. AC3: Người dùng có thể nhập tiêu chí đạt

AC4: Người dùng có thể nhập nguyên tắc phân phối đào tạo bằng công cụ soạn thảo

<b>1.4.11 Đặc tả Use-case “Read all detail information of the syllabus” Tên use-case </b> Read all detail information of the syllabus

<b>Đối tượng chính Admin/Instructor </b>

<b>Mơ tả </b> Admin/Instructor đọc tồn bộ thơng tin chi tiết của giáo trình

</div><span class="text_page_counter">Trang 33</span><div class="page_container" data-page="33">

<b>Điều kiện tiên </b>

<b>quyết </b> <sup>1. Người dùng phải đăng nhập vào ứng dụng </sup><b>Điều kiện sau </b> Ứng dụng sẵn sàn cho hoạt động tiếp theo

<b>Luồng cơ bản </b>

AC1: Tại màn hình Syllabus, Người dùng có thể đọc thơng tin giáo trình bằng cách nhấp vào ode or name trên danh sách giáo trình để chuyển đến màn hình thơng tin chi tiết giáo trình.

AC2: Với giáo trình soạn thảo, màn hình thơng tin chi tiết giáo trình giống như màn hình soạn thảo

AC3: Với giáo trình đã được xuất bản, người dùng có thể đọc tồn bộ thơng tin giáo trình nhưng khơng thể chỉnh sửa, nếu người dùng muốn chỉnh sửa, sao chép, hủy kích hoạt giáo trình thì phải nhấn vào nút quản lý giáo trình.

AC4: Tại màn hình thơng tin chi tiết giáo trình, mặc định phiên bản hiển thị của giáo trình là phiên bản mới nhất. Người dùng có thể chọn một phiên bản trong danh sách phiên bản để xem các phiên bản khác của giáo trình.

<b>1.4.12 Đặc tả Use-case “Update/edit syllabus information” Tên use-case </b> Update/edit syllabus information

<b>Đối tượng chính Admin/Instructor </b>

<b>Mơ tả </b> Admin/Instructor cập nhật thơng tin giáo trình hiện có

<b>Điều kiện tiên </b>

<b>quyết </b> <sup>1. Người dùng phải đăng nhập vào ứng dụng </sup><b>Điều kiện sau </b> Ứng dụng sẵn sàn cho hoạt động tiếp theo

<b>Luồng cơ bản </b>

AC1: Tại màn hình thơng tin chi tiết giáo trình, Người dùng có thể chỉnh sửa thơng tin giáo trình giống như cách tạo thông tin bằng cách nhấp vào nút "Edit " nằm bên trong nút quản lý giáo trình. AC2: Các trường được tạo tự động bao gồm topic

code,time_allocation không thể cập nhật (phiên bản có thể).

<b>1.4.13 Đặc tả Use-case “Import syllabus/ syllabus importing screen” Tên use-case </b> Import syllabus/ syllabus importing screen

<b>Đối tượng chính Admin </b>

<b>Mơ tả </b> Admin tạo giáo trình mới thơng qua nhập tệp CSV/excel

<b>Điều kiện tiên </b>

<b>quyết </b> <sup>1. Phải đảm bảo kết nối Internet </sup>

</div><span class="text_page_counter">Trang 34</span><div class="page_container" data-page="34">

<b>Điều kiện sau </b> Ứng dụng sẵn sàn cho hoạt động tiếp theo

<b>Luồng cơ bản </b>

AC1: Tại màn hình danh sách giáo trình, Người dùng có thể tải lên tệp Excel/CSV để tạo giáo trình theo 3 tùy chọn kiểm soát trùng lặp bao gồm allow, replace, and skip bằng cách nhấp vào nút nhập. AC2: Tệp được nhập phải đáp ứng tất cả các điều kiện xác thực như khi tạo giáo trình mới nếu khơng sẽ thơng báo lỗi cho người dùng.

AC3: Tại màn hình nhập giáo trình, Người dùng có thể tải xuống mẫu của tệp nhập.

<b>1.4.14 Đặc tả Use-case “Duplicate Syllabus” Tên use-case </b> Duplicate Syllabus

<b>Đối tượng chính Instructor </b>

<b>Mơ tả </b> <sup>Instructor tạo phiên bản giáo trình mới bằng cách sao chép phiên </sup>

bản hiện có

<b>Điều kiện tiên </b>

<b>quyết </b> <sup>Phải đảm bảo kết nối Internet </sup>

<b>Điều kiện sau </b> Ứng dụng sẵn sàn cho hoạt động tiếp theo

<b>Luồng cơ bản </b>

AC1: Tại màn hình thơng tin chi tiết giáo trình, khi người dùng nhấp vào nút quản lý giáo trình, Người dùng có thể sao chép giáo trình từ phiên bản đang xem. Sau khi sao chép, hãy chuyển đến màn hình Danh sách giáo trình với một giáo trình mới được thêm vào (được sắp xếp theo ngày tạo trong DESC và giáo trình tương ứng ở chế độ “Drafting”.

AC2: Người dùng có thể xem lại thơng tin giáo trình trước khi gửi bản sao.

AC3: Bản sao được coi là bản soạn thảo của giáo trình.

<b>1.4.15 Đặc tả Use-case “View list of existed training program / Training program listing screen” </b>

<b>Tên use-case </b> <sup>View list of existed training program / Training program listing </sup>

screen<small> </small>

<b>Đối tượng chính Admin/Trainer </b>

<b>Mơ tả </b> Admin/Trainer xem danh sách Chương trình đào tạo

<b>Điều kiện tiên quyết </b>

1. Phải đảm bảo kết nối Internet 2. Đăng nhập thành công

<b>Điều kiện sau </b> Ứng dụng sẵn sàn cho hoạt động tiếp theo

</div><span class="text_page_counter">Trang 35</span><div class="page_container" data-page="35">

<b>Luồng cơ bản </b>

AC1: Danh sách các trường sẽ được hiển thị là:

- Từ chương trình đào tạo: Name, created_date, created_by, duration, status

AC2: Chế độ xem danh sách bảng với bộ lọc mặc định:

- Trạng thái chương trình đào tạo trong ("Active ", "Drafting ") - Danh sách chương trình đào tạo được sắp xếp theo ngày create_date desc

- Danh sách chương trình đào tạo bị giới hạn 10 mục trên mỗi trang (có thể điều chỉnh)

AC3: Trạng thái chương trình đào tạo bao gồm

- "Drafting" nếu nó đang được lưu dưới dạng bản nháp (chỉ dành cho quản trị viên xem)

- "Active " nếu nó được xuất bản (dành cho chế độ xem của quản trị viên / huấn luyện viên / học viên)

- "Inactive " nếu nó khơng hoạt động (chỉ dành cho chế độ xem của quản trị viên)

AC4: Tại màn hình danh sách chương trình đào tạo, Người dùng có thể sắp xếp danh sách chương trình đào tạo bằng cách nhấn vào biểu tượng sắp xếp bên cạnh tên cột trường.

<b>2.4.16 Đặc tả Use-case “Create training program” Tên use-case </b> Create training program

<b>Đối tượng chính Admin </b>

<b>Mơ tả </b> Admin tạo chương trình đào tạo mới

<b>Điều kiện tiên quyết </b>

3. Phải đảm bảo kết nối Internet 4. Đăng nhập thành công

<b>Điều kiện sau </b> Ứng dụng sẵn sàn cho hoạt động tiếp theo

<b>Luồng cơ bản </b>

AC1: Các trường bắt buộc: program name, General information, estimated duration, list of syllabuses

AC2: Thông tin chung: free inputs.

AC3: Người dùng có thể tìm kiếm và chọn ít nhất một giáo trình hiện có để thêm vào chương trình. Sau khi thêm vào, hiển thị đề cương giáo trình các chương trình chi tiết của chương trình đào tạo. Tự động nhận lớp được chỉ định cho chương trình đào tạo này. AC4: Người dùng có thể chọn và xóa giáo trình đã thêm khỏi chương trình. Sau khi xóa, giáo trình sẽ biến mất khỏi chi tiết chương trình đào tạo

</div><span class="text_page_counter">Trang 36</span><div class="page_container" data-page="36">

AC5: Người dùng có thể lưu chương trình đào tạo dưới dạng bản nháp ngay cả khi chưa điền đầy đủ thông tin bắt buộc. Chương trình đào tạo soạn thảo sẽ có trạng thái = "Drafting ".

AC6: Sau khi tạo thành công, trạng thái không hoạt động

<b>1.4.17 Đặc tả Use-case “View detail training program list” Tên use-case </b> View detail training program list

<b>Đối tượng chính Admin </b>

<b>Mơ tả </b> <sup>Admin/ BU lead/ Trainer/ Trainee xem chi tiết danh sách Chương </sup>

AC2: Với chương trình đào tạo soạn thảo thì chỉ có admin mới xem được

AC3: Các trường hiển thịprogram name, General information, estimated duration, list of syllabuses, status, list of classes of training program (đối với danh sách các lớp, chỉ xem trạng thái "Active " cho học viên và giảng viên xem, tất cả trạng thái cho quản trị viên)

<b>1.4.18 Đặc tả Use-case “Update training program information” Tên use-case </b> Update training program information

<b>Đối tượng chính Admin </b>

<b>Mơ tả </b> Admin cập nhật Chương trình đào tạo

<b>Điều kiện tiên quyết </b>

1. Phải đảm bảo kết nối Internet 2. Đăng nhập thành công

<b>Điều kiện sau </b> Ứng dụng sẵn sàn cho hoạt động tiếp theo

</div><span class="text_page_counter">Trang 37</span><div class="page_container" data-page="37">

AC3: Mỗi lần người dùng add/removesyllabus in training program, chương trình đào tạo cụ thể sẽ nâng cấp phiên bản mới với danh sách giáo trình mới

AC4: Những thay đổi trong chương trình đào tạo phải được lưu lại và phản ánh trên hệ thống. (Thêm trường khác: ngày giờ sửa đổi lần cuối)

<b>1.4.19 Đặc tả Use-case “Acticve/Deactive training program” Tên use-case Acticve/Deactive training program </b>

<b>Đối tượng chính Instructor </b>

<b>Mơ tả </b> <sup>Instructor tạo phiên bản chương trình đào tạo mới bằng cách sao </sup>

<b>Điều kiện sau </b> Ứng dụng sẵn sàn cho hoạt động tiếp theo

<b>Luồng cơ bản </b> AC1: Active/inactive trong màn hình chi tiết chương trình đào tạo

<b>1.4.20 Đặc tả Use-case “View list of class” Tên use-case </b> View list of class

<b>Đối tượng chính Admin </b>

<b>Mô tả </b> Admin xem danh sách lớp

<b>Điều kiện tiên quyết </b>

1. Phải đảm bảo kết nối Internet 2. Đăng nhập thành công

<b>Điều kiện sau </b> Ứng dụng sẵn sàn cho hoạt động tiếp theo

<b>Luồng cơ bản </b>

AC1: Danh sách các trường cần hiển thị là : Class code, Class name, Created On (Created date), Created By (Created Username), Duration (No. of days from start date to end date), Status,

Location, FSU.

AC2: Danh sách sẽ hiển thị mặc định theo các quy tắc sau: • Default filter status (Planning, Scheduled, Opening) • Sắp xếp mặc định theo ngày sửa đổi lần cuối

</div><span class="text_page_counter">Trang 38</span><div class="page_container" data-page="38">

AC6: Người dùng có thể chọn trang tiếp theo hoặc trang trước của danh sách lớp

AC7: Người dùng có thể chọn trang cụ thể để xem danh sách lớp

<b>1.4.21 Đặc tả Use-case “Create class” Tên use-case </b> Create class

<b>Đối tượng chính Admin Mô tả </b>

Admin tạo lớp mới như training program, list of candidates, trainer, list of syllabuses

<b>Điều kiện tiên quyết </b>

1. Phải đảm bảo kết nối Internet 2. Đăng nhập thành công

<b>Điều kiện sau </b> Ứng dụng sẵn sàn cho hoạt động tiếp theo

<b>Luồng cơ bản </b>

AC1: Khi lớp được lưu, Mã lớp sẽ được tạo theo quy tắc: <<Location Code>>+<<Current Year(yy)>>+<<Incremental Number (01-99)>>

AC2: Người dùng có thể chọn những thơng tin này • Class name

• Training program + Syllabus (reference user story)

• General information (Class time from, to of each Session, Location, Trainer, Admin, FSU)

• Training calendar by day

• No. of Attendees (Planned, Accepted, Actual) AC3: Thông tin bên dưới là bắt buộc: lass name, General

information (Class time from to of each Session, Admin, Trainer, FSU, location), Training calendar by day

AC4: Lớp đã tạo có thể được lưu dưới dạng draft (Status = Planning)) và có thể truy cập để cập nhật lần cuối trong tương lai

<b>1.4.22 Đặc tả Use-case “View class detail” Tên use-case </b> View class detail

<b>Đối tượng chính Admin </b>

<b>Mô tả </b> <sup>Admin xem chi tiết lớp như training program, list of candidates, </sup>

trainer, list of syllabuses

<b>Điều kiện tiên quyết </b>

1. Phải đảm bảo kết nối Internet 2. Đăng nhập thành công

<b>Điều kiện sau </b> Ứng dụng sẵn sàn cho hoạt động tiếp theo

<b>Luồng cơ bản </b> AC1: Người dùng có thể xem thơng tin này của lớp:

</div><span class="text_page_counter">Trang 39</span><div class="page_container" data-page="39">

- Class name

- Training program + Syllabus (tham khảo user story)

- General information (Class time “from, to” of each Sesson, Location, Trainer, Admin, FSU)- Lịch đào tạo theo ngày - No.of Attendees (No. of Planned, No. of Accepted, No. of Actual)

AC2: Người dùng có thể chọn “Edit” để cập nhật thông tin (Status = "Planning" or "Scheduled")

<b>1.4.23 Đặc tả Use-case “Update class” Tên use-case </b> Update class

<b>Đối tượng chính Admin </b>

<b>Mơ tả </b> <sup>Admin cập nhật lớp như training program, list of candidates, </sup>

trainer, list of syllabuses

<b>Điều kiện tiên quyết </b>

3. Phải đảm bảo kết nối Internet 4. Đăng nhập thành công

<b>Điều kiện sau </b> Ứng dụng sẵn sàn cho hoạt động tiếp theo

<b>Luồng cơ bản </b>

AC1: Người dùng có thể xem thơng tin này của lớp: - Class name

- Training program + Syllabus (tham khảo user story)

- General information (Class time “from, to” of each Sesson, Location, Trainer, Admin, FSU)- Lịch đào tạo theo ngày - No.of Attendees (No. of Planned, No. of Accepted, No. of Actual)

AC2: Người dùng có thể chọn “Edit” để cập nhật thông tin (Status = "Planning" or "Scheduled")

AC3: Ở chế độ tạo hoặc chỉnh sửa lớp, khi thay đổi chương trình đào tạo, hệ thống sẽ hiển thị pop-up EM47

AC4: Nếu Người dùng chọn "OK" khi thơng báo bật lên trong AC3, hệ thống sẽ xóa danh sách giáo trình cũ và thêm giáo trình mới theo chương trình đào tạo mới.

</div><span class="text_page_counter">Trang 40</span><div class="page_container" data-page="40">

<b>CHƯƠNG 6: THIẾT KẾ KIẾN TRÚC HỆ THỐNG </b>

<i>Hình 6.1: Mơ hình kiến trúc được áp dụng vào ứng dụng </i>

Phần mềm được xây dựng theo mơ hình Three Layers và MVC, bao gồm:

<b>● Lớp GUI (Presentation Layer): Hiển thị giao diện và các chức năng để người </b>

dùng sử dụng.

<b>● Business Logic Layer: Nhận yêu cầu từ lớp GUI và truy cập vào lớp Dữ liệu để </b>

lấy thông tin và trả về GUI. Kiểm tra các yêu cầu nghiệp vụ trước khi cập nhật dữ liệu.

<b>● Data Access Layer:Truy cập vào cơ sở dữ liệu, chỉ lớp này mới có thể hoạt động </b>

với cơ sở dữ liệu.

</div>

×