Luôn đặt ra các câu hỏi như “Chưa đặt định hướng tương lai vào ngành này liệu học xong có xin việc được không ?”, “Có ngành nào tương tự như ngành bên trường y dược mà mình yêu thích hay
Trang 1ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC SƯ PHẠM
KHÓA LUẬN TỐT NGHIỆP
ĐỀ TÀI XÂY DỰNG ỨNG DỤNG DI ĐỘNG TRẮC NGHIỆM TÂM LÝ TRÊN
NỀN TẢNG ANDROID
Đà Nẵng, 2020
Giảng viên hướng dẫn: TS Nguyễn Trần Quốc Vinh
Họ và tên sinh viên: Trần Việt Tuấn
Trang 2LỜI CẢM ƠN KHOA CÔNG NGHỆ THÔNG TIN TRƯỜNG ĐẠI HỌC SƯ PHẠM
Lời đầu tiên cho phép em được gửi lời cảm ơn chân thành và sự kính trọng tới toàn thể quý thầy cô giáo trong khoa Tin Đại học Sư Phạm đã tạo điều kiện cho em hoàn thành tốt khóa luận tốt nghiệp
Em cũng xin cảm ơn quý thầy cô giáo trong khoa đã tận tình giảng dạy em trong suốt 4 năm em ngồi trên ghế nhà trường Chính những kiến thức căn bản từ thầy
cô đã giúp đỡ em rất nhiều trong đợt bảo vệ này Em cũng xin gửi lời cảm ơn chân thành đến thầy Nguyễn Trần Quốc Vinh đã tận tình hướng dẫn, chỉ bảo em trong suốt quá trình thực tập và thực hiện khóa luận này
Mặc dù đã có cố gắng hoàn thiện khóa luận trong phạm vi và khả năng cho phép nhưng không tránh khỏi những thiếu sót trong cách trình bày cũng như chất lượng sản phẩm đầu ra Em rất mong nhận được sự đóng góp ý kiến của quý thầy cô
và ban lãnh đạo, các anh chị trong công ty để báo cáo đạt kết quả tốt đẹp
Em xin chân thành cảm ơn!
Đà Nẵng, ngày … tháng 07 năm 2020
Sinh viên
Trần Việt Tuấn
Trang 3NHẬN XÉT CỦA NGƯỜI HƯỚNG DẪN
Đà Nẵng, ngày … tháng 07 năm 2020
Giáo viên hướng dẫn
Nguyễn Trần Quốc Vinh
Trang 4LỜI CAM ĐOAN
Tôi xin cam đoan:
1 Những nội dung trong báo cáo tốt nghiệp này là do tôi thực hiện dưới sự hướng dẫn trực tiếp của thầy Nguyễn Trần Quốc Vinh
2 Mọi tham khảo dùng trong đồ án thực tập đều được trích dẫn rõ ràng và trung thực 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
Trang 5Mục lục
LỜI CẢM ƠN 2
KHOA CÔNG NGHỆ THÔNG TIN TRƯỜNG ĐẠI HỌC SƯ PHẠM 2
NHẬN XÉT CỦA NGƯỜI HƯỚNG DẪN 3
LỜI CAM ĐOAN 4
DANH MỤC HÌNH ẢNH 7
MỞ ĐẦU 8
1) Lý do chọn đề tài 8
2) Mục tiêu đề tài 8
3) Đối tượng phạm vi đề tài 9
4) Phương pháp thực hiện 9
5) Tiêu chí chức năng của đề tài 10
6) Bố cục của khóa luận: 10
CHƯƠNG I: CƠ SỞ LÝ THUYẾT 12
1 Tổng quan về mật mã trắc nghiệm của John Holland 12
2 Tổng quan về Android Studio 15
3 Tổng quan về MySQLite 16
DDL - Ngôn ngữ định nghĩa dữ liệu (Data Definition Language) 18
DML - Ngôn ngữ thao tác dữ liệu (Data Manipulation Language) 19
DQL - Ngôn ngữ truy vấn dữ liệu (Data Query Language) 19
4 Tổng quan về PHP 19
5 Mô hình MVP 20
6 Tổng quan về Retrofit, GSON và Picasso trong android 22
7 Tổng quan về REST API 23
CHƯƠNG II: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 25
1 Nhu cầu dự án 25
2 Phân tích yêu cầu hệ thống 25
3 Phân tích và thiết kế hệ thống 27
CHƯƠNG III: TRIỂN KHAI ỨNG DỤNG 50
1 Giao diện chính 50
2 Màn hình đăng ký 52
3 Màn hình kiểm tra thông tin 52
4 Màn hình trắc nghiệm 54
Trang 65 Màn hình kết quả 55
6 Màn hình Admin 56
7 Màn hình đăng nhập 57
8 Quên mật khẩu 58
9 Màn hình đăng ký 59
10 Màn hình trước khi bắt đầu làm trắc nghiệm (cải tiến) 60
11 Màn hình làm trắc nghiệm (cải tiến) 61
12 Màn hình menu cạnh bên 62
13 Màn hình hiển thị doanh nghiệp 63
14 Màn hình hiển thị chi tiết doanh nghiệp 64
15 Màn hình hiển thị thông tin giáo viên 65
KẾT LUẬN 66
TÀI LIỆU THAM KHẢO 68
Trang 7DANH MỤC HÌNH ẢNH
Picture 10 Hình ảnh về Android Studio 15 Picture 11 Hình ảnh về SQLite 17 Picture 12 Tương tác giữa các tầng trong MVP 20 Picture 13 Mô hình MVC (bên trái) Mô hình MVP (bên phải) 21
Picture 14 Sơ đồ phân rã ứng dụng _ Error! Bookmark not defined Picture 15 Sơ đồ ngữ cảnh Error! Bookmark not defined
Picture 16 Sơ đồ mức 0 29 Picture 17 Học sinh - Mức 1 (4.0) 30 Picture 18 Học sinh - Mức 2 (4.1) 32 Picture 19 Học sinh - Mức 2 (4.1) 33 Picture 20 Học sinh - Mức 2 (4.1) 34
Picture 21 Báo cáo viên - Mức 1 (5.0) _ Error! Bookmark not defined
Picture 22 Quản lý - Mức 1 (6.0) _ 38 Picture 23 Quản lý - Mức 2 ( 6.1; 6.2 ) 40 Picture 24 Quản lý - Mức 2.0 ( 6.3 ; 6.4 ) 41 Picture 25 Quản lý - Mức 2.0 ( 6.5 ; 6.6 ; 6.7 ) 42 Picture 26 SƠ ĐỒ THỰC THỂ KẾT HỢP _ 44 Picture 27 SƠ ĐỒ CƠ SỞ DỮ LIỆU QUAN HỆ 45 Picture 28 Các table trong MYSQLite _ 46
Trang 8MỞ ĐẦU 1) Lý do chọn đề tài
- Hiện nay đại đa số các bạn sau kỳ thi tuyển sinh vẫn còn bỡ ngỡ không biết chọn ngành nào để theo học Luôn đặt ra các câu hỏi như “Chưa đặt định hướng tương lai vào ngành này liệu học xong có xin việc được không ?”, “Có ngành nào tương
tự như ngành bên trường y dược mà mình yêu thích hay không ?”…, thậm chí nhiều bạn cầm hồ sơ tới bàn vẫn còn hỏi các anh chị tư vấn “Em có nên chọn trường này để đăng ký ngành không anh/chị nhỉ ?”
- Mặc dù trước khi thi đại học các em đã được các anh chị từ các trường đại học
đổ về để tư vấn lựa chọn ngành nghề Thậm chí một số nhà trường còn chi trả một số tiền lớn để mời giáo sư, tiến sĩ về để định hướng các em Nhưng vô hình chung đa số các em vẫn chưa thể đưa ra các lựa chọn phù hợp cho bản thân mình
- Đứng trước hàng loạt các câu hỏi mang tính thách thức, kèm theo hàng loạt các câu hỏi dở khóc dở cười Khoa Tâm Lý Giáo Dục và Khoa Tin Học đã cùng nhau hợp tác và tạo ra một ứng dụng giúp cho các em học sinh, sinh viên có cơ hội khám phá bản thân mình, lựa chọn các ngành nghề phù hợp với bản thân
- Đa số các em chịu áp lực từ phía gia đình, xã hội và cũng chính từ bản thân của các em Nên khoa Tâm Lý đã áp dụng một số lý thuyết đã được nghiên cứu trong nhiều thập kỉ để đưa vào thực tiễn cho ứng dụng di động thông minh Chương trình không chỉ giúp các em tìm được ngành nghề phù hợp cho mình trong trường,
mà còn đưa ra các định hướng về tương lai cũng như là lộ trình học phù hợp trong các năm
- Chính vì lí do đó nên em đã chọn đề tài xây dựng hệ thống tư vấn “Trắc nghiệm Tâm Lý – Lựa chọn đúng ngành” để hỗ trợ cho các em học sinh Nâng cao khả năng hiểu biết của các em trong việc lựa chọn ngành học phù hợp
Trang 9- Áp dụng thành công thuật toán theo lý thuyết của John Holland cho việc đưa ra kết quả những ngành nghề sau khi sinh viên hoàn thành trắc nghiệm
- Giúp học sinh trong việc chọn lựa ngành học
- Giảm tải số lần tư vấn tuyển sinh tại các trường thay vào đó là các phần mềm
3) Đối tượng phạm vi đề tài
a) Đối tượng nghiên cứu
- Học sinh
b) Phạm vi đề tài
- Các trường đại học và trung học phổ thông trên địa bàn thành phố
4) Phương pháp thực hiện
Với những vấn đề cấp thiệt được đưa ra, em đã lên kế hoạch cho bản thân mình
để đặt phương pháp cụ thể như sau:
- Sử dụng kiến thức đã học ở trường kết hợp với các kiến thức nhận được trong quá trình thực tập tại công ty
- Nghiên cứu các hệ thống tương tự để tìm hiểu ưu nhược điểm từ đó vận dụng cho sản phẩm của mình
- Khảo sát trưng cầu ý kiến của các em học sinh từ các trường trung học phổ thông, thu thập dữ liệu để phân tích đúng, phù hợp với yêu cầu khách hàng
- Tìm hiểu và thực hành với:
➢ Android Studio và SQLite
➢ Database (realm or room…)
➢ Request API (okhttp or retrofit)
➢ Model mapping (i.e JSON parsing, Object Mapping)
➢ UI (front - end): Java
Trang 105) Tiêu chí chức năng của đề tài
Xây dựng ứng dụng tư vấn tâm lý trắc nghiệm trên nền tảng android Dễ dàng sử dụng và truy cập trên di động Hệ thống sẽ cho người sử dụng có được câu trả lời về các ngành phù hợp với tâm lý sau khi làm trắc nghiệm dựa trên bộ câu hỏi nghiên cứu của John Holland Bên cạnh đó người dùng có thể xem được thông tin về giảng viên của khoa Ứng dụng sẽ giúp cho người quản trị biết chính xác thông tin người làm trắc nghiệm
Các chức năng gồm:
o Sinh viên
- Có quyền được đăng ký thông tin để được hỗ trợ tư vấn
- Sinh viên có quyền tham gia làm bộ câu hỏi trắc nghiệm một hoặc nhiều lần theo ý muốn cá nhân
- Nhận được câu trả lời nhanh nhất ngay sau khi làm trắc nghiệm
- Xem được tin tức của trường
- Xem được thông tin doanh nghiệp
- Xem được thông tin giảng viên
- Xem được thông tin tuyển sinh
o Quản trị
- Quản lý bộ câu hỏi
- Quản lý lượt người tương tác
- Quản lý đáp án tâm lý
- Quản lý tài khoản
- Quản lý các môn học (dự kiến bổ sung)
- Quản lý thí sinh đăng ký tư vấn và thí sinh làm trắc nghiệm
o Báo cáo
- Xuất ra số lượng người tương tác đăng ký hoặc làm trắc nghiệm
- Xuất ra thông tin người đăng ký tư vấn
6) Bố cục của khóa luận:
Trang 111 Cơ sở lý thuyết (Chương I)
2 Phân tích và thiết kế hệ thống (Chương II)
3 Triển khai ứng dụng (Chương III)
4 Đánh giá và đưa giải pháp cải tiến (Chương IV)
Trang 12CHƯƠNG I: CƠ SỞ LÝ THUYẾT
1 Tổng quan về mật mã trắc nghiệm của John Holland
a Nguồn gốc ra đời mật mã trắc nghiệm của John Holland
Bộ trắc nghiệm nhằm tìm ra ngành nghề phù hợp này được nghiên cứu và phát triển bởi tiến sí tâm lý học người Mỹ John L.Holland (1919-2008) và ngày nay được biết với tên gọi quen thuộc là Bộ Trắc Nghiệm Holland Code hay còn có tên khác là bộ công cụ hướng nghiệp Holland RIASEC
Theo tiến sĩ tâm lý John Holland, có 6 nhóm sở thích nghề nghiệp tương ứng với các loại ngành nghề khác nhau trong xã hội nhưng có quan hệ với nhau Đó là: (1) Thực
tế - Realistic, (2) Nghiên cứu - Investigative, (3) Nghệ thuật - Artistic, (4) Xã hội - Social, (5) Kinh doanh - Enterprise, (6) Công chức - Conventional
Vào những năm 90 của thế kỷ trước, Bộ Lao Động Hoa Kỳ (The US Department of Labor, ETA) dựa trên nghiên cứu này, đã phát triển và cập nhật thêm một số tính năng mới để áp dụng trên trang web của họ nhằm giúp hssv có công cụ để tự khám phá khả năng của mình trước khi lựa chọn nghề nghiệp
Bộ trắc nghiệm này giúp tự phát hiện các kiểu người trội nhất đang tiềm ẩn trong con người mình để tự định hướng khi lựa chọn nghề
Trong phần này, mỗi câu đưa ra năm lựa chọn Nhiều câu bạn có thể thấy cả hai lựa chọn đều phù hợp (nhiều hay ít) Tuy nhiên, bạn hãy cố gắng lựa chọn câu phù hợp hơn đối với bạn theo hướng đó là con người mình hiện tại thay vì đó là mà mình muốn trở thành
A2Z Education Consulting sẽ tổng hợp và tìm ra kết quả chính xác về phân loại tính cách của những người tham gia, từ đó có thêm cơ sở cho việc tư vấn định hướng lựa chọn nghề nghiệp tốt hơn
b Bộ câu hỏi và cách tính điểm
Bao gồm thang điểm 4 từ 0-4 điểm:
1 Không đúng trong tất cả các trường hợp – 0 điểm
2 Đúng trong vài trường hợp – 1 điểm
Trang 134 Chỉ vài trường hợp chưa đúng lắm – 3 điểm
5 Đúng trong tất cả các trường hợp – 4 điểm
Picture 1 Bảng R - Realistic và I - Investigative
Trang 14Picture 3 Bảng A - Artistic và S - Social
Trang 152 Tổng quan về Android Studio
2.1 Giới thiệu về Android Studio
Để phát triển các ứng dụng mobile chạy trên hệ điều hành Android thì bạn cần một máy tính trên đó có cài đặt Android Studio Trong bài viết này chúng ta sẽ cùng nhau tìm hiểu về Android Studio, cách cài đặt và sử dụng Android Studio để tạo một ứng dụng đơn giản có tên là Hello World Bài viết này áp dụng trên hệ điều hành Windows
do đó bạn cần một máy tính chạy hệ điều hành Windows
2.2 Android studio là gì
Việc xây dựng một ứng dụng mobile (hoặc tablet) bao gồm rất nhiều các công đoạn khác nhau Đầu tiên chúng ta sẽ viết code ứng dụng sử dụng máy tính cá nhân hoặc laptop Sau đó chúng ta cần build ứng dụng để tạo file cài đặt Sau khi build xong thì chúng ta cần copy file cài đặt này vào thiét bị mobile (hoặc table) để tiến hành cài đặt ứng dụng và chạy kiểm thử (testing) Bạn thử tưởng tượng nếu với mỗi lần viết một dòng code bạn lại phải build ứng dụng, cài đặt trên điện thoại hoặc tablet và sau đó chạy thử thì sẽ vô cùng tốn thời gian và công sức Android Studio được phát triển để giải quyết các vấn đề này Với Android Studio tất cả các công đoạn trên được thực hiện trên cùng một máy tính và các quy trình được tinh gọn tới mức tối giản nhất
Picture 4 Hình ảnh về Android Studio
Trang 16là một phầm mềm bao gồm các bộ công cụ khác nhau dùng để phát triển ứng dụng chạy trên thiết bị sử dụng hệ điều hành Android như các loại điện thoại smartphone, các tablet Android Studio được đóng gói với một bộ code editor, debugger, các công cụ performance tool và một hệ thống build/deploy (trong đó có trình giả lập simulator để giả lập môi trường của thiết bị điện thoại hoặc tablet trên máy tính) cho phép các lập trình viên có thể nhanh chóng phát triển các ứng dụng từ đơn giản tới phức tạp
2.3 Cài đặt Android Studio (cách hướng dẫn này chỉ áp dụng cho win 10)
Vào Start -> Command Prompt (Admin) chép lần lượt 2 câu lệnh này vào và ấn enter
lần lượt:
• Câu lệnh thứ nhất:
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe"
-NoProfile -InputFormat None -ExecutionPolicy Bypass -Command
"[System.Net.ServicePointManager]::SecurityProtocol = 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
• Câu lệnh thứ hai:
choco install -y nodejs.install python2 jdk8
• Sau khi thực hiện thàn công ta và trang chủ của Android tải và cài đặt
Android Stuio mới nhất phiên bản 3.6.3 for Windows 64-bit (756 MB) (bản mới nhất có hỗ trợ AndroidX)
3 Tổng quan về MySQLite
3.1 SQLite là gì ?
SQLite là một thư viện phần mềm mà triển khai một SQL Database Engine, không
cần máy chủ, không cần cấu hình, khép kín và nhỏ gọn Nó là một cơ sở dữ liệu,
Trang 17không cần cấu hình, có nghĩa là giống như các cơ sở dữ liệu khác mà bạn không cần phải cấu hình nó trong hệ thống của mình
SQLite engine không phải là một quy trình độc lập (standalone process) như các cơ
sở dữ liệu khác, bạn có thể liên kết nó một cách tĩnh hoặc động tùy theo yêu cầu của
bạn với ứng dụng của bạn SQLite truy cập trực tiếp các file lưu trữ (storage files) của
nó
3.2 Tại sao lại là SQLite
• SQLite không yêu cầu một quy trình hoặc hệ thống máy chủ riêng biệt để hoạt động
• SQLite không cần cấu hình, có nghĩa là không cần thiết lập hoặc quản trị
• Một cơ sở dữ liệu SQLite hoàn chỉnh được lưu trữ trong một file disk đa nền tảng (cross-platform disk file)
• SQLite rất nhỏ và trọng lượng nhẹ, dưới 400KiB được cấu hình đầy đủ hoặc
dưới 250KiB với các tính năng tùy chọn bị bỏ qua
• SQLite là khép kín (self-contained), có nghĩa là không có phụ thuộc bên ngoài
• Các transaction trong SQLite hoàn toàn tuân thủ ACID, cho phép truy cập an toàn từ nhiều tiến trình (process) hoặc luồng (thread)
• SQLite hỗ trợ hầu hết các tính năng ngôn ngữ truy vấn (query language) được tìm thấy trong tiêu chuẩn SQL92 (SQL2)
Picture 5 Hình ảnh về SQLite
Trang 18• SQLite được viết bằng ANSI-C và cung cấp API đơn giản và dễ sử dụng
• SQLite có sẵn trên UNIX (Linux, Mac OS-X, Android, iOS) và Windows
(Win32, WinCE, WinRT)
Chỉ có LEFT OUTER JOIN được thực hiện
2 FULL OUTER JOIN Chỉ có LEFT OUTER JOIN được thực hiện
của lệnh ALTER TABLE được hỗ trợ DROP
CONSTRAINT không được hỗ trợ
4 TRIGGER SUPPORT Trigger FOR EACH ROW được hỗ trợ nhưng
không hỗ trợ FOR EACH STATEMENT
5 VIEWS VIEWs trong SQLite là chỉ đọc Bạn không thể thực
thi câu lệnh DELETE, INSERT hoặc UPDATE trên
một view
6 GRANT và REVOKE Các quyền truy cập duy nhất có thể được áp dụng
là các quyền truy cập file thông thường (normal file) của hệ điều hành
3.4 SQLite Commands
Các lệnh SQLite tiêu chuẩn để tương tác với cơ sở dữ liệu quan hệ tương tự như SQL Chúng là CREATE, SELECT, INSERT, UPDATE, DELETE và DROP Các lệnh này có thể được phân loại thành các nhóm dựa trên tính chất hoạt động của chúng như sau:
DDL - Ngôn ngữ định nghĩa dữ liệu (Data Definition Language)
đối tượng khác trong cơ sở dữ liệu
đang tồn tại, chẳng hạn như bảng
Trang 19DROP Xóa toàn bộ bảng, view của bảng hoặc
đối tượng khác trong cơ sở dữ liệu
DML - Ngôn ngữ thao tác dữ liệu (Data Manipulation Language)
DQL - Ngôn ngữ truy vấn dữ liệu (Data Query Language)
- Phiên bản PHP được sử dụng trong khóa luận: 7.2
Ưu điểm và nhược điểm
4.2 Ưu điểm của PHP
➢ Hoàn toàn tương thích đa nền tảng
➢ Rất phổ biến cho web apps
➢ Dễ dàng nhúng vào HTML
➢ Cộng đồng hỗ trợ cho PHP lớn
➢ Mã nguồn mở
➢ Khả năng mở rộng cao
Trang 204.3 Nhược điểm của PHP
➢ Yêu cầu người sử dụng có hiểu biết cơ bản về HTML
➢ Không tối ưu cho ứng dụng để bàn
➢ Chạy chậm hơn so với các ngôn ngữ lập trình khác
➢ Sự tùy chỉnh dễ dàng làm cho nó dễ bị lỗi hơn và khó tìm ra lỗi hơn
5 Mô hình MVP
5.1 Tổng quan về MVP
MVP là viết tắt của Model – View – Presenter và được xây dựng dựa trên base của MVC Chúng ta có thể hiểu MVP là một Architectural Pattern – đây là một giải
pháp chung nhằm giải quyết một vấn đề thường xảy ra trong kiến trúc phần mềm
MVP ở thời điểm hiện tại không mới và đã ra đời khá lâu tuy nhiên theo mình thấy thì nó chưa thực sự được biết đến rộng rãi so với MVC
Mô tả các thành phần chính:
Model: Lớp đảm nhận việc xử lý các logical data từ database hoặc network
View: Lớp chịu trách nhiệm xử lý các thành phần liên quan đến View, hiển thị data
từ Model, tiếp nhận tương tác từ user gửi tới để Presenter xử lý các tương tác đó
Presenter: Lớp chịu trách nhiệm xử lý các business logic Đây là lớp tương tác được
với cả View và Model Chịu trách nhiệm lấy data từ Model khi có thay đổi trên View,
xử lý và binding data đã xử lý lên View
Picture 6 Tương tác giữa các tầng trong MVP
Trang 215.2 Sự khác biết giữa MVC (Model - View - Controller) và MVP(Model - View – Presenter)
Hình ảnh trên cho chúng ta thấy sự khác biệt giữa MVC và MVP Có thể nhận thấy rằng ở mô hình MVC, View ngoài việc có thể tương tác được với Controller nó còn
tương tác được với Model và có thể lấy data trực tiếp từ Model để xử lý Còn mô hình
MVP, View sẽ chỉ tương tác được với Presenter, mọi xử lý với Model sẽ được
Presenter đảm nhiệm hoàn toàn
5.3 Tại sao lại tích hợp MVP vào ứng dụng
Điều đầu tiên mà chúng ta có thể dễ dàng nhận thấy là MVP phân chia các lớp một các rành mạch so với MVC Trong mô hình MVC, View và Model có thể tương tác lẫn nhau tức là chúng ta thường có xu hướng đưa nhiều các xử lý bên ngoài vào View
Hệ quả là View sẽ chứa rất nhiều cách xử lý liên tách 2 lớp xử lý này một cách rành mạch giống như MVP đã làm Lý do của việc phân tách này có thể hiểu như sau:
• Trong quá trình phát triển phần mềm, View là lớp mà có khả năng sẽ thay đổi nhiều nhất nên việc phân tách sẽ giúp thay đổi View một cách độc lập mà không ảnh hưởng đến các thành phần khác
• Việc đưa nhiều các xử lý vào View sẽ khiến cho việc kiểm thử (testing) trở nên khó khăn hơn và sẽ tốn nhiều thời gian cũng như chi phí
• Ngoài ra cũng vì đưa nhiều xử lý vào View nên sẽ dẫn tới trùng lặp code xử
lý (spam code) Thay vì việc ta viết ở một nơi và có thể dùng chung nhiều chỗ
Picture 7 Mô hình MVC (bên trái) Mô hình MVP (bên phải)
Trang 22thì những code này lại xuất hiện ở nhiều nơi và cùng thực hiện một chức năng tương tự nhau Việc phân tách các lớp với nhau còn giúp reuse (tái sử dụng) được code và việc bảo trì trở nên dễ dàng hơn
5.4 Lợi ích do MVP mang lại
Việc sử dụng MVP trong phát triển phần mềm sẽ tạo ra nên được một số lợi ích sau:
• Các task lớn được chia thành nhiều task đơn giản và giúp cho việc giải quyết bài toán trở nên dễ dàng và đơn giản hơn
• Code trở nên rõ ràng và rành mạch, giảm thiểu được bug xảy ra trong quá trình code và việc debug trở nên không quá phức tạp như trước
• Dễ test, dễ kiểm thử, tiêu tốn ít chi phí và thời gian hơn
6 Tổng quan về Retrofit, GSON và Picasso trong android.
6.1 Retrofit là gì ?
Retrofit là một HTTP client type-safe cho Android và Java Retrofit giúp dễ dàng kết nối đến một dịch vụ REST trên web bằng cách chyển đổi API thành Java Interface Trong bài này, tôi sẽ hướng dẫn bạn cách sử dụng một trong những thư viện HTTP phổ biến nhất và được khuyến dùng nhất cho Android
Thư viện mạnh mẽ này giúp bạn dễ dàng xử lý dữ liệu JSON hoặc XML sau đó phân tích cú pháp thành Plain Old Java Objects (POJOs) Tất cả các yêu cầu GET, POST, PUT, PATCH, và DELETE đều có thể được thực thi
Giống như hầu hết các phần mềm mã nguồn mở khác, Retrofit được xây dựng dựa trên một số thư viện mạnh mẽ và công cụ khác Đằng sau nó, Retrofit làm cho việc sử dụng OkHttp (từ cùng một nhà phát triển) để xử lý các yêu cầu trên mạng Ngoài ra, Retrofit không tích hợp bất kỳ một bộ chuyển đổi JSON nào để phân tích từ JSON thành các đối tượng Java Thay vào đó nó đi kèm với các thư
viện chuyển đổi JSON sau đây để xử lý điều đó:
➢ Gson: com.squareup.retrofit:converter-gson
6.2 Lý do sử dụng Retrofit ?
Trang 23Việc phát triển thư viện HTTP type-safe của chính bạn để giao tiếp với REST API
có thể thật sự là một điều khó khăn: bạn phải xử lý nhiều chức năng chẳng hạn như tạo các kết nối, lưu trữ cach, thử lại các yêu cầu thất bại, phân tích luồng phản hồi, xử lý lỗi, và nhiều hơn nữa Retrofit, mặt khác, được hoạch định rất tốt, có tài liệu hướng dẫn và kiểm đã được kiểm thử—một thư viện đã được thử nghiệm rất nhiều trong thực tế sẽ giúp bạn tiết kiệm rất nhiều thời gian quý báu và giảm bớt căng thẳng
6.3 GSON là gì ?
Gson là một thư viện java cho phép người sử dụng có thể chuyển đổi từ một đối tượng Java sang JSON và cũng có thể chuyển đổi từ một đối tượng JSON sang java.Gson có thể làm việc với đối tượng java tùy ý bao gồm các đối tượng tồn tại sẵn mà bạn không có source-code của chúng
6.4 Picasso là gì ? Cách thức hoạt động của Picasso
Thư viện tải xuống và lưu trữ hình ảnh mạnh mẽ cho Android
Hình ảnh thêm bối cảnh rất cần thiết và sự tinh tế trực quan cho các ứng dụng Android Picasso cho phép tải hình ảnh không rắc rối trong ứng dụng của bạn thường xuyên trong một dòng mã!
Picasso.get () Tải ("http://i.imgur.com/DvpvklR.png") into (imageView);
Nhiều cạm bẫy phổ biến của việc tải hình ảnh trên Android được Picasso xử lý tự động:
➢ Xử lý tái chế ImageView và hủy tải xuống trong bộ điều hợp
➢ Biến đổi hình ảnh phức tạp với việc sử dụng bộ nhớ tối thiểu
Trang 24trên nền tảng này Đầu tiên chúng ta cùng xem qua REST API là gì? Tại sao nó
lại quan trọng trong việc kết nối dữ liệu giữa ứng dụng và server?
Đối với dữ liệu việc THÊM, XOÁ, SỬA các tài nguyên là rất phổ biến mà hầu
hết các ứng dụng đều sử dụng
Nếu mỗi lập trình viên lại có cách xử lý khác nhau sẽ rất khó khăn trong việc
maintaince và phát triển dự án
Vì thế mà cộng đồng đã thống nhất một chuẩn chung để quản lý gồm có các
phương thức sau đây:
➢ POST: định nghĩa các request mà kết quả của nó mang ý nghĩa tạo mới, chỉnh
sửa dữ liệu, thay đổi so với trước khi request được thực thi
➢ GET: lấy dữ liệu từ server về mang ý nghĩa kết quả sẽ không thay đổi
➢ DELETE: xoá 1 dữ liệu trong hệ thống
➢ PUT: mang ý nghĩa chỉnh sửa, cập nhật 1 dữ liệu nào đó trong hệ thống
Ngoài ra còn 1 số phương thức khác chúng ta sẽ tìm hiểu ở 1 bài viết cụ thể khác
Trong quá trình sàng lọc và feedback từ những lập trình viên chuyên nghiệp,
REST dần trở nên là chuẩn thiết kế API cho các dịch vụ web trên internet
Trang 25CHƯƠNG II: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
1 Nhu cầu dự án
Cung cấp một ứng dụng có thể chạy trên nền tảng Android giúp cho các em học sinh
có thể thao tác trên chính điện thoại thông minh của mình Có thể sử dụng được offline Đơn giản trong thao tác khi tương tác với giao diện Nhận kết quả nhanh Dễ chỉnh sửa và đưa ra bản cập Không tốn quá nhiều thời gian bảo trì
2 Phân tích yêu cầu hệ thống
2.1 Yêu cầu chức năng:
➢ Quản lý: quản lý có 3 chức năng chính, gồm quản lý câu hỏi, quản lý yêu cầu, báo
cáo thống kê
o Quản lý tin tức: Xóa, xem
o Quản lý tài khoản: Xem, xóa, phân quyền
o Quản lý thông tin doanh nghiệp liên kết: Xem, xóa
o Quản lý thông tin giáo viên: Xem
o Quản lý câu hỏi: Xem, xóa, sửa
o Quản lý bộ tâm lý John – Holland: Xem, xóa, sửa
o Quản lý trường học: Xem, xóa, thêm, sửa
o Quản lý ngành nghề: Xem, xóa, sửa, thêm
o Quản lý thông tin cá nhân: Xem, xóa, sửa
➢ Học sinh, sinh viên: có 3 chức năng chính gồm: trả lời trắc nghiệm, gửi thông tin
yêu cầu tư vấn, nhận kết quả sau khi làm trắc nghiệm,
o Trả lời trắc nghiệm: Học sinh lựa chọn trắc nghiệm dựa trên bộ câu hỏi do người quản lý hệ thống biên soạn
o Gửi yêu cầu tư vấn: Học sinh điền thông tin vào form do nhà quản lý quy định sẵn và gửi
Trang 26o Nhận kết quả trắc nghiệm: Khi hoàn thành bài làm học sinh nhận được hiển thị một loạt danh sách các ngành liên quan dựa trên xác suất của ngành học
o Xem tin tức tuyển sinh
o Xem tin tức sinh viên
o Xem thông tin doanh nghiệp
o Xem thông tin giảng viên
2.2 Yêu cầu phi chức năng
a Bảo mật
Sử dụng password_hash() để tạo băm bcrypt của bất kỳ mật khẩu nào
Picture 8 Minh họa cách thức băm password trong php
• Sử dụng màu sắc theo chuẩn schemecolor
• Đơn giản hóa giao diện cho người dùng
Trang 273 Phân tích và thiết kế hệ thống
3.1 SƠ ĐỒ PHÂN RÃ CHỨC NĂNG
Picture 9 Sơ đồ phân rã ứng dụng
Trang 283.2 SƠ ĐỒ LUỒNG DỮ LIỆU
Picture 10 Sơ đồ ngữ cảnh
Trang 29
Picture 11 Sơ đồ mức 0
Trang 30
Picture 12 Học sinh - Mức 1 (4.0)
Trang 32
Picture 13 Học sinh - Mức 2 (4.1)
Trang 33
Picture 14 Học sinh - Mức 2 (4.2)
Trang 34
Picture 15 Học sinh - Mức 2 (4.3)