Ứ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
Trang 1ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
BÁO CÁO ĐỒ ÁN 1 SE121.M21.PMCL
ĐỀ TÀI: XÂY DỰNG ỨNG DỤNG QUẢN LÝ SINH VIÊN
Giảng viên hướng dẫn:
Th.S Huỳnh Tuấn Anh Sinh viên thực hiện 19521649– Nguyễn Thanh Huỳnh
Tp Hồ Chí Minh, 12/2023
Trang 2ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
BÁO CÁO ĐỒ ÁN 1 SE121.M21.PMCL
ĐỀ TÀI: XÂY DỰNG ỨNG DỤNG QUẢN LÝ SINH VIÊN
Giảng viên hướng dẫn:
Th.S Huỳnh Tuấn Anh Sinh viên thực hiện
19521649 – Nguyễn Thanh Huỳnh
Tp Hồ Chí Minh, 12/2023
Trang 3LỜI CẢM ƠN
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à quý 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ừ quý thầy cô để nhóm chúng em ngày càng hoà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 ạ
Trang 4NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………., ngày ……, tháng……, năm……
Người nhận xét
(Kí và ghi rõ họ tên)
Trang 5MỤC LỤC
Trang 64.4 ĐẶC TẢ CÁC USE-CASE 27
4.4.1 Đặc tả Use-case “View list of existed user / User listing screen” 27
4.4.4 Đặc tả Use-case “Allow super admin to add permission to user account” 28
4.4.7 Đặc tả Use-case “View list of existed syllabus / Syllabus listing screen ” 30
1.4.11 Đặc tả Use-case “Read all detail information of the syllabus” 32
1.4.13 Đặc tả Use-case “Import syllabus/ syllabus importing screen” 33
1.4.15 Đặc tả Use-case “View list of existed training program / Training program listing screen ” 34
1.4.18 Đặc tả Use-case “Update training program information” 36
Trang 8CHƯƠNG 1: GIỚI THIỆU CHUNG 1.1 Giới thiệu đề tài
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 quá 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 luôn tồn tại trong cuộc sống lẫn trong đời thường
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 yêu thích môn web, mong
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 quá trình làm việc Song song với đó, những thứ phức tạp thì nó luôn đò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
Trang 91.2 Mô tả đề tài
Ứ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
1.3 Mục tiêu của đề tài
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 yê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 toà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 nguyên cần thiết để hoàn thành thiết nhu yếu Trong đó các hệ thống phải được tính toá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
Trang 10Ngoà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 toà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 chuyên 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 nguyên, môi trường, hệ thống, sự hưng thịnh và cả doanh thu nữa
1.4 Phương pháp nghiên cứu
● 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
Trang 11CHƯƠNG 2: CÔNG NGHỆ TRONG ỨNG DỤNG
2.1 TÌM HIỂU REACTJS
2.1.1 Khái niệm Reactjs
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:
• Components (Thành phần): React ứng dụng được xây dựng từ các thành phần
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
• JSX (JavaScript XML): JSX là một phần quan trọng của React, nó cho phép
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
• Props (Thuộc tính): Thuộc tính được sử dụng để truyền dữ liệu từ một thành
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
• 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
Khi state thay đổi, React tự động cập nhật giao diện người dùng để phản ánh sự thay đổi đó
• Virtual DOM (DOM Ảo): React sử dụng một DOM ảo để theo dõi sự thay đổi
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ả
• Lifecycle methods (Phương thức vòng đời): React cung cấp một số phương
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 quá trình mount, update, và unmount của thành phần
• React Router: Thư viện giúp quản lý định tuyến trong ứng dụng React, cho
phép bạn chuyển đổi giữa các trang mà không cần tải lại toà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
Trang 12Ưu và nhược điểm của Reactjs:
Ưu điểm:
• Hiệu suất cao với Virtual DOM: React sử dụng Virtual DOM để tối ưu
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
• 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
giảm độ phức tạp của mã nguồn và tăng khả năng duy trì
• 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
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
• Thư viện mạnh mẽ: React không phải là một framework hoàn chỉnh mà
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
• JSX: JSX giúp tạo mã nguồn dễ đọc và viết, đồng thời giúp kiểm soát dễ
dàng hơn về cú pháp
• 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
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:
• Học khái niệm mới: Việc làm quen với các khái niệm như JSX, Virtual
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
• 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
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
• SEO: Mặc dù React có khả năng tạo ứng dụng đơn trang, nhưng điều này có
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
• 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 ngoài có
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
• Cần kết hợp với các thư viện khác: Đối với một ứng dụng hoàn chỉnh, bạn
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
Trang 132.1.2 Khái niệm JavaScript
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:
1 Ngôn ngữ lập trình hướng sự kiện (Event-Driven Programming): JavaScript
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
2 Ngôn ngữ kịch bản (Scripting Language): JavaScript thường được sử dụng như
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
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
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ủ
4 Biên dịch tại thời điểm chạy (Just-In-Time Compilation - JIT): JavaScript là một
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
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
mọi thứ trong JavaScript là một đối tượng hoặc có thể thao tác như một đối tượng
6 Biến (Variable): Biến được sử dụng để lưu trữ dữ liệu Trong JavaScript, bạn có
thể khai báo biến bằng từ khóa var, let, hoặc const
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ụ
cụ thể JavaScript hỗ trợ định nghĩa hàm bằng từ khóa function
8 Biểu thức điều kiện (Conditional Statements): Sử dụng if, else if, và else để kiểm
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
2.1.3 Tại sao chọn Reactjs
• Thành phần và Tái sử dụng: ReactJS sử dụng mô hình thành phần, giúp chia
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
• Virtual DOM và Hiệu suất: React sử dụng Virtual DOM để tối ưu hóa quá trình
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
• 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,
đ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ó
Trang 14Cộ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
• JSX - Cú pháp dễ đọc và viết: JSX là một phần của React, cho phép viết mã
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 soát tốt hơn về cú pháp
• 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
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
• 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
ứ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
• Hỗ trợ từ Facebook: React được Facebook phát triển và duy trì, điều này đồng
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
2.2 TÌM HIỂU MYSQL
2.2.1 Khái niệm MySQL
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:
• Cơ sở dữ liệu (Database): Là nơi lưu trữ dữ liệu theo cách có tổ chức và có
thể truy cập được Mỗi cơ sở dữ liệu có thể chứa nhiều bảng dữ liệu
• 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
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
• Cột (Column): Là một trường trong bảng, đại diện cho một thuộc tính cụ
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,
• 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
cột tương ứng với nó
• 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
đượ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
Trang 15• SQL (Structured Query Language): Là ngôn ngữ truy vấn cơ sở dữ liệu
đượ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
• Truy vấn (Query): Là một câu lệnh SQL được sử dụng để tương tác với cơ
sở dữ liệu, như lấy dữ liệu từ cơ sở dữ liệu hoặc thay đổi nó
• Quyền (Privilege): Là quyền hạn được cấp cho người dùng để thực hiện
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
2.2.2 Ưu nhược điểm của MySQL
Ưu điểm:
• Miễn phí và mã nguồn mở: MySQL là một hệ quản trị cơ sở dữ liệu mã
nguồn mở và miễn phí, giúp giảm chi phí triển khai và sử dụng
• Độ ổn định và độ tin cậy cao: MySQL đã được thử nghiệm và sử dụng
rộng rãi trên nhiều dự án lớn, đảm bảo độ ổn định và tin cậy cao
• 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
dụng có lượng truy cập lớn
• Hỗ trợ khóa ngoại: MySQL hỗ trợ khóa ngoại, giúp duy trì tính toàn vẹn
của dữ liệu giữa các bảng
• Cộng đồng lớn và hỗ trợ mạnh mẽ: Có một cộng đồng lớn của các nhà
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ợ
• Hỗ trợ nhiều ngôn ngữ lập trình: MySQL tương thích với nhiều ngôn ngữ
lập trình, bao gồm PHP, Python, Java, và nhiều ngôn ngữ khác
• Dễ sử dụng và quản lý: MySQL có giao diện dễ sử dụng và các công cụ
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ý
Nhược điểm:
● Nhược điểm về extensibility: MySQL có thể gặp khó khăn khi cần mở rộng các
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
● 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ở
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
Trang 16● 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
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ản quyền và chủ quyền: Dù MySQL là một hệ quản trị cơ sở dữ liệu miễn phí,
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
● 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
thêm vào MySQL so với một số hệ quản trị cơ sở dữ liệu khác
2.3 TÌM HIỂU JAVA
2.3.1 Khái niệm Java
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:
Trang 17• Java được sử dụng trong phát triển ứng dụng di động trên nền tảng Android
2.3.2 Khái niệm Java spring boot
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:
1 Spring Framework:
• Spring Boot là một phần của Spring Framework, một framework lớn và mạnh
mẽ cho phát triển ứng dụng Java
• Spring giúp giải quyết các vấn đề như quản lý IoC (Inversion of Control), Dependency Injection, và các khái niệm hướng đối tượng
• Bạn không cần phải cấu hình nhiều, mà vẫn có thể có một ứng dụng chạy được
4 Chạy Mọi Nơi:
• Spring Boot cho phép ứng dụng của bạn chạy trên nhiều môi trường khác nhau như máy tính cá nhân, máy chủ, hoặc cloud
5 Built-in Server:
• Spring Boot đi kèm với các server như Tomcat, Jetty, hoặc Undertow tích hợp sẵn, giúp bạn có thể chạy ứng dụng mà không cần phải cấu hình server riêng
6 Spring Boot Starter:
• 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:
Trang 18• Hỗ trợ trong quá 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
Trang 19CHƯƠNG 3: PHÂN TÍCH - THIẾT KẾ CƠ SỞ DỮ LIỆU 3.1 SƠ ĐỒ LỚP
Trang 203.3 MÔ TẢ CHI TIẾT CÁC LỚP
3.3.1 User Permission
STT Tên thuộc tính Kiểu dữ liệu Ràng
buộc Ý nghĩa
1 Permission ID String Có Id phân quyền
2 Role String Có Phân quyền cho người
code Int Có Id của training program
3 Class name String Có Tên của class
4 Class code String Có Tên đại diện của class
5 Duration String Có Thời gian học của class
6 Status String Có Trạng thái class
7 Location String Có Vị trí class
8 FSU String Có Các bộ phận trong ban
quản trị
9 StartDate Datetime Có Thời gian bắt đầu học
của class
Trang 2110 EndDate Datetime Có Thời gian kết thúc học
1 UserId String Có Id của user
2 ClassId String Có Id của class
3 UserType String Có Danh sách các trainer
trong class
3.3.4 User
STT Tên thuộc tính Kiểu dữ liệu Ràng
buộc Ý nghĩa
1 ID String Có Id của user
2 Name String Có Tên của user
3 Email String Có Email của user
4 Phone Number Có Số điện thoại của user
5 DOB Date Có Ngày sinh của user
6 Gender String Có Giới tính của user
7 Status String Có Trạng thái của user
Trang 223.3.5 Training Program
STT Tên thuộc tính Kiểu dữ liệu Ràng
buộc Ý nghĩa
1 Training program
code String Có Id của traning program
2 Name String Có Tên của traning program
3 UserID String Có Id của user
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
1 Topic Code String Có Id của syllabus
2 Topic name String Có Tên của syllabus
3 Technical_group String Có Yêu cầu của syllabus
4 Version Int Không Phiên bản của syllabus
5 training_audience Int Không Số lượng học sinh trong
syllabus
6 Topcic outline String Không Id của kế hoạch syllabus
7 Training materials File Có Tài liệu dạy học
8 Public status String Có Trạng thái Outline
Trang 2312 Modified date Datetime Có Thời gian update
3.3.7 Traning program syllabuss
STT Tên thuộc tính Kiểu dữ liệu Ràng
1 Topic Code String Có Id của syllabus
2 Objective code String Có Id của Objective
3.3.9 Training Unit
STT Tên thuộc tính Kiểu dữ liệu Ràng
buộc Ý nghĩa
1 Unit Code String Có Id của unit
2 Unit Name String Có Tên của unit
3 Topic Code String Có Id của syllabus
Trang 24CHƯƠNG 4: MÔ HÌNH USE-CASE 4.1 SƠ ĐỒ USE-CASE
Trang 254.2 DANH SÁCH CÁC ĐỐI TƯỢNG
STT Tên của đối tượng Mô tả ngắn về đối tượng
1 INSTRUCTOR Là trainer phụ trách các lớp học trong hệ
2 Create user Cho phép Admin tạo mới người dùng
3 Update user Cho phép Admin cập nhật chi tiết người dùng
(thông tin người dùng)
4 Grant permission to user
account
Cho phép Super_Admin thêm quyền vào tài
khoản người dùng
5 View permission matrix Cho phép Admin xem quyền người dùng
6 Update permission to user Cho phép Admin cập nhật quyền người dùng
Cho phép Admin/Instructor đọc toàn bộ thông
tin chi tiết của giáo trình
14 Duplicate syllabus Cho phép Instructor tạo phiên bản giáo trình mới
bằng cách sao chép phiên bản hiện có
Trang 2616 Create a Training Program Cho phép Admin tạo chương trình đào tạo mới
17 View detail Training
Create class Cho phép Admin tạo lớp mới như training
program, list of candidates, trainer, list of
syllabuses
22
View class detail Cho phép Admin xem chi tiết như training
program, list of candidates, trainer, list of
syllabuses
23
Update class Cho phép Admin cập nhật lớp các thông tin
training program, training schedule, list of candidates, trainer, list of syllabuses
Trang 274.4 ĐẶC TẢ CÁC USE-CASE
4.4.1 Đặc tả Use-case “View list of existed user / User listing screen”
Tên use-case View list of existed user / User listing screen
Đối tượng chính Admin
Mô tả Admin xem danh sách người dùng hiện tại/Màn hình danh sách
người dùng
Điều kiện tiên
quyết
1 Đăng nhập bằng tài khoản Admin
2 Phải đảm bảo kết nối với Internet
Điều kiện sau Ứng dụng sẵn sàn cho hoạt động tiếp theo
Luồng cơ bản
AC1: Danh sách các trường sẽ được hiển thị là:
- Từ giáo trình: name, code, created_date, created_by, output_standards
- Từ Training_content: tổng(thời lượng) là thời lượng
AC2: Chế độ xem danh sách bảng với bộ lọc mặc định:
- 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)
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
4.4.2 Đặc tả Use-case “Create user”
Tên use-case Create user
Đối tượng chính Admin
Mô tả Admin tạo mới người dùng
Điều kiện tiên
quyết 1 Người dùng phải đăng nhập được vào ứng dụng
Điều kiện sau Ứng dụng sẵn sàn cho hoạt động tiếp theo
Luồng cơ bản AC1: Người dùng có thể điền vào tất cả các trường để tạo (Loại
người dùng, Tên, email, điện thoại, địa chỉ, Ngày sinh, Cấp độ)
Trang 28AC2: 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”
+ Body:
“Hi, <user.name>, Tài khoản đăng nhập vào hệ thống FAMS của bạn đã được tạo thành công
Vui lòng truy cập hệ thống theo thông tin sau:
• Username: <user.email>
• Password: <auto password created by system>
Lưu ý: Vui lòng thay đổi mật khẩu sau khi đăng nhập.”
4.4.3 Đặc tả Use-case “Update user”
Tên use-case Update user
Đối tượng chính Admin
Mô tả Admin cập nhật chi tiết người dùng (thông tin người dùng)
Điều kiện tiên
quyết
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
Điều kiện sau Ứng dụng sẵn sàn cho hoạt động tiếp theo
Luồng cơ bản
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ị
4.4.4 Đặc tả Use-case “Allow super admin to add permission to user account” Tên use-case Allow super admin to add permission to user account
Đối tượng chính Super_Admin
Mô tả Super_Admin thêm quyền vào tài khoản người dùng
Trang 29Điều kiện tiên
quyết
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
Điều kiện sau Ứng dụng sẵn sàn cho hoạt động tiếp theo
Luồng cơ bản
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
4.4.5 Đặc tả Use-case “View Permission”
Tên use-case View Permission
Đối tượng chính Admin
Mô tả Admin có thể xem quyền người dùng
Điều kiện tiên
quyết
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
Điều kiện sau Ứng dụng sẵn sàn cho hoạt động tiếp theo
4.4.6 Đặc tả Use-case “Update View Permission”
Tên use-case Update View Permission
Đối tượng chính Admin
Mô tả Admin cập nhật quyền người dùng
Điều kiện tiên
quyết
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
Điều kiện sau Ứng dụng sẵn sàn cho hoạt động tiếp theo
AC2 Thông báo “Role are updated successfully” sẽ hiển thị khi
Người dùng cập nhật quyền thành công
Trang 304.4.7 Đặc tả Use-case “View list of existed syllabus / Syllabus listing screen ”
Tên use-case View list of existed syllabus / Syllabus listing screen
Đối tượng chính Admin/Instructor
Mô tả Admin/Instructor xem danh sách màn hình danh sách giáo trình /
giáo trình hiện có
Điều kiện tiên
quyết
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
Điều kiện sau Ứng dụng sẵn sàn cho hoạt động tiếp theo
Luồng cơ bản
Tiêu chí chấp nhận AC1: Danh sách các trường sẽ được hiển thị là:
- Từ giáo trình: name, code, created_date, created_by, output_standards
- Từ Training_content: tổng(thời lượng) là thời lượng
AC2: Chế độ xem danh sách bảng với bộ lọc mặc định:
- 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)
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
4.4.8 Đặc tả Use-case “Create Syllabus (General Tab)”
Tên use-case Create Syllabus (General Tab)”
Đối tượng chính Admin/Instructor
Mô tả Admin/Instructor điền thông tin chung vào giáo trình
Điều kiện tiên
quyết
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
Điều kiện sau Ứng dụng sẵn sàn cho hoạt động tiếp theo
Luồng cơ bản
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
Trang 31THEN 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
4.4.9 Đặc tả Use-case “Create Syllabus (Outline Screen)”
Tên use-case Create Syllabus (Outline Screen)
Đối tượng chính Admin/Instructor
Mô tả Admin/Instructor điền thông tin đề cương giáo trình
Điều kiện tiên
quyết 1 Người dùng phải đăng nhập vào ứng dụng
Điều kiện sau Ứng dụng sẵn sàn cho hoạt động tiếp theo
Luồng cơ bản
Màn hình này hiển thị phần thứ hai của thông tin giáo trình: đề cương, ngoà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
Trang 32AC4: 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 toán lại mỗi khi nội dung đào tạo được
added/removed/edited
4.4.10 Đặc tả Use-case “Create Syllabus (Other Screen)”
Tên use-case Create Syllabus (Other Screen)
Đối tượng chính Admin/Instructor
Mô tả Admin/Instructor điền thông tin đề cương giáo trình
Điều kiện tiên
quyết 1 Người dùng phải đăng nhập vào ứng dụng
Điều kiện sau Ứng dụng sẵn sàn cho hoạt động tiếp theo
Luồng cơ bản
Màn hình này tập trung vào việc nhập các chương trình đánh giá
và nguyên tắc thực hiện đào tạo
AC1: 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 "other", general và outline phải có màu xanh để thông báo cho người dùng những bước này được đánh dấu là hoàn tất
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 hoà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
1.4.11 Đặc tả Use-case “Read all detail information of the syllabus”
Tên use-case Read all detail information of the syllabus
Đối tượng chính Admin/Instructor
Mô tả Admin/Instructor đọc toàn bộ thông tin chi tiết của giáo trình
Trang 33Điều kiện tiên
quyết 1 Người dùng phải đăng nhập vào ứng dụng
Điều kiện sau Ứng dụng sẵn sàn cho hoạt động tiếp theo
Luồng cơ bản
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 toà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
1.4.12 Đặc tả Use-case “Update/edit syllabus information”
Tên use-case Update/edit syllabus information
Đối tượng chính Admin/Instructor
Mô tả Admin/Instructor cập nhật thông tin giáo trình hiện có
Điều kiện tiên
quyết 1 Người dùng phải đăng nhập vào ứng dụng
Điều kiện sau Ứng dụng sẵn sàn cho hoạt động tiếp theo
Luồng cơ bản
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ể)
1.4.13 Đặc tả Use-case “Import syllabus/ syllabus importing screen”
Tên use-case Import syllabus/ syllabus importing screen
Đối tượng chính Admin
Mô tả Admin tạo giáo trình mới thông qua nhập tệp CSV/excel
Điều kiện tiên
quyết 1 Phải đảm bảo kết nối Internet
Trang 34Điều kiện sau Ứng dụng sẵn sàn cho hoạt động tiếp theo
Luồng cơ bản
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
1.4.14 Đặc tả Use-case “Duplicate Syllabus”
Tên use-case Duplicate Syllabus
Đối tượng chính Instructor
Mô tả Instructor tạo phiên bản giáo trình mới bằng cách sao chép phiên
bản hiện có
Điều kiện tiên
quyết Phải đảm bảo kết nối Internet
Điều kiện sau Ứng dụng sẵn sàn cho hoạt động tiếp theo
Luồng cơ bản
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
1.4.15 Đặc tả Use-case “View list of existed training program / Training program
listing screen ”
Tên use-case View list of existed training program / Training program listing
screen
Đối tượng chính Admin/Trainer
Mô tả Admin/Trainer xem danh sách Chương trình đào tạo
Điều kiện tiên
Trang 35Luồng cơ bản
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
2.4.16 Đặc tả Use-case “Create training program”
Tên use-case Create training program
Đối tượng chính Admin
Mô tả Admin tạo chương trình đào tạo mới
Điều kiện tiên
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
Trang 36AC5: 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
1.4.17 Đặc tả Use-case “View detail training program list”
Tên use-case View detail training program list
Đối tượng chính Admin
Mô tả Admin/ BU lead/ Trainer/ Trainee xem chi tiết danh sách Chương
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)
1.4.18 Đặc tả Use-case “Update training program information”
Tên use-case Update training program information
Đối tượng chính Admin
Mô tả Admin cập nhật Chương trình đào tạo
Điều kiện tiên
Trang 37AC3: 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)
1.4.19 Đặc tả Use-case “Acticve/Deactive training program”
Tên use-case Acticve/Deactive training program
Đối tượng chính Instructor
Mô tả Instructor tạo phiên bản chương trình đào tạo mới bằng cách sao
Điều kiện sau Ứng dụng sẵn sàn cho hoạt động tiếp theo
Luồng cơ bản AC1: Active/inactive trong màn hình chi tiết chương trình đào tạo
1.4.20 Đặc tả Use-case “View list of class ”
Tên use-case View list of class
Đối tượng chính Admin
Mô tả Admin xem danh sách lớp
Điều kiện tiên
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
• Số bản ghi mặc định10 records AC3: Người dùng có thể chọn xóa hoặc chỉnh sửa lớp bản ghi cụ thể trong danh sách
AC4: Người dùng có thể truy cập xem chi tiết từng lớp nếu người dùng nhấp đúp vào các bản ghi trong danh sách
AC5: Người dùng có thể chọn số bản ghi tối đa trên 1 trang (10,
50, 100)
Trang 38AC6: 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
1.4.21 Đặc tả Use-case “Create class”
Tên use-case Create class
Đối tượng chính Admin
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
1.4.22 Đặc tả Use-case “View class detail”
Tên use-case View class detail
Đối tượng chính Admin
Mô tả Admin xem chi tiết lớp như training program, list of candidates,
trainer, list of syllabuses
Điều kiện tiên
quyết
1 Phải đảm bảo kết nối Internet
2 Đăng nhập thành công
Điều kiện sau Ứng dụng sẵn sàn cho hoạt động tiếp theo
Luồng cơ bản AC1: Người dùng có thể xem thông tin này của lớp:
Trang 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")
1.4.23 Đặc tả Use-case “Update class”
Tên use-case Update class
Đối tượng chính Admin
Mô tả Admin cập nhật lớp như training program, list of candidates,
trainer, list of syllabuses
Điều kiện tiên
- 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
Trang 40CHƯƠNG 6: THIẾT KẾ KIẾN TRÚC HỆ THỐNG
Hình 6.1: Mô hình kiến trúc được áp dụng vào ứng dụng
Phần mềm được xây dựng theo mô hình Three Layers và MVC, bao gồm:
● Lớp GUI (Presentation Layer): Hiển thị giao diện và các chức năng để người
dùng sử dụng
● Business Logic Layer: Nhận yêu cầu từ lớp GUI và truy cập vào lớp Dữ liệu để
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
● 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
với cơ sở dữ liệu