1. Trang chủ
  2. » Luận Văn - Báo Cáo

Đồ Án Cơ Sở 4 Đề Tài Xây Dựng Ứng Dụng Hiển Thị Dự Báo Thời Tiết.doc

20 29 0

Đ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

Nội dung

MẪU ĐỒ ÁN KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG VI T ỆT HÀN  Đồ Án Cơ Sở 4 ĐỀ TÀI XÂY DỰNG ỨNG DỤNG HIỂN THỊ DỰ BÁO THỜI TIẾT MỞ ĐẦU Ngà[.]

ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG VIỆT-THÀN - - Đồ Án Cơ Sở ĐỀ TÀI XÂY DỰNG ỨNG DỤNG HIỂN THỊ DỰ BÁO THỜI TIẾT MỞ ĐẦU Ngày nay, ứng dụng công nghệ thông tin việc tin học hóa xem yếu tố mang tính định hoạt động phủ, tổ chức, cơng ty, đóng vai trị quan trọng, tạo bước đột phá mạnh mẽ Việc tạo phát triển ứng dụng điện thoại để phục vụ cho nhu cầu riêng tổ chức, công ty chí cá nhân, ngày nay, khơng lấy làm xa lạ Với vài thao tác đơn giản, người tải cài đặt điện thoại ứng dụng liên quan đến lĩnh vực mà quan tâm, là: âm nhạc, video, mạng xã hội, giáo dục, gia đình, nấu ăn ….v.v Đối với công ty, doanh nghiệp việc tạo phát triển ứng dụng điện thoại thông minh điều cần thiết để phát triển Thông qua ứng dụng này, thông tin họ sản phẩm, dịch vụ công ty đến với người quan tâm, đến với khách hàng họ cách nhanh chóng kịp thời, tránh phiền hà mà phương thức giao tiếp truyền thống thường gặp phải Bắt nguồn với ý tưởng này, em định chọn đề tài: “XÂY DỰNG ỨNG DỤNG HIỂN THỊ DỰ BÁO THỜI TIẾT” đề thực đồ án lần LỜI CẢM ƠN Lời đầu tiên, em xin trân trọng gửi lời cảm ơn sâu sắc tới giảng viên hướng dẫn môn Đồ Án Cơ Sở 4– thầy Nguyễn Thanh nhiệt tình đóng góp ý kiến hướng dẫn chúng em hồn thành tốt đồ án Em xin chân thành cảm ơn thầy cô giáo giảng dạy Đại học công nghệ thông tin truyền thông Việt Hàn – Đại học Đà Nẵng nhiệt tình ủng hộ, cung cấp tài liệu đưa ý kiến góp ý quý báu Cuối cùng, em xin chân thành cảm ơn tới bạn bè động viên, khuyến khích tạo điều kiện cho chúng tơi hồn thành tốt đề tài Chúng em xin chân thành cảm ơn! MỤC LỤC Trang Chương Giới thiệu tổng quan .1 1.1Tổng quan về mô hình client-server và giao thức UDP: .1 1.1.1 Mơ hình client - server: .1 1.1.2 User Datagram Protocol (UDP): 1.2Sơ lược về ngôn ngữ lập trình Python:p trình Python: 1.2.1 Nguồn gốc tên “python”: .3 1.2.2 Tính python: 1.2.3 Python socket: .3 1.3Công cụ lập trình Python:p trình python – PyCharm: 1.3.1 Tại chọn PyCharm: 1.4Kỹ thuập trình Python:t API và Hướng đối tượng (OOP): 1.4.1 API: 1.4.2 Web Scrapping – Cào liệu website:u website: .4 1.4.3 Lập trình hướng đới tượng (OOP):p trình hướng đối tượng (OOP): Chương Phân tích & thiết kế hệ thống thống .5 2.1Giới thiệ thốngu bài toán: 2.1.1 Đề tài: 2.1.2 Yêu cầu: .5 2.1.3 Mục tiêu: .5 2.1.4 Phương pháp: 2.2Thiết kế hệ thống thống: .5 2.2.1 Actor chức năng: .5 2.2.2 Sơ đồ phân tích thiết kế hệu website: thống: Chương Xây Dựng Ứng Dụng 3.1Sử dụng mô hình Client-Server và giao thức UDP/IP: 3.1.1 Chức Server: 3.1.2 Chức Client: 3.1.3 Giao thức UDP/IP python: 3.2Sử dụng kỹ thuập trình Python:t API, cào dữ liệ thốngu và OOP: .7 3.2.1 API: 3.2.2 Cào liệu website:u: .10 3.2.3 Lập trình hướng đới tượng (OOP):p trình hướng đối tượng (OOP): 11 Chương Chương trình demo 12 4.1Kết quả đạt được: 12 4.2Phía Server: 12 4.3Phía Client: 13 Chương Kết luập trình Python:n 14 5.1Kết quả đạt được: 14 5.2Hạn chế: 14 5.3Hướng phát triển: 14 DANH MỤC HÌNH ẢNH Trang Hình 1.1 Mơ hình client-server Hình 1.2 User datagram protocol – UDP .2 Hình 2.1 Sơ đồ use case Hình 3.1 OpenWeatherMap API (XML) .8 Hình 3.2 OpenWeatherMap API (JSON) Hình 3.3 Web Scrapping 10 Hình 4.1 Server 12 Hình 4.2 Client 13 Chương 1.1 Giới thiệu tởng quan TỞNG quan về mơ hình client-server và giao thức UDP: 1.1.1 Mô hình client - server: Các máy trạm nối với máy chủ, nhận quyền truy nhập mạng tài nguyên mạng từ máy chủ Đối với Windows NT máy tổ chức thành miền (domain) An ninh domain quản lý số máy chủ đặc biệt gọi domain controller Trên domain có master domain controller gọi PDC (Primary Domain Controller) BDC (Backup Domain Controller) để đề phòng trường hợp PDC gặp cố Mơ hình phần mềm Client/Server mơ hình giải pháp phần mềm cho việc khắc phục tình trạng tải mạng vượt qua ngăn cách khác cấu trúc vật lý hệ điều hành hệ thống máy tính khác mạng Mỗi phần mềm xây dựng theo mơ hình Client/Server chia làm hai phần: phần hoạt động máy phục vụ gọi phần phía Server phần hoạt động trạm làm việc gọi phần phía Client Với mơ hình trạm làm việc gọi Client (hay máy Client) máy phục vụ gọi Server Nhiệm vụ phần quy định sau:  Phần phía Server quản lý giao tiếp mơi trường bên ngồi Server với Client, tiếp nhận yêu cầu dạng xâu ký tự (query string), phân tích query string, xử lý liệu gửi kết trả lời phía Client  Phần phía Client tổ chức giao tiếp với người dùng, với mơi trường bên ngồi trạm làm việc với phía Server, tiếp nhận yêu cầu người dùng, thành lập query string gửi phía Server, tiếp nhận kết tổ chức trình diễn chúng Hình 1.1 Mơ hình client-server 1.1.2 User Datagram Protocol (UDP): 1.1.2.1 UDP là gì? UDP viết tắt cụm từ User Datagram Protocol UDP phần giao thức Internet sử dụng chương trình chạy máy tính khác mạng Không giống TCP/IP, UDP sử dụng để gửi gói tin ngắn gọi datagram, cho phép truyền nhanh Tuy nhiên, UDP không cung cấp kiểm tra lỗi nên khơng đảm bảo tồn vẹn liệu Hình 1.2 User datagram protocol – UDP 1.1.2.2 Cách hoạt động của UDP:ng của UDP: Giao thức UDP hoạt động tương tự TCP khơng cung cấp kiểm tra lỗi truyền gói tin Khi ứng dụng sử dụng UDP, gói tin gửi đến người nhận Người gửi không đợi để đảm bảo người nhận nhận gói tin hay khơng, mà tiếp tục gửi gói Nếu người nhận bỏ lỡ vài gói tin UDP, gói tin bị người gửi khơng gửi lại chúng Điều có nghĩa thiết bị giao tiếp nhanh 1.2 Sơ lược về ngôn ngữ lập trình Python:p trình Python: Phiên sử dụng đồ án: Python 3.7.8 Python ngôn ngữ lập trình bậc cao cho mục đích lập trình đa năng, Guido van Rossum tạo lần đầu mắt vào năm 1991 Python thiết kế với ưu điểm mạnh dễ đọc, dễ học dễ nhớ Python ngơn ngữ có hình thức sáng sủa, cấu trúc rõ ràng, thuận tiện cho người học lập trình Cấu trúc Python cịn cho phép người sử dụng viết mã lệnh với số lần gõ phím tối thiểu 1.2.1 Nguồn gớc cái tên “python”: Rossum – Tác giả Python, fan sê-ri chương trình hài cuối năm 1970, tên “Python” lấy từ tên phần sê-ri “Monty Python’s Flying Circus” 1.2.2 Tính của python:  Đơn giản, dể học  Miễn phí với mã nguồn mở  Có thể chạy python hầu hết tảng khác  Ngôn ngữ thông dịch cấp cao  Thư việu website:n tiêu chuẩn lớn  Hướng đối tượng 1.2.3 Python socket: Socket endpoint kênh giao tiếp hai chiều Nó sử dụng để kết nối với chương trình khác chạy máy tính khác Internet Một chương trình mạng sử dụng nhiều socket lúc, nhờ nhiều chương trình sử dụng Internet lúc Thường người ta chia socket làm hai loại là: +Stream Socket: Dựa giao thức TCP việc truyền liệu thực trình thiết lập kết nối Giao thức đảm bảo liệu truyền đến nơi nhận cách đáng tin cậy, thứ tự nhờ vào chế quản lý luồng lưu thông mạng chế chống tắc nghẽn +Datagram Socket: Dựa giao thức UDP việc truyền liệu khơng u cầu có thiết lập kết nối trình Ngược lại với giao thức TCP liệu truyền theo giao thức UDP khơng tin cậy, khơng trình tự lặp lại Tuy nhiên khơng u cầu thiết lập kết nối khơng có chế phức tạp nên tốc độ nhanh…ứng dụng cho ứng dụng truyền liệu nhanh ứng dụng chat, game… 1.3 Công cụ lập trình Python:p trình python – PyCharm: Phiên sử dụng đồ án: PyCharm 2020.2.3 (Community Edition) PyCharm môi trường phát triển tích hợp đa tảng (IDE) phát triển Jet Brains thiết kế đặc biệt cho Python PyCharm có mặt tảng Windows, Linux Mac OS Hiện PyCharm có phiên bản: Phiên bản Professional: đầy đủ tất tính năng, hỗ trợ Python Web với HTML, JS, SQL Mức giá 199$ / năm Phiên bản Community: hỗ trợ Python development Miễn phí 1.3.1 Tại chọn PyCharm: Pycharm giải pháp phù hợp cho Python developers IDE hỗ trợ nhiều extensions, mơi trường ảo (Virtual Environment), nhiều tính thơng minh code completion, tự động thụt lề, phát văn trùng lặp kiểm tra lỗi Ngoài cịn có tính tìm kiếm mã nguồn thơng minh để tìm kiếm từ nháy mắt 1.4 1.4.1 Kỹ thuập trình Python:t API và Hướng đối tượng (OOP): API: API viết tắt chữ Application Programming - giao diện lập trình ứng dụng Chữ interface giao diện, ý nói tương tác ko phải interface mặc định giao diện hình ảnh số bạn nhầm lẫn API phương thức để kết nối, trao đổi dữ liệu thư viện hay ứng dụng với API sử dụng cho hệ thống nhúng, phần cứng, phần mềm hay gần hệ thống micro service với nhiều thành phần hệ thống tách biệt riêng với 1.4.2 Web Scrapping – Cào dữ liệ thốngu website: Web scraping đề cập đến việc trích xuất liệu từ trang web Thơng tin thu thập sau xuất thành định dạng hữu ích cho người dùng (có thể bảng tính API) Trong đồ án này, ta sử dụng kỹ thu ập trình hướng đối tượng (OOP):t cào li ệu website:u từ trang web https://www.timeanddate.com/worldclock/ để lấy thông tin danh sách quốc gia từ thuật toán bên 1.4.3 Lập trình Python:p trình hướng đối tượng (OOP): Lập trình hướng đối tượng (OOP) kỹ thuật lập trình cho phép lập trình viên tạo đối tượng code trừu tượng hóa đối tượng Một đối tượng bao gồm thơng tin: thuộc tính phương thức Thuộc tính thơng tin, đặc điểm đối tượng Ví dụ: người có đặc tính mắt, mũi, tay, chân… Phương thức thao tác, hành động mà đối tượng thực Ví dụ: người thực hành động nói, đi, ăn, uống, Chương 2.1 Phân tích & thiết kế hệ thống thống Giới thiệ thốngu bài toán: Đề tài: 2.1.1 Xây dựng ứng đồ thời tiết bằng python Yêu cầu: 2.1.2  Xây dựng ứng dụng dựa mơ hình Client-Server  Chương trình Client biểu diễn thông tin dự báo thời tiết, cho phép người dùng chọn vùng để xem  Chương trình Server phân tích thơng tin dự báo thời tiết số trang Web để trả cho client Mục tiêu: 2.1.3  Xây dựng ứng dụng hoàn chỉnh  Giao diệu website:n đẹp, dễ nhìn, thân thiệu website:n người dùng  Ứng dụng chạy ổn định môi trường Solaris, Linux, Windows 95/98/NT/2000/ XP  Hiển thị thông tin vị trí, thời tiết xác  Kết trả nhanh, không tốn nhiều thời gian Phương pháp: 2.1.4  Sử dụng ngôn ngữ l ập trình hướng đối tượng (OOP):p trình python thư vi ệu website:n kivy-garden python để l ập trình hướng đới tượng (OOP):p trình ứng dụng cho desktop IDE PyCharm  Sử dụng kỹ thuập trình hướng đối tượng (OOP):t đọc API, web scrapping để lấy (cào) li ệu website:u cần thiết  Sử dụng kỹ thuập trình hướng đối tượng (OOP):t lập trình hướng đới tượng (OOP):p trình hướng đối tượng  Sử dụng thư vi ệu website:n socket python để l ập trình hướng đối tượng (OOP):p trình ứng dụng theo mơ hình ClientServer giao thức UDP  … 2.2 Thiết kế hệ thống thống: Actor và chức năng: 2.2.1  Administrator  Xử lí trả kết thời tiết  Users  Tương tác với đồ  Xem thông tin hiển thị  Chọn danh sách địa điểm Sơ đồ phân tích thiết kế hệ thống thống: 2.2.2  Sơ đồ Use-case: Hình 2.3 Sơ đồ use case Chương 3.1 Xây Dựng Ứng Dụng Sử dụng mô hình Client-Server và giao thức UDP/IP: Chức của Server: 3.1.1  Tạo chấp nhập trình hướng đối tượng (OOP):n kết nối đến từ phía Client  Ghi nhập trình hướng đới tượng (OOP):n yêu cầu từ phía client trả thông tin tương ứng (thông tin thời tiết hiệu website:n tại, vị trí người dùng, thơng tin thời tiết địa điểm)  Thông báo trả lỗi có vấn đề xảy Chức của Client: 3.1.2  Tạo kết nối đến chương trình Server  Gửi yêu cầu đến server  Nhập trình hướng đối tượng (OOP):n kết trả về, xử lí hiển thị thơng tin lên hình  Hiển thị đồ địa điểm  Hiển thị thông báo (nếu có) lên hình Giao thức UDP/IP python: 3.1.3  Import thư việu website:n socket: import socket  Khai báo Socket UDP: udp_ip = '127.0.0.1' udp_port = 8014 socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)  Kết nối socket đến ip port: socket.bind((udp_ip, udp_port))  Nhập trình hướng đối tượng (OOP):n liệu website:u: r = socket.recvfrom(1000) đó, r khai báo mợt mảng để lưu trữ gói tin vớit mảng để lưu trữ gói tin với r[0]: tin nhắn gửi đến (data) r[1]: địa client gửi yêu cầu  Gửi liệu website:u: fd.sendto(reply, address) đó, reply liệu website:u gửi đi, dạng byte array ví dụ reply = 'Hello client' reply = replay.encode() address địa gửi đến bao gồm địa ip port 3.2 Sử dụng kỹ thuập trình Python:t API, cào dữ liệ thốngu và OOP: API: 3.2.1 Ở đồ án này, em sử dụng API trang web openweathermap.org trả thông tin thời tiết hiệu website:n tại, ho c vòng ngày tới với chu kì / kết Có thể cung cấp thông tin địa điểm muốn xem kết thời tiết bằng cách cung cấp vị trí kinh đợt mảng để lưu trữ gói tin với vĩ đột mảng để lưu trữ gói tin với, ho c theo tên thành phố, quốc gia, ho c theo mã vùng thành phố đó,… Kết trả định dạng JSON ho c XML với thông tin như:  Vị trí địa lí (Kinh đợt mảng để lưu trữ gói tin với – vĩ đột mảng để lưu trữ gói tin với)  Tên thành phố  Thời tiết hiệu website:n (Kèm mô tả)  Nhiệu website:t đột mảng để lưu trữ gói tin với (Lớn nhất, thấp cảm giác nhiệu website:t đột mảng để lưu trữ gói tin với)  Sức gió  Áp suất  Đột mảng để lưu trữ gói tin với ẩm  Tầm nhìn  … Ví dụ api links: http://api.openweathermap.org/data/2.5/weather? lat=16.0678&lon=108.2208&units=metric&mode=xml&appid=b3a64e07a9cb08c942f2d17 11c1d47e6 Liên kết API trả kết thời tiết hi ệu website:n thành phố đà nẵng (Vĩ đ ột mảng để lưu trữ gói tin với 16.0678- Kinh đột mảng để lưu trữ gói tin với: 108.2208), với đơn vị đo nhiệu website:t đột mảng để lưu trữ gói tin với đột mảng để lưu trữ gói tin với C, định dạng li ệu website:u trả XML Bao gồm thơng tin vị trí, thời tiết, nhi ệu website:t đ ột mảng để lưu trữ gói tin với, đ ột mảng để lưu trữ gói tin với ẩm, sức gió, tầm nhìn, thời gian bình minh hồng hơn, thơng tin vị trí ta muốn xem Hình 3.4 OpenWeatherMap API (XML) 3.2.1.1 Đọc dữ liệ thốngu API với Python: Hình 3.5 OpenWeatherMap API (JSON) Ở m ột mảng để lưu trữ gói tin vớit đoạn li ệu website:u trả dạng JSON thông qua liên kết API từ OpenWeatherMap Code python xử lí liệu website:u trả để lấy thông tin cần thiết: def getCurrentWeather(self,lat,long): weather_url = 'http://api.openweathermap.org/data/2.5/weather?' \ 'lat=' + lat+ \ '&lon=' + long + \ '&mode=' + mode + \ '&units=' + units + \ '&appid=' + weather_api_key weather_req = requests.get(weather_url) weather_json = json.loads(weather_req.text) for i in weather_json['weather']: weather = i['main'] description = i['description'] temp = weather_json['main']['temp'] feels = weather_json['main']['feels_like'] max_temp = weather_json['main']['temp_max'] min_temp = weather_json['main']['temp_min'] pressure = weather_json['main']['pressure'] humidity = weather_json['main']['humidity'] wind_spd = weather_json['wind']['speed'] visibility = weather_json['visibility'] currWeather = CurrentWeather.CurrentWeather(weather,description,temp,feels,min_temp,max_temp,pressure, wind_spd,humidity,visibility) return currWeather Hàm getCurrentWeather(self,lat,long): thực hiệu website:n gọi request api xử lí li ệu website:u trả dạng Json Ta sử dụng thư vi ệu website:n chuẩn python request (để gọi yêu cầu api lên website), json để nh ập trình hướng đối tượng (OOP):n xử lí li ệu website:u json trả sau gọi request Sau đó, ta lấy thông tin cần thiết (nhiệu website:t đột mảng để lưu trữ gói tin với-lớn nhất-nhỏ nhất, áp suất, đ ột mảng để lưu trữ gói tin với ẩm, tốc đ ợt mảng để lưu trữ gói tin với gió, tầm nhìn, ….) lưu trữ thơng tin đối tượng CurrentWeather tạo từ trước Và kết thúc hàm trả đối tượng với thông tin thời tiết hi ệu website:n lưu trữ 3.2.2 Cào dữ liệ thốngu: Việu website:c cào li ệu website:u đề cập đến việc trích xuất liệu từ trang web Thông tin thu thập sau xuất thành định dạng hữu ích cho người dùng (có thể bảng tính API) Trong đồ án này, ta sử dụng kỹ thu ập trình hướng đối tượng (OOP):t cào li ệu website:u từ trang web mylocation.org để lấy thơng tin vị trí hiệu website:n người sử dụng một mảng để lưu trữ gói tin vớit cách tự đột mảng để lưu trữ gói tin vớing def getGeoLocation(self): URL = 'https://mylocation.org/' page = requests.get(URL) soup = BeautifulSoup(page.content, 'html.parser') #results = soup.find(id="accordion") info = soup.find('div', class_='info') details = info.find_all('td') ip = self.removeTagBeforeEnd(str(details[1].find('b')),'b') lat = self.removeTagBeforeEnd(str(details[3]), 'td') long = self.removeTagBeforeEnd(str(details[5]), 'td') country = self.removeTagBeforeEnd(str(details[7]), 'td') city = self.removeTagBeforeEnd(str(details[9]), 'td') geoloca = GeoLocation.GeoLocation(ip,lat, long, city, country) return geoloca Hàm getGeoLocation(self): thực hiệu website:n công việu website:c này: Đầu tiên ta tạo m ột mảng để lưu trữ gói tin vớit request đến trang web Sau dùng thư vi ệu website:n BeautifulSoup python để thực hiệu website:n cào liệu website:u Hình cấu trúc html phần muốn cào: Hình 3.6 Web Scrapping Dựa vào cấu trúc html trang web, ta tìm kiếm theo tên thẻ, thu ợt mảng để lưu trữ gói tin vớic tính id ho c class để lấy thơng tin mong muốn Sau lưu thơng tin vào đối tượng GeoLocation tạo từ trước kết thúc hàm trả đối tượng với thông tin lưu trữ geo = GeoLocation.GeoLocation(ip=g.ip, latitude=latitude, longitude=longitude, city=road + '\n ' + district + ', ' + province, country=country) 3.2.3 Lập trình Python:p trình hướng đối tượng (OOP): Ví dụ đối tượng GeoLocation đồ án: class GeoLocation: def init (self,ip,latitude,longitude,city,country): self.ip = ip self.latitude = latitude self.longitude = longitude self.city = city self.country = country def address(self): return 'Ip: '+self.ip+ '\nLatitude = '+self.latitude +'\nLongitude = '+self.longitude + '\nAddress: '+self.city+', '+self.country def ip(self): return self.ip def latitude(self): return self.latitude def longitude(self): return self.longitude def city(self): return self.city def country(self): return self.country Đối tượng GeoLocation dùng để chứa thơng tin vị trí hi ệu website:n người dùng với thuột mảng để lưu trữ gói tin vớic tính :thành phố, kinh đợt mảng để lưu trữ gói tin với, vĩ đ ột mảng để lưu trữ gói tin với, tên nước phương thức (vẫn cịn c ập trình hướng đới tượng (OOP):p nhập trình hướng đối tượng (OOP):t sau này) để trả liệu website:u riêng biệu website:t cần thiết Chương Chương trình demo 4.1 Kết quả đạt được: 4.2 Phía Server: Hình 4.7 Server Sau chạy Server Server thơng báo chờ kết nối từ Client Sau có kết nối từ Client phía Server thơng tin địa Client có yêu cầu từ Client yêu cầu trả thông tin thời tiết Server bắt đầu phân tích trả thông tin tương ứng cho Client 4.3 Phía Client: Hình 4.8 Client Sau chạy Server tiếp đến chạy Client Thì giao diện lên đồ, phía bên phải thơng tin thời tiết, bên trái vị trí địa điểm chọn danh sách địa điểm đề người dùng chọn Chương 5.1 Kết luập trình Python:n Kết quả đạt được: Xây dựng hoàn chỉnh ứng dụng theo yêu cầu toán,… 5.2 Hạn chế: Vì thời gian cịn hạn hẹp nên việc phát triển giao diện chức 5.3 Hướng phát triển: Sẽ nâng cấp xây dựng chức cảnh báo có thời tiết xấu, chat trao đổi Server Client,… Xây dựng giao diện đẹp hơn,…

Ngày đăng: 14/06/2023, 06:26

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w