1. Trang chủ
  2. » Tất cả

(Đồ án hcmute) thiết kế và xây dựng ứng dụng business weather

118 7 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Thiết kế Và Xây Dựng Ứng Dụng Business Weather
Tác giả Lâm Quang Lịch, Lưu Quang Trung
Người hướng dẫn ThS. Nguyễn Trần Thi Văn
Trường học Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh
Chuyên ngành Công nghệ thông tin
Thể loại đồ án tốt nghiệp
Năm xuất bản 2019
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 118
Dung lượng 6,25 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Cấu trúc

  • CHƯƠNG 1: CƠ SỞ LÝ THUYẾT (16)
    • 1.1 GIỚI THIỆU VỀ KOTLIN (16)
    • 1.2 GIỚI THIỆU VỀ FIREBASE & ROOM (19)
    • 1.3 MÃ NGUỒN MỞ RXJAVA & RETROFIT (24)
    • 1.4 OPENWEAHTERMAP & GOOGLE APIS (25)
    • 1.5 GIỚI THIỆU VỀ REACT JS (28)
  • CHƯƠNG 2: KHẢO SÁT HIỆN TRẠNG VÀ XÁC ĐỊNH YÊU CẦU (30)
    • 2.1 KHẢO SÁT HIỆN TRẠNG (30)
      • 2.1.1 KHẢO SÁT (30)
        • 2.1.1.1 Weather Forecast (30)
        • 2.1.1.2 Best Weather (32)
        • 2.1.1.3 Word weather forecast (33)
        • 2.1.1.4 Thời tiết Việt Nam (35)
    • 2.2 XÁC ĐỊNH YÊU CẦU (36)
      • 2.2.1 YÊU CẦU CHỨC NĂNG (36)
      • 2.2.2 YÊU CẦU PHI CHỨC NĂNG (38)
  • CHƯƠNG 3: PHÂN TÍCH YÊU CẦU VÀ THIẾT KẾ CSDL (39)
    • 3.1 MÔ TẢ CÔNG VIỆC (39)
      • 3.1.1 User (39)
      • 3.1.2 Admin (61)
    • 3.2 LƯỢC ĐỒ USECASE DIAGRAM (66)
    • 3.3 ĐẶC TẢ USECASE MỘT SỐ TÍNH NĂNG CHÍNH (67)
      • 3.3.1 Nghiệp vụ Add weather place (67)
      • 3.3.2 Nghiệp vụ Add favorite place (68)
      • 3.3.3 Nghiệp vụ Giving directions (69)
      • 3.3.4 Nghiệp vụ Remove activity log (70)
      • 3.3.5 Nghiệp vụ Edit profile (71)
    • 3.4 SEQUENCE DIAGRAM MỘT SỐ TÍNH NĂNG CHÍNH (72)
      • 3.4.1 User ..................................................................................................................... 61 .1 Nghiệp vụ Managing/Add/Remove weather place & View current/other weather (72)
        • 3.4.1.3 Nghiệp vụ Giving directions, Search original point/destination point (74)
        • 3.4.1.4 Nghiệp vụ View/Edit profile (75)
        • 3.4.1.5 Nghiệp vụ Add temporary weather place (76)
        • 3.4.1.6 Nghiệp vụ Add temporary favorite place (77)
      • 3.4.2 Admin (78)
        • 3.4.2.1 Nghiệp vụ Counting the most searched City (78)
        • 3.4.2.2 Nghiệp vụ View/Remove weather place/Search by user (78)
        • 3.4.2.3 Nghiệp vụ Managing user/Search by user (79)
        • 3.4.2.4 Nghiệp vụ View/Remove favorite place/Search by user (80)
        • 3.4.2.5 Nghiệp vụ View/Remove activity log/Search by user (80)
    • 3.5 BẢNG MÔ TẢ THUỘC TÍNH (81)
      • 3.5.1 users (81)
      • 3.5.2 places (81)
      • 3.5.3 favoriteplace (81)
      • 3.5.4 history (82)
      • 3.5.5 tempplace (82)
      • 3.5.6 tempfavplace (82)
      • 3.5.7 admin (83)
      • 3.5.8 statistics (83)
  • CHƯƠNG 4: THIẾT KẾ GIAO DIỆN VÀ XỬ LÝ (84)
    • 4.1 ỨNG DỤNG BUSINESS WEATHER (84)
      • 4.1.1 Giao diện Intro (84)
      • 4.1.2 Giao diện Login (85)
      • 4.1.3 Giao diện Sign up (86)
      • 4.1.4 Giao diện Home (87)
      • 4.1.5 Giao diện Favorite Place (88)
      • 4.1.6 Giao diện Weather Place Management (89)
      • 4.1.7 Giao diện Direction (90)
      • 4.1.8 Giao diện History (92)
      • 4.1.9 Giao diện Detail Place (93)
      • 4.1.10 Giao diện Profile (94)
      • 4.1.11 Giao diện Edit Profile (84)
    • 4.2 WEBSITE QUẢN LÝ (96)
      • 4.2.1 Trang Login (96)
      • 4.2.2 Trang User Management (97)
      • 4.2.3 Trang Weather Place Management (98)
      • 4.2.4 Trang Favorite Place Management (99)
      • 4.2.5 Trang Activity Log Management (100)
      • 4.2.6 Trang Searched City Statistics (101)
  • CHƯƠNG 5: CÀI ĐẶT (102)
    • 5.1 CÀI ĐẶT (102)
      • 5.1.1 Ngôn ngữ lập trình (102)
      • 5.1.2 Thư viện (103)
      • 5.1.3 Hệ quản trị CSDL (103)
      • 5.1.4 Sơ đồ lớp (105)
    • 5.2 KIỂM THỬ (106)
      • 5.2.1 Màn hình Home (106)
      • 5.2.2 Màn hình Weather Place Management (108)
      • 5.2.3 Màn hình Favorite Place (108)
      • 5.2.4 Màn hình Detail Place (109)
      • 5.2.5 Màn hình Direction (110)
      • 5.2.6 Màn hình History (113)
      • 5.2.7 Màn hình Profile (114)
      • 5.2.8 Màn hình Edit Profile (115)
  • TÀI LIỆU THAM KHẢO (117)

Nội dung

Cho nên chúng tôi muốn xây dựng ứng dụng thời tiết du lịch Business Weather để người dùng có thể theo dõi thời tiết ở nhiều thành phố khác nhau và các địa điểm thường ghé bên trong các t

Trang 1

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT

THÀNH PHỐ HỒ CHÍ MINH

ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ THÔNG TIN

THIẾT KẾ VÀ XÂY DỰNG ỨNG DỤNG

BUSINESS WEATHER

GVHD:NGUYỄN TRẦN THI VĂN SVTT:LÂM QUANG LỊCH MSSV:15110240

SVTH: LƯU QUANG TRUNG MSSV:15110345

SKL 0 0 5 7 3 8

Trang 2

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH

KHOA CÔNG NGHỆ THÔNG TIN

BỘ MÔN CÔNG NGHỆ PHẦN MỀM

Đề tài:

THIẾT KẾ VÀ XÂY DỰNG ỨNG DỤNG

BUSINESS WEATHER

KHÓA LUẬN TỐT NGHIỆP

GIÁO VIÊN HƯỚNG DẪN

Khóa 2015 - 2019 ThS NGUYỄN TRẦN THI VĂN

LÂM QUANG LỊCH 15110240 LƯU QUANG TRUNG 15110345

Trang 3

ĐH SƯ PHẠM KỸ THUẬT TP.HCM

KHOA CNTT

******

XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự do – Hạnh phúc

******

PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN

Họ và tên sinh viên:

Lâm Quang Lịch MSSV: 15110240

Lưu Quang Trung MSSV: 15110345

Ngành: Công nghệ thông tin

Chuyên ngành: Công nghệ phần mềm

Tên đề tài: Thiết kế và xây dựng ứng dụng Business Weather

Họ và tên Giáo viên hướng dẫn: ThS Nguyễn Trần Thi Văn

NHẬN XÉT:

1 Về nội dung đề tài và khối lượng thực hiện:

2 Ưu điểm:

3 Khuyết điểm:

4 Đề nghị cho bảo vệ hay không?

5 Đánh giá loại:

6 Điểm:

Tp Hồ Chí Minh, ngày … tháng … năm 2019

Giáo viên hướng dẫn

(Ký và ghi rõ họ tên)

Trang 4

ĐH SƯ PHẠM KỸ THUẬT TP.HCM

KHOA CNTT

******

XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự do – Hạnh phúc

******

PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN

Họ và tên sinh viên:

Lâm Quang Lịch MSSV: 15110240

Lưu Quang Trung MSSV: 15110345

