Project: Membuat aplikasi Flight Search

1. Sebelum memulai

Prasyarat

  • Pengetahuan dasar tentang SQL untuk membaca dan memanipulasi database relasional.
  • Kemampuan untuk menggunakan Room di aplikasi Android untuk membaca dan menulis ke database.
  • Kemampuan menggunakan DataStore untuk menyimpan data sederhana.
  • Kemampuan untuk membangun antarmuka pengguna yang cukup kompleks dengan Compose.

Yang akan Anda buat

  • Aplikasi Android yang meminta bandara keberangkatan kepada pengguna, menelusuri database yang telah diisi otomatis untuk menampilkan daftar penerbangan yang berangkat dari bandara tersebut, memungkinkan pengguna menyimpan penerbangan favorit, dan mengupdate database dengan Room.

Yang akan Anda butuhkan

  • Komputer dengan Android Studio

2. Ringkasan

Selamat karena Anda telah menyelesaikan Unit 6. Anda memulai dengan ringkasan umum tentang database relasional dan Bahasa Kueri Terstruktur (SQL), mengintegrasikan database relasional ke dalam aplikasi dengan Room, dan mempelajari Preferences DataStore untuk mempertahankan setelan dan status UI. Saatnya mempraktikkan semua yang telah Anda pelajari.

Dalam project ini, Anda akan membuat aplikasi Flight Search tempat pengguna memasukkan bandara, dan mereka dapat melihat daftar tujuan menggunakan bandara tersebut sebagai keberangkatan. Project ini memberi Anda kesempatan untuk mempraktikkan keahlian menggunakan SQL, Room, dan DataStore dengan menawarkan serangkaian persyaratan aplikasi yang harus dipenuhi. Secara khusus, Anda perlu memastikan aplikasi Flight Search memenuhi persyaratan berikut:

  • Menyediakan kolom teks bagi pengguna untuk memasukkan nama bandara atau ID bandara International Airport Transport Association (IATA).
  • Mengkueri database untuk memberikan saran pelengkapan otomatis saat pengguna mengetik.
  • Saat pengguna memilih saran, membuat daftar penerbangan yang tersedia dari bandara tersebut, termasuk ID IATA dan nama bandara ke bandara lain dalam database.
  • Memungkinkan pengguna menyimpan setiap rute favorit.
  • Jika tidak ada kueri penelusuran yang dimasukkan, menampilkan semua rute favorit yang dipilih pengguna dalam daftar.
  • Menyimpan teks penelusuran dengan Preferences DataStore. Saat pengguna membuka kembali aplikasi, teks penelusuran, jika ada, harus mengisi kolom teks dengan hasil yang sesuai dari database.

Kami telah menyediakan database yang terisi otomatis untuk project ini. Akan tetapi, yang diharapkan adalah Anda membuat aplikasi dari awal sesuai dengan persyaratan—sebagai latihan untuk pekerjaan aktual yang Anda lakukan sebagai developer Android. Project ini juga merupakan kesempatan bagus untuk meninjau kembali atau meningkatkan lebih jauh lagi keterampilan membuat UI dengan Compose, karena Anda tidak banyak mengerjakan UI sejak Unit 4.

3. Mendapatkan database penerbangan

Data untuk aplikasi ini berasal dari database penerbangan. Database penerbangan berisi dua tabel, bandara dan favorit.

Tabel bandara berisi skema berikut.

Kolom

Jenis data

Deskripsi

id

BILANGAN BULAT

ID unik (kunci utama)

iata_code

VARCHAR

Tiga huruf kode IATA

nama

VARCHAR

Nama lengkap bandara

penumpang

BILANGAN BULAT

Jumlah penumpang per tahun

Tabel favorit berisi skema berikut.

Kolom

Jenis data

Deskripsi

id

BILANGAN BULAT

ID unik (kunci utama)

departure_code

VARCHAR

Kode IATA untuk keberangkatan

destination_code

VARCHAR

Kode IATA untuk tujuan

Anda dapat menggunakan tabel bandara untuk menelusuri bandara dan membuat daftar kemungkinan penerbangan. Anda menggunakan tabel favorit, yang awalnya kosong, untuk menyimpan pasangan tujuan keberangkatan dan kedatangan yang dipilih oleh pengguna.

Download file flight_search.db dari cabang project repositori GitHub Dasar-Dasar SQL di sini.

4. Merencanakan aplikasi Anda

Merencanakan UI

Anda dapat mendesain aplikasi sesuai keinginan Anda. Sebagai panduan, deskripsi dan gambar berikut adalah contoh tampilan yang dapat dilihat pengguna di aplikasi.

Saat pertama kali membuka aplikasi, pengguna akan melihat layar kosong dengan kolom teks yang meminta bandara.

Saat pengguna mulai mengetik, aplikasi akan menampilkan daftar saran pelengkapan otomatis yang cocok dengan nama atau ID bandara.

38e2daa4d7d3ce47.png

Saat pengguna memilih saran, aplikasi akan menampilkan daftar semua kemungkinan penerbangan dari bandara tersebut. Setiap item menyertakan ID dan nama untuk kedua bandara, serta tombol untuk menyimpan tujuan sebagai favorit. Jangan ragu untuk bereksperimen dengan tata letak asalkan semua informasi yang diperlukan dapat disampaikan.

555d1fda9bd01095.png

Saat pengguna menghapus teks di kotak penelusuran atau tidak memasukkan kueri penelusuran, aplikasi akan menampilkan daftar tujuan favorit yang tersimpan, jika ada.

844c9efbca15b5b1.png

Menggunakan Room untuk mengintegrasikan database penerbangan

Untuk menerapkan fitur di atas, Anda perlu memanfaatkan pengetahuan Anda tentang SQL dan Room. Database ini sudah terdiri dari dua tabel, yaitu bandara dan favorit. Anda memerlukan entity untuk setiap tabel. Pilih jenis data Kotlin yang sesuai sehingga Anda dapat mengakses nilai di setiap tabel.

Selain itu, Anda perlu mempertimbangkan persyaratan berikut saat mengkueri database penerbangan dan mempertahankan data:

  • Telusuri saran pelengkapan otomatis di tabel bandara. Perlu diingat bahwa pengguna mungkin sudah mengetahui kode bandara, jadi Anda harus memeriksa input mereka terhadap kolom iata_code, selain kolom name, ketika menelusuri teks. Ingat bahwa Anda dapat menggunakan kata kunci LIKE untuk melakukan penelusuran teks.
  • Tampilkan bandara yang lebih sering dikunjungi dalam urutan menurun dengan mengurutkan di kolom penumpang.
  • Asumsikan bahwa setiap bandara memiliki penerbangan ke setiap bandara lainnya dalam database (kecuali untuk bandara itu sendiri).
  • Jika tidak ada teks di kotak penelusuran, tampilkan daftar penerbangan favorit yang menunjukkan keberangkatan dan tujuan. Karena tabel favorit hanya menyertakan kolom untuk kode bandara, Anda tidak perlu menampilkan nama bandara dalam daftar ini.
  • Jalankan semua kueri database dengan SQL dan Room API. Penting untuk TIDAK memuat seluruh database Anda ke dalam memori sekaligus, tetapi hanya mengambil data yang diperlukan sesuai kebutuhan.

Mempertahankan status pengguna dengan Preferences DataStore

Selain SQL dan Room, Anda juga tahu cara mempertahankan nilai individual seperti setelan pengguna. Untuk aplikasi Flight Search, Anda perlu menyimpan string penelusuran pengguna di Preferences DataStore sehingga string tersebut terisi saat pengguna meluncurkan kembali aplikasi. Jika kolom teks kosong saat pengguna keluar dari aplikasi, daftar penerbangan favorit harus ditampilkan.

5. Membuat aplikasi Flight Search

Setelah Anda membaca semua persyaratannya, sekarang saatnya membuat aplikasi. Meskipun unit ini secara eksklusif berfokus pada persistensi data, penting untuk terus mendapatkan praktik kumulatif. Meskipun Anda telah melihat contoh screenshot dari aplikasi Flight Search, project ini adalah peluang Anda untuk membuat aplikasi Anda unik dan menarik.

Meskipun tugas mendetail ini tidak biasa, Anda sudah mengetahui semua konsep inti yang diperlukan untuk membuat project ini. Jika mengalami masalah atau memerlukan pengingat, Anda dapat melihat codelab sebelumnya.

Hal berikut mungkin berguna bagi Anda saat mengerjakan project:

Yang terpenting, nikmati prosesnya. Belajar adalah sebuah perjalanan. Meskipun project ini mungkin sulit, Anda akan mempelajari sesuatu yang baru, lalu menyelesaikan masalah yang sama dengan mudah di lain waktu. Selamat bersenang-senang, dan sampai jumpa di unit berikutnya.