Trang 4 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC VĂN HIẾN KHOA CÔNG NGHỆ THÔNG TIN TIỂU LUẬN MÔN HỌC LẬP TRÌNH DI ĐỘNG XÂY DỰNG ỨNG DỤNG PHẦN MỀM QUẢN LÝ ĐIỂM DANH BẰNG QR CODE GVHD Dương Quang Triết SVT.
Trang 1TRƯỜNG ĐẠI HỌC VĂN HIẾN KHOA CÔNG NGHỆ THÔNG TIN
TIỂU LUẬN MÔN HỌC LẬP TRÌNH DI ĐỘNG
XÂY DỰNG ỨNG DỤNG PHẦN MỀM QUẢN
LÝ ĐIỂM DANH BẰNG QR CODE
GVHD : Dương Quang Triết SVTH : Lê Thành Công MSSV : 161A010130 Lớp : 161A0101
Trang 4Ngày nay, công nghệ thông tin đang có sự phát triển mạnh mẽ của và được ứngdụng sâu rộng trong nhiều lĩnh vực Máy tính dần trở thành một công cụ hỗ trợ đắc lựccho con người, khiến cho nó trở nên thiết yếu và thân thuộc hơn với mọi người.
Một điển hình tiêu biểu trong việc phổ biến công nghệ thông tin phải kể đếnviệc ứng dụng sức mạnh tính của máy tính trong hoạt động quản lý giáo dục củatrường đại học Để công tác giáo dục được diễn ra suôn sẻ, trường Đại học Văn Hiếnnói chung và khoa Kỹ thuật công nghệ nói riêng cần phải xử lý đồng thời rất nhiềunhững thông tin như thông tin về sinh viên, giảng viên, lên kế hoạch tổ chức các lớphọc phần, đặc biệt là phần điểm danh sinh viên còn khá lạc hậu vì chưa tích hợp côngnghệ để giải quyết nhanh hơn, chính xác hơn… Những khối thông tin đó cần phảiđược hệ thống, phân loại và tổ chức thành các khối dữ liệu đồng bộ, phải được xử lý
và trích xuất một cách dễ dàng Với một khối lượng thông tin khổng lồ mà nhà trườngphải xử lý thì việc phải sử dụng tới sức mạnh của máy tính là một điều tất yếu
Xuất phát từ những yêu cầu đó, em quyết định chọn đề tài “Xây dựng ứng dụng
phần mềm quản lý điểm danh bằng QR code” làm đề tài cho học phần Đồ án tốt
nghiệp chuyên ngành Hệ thống thông tin
Trang 5Họ tên sinh viên thực hiện: Lê Thành Công
Ngành: Công Nghệ Thông Tin Niên khóa: 2016-2020
Tên đề tài: Xây dựng phần mềm quản lý điểm danh bằng QR code
Tp.Hồ Chí Minh, ngày tháng năm 2020
GIÁO VIÊN HƯỚNG DẪN
(Ký và ghi rõ họ tên)
Trang 6Để hoàn thành khóa luận này, em xin tỏ long biết ơn sâu sắc đến Thầy Dương Quang Triết, đã tận tình hướng dẫn, chỉ dạy trong suốt quá trình thực hiện đề tài khóa luận tốt nghiệp.
Em xin chân thành cảm ơn quý thầy, cô trong khoa Kỹ Thuật – Công Nghệ đã hết lòng chỉ dạy và truyền đạt những kiến thức trong những năm học vừa qua Với vốnkiến thức được tiếp thu trong quá trình học không chỉ là nền tảng cho quá trình nghiên cứu khóa luận mà còn là hành trang quý bàu để em bước vào đời một cách vững chắc
cà tự tin
Và cũng xin cám ơn những người thân, bạn bè đã động viên và hết mình giúp
đỡ để có thể hoàn thành khóa luận tốt nghiệp đúng thời hạn
Suốt khoảng thời gian qua, dù rất cố gắng, một phần cũng do kiến thức còn hàn chế nên bài khóa luận này khó tránh khỏi những sai sót Em rất mong được nhận ý kiến đóng góp của Thầy, Cô để bài khóa luận này được hoàn hảo hơn
Trân trọng cám ơn!
Tp.Hồ Chí Minh, ngày tháng năm 2020
Sinh viên thực hiện
(Ký tên và ghi rõ họ tên)
Trang 7Em xin cam đoan đây là công trình tự nghiên cứu và thực hiện của riêng em Các tài liệu được trích dẫn trong luận án là trung thực, có nguồn gốc và xuất xứ rõ ràng Các kết quả nghiên cứu của luận án chưa được công bố trong bất kỳ công trình nghiên cứu nào khác.
Tp.Hồ Chí Minh, ngày tháng năm 2020
Sinh viên thực hiện
(Ký tên và ghi rõ họ tên)
Trang 8
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN 0
CHƯƠNG 1: MỞ ĐẦU 1
Lý do chọn đề tài: 1
Mục tiêu nghiên cứu: 1
Phạm vi nghiên cứu: 1
Phương pháp thực hiện: 2
Kế hoạch thực hiện : 2
CHƯƠNG 2: MÔ TẢ BÀI TOÁN 4
2.1 Yêu cầu của bài toán: 4
2.2 Phân tích chi tiết yêu cầu bài toán: 4
2.3 Khảo sát hệ thống: 5
2.4 Quy trình xử lý: 6
CHƯƠNG 3: CƠ SỞ LÝ THUYẾT: 7
3 Ngôn ngữ Flutter: 7
3.1 Giới thiệu về Flutter: 7
3.1.1 Lý do sử dụng Flutter: 7
3.2 Nền tảng Server AWS 10
3.3 Hệ quản trị cơ sở dữ liệu PostgreSQL: 12
3.4 Android Studio: 12
3.5 Git và Github: 13
3.6 Các thư viện được sử dụng: 14
3.6.1QR Scanner: 14
3.6.2 Http request: 14
Trang 93.7 ERP Odoo 15
3.8 Python 16
3.9 Phương pháp triển khai: 18
3.9.1 Lập trình hướng đối tượng: 18
3.9.2 Mô hình MVC: 20
3.10 Các kỹ thuật sử dụng trong phát triển ứng dụng: 21
3.10.1 Bloc Pattern: 21
3.10.2 Scoped Model 22
3.10.3 Restful API: 22
CHƯƠNG 4: PHÂN TÍCH THIẾT KẾ HỆ THỐNG: 24
4.1 Sơ đồ luồng dữ liệu DFD: 24
4.1.1 Sơ đồ DFD tổng quát: 24
4.1.2 Sơ đồ DFD chi tiết: 25
4.2 Sơ đồ ERD: 30
4.3 Sơ đồ vật lý dữ liệu: 33
CHƯƠNG 5: XÂY DỰNG ỨNG DỤNG : 36
5.1 Sơ đồ chức năng: 36
5.2 Chức năng xác thực: 37
5.3 Chức năng quản lý user: 40
5.4 Chức năng quản lý khoá học: 42
5.5 Chức năng quản lý buổi học: 44
5.6 Chức năng quản lý các buổi điểm danh: 45
5.7 App mobile điểm danh bằng QR: 47
5.7.1 Trang đăng nhập app 47
Trang 105.7.3 Giao diện màn hình điểm danh 49
5.7.4 Giao diện màn hình Scan 50
CHƯƠNG 6: KẾT LUẬN: 52
6.1 Kết quả đạt được: 52
6.2 Những hạn chế: 52
6.3 Hướng phát triển của đề tài: 52
Tài liệu tham khảo 53
Trang 11Hình 3.1 Ưu điểm về UI của flutter
Hình 3.2 respository của flutter trên github
Hình 1.3 Bản đồ nơi đặt các server của AWS
Hình 3.2 Một JSon Web Token
Hình 3.3 Các thành phần của một JSon Web Token
Hình 3.4 Các đặc điểm của lập trình hướng đối tượng
Hình 3.5 Mô hình MVC
hình 3.6 mô tả Bloc Pattern
Hình 3.7 Restful API
Hình 4.1 Sơ đồ DFD tổng quát
Hình 4.2 Sơ đồ DFD quản lý phòng học
Hình 4.3 sơ đồ DFD quản lý sinh viên
Hình 4.5 Sơ đồ DFD quản lý giảng viên
Hình 4.6 Sơ đồ DFD quản lý môn học
Hình 4.7 Sơ đồ DFD quản lý lớp học phần
Hình 4.8 Sơ đồ ERD
Hình 4.9 Sơ đồ vật lý dữ liệu
Hình 5.1 Sơ đồ chức năng của website
Hình 5.2 Sơ đồ chức năng của website
Hình 5.3 Lưu đồ giải thuật chức năng xác thực tài khoản quản trị
Hình 5.4 Giao diện trang đăng nhập
Hình 5.5 Thông báo lỗi xác thực trong form đăng nhập
Hình 5.6 Giao diện trang quản trị
Hình 5.7 Trang giao diện chức năng quản lý user
Trang 12Hình 5.9 Trang tạo xem các khoá học hiện có
Hình 5.10 Trang tạo mới khoá học
Hình 5.11 Trang xem buổi học
Hình 5.12 Trang thêm mới buổi học
Hình 5.13 Trang xem các buổi học đã đăng ký
Hình 5.14 Giao diện xem danh sách các buổi điểm danh
Hình 5.15 Giao diện xem danh sách các buổi điểm danh
Hình 5.16 Trang đăng nhập app
Hình 5.17 Lưu đồ trang đăng nhập app
Hình 5.18 Giao diện trang chủ app
Hình 5.19 Giao diện trang điểm danh
Hình 5.20 Giao diện trang scan
Hình 5.21 Lưu đồ sử lý dữ liệu scan và lưu hệ thống
Trang 13Ký hiệu Ý nghĩa
HTTP Hypertext transfer protocol
IDE Integrated development environment
RDBMS Relational database management system
Trang 14CHƯƠNG 1: MỞ ĐẦU
Lý do chọn đề tài:
Ngày nay, công nghệ ngày càng phát triển, nhu cầu ứng dụng công nghệ thôngtin vào tất các lĩnh lực trong xã hội là điều tất yếu Trong đó, điển hình là công tác ứngdụng công nghệ thông tin vào lĩnh vực quản lý giáo dục
Các thao tác đề làm trên giấy nên việc sai sót, mất mát dữ liệu và không mangtính tập trung Do đó, áp dụng công nghệ thông tin vào cho ngành quản lý giáo dục là
vô cùng cần thiết để nâng cao hiệu quả và chất lượng giảng dạy cho nhà trường
Nếu dự án hoàn thành, công tác quản lý sẽ được dễ dàng và chặc chẽ hơn, cáccông việc sẽ hoàn thanh nhanh chóng hơn Các lợi ích mà nó mang lại có thể kể đếnnhư:
- Không phải quản lý thủ công (giấy tờ, sổ sách )
- Một lượng lớn sinh viên thì quản lý thủ công rất khó khăn Do vậy phần ứngdụng web này với mục đích nâng cao hiệu quả trong quá trình quản lý giáo dục
- Bảo mật thông tin về điểm của sinh viên
- Tối ưu được thời gian và công sức trong quản lý giáo dục so với quản lý thủcông
Nắm bắt yêu cầu này, em đã lên kế hoạch xây dựng một ứng dụng web nhằmquản lý sinh viên cho khoa Công nghệ thông tin trường đại học Văn Hiến
Mục tiêu nghiên cứu:
Xây dựng hệ thống thông tin quản lý giáo dục cho khoa Công nghệ thông tintrường đại học Văn Hiến, từng bước kết nối với hệ thống thông tin thống kê cho liênkhoa và trường, thay thế công việc điểm danh trên giấy bằng các công nghệ điện tử
Ứng dụng công nghệ để hiện đại hóa, giảm chi phí, nâng cao chất lượng chocông tác đào tạo nguồn nhân lực
Phạm vi nghiên cứu:
Do phạm vi và khả năng nghiên cứu có hạn, em chỉ chỉ tập trung phân tích vàxây dựng hệ thống ở phía quản trị cho đồ án này
Trang 15Đồ án không xử lý toàn bộ các vấn đề xảy ra trong quá trình quản lý giáo dụccủa khoa Công nghệ thông tin, mà chỉ tập trung vào khía cạnh quản lý sinh viên.
Đồ án được thực hiện dựa trên cơ sở lý thuyết cơ bản về Phân tích thiết kế hệthống thông tin để thiết kế và tổ chức dữ liệu, cùng với kiến thức lập trình hướng đốitượng để xây dựng ứng dụng web quản lý một cách hoàn chỉnh
Phương pháp thực hiện:
Trong vấn đề lập trình cho ứng dụng web của đề tài này, đồ án này sẽ sử dụng một mô hình lập trình đang khá thịnh hành hiện nay đó là mô hình MVC (Model-Controller-View) cùng với xây dựng một server/domain làm web quản lý cũng như nơilưu trữ data, với xây dựng một app mobile xử lý việc điểm danh sinh viên qua app sử dụng Flutter làm UI-UX và PostgreSQL - Odoo làm database
Các chức năng dự kiến:
Dựa vào những kiến thức học được từ các môn học trong chuyên ngành hệthống thông tin, đồ án sẽ phân tích thiết kế hệ thống quản lý giáo dục nhằm mục đích:
Điểm danh sinh viên qua app mobile
Quản lý sinh viên
Quản lý giảng viên chuyên môn
Quản lý phòng học
Quản lý các lớp học phần
Quản lý chi phí
Xử lý điểm danh các sự kiện
Lập lịch thời khóa biểu cho sinh viên và giảng viên
Kế hoạch thực hiện :
STT Công việc thực hiện Mô tả
Tìm hiểu nguyên tắc làm việc và xây dựng
kế hoạch khởi tạo hệ thống
Xây dựng các nguyên tắc quản lý và tàiliệu tham khảo cho hệ thống
Trang 162 Xác định yêu cầu hệ
thống
Lập kế hoạch phỏng vấn người dùng, đưa
ra các yêu cầu nghiệp vụ, yêu cầu chứcnăng hệ thống và yêu cầu phi chức năng
3 Mô hình hóa yêu cầu Mô hình hóa các yêu cầu dưới dạng sơ đồ,
mô tả tổng quan về hệ thống
Thiết kế chi tiết về hệ thống bao gồm:
Thiết kế logic dữ liệu
Thiết kế giao diện
6 Kiểm tra và thử nghiệm
hệ thống
Kiểm tra lại toàn bộ các chức năng đã làmtheo yêu cầu đề ra ban đầu, thử nghiệmvới dữ liệu mẫu
Trang 17CHƯƠNG 2: MÔ TẢ BÀI TOÁN
2.1 Yêu cầu của bài toán:
Khoa Công nghệ thông tin trường đại học Văn Hiến hiện đang đào tạo nhiềuchuyên ngành, mỗi năm tiếp nhận khoảng 200 tân sinh viên Với số lượng lớn sinhviên đang theo học tại khoa, nhu cầu quản lý đào tạo đặt ra bao gồm:
Chương trình đào tạo cho bậc đại học được quy định riêng cho mỗi khóa vàchương trình đào tạo chuyên ngành của từng khóa là do sinh viên lựa chọn Chươngtrình đào tạo có thể thay đổi theo từng khóa học và bao gồm nhiều môn chuyên ngành.Chương trình đào tạo được phân chia theo từng học kỳ, mỗi học kỳ sẽ tổ chức giảngdạy 2 – 4 môn, và mỗi môn được mở một hoặc nhiều lớp học phần tương ứng
Môn học thuộc về khoa do các giảng viên cơ hữu thuộc đúng chuyên môn phụtrách giảng dạy Ngoài ra, nếu không có giảng viên có chuyên môn phù hợp với mônhọc, khoa sẽ thỉnh giảng các giảng viên tại các trường đại học khác để dạy các họcphần đó
Trong mỗi buổi học thời gian điểm danh sinh viên mất khá nhiều thời gian và
dữ liệu không tập trung mà chỉ quản lý trên thiết bị của giảng viên Vì vậy cần áp dụngcông nghệ để giải quyết vấn đề này
Mỗi khóa học ở bậc đại học được hoàn tất sau 4 năm Sinh viên cần hoàn tất tất
cả các môn học bắt buộc và các chứng khác khác theo quy định để xét tốt nghiệp
2.2 Phân tích chi tiết yêu cầu bài toán:
Mỗi khoa có nhiều chương trình đào tạo, mỗi năm phải quản lý và cập nhật cácchương trình đào tạo này
Lớp biên chế sinh viên bao gồm 100 sinh viên mỗi lớp Nếu một sinh viênkhông thuộc lớp biên chế thì có nghĩa là sinh viên đã thôi học
Giảng viên được phân công giảng dạy các lớp học phần Mỗi lớp biên chế sẽ domột giảng viên làm cố vấn học tập
Trang 18Chương trình đào tạo phải được cập nhật mỗi năm, thêm mới các môn học chokhóa đào tạo mới Các môn học trong chương trình đã được phê duyệt thì không đượcthay đổi
Các lớp học phần được tổ chức dựa theo kế hoạch của chương trình đào tạo.Phải có chức năng sắp xếp lịch học cho lớp học phần
Sinh viên có thể đăng ký lớp học phần được mở dạy mỗi học kỳ
Mỗi buổi học đều phải điểm danh và tất cả lớp trong tất cả các cơ sở làm điểmdanh nên yêu cầu thiết kế một database đủ lớn và phản hồi đủ nhanh để xử lý
Các yêu cầu phi chức năng:
- Giao diện hệ thống phải dễ sử dụng, trực quan, thân thiện với mọi người dùng
- Cho phép truy cập dữ liệu đa người dùng
- Tính bảo mật và độ an toàn cao
- Tốc độ xử lý của hệ thống phải nhanh chóng và chính xác
- Người sử dụng phần mềm có thể sẽ không biết nhiều về tin học nhưng vẫn sửdụng một cách dễ dàng nhờ vào sự trợ giúp của hệ thống
- Phần hướng dẫn sử dụng phần mềm phải ngắn gọn, dễ hiểu và sinh động
- Cấp quyền chi tiết cho người sử dụng
Bộ phận quản lý sinh viên: quản lý hồ sơ sinh viên trong suốt quá trình sinhviên học tập tại trường Bộ phận phải đảm bảo các công việc quản lý sinh viên như khi
có khóa học mới nhập học, thay đổi hồ sơ sinh viên,… thì bộ phận này tiến hành cậpnhật danh sách sinh viên, danh sách ngành học, khóa học cho sinh viên Các công việcnhư thực hiện việc thay đổi lớp học, dừng học, thôi học, hoãn học,… được thực hiệnthủ công Ngoài ra bộ phận này cũng làm nhiệm vụ lưu trữ hồ sơ của những sinh viên
đã ra trường và lưu lại vào file mềm
Trang 192.4 Quy trình xử lý:
Khi sinh viên mới nhập trường thì bộ phận quản lý sinh viên tiến hành thống kêthông tin sinh viên nhập học và cập nhật vào hồ sơ sinh viên, sau đó lưu các thông tinchi tiết về sinh viên tại hồ sơ sinh viên Bộ phận quản lý sinh viên có nhiệm vụ thuthập các thông tin cần thiết lưu vào dữ liệu sinh viên khóa mới
Sau khi đã có các thông tin của từng sinh viên, bộ phận quản lý sẽ tiến hànhphân lớp tách lớp theo các ngành sinh viên đã đăng kí, thống kê danh sách sinh viêncủa từng lớp và nhật danh sách lớp học phần cho các sinh viên
Bộ phận quản lý sẽ cập nhật danh sách các môn học, loại hình đào tạo, chi tiếtchương trình đào tạo Sau khi đã phân lớp biên chế, tách lớp xong bộ phận đào tạo lập
kế hoạch đào tạo toàn khoá và kế hoạch giảng dạy từng kỳ cho từng lớp
Mỗi giảng viên cơ hữu sẽ phụ trách một số lớp Sau khi hoàn tất giảng dạy lớphọc phần, khoa sẽ tổ chức thi hoặc làm tiểu luận, các giảng viên sẽ đánh giá cho điểmtừng sinh viên và ghi vào phiếu điểm của lớp học phần đó, kí xác nhận và gửi cho bộphận quản lý điểm Bộ phận quản lý điểm sẽ kiểm tra lại một lần nữa, sau đó cập nhậttừng điểm từng học phần cho sinh viên Và mỗi học phần sinh viên được thi lại mộtlần Nếu sinh viên thi lại lần 2 vẫn không đạt thì phải học lại môn học đó
Cuối mỗi kỳ học, bộ phận quản lý điểm lại tính điểm trung bình chung học kỳcho từng sinh viên, thống kê kết quả học tập của từng sinh viên
Trang 20CHƯƠNG 3: CƠ SỞ LÝ THUYẾT:
3 Ngôn ngữ Flutter:
3.1 Giới thiệu về Flutter:
Flutter là mobile UI framework của Google để tạo ra các giao diện chất lượng cao trên iOS và Android trong khoảng thời gian ngắn Flutter hoạt động với những code sẵn có được sử dụng bởi các lập trình viên, các tổ chức
Flutter hoàn toàn miễn phí và cũng là mã nguồn mở
3.1.1 Lý do sử dụng Flutter:
Fast Development
Tíng năng Hot Reload hoạt động trong milliseconds để hiện thị giao diện tớibạn Sử dụng tập hợp các widget có thể customizable để xây dựng giao diện trong vàiphút Ngoài ra Hot Reload còn giúp bạn thêm các tính năng, fix bug tiết kiệm thời gianhơn mà không cần phải thông qua máy ảo, máy android hoặc iOS
Expressive and Flexible UI
Có rất nhiều các thành phần để xây dựng giao diện của Flutter vô cùng đẹp mắt theophong cách Material Design và Cupertino, hỗ trợ nhiều các APIs chuyển động, smoothscrolling
Hình 3.1 Ưu điểm về UI của flutter
Trang 21 Native Performance
Những đặc điểm chính của ngôn ngữ hướng đối tượng (Object-orientedlanguage) là tính đóng gói (encapsulation), kế thừa (inheritance), và đa hình(polymorphism) và trừu tượng (abstraction) C# hỗ trợ tất cả những đặc tính trên
Sử dụng Dart
Một ngôn ngữ lập trình hướng đối tượng do Google phát triển DART là mộtstatic type language nên nó là AOT (Ahead of Time), compile xong hết rồi mới chạy.Trong khi đó nó cũng là JIT (Just in Time) giống như các dynamic type language Khidev thì nó sử dụng JIT để hỗ trợ Hot Load và build release thì dùng AOT để tối ưuhiệu năng như một native code bình thường
Native module
Khác với JS Bridge, Flutter “nói chuyện” với các native module bằng chính cácnative interface Mặc dù vẫn được gọi là “bridge”, tuy nhiên nó nhanh hơn rất nhiều vàgân như không bị “thắc cổ chai” như React Native Ngoài ra các module này đượckiến trúc theo “plugin”, các module viết cho Flutter phải tuân thủ các rule trong này
Cá nhân mình thấy viết native module cho Flutter rất tự nhiên, không cần phải học cácsyntax macro C/C++ như RN
Luồng xử lý của Flutter
Theo doc của Flutter Engine, có tới 4 threads (runners) được sử dụng trong app:Platform Task Runner, UI Task Runner, GPU Task Runner và IO Task Runner Cácthreads này độc lập và không share memory với nhau, chúng giao tiếp với nhau thôngqua channels… tới đây ai fan golang sẽ hiểu và rất thích pattern này
Về Document
Về document: sở hữu bộ doc phải nói là không bỏ sót thứ gì Đi từ cài đặt,hướng dẫn viết app cơ bản cho tới CI/CD, debug, test và profiling Bộ profiling củaFlutter cũng cực kì hay dùng để đo đạc các chỉ số về performance khá chi tiết
Các ví dụ và kiến trúc ứng dụng
Có hẳn 1 repository trên Github đủ hết các example cho Redux, mvc, mvu… tha hồchọn
Trang 22hình 3.2 respository của flutter trên github
Trang 233.2 Nền tảng Server AWS
Amazon Web Services (AWS) là nền tảng đám mây toàn diện và được sử dụngrộng rãi nhất, cung cấp trên 175 dịch vụ đầy đủ tính năng từ các trung tâm dữ liệu trêntoàn thế giới Hàng triệu khách hàng—bao gồm các công ty khởi nghiệp tăng trưởngnhanh nhất, các tập đoàn lớn nhất cũng như các cơ quan hàng đầu của chính phủ—đềutin tưởng vào AWS để giảm chi phí, trở nên linh hoạt hơn và đổi mới nhanh hơn
AWS có nhiều dịch vụ hơn và nhiều tính năng hơn trong các dịch vụ đó, hơnbất kỳ nhà cung cấp đám mây nào khác–từ các công nghệ cơ sở hạ tầng như máy tính,
ổ lưu trữ và cơ sở dữ liệu–đến các công nghệ mới nổi, như machine learning và trí tuệnhân tạo, kho dữ liệu và phân tích, và Internet of Things Điều này giúp bạn chuyểncác ứng dụng hiện có của bạn lên đám mây nhanh hơn, dễ dàng hơn và hiệu quả hơn
về chi phí cũng như xây dựng gần như mọi thứ bạn có thể hình dung
Dịch vụ: AWS cũng có chức năng sâu nhất trong các dịch vụ đó Ví dụ, AWScung cấp nhiều loại cơ sở dữ liệu nhất được xây dựng có mục đích cho các loại ứngdụng khác nhau để bạn có thể chọn công cụ phù hợp cho công việc để có chi phí vàhiệu suất tốt nhất
Cộng đồng: AWS có cộng đồng lớn và linh hoạt nhất với hàng triệu khách hànghoạt động và hàng chục ngàn đối tác trên toàn cầu Khách hàng trên hầu hết các ngànhcông nghiệp thuộc mọi quy mô, bao gồm công ty khởi nghiệp, doanh nghiệp và tổchức công, đang chạy mọi trường hợp sử dụng có thể diễn ra trên AWS Mạng lưới đốitác AWS (APN) bao gồm hàng nghìn đơn vị tích hợp hệ thống chuyên về dịch vụ AWS
và hàng chục nghìn nhà cung cấp phần mềm độc lập (ISV) điều chỉnh công nghệ củamình để hoạt động trên AWS
Bảo mật: AWS được thiết kế để trở thành môi trường điện toán đám mây bảomật và linh hoạt nhất hiện nay Cơ sở hạ tầng cốt lõi của chúng tôi được xây dựng đểđáp ứng các yêu cầu bảo mật cho quân đội, ngân hàng toàn cầu và các tổ chức khácvới mức độ nhạy cảm cao Điều này được hỗ trợ bởi một bộ công cụ bảo mật trên đámmây chuyên sâu, với 230 tính năng cũng như dịch vụ bảo mật, tuân thủ và quản trị.AWS hỗ trợ 90 tiêu chuẩn bảo mật và chứng nhận tuân thủ Tất cả 117 dịch vụ AWSlưu trữ dữ liệu khách hàng đều cung cấp khả năng mã hóa các dữ liệu đó
Trang 24Tốc độ: Với AWS, bạn có thể tận dụng các công nghệ mới nhất để thử nghiệm
và đổi mới nhanh hơn Chúng tôi liên tục đẩy nhanh tốc độ đổi mới để phát minh racác công nghệ hoàn toàn mới mà bạn có thể sử dụng để chuyển đổi doanh nghiệp củamình Ví dụ, vào năm 2014, AWS đã tiên phong trong không gian điện toán không cómáy chủ với việc ra mắt AWS Lambda, cho phép các nhà phát triển chạy mã của họ
mà không cần cung cấp hoặc quản lý máy chủ Và AWS đã xây dựng AmazonSageMaker, một dịch vụ machine learning được quản lý hoàn toàn, trao quyền cho cácnhà phát triển và nhà khoa học mỗi ngày sử dụng machine learning–mà không cần bất
kỳ kinh nghiệm nào trước đó
Mạng lưới các khu vực AWS trên toàn cầu : AWS có cơ sở hạ tầng đám mâytoàn cầu mở rộng nhất Chưa có nhà cung cấp dịch vụ đám mây nào cung cấp nhiềuKhu vực có nhiều Vùng sẵn sàng được kết nối qua mạng có độ trễ thấp, thông lượngcao và khả năng dự phòng cao như chúng tôi AWS có 77 Vùng sẵn sàng tại 24 khuvực địa lý trên khắp thế giới và đã thông báo về kế hoạch tăng thêm 15 Vùng sẵn sàng
và 5 Khu vực AWS khác tại Ấn Độ, Indonesia, Nhật Bản, Tây Ban Nha và Thụy Sĩ.Gartner đã công nhận mô hình Khu vực AWS/Vùng sẵn sàng là phương pháp đượckhuyến nghị để chạy các ứng dụng doanh nghiệp cần độ khả dụng cao
Hình 1.3 Bản đồ nơi đặt các server của AWS
Trang 253.3 Hệ quản trị cơ sở dữ liệu PostgreSQL:
PostgreSQL sở hữu một hệ tính năng đa dạng giúp hỗ trợ các nhà phát triển xâydựng app, các nhà quản trị bảo vệ toàn vẹn dữ liệu, và tạo ra một môi trường chịu lỗifault-tolerant giúp bạn quản lý dữ liệu bất kể tập dữ liệu lớn hay nhỏ Bên cạnh hệthống nguồn mở và miễn phí, PostgreSQL cũng có khả năng mở rộng tuyệt vời Ví dụ,bạn có thể định nghĩa các kiểu dữ liệu riêng của bạn, xây dựng các hàm tùy chỉnh, hayviết mã từ các ngôn ngữ lập trình khác nhau mà không cần biên dịch lại cơ sở dữ liệu!
PostgreSQL tuân theo tiêu chuẩn SQL nhưng không mâu thuẫn với các tínhnăng truyền thống hay có thể dẫn đến các quyết định kiến trúc gây hại Nhiều tínhnăng theo tiêu chuẩn SQL được hỗ trợ, tuy nhiên đôi khi có thể có cú pháp hoặc hàmhơi khác một chút
PostgreSQL là hệ thống quản lý cơ sở dữ liệu đầu tiên triển khai tính năng kiểmsoát đồng thời nhiều phiên bản (MVCC) trước cả Oracle Tính năng MVCC cũngtương tự với các snapshot riêng biệt trong Oracle
Là hệ thống quản lý cơ sở dữ liệu quan hệ đối tượng, PostgreSQL cho phépthêm vào các tính năng tùy chỉnh được phát triển bằng các ngôn ngữ chương trìnhkhác nhau như C/C , Java,
Bên cạnh đó, khi bạn có bất kỳ vấn đề gì cần hỗ trợ, luôn có một cộng đồngnhiệt tình sẵn sàng để trợ giúp Bạn luôn có thể tìm thấy câu trả lời từ cộng đồng củaPostgreSQL về các vấn đề có thể gặp phải khi làm việc với PostgreSQL Ngoài ra,cũng có rất nhiều công ty cung cấp các dịch vụ hỗ trợ trong trường hợp bạn thực sựcần đến
3.4 Android Studio:
Android Studio là 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ệnthoạ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ênmá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
Trang 26Việ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ânhoặc laptop Sau đó chúng ta cần build ứng dụng để tạo file cài đặt Sau khi build xongthì 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ếtmộ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ựchiệ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.Một số tính năng nổi bật:
Bộ công cụ build ứng dụng dựa trên Gradle (thay vì Maven)
Chức năng dò và sửa lỗi nhanh, hướng Android
Công cụ chỉnh sửa màn hình dạng kéo thả tiện lợi
Các wizard tích hợp nhằm giúp lập trình viên tạo ứng dụng từ mẫu cósẵn
Tích hợp Google Cloud Platform, dễ dàng tích hợp với Google CloudMessaging và App Engine của Google
3.5 Git và Github:
Git là tên gọi của một Hệ thống quản lý phiên bản phân tán (Distributed VersionControl System) là một trong những hệ thống quản lý phiên bản phân tán phổ biếnnhất hiện nay Nghĩa là hệ thống giúp mỗi máy tính có thể lưu trữ nhiều phiên bảnkhác nhau của một mã nguồn được nhân bản (clone) từ một kho chứa mã nguồn(repository), mỗi thay đổi vào mã nguồn trên máy tính sẽ có thể ủy thác (commit) rồiđưa lên máy chủ nơi đặt kho chứa chính Và một máy tính khác (nếu họ có quyền truycập) cũng có thể clone lại mã nguồn từ kho chứa hoặc clone lại một tập hợp các thayđổi mới nhất trên máy tính kia Trong Git, thư mục làm việc trên máy tính gọi
là Working Tree
GitHub là một dịch vụ nổi tiếng cung cấp kho lưu trữ mã nguồn Git cho các dự
án phần mềm Github có đầy đủ những tính năng của Git, ngoài ra nó còn bổ sungnhững tính năng như mạng xã hội để các lập trình viên tương tác với nhau
Trang 27Một vài khái niệm của Git:
- Git: là prefix của các lệnh được sử dụng dưới CLI
- Branch: được hiểu như là nhánh, thể hiện sự phân chia các version khi 2 version
đó có sự sai khác nhất định và 2 version đều có sự khác nhau
- Commit: là một điểm trên cây công việc (Work Tree ) hay gọi là cây phát triểncông việc
- Clone: được gọi là nhân bản, hay thực hiện nhân bản Sử dụng để clone cácproject, repository trên các hệ thống chạy trên cơ sở là git, ví dụ như: bitbucket,github, gitlab Việc clone này sẽ sao chép repository tại commit mong muốn,dùng để tiếp tục phát triển Thao tác này sẽ tải toàn bộ mã nguồn, dữ liệu vềmáy tính của ta
- Folk: Folk là thao tác thực hiện sao chép repository của chủ sở hữu khác về gitaccount của ta Sử dụng và đối xử như 1 repository do ta tạo ra
- Repository: Kho quản lý dữ liệu, là nơi lưu trữ các dữ liệu, mã nguồn củaproject
3.6 Các thư viện được sử dụng:
3.6.1QR Scanner:
QR Scanner là một thư viện hỗ trợ việc quét mã QR code/ barcode
3.6.2 Http request:
Http request là thư viện hỗ trợ công việc CRUD data giữa client và server
3.6.3 JSON Web Token:
JSON Web Token (JWT) là một chuẩn mở, định nghĩa một cách nhỏ gọn vàkhép kín để truyền một cách an toàn thông tin giữa các bên dưới dạng đối tượngJSON Thông tin này có thể được xác minh và đáng tin cậy vì nó có chứa chữ ký số.JWTs có thể được ký bằng một thuật toán bí mật (với thuật toán HMAC) hoặc mộtpublic / private key sử dụng mã hoá RSA
Trang 28Hình 3.2 Một JSon Web Token
JWT trên bao gồm 3 phần:
Header: Header bao gồm hai phần chính:
- typ – Loại token (mặc định là JWT – cho biết đây là một Token JWT)
- alg – Thuật toán đã dùng để mã hóa (HMAC SHA256 – HS256 hoặc
RSA)
Payload: Là nơi chứa các nội dung của thông tin (claim) Thông tin truyền đi cóthể là mô tả của 1 thực thể (ví dụ như người dùng) hoặc cũng có thể là cácthông tin bổ sung thêm cho phần Header
Signature: Phần chữ ký được tạo bằng cách kết hợp 2 phần Header + Payload,rồi mã hóa nó lại bằng 1 giải thuật encode bất kỳ ví dụ như HMAC SHA-256
Hình 3.3 Các thành phần của một JSon Web Token
JSON Web Token dùng để:
Người dùng gọi authentication service để gửi username/password
Authentication service phản hồi cho người dùng mã JWT, nó sẽ định nghĩa xemuser là ai
Trang 29 Người dùng yêu cầu truy cập một dịch vụ được bảo mật bằng việc gửi tokenlên.
Lớp bảo mật sẽ check chữ ký trên token và nếu đó là quyền truy cập hợp lệ thìđược tiếp tục truy cập
3.7 ERP Odoo
Odoo là một phần mềm ERP mã nguồn mở viết bằng ngôn ngữ lập trìnhPython ERP là viết tắt của từ tiếng Anh: Enterprise Resource Planning Nói một cáchtóm gọn ERP có thể được hiểu là việc tích hợp các thành phần để quản lý một doanhnghiệp Để dễ hình dung hơn, một doanh nghiệp sẽ có nhiều bộ phận cần được quản lýnhư: quản lý kho (inventory), quản lý bán hàng (sale), quản lý nhân viên (employeee),điểm bán hàng (point of sale - POS), … và các module này được tích hợp vào mộtphần mềm quản lý đó là Odoo, thay vì mỗi bộ phận dùng một phần mềm Có thể nóigiải pháp ERP doanh nghiệp nào cũng muốn tối ưu, và Odoo ERP là một trong nhữngphần mềm ứng cử viên
Như vậy, bạn muốn hiểu sâu thêm về Odoo cũng cần phải nắm quy trình làmviệc của các thành phần trong doanh nghiệp để từ đó sử dụng Odoo hiệu quả cũng nhưtùy biến theo nhu cầu cụ thể của người dùng
Do Odoo là phần mềm mã nguồn mở nên developer có thể code thêm cácmodule (addon / extension) theo như cầu customization của người dùng, ta sẽ cần phảicode theo framework mà Odoo cung cấp
Ngôn ngữ lập trình chủ yếu: Python
Trang 30trình Python hoàn toàn tạo kiểu động và sử dụng cơ chế cấp phát bộ nhớ tự động.Python có cấu trúc dữ liệu cấp cao mạnh mẽ và cách tiếp cận đơn giản nhưng hiệu quảđối với lập trình hướng đối tượng Cú pháp lệnh của Python là điểm cộng vô cùng lớn
vì sự rõ ràng, dễ hiểu và cách gõ linh động làm cho nó nhanh chóng trở thành mộtngôn ngữ lý tưởng để viết script và phát triển ứng dụng trong nhiều lĩnh vực, ở hầu hếtcác nền tảng
Tính năng chính của Python:
Ngôn ngữ lập trình đơn giản, dễ học: Python có cú pháp rất đơn giản, rõ ràng Nó
dễ đọc và viết hơn rất nhiều khi so sánh với những ngôn ngữ lập trình khác như C++,Java, C# Python làm cho việc lập trình trở nên thú vị, cho phép bạn tập trung vàonhững giải pháp chứ không phải cú pháp
Miễn phí, mã nguồn mở: Bạn có thể tự do sử dụng và phân phối Python, thậmchí là dùng nó cho mục đích thương mại Vì là mã nguồn mở, bạn không những có thể
sử dụng các phần mềm, chương trình được viết trong Python mà còn có thể thay đổi
mã nguồn của nó Python có một cộng đồng rộng lớn, không ngừng cải thiện nó mỗilần cập nhật
Khả năng di chuyển: Các chương trình Python có thể di chuyển từ nền tảng nàysang nền tảng khác và chạy nó mà không có bất kỳ thay đổi nào Nó chạy liền mạchtrên hầu hết tất cả các nền tảng như Windows, macOS, Linux
Khả năng mở rộng và có thể nhúng: Giả sử một ứng dụng đòi hỏi sự phức tạprất lớn, bạn có thể dễ dàng kết hợp các phần code bằng C, C++ và những ngôn ngữkhác (có thể gọi được từ C) vào code Python Điều này sẽ cung cấp cho ứng dụng củabạn những tính năng tốt hơn cũng như khả năng scripting mà những ngôn ngữ lập trìnhkhác khó có thể làm được
Ngôn ngữ thông dịch cấp cao: Không giống như C/C++, với Python, bạn khôngphải lo lắng những nhiệm vụ khó khăn như quản lý bộ nhớ, dọn dẹp những dữ liệu vônghĩa, Khi chạy code Python, nó sẽ tự động chuyển đổi code sang ngôn ngữ máytính có thể hiểu Bạn không cần lo lắng về bất kỳ hoạt động ở cấp thấp nào
Thư viện tiêu chuẩn lớn để giải quyết những tác vụ phổ biến: Python có một sốlượng lớn thư viện tiêu chuẩn giúp cho công việc lập trình của bạn trở nên dễ thở hơn
Trang 31rất nhiều, đơn giản vì không phải tự viết tất cả code Ví dụ: Bạn cần kết nối cơ sở dữliệu MySQL trên Web server? Bạn có thể nhập thư viện MySQLdb và sử dụng nó.Những thư viện này được kiểm tra kỹ lưỡng và được sử dụng bởi hàng trăm người Vìvậy, bạn có thể chắc chắn rằng nó sẽ không làm hỏng code hay ứng dụng của mình.
Hướng đối tượng: Mọi thứ trong Python đều là hướng đối tượng Lập trìnhhướng đối tượng (OOP) giúp giải quyết những vấn đề phức tạp một cách trực quan.Với OOP, bạn có thể phân chia những vấn đề phức tạp thành những tập nhỏ hơn bằngcách tạo ra các đối tượng
3.9 Phương pháp triển khai:
3.9.1 Lập trình hướng đối tượng:
Lập trình hướng đối tượng (gọi tắt là OOP, từ chữ Anh ngữ object-orientedprogramming), hay còn gọi là lập trình định hướng đối tượng, là kĩ thuật lập trình hỗtrợ công nghệ đối tượng OOP được xem là giúp tăng năng suất, đơn giản hóa độ phứctạp khi bảo trì cũng như mở rộng phần mềm bằng cách cho phép lập trình viên tậptrung vào các đối tượng phần mềm ở bậc cao hơn
Đối tượng (object): Các dữ liệu và chỉ thị được kết hợp vào một đơn vị đầy đủtạo nên một đối tượng Đơn vị này tương đương với một chương trình con và vì thếcác đối tượng sẽ được chia thành hai bộ phận chính: phần các phương thức (method)
và phần các thuộc tính (attribute / properties)
Trong thực tế, các đối tượng thường được trừu tượng hóa qua việc định nghĩacủa các lớp (class)
Tập hợp các giá trị hiện có của các thuộc tính tạo nên trạng thái của một đốitượng Mỗi phương thức hay mỗi dữ liệu nội tại cùng với các tính chất được địnhnghĩa được xem là một đặc tính riêng của đối tượng
Trang 32Hình 3.4 Các đặc điểm của lập trình hướng đối tượng
Các nguyên lý của lập trình hướng đối tượng:
Tính trừu tượng (abstraction): Đây là khả năng của chương trình bỏ qua hay
không chú ý đến một số khía cạnh của thông tin mà nó đang trực tiếp làm việc lên,nghĩa là nó có khả năng tập trung vào những cốt lõi cần thiết Mỗi đối tượng phục vụnhư là một "động tử" có thể hoàn tất các công việc một cách nội bộ, báo cáo, thay đổitrạng thái của nó và liên lạc với các đối tượng khác mà không cần cho biết làm cáchnào đối tượng tiến hành được các thao tác Tính chất này thường được gọi là sự trừutượng của dữ liệu
Tính trừu tượng còn thể hiện qua việc một đối tượng ban đầu có thể có một sốđặc điểm chung cho nhiều đối tượng khác như là sự mở rộng của nó nhưng bản thânđối tượng ban đầu này có thể không có các biện pháp thi hành Tính trừu tượng nàythường được xác định trong khái niệm gọi là lớp trừu tượng hay lớp cơ sở trừu tượng
Tính đóng gói (encapsulation) và che giấu thông tin (information hiding): Tính
chất này không cho phép người sử dụng các đối tượng thay đổi trạng thái nội tại củamột đối tượng Chỉ có các phương thức nội tại của đối tượng cho phép thay đổi trạngthái của nó Việc cho phép môi trường bên ngoài tác động lên các dữ liệu nội tại củamột đối tượng theo cách nào là hoàn toàn tùy thuộc vào người viết mã Đây là tínhchất đảm bảo sự toàn vẹn của đối tượng
Trang 33Tính đa hình (polymorphism): Thể hiện thông qua việc gửi các thông điệp
(message) Việc gửi các thông điệp này có thể so sánh như việc gọi các hàm bên trongcủa một đối tượng Các phương thức dùng trả lời cho một thông điệp sẽ tùy theo đốitượng mà thông điệp đó được gửi tới sẽ có phản ứng khác nhau Người lập trình có thểđịnh nghĩa một đặc tính (chẳng hạn thông qua tên của các phương thức) cho một loạtcác đối tượng gần nhau nhưng khi thi hành thì dùng cùng một tên gọi mà sự thi hànhcủa mỗi đối tượng sẽ tự động xảy ra tương ứng theo đặc tính của từng đối tượng màkhông bị nhầm lẫn
Tính kế thừa (inheritance): Đặc tính này cho phép một đối tượng có thể có sẵn
các đặc tính mà đối tượng khác đã có thông qua kế thừa Điều này cho phép các đốitượng chia sẻ hay mở rộng các đặc tính sẵn có mà không phải tiến hành định nghĩa lại.Tuy nhiên, không phải ngôn ngữ định hướng đối tượng nào cũng có tính chất này
kế chuẩn (Design Pattern)
MVC là viết tắt của 3 từ M - Model, V - View, C - Controller Mô hình MVC làmột kiến trúc phần mềm hay mô hình thiết kế phần mềm giúp chúng ta tách ứng dụngcủa chúng ta thành những phần độc lập có những nhiệm vụ riêng biệt
ASP.NET Core thực thi mô hình MVC, tách rời với thành phần ASP.NET Web Forms
Model là thành phần chứa các phương thức xử lý logic, kết nối và truy xuất database, mô tả dữ liệu, Trong phạm vi đồ án này, chúng ta sẽ sử dụng Entity
Framework để xử lý các Model
View là thành phần hiển thị thông tin, tương tác với người dùng