Ngành: Công nghệ thông tin

Chuyên ngành: Công nghệ phần mềm

Tên đề tài: Thiết kế và xây dựng ứng dụng Business Weather

Họ và tên Giáo viên phản biện: ………

NHẬN XÉT: 1 Về nội dung đề tài và khối lượng thực hiện:

2 Ưu điểm:

3 Khuyết điểm:

4 Đề nghị cho bảo vệ hay không?

5 Đánh giá loại:

6 Điểm:

Tp Hồ Chí Minh, ngày … tháng … năm 2019

Giáo viên phản biện

(Ký và ghi rõ họ tên)

Trang 5

LỜI CẢM ƠN

Trong suốt quá trình học tập tại trường Đại Học Sư Phạm Kỹ Thuật Thành Phố Hồ Chí Minh, chúng em đã học được rất nhiều kiến thức, lời khuyên, sự chỉ bảo, sự giúp đỡ từ các thầy cô khoa Công Nghệ Thông Tin để hôm nay chúng em đã tạo ra một sản phẩm tốt nhất

từ trước đến nay của chúng em được thể hiện thông qua đề tài này – Khóa Luận Tốt Nghiệp Đầu tiên, nhóm em xin chân thành gửi lời cảm ơn đến Khoa Công nghệ thông tin, trường trường Đại Học Sư Phạm Kỹ Thuật Thành Phố Hồ Chí Minh đã tạo điều kiện cho nhóm

em thực hiện đề tài này

Thứ hai, nhóm em xin kính gửi đến thầy Nguyễn Trần Thi Văn lời cảm ơn sâu sắc nhất Trong quá trình thực hiện đề tài, Thầy đã hướng dẫn, chỉ bảo, giúp đỡ và giải đáp thắc mắc của chúng em một cách tận tình và hết sức có thể

Cuối cùng, nhóm em xin chân thành cảm ơn tập thể Giáo viên Khoa Công nghệ thông tin, trường Đại học Sư phạm kỹ thuật Thành phố Hồ Chí Minh về những bài giảng trong suốt khóa học, về những kiến thức nền tảng cũng như những kiến thức về chuyên ngành đã giúp cho nhóm em hoàn thành tốt đề tài này

Trong quá trình thực hiện đề tài, luôn có những thuận lợi và khó khăn, chúng em luôn

cố gắng giải quyết theo hướng tối ưu nhất những chắc chắn sẽ không thể tránh được sai xót Chúng em kính mong nhận được những ý kiến đóng góp quý báu và sự cảm thông của Thầy

Cô để chúng em học hỏi thêm được nhiều bài học kinh nghiệm và sẽ hoàn thành tốt hơn trong tương lai

Một lần nữa nhóm em xin chân thành cảm ơn!

Sinh viên 1: Lâm Quang Lịch

Sinh viên 2: Lưu Quang Trung

Trang 6

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCM

KHOA CNTT

******

ĐỀ CƯƠNG KHÓA LUẬN TỐT NGHIỆP

Họ và tên sinh viên:

Lâm Quang Lịch MSSV: 15110240

Lưu Quang Trung MSSV: 15110345

Thời gian làm khóa luận từ 15/03/2019 đến 28/06/2019

Ngành: Công nghệ thông tin

Chuyên ngành: Công nghệ phần mềm

Tên đề tài: Thiết kế và xây dựng ứng dụng Business Weather

Họ và tên Giáo viên hướng dẫn: ThS Nguyễn Trần Thi Văn

- Sử dụng Firebase storage để lưu trữ dữ liệu người dùng

- Sử dụng Database Room để lưu dữ liệu ở dạng local khi không có internet

- Sử dụng Retrofit, RxJava để sử dụng chức năng của API (OpenWeatherMap)

- Sử dụng chức năng do API của Google Maps (Directions API) cung cấp để làm chỉ đường tới các địa điểm

- Sử dụng chức năng do API của Open Weather Map (Weather API) cung cấp để làm chức năng xem chi tiết dự báo thời tiết

- Sử dụng Google Places SDK để sử dụng thanh tìm kiếm địa điểm được hỗ trợ bởi Google và lấy thông tin địa điểm được chọn khi tìm kiếm

- Sử dụng React Js để viết website quản lý các đối tượng dữ liệu trong ứng dụng

Trang 7

MỤC LỤC

LỜI CẢM ƠN 2

ĐỀ CƯƠNG KHÓA LUẬN TỐT NGHIỆP 3

PHẦN MỞ ĐẦU 1

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 2

1.1 GIỚI THIỆU VỀ KOTLIN 2

1.2 GIỚI THIỆU VỀ FIREBASE & ROOM 5

1.3 MÃ NGUỒN MỞ RXJAVA & RETROFIT 10

1.4 OPENWEAHTERMAP & GOOGLE APIS 11

1.5 GIỚI THIỆU VỀ REACT JS 14

CHƯƠNG 2: KHẢO SÁT HIỆN TRẠNG VÀ XÁC ĐỊNH YÊU CẦU 19

2.1 KHẢO SÁT HIỆN TRẠNG 19

2.1.1 KHẢO SÁT 19

2.1.1.1 Weather Forecast 19

2.1.1.2 Best Weather 21

2.1.1.3 Word weather forecast 22

2.1.1.4 Thời tiết Việt Nam 24

2.2 XÁC ĐỊNH YÊU CẦU 25

2.2.1 YÊU CẦU CHỨC NĂNG 25

2.2.2 YÊU CẦU PHI CHỨC NĂNG 27

CHƯƠNG 3: PHÂN TÍCH YÊU CẦU VÀ THIẾT KẾ CSDL 28

3.1 MÔ TẢ CÔNG VIỆC 28

3.1.1 User 28

3.1.2 Admin 50

3.2 LƯỢC ĐỒ USECASE DIAGRAM 55

3.3 ĐẶC TẢ USECASE MỘT SỐ TÍNH NĂNG CHÍNH 56

3.3.1 Nghiệp vụ Add weather place 56

3.3.2 Nghiệp vụ Add favorite place 57

3.3.3 Nghiệp vụ Giving directions 58

3.3.4 Nghiệp vụ Remove activity log 59

3.3.5 Nghiệp vụ Edit profile 60

3.4 SEQUENCE DIAGRAM MỘT SỐ TÍNH NĂNG CHÍNH 61

3.4.1 User 61 3.4.1.1 Nghiệp vụ Managing/Add/Remove weather place & View current/other weather

61 3.4.1.2 Nghiệp vụ Managing/Add/Remove favorite place & View favorite place details

62

Trang 8

3.4.1.3 Nghiệp vụ Giving directions, Search original point/destination point 63

3.4.1.4 Nghiệp vụ View/Edit profile 64

3.4.1.5 Nghiệp vụ Add temporary weather place 65

3.4.1.6 Nghiệp vụ Add temporary favorite place 66

3.4.2 Admin 67

3.4.2.1 Nghiệp vụ Counting the most searched City 67

3.4.2.2 Nghiệp vụ View/Remove weather place/Search by user 67

3.4.2.3 Nghiệp vụ Managing user/Search by user 68

3.4.2.4 Nghiệp vụ View/Remove favorite place/Search by user 69

3.4.2.5 Nghiệp vụ View/Remove activity log/Search by user 69

3.5 BẢNG MÔ TẢ THUỘC TÍNH 70

3.5.1 users 70

3.5.2 places 70

3.5.3 favoriteplace 70

3.5.4 history 71

3.5.5 tempplace 71

3.5.6 tempfavplace 71

3.5.7 admin 72

3.5.8 statistics 72

CHƯƠNG 4: THIẾT KẾ GIAO DIỆN VÀ XỬ LÝ 73

4.1 ỨNG DỤNG BUSINESS WEATHER 73

4.1.1 Giao diện Intro 73

4.1.2 Giao diện Login 74

4.1.3 Giao diện Sign up 75

4.1.4 Giao diện Home 76

4.1.5 Giao diện Favorite Place 77

4.1.6 Giao diện Weather Place Management 78

4.1.7 Giao diện Direction 79

4.1.8 Giao diện History 81

4.1.9 Giao diện Detail Place 82

4.1.10 Giao diện Profile 83

4.1.11 Giao diện Edit Profile 84

4.2 WEBSITE QUẢN LÝ 85

4.2.1 Trang Login 85

4.2.2 Trang User Management 86

4.2.3 Trang Weather Place Management 87

4.2.4 Trang Favorite Place Management 88

4.2.5 Trang Activity Log Management 89

4.2.6 Trang Searched City Statistics 90

CHƯƠNG 5: CÀI ĐẶT 91

Trang 9

5.1 CÀI ĐẶT 91

5.1.1 Ngôn ngữ lập trình 91

5.1.2 Thư viện 92

5.1.3 Hệ quản trị CSDL 92

5.1.4 Sơ đồ lớp 94

5.2 KIỂM THỬ 95

5.2.1 Màn hình Home 95

5.2.2 Màn hình Weather Place Management 97

5.2.3 Màn hình Favorite Place 97

5.2.4 Màn hình Detail Place 98

5.2.5 Màn hình Direction 99

5.2.6 Màn hình History 102

5.2.7 Màn hình Profile 103

5.2.8 Màn hình Edit Profile 104

PHẦN KẾT LUẬN 105

TÀI LIỆU THAM KHẢO 106

MỤC LỤC BẢNG BIỂU Bảng biểu 3.1 Bảng biểu cầu chức năng nghiệp vụ user 28

Bảng biểu 3.2 Bảng quy định / Công thức liên quan user 29

Bảng biểu 3.3 Bảng yêu cầu chức năng hệ thống user 35

Bảng biểu 3.4 Bảng biểu cầu chức năng nghiệp vụ admin 50

Bảng biểu 3.5 Bảng quy định / Công thức liên quan admin 50

Bảng biểu 3.6 Bảng yêu cầu chức năng hệ thống admin 52

Bảng biểu 3.7 Mô tả Use Case Add weather place 56

Bảng biểu 3.8 Mô tả Use Case Add favorite place 57

Bảng biểu 3.9 Mô tả Use Case Giving directions 58

Bảng biểu 3.10 Mô tả Use Case Remove activity log 59

Bảng biểu 3.11 Mô tả Use Case Edit profile 60

Bảng biểu 3.12 Bảng mô tả thuộc tính users 70

Bảng biểu 3.13 Bảng mô tả thuộc tính places 70

Bảng biểu 3.14 Bảng mô tả thuộc tính favoriteplace 70

Bảng biểu 3.15 Bảng mô tả thuộc tính history 71

Bảng biểu 3.16 Bảng mô tả thuộc tính tempplace 71

Trang 10

Bảng biểu 3.17 Bảng mô tả thuộc tính tempfavplace 71

Bảng biểu 3.18 Bảng mô tả thuộc tính admin 72

Bảng biểu 3.19 Bảng mô tả thuộc tính statistics 72

Bảng biểu 4.1 Bảng mô tả xử lý giao diện Intro 73

Bảng biểu 4.2 Bảng mô tả xử lý giao diện Login 74

Bảng biểu 4.3 Bảng mô tả xử lý giao diện Sign up 75

Bảng biểu 4.4 Bảng mô tả xử lý giao diện Home 76

Bảng biểu 4.5 Bảng mô tả xử lý giao diện Favorite Places 77

Bảng biểu 4.6 Bảng mô tả xử lý giao diện Weather Place Management 78

Bảng biểu 4.7 Bảng mô tả xử lý giao diện Direction 80

Bảng biểu 4.8 Bảng mô tả xử lý giao diện History 82

Bảng biểu 4.9 Bảng mô tả xử lý giao diện Detail Place 83

Bảng biểu 4.10 Bảng mô tả xử lý giao diện Profile 83

Bảng biểu 4.11 Bảng mô tả xử lý giao diện Edit Profile 85

Bảng biểu 4.12 Bảng mô tả xử lý giao diện trang Login 85

Bảng biểu 4.13 Bảng mô tả xử lý giao diện trang User Managegment 86

Bảng biểu 4.14 Bảng mô tả xử lý giao diện trang Weather Place Management 87

Bảng biểu 4.15 Bảng mô tả xử lý giao diện trang Favorite Place Management 88

Bảng biểu 4.16 Bảng mô tả xử lý giao diện trang Activity Log Management 89

Bảng biểu 5.1 Kiểm thử màn hình Home 95

Bảng biểu 5.2 Kiểm thử màn hình Weather Place Management 97

Bảng biểu 5.3 Kiểm thử màn hình Favorite Place 97

Bảng biểu 5.4 Kiểm thử màn hình Detail Place 98

Bảng biểu 5.5 Kiểm thử màn hình Direction 99

Bảng biểu 5.6 Kiểm thử màn hình History 102

Bảng biểu 5.7 Kiểm thử màn hình Profile 103

Bảng biểu 5.8 Kiểm thử màn hình EditProfile 104

MỤC LỤC HÌNH ẢNH Hình 1.1 Các thành phần chính trong Room 9

Hình 2.1 Hình ảnh ứng dụng Weather Forecast 1 19

Hình 2.2 Hình ảnh ứng dụng Weather Forecast 2 19

Trang 11

Hình 2.4 Hình ảnh ứng dụng Weather Forecast 4 20

Hình 2.5 Hình ảnh ứng dụng Best Weather 1 21

Hình 2.6 Hình ảnh ứng dụng Best Weather 2 21

Hình 2.7 Hình ảnh ứng dụng Best Weather 3 21

Hình 2.8 Hình ảnh ứng dụng Best Weather 4 21

Hình 2.9 Hình ảnh ứng dụng Word weather forecast 1 22

Hình 2.10 Hình ảnh ứng dụng Word weather forecast 2 22

Hình 2.11 Hình ảnh ứng dụng Word weather forecast 3 23

Hình 2.12 Hình ảnh ứng dụng Word weather forecast 4 23

Hình 2.13 Hình ảnh ứng dụng Thời tiết Việt Nam 1 24

Hình 2.14 Hình ảnh ứng dụng Thời tiết Việt Nam 2 24

Hình 2.15 Hình ảnh ứng dụng Thời tiết Việt Nam 3 24

Hình 2.16 Hình ảnh ứng dụng Thời tiết Việt Nam 4 24

Hình 3.1 Hình ảnh Usecase Diagram của User 55

Hình 3.2 Hình ảnh Usecase Diagram của Admin 56

Hình 3.3 Sequence Diagram Nghiệp vụ Managing/Add/Remove weather place & View current/other weather 61

Hình 3.4 Sequence Diagram Nghiệp vụ Managing/Add/Remove favorite place & View favorite place details 62

Hình 3.5 Sequence Diagram Nghiệp vụ Giving directions, Search original point/destination point 63

Hình 3.6 Sequence Diagram Nghiệp vụ View/Edit profile 64

Hình 3.7 Sequence Diagram Nghiệp vụ Add temporary weather place 65

Hình 3.8 Sequence Diagram Nghiệp vụ Add temporary favorite place 66

Hình 3.9 Nghiệp vụ Counting the most searced City 67

Hình 3.10 Sequence Diagram Nghiệp vụ View/Remove weather place/Search by user 67

Hình 3.11 Sequence Diagram Nghiệp vụ Managing user/Search by user 68

Hình 3.12 Sequence Diagram Nghiệp vụ View/Remove favorite place/Search by user 68

Hình 3.13 Sequence Diagram Nghiệp vụ View/Remove activity log/Search by user 69

Hình 4.1 Giao diện Intro 73

Hình 4.2 Giao diện Login 74

Hình 4.3 Giao diện Sign up 75

Trang 12

Hình 4.5 Giao diện FavPlace 1 77

Hình 4.6 Giao diện FavPlace 2 77

Hình 4.7 Giao diện FavPlace 3 77

Hình 4.8 Giao diện Click to Weather Place Management 78

Hình 4.9 Giao diện Weather Place Management 78

Hình 4.10 Giao diện Tìm kiếm địa điểm 78

Hình 4.11 Giao diện Direction 1 79

Hình 4.12 Giao diện Direction 2 79

Hình 4.13 Giao diện Direction - Stepbystep 80

Hình 4.14 Giao diện Direction – Start 80

Hình 4.15 Giao diện History 1 81

Hình 4.16 Giao diện History 2 81

Hình 4.17 Giao diện History 3 81

Hình 4.18 Giao diện Detail Place 82

Hình 4.19 Giao diện Profile 83

Hình 4.20 Giao diện Edit Profile 84

Hình 4.21 Giao diện Edit Profile 2 84

Hình 4.22 Giao diện Password Form 84

Hình 4.23 Giao diện Edit Profile Form 84

Hình 4.24 Giao diện trang Login 85

Hình 4.25 Giao diện trang User Management 86

Hình 4.26 Giao diện User Information Modal trong trang User Management 86

Hình 4.27 Giao diện trangWeather Place Management 87

Hình 4.28 Giao diện trang Favorite Place Management 88

Hình 4.29 Giao diện trang Activity Log Management 89

Hình 4.30 Giao diện trang Searched City Statistics 90

Hình 5.1 Sơ đồ lớp 94

Trang 13

2 30/03 – 12/04

(Tuần 3 + 4)

- Thiết kế giao diện

- Thiết kế CSDL và triển khai trên firebase

Người thực hiện: Lịch + Trung

3 13/04 – 26/04

(Tuần 5 + 6)

- Xử lý chức năng đăng nhập

- Xử lý chức năng đăng ký

- Xử lý chức năng hiển thị thời tiết

- Xử lý chức năng hiển thị profile

- Xử lý chức năng sửa profile

- Xử lý chức năng tìm kiếm địa điểm

- Xử lý chức năng thêm/xóa địa điểm tìm kiếm

- Xử lý chức năng đăng nhập trên website quản lý

- Xử lý chức năng quản lý người dùng trên website quản lý

- Xử lý chức năng quản lý địa điểm thời tiết trên website quản lý

- Xử lý chức năng quản lý địa điểm yêu thích trên website quản lý

Người thực hiện: Lịch + Trung

Trang 14

7 15/06 – 28/06

(Tuần 14 + 15) - Hoàn tất chương trình

Người thực hiện: Lịch + Trung

Ý kiến của Giáo viên hướng dẫn Ngày … tháng … năm 2019

(Ký và ghi rõ họ tên) Người viết đề cương

Trang 15

PHẦN MỞ ĐẦU

PHẦN MỞ ĐẦU

1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI

Ứng dụng Business Weather nhắm vào đối tượng những người đi làm có mật độ đi công tác hay du lịch thường xuyên hoặc mang tính tương đối Cứ mỗi lần đi công tác hay

du lịch họ thường phải kiểm tra thời tiết của thành phố đó hay tìm kiếm các địa điểm ở thành phố để ghé đến nhằm đảm bảo sự thuận lợi nhất có thể, bình quân mỗi người sẽ có vài thành phố hoặc địa điểm họ thường ghé đến để công tác hay du lịch mang tính lặp lại Cho nên chúng tôi muốn xây dựng ứng dụng thời tiết du lịch Business Weather để người dùng có thể theo dõi thời tiết ở nhiều thành phố khác nhau và các địa điểm thường ghé bên trong các thành phố đó

3 ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU

- Tìm hiểu về ngôn ngữ lập trình Kotlin

- Tìm hiểu về các API: Google Maps APIs, OpenWeatherMap APIs

- Tìm hiểu về các ứng dụng thời tiết liên quan

4 KẾT QUẢ DỰ KIẾN

- Hoàn thành ứng dụng đúng tiến độ

- Ứng dụng có đầy đủ chức năng đã đề ra

Trang 16

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1.1 GIỚI THIỆU VỀ KOTLIN

Kotlin là một ngôn ngữ lập trình kiểu tĩnh chạy trên máy ảo Java (JVM) và có thể được biên dịch sang mã nguồn JavaScript hay sử dụng cơ sở hạ tầng trình biên dịch LLVM Nó được tài trợ và phát triển bởi bởi JetBrains Mặc dù cú pháp không tương thích với Java, nhưng hiện thực JVM của thư viện chuẩn Kotlin được thiết kế để tương tác với mã Java và dựa vào mã Java từ Java Class Library có sẵn, ví dụ như collections framework Kotlin sử dụng suy luận kiểu một cách tích cực để xác định kiểu của giá trị và biểu thức vốn không được nêu rõ Điều này giúp giảm tính dài dòng của ngôn ngữ so với Java, vốn thường đòi hỏi toàn bộ đặc kiểu một cách dư thừa mãi đến phiên bản 10 Mã Kotlin có thể chạy trên JVM đến phiên bản Java 11 mới nhất

Kể từ Android Studio 3.0 (phát hành vào tháng 10 năm 2017), Kotlin được Google hỗ trợ đầy đủ để sử dụng cho việc lập trình ứng dụng cho hệ điều hành Android của họ, và được nhúng trực tiếp vào trong gói cài đặt của IDE đó để thay thế cho trình biên dịch Java tiêu chuẩn Trình biên dịch Android Kotlin cho phép người dùng chọn lựa giữa hướng đến

mã bytecode tương thích với Java 6, hay Java 8

1.1.1 Kotlin Và Android

Lập trình Android là một trong những lĩnh vực quan trọng mà JetBrains hướng đến với Kotlin Ngôn ngữ mang đến tính tương thích ngược với Java 6 và 7, các phiên bản của Java hầu hết đều tương thích chặt chẽ với Android JetBrains cũng hy vọng Kotlin

sẽ được sử dụng trong các lĩnh vực khác chẳng hạn như các ứng dụng lớn và phức tạp,

đề cao hiệu suất

Các nhà phát triển không có lựa chọn thay thế cho việc phát triển ứng dụng Android bằng ngôn ngữ Java Mặc dù được sử dụng rộng rãi, nhưng trong quá trình hoạt động ngôn ngữ Java sinh ra rất nhiều file rác Java 8 đã giải quyết một số vấn đề ngôn ngữ và đặc biệt hơn là với Java 10 Để có được nhiều lợi ích từ việc chỉnh sửa trong hai phiên bản này, bạn phải đặt SDK tối thiểu sang Android 24 chỉ để sử dụng Java 8 Kotlin nhắm đến việc lấp đầy khoảng trống đó của một ngôn ngữ hiện đại đang thiếu cho nền tảng Android

Trang 17

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT

1.1.2 Ưu Nhược Điểm Của Kotlin

1.1.2.1 Ưu điểm:

Có thể thay thế cho Java:

Một trong những thế mạnh lớn nhất của Kotlin như là một ứng viên để thay thế cho Java

là khả năng tương tác rất tốt giữa Java và Kotlin, bạn có thể thậm chí có code Java và Kotlin tồn tại song song trong cùng dự án, và tất cả mọi thứ vẫn sẽ được biên dịch một cách hoàn hảo Vì Kotlin là hoàn toàn tương thích với Java, nên cũng có thể sử dụng phần lớn các thư viện Java và các framework trong dự án Kotlin của bạn, thậm chí nâng cao các framework dựa vào chú thích xử lý

Dễ học

Kotlin nhằm mục đích là nâng cao hơn so với Java, chứ không phải hoàn toàn viết lại, rất nhiều các kỹ năng đã có trong việc code Java của bạn vẫn được áp dụng đối với dự án Kotlin Kotlin cũng được thiết kế để có thể dễ học cho các nhà phát triển Java, họ sẽ cảm thấy rằng hầu hết cú pháp của Kotlin đều quen thuộc Ví dụ, code được sử dụng để tạo ra

một lớp mới trong Kotlin rất giống với Java: class MainActivity: AppCompatActivity () {

Trang 18

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT

Code ngắn gọn hơn:

Nếu bạn so sánh một lớp Java và một lớp Kotlin cho ra cùng một kết quả, thì cái được viết trong Kotlin thường sẽ gọn gàng hơn nhiều so với những gì được viết bằng Java Kotlin đặc biệt tốt trong việc giảm số lượng code mà bạn cần phải viết, làm cho việc viết code trong Kotlin trở thành một trải nghiệm thú vị hơn nhiều so với việc viết code trong nhiều ngôn ngữ khác như Java Đặc biệt, các extension của Kotlin Android cho phép bạn nhập tham chiếu đến một View vào một tập tin Activity, từ đó bạn có thể làm việc với giao diện như thể nó là một phần của Activity đó

Ví dụ: TextView text = (TextView) findViewById(R.id.myTextView);

text.setText ("Hello World");

Thành gọn gàng hơn nhiều: myTextView.setText("Hello World")

1.1.2.2 Nhược điểm:

Không có ngôn ngữ lập trình nào là hoàn hảo, Kotlin có rất nhiều thứ để cung cấp cho các nhà phát triển Android, nó vẫn có một số nhược điểm mà bạn cần lưu ý:

Thêm thời gian chạy Runtime

Thư viện tiêu chuẩn của Kotlin và runtime sẽ làm tăng kích thước tập tin apk của bạn Mặc dù nó chỉ tương đương với khoảng 800KB, nhưng nếu ứng dụng của bạn đã lớn sẵn rồi thì 800KB phụ có thể làm nó phình to và khiến người dùng nghĩ lại trước khi tải về ứng dụng của bạn

Không hẳn là code dễ đọc đối với beginer

Mặc dù cú pháp ngắn gọn của Kotlin là một trong những thế mạnh lớn nhất của ngôn ngữ, nhưng bạn có thể thấy một số khó khăn ban đầu, đơn giản bởi vì có rất nhiều thứ đang được thực hiện trong một số lượng nhỏ code đó Java có thể dài dòng hơn, nhưng ngược lại tất cả mọi thứ đều rõ ràng, có nghĩa là những người không quen code Java có xu hướng dễ dàng hơn để hiểu so Kotlin

Thiếu hỗ trợ chính thức

Kotlin có thể được trợ tốt trong Android Studio, nhưng cần ghi nhớ rằng Kotlin không được xác nhận chính thức là của Google.Ngoài ra, tính năng tự động hoàn tác và biên dịch trong Android Studio có xu hướng chạy hơi chậm khi bạn làm việc với Kotlin so với một

dự án thuần Java

Trang 19

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT

1.2 GIỚI THIỆU VỀ FIREBASE & ROOM

1.2.1 Firebase

Firebase là một nền tảng ứng dụng di động và web với các công cụ và hạ tầng được thiết kế để giúp các lập trình viên xây dựng các ứng dụng chất lượng cao Với Google Firebase, bạn có thể tạo ra các ứng dụng chat như Yahoo Message của ngày xưa hoặc như Facebook Messager của ngày nay trong thời gian cực ngắn như khoảng một ngày thậm chí là vài giờ bởi đơn giản là bạn chỉ cần lo phần client còn phần server và database đã có firebase lo Firebase là sự kết hợp giữa nền tảng cloud với hệ thống máy chủ cực kì mạnh

mẽ tới từ Google, để cung cấp cho chúng ta những API đơn giản, mạnh mẽ và đa nền tảng trong việc quản lý, sử dụng database Cụ thể hơn Google Firebase cung cấp tới chúng ta những chức năng chính sau:

1.2.1.1 Realtime Database – Cơ sở dữ liệu thời gian thực

Firebase lưu trữ dữ liệu database dưới dạng JSON và thực hiện đồng bộ database tới tất cả các client theo thời gian thực Cụ thể hơn là bạn có thể xây dựng được client

đa nền tảng (cross-platform client) và tất cả các client này sẽ cùng sử dụng chung 1 database đến từ Firebase và có thể tự động cập nhật mỗi khi dữ liệu trong database được thêm mới hoặc sửa đổi Ngoài ra Firebase còn cho phép bạn phân quyền một các đơn giản bằng cú pháp tương tự như javascrip

1.2.1.2 Firebase Authentication – Hệ thống xác thực của Firebase

Với Firebase bạn có thể dễ dàng tích hợp các công nghệ xác thực của Google, Facebook, Twitter, … hoặc một hệ thống xác thực mà bạn tự mình tạo ra vào trong ứng dụng của bạn ở bất kì nền tảng nào như Android, iOS hoặc Web

Trang 20

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT

1.2.1.3 Firebase Storage

Được xây dựng cho các nhà phát triển ứng dụng, để lưu trữ và phục vụ nội dung

do người dung tạo ra chẳng hạn như hình ảnh, video, hay dữ liệu dạng file

Firebase Storage cung cấp các API cho việc uploads và download các file từ app của bạn một cách bảo mật và bạn không cần quan tâm đến chất lượng đường truyền mạng

Firebase Storage được xây dựng trên nền tảng Google Cloud Platform nên có nhiều lợi thế Một số điểm mạnh cụ thể của Firebase:

- Robust: Firebase Storage thực hiện việc upload và download không phụ thuộc vào chất lượng đường truyền mạng hơn nữa các quá trình đó có thể bắt đầu lại khi bị tạm dừng giúp tiết kiệm thời gian và băng thông

- Secure: Được tích hợp Firebase Authentication cho việc bảo mật nên dễ dàng quản lý quyền truy cập vào các files

- Scalable: Firebase Storage được xây dựng trên nền tảng Google Cloud Platform nên khả năng mở rộng có thể lên đến hàng Petabyte dữ liệu

1.2.1.4 Firebase Hosting

Các bạn có thể triển khai một ứng dụng nền web nhanh chóng với hệ thống Firebase, và các dữ liệu sẽ được lưu trữ đám mây đồng thời được bảo mật thông qua

giao thức truy cập SSL.Các ứng dụng sẽ được cấp 1 tên miền dạng *.firebaseapp.com

hoặc bạn có thể trả tiền để sử dụng tên miền của riêng mình

1.2.1.5 Những Lợi Ích Từ Việc Sử Dụng Google Firebase

Ở phía trên là các chức năng của google firebase, vậy các chức năng đó sẽ đem lại cho bạn những lợi ích gì, có lẽ một số bạn đã mường tượng ra rồi nhưng cũng có bạn

có lẽ vẫn còn mơ hồ vì vậy hãy đọc kĩ phần này sẽ biết câu trả lời chính xác nhất

Triển khai ứng dụng nhanh

Với Firebase bạn có thể giảm bớt rất nhiều thời gian cho việc viết các dòng code để quản lý và đồng bộ cơ sở dữ liệu, mọi việc sẽ diễn ra hoàn toàn tự động với các API của Firebase Không chỉ có vậy Firebase còn hỗ trợ đã nền tảng nên bạn sẽ càng đỡ mất thời gian rất nhiều khi ứng dụng bạn muốn xây dựng là ứng dụng đa nền tảng Không chỉ

Trang 21

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT

nhanh chóng trong việc xây dựng database, Google Firebase còn giúp ta đơn giản hóa quá trình đăng kí và đăng nhập vào ứng dụng bằng các sử dụng hệ thống xác thực do chính Firebase cung cấp

Bảo mật

Triển khai ứng dụng nhanh Firebase hoạt động dựa trên nền tảng cloud và thực hiện kết nối thông qua giao thức bảo mật SSL, chính vì vậy bạn sẽ bớt lo lắng rất nhiều về việc bảo mật của dữ liệu cũng như đường truyền giữa client và server Không chỉ có vậy, việc cho phép phân quyền người dùng database bằng cú pháp javascipt cũng nâng cao hơn nhiều độ bảo mật cho ứng dụng của bạn, bởi chỉ những user mà bạn cho phép mới có thể có quyền chỉnh sửa cơ sở dữ liệu

Tính linh hoạt và khả năng mở rộng

Sử dụng Firebase sẽ giúp bạn dễ dàng hơn rất nhiều mỗi khi cần nâng cấp hay mở rộng dịch vụ Ngoài ra firebase còn cho phép bạn tự xây dựng server của riêng mình để bạn có thể thuận tiện hơn trong quá trình quản lý Việc Firebase sử dụng NoSQL, giúp cho database của bạn sẽ không bị bó buộc trong các bảng và các trường mà bạn có thể tùy ý xây dựng database theo cấu trúc của riêng bạn

Sự ổn định

Firebase hoạt động dựa trên nền tảng cloud đến từ Google vì vậy hầu như bạn không bao giờ phải lo lắng về việc sập server, tấn công mạng như DDOS, tốc độ kết nối lúc nhanh lúc chậm, … nữa, bởi đơn giản là Firebase hoạt động trên hệ thống server của Google Hơn nữa nhờ hoạt động trên nền tảng Cloud nên việc nâng cấp, bảo trì server cũng diễn ra rất đơn giản mà không cần phải dừng server để nâng cấp như truyền thống

Giá thành

Google Firebase có rất nhiều gói dịch vụ với các mức dung lượng lưu trữ cũng như băng thông khác nhau với mức giá dao động từ Free đến $1500 đủ để đáp ứng được nhu cầu của tất cả các đối tượng Chính vì vậy bạn có thể lựa chọn gói dịch vụ phù hợp nhất với nhu cầu của mình Điều này giúp bạn tới ưu hóa được vốn đầu tư và vận hành của mình tùy theo số lượng người sử dụng

Trang 22

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT

1.2.2 Room

Room là một Persistence Library được google giới thiệu trong sự kiện google I/O năm 2017, nó là một abstract layer cung cấp cách thức truy cập thao tác với dữ liệu trong SQLite Các ứng dụng sử dụng một lượng lớn dữ liệu có cấu trúc có thể hưởng lợi lớn từ việc lưu dữ liệu trên local thông qua Room Trường hợp thường gặp nhất là chỉ cache những dữ liệu có liên quan, như vậy thì khi thiết bị không có kết nối internet thì user vẫn

có thể truy cập data đấy khi đang offline Mọi dữ liệu được phát sinh hay thay đổi do user sau đó sẽ được đồng bộ với server khi họ online trở lại

sẽ được pesist trong database trừ trường hợp bị chú thích là @Ignore

Entity

Vơi mỗi Object được định nghĩa với anotation @Entity Room sẽ tạo một table cho đối tượng này trong database với name là tableName được chú thích Room sẽ tạo các cột tương ứng với số field được khai báo trong object Nếu không muốn lưu trữ bạn có thể sử dụng anotation @Ignore Bạn có thể custom lại tên của cột thông qua anotaion

Trang 23

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT

Primary key

Mỗi Object phải xác định ít nhất 1 trường làm khóa chính Ngay cả khi chỉ có 1 trường, vẫn cần chú thích trường này bằng chú thích @PrimaryKey Ngoài ra, nếu muốn gán ID tự động cho các thực thể, có thể đặt thuộc tính autoGenerate vào @PrimaryKey

Ví dụ: @PrimaryKey (autoGenerate = true) private int mId;

Indices and uniqueness

Trường hợp các bạn muốn đánh index cho một số trường trong database để tăng tốc

độ truy vấn các bạn có thể sử dụng như sau:

Ví dụ: @Entity (indices = {@Index (value = {"first_name", "last_name"}})

Một số trường hợp các bạn có thể muốn một số trường là duy nhất trong database ví

dụ first_name và last_name không thể có bản ghi nào trùng nhau các bạn có thể thêm unique như sau:

@Entity (indices = {@Index (value = {"first_name", "last_name"}, unique = true)})

Nested objects

Trong một số trường hợp các bạn tạo ra object với các nested object, các bạn không

có nhu cầu lưu chúng thành 1 bảng riêng mà đơn giản chỉ giống như 1 column bình thường các bạn có thể sử dụng anotaion @Embedded cho chúng giống như ví dụ cho Place trong object User dưới đây:

Ví dụ: @Embedded private Place mPlace;

1.2.2.2 DAO (Data Access Objects)

Đây là component đại diện cho class hoặc interface như một đối tượng truy cập

dữ liệu (DAO) DAO là thành phần chính của Room chịu trách nhiệm trong việc định nghĩa các phương thức truy cập CSDL Các class được chú thích với @Database phải chứa một phương thức trừu tượng có số lượng đối số truyền vào là 0 và đối tượng trả

về là đối tượng của lớp được chú thích bởi @Dao

1.2.2.3 Database

Có thể dùng componenet này để tạo database holder Annotation sẽ cung cấp danh sách các thực thể và nội dung class sẽ định nghĩa danh sách các DAO của CSDL,

Trang 24

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT

nó cũng là điểm truy cập chính cho các kết nối phía dưới Annotated class nên để là lớp abstract extends RoomDatabase, vì tại thời điểm runtime thì dev có thể nhận được một instance của nó bằng cách gọi Room.databaseBuilder()

1.3 MÃ NGUỒN MỞ RXJAVA & RETROFIT

1.3.1 RxJava

- RxJava là thư viện mã nguồn mở implement ReactiveX trên Java Có 2 lớp chính là Observable và Subscriber

- Observable là một lớp đưa ra dòng dữ liệu hoặc sự kiện (event) Flow của Observable

là đưa ra một hoặc nhiều các items, sau đó gọi kết thúc thành công hoặc lỗi

- Subscriber lắng nghe flow, thực thi các hành động trên dòng dữ liệu hoặc sự kiện được đưa ra bởi Observable

- Một Observable có thể có một hoặc nhiều Subcriber Mỗi item được đưa ra bởi Observable, nó sẽ được bắt bởi phương thức Subcriber.onNext()

- Mỗi Observable kết thúc sẽ gọi phương thức Subscriber.onCompleted() hoặc Subcriber.onError()

1.3.2 Retrofit

- Nói một cách dễ hiểu Retrofit là một thư viện giúp phân tích cú pháp phản hồi API

dễ dàng và được xử lý tốt hơn để sử dụng trong ứng dụng Theo định

nghĩa của Square (nhà phát triển Retrofit):

A type-safe HTTP client for Android and Java

- Retrofit là một type-safe HTTP client cho Java và Android được phát triển bởi Square 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

- Type-safe một ví dụ đơn giản là trình biên dịch sẽ xác nhận hợp lệ các kiểu dữ liệu trong khi biên dịch và ném một lỗi nếu bạn cố gán kiểu sai cho một biến

- 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

Trang 25

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT

1.3.2.1 Retrofit Annotations

- Sử dụng Annotations để mô tả yêu cầu HTTP:

- Hỗ trợ tham số URL và tham số truy vấn

- Chuyển đổi đối tượng để yêu cầu nội dung

- Multipart request body và file upload

- Chúng ta có thể nối thêm paramater vào sau URL bằng cách sử dụng

@Query @GET("group/{id}/users") Call<List<User>>

groupList(@Path("id") int groupId, @Query("sort") String sort);

1.3.2.1.3 Request Body

- Một đối tượng có thể được chỉ định để sử dụng làm phần thân yêu cầu HTTP với Annotation @Body

@POST("users/new") Call<User> createUser (@Body User user);

- Đối tượng cũng sẽ được chuyển đổi bằng cách sử dụng Converter được chỉ định trên instance của Retrofit Nếu không có Converter nào được thêm vào, chỉ có thể sử dụng RequestBody

1.4 OPENWEAHTERMAP & GOOGLE APIS

1.4.1 OpenWeatherMap API

API này cung cấp dịch vụ dữ liệu thời tiết và dự báo miễn phí, thích hợp cho bất kỳ dịch vụ bản đồ như các ứng dụng web và điện thoại thông minh Ý tưởng được lấy cảm hứng từ OpenStreetMap và Wikipedia nhằm cung cấp thông tin miễn phí và sẵn có cho mọi người

Trang 26

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT

OpenWeatherMap cung cấp nhiều dữ liệu thời tiết như bản đồ thời tiết hiện tại, dự báo tuần, lượng mưa, gió, mây, dữ liệu từ các trạm thời tiết và nhiều thứ khác Dữ liệu thời tiết được nhận từ các dịch vụ phát sóng khí tượng toàn cầu và hơn 40.000 trạm khí tượng Bạn có thể nhận được bất kỳ dữ liệu thời tiết nào cho ứng dụng của bạn bằng cách

sử dụng chuỗi JSON hoặc XML

Các tính năng nổi bật mà API cung cấp:

1.4.1.1 Dữ liệu thời tiết hiện tại (Current Weather Data)

Truy cập dữ liệu thời tiết hiện tại cho bất kỳ vị trí nào bao gồm hơn 200.000 thành phố, Thời tiết hiện tại thường xuyên được cập nhật dựa trên các mô hình và dữ liệu toàn cầu từ hơn 40.000 trạm thời tiết Dữ liệu có sẵn ở định dạng JSON, XML hoặc HTML Có sẵn ở bản miễn phí và tất cả các tài khoản trả phí khác

1.4.1.2 Dự báo thời tiết 5 ngày tới mỗi 3 giờ

Dự báo 5 ngày có sẵn tại bất kỳ địa điểm hoặc thành phố nào Dự báo 5 ngày bao gồm dữ liệu thời tiết cứ sau 3 giờ Dự báo có sẵn trong JSON và XML Có sẵn ở bản miễn phí và tất cả các tài khoản trả phí khác

1.4.1.3 Dự báo 16 ngày tới mỗi ngày

Dự báo 16 ngày có sẵn tại bất kỳ địa điểm hoặc thành phố nào Dự báo 16 ngày bao gồm thời tiết hàng ngày và có sẵn trong JSON và XML

1.4.1.4 Dữ liệu lịch sử thời tiết

API OpenWeatherMap cung cấp dữ liệu lịch sử thời tiết cho hơn 37.000 thành phố Dữ liệu lịch sử trong 1 tháng trước đó có sẵn trong tài khoản Starter, cho 1 năm trước trong tài khoản Medium và trong 5 năm trong History Bulk

1.4.1.5 Trạm thời tiết (Weather Stations)

API để quản lý các trạm thời tiết cá nhân của bạn Tạo trạm và các phép đo đạc Nhận các phép đo tổng hợp từ trạm Có sẵn miễn phí và tất cả các tài khoản trả phí khác

1.4.1.6 Thông báo thời tiết

Cú pháp đơn giản để tạo ra các trigger sẽ hoạt động khi xảy ra các điều kiện thời tiết cụ thể (nhiệt độ, độ ẩm, áp suất, vv) trong một khoảng thời gian nhất định Các cảnh

Trang 27

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT

báo sẽ được tạo trong dịch vụ của OpenWeatherMap sau khi thực hiện các điều kiện kích hoạt

1.4.2 Google APIs

API Google cung cấp cho bạn quyền truy cập vào Google Maps, Google Drive, YouTube và nhiều sản phẩm khác của Google Để giúp việc code dựa vào các API này dễ dàng hơn, Google cung cấp các thư viện máy khách có thể giảm số lượng mã bạn cần viết

và làm cho mã của bạn mạnh mẽ hơn như: Java, Python, Javascript, NET, Ruby

Các API mà ứng dụng sẽ sử dụng:

1.4.2.1 Directions

Directions API là dịch vụ tính toán chỉ đường giữa các vị trí Bạn có thể tìm kiếm chỉ đường cho một số phương thức vận chuyển, bao gồm quá cảnh, lái xe, đi bộ hoặc đi xe đạp

Directions API giúp ứng dụng truy cập định tuyến lái xe (driving), đi xe đạp (cycling), đi bộ (walking) và giao thông công cộng (public transportation) bằng cách sử dụng yêu cầu HTTP Điểm tham chiếu (Waypoints) cung cấp khả năng thay đổi tuyến đường thông qua một vị trí cụ thể Chỉ định nguồn gốc, điểm đến và điểm tham chiếu dưới dạng chuỗi văn bản (ví dụ: "Chicago, IL" hoặc "Darwin, NT, Australia") hoặc theo tọa độ vĩ độ / kinh độ

1.4.2.2 Places SDK for Android

The Places SDK for Android cho phép bạn xây dựng các ứng dụng nhận biết vị trí (location-aware apps) đáp ứng theo ngữ cảnh cho các doanh nghiệp địa phương và các địa điểm khác gần thiết bị Điều này có nghĩa là bạn có thể xây dựng các ứng dụng dựa trên các địa điểm có ý nghĩa đối với người dùng

Các interfaces sau đây cung cấp các điểm truy cập chính cho Places SDK for Android:

- Places cung cấp quyền truy cập vào cơ sở dữ liệu của Google về thông tin địa điểm và thông tin doanh nghiệp, cũng như địa điểm hiện tại của thiết bị

- Autocomplete cung cấp các tiện ích được tạo sẵn để trả về dự đoán vị trí nhằm đáp ứng các truy vấn tìm kiếm của người dùng

Trang 28

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT

Một địa điểm được định nghĩa là một không gian vật lý có tên Một cách nghĩ khác về một địa điểm là bất cứ thứ gì bạn có thể tìm thấy trên bản đồ

- Reverse Geocoding là quá trình chuyển đổi tọa độ địa lý thành địa chỉ có thể đọc

- Ngoài ra, Geocoding API còn được sử dụng để tìm địa chỉ cho một ID địa điểm

cụ thể

1.5 GIỚI THIỆU VỀ REACT JS

ReactJS về cơ bản là một thư viện JavaScript mã nguồn mở được sử dụng để xây dựng giao diện người dùng dành riêng cho các ứng dụng single page Nó được sử dụng để xử lý view layer cho các ứng dụng web và mobile React cũng cho phép chúng ta tạo các thành phần UI có thể tái sử dụng

React được tạo ra bởi Jordan Walke, một kỹ sư phần mềm làm việc cho Facebook, và lần đầu được triển khai trên Facebook vào năm 2011 và trên Instagram vào năm 2012 React cho phép các nhà phát triển tạo ra các ứng dụng web lớn có thể thay đổi dữ liệu mà không cần tải lại trang Mục đích chính của React là nhanh, có thể mở rộng và đơn giản, và nó chỉ hoạt động trên giao diện người dùng trong ứng dụng

1.5.1 Các tính năng của React Js

JSX

Trong React, thay vì sử dụng JavaScript thông thường để tạo tempplate, nó sử dụng JSX JSX là JavaScript đơn giản cho phép trích dẫn HTML và sử dụng các cú pháp thẻ HTML này để hiển thị các thành phần con Cú pháp HTML được xử lý thành các lệnh gọi JavaScript của React Framework

Single-Way data flow (Luồng dữ liệu 1 chiều)

Trong React, một tập hợp các giá trị bất biến được chuyển đến trình kết xuất component dưới dạng các thuộc tính trong các thẻ HTML của nó Component không thể

Trang 29

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT

trực tiếp sửa đổi bất kỳ thuộc tính nào nhưng có thể chuyển về bằng hàm call back Quá

trình hoàn chỉnh này gọi là “properties flow down; actions flow up”

Virtual Document Object Model

React tạo bộ đệm cấu trúc dữ liệu trong bộ nhớ để tính toán các thay đổi được thực

hiện và sau đó cập nhật trình duyệt Điều này cho phép một tính năng đặc biệt mà lập

trình viên mã hóa như thể toàn bộ trang được hiển thị trên mỗi thay đổi, trong đó thư

viện react chỉ hiển thị các thành phần thực sự thay đổi

1.5.2 Tại sao nên sử dụng React Js

Sự đơn giản

ReactJS chỉ đơn giản là nắm bắt ngay lập tức Cách tiếp cận dựa trên component,

vòng đời được xác định rõ và sử dụng JavaScript giúp React rất đơn giản để tìm hiểu, xây

dựng một web chuyên nghiệp (và các ứng dụng di động) React còn sử dụng một cú pháp

đặc biệt gọi là JSX cho phép bạn trộn HTML với JavaScript

Ràng buộc dữ liệu

React sử dụng liên kết dữ liệu một chiều và kiến trúc ứng dụng có tên Flux kiểm

soát luồng dữ liệu đến các component thông qua một điểm kiểm soát - bộ điều phối Việc

gỡ lỗi các thành phần độc lập của các ứng dụng ReactJS lớn dễ dàng hơn

Hiệu suất

React không cung cấp bất kỳ khái niệm nào về một container tích hợp cho sự phụ

thuộc Bạn có thể sử dụng các mô-đun Browserify, Require JS, EcmaScript 6 mà chúng

ta có thể sử dụng thông qua Babel, ReactJS-di để tiêm phụ thuộc tự động

Trang 30

CHƯƠNG 2: KHẢO SÁT HIỆN TRẠNG VÀ XÁC ĐỊNH YÊU CẦU

CHƯƠNG 2: KHẢO SÁT HIỆN TRẠNG VÀ XÁC ĐỊNH YÊU CẦU

2.1 KHẢO SÁT HIỆN TRẠNG

Ngày nay nhu cầu đi công tác hay du lịch mang tính lặp lại ở một địa điểm ngày càng nhiều, việc theo dõi thời tiết hay các địa điểm liên quan đến nơi đến trước khi đi là rất cần thiết Chính vì vậy, người dùng hay tìm đến các ứng dụng thời tiết, nhưng các ứng dụng thời tiết ngày nay chỉ theo dõi thời tiết ở vị trí hiện tại không đáp ứng được nhu cầu theo dõi nhiều điểm đến cùng lúc, cũng không đáp ứng được việc theo dõi các địa điểm nhỏ bên trong nơi đến để tạo sự tiên lới nhất cho chuyến công tác hay du lịch

Trang 31

CHƯƠNG 2: KHẢO SÁT HIỆN TRẠNG VÀ XÁC ĐỊNH YÊU CẦU

+ Xem được thông tin chi tiết thời tiết tại nhiều địa điểm

+ Có thể cho phép thông báo hoặc không thông báo thời tiết trên điện thoại

+ Dự báo theo giờ, theo tuần, có radar

+ Cung cấp nhiều chức năng, phục vụ cho nhiều người sử dụng, có thể tùy chỉnh theo ý muốn

+ Là một ứng dụng miễn phí

+ Giao diện thiết kế đẹp

Khuyết điểm:

+ Quá nhiều quảng cáo gây bất tiện khi xem thời tiết

+ Thông tin chi chít trên màn hình gây nhìn không thân thiện

+ Chức năng xem thời tiết là chức năng chung

Trang 32

CHƯƠNG 2: KHẢO SÁT HIỆN TRẠNG VÀ XÁC ĐỊNH YÊU CẦU

2.1.1.2 Best Weather

Hình 2.6 Hình ảnh ứng dụng Best Weather 1 Hình 2.7 Hình ảnh ứng dụng Best Weather 2

Hình 2.8 Hình ảnh ứng dụng Best Weather 3 Hình 2.9 Hình ảnh ứng dụng Best Weather 4

Trang 33

CHƯƠNG 2: KHẢO SÁT HIỆN TRẠNG VÀ XÁC ĐỊNH YÊU CẦU

Ưu điểm:

+ Giao diện màn hình home dễ nhìn và đẹp

+ Dự báo thời tiết theo 7 ngày

+ Chức năng đổi chủ đề

+ Chi tiết thông tin bao gồm: nhiệt độ hiện tại, nhiệt độ ngày mai, độ ẩm, áp lực, tầm nhìn, mặc trời mọc, mặt trời lặn…

Khuyết điểm:

+ Không xem được nhiều thành phố, chỉ xem thời tiết của một thành phố

+ Thông báo thời tiết không thể xóa, hay cài đặt

+ Giao diện màu của phần cài đặt không đồng bộ với màn hình home

+ Khá ít chức năng, chỉ có phần xem thời tiết

+ Thời tiết chỉ theo thành phố, không có địa điểm chi tiết

2.1.1.3 Word weather forecast

Hình 2.10 Hình ảnh ứng dụng

Word weather forecast 1

Hình 2.11 Hình ảnh ứng dụng Word weather forecast 2

Trang 34

CHƯƠNG 2: KHẢO SÁT HIỆN TRẠNG VÀ XÁC ĐỊNH YÊU CẦU

Hình 2.12 Hình ảnh ứng dụng

Word weather forecast 3

Hình 2.13 Hình ảnh ứng dụng Word weather forecast 4

+ Hình ảnh tông trắng, màu chữ cũng trắng không thể thấy gì

+ Icon giống nhau không phân biệt được là đang dự báo cái gì

+ Phải nhấn reload thì mới cập nhật lại thời tiết tại địa điểm đang xem dự báo

+ Dụng lượng app lớn, cuộn lên cuộn xuống gây lag

Trang 35

CHƯƠNG 2: KHẢO SÁT HIỆN TRẠNG VÀ XÁC ĐỊNH YÊU CẦU

2.1.1.4 Thời tiết Việt Nam

Hình 2.14 Hình ảnh ứng dụng

Thời tiết Việt Nam 1

Hình 2.15 Hình ảnh ứng dụng Thời tiết Việt Nam 2

Hình 2.16 Hình ảnh ứng dụng

Thời tiết Việt Nam 3 Hình 2.17 Hình ảnh ứng dụng Thời tiết Việt Nam 4

Trang 36

CHƯƠNG 2: KHẢO SÁT HIỆN TRẠNG VÀ XÁC ĐỊNH YÊU CẦU

+ Không có chức năng xem dự báo cho nhiều địa điểm

+ Có một số quảng cáo hiển thị tự động

+ Khá ít chức năng

2.2 XÁC ĐỊNH YÊU CẦU

2.2.1 YÊU CẦU CHỨC NĂNG

2.2.1.1 Yêu cầu chức năng nghiệp vụ

Lưu trữ:

- Hồ sơ, thông tin người dùng

- Danh sách các địa điểm thời tiết

- Danh sách các địa điểm thời tiết tạm thời

- Danh sách các địa điểm yêu thích

- Danh sách các địa điểm yêu thích tạm thời

- Lịch sử tìm kiếm

Tra cứu:

- Tra cứu địa điểm để thêm vào màn hình thời tiết

- Tra cứu địa điểm yêu thích

- Tra cứu địa điểm xuất phát

- Tra cứu địa điểm kết thúc

- Tra cứu lịch sử tìm kiếm

Tính toán:

Trang 37

CHƯƠNG 2: KHẢO SÁT HIỆN TRẠNG VÀ XÁC ĐỊNH YÊU CẦU

- Tính toán khoảng cách và thời gian của tuyến đường đi

Kết xuất:

- Danh sách người dùng

- Danh sách địa điểm thời tiết

- Danh sách các địa điểm thời tiết tạm thời

- Danh sách các địa điểm yêu thích

- Danh sách các địa điểm yêu thích tạm thời

- Danh sách lịch sử tìm kiếm

2.2.1.2 Yêu cầu chức năng hệ thống

User (người dùng):

- Xem thời tiết của địa điểm hiện tại

- Tra cứu địa điểm thời tiết

- Thêm/xóa các địa điểm thời tiết

- Xem thời tiết của các địa điểm khác

- Tra cứu địa điểm xuất phát

- Tra cứu địa điểm kết thúc

- Xem chỉ đường

- Thêm/xóa địa điểm yêu thích

- Tra cứu địa điểm yêu thích

- Xem thông tin chi tiết địa điểm yêu thích

- Xem/chỉnh sửa thông tin cá nhân

- Xem/xóa lịch sử tìm kiếm

- Login/Logout (với username & mật khẩu hoặc Google)

Admin (quản lý):

- Quản lý người dùng (thao tác: sửa, xóa)

- Quản lý địa điểm thời tiết (thao tác: xóa)

- Quản lý địa điểm yêu thích (thao tác: xóa)

- Quản lý lịch sử tìm kiếm (thao tác: xóa)

- Xem thống kê thành phố được tìm kiếm nhiều nhất

Trang 38

CHƯƠNG 2: KHẢO SÁT HIỆN TRẠNG VÀ XÁC ĐỊNH YÊU CẦU

- Login/Logout

2.2.2 YÊU CẦU PHI CHỨC NĂNG

2.2.2.1 Liên quan đến người dùng

Tính tiến hóa:

Phần mềm có thể chỉnh sửa và nâng cấp cho phù hợp với thị hiếu của khách hàng và nhu cầu quản lý của chủ cửa hàng

Tính tiện dụng:

Giao diện của phần mềm

- Thân thiện với người sử dụng

- Dễ dàng thao tác

- Các nút chức năng được bố trí không quá phức tạp và dễ nhìn

- Các màn hình chức năng tương tác tốt với nhau, tạo sự thuận tiện cho người

dùng

Tính hiệu quả:

- CSDL được lưu trữ an toàn và dễ dàng truy xuất

- Phần mềm hoạt động ổn định, tốc độ truy cập và xử lý nhanh

Tính tương thích:

- Phần mềm đặt trong các máy khác nhau có thể chia sẻ thông tin với nhau

- Phần mềm có thể đáp ứng yêu cầu của người dùng mà không làm ảnh hưởng

đến sự hoạt động của các máy khác

2.2.2.2 Liên quan đến chuyên viên tin học

Tính tái sử dụng:

- Các thiết kế và chức năng của phần mềm có thể được sử dụng lại cho những

lần phát triển sau này

- Các đoạn mã có thể được sử dụng nhiều lần và áp dụng được cho nhiều chương

trình khác nhau mà không cần phải thay đổi code quá nhiều

Trang 39

CHƯƠNG 3: PHÂN TÍCH YÊU CẦU VÀ THIẾT KẾ CSDL

CHƯƠNG 3: PHÂN TÍCH YÊU CẦU VÀ THIẾT KẾ CSDL

3.1 MÔ TẢ CÔNG VIỆC

3.1.1 User

3.1.1.1 Bảng yêu cầu chức năng nghiệp vụ

Bảng biểu 3.1 Bảng biểu cầu chức năng nghiệp vụ user

Việc

Quy Định / Công Thức Liên

Quan

Ghi Chú

3 View current weather QĐ_ViewWeather

4 View other weather QĐ_ViewOtherWeather

5 Managing weather place Lưu trữ QĐ_ManagingWeatherPlace

6 Add weather place Lưu trữ QĐ_AddWeatherPlace

7 Remove weather place Lưu trữ QĐ_RemoveWeatherPlace

8 Managing favorite place Lưu trữ QĐ_ManagingFavPlace

9 Add favorite place Lưu trữ QĐ_AddFavPlace

10 Remove favorite place Lưu trữ QĐ_RemoveFavPlace

11 View favorite place details QĐ_ViewFavPlaceDetails

12 Giving directions Tính toán QĐ_GivingDirections

13 Search originating point Tra cứu QĐ_ Search

14 Search destination Tra cứu QĐ_ Search

15 View profile QĐ_ViewProfile

16 Edit profile Lưu trữ QĐ_EditProfile

17 View activity log QĐ_ActivityLog

18 Remove activity log Lưu trữ QĐ_ RemoveActivityLog

Trang 40

CHƯƠNG 3: PHÂN TÍCH YÊU CẦU VÀ THIẾT KẾ CSDL

3.1.1.2 Bảng quy định / Công thức liên quan

Bảng biểu 3.2 Bảng quy định / Công thức liên quan user

Mô Tả Chi Tiết Ghi Chú

1 QĐ_Login Đăng nhập - Người dùng nhấn vào nút Login trên màn

hình vừa mở ứng dụng với điều kiện đã nhập vào 2 text username và password để đăng nhập trở thành User của hệ thống hoặc nhấn vào nút Đăng nhập bằng Google để đăng nhập

- Kiêm tra đăng nhập: Nếu đăng nhập đúng thì màn hình thời tiết hiện tại (view current weather) sẽ hiện ra, còn nếu đăng nhập thất bại thì yều cầu kiểm tra lại (dialog)

2 QĐ_Signu

p

Đăng ký - Người dùng click vào nút “Sign Up” ở góc

trên bên phải trên màn hình đăng nhập vừa

mở ứng dụng lên nếu chưa có tài khoản hoặc muốn tạo tài khoản mới để truy xuất đến màn hình đăng ký

- Kiêm tra đăng ký: Khi vào màn hình đăng

ký, người dùng phải nhập đầy đủ 4 thông tin (tên người dùng, usernam, password và số điện thoại) để thực hiện việc đăng ký

- Sau khi đăng nhập thành công, màn hình thời tiết vị trí hiện tại sẽ hiện ra Ngay lúc này người dùng chỉ lần lướt tay qua bên phải là thấy được các màn hình thời tiết khác (với điều kiện người dùng đã thêm địa điểm thời tiết khác trước đó) Còn nếu lướt sang phải

Ngày đăng: 02/02/2023, 09:33

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm