Mặc dù vậy, nhưng ta có thể nhận thấy rõ những bất cập chung trong các hệ thống quản lý tại các trường giáo dục hiện nay là chưa đi sâu vào hỗ trợ sinh viên về việc tiếp cận thông tin mộ
Trang 1Giảng viên hướng dẫn : TS PHẠM ANH PHƯƠNG
Lớp sinh hoạt : 13CNTT
ĐÀ NẴNG, 04/2017
Trang 2động viên từ rất nhiều phía Tất cả điều đó đều đã tiếp thêm cho em rất nhiều động lực để giúp em có thể cố gắng hoàn thành tốt đợt thực tập tốt nghiệp này Với tất cả sự cảm kích và trân trọng, em xin được gửi lời cảm ơn chân thành đến tất cả mọi người
Lời đầu tiên, em xin phép được gửi lời cảm ơn đến Ban lãnh đạo trường Đại học Sư phạm Đà Nẵng, lãnh đạo khoa Tin học đã tổ chức các buổi giao lưu
doanh nghiệp, cung cấp những thông tin thật bổ ích dành cho chúng em, giúp em định hướng và có cơ hội tìm được đơn vị thực tập tốt nhất cho riêng mình
Em cũng xin phép được gởi lời cảm ơn đến Ban lãnh đạo Công ty TNHH & Thương mại AsNet Đà Nẵng đã tạo điều kiện cho em được tham gia thực tập tại đơn vị, cũng như đã cung cấp tất cả các cơ sở vật chất và trang thiết bị hiện đại cho em sử dụng tại Công ty trong thời gian vừa qua Xin cảm ơn các anh chị trong Công ty, đặc biệt là anh Phạm Hoàng Trung đã tận tình hướng dẫn và giúp
đỡ em rất nhiều trong suốt thời gian thực tập
Em xin chân thành cảm ơn thầy TS Phạm Anh Phương và các thầy cô giáo của khoa Tin học, trường Đại học Sư phạm Đà Nẵng, xin cảm ơn quý thầy cô đã tận tình dạy bảo, giúp đỡ em rất nhiều trong suốt thời gian em học tại trường cũng như trong đợt thực tập vừa qua
Xin trân trọng cảm ơn!
Đà Nẵng, ngày 10 tháng 04 năm 2017
Sinh viên thực hiện
Trang 31 Những nội dung trong báo cáo này là do tôi thực hiện dưới sự hướng dẫn trực tiếp của các anh chị trong Công ty TNHH & Thương mại AsNet Đà Nẵng
2 Mọi tham khảo dùng trong báo cáo này đều được trích dẫn rõ ràng tên tác giả, tên công trình, thời gian, địa điểm công bố
3 Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá, tôi xin chịu hoàn toàn trách nhiệm
Sinh viên thực hiện
Phan Văn Vũ
Trang 4………
………
………
………
………
………
………
………
………
………
………
………
………
………
Đà Nẵng, ngày tháng 04 năm 2017
Phan Văn Vũ
Trang 5………
………
………
………
………
………
………
………
………
………
………
………
………
………
Đà Nẵng, ngày tháng 04 năm 2017
Trang 6………
………
………
………
………
………
………
………
………
………
………
………
………
………
Đà Nẵng, ngày tháng 04 năm 2017
Ký tên
Trang 7MỤC LỤC
LỜI CẢM ƠN
LỜI CAM ĐOAN
MỤC LỤC i
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT iv
DANH MỤC CÁC HÌNH v
DANH MỤC BẢNG vii
MỞ ĐẦU 1
1 Lý do chọn đề tài 1
2 Mục tiêu nghiên cứu 2
3 Đối tượng nghiên cứu 2
4 Giới hạn và phạm vi nghiên cứu 2
5 Phương pháp nghiên cứu và lựa chọn công nghệ 2
6 Bố cục đề tài 3
CHƯƠNG 1 TỔNG QUAN VỀ CÔNG NGHỆ LẬP TRÌNH WEB 4
1.1 Kỹ thuật tương tác người dùng (Front-End) 4
1.1.1 HTML và HTML5 4
1.1.2 CSS và Bootstrap 10
1.1.3 JavaScript 11
1.1.4 TypeScript 12
1.1.5 AngularJS 2 13
1.1.6 InvisionApp 15
Trang 81.2 Kỹ thuật tương tác dữ liệu (Back-End) 16
1.2.1 Cơ sở dữ liệu PostgreSQL 16
1.2.2 Python 17
1.2.3 Django 18
CHƯƠNG 2 PHÂN TÍCH THIẾT KẾ HỆ THỐNG 20
2.1 Đặt vấn đề 20
2.2 Yêu cầu chức năng 20
2.3 Yêu cầu phi chức năng 21
2.4 Thiết kế hệ thống 22
2.4.1 Sơ đồ ca sử dụng (Use-case) 22
2.4.2 Đặc tả ca sử dụng chung cho tất cả loại người dùng 23
2.4.3 Đặc tả ca sử dụng riêng cho quản trị viên 28
2.4.4 Đặc tả ca sử dụng riêng cho nhà tuyển dụng 29
2.4.5 Đặc tả ca sử dụng riêng cho người dùng bình thường 30
2.4.6 Thiết kế cơ sở dữ liệu 31
2.4.7 Sơ đồ lớp (Class-Diagram) 44
2.4.8 Sơ đồ hoạt động (Activity Diagram) 45
2.4.9 Sơ đồ tuần tự (Sequence Diagram) 46
CHƯƠNG 3 XÂY DỰNG HỆ THỐNG QUẢN LÝ THÔNG TIN TUYỂN DỤNG THỰC TẬP 48
3.1 Môi trường triển khai 48
3.2 Kết quả và chức năng của chương trình 48
3.2.1 Giao diện trang chủ 48
Trang 93.2.2 Giao diện trang đánh giá nhà tuyển dụng 49
3.2.3 Giao diện trang kinh nghiệm phỏng vấn 50
3.2.4 Giao diện biểu mẫu đăng nhập, đăng ký người dùng 51
3.2.5 Giao diện trang đăng tin tuyển dụng khi chưa đăng nhập 51
3.2.6 Giao diện trang đăng tin tuyển dụng khi đã đăng nhập 52
3.2.7 Giao diện trang đăng tin khi người dùng là nhà tuyển dụng 52
3.2.8 Giao diện trang đăng bài viết đánh giá nhà tuyển dụng 53
3.2.9 Giao diện trang đăng bài viết về kinh nghiệm phỏng vấn 53
3.2.10 Giao diện trang duyệt yêu cầu của Quản trị viên 54
3.2.11 Giao diện trang xem báo cáo của Quản trị viên 54
KẾT LUẬN 55
1 Các kết quả đạt được 55
2 Hạn chế 55
3 Hướng phát triển 55
TÀI LIỆU THAM KHẢO 56
Trang 10DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT
STT Ký hiệu viết tắt Tên của ký hiệu viết tắt
Trang 112.1 Sơ đồ Use Case mô tả chức năng chung của Quản trị viên,
Nhà quản trị và Người dùng bình thường 22
2.2 Sơ đồ Use Case mô tả chức năng riêng của Quản trị viên 22 2.3 Sơ đồ Use Case mô tả chức năng riêng của Nhà tuyển dụng 23
2.4 Sơ đồ Use Case mô tả chức năng riêng của Người dùng bình
Trang 122.10 Sơ đồ tuần tự của hành động thêm bài viết 47
3.2 Giao diện trang đánh giá nhà tuyển dụng 49
3.3 Giao diện trang kinh nghiệm phỏng vấn 50
3.4 Giao diện biểu mẫu đăng nhập, đăng ký người dùng 51
3.5 Giao diện trang đăng tin tuyển dụng khi chưa đăng nhập 51
3.6 Giao diện trang đăng tin tuyển dụng khi đã đăng nhập 52
3.7 Giao diện trang đăng tin tuyển dụng khi người dùng là nhà
3.8 Giao diện trang đăng bài viết đánh giá nhà tuyển dụng 53
3.9 Giao diện trang đăng bài viết về kinh nghiệm phỏng vấn 53
3.10 Giao diện trang duyệt yêu cầu của Nhà tuyển dụng 54
3.11 Giao diện trang xem báo cáo của Quản trị viên 54
Trang 13DANH MỤC BẢNG
1.1 Bảng mô tả các thẻ thông dụng trong HTML 8
2.1 Bảng mô tả luồng sự kiện chính của Use-case đăng
2.7 Bảng mô tả luồng sự kiện chính của Use-case duyệt
2.8 Bảng mô tả luồng sự kiện chính của Use-case xem số
2.9 Bảng mô tả luồng sự kiện chính của Use-case đăng
Trang 142.10 Bảng mô tả luồng sự kiện chính của Use-case đăng ký
nhà tuyển dụng và gửi yêu cầu cho quản trị viên 30
Trang 15MỞ ĐẦU
1 Lý do chọn đề tài
Với sự phát triển thần kì của nền công nghệ thông tin suốt vài thập niên qua,
đã giúp con người thay đổi cách tiếp cận với hàng loạt vấn đề trong cuộc sống, mọi thứ được thực thi một cách đầy hiệu quả và chính xác hơn Việc áp dụng công nghệ thông tin vào lĩnh vực giáo dục để phục vụ công tác dạy học là một vấn đề tất yếu và vô cùng quan trọng
Không thể phủ nhận việc áp dụng công nghệ thông tin vào lĩnh vực giáo dục
là một vấn đề nan giải, cần rất nhiều thời gian và sự đầu tư sâu vào lĩnh vực này mới có thể cho ra sản phẩm tốt để sử dụng Nhưng với sự phát triển không ngừng của nền công nghệ thông tin cùng với sự đi lên của chất lượng lập trình viên hiện nay, việc thực hiện ý tưởng để làm ra sản phẩm không còn khó khăn nữa Bằng chứng là trong lĩnh vực giáo dục hiện nay, có đến hơn 80% các trường giáo dục đều áp dụng công nghệ thông tin vào việc quản lý và dạy học Mặc dù vậy, nhưng
ta có thể nhận thấy rõ những bất cập chung trong các hệ thống quản lý tại các trường giáo dục hiện nay là chưa đi sâu vào hỗ trợ sinh viên về việc tiếp cận thông tin một cách trực tiếp tới các nhà tuyển dụng cần nhân lực để thu thập được những thông tin tốt hơn,… Đa số các bạn sinh viên muốn thực tập phải tìm kiếm thông tin trên các trang mạng xã hội lớn, nên việc tiếp cận những thông tin cần thiết gặp rất nhiều khó khăn vì dữ liệu đăng tải những thông tin không liên quan là vô cùng lớn
Vì vậy, em quyết định chọn đề tài “Xây dựng hệ thống quản lý thông tin tuyển dụng thực tập” Để giúp các bạn sinh viên trong trường tìm kiếm thông tin một cách khoa học, chính xác về nhu cầu của mình
Trang 162 Mục tiêu nghiên cứu
- Xây dựng được ứng dụng và nó sẽ là sự lựa chọn trong chiến lược phát triển nhân lực của các nhà tuyển dụng
- Cung cấp đầy đủ, chính xác thông tin tuyển dụng của các doanh nghiệp có nhu cầu tuyển dụng tới các bạn sinh viên
3 Đối tượng nghiên cứu
- Sinh viên các trường Đại học và Cao đẳng có nhu cầu tìm kiếm thông tin thực tập
- Các nhà tuyển dụng có nhu cầu tuyển nhân viên thực tập
4 Giới hạn và phạm vi nghiên cứu
- Nghiên cứu về AngularJS 2
- Nghiên cứu về ngôn ngữ lập trình Python
- Xây dựng sản phẩm: hệ thống quản lý thông tin tuyển dụng thực tập
5 Phương pháp nghiên cứu và lựa chọn công nghệ
- Thực hiện phương pháp điều tra khảo sát về việc tìm kiếm thông tin thực tập của các bạn sinh viên trên địa bàn Đà Nẵng
- Thực hiện phương pháp tổng kết kinh nghiệm, bắt đầu từ việc thống kê số lượng khảo sát trên thực tế để rút ra kết luận
- Tìm hiểu, khảo sát các ứng dụng sử dụng AngularJS 2 và Python, nghiên cứu và ứng dụng vào đề tài
- Đề xuất các chức năng cho ứng dụng, cũng như nhận phản hồi chức năng
từ Giảng viên hướng dẫn, từ đó đưa ra các giải pháp hợp lý, phù hợp với xu thế của phát triển ứng dụng
Trang 176 Bố cục đề tài
Ngoài phần mở đầu và kết luận, bố cục của đề tài bao gồm 3 chương:
Chương 1: Tổng quan về công nghệ lập trình web
Phần này trình bày về những kỹ thuật sẽ sử dụng để xây dựng ứng dụng Chương 2: Phân tích thiết kế hệ thống quản lý thông tin tuyển dụng
Phần này trình bày về việc phân tích thiết kế hệ thống và phân tích cơ sở dữ liệu
Chương 3: Xây dựng hệ thống quản lý thông tin tuyển dụng thực tập
Phần này trình bày những kết quả đã đạt được
Đây là một đề tài được áp dụng những công nghệ mới nên trong quá trình nghiên cứu có thể có nhiều sai sót Tôi mong nhận được sự đóng góp của mọi người
Trang 18CHƯƠNG 1 TỔNG QUAN VỀ CÔNG NGHỆ LẬP TRÌNH WEB 1.1 Kỹ thuật tương tác người dùng (Front-End)
- Là tất cả mọi thứ chúng ta nhìn thấy được khi điều hướng trên Internet, từ phông chữ, màu sắc cho đến các bảng lựa chọn xổ xuống và các thanh trượt, bao
gồm nhiều kỹ thuật được đề cập dưới đây:
1.1.1 HTML và HTML5
1.1.1.1 Giới thiệu
- HTML (viết tắt cho HyperText Markup Language, hay là "Ngôn ngữ Đánh dấu Siêu văn bản") là một ngôn ngữ đánh dấu được thiết kế ra để tạo nên các website với các thông tin được trình bày trên World Wide Web HTML được định nghĩa như là một ứng dụng đơn giản của SGML và được sử dụng trong các tổ chức cần đến các yêu cầu xuất bản phức tạp HTML đã trở thành một chuẩn Internet do
tổ chức World Wide Web Consortium (W3C) duy trì Phiên bản chính thức mới nhất của HTML là HTML 4.01 (1999) Sau đó, các nhà phát triển đã thay thế nó bằng XHTML
- HTML5 là một ngôn ngữ cấu trúc và trình bày nội dung cho World Wide Web Đây là phiên bản thứ năm của ngôn ngữ HTML - được tạo ra năm 1990 và chuẩn hóa như HTML4 năm 1997 - và xuất hiện vào tháng 12 năm 2012, là một ứng viên được giới thiệu bởi World Wide Web Consortium (W3C) Mục tiêu cốt lõi khi thiết kế ngôn ngữ là cải thiện khả năng hỗ trợ cho đa phương tiện mới nhất trong khi vẫn giữ nó dễ dàng đọc được bởi con người và luôn hiểu được bởi các thiết bị và các chương trình máy tính như trình duyệt web, phân tích cú pháp, v.v HTML5 đã giữ lại những đặc điểm cơ bản của HTML4 và bổ sung thêm các đặc
tả nổi trội của XHTML, DOM cấp 2, đặc biệt là JavaScript
Trang 19- Vậy ta có thể nhìn thấy rõ HTML5 là phiên bản thứ 5 đã được cập nhật gần đây, vậy HTML5 có đặc trưng gì nổi bật hơn so với HTML? Đúng vậy, HTML5
là phiên bản tiếp theo sau HTML 4.01, nó như là một phản ứng để đáp lại phê bình rằng HTML là một hỗn hợp các tính năng với các thông số kỹ thuật khác nhau và
có nhiều lỗi cú pháp trong các văn bản web HTML5 được các nhà phát triển biết đến và sử dụng rộng rãi hơn và có thể làm được rất nhiều điều thú vị hơn khi tiến hành xây dựng một website Điều đặc biệt hơn là HTML5 là một ứng cử viên tiềm năng cho nền tảng ứng dụng di động trong thời kỳ bùng nổ việc sử dụng thiết bị
di động trở nên phổ biến
- Cùng với sự phát triển đáng kể đó, HTML5 cũng vẫn còn những thiếu sót nhất đinh như: vẫn còn là một thuật ngữ khá lỏng lẻo và tham chiếu đến một số công nghệ liên quan Nó kế thừa đa số các tính năng tốt nhất của HTML và bổ
sung thêm một số thẻ rất đáng được các nhà phát triển quan tâm
1.1.1.2 Cú pháp HTML
- Thẻ HTML dùng để viết lên những thành tố HTML, được bao quanh bởi
hai dấu bé hơn < và > lớn hơn
- Những thẻ HTML thường có một cặp giống như <b> và </b>, trong đó thẻ
Trang 20- Cấu trúc của một tài liệu HTML gồm có 3 phần cơ bản:
Phần <html>…</html> chứa các mã và thẻ con nằm bên trong của
HTML
Phần <head>…</head> nằm bên trong thẻ <html>…</html> và nằm
sau thẻ <head>…</head>, chứa nội dung trang web
Cấu trúc được thể hiện như sau:
Hình 1.1 Cấu trúc của một tài liệu HTML
<body> Xác định phần thân của văn bản HTML
<br /> Ngắt một đoạn text xuống hàng
Trang 21<head> Xác định, khai báo thông tin về văn bản HTML
<hr /> Tạo một đường ngang
<html> Xác định một văn bản html
<img /> Hiển thị một image
<input /> Xác định một điều khiển nhập
<label> Tạo một nhãn cho thành phần input
Trang 22<span> Được sử dụng để nhóm các inline trong văn bản HTML
<strong> Hiển thị text đậm (mục đích nhấn mạnh)
<style> Xác định thông tin kiểu kiến trúc cho văn bản
<table> Xác định một bảng
<tbody> Xác định một nhóm nội dung của bảng
<td> Xác định một phần tử nội dung của bảng
<textarea> Xác định một vùng điều khiển nhập text
<tfoot> Một nhóm nội dung cuối của bảng
<th> Xác định một phần tử tiêu đề của bảng
<thead> Một nhóm phần tử tiêu đề của bảng
<title> Xác định một tiêu đề của văn bản HTML
<tr> Xác định một hàng của bảng
<ul> Xác định danh sách không thứ tự
Bảng 1.1 Bảng mô tả các thẻ thông dụng trong HTML
Trang 23o <article>: Đánh dấu một bài viết, một bình luận hoặc một thông báo
o <aside>: Đánh dấu nội dung ngoài lề của một trang web, ví dụ như một thanh bên trái hoặc phải
o <nav>: Thanh điều hướng hoặc bảng kê (menu) giờ có thể được đặt trong thẻ này, nó sẽ tự động tạo ra cho ta một danh sách trông giống như một thanh điều hướng thực sự
o <section>: Với cặp thẻ này, ta có thể định nghĩa bất kỳ phân vùng nào trên trang web của mình Nó cũng khá giống so với thẻ <div>
- Các phần tử nội tuyến (Inline elements):
o datetime: Trình duyệt hiển thị dạng ngày tháng
o datetime-local: Trình duyệt hiển thị dạng ngày tháng theo vùng
o date: Trình duyệt hiển thị dạng ngày
o month: Trình duyệt hiển thị dạng tháng
o week: Trình duyệt hiển thị theo tuần
o time: Trình duyệt hiển thị theo thời gian
o number: Trình duyệt hiển thị theo dạng số
o range: Trình duyệt hiển thị theo dạng dãy số
o email: Trình duyệt hiểu đúng dữ liệu liệu nhập vào là email
Trang 24- <canvas>: Kết hợp với JavaScript, tạo một vùng có thể vẽ đồ họa
- <video>: Đính kèm đoạn phim (video)
- <audio>: Đính kèm âm thanh
- Geolocation: Định vị – Một tính năng quan trọng sẽ được sử dụng nhiều trong các ứng dụng web cho điện thoại di động, tính năng định vị địa lý cho phép các trang web xác định vị trí người sử dụng, hoặc bằng GPS (trong điện thoại di động, iPad, vv…), hoặc bởi địa chỉ giao thức Internet (IP Address) dành cho desktop và cũng thông qua Wi-Fi và Bluetooth
1.1.2 CSS và Bootstrap
- CSS là một ngôn ngữ được sử dụng để tìm và định dạng lại các phần tử được
tạo ra bởi các ngôn ngữ đánh dấu (như HTML, HTML5) Có thể hiểu đơn giản rằng, nếu HTML đóng vai trò định dạng các phần tử trên website như việc tạo ra các đoạn văn bản, các tiêu đề, bảng, … thì CSS sẽ giúp ta có thể thêm một chút
“phong cách” vào các phần tử HTML đó như đổi màu sắc trang, đổi màu chữ, thay đổi cấu trúc, … rất nhiều
- Phương thức hoạt động của CSS là sẽ tìm dựa vào các vùng chọn, vùng chọn có thể là tên một thẻ HTML, tên một ID, class hay nhiều kiểu khác Sau đó
là CSS sẽ áp dụng các thuộc tính cần thay đổi lên vùng chọn đó
- Bootstrap là một framework cho phép thiết kế website đáp ứng (response) nhanh hơn và dễ dàng hơn Bootstrap bao gồm các mẫu HTML, mẫu CSS và JavaScript (được nêu ra ở phần tiếp theo) tạo ra những cái cơ bản có sẵn như: typography, forms, buttons, tables, navigation, modals, image carousels (đã nêu ra
ở phần HTML và HTML5) và nhiều thứ khác Trong bootstrap có thêm các phần
bổ trợ (plugin) JavaScript trong nó Giúp cho việc thiết kế reponsive của ta dễ dàng và nhanh chóng hơn Bootstrap đơn giản vì được căn cứ trên HTML, CSS và
Trang 25JavaScript chỉ cần có kiến thức cơ bản thì có thể sử dụng bootstrap tốt, tích hợp sẵn tính năng đáp ứng: Bootstrap xây dựng sẵn reponsive CSS trên các thiết bị phones, tablets, và desktops
1.1.3 JavaScript
- JavaScript là một ngôn ngữ lập trình kịch bản dựa trên hướng đối tượng, được sử dụng rộng rãi cho các trang web Có những đặc tính cơ bản nhất bao gồm: đơn giản, động (Dynamic) và hướng đối tượng (Object Oriented)
- Các lợi thế của việc sử dụng kỹ thuật JavaScript:
o Sự tương tác server trở nên ít hơn: ta có thể xác thực đầu vào của người sử dụng trước khi gửi yêu cầu đến máy chủ Vì vậy, sẽ làm server chịu tải ít hơn
o Phản hồi ngay lập tức tới khách truy cập: ta không phải chờ cho một trang web tải lại để thấy xem ta đã quên nhập cái gì đó
o Khả năng tương tác tăng lên: ta có thể tạo các giao diện mà phản ứng lại khi người sử dụng rê chuột qua chúng hoặc kích hoạt thông qua bàn phím
o Giao diện phong phú hơn: ta có thể sử dụng JavaScript để bao gồm những mục như các thành phần kéo (Drag), thả (Drop) và các con trượt (Slider) để cung cấp một giàu diện giàu tính năng tới khách truy cập vào website của ta
Trang 261.1.4 TypeScript
1.1.4.1 Giới thiệu
- TypeScript là một dự án mã nguồn mở được phát triển bởi Microsoft, nó có thể được coi là một phiên bản nâng cao của JavaScript bởi việc bổ sung tùy chọn kiểu tĩnh và lớp hướng đối tượng mà điều này không có ở JavaScript
- Những ưu điểm mà TypeScript mang lại:
o Dễ phát triển dự án lớn: Với việc sử dụng các kỹ thuật mới nhất và lập trình hướng đối tượng nên TypeScript giúp chúng ta phát triển các dự án lớn một cách dễ dàng
o Nhiều Framework lựa chọn: Hiện nay các JavaScript Framework đã dần khuyến khích nên sử dụng TypeScript để phát triển, ví dụ như AngularJS 2.0 và Ionic 2.0
o Hỗ trợ các tính năng của JavaScript phiên bản mới nhất: TypeScript luôn đảm bảo việc sử dụng đầy đủ các kỹ thuật mới nhất của JavaScript, ví dụ như version hiện tại là ECMAScript 2015 (ES6)
o Là mã nguồn mở: TypeScript là một mã nguồn mở nên bạn hoàn toàn
có thể sử dụng mà không mất phí, bên cạnh đó còn được cộng đồng hỗ trợ
o TypeScript là Javscript: Bản chất của TypeScript là biên dịch tạo ra các đoạn mã JavaScript nên ta có thể chạy bất kì ở đâu miễn ở đó có hỗ trợ biên dịch JavaScript Ngoài ra ta có thể sử dụng trộn lẫn cú pháp của JavaScript vào bên trong TypeScript, điều này giúp các lập trình viên tiếp cận TypeScript dễ dàng hơn
Trang 27- AngularJS là một khung công việc (framework) JavaScript, có thể coi như
là một thư viện JavaScript được đóng gói và xây dựng nhằm dễ dàng tái sử dụng
và xây dựng các ứng dụng có quy mô lớn cần yếu tố tổ chức và quy chuẩn AngularJS 1.x được khai sinh từ năm 2009 với sự đỡ đầu và phát triển của Google,
vì thế mà nó ngày một khẳng định được xu thế một cách nhanh chóng hơn các JavaScript framework cùng thời Với bản chất là mã nguồn mở đúng nghĩa,
Trang 28triển, đội ngũ phát triển AngularJS đã cho ra mắt AngularJS phiên bản thứ 2 kết hợp với TypeScript từ Mircosoft để trở nên hoàn thiện hơn về cơ cấu tổ chức ứng dụng, cũng như tốc độ xử lý và hiệu năng khi sử dụng
- AngularJS 2 thích hợp xây dựng ứng dụng theo mô hình ứng dụng trang đơn Mô hình ứng dụng một trang duy nhất, các phân bố dữ liệu đều được truyền nhận âm thầm với kỹ thuật JavaScript và XML không đồng bộ kết hợp API tương tác với web API Framework này được thế hệ web 2.0 phát triển khá mạnh ở nước ngoài, tuy nhiên ở Việt Nam thì vẫn chưa thông dụng lắm
1.1.5.2 Các đặc tính của AngularJS 2
- AngularJS 2 là một framework phát triển dựa trên JavaScript để tạo các ứng dụng web phong phú AngularJS thường dùng để phát triển frontend thông qua các API để gọi dữ liệu, sử dụng mô hình MVC rất mạnh mẽ Mã nguồn AngularJS
tự động sửa lỗi với các trình duyệt khác nhau nên ta không cần phải lo lắng về vấn
đề tương thích trình duyệt
1.1.5.3 Các thành phần chính của AngularJS 2
Hình 1.4 Thành phần chính của AngularJS 2
Trang 291.1.6 InvisionApp
1.1.6.1 Giới thiệu
- Cách tốt nhất để trao đổi về thiết kế với nhiều đồng nghiệp và khách hàng không ở đâu khác mà chính là sử dụng InvisionApp vào việc thiết kế sản phẩm Khoảng cách không còn là vấn đề quan trọng nữa Chúng ta có thể làm việc trực tiếp với những lập trình viên giỏi từ mọi nơi, hay chỉ đơn giản là ngồi tại Công ty
và thảo luận với các đồng nghiệp đang đi du lịch ở nước ngoài về những bản thiết
kế
- Không chỉ vậy, ta còn có thể tạo những tương tác cho bản thiết kế của mình
để kiểm tra mức độ dễ sử dụng của ứng dụng
1.1.6.2 Ví dụ
Hình 1.5 Bản thiết kế trang chủ website
Trang 301.2 Kỹ thuật tương tác dữ liệu (Back-End)
- Nếu chỉ sử dụng những kỹ thuật Front-End thôi thì chưa đủ để một trang web có thể hoạt động được Để giải quyết thì phần việc tương tác dữ liệu này được Back-End đảm nhận Phần Back-End của một trang web bao gồm một máy chủ, một ứng dụng, và một cơ sở dữ liệu Một lập trình viên Back-End xây dựng và duy trì công nghệ mà sức mạnh của những thành phần đó, cho phép phần giao diện người dùng của trang web có thể tồn tại được Bao gồm nhiều kỹ thuật được trình
bày sau đây:
1.2.1 Cơ sở dữ liệu PostgreSQL
- PostgreSQL là một hệ quản trị cơ sở dữ liệu quan hệ và đối tượng dựa trên PostgreSQL, bản 4.2, được khoa điện toán của Đại học California tại Berkeley phát triển PostgreSQL mở đường cho nhiều khái niệm quan trọng mà các hệ quản trị dữ liệu thương mại rất lâu sau mới có
- PostgreSQL là một chương trình mã nguồn mở xây dựng trên mã nguồn ban đầu của Đại học Berkeley Nó theo chuẩn SQL99 và có nhiều đặc điểm riêng biệt:
o Câu truy vấn phức hợp (complex query)
o Khóa ngoại (foreign key)
o Thủ tục sự kiện (trigger)
o Các khung nhìn (view)
o Tính toàn vẹn của các giao dịch (integrity transaction)
o Việc kiểm tra truy cập đồng thời đa phiên bản (multiversion concurrency control)
Trang 311.2.2 Python
1.2.2.1 Giới thiệu
- Python là một ngôn ngữ lập trình thông dịch do Guido van Rossum tạo ra năm 1990 Python hoàn toàn tạo kiểu tự động và dùng cơ chế cấp phát bộ nhớ tự động, do vậy nó tương tự như Perl, Ruby, … Python được phát triển trong một dự
án mã nguồn mở, do tổ chức phi lợi nhuận Python Software Foundation quản lý
- Python là ngôn ngữ có hình thức rất sáng sủa, cấu trúc rõ ràng, thuận tiện cho người mới học lập trình Cấu trúc của Python còn cho phép người sử dụng viết
mã lệnh với số lần gõ phím tối thiểu
1.2.2.2 Tốc độ thực hiện
- Là một ngôn ngữ thông dịch, Python có tốc độ thực hiện chậm hơn nhiều lần so với các ngôn ngữ biên dịch như Fortran, C, … Trong số các ngôn ngữ thông dịch khác, Python được đánh giá nhanh hơn Ruby và Tcl, nhưng chậm hơn Lua
1.2.2.3 Cú pháp
Một ví dụ về khai báo biến và xử lý vòng lặp cho thấy Python là một ngôn ngữ trong sáng, dễ hiểu:
Hình 1.6 Mã Python
Trang 321.2.3 Django
1.2.3.1 Giới thiệu
- Django là một web framework miễn phí mã nguồn mở được viết bằng Python Django sử dụng mô hình Model-View-Control (MVC) Django được phát triển bởi Django Software Foundation (DSF) - một tổ chức phi lợi nhuận độc lập
- Mục tiêu chính của Django là đơn giản hóa việc tạo các website phức tạp
có sử dụng cơ sở dữ liệu Django tập trung vào tính năng “có thể tái sử dụng” và
“có thể tự chạy” của các component, tính năng phát triển nhanh, không làm lại những gì đã làm Một số website phổ biến được xây dựng từ Django là Pinterest, Instagram, Mozilla, và Bitbucket
1.2.3.2 Đặc điểm nổi bật
Django có đầy đủ yếu tố phục vụ cho một dự án khởi đầu:
- Nhanh: Django được thiết kế với triết lý làm sao để các lập trình viên có thể đưa các ý tưởng trở thành một sản phẩm nhanh nhất có thể
- Có đầy đủ các thư viện, tiêu chuẩn cần thiết: Django có sẵn các thư viện về chứng thực người dùng, quản lý nội dung, kịch bản vượt qua website Django cũng cung cấp cả phương pháp để lưu mật khẩu an toàn
- Khả năng mở rộng tốt: Django có thể đáp ứng lưu lượng lớn, nghĩa là chúng
ta không cần phải lo lắng gì về khả năng mở rộng cho sản phẩm của mình nữa
- Tính linh hoạt: xây dựng CMS, hoặc Website thương mại điện tử, hay kể cả mạng xã hội, nền tảng máy tính khoa học, tất cả đều có thể với Django
Trang 331.2.3.3 Tastypie
- Tastypie là một dịch vụ API Web dành cho Django Nó cung cấp sự tiện lợi, mạnh mẽ và có sự tùy biến cao, trừu tượng để tạo ra những giao diện kiểu REST
- Tastypie là một ứng dụng có thể dùng lại được (có nghĩa là nó chỉ dựa vào
mã lệnh của nó và chỉ tập trung cung cấp API kiểu REST) và thích hợp để cung cấp cho bất kỳ ứng dụng nào mà không cần thay đổi nguồn của ứng dụng đó
Trang 34CHƯƠNG 2 PHÂN TÍCH THIẾT KẾ HỆ THỐNG
2.1 Đặt vấn đề
Khái niệm về Website được hình thành từ thập niên 90 khi mà các trình duyệt
đi vào giai đoạn hoàn thiện và phát triển mạnh mẽ như ngày nay Cùng với sự phát triển đó, việc phân tích thiết kế hệ thống đóng vai trò vô cùng quan trọng trong việc xây dựng một ứng dụng
Hiện tại, việc phân tích thiết kế hệ thống có thể chia thành hai hướng đó là:
- Theo hướng chức năng
- Theo hướng đối tượng
Theo đà phát triển của công nghệ, phân tích thiết kế hệ thống theo hướng đối tượng trong những năm gần đây đã thống lĩnh thị trường lập trình phần mềm Vì
nó xử lý được các vấn đề phức tạp trong phát triển phần mềm và tạo ra các thế hệ phần mềm có khả năng thích ứng và bền chắc
Bởi vì những ưu điểm đó nên tôi sẽ chọn giải pháp phân tích thiết kế hệ thống cho ứng dụng quản lý thông tin tuyển dụng theo hướng đối tượng
2.2 Yêu cầu chức năng
- CSDL có thể được truy cập trực tuyến và miễn phí
- Người dùng truy cập vào hệ thống có thể tìm kiếm thông tin tuyển dụng từ các nhà tuyển dụng trên Thành Phố Đà Nẵng theo từ khóa
- Người dùng có thể chia sẻ với nhau về cách làm việc hoặc những kinh nghiệm phỏng vấn về một nhà tuyển dụng nào đó
- Các nhà tuyển dụng có thể yêu cầu người quản trị cho phép đăng bài tuyển dụng lên trang web
Trang 352.3 Yêu cầu phi chức năng
- Đơn giản, dễ dàng sử dụng
- Đáp ứng nhanh
- Dễ dàng tìm kiếm thông tin
- Các chức năng theo một luồng thống nhất, không rời rạc