BẢNG THUẬT NGỮTiếng Anh Tiếng Việt Mô tả Course Khóa học Khóa học mà thực tập sinh tham gia đào tạoSubject Chủ đề Chủ đề được dạy trong khóa học User Người dùng Người sử dụng hệ thống Ad
Trang 1LỜI CẢM ƠN
Trong quá trình thực hiện đồ án, em đã nhận được sự giúp đỡ, quan tâm, động viên
từ thầy cô, bố mẹ và bạn bè Em rất biết ơn về tất cả những gì mọi người xung quanh
đã làm cho em
Trước tiên, em xin gửi lời cảm ơn sâu sắc tới TS Phan Thị Hà – Giảng viên KhoaCông nghệ thông tin I – Học viện Công nghệ Bưu chính Viễn thông à, người đã trựctiếp hướng dẫn em tận tình, chia sẻ những ý kiến và kinh nghiệm quý báu trong quátrình em học tập và thực hiện đồ án tốt nghiệp
Em cũng xin chân thành cảm ơn các thầy cô giáo trong Học viện Công nghệ Bưuchính Viễn thông nói chung và thầy cô Khoa Công nghệ thông tin I nói riêng đã luônnhiệt huyết, tận tâm với nghề, tận tình trong từng bài giảng và tạo điều kiện thuận lợinhất cho em trong suốt hơn 4 năm em học tập và rèn luyện tại Học viện, giúp em traudồi kiến thức, tư duy và kỹ năng cho công việc và cuộc sống sắp tới
Con xin cảm ơn bố mẹ, vì sinh ra được làm con của bố mẹ Và con cảm ơn bố mẹ
đã ban tặng cho con cuộc sống này, là chỗ dựa vững chắc cho con bước tiếp trong họctâp, công việc và cuộc sống
Cảm ơn những người bạn đã cùng trải qua những năm tháng sinh viên, đã ủng hộ,
hộ trợ trong khoảng thời gian học tập tại học viện
Trong quá trình thực hiện đồ án, dù đã cố gắng để hoàn thành tốt nhất có thể nhưngkhó tránh khỏi những thiếu sót Vì vậy, em rất mong nhận được sự góp ý của thầy cô
và các bạn để đồ án của em được hoàn thiện hơn
Em xin chân thành cảm ơn vì tất cả!
Hà Nội, tháng 12 năm 2018
Sinh Viên
Phạm Thị Linh
Trang 3MỤC LỤC
MỤC LỤC HÌNH ẢNH
Trang 4MỤC LỤC BẢNG BIỂU
Trang 5CÁC TỪ VIẾT TẮT
a
Trang 6BẢNG THUẬT NGỮ
Tiếng Anh Tiếng Việt Mô tả
Course Khóa học Khóa học mà thực tập sinh tham gia đào tạoSubject Chủ đề Chủ đề được dạy trong khóa học
User Người dùng Người sử dụng hệ thống
Admin Quản trị hệ thống Người có toàn quyền sử dụng hệ thống
Trainer Người hướng dẫn Người tham gia hướng dẫn, quản lý thực tập sinhTrainee Thực tập sinh Người tham gia khóa đào tạo do công ty tổ chứcSkill Kỹ năng Những ký năng mà người dùng có
Task Nhiệm vụ Nhiệm vụ cần hoàn thành sau khi học mỗi chủ đềReport Báo cáo Báo cáo mỗi ngày về những việc đã hoàn thành
trong ngày của thực tập sinhContact Liên hệ Liên hệ của người dùng đối với quản trị trang
webProfile Thông tin tài khoản Thông tin tài khoản cá nhân của người dùngComment Bình luận Bình luận của trainer sau khi xem bài báo cáo
của thực tập sinhAvatar Ảnh đại điện Ảnh đại diện hiển thị lên trang web của mỗi
người dùngImport Nhập file Chọn file csv hoặc excel để thêm người dùng
Trang 7LỜI MỞ ĐẦU
Theo xu hướng phát triển của xã hội ngày này, sự bùng nổ của khoa học côngnghệ, ngành công nghệ thông tin là một trong những ngành không thể thiếu Việc ứngdụng công nghệ thông tin vào các xí nghiệp, cơ quan, trường học là một trong nhữngyếu tố rất quan trọng để đưa nước ta sánh vai cùng các cường quốc năm châu Đấtnước ngày càng phát triển cùng với nhiều sự chuyển biến trên thế giới nên công nghệthông tin với con người là xu thế tất yếu để hội nhập với nền công nghiệp mới Vì vậy
ta phải quản lý thông tin một cách khoa học và thống nhất giúp con người dễ dàng traođổi truy xuất và bảo mật thông tin Đặc biệt ngành công nghệ thông tin, để đáp ứngnhu cầu ngày càng cao của con người thì hàng loạt các ứng dụng công nghệ thông tinđược ra đời và áp dụng ngày một nhiều hơn Với công nghệ hiện đại như ngày nay thìcon người dần được giải phóng bởi những công việc nặng nhọc và thay vào đó lànhững ứng dụng của công nghệ thông tin ngày một hiện đại và kỹ xảo như các robot,máy tự động hay các phần mềm quản lý…
Trong suốt thời gian được học tập, trau dồi kiến thức trên trường cũng như hiểubiết ngoài cuộc sống, em nhận thấy: Hàng năm, ở các trường đại học, cao đẳng có tớihàng triệu sinh viên tham gia làm thực tập tốt nghiệp và hầu hết quá trình thực tập tạicác công ty việc phân công người hướng dẫn hướng dẫn, báo cáo tiến độ công việc…đều được thực hiện thủ công trên giấy tờ, thông báo qua các ứng dụng chat hoặc gặpmặt trực tiếp Chính điều này cũng gây nhiều khó khăn, mất nhiều thời gian cho ngườihướng hướng dẫn và cả sinh viên thực tập Với mong muốn có thể áp dụng các kiếnthức đã được học trong trường cùng với việc tìm hiểu, nghiên cứu ngôn ngữ lập trình
để xây dựng hệ thống phần mềm quản lý thực tập sinh
Trong đồ án, xem xây dự website đêt quản lý thông tin các thực tập sinh, đề tài cótên là “Xây dựng hệ thống quản lý thực tập sinh” nhằm giải quyết một số khó khăntrong công tác quản lý thực tập sinh
Nội dung của đồ án gồm 3 chương:
Chương 1: Tổng quan về hệ thống và công nghệ sử dụng
Trang 8tác nhân nghiệp vụ, yêu cầu nghiệp vụ và các chức năng trong hệ thống.
Từ đó sẽ xây dựng kế hoạch dự án bao gồm tất cả các hoạt động liên quan đến dựán
Chương 2: Phân tích thiết kế hệ thống
Từ bài toán, khảo sát từ chương 1, phân tích nghiệp vụ, đi sâu vào phân tích chi tiếttác nhân, các chức năng hệ thống và và mối quan hệ của chúng Mô tả chi tiết hoạtđộng của các chức năng Phân rã biểu đồ ca sử dụng nghiệp vụ, xây dựng kịch bản chitiết với từng ca sử dụng cụ thể và xây dựng biểu đồ lớp của ca phân tích
Chương 3: Cài đặt hệ thống
Chương này mô tả về kiến trúc ứng dụng của hệ thống, giới thiệu cách tổ chứcsource code và 1 số chức năng chính của hệ thống cùng giao diện minh họa
Trang 9CHƯƠNG 1: TỔNG QUAN
Trong chương này, đồ án sẽ trình bày về một số nội dung như: giới thiệu bài toán, nhu cầu của người dùng đối với hệ thống, lý do chọn đề tài, cách giải quyết và các công nghệ sử dụng để thực hiện đồ án Hình thành cái nhìn tổng quát hơn về toàn bộ
hệ thống quản lý thực tập sinh tại một công ty
1.1 Giới thiệu bái toán
Tuyển dụng nhân sự là một hoạt động thường xuyên của mỗi công ty Tuy nhiêncác công ty lớn hiện nay đang gặp một số khó khăn trong việc tuyển nhân viên mới.Không chỉ với việc tuyển trực tiếp tại công ty mà một số công ty còn tham gia hợp tácvới các trường đại học, tuyển một lượng lớn sinh viên vào mỗi đợt thực tập về đào tạo
tạ công ty Đối với việc quản lý các thực tập sinh, người hướng dẫn gặp khó khăntrong việc sắp xếp, quản lý, giao nhiệm vụ cho các thực tập sinh Khi cần tìm kiếmkiểm tra và theo dõi tiến trình hoạt động của thực tập sinh thì người hướng dẫn cũnggặp khó khăn trong việc đánh giá, tổng hợp kết quả làm việc của các thực tập sinh quacác giai đoạn học tập của ứng viên Các thực tập sinh cũng khó nắm rõ được nội dunghọc tập, công việc cần thực hiện trong quá trình thực tập tại công ty
Với sự xuất hiện của Internet và vai trò quan trọng của nó đối với con người trong
xã hội hiện nay, Internet đang chi phối hầu như các lĩnh vực như y học, giáo dục, vănphòng,… Với sự phổ biến và lợi ích mà Internet mang lại, đồ án sẽ xây dựng hệ thốngquản lý thực tập sinh trên nền tảng website, nơi mà mọi người ở bất cứ đâu có Internetđều có thể truy cập, đem lại sự tiện dụng cho người dùng
Hệ thống sẽ cho phép người hướng dẫn quản lý các khóa học, quản lý câc chủ đềcủa khóa học, quản lý các thực tập sinh, quản lý các nhiệm vụ được giao và tiến độcủa thực tập sinh Mặt khác, các thực tập sinh cũng có thể theo dõi được các thông tincủa mình và có thể cập nhật thông tin cá nhân, nộp báo cáo hàng ngày
1.1.1 Mô tả hệ thống
Khi có một khóa đào tạo thực tập sinh mới, người hướng dẫn sẽ là người thêmdanh sách thực tập sinh mới, có thể thêm thủ công bằng tay hoặc bằng cách nhập fileCSV hoặc Exel nhận được theo một mẫu cụ thể từ phòng nhân sự Trainer tạo khóa
Trang 10học, trong khóa học đó sẽ có sẽ chủ để được dạy như Ruby, PHP, Android, IOS,…Nếu có chủ đề mới được công ty đào tạo thêm thì trainer sẽ vào thêm chủ đề mới Khithêm khóa học sẽ chọn những chủ đề được học trong khóa học đó, chọn cả những chủ
đề con được học (ví dụ như trong Ruby có học Git, Ruby, Rails,…) và chọn nhữngthực tập sinh được học trong khóa học đó Sau khi tạo xong khóa học, Trainer tiếp tụcvào chọn thực tập sinh cho từng chủ đề dựa vào những thực tập sinh đã được chọntrước đó khi tạo khóa học Trainer có thể vào thêm sửa xóa những nội dung khóa học,task được giao trong khóa học
Thực tập sinh sau khi nhận được tài khoản, đăng nhập vào hệ thống đề xem khóahọc và nội dung khóa học, nhận tài liệu được cung cấp trong khóa học tạo Report hàngngày Sau khi học xong 1 chủ đề có thể bấm finish để hoàn thành chủ đề đó Sau khinộp report, Trainer vào xem report của thực tập sinh, có thể thể hiện yêu thích vớiReport và bình luận Report Khi nhận được hành động yêu thích hay bình luận, chủnhân của Report sẽ nhận được thông báo
Trainee sẽ được Trainer tạo tài khoản, Trainer sẽ được Admin tạo tài khoản, trừviệc gửi Contact (Liên hệ) thì mọi hành đều phải được hành động sau khi đã đăngnhập hệ thống Trainee chỉ được phép xem khóa học và chủ đề mà mình đã học, chỉđược xem những trainee khác cùng khóa với mình, chỉ được xem và bình luận, yêuthích bài báo cáo của chính mình
Sẽ có các loại khóa học: Khóa cho những sinh viên đến từ các trường đại học, khóadành cho những người trực tiếp được tuyển dụng tại công ty, khóa học nhận đào tạo từcông ty đối tác, khóa dành cho những bạn thực hiện tốt vòng phòng vấn và có lươngsau khi phỏng vấn
1.1.2 Giải pháp
Để giả quyết vấn đề trên, em đã đề xuất việc xây dựng website để giúp cho ngườihướng dẫn và thực tập sinh thực hiện các công việc của mính ở bất cứ đâu có Internet.Website bao gồm các chức năng:
- Phân quyền truy cập
- Quản trị các khóa học mà thực tập sinh tham gia: Giải quyết vấn đề theo dõi cáckhóa học được sắp xếp qua các giai đoạn tuyển thực tập sinh
Trang 11- Quản lý chủ đề khóa học: Theo dõi những chủ đề mà công ty đã đào tạo theotừng đợt.
- Quản trị người dùng: Giải quyết khó khăn xung quanh việc quản lý, tìm kiếmthông tin của thực tập sinh
- Đảm báo các chức năng như: cho phép thực tập sinh nộp báo cáo, theo dõi khóahọc của mình, theo dõi các vấn đề liên quan trong quá trình thực tập, …
Hệ thống được xây dựng cho 3 loại người dùng
- Phía người dùng là thực tập sinh (Trainee): là người tham gia các khóa đào tạo
từ phía công ty, nhóm này khá lớn, tham gia vào xem nội dung khóa học, chủ
đề, bài tập và nộp báo cáo hàng ngày
- Phía người dùng là người hướng dẫn thực tập (Trainer): là những nhân viêncủa công ty bổ nhiệm làm người hướng dẫn thực tập, trực tiếp quản lý cácthực tập sinh, có chức năng cập nhật các khóa học và nội dung khóa học,cấp nhật các kỹ năng, tạo và cấp tài khoản cho các Trainee Tài khoản đượctạo từ mail của các Trainee và password được đặt mặc định là ngày sinh củaTrainee, sau khi nhận được tài khoản, Trainee sẽ tự cập nhật lại mật khẩu
- Phía người quản lý hệ thống (Admin): Chịu trách nhiệm quản lý toàn bộ hệthống, là người được cấp quyền cao nhất, có thể thực hiện mọi hành động vớinội dung trang web
1.1.3 Yêu cầu hệ thống
Hệ thống phải đáp ứng những yêu cầu:
- Lưu trữ các khóa học: Các khóa học được tạo ra kèm các chủ đề, task làm việc
- Lưu trữ người dùng: Người dùng thuộc nhiều loại khác nhau: người dùng là cácnhân viên đám nhận vai trò là người hướng dẫn tại công ty, người dùng là cácthực tập sinh tham gia quá trình thực tập tại công ty, người quản trị trang web
- Lưu trữ những bài báo cáo của thực tập sinh qua các giai đoạn trianing
- Đăng nhập hệ thống, gửi yêu cầu reset password khi quên mật khẩu
- Xem các khóa học, chủ đề của khóa học, xem chi tiết chủ đề khóa học,…
Trang 12- Chức năng xem, cập nhật profile.
- Nộp báo cáo hàng ngày: tạo, sửa, xóa báo cáo
- Bình luận báo cáo
- Xem thông báo
- Xem các khóa học tham gia và các chủ đề tham gia trong khóa học đó
- Chức năng tìm kiếm
- Chức năng quản lý khóa học, chủ đề, báo cáo, task, skill,…
- Quản lý user
Đảm bảo các yêu cầu:
- Giao diện thân thiện, dễ sử dụng
- Thông tin đầy đủ, chính xác
- Cần có phân quyền, đảm bảo tính bảo mật cho từng thông tin
- Hệ thống hiển thi 2 ngôn ngữ là Tiếng Anh và Tiếng Việt
Yêu cầu phi chức năng
Chức năng dữ liệu Dữ liệu đầy đủ thông tin: thông tin trong khóa học cần đầy đủ
để Trainee tham khảo, học tập, hiển thị chính xác nội dung.Chức năng bảo mật Truy cập website cần bảo mật an toàn, do là hệ thống nội bộ
nên cần có tài khoản được cấp mới có thể đăng nhập trang web, mật khẩu cần mã hóa MD5 Phân bổ chức năng cho từng người truy cập
Giao diện Giao diễn dễ sử dụng, chức năng rõ ràng,
Hiệu năng Cơ sở dữ liệu cập nhật theo thời gian thực
Trong đồ án này, em sử dụng ngôn ngữ Ruby on Rails và hệ quản trị cơ sở dữ liệuMySQL cho hệ thống của mình
Trang 13a Lý tưởng của cha đẻ của Ruby
Matz muốn tạo ra ngôn ngữ để lập trình nhanh hơn và dễ dàng hơn Tất cả các tính
năng trong Ruby, bao gồm cả tính năng hướng đối tượng được thiết kế để hoạt độngtốt với tất cả các lập trình viên
Ruby là một ngôn ngữ của sự cân đối Được kết hợp các đặc điểm hay từ các ngônngữ khác (Perl, Smalltalk, Eiffel, Ada, và Lisp) để tạo ra một ngôn ngữ cân bằng giữalập trình hướng chức năng (functional programming) và lập trình hướng thủ tục(imperative programming) Matz khẳng định ông “muốn tạo ra một Ruby gần gũi vàtinh tế”
Website chính thức của Ruby có địa chỉ: ruby-lang.org Trang web này hiện có cả
ngôn ngữ Tiếng Việt để tham khảo
b Sự phát triển của Ruby
Hiện nay, phiên bản mới nhất của Ruby là phiên bản 2.5.3 Ngôn ngữ Ruby là mộtngôn ngữ có cú pháp đơn giản và sáng sủa, được thừa hưởng từ các ngôn ngữ đã có từlâu đời như Lisp, Perl, Python,…cùng những tính năng riêng mà các ngôn ngữ kháckhông có được cũng như được tích hợp sẵn thư viên API của C Ngôn ngữ Ruby có thể
Trang 14viết trên nhiều nền tảng nhưng thông dụng nhất là trên Ubuntu do Ruby được hỗ trợ tốttrên Ubuntu và khả năng sử dụng các cầu lệnh trên terminal.
Sau khi được phát hành ra công chúng năm 1995, Ruby đã thu hút nhiều lập trìnhviên Vào 2006, Ruby đã được chấp nhận ở mức phổ cập, điều này được chứng minhqua số lượng lớn các nhóm người dùng hoạt động tích cực ở các thành phố trên thếgiới và cả các hội nghị liên quan Ruby luôn bán hết vé
Ruby-Talk là mailing list chính để thảo luận về ngôn ngữ Ruby Theo thống kêtrung bình có trên 200 bài mỗi ngày trong năm 2006 Con số này có giảm sút trongnhững năm gần đây vì xu hướng người dùng gửi bài vào những nhóm nhỏ riêng thay
vì gửi vào đây
Chỉ số TIOBE index, đo đạt sự phát triển của các ngôn ngữ lập trình, xếp Rubyhạng 9 nhờ vào số lượng lớn các phần mềm áp dụng ngôn ngữ này, tiêu biểu làframework viết web tên Ruby on Rails
Ruby hoàn toàn miễn phí Không đòi hỏi phí bản quyển, và không cấm đoánchuyện sử dụng, sao chép, sửa đổi và phân phối
c Mọi thứ là đối tượng
Khi bắt đầu viết Matz tham khảo những ngôn ngữ khác để tìm những cú pháp lýtưởng cho ngôn ngữ mới của ông Ông nói “Tôi muốn tìm một ngôn ngữ scripting lợihại hơn Perl, và hướng đối tượng hơn Python.”
Trong Ruby, mọi thứ đều là đối tượng (object) Tất cả thông tin và mã đều có thểgán thuộc tính (properties) và hành động (actions) Lập trình hướng đối tượng (Object-
Oriented Programming) gọi thuộc tính với tên biến địa phương (instance variables) và gọi hành động là hàm (method) Cách tiếp cận thuần hướng đối tượng có thể được thấy
rõ ở những đoạn mã áp dụng một hành động lên một con số:
5 times { print "Ruby!" }
Ở nhiều ngôn ngữ khác, số và một số kiểu mẫu nguyên thủy (primitive types)không phải là đối tượng Ruby chịu ảnh hưởng của ngôn ngữ Smalltalk qua việc gánhàm và biến đối tượng cho tất cả các kiểu mẫu (type) Điều này làm cho Ruby dể dùnghơn vì tất cả nguyên tắc về đối tượng được áp dụng thống nhất
d Tính linh hoạt của Ruby
Trang 15Ruby được xem là một ngôn ngữ linh hoạt, vì nó cho phép người dùng thay đổi cácphần tử của nó Các phần tử tất yếu của Ruby có thể được xoá, định nghĩa lại tuy theo
ý người dùng Các phần hiện hữu có thể thêm vào Ruby không cố gắng kìm chể lậptrình viên
Lấy một ví dụ, phép cộng (toán học) có thể được thực hiện với toán tử (+) Nhưngnếu muốn diễn đạt với từ cộng, có thể thêm một hàm vào lớp Numeric của Ruby:
e Block, một cách đặc trưng để diễn đạt
Block trong Ruby là một cách diễn đạt rất linh động Lập trình viên có thể kèm mộtclosure vào bất cứ hàm nào, để miêu tả cách hàm đấy chạy ra sao Closure này đượcgọi là block và là lựa chọn phổ dụng cho các lập trình viên mới nhập môn từ các ngônngữ hướng thủ tục khác (imperative programmming) khác như PHP hay Visual Basic.Block được tạo ra với cảm hứng từ các ngôn ngữ lập trình hướng chức năng(functional programming) Matz nói, trong Ruby, tôi muốn tạo ra loại closures theophong cách Lisp.”
Trang 16g Diện mạo của Ruby
Trong khi Ruby rất ít dùng dấu và thay vào đó có một vài dấu được sử dụng đểmiêu tả Ruby Ruby không có cần cú pháp để khai báo biến Nó sử dụng cách đặt tênđơn giản để diễn tả mục tiêu (scope) của biến
- var là biến địa phương (local variable)
- @var là biến đối tượng (instance variable)
- $var là biến toàn cục (global variable)
Các dấu trên tăng khả năng đọc bằng cách giúp lập trình viên xác định vai trò củatừng biến Bên cạnh đó, không nhất thiết chèn self vào trước các phần tử đối tượng
h Nâng cao
Ruby có rất nhiều chức năng khác, trong số đó bao gồm:
- Ruby có chức năng xử lý ngoại lệ (exception) giống như Java hay Python,giúp dễ dàng đối phó với lỗi
- Ruby có một bộ thu gom rác kiểu đánh dấu-và-dọn dẹp (mark-and-sweepgarbage collector) cho toàn bộ đối tượng Ruby Không cần phải bảo trì cácbiến đếm liên quan (reference count) ở trong các thư viện mở rộng NhưMatz nói: “Cái này tốt cho sức khoẻ của bạn hơn”
- Viết mở rộng kiểu C (C extension) với Ruby dễ hơn Perl hay Python Ruby
có một thư viện API để gọi Ruby từ C Cái này bao gồm các hàm gọi tích
Trang 17hợp Ruby vào phần mềm để sử dụng như là một ngôn ngữ scripting Mộtgiao diện SWIG cũng sẵn có để sử dụng.
- Ruby có thể đọc các thư viện mở rộng (extension library) kiểu động nếu OScho phép
- Ruby có threading độc lập với cả hệ điều hành Thế nên, tất cả nền tảngkhác mà Ruby chạy trên sẽ có multithreading bất kể hệ đấy có hỗ trợ haykhông Ngay cả MSDOS cũng hỗ trợ!
- Ruby rất dễ port: nó được phát triển chủ yếu cho GNU/Linux, nhưng có làmviệc với các hệ UNIX khác, như macOS, Windows, DOS, BeOS, OS/2, vânvân
Ruby được thiết kế có cú pháp dễ đọc và dễ viết đối với mọi người, mà không cầnthiết phải học một số lượng lớn những dòng lệnh và những “từ điển” chuyên biệt khimới bắt đầu Ruby nổi tiếng trong việc khá dễ học, chỉ với 20 phút xem một hướngdẫn dành cho người mới bắt đầu trên trang chủ của ngôn ngữ này là có thể khiến mọingười trở nên quen thuộc với một số đặc điểm căn bản của nó, đây thực sự là mộtkhoảng thời gian rất ngắn Những fan hâm mộ các ngôn ngữ như Perl và Python cũng
sẽ tìm thấy một số điểm tương đồng để trở nên thích thú Những độc giả đề cử Ruby
đã ca ngợi nó bởi tính dễ hiểu và dễ học, dễ đọc khi mới bắt đầu, và nó có một cộngđồng developer rộng lớn, năng động và đam mê để đảm bảo sự thành công của ngônngữ này
1.2.2 Ruby on Rails
Ruby on Rails (viết ngắn gọn là Rails) là một web framework được viết bằng ngônngữ Ruby Rails được giới thiệu lần đầu vào năm 2004 bởi một lập trình viên ngườiĐan Mạch là David Heinemeier Hansson, và sau đó đã nhanh chóng phát triển trởthành một trong những web framework phổ biến, trở thành một trong những công cụmạnh mẽ phổ biến nhất để xây dựng ứng dụng web động
Rails được sử dụng bởi các công ty đa dạng như Airbnb, Basecamp, Disney,GitHub, Hulu, Kickstarter, Shopify, Twitter và Yellow Pages Ngoài ra còn có nhiềucửa hàng phát triển web chuyên về Rails, chẳng hạn như ENTP, thoughtbot, PivotalLabs, Hashrocket và HappyFunCorp, cùng với vô số tư vấn độc lập, giảng viên và nhà
Trang 18thầu Phiên bản mới nhất của Rails bây giờ là phiên bản 5.2.1.
Điều gì làm cho Rails tuyệt vời như vậy? Trước hết, Ruby on Rails là nguồn mở100%, có sẵn theo Giấy phép MIT, và nó cũng không tốn chi phí để tải xuống hoặc sửdụng Rails có thiết kế thanh lịch và nhỏ gọn Bằng cách khai thác tính linh hoạt củangôn ngữ Ruby cơ bản, Rails có hiệu quả tạo ra một ngôn ngữ cụ thể để viết các ứngdụng web Rails cũng thích nghi nhanh chóng với những phát triển mới trong côngnghệ web và framework Ví dụ, Rails là một trong những framework đầu tiên triểnkhai thực hiện kiểu kiến trúc REST để cấu trúc các ứng dụng web Và khi cácframework khác phát triển các kỹ thuật mới thành công, tác giả Rails - DavidHeinemeier Hansson và nhóm cốt lõi của Rails không ngần ngại kết hợp các ý tưởngcủa họ Có lẽ ví dụ ấn tượng nhất là việc sáp nhập Rails và Merb, một framework webRuby của đối thủ, để Rails có những điểm nổi bật từ thiết kế mô-đun của Merb, API
ổn định và hiệu suất được cải thiện
Rails có một cộng đồng nhiệt tình hỗ trợ Gồm hàng nghìn người đóng góp mãnguồn mở, các hội thảo vui nhộn và nhiều thông tin, một số lượng lớn gem (giải phápđộc lập cho các vấn đề cụ thể như phân trang và tải lên hình ảnh), một loạt các blogthông tin phong phú và IRC channels Số lượng lớn các lập trình viên Rails cũng giúp
dễ dàng xử lý các lỗi ứng dụng không thể tránh khỏi
Rails giúp người lập trình viên giảm thiểu rất nhiều thời gian viết code với cáccông cụ của mình như generate & scaffolding Rails có một cộng động rất lớn lập trìnhviên với hàng ngàn thư viện tiện dụng, miễn phí
Trang chủ của Rails: http://guides.rubyonrails.org.
Trang web này được thiết kế cho những người mới bắt đầu muốn bắt đầu với Rails
Nó không cho rằng người học cần có bất kỳ kinh nghiệm nào trước đây với Rails Nếukhông có kinh nghiệm trước đó với Ruby, với hướng dẫn trên web vẫn sẽ có thể họcđược
Rails cho phép viết ít mã hơn nhiều ngôn ngữ và framework khác Các nhà pháttriển Rails có kinh nghiệm cũng báo cáo rằng nó làm cho việc phát triển ứng dụng webtrở nên thú vị hơn Rails giả định rằng có một cách "tốt nhất" để làm việc, và nó đượcthiết kế để khuyến khích làm theo cách đó - và trong một số trường hợp không khuyếnkhích lựa chọn thay thế Nếu tìm hiểu "The Way Rails", có thể sẽ khám phá ra một sự
Trang 19phát triển về hiệu năng Nếu vẫn tiếp tục mang thói quen cũ từ các ngôn ngữ khác sangphát triển Rails của mình và cố gắng sử dụng các mẫu đã học ở nơi khác, có thể sẽkhông trải qua được cảm giác thú vị khi code.
Triết lý của Rails bao gồm hai nguyên tắc hướng dẫn chính:
- Đừng lặp lại chính mình: DRY là một nguyên tắc phát triển phần mềm mànói rằng "Mỗi mảnh kiến thức phải có một đại diện duy nhất, rõ ràng, cóthẩm quyền trong một hệ thống." Bằng cách không viết cùng một thông tinlặp đi lặp lại, mã của chúng sẽ dễ bảo trì hơn, có thể mở rộng hơn và ít lỗihơn
- Convention Over Configuration: Rails có ý kiến về cách tốt nhất để làmnhiều thứ trong một ứng dụng web và mặc định là tập hợp các quy ước này,thay vì yêu cầu chỉ định từng chút thông qua vô vàn các tệp cấu hình
Sau khi cài đặt Rails và khởi động server Để xem ứng dụng đang hoạt động, mở
cửa sổ trình duyệt và điều hướng đến http://localhost:3000 sẽ thấy trang thông tin mặc
định của Rails
Trang 20Rails có những đặc điểm sau:
- Là một framework theo mô hình MVC (Model-Controller-View)
- Fullstack, có thể làm tất cả mọi thứ với Rails
- Rails cho phép lập trình viên viết code ít hơn
- Có 3 môi trường lập trình là môi trường phát triển, thử nghiệm và môi trườngtriển khai
- Có thể sử dụng cú pháp câu lênh RoR để thao tác trực tiếp với CSDL mà khôngcần biết cú pháp của SQL (Cái này tương đối giống với Entity Framework(code first) của NET)
- Tiết kiệm thời gian viết mã lệnh so với các ngôn ngữ khác
- Dễ dàng sửa chữa, nâng cấp ứng dụng
Trang 21- Được tích hợp sẵn Ajax trong thư viện của Framework Rails.
- Có nhiều plugins hỗ trợ, cài đặt thêm dễ dàng
- Tính bảo mật được đề cao trong RoR, các vấn đề về lỗi bảo mật như injectionSQL hoặc lỗi Cross Site Scripting (XSS) đều được framework Rails dự liệukhóa các lỗi bảo mật thường gặp
Rails được xây dựng dựa trên Ruby, một ngôn ngữ linh động và hướng đối tượng.Ruby on Rails sẽ quản lý toàn bộ các cơ sở dữ liệu, cung cấp một hệ thống vớitemplate, layout, xử lý các cập nhật Ajax và quản lý các plug-in để cài đặt chức năng
dễ dàng…
a Mô hình MVC trong Rails framework
1 - Người dùng tương tác lên trình duyệt (Chrome) –> Trình duyệt gửi request lấy link(/users)
Trang 223 - Controller sẽ gửi yêu cầu tới Model để lấy dữ liệu
4 - Model sẽ lấy toàn bộ users trong cơ sở dữ liệu ra
5 - Model trả dữ liệu cho controller
6 - Controller sẽ đưa dữ liệu về users (bằng biến @users ) tới Views
7 - Views sử dụng format erb để lấy users và hiển thị trên file html
8 - Controller trả file html cho browser và hiển thị lên người dùng
Model sẽ chịu trách nhiệm duy trì dữ liệu của ứng dụng Đôi khi dữ liệu này chỉ
tồn tại trong một thời gian ngắn, đôi khi lại được lưu trữ lâu dài trong cơ sở dữ liệu Ởđây model không đơn thuần chỉ là dữ liệu, ứng dụng sẽ buộc phải chạy theo các quytắc đã áp đặt lên dữ liệu đó
View sẽ chịu trách nhiệm tạo ra giao diện người dùng, và giao diện này sẽ dựa trên
model View sẽ lấy dữ liệu từ model và chuyển đổi thành giao diện hiển thị lên chongười dùng Công việc của view là chỉ có hiển thị chứ không xử lý bất kỳ thao tác nàocủa người dùng Một model có thể được truy cập bởi nhiều view
Controller sẽ chịu trách nhiệm vận hành ứng dụng Controller sẽ nhận các sự kiện
từ bên ngoài, thông thường là từ người dùng, sau đó tương tác với model và gọi viewtương ứng để hiển thị
Bất cứ ứng dụng Rails nào cũng có 3 phần model, view và controller Việc kết nốigiữa 3 thành phần này đã được Rails giải quyết tự động, do đó chỉ cần quan tâm đếnviệc phát triển từng thành phần thôi
Trong một ứng dụng Rails, một gói tin HTTP được gửi từ trình duyệt sẽ đượcchuyển tới các router trước tiên, đây là nơi vận chuyển các gói tin HTTP đến cácphương thức nhất định (trong Rails thì phương thức hay hàm còn có tên khác làaction) Phương thức đó sẽ đọc các dữ liệu có trong gói tin và có thể sẽ tương tác vớimodel, hoặc gọi thêm các phương thức/action khác Cuối cùng thì phương thức đầutiên được gọi đó sẽ tính toán ra các dữ liệu khác rồi gửi cho một view nào đó để hiểnthị cho người dùng
Ưu điểm:
- Dễ dàng tìm kiếm, nâng cấp, bảo trì ứng dụng
Trang 23- Tăng tốc độ phát triển dự án.
- View và Model tách biệt nhau
- Có thể sử dụng nhiều techniques trong 1 project
Nhược điểm:
- Tốn nhiều thời gian và gây ra nhiều phức tạp đối với các ứng dụng nhỏ
- Developer cần biết nhiều công nghệ khác nhau để áp dụng vào project
b Tính năng Object Relational Mapping
Rail có tính năng hỗ trợ việc chuyển đối dữ liệu quan hệ sang các đối tượng mộtcách dễ dàng đó là tính năng Object Relational Mapping (ORM)
Các thư viện ORM sẽ làm công việc chuyển đổi các bảng trong CSDL sang cáclớp Ví dụ như trong CSDL có bảng orders thì ORM sẽ tạo một lớp có tên Order trongRuby, các dòng trong bảng sẽ là các đối tượng của lớp đó, các thuộc tính của lớp sẽtương ứng với các cột trong bảng Ngoài ra ORM sẽ định nghĩa các phương thức đểchúng ta có thể đọc ghi dữ liệu một cách dễ dàng
Nếu muốn lấy một mảng bao gồm tất cả user, thay vì phải viết code để khởi tạoliên kết tới database và viết các query như SELECT * FROM users, rồi convert kếtquả đó sang dạng mảng, chỉ cần viết User.all và Active Record sẽ lấy về một mảngbao gồm tất cả các user
Không cần phải quan tâm nhiều tới việc mình sử dụng database gì (nếu thiết lậpchuẩn xác trong file config/database.yml), Active Record đã lo việc đồng nhất xử lý
Trang 24của mình Điều này cũng đồng nghĩa với việc, khi sửa đổi database, không cần thiếtphải chỉnh sửa nhiều code trong ứng dụng mà chỉ là vài dòng trong file thiết lập.
Về cơ bản, các SQL database đều quy định khá chặt chẽ về cấu trúc các bảng dữliệu, được gọi là schema Mỗi khi chúng ta định nghĩa 1 bảng dữ liệu, 1 schema đượcsinh ra để lưu lại cấu trúc của bảng đó Tuy nhiên trong quá trình phát triển dự án,schema cần luôn luôn thay đổi 1 cách linh hoạt Nếu chỉ tiến hành thay đổi tại ActiveRecord, các database engine sẽ báo lỗi do sự sai khác về định nghĩa Lúc này có 2 cách
d Action Pack
Như đã biết, controller sẽ gửi dữ liệu cho view, nhận và xử lý sự kiện từ view, do
đó view và controller khá “thân thiết” với nhau Chính vì vậy mà bộ phận xử lýcontroller và view được gộp lại làm một và được gọi là Action Pack Không nên hiểulầm răng sẽ viết code cho view và controller chung một chỗ, ở đây chẳng qua chỉ làchúng được vận hành bởi cùng một thứ mà thôi
View:
- Trong Rails thì view có nhiệm vụ tạo ra các đoạn code HTML để hiển thị lêntrình duyệt của người dùng, thông thường code HTML này có kèm theo dữ liệuđược tạo ra từ các phương thức trong controller
- Các dữ liệu được tạo ra sẽ được tạo ra từ các template, có thể hình dung giốngnhư là một trình thông dịch nhỏ khác là được Hiện có 3 loại template trongRails là Embedded Ruby (ERb), XML Builder và RJS
Trong đó ERb là phổ biến nhất, code ERb sẽ được nhúng chung với code HTML.Mặc dù code kiểu này rất linh hoạt nhưng đa phần người ta nghĩ rằng việc trộn chungcông việc giữa các thành phần khác nhau là không nên
Controller
Trang 25Phần controller trong Rails là bộ phận trung tâm, có nhiệm vụ xử lý tương tác giữangười dùng, view và model.
Cơ bản thì controller hỗ trợ các tính năng sau:
- Định tuyến (routing) các URL tới các phương thức/hàm/action tương ứng.Ngoài ra controller còn định nghĩa các URL có cấu trúc thân thiện, dễ nhìn+ Quản lý cache, giúp tăng hiệu năng của hệ thống
+ Quản lý các module hỗ trợ, giúp mở rộng các tính năng của template
+ Quản lý session, giúp theo dõi các hoạt động đang diễn ra trên ứng dụng
Ngược lại với dữ liệu, cơ sở dữ liệu bao gồm dữ liệu dược cấu trúc một cách rõràng Một tập hợp dữ liệu không có cấu trúc hệ thống nhất định không được coi là một
cơ sở dữ liệu
b Hệ Quản Trị Cơ Sở Dữ Liệu
Bất cứ cơ sở dữ liệu nào sau khi được tạo ra cũng cần được lưu trữ lại Quá trìnhlưu cơ sở dữ liệu này được thực hiện qua việc sử dụng hệ quản trị cơ sở dữ liệu Hệquản trị cơ sở dữ liệu là chương trình phần mềm giúp thực hiện việc lưu trữ cơ sở dữliệu
Hệ quản trị trị cơ sở dữ liệu khi lưu trữ cơ sở dữ liệu cần đảm bảo được được tínhcấu trúc trong cơ sở dữ liệu, cần phải cung cấp những tính năng:
- Cho phép người dùng tạo ra cơ sở dữ liệu mới thông qua ngôn ngữ định nghĩa
dữ liệu (Data Definition Languages DDFs)
Trang 26liệu (Data Manipulation Languages DMLs)
- Hỗ trợ lưu 1 khối lượng rất lớn dữ liệu mà không gây mất mát và tổn thất thôngtin
- Kiểm soát truy nhập dữ liệu từ nhiều người dùng cung một lúc
Việc sử dụng các phần mềm (hệ quản trị cơ sở dữ liệu) này sẽ giúp các nhà quản trị
hệ thống dễ dàng thực hiện các thao tác như tìm kiếm, lọc, xóa, chỉnh sửa hay tạo mới
dữ liệu trên cơ sở dữ liệu Để làm được điều này trên các hệ quản trị cơ sở dữ liệu cácnhà quản trị hệ thống thường sử dụng ngôn ngữ truy vấn mang tính cấu trúc:Structured Query Language hay SQL
Một hệ quản trị cơ sở dữ liệu (tiếng Anh là database management system hay DBMS)
là một chương trình phần mềm được sử dụng để quản lý cơ sở dữ liệu trên máy tính.Mỗi một DBMS sẽ lưu trữ cơ sở dữ liệu theo các cách khác nhau
MySQL là một hệ quản trị cơ sở dữ liệu Ngoài MySQL ra thì còn một số DBMSkhác như Oracle, PostgreSQL, SQLite…
Các hệ thống web ưa chuộng MYSQL là vì tốc độ xử lý của nó cao, tính dễ sửdụng và thương thích với các hệ điều hành thông dụng hiện nay như Linix, Window,
e MySQL
MySQL là một phần mềm mã nguồn mở và hoàn toàn miễn phí được sử dụng đểquản lý cơ sở dữ liệu (database) trên máy tính MySQL được phát triển, công bố, hỗtrợ bởi MySQL AB, là một công ty của Thụy Điển MySQL có thể được cài đặt trênnhiều nền tảng hệ điều hành khác nhau như Windows, Linux và Mac OS X
Với hiệu suất, độ tin cậy và tính dễ sử dụng, MySQL đã trở thành lựa chọn cơ sở
dữ liệu hàng đầu cho các ứng dụng dựa trên web, được sử dụng bởi các thuộc tính webcấu hình cao bao gồm Facebook, Twitter, YouTube và tất cả những trang web hàngđầu Ngoài ra, nó là một lựa chọn rất phổ biến như cơ sở dữ liệu nhúng, được phânphối bởi hàng ngàn ISV và OEM
MySQL có tính khả chuyển, hoạt động trên nhiều hệ điều hành cung cấp một hệthống lớn các hàm tiện ích rất mạnh Với tốc độ và tính bảo mật cao, MySQL rất thíchhợp cho các ứng dụng có truy cập CSDL trên internet MySQL có nhiều phiên bản chocác hệ điều hành khác nhau: phiên bản Win32 cho các hệ điều hành dòng Windows,
Trang 27Linux, Mac OS X, Unix, FreeBSD, NetBSD, Novell NetWare, SGI Irix, Solaris,SunOS,
MySQL là một trong những ví dụ rất cơ bản về Hệ Quản trị Cơ sở dữ liệu quan hệ
sử dụng Ngôn ngữ truy vấn có cấu trúc (SQL)
MySQL được sử dụng cho việc bổ trợ Ruby, NodeJs, PHP, Perl và nhiều ngôn ngữkhác, làm nơi lưu trữ những thông tin trên các trang web viết bằng Ruby, NodeJs, PHPhay Perl,
MySQL là:
- Một hệ thống cơ sở dữ liệu được sử dụng trên web
- Một hệ thống cơ sở dữ liệu chạy trên một máy chủ
- Được phát triển, phân phối và hỗ trợ bởi Oracle Corporation
- Được đặt tên theo người đồng sáng lập của Monty Widenius: My
Dữ liệu trong cơ sở dữ liệu MySQL được lưu trữ trong bảng Bảng là một tập hợpcác dữ liệu liên quan, và nó bao gồm các cột và các hàng
1.2.4 Các công nghệ đi kèm khi triển khai hệ thống
Trong khi thực hiện hệ thống, em đã thực sử dụng một số gem phổ biến của Rails
để triển khai vào project của mình như:
a Gem cancancan
Tham khảo: https://github.com/CanCanCommunity/cancancan
CanCanCan là một thư viện authorization cho Ruby> = 2.2.0 và Ruby on Rails> =4.2 hạn chế những tài nguyên mà một người dùng đã cho phép được truy cập
Tất cả các điều khoản có thể được xác định trong một hoặc nhiều tệp ability và
Trang 28không bị duplicated trên controllers, views và truy vấn cơ sở dữ liệu, giữ logicpermissions ở một nơi.
Bao gồm hai phần chính:
- Thư viện định nghĩa authorization: cho phép bạn xác định các quy tắc, chongười dùng, để truy cập các đối tượng khác nhau và cung cấp cho helpers đểkiểm tra các quyền đó
- Controller helpers: giúp đơn giản hóa mã trong Rails Controllers bằng cáchthực hiện loading và kiểm tra quyền của các models trong controllers
b Gem devise
Tham khảo: https://github.com/plataformatec/devise
Devise là một giải pháp xác thực linh hoạt cho Rails dựa trên Warden
- Là Rack based;
- Là một giải pháp MVC hoàn chỉnh dựa trên Rails engines;
- Cho phép bạn có nhiều models đăng nhập cùng một lúc;
- Dựa trên khái niệm mô đun: chỉ sử dụng những gì bạn thực sự cần
Devise cung cấp 10 mô-đun khác nhau, tùy vào sự cần thiết cho ứngdụng của mà có thể chọn 1 vài mô-đun:
- Database Authenticatable: Mã hóa và lưu trữ một mật khẩu vào cơ sở dữ liệu đểxác nhận tính xác thực của người dùng trong khi đăng nhập
- Omniauthable: Giúp cho OmniAuth có thể hỗ trợ cho Devise Người dùng ứngdụng của bạn sẽ có thể đăng nhập bằng tài khoản như Facebook, Twitter vàGoogle
- Confirmable: Cho phép việc gởi các email với các chỉ dẫn sẽ giúp xác nhận mộttài khoản
- Recoverable: Mô-đun này giúp những khi người dùng quên mật khẩu và cầnphải khôi phục nó Với điều này, thì người dùng sẽ có thể thiết lập lại mật khẩu
- Registerable: Xử lý quá trình đăng ký của người dùng Nó cũng cho phép ngườidùng chỉnh sửa và xoá các tài khoản của họ
Trang 29- Rememberable: Mô-đun này làm cho ứng dụng của bạn có thể nhớ một ngườidùng đã đăng nhập bằng cách lưu trữ một cookie.
- Trackable: Giúp theo dõi tài khoản đăng nhập, mốc thời gian, và địa chỉ IP
- Timeoutable: Chịu trách nhiệm cho một phiên hết thời hạn mà đã không đượckích hoạt trong một khoảng thời gian
- Validatable: Với mô-đun này, email và mật khẩu sẽ được kiểm tra tính hợp lệ
- Lockable: Cung cấp một lớp phụ của bảo mật, khi được kích hoạt, một tàikhoản có thể bị khoá sau một số lần cố gắng đăng nhập thất bại
c Gem carriwave
Tham khảo: https://github.com/carrierwaveuploader/carrierwave
Gem này cung cấp một cách đơn giản và cực kỳ linh hoạt để tải lên các tệp từ các ứng dụng Ruby Nó hoạt động tốt với các ứng dụng web dựa trên Rack
Trang 30CHƯƠNG 2: PHÂN TÍCH THIẾT KẾ HỆ THỐNG
Dựa vào kết quả của quá trình tìm hiểu yêu cầu ở chương 1, chương này đồ án sẽ đisâu hơn vào phân tích các yêu cầu của hệ thống báo gồm xác định ca sử dụng nghiệp
cụ, xây dựng kịch bản chi tiết cho các ca sử dụng, xây dựng biểu đồ lớp, biểu đồ tuần
Giao diện phải đảm bảo:
- Trang chủ: Giao diện bắt mắt, hiển thị màu sắc phù hợp, hiển thị thông tin
chung của công ty và cách thức liên hệ, bố trí khoa học
- Giao diện chung: Thiết kế đơn giản, dễ hiểu, dễ sử dụng, thân thiện với người
dùng
- Tương thích với mọi trình duyệt: Người dùng có thể truy nhập vào trang web
với mọi trình duyệt mà họ dùng
2.1.2 Các tác nhân tham gia hệ thống
Trong hệ thống có 3 tác nhân than gia, mỗi tác nhân có tài khoản và các quyền truynhập khác nhau Tùy vào quyền hạn của mình mà mỗi tác nhân sẽ có thể thực hiện cácchức năng của mình
a Admin
Là người quản trị hệ thống, người có toàn quyền với hệ thống, quản lý toàn bộngười dùng và các tài nguyên khác của hệ thống
b Trainer
Trang 31Là người hướng dẫn các thực tập sinh, trực tiếp phụ trách các thực tập sinh và cácvấn đề liên quan đến các khóa học Nhiệm vụ của người hướng dẫn là nhận danh sáchcác thực tập sinh từ phòng nhân sự và tạo khóa học cho các thực tập sinh đó.
a Chức năng dành cho người dùng không có tài khoản
Người dùng không có tài khoản có thế:
Xem thông tin công ty: Người dùng không có tài khoản có thể xem các thông tin
của công ty thông qua trang Home của hệ thống
Liên hệ: Người dùng có thể gửi liên hệ cho quản trị hệ thống thông qua chức năng
liên hệ được hiển thị ở trang chủ
b Chức năng chung dành cho người dùng trong hệ thống
Các chức năng chung của người dùng trong hệ thống bao gồm:
Đăng nhập: Mọi người dùng cần có tài khoản để có thể đăng nhập hệ thống Thực
tập sinh cần nhận tài khoản được cấp từ người hướng dẫn cấp, người hướng dẫn nhậntài khoản từ admin hoặc từ người hướng dẫn khác Tài khoản chính là email của ngườidùng và mật khẩu đăng nhập được lấy từ ngày sinh của thực tập sinh
Đăng xuất: Người dùng có thể đăng xuất tài khoản của mình.
Lấy lại mật khẩu: Trường hợp quên mật khẩu người dùng có thể thực hiện lấy lạimật khẩu của mình
Xem thông tin cá nhân: Sau khi đăng nhập hệ thống người dùng có thể xem các
thông tin các nhân của mình
Sửa thông tin cá nhân: Sau khi đăng nhập, người dùng có thể thực hiện thay đổi
các thông tin cá nhân
c Chức năng dành cho thực tập sinh
Xem các khóa học tham gia: Sau khi đăng nhập, thực tập sinh xem được các
thông tin khóa học mình đã và đang tham gia
2.2 Xác định các ca sử dụng nghiệp vụ
Người dùng cần có tài khoản để đăng nhập vào hệ thống
2.2.1 Danh sách các ca sử dụng nghiệp vụ
Trang 32Bảng 2.1: Danh sách các ca sử dụng nghiệp vụ của người dùng không có tài khoảnST
1 Đăng nhập Người dùng có tài khoản đăng nhập hệ thống
2 Đăng xuất Người dùng đăng xuất tài khoản
3 Reset password Người dùng gửi yêu cầu cấp lại mật khẩu
4 Xem profile cá nhân Người dùng xem profile của mình
5 Thay đổi password Người dùng thay đổi password đăng nhập tài khoản
của mình
6 Thay đổi avatar Người dùng thay đổi avatar của mình
7 Sửa profile Người dùng sửa profile cá nhân của mình
Bảng 2.3: Danh sách các ca sử dụng nghiệp vụ của thực tập sinh
ST
T
1 Xem Khóa học tham gia Trainee xem chi tiết các khóa học mình đã tham gia
2 Xem Chủ đề trong khóa
Trang 33cùng khóa mình
5 Xem profile của Trainee
cùng khóa
Xem profile các Trainee học cùng khóa với mình
6 Tạo mới report Tạo report hàng ngày
9 Xem chi tiết report Xem report của mình
10 Like report Thể hiện yêu thích với report của mình
12 Nhận thông báo Nhận thông báo khi có bình luận hay ai đó yêu thích
2 Sửa Course Sửa khóa học đã thêm mà chưa finish
4 Xem Subject của Course Xem chủ đề của các khóa học
5 Xem các User của
Course
Xem các Trainer và Trainee trong các khóa học
6 Import file User Import file CSV hoặc Exel thêm Trainer, Trainee
7 Thêm Trainer, Trainee Thêm Trainer, Trainee
8 Xóa Trainee Xóa tài khoản của Trainee
9 Xem profile Xem profile của Trainer, Trainee
Trang 3411 Xam danh sách User Xem danh sách các Trainee, Trainer, Admin theo
nhóm
12 Thêm mới Subject Tạo mới chủ đề lớn, nhỏ
13 Sửa Subject Sửa chủ đề lớn, nhỏ
14 Xóa Subject Xóa chủ đề lớn, nhỏ
15 Comment Report Bình luận báo cáo của thực tập sinh
16 Sửa Comment Report Sửa bình luận của chính mình
17 Xóa Comment Xóa bình luận của chính mình
18 Like Report Thể hiện yêu thích với báo cáo của thực tập sinh
19 Unlike Report Bỏ yêu thích report
26 Xóa Course Subject Xóa một chủ đề vừa tạo trong 1 khóa học
27 Sửa Course Subject Sửa chủ đề trong khóa học
28 Thêm Subject detail Thêm chi tiết chủ đề
29 Sửa Subject detail Sửa nội dung chi tiết chủ đề
30 Xóa Subject detail Xóa chi tiết chủ đề
Bảng 2.5: Danh sách các ca sử dụng nghiệp vụ của Quản trị hệ thống
Trang 352 Sửa Report Sửa Report của Trainer
3 Import User Import file CSV hoắc Exel User
7 Sửa comment Sửa comment của người dùng
8 Xóa comment Xóa comment của người dùng