Skip to content

Latest commit

Β 

History

13 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

✈️ SmartTravel

Sistem Manajemen Reservasi & Paket Wisata Berbasis PySide6

Tugas Akhir β€” Pemrograman Visual Universitas Mataram Β· 2026


πŸ‘₯ Tim Pengembang

Nama NIM Peran
Zainul Majdi F1D02310028 Ketua
Nayla Anugerah Nisa F1D02310020 Anggota
Muhammad Bintang Wiratama F1D022141 Anggota

πŸ“‹ Deskripsi Proyek

SmartTravel adalah aplikasi desktop berbasis GUI yang dirancang untuk mempermudah agen perjalanan (travel agency) dalam mengelola data pelanggan dan operasional pemesanan paket wisata secara digital dan terintegrasi.

Aplikasi ini dibangun menggunakan framework PySide6 (Qt for Python) dengan arsitektur MVC (Model-View-Controller), database relasional SQLite, dan dilengkapi fitur pembuatan Invoice PDF otomatis serta Dashboard visual untuk memantau statistik penjualan secara real-time.


πŸ–₯️ Tampilan Aplikasi

Halaman Login

Tampilan split-panel premium dengan branding kiri dan form login kanan. Terdapat animasi shake saat login gagal.

Login

Dashboard

Menampilkan 4 kartu statistik (total transaksi, revenue, pelanggan, pending) beserta grafik batang transaksi per bulan dan pie chart paket terpopuler.

Dashboard

Kelola Pelanggan

Tabel CRUD lengkap dengan fitur pencarian real-time berdasarkan nama, email, atau nomor telepon.

Pelanggan

Paket Wisata

Manajemen daftar paket wisata dengan informasi destinasi, durasi, harga per pax, dan status ketersediaan.

Paket

Reservasi & Transaksi

Proses pemesanan terintegrasi: pilih pelanggan & paket β†’ kalkulasi otomatis β†’ update status β†’ cetak invoice PDF.

Reservasi


✨ Fitur Utama

Fitur Keterangan
πŸ” Autentikasi Login Sistem login dengan validasi username & password + animasi error
πŸ‘₯ Kelola Pelanggan CRUD data pelanggan + pencarian real-time
🌴 Kelola Paket Wisata CRUD paket dengan harga, durasi, dan status ketersediaan
πŸ—“οΈ Proses Reservasi Buat reservasi, kalkulasi total otomatis, update status (Pending / Confirmed / Cancelled)
🧾 Invoice PDF Generate invoice profesional berformat PDF menggunakan ReportLab, tersimpan otomatis
πŸ“Š Dashboard Monitoring Grafik transaksi per bulan (bar chart) & paket terpopuler (pie chart) via Matplotlib
πŸ—ƒοΈ Database SQLite Penyimpanan persisten dengan foreign key, auto-seed 5 paket wisata contoh
🎨 UI Dark Theme Antarmuka gelap elegan dengan palet warna navy-biru-oranye yang konsisten

πŸ—οΈ Arsitektur Proyek (MVC)

smarttravel/
β”œβ”€β”€ main.py                        # Entry point β€” inisialisasi app & alur loginβ†’main
β”‚
β”œβ”€β”€ config/
β”‚   └── database.py                # Koneksi SQLite, inisialisasi skema, seed data awal
β”‚
β”œβ”€β”€ models/                        # MODEL β€” akses & manipulasi data
β”‚   └── models.py                  # Dataclass + CRUD: User, Pelanggan, PaketWisata, Transaksi
β”‚
β”œβ”€β”€ controllers/                   # CONTROLLER β€” logika bisnis
β”‚   └── controllers.py             # AuthController, PelangganController,
β”‚                                  # PaketController, TransaksiController
β”‚
β”œβ”€β”€ views/                         # VIEW β€” antarmuka pengguna (PySide6)
β”‚   β”œβ”€β”€ login_view.py              # Halaman login split-panel
β”‚   β”œβ”€β”€ main_window.py             # Window utama + sidebar navigasi
β”‚   β”œβ”€β”€ dashboard_view.py          # Dashboard statistik + grafik
β”‚   β”œβ”€β”€ pelanggan_view.py          # Halaman CRUD pelanggan
β”‚   β”œβ”€β”€ paket_view.py              # Halaman CRUD paket wisata
β”‚   └── transaksi_view.py          # Halaman reservasi & transaksi
β”‚
β”œβ”€β”€ utils/
β”‚   β”œβ”€β”€ theme.py                   # Konstanta warna & stylesheet global
β”‚   └── pdf_generator.py           # Generator invoice PDF (ReportLab)
β”‚
β”œβ”€β”€ database/
β”‚   β”œβ”€β”€ smarttravel.db             # File database SQLite (dibuat otomatis saat run pertama)
β”‚   └── invoices/                  # Folder penyimpanan invoice PDF hasil generate
β”‚
└── requirements.txt               # Daftar dependensi Python

Alur Arsitektur MVC

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”   event / input   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   panggil method   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  VIEW   β”‚ ────────────────► β”‚ CONTROLLER β”‚ ──────────────────► β”‚  MODEL  β”‚
β”‚(PySide6)β”‚                   β”‚  (logic)   β”‚                     β”‚(SQLite) β”‚
β”‚         β”‚ ◄──────────────── β”‚            β”‚ ◄─────────────────  β”‚         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   update UI       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   return data       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ—„οΈ Skema Database

Tabel users

Kolom Tipe Keterangan
id INTEGER PK Auto increment
username TEXT UNIQUE Username login
password TEXT Password (plaintext)
role TEXT Peran user (default: admin)
created_at DATETIME Waktu dibuat

Tabel pelanggan

Kolom Tipe Keterangan
id INTEGER PK Auto increment
nama TEXT Nama lengkap pelanggan
email TEXT UNIQUE Alamat email
telepon TEXT Nomor telepon
alamat TEXT Alamat lengkap
created_at DATETIME Waktu didaftarkan

Tabel paket_wisata

Kolom Tipe Keterangan
id INTEGER PK Auto increment
nama_paket TEXT Nama paket wisata
destinasi TEXT Kota/lokasi tujuan
durasi_hari INTEGER Lama perjalanan (hari)
harga REAL Harga per orang (Rp)
deskripsi TEXT Keterangan paket
tersedia INTEGER Status: 1=Tersedia, 0=Nonaktif

Tabel transaksi

Kolom Tipe Keterangan
id INTEGER PK Auto increment
kode_invoice TEXT UNIQUE Kode unik (format: INV-YYMMDD-XXXX)
pelanggan_id INTEGER FK Referensi ke pelanggan.id
paket_id INTEGER FK Referensi ke paket_wisata.id
tanggal_pesan DATE Tanggal pemesanan
tanggal_berangkat DATE Tanggal keberangkatan
jumlah_orang INTEGER Jumlah peserta
total_harga REAL Total biaya (harga Γ— jumlah_orang)
status TEXT Pending / Confirmed / Cancelled
catatan TEXT Catatan tambahan

πŸš€ Cara Menjalankan

1. Prasyarat

Pastikan Python 3.10 atau lebih baru sudah terinstall:

python --version

2. Clone / Download Proyek

# Clone via git
git clone https://github.com/username/smarttravel.git
cd smarttravel

# Atau ekstrak file ZIP yang sudah diunduh
cd smarttravel

3. Buat Virtual Environment (Disarankan)

# Buat virtual environment
python -m venv venv

# Aktifkan (Windows)
venv\Scripts\activate

# Aktifkan (macOS / Linux)
source venv/bin/activate

4. Install Dependensi

pip install -r requirements.txt

Daftar library yang akan diinstall:

Library Versi Fungsi
PySide6 β‰₯ 6.6.0 Framework GUI (Qt for Python)
reportlab β‰₯ 4.0.0 Generate invoice PDF
matplotlib β‰₯ 3.8.0 Grafik dashboard (opsional)

5. Jalankan Aplikasi

python main.py

βœ… Database smarttravel.db akan dibuat otomatis di folder database/ pada saat pertama kali dijalankan, beserta 5 paket wisata contoh sebagai data awal.

6. Login

Field Value
Username admin
Password admin123

πŸ“„ Cara Menggunakan Fitur Invoice PDF

  1. Buka halaman Reservasi
  2. Klik οΌ‹ Buat Reservasi β†’ isi data β†’ klik Buat Reservasi
  3. Saat dialog konfirmasi muncul, klik Ya untuk langsung cetak PDF
  4. Atau pada tabel, klik tombol 🧾 PDF pada baris transaksi yang diinginkan
  5. File PDF tersimpan otomatis di: database/invoices/INV-XXXXXX.pdf

βš™οΈ Troubleshooting

Grafik tidak muncul di Dashboard

Pastikan matplotlib sudah terinstall:

pip install matplotlib

Error saat cetak PDF

Pastikan reportlab sudah terinstall:

pip install reportlab

PySide6 gagal diinstall (Python 3.12+)

Coba perbarui pip terlebih dahulu:

pip install --upgrade pip
pip install PySide6

Database error / corrupt

Hapus file database/smarttravel.db dan jalankan ulang. Database akan dibuat ulang secara otomatis.


πŸ› οΈ Teknologi yang Digunakan

Teknologi Versi Keterangan
Python 3.10+ Bahasa pemrograman utama
PySide6 6.6+ Framework GUI berbasis Qt
SQLite 3.x Database relasional lokal
ReportLab 4.0+ Pembuatan dokumen PDF
Matplotlib 3.8+ Visualisasi data / grafik

πŸ“ Lisensi

Proyek ini dibuat untuk keperluan Tugas Akhir Mata Kuliah Pemrograman Visual.
Hak cipta Β© 2026 β€” Zainul Majdi, Nayla Anugerah Nisa, Muhammad Bintang Wiratama.

About

SmartTravel adalah aplikasi desktop berbasis GUI yang dirancang untuk mempermudah agen perjalanan (travel agency) dalam mengelola data pelanggan dan operasional pemesanan paket wisata secara digital dan terintegrasi.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages