Berikut adalah contoh implementasi sederhana Sistem Reservasi Tiket menggunakan C++. Sistem ini memungkinkan pengguna untuk:
- Melihat daftar tiket yang tersedia.
- Memesan tiket.
- Membatalkan tiket.
- Menampilkan daftar reservasi.
Kode Lengkap
#include <iostream>
#include <vector>
#include <string>
using namespace std;
// Struktur untuk menyimpan informasi tiket
struct Tiket {
int id;
string tujuan;
double harga;
bool tersedia;
};
// Daftar tiket awal
vector<Tiket> daftarTiket = {
{1, "Jakarta - Bandung", 150000, true},
{2, "Jakarta - Surabaya", 300000, true},
{3, "Jakarta - Yogyakarta", 250000, true},
{4, "Bandung - Bali", 500000, true},
{5, "Surabaya - Lombok", 450000, true}
};
// Daftar reservasi
vector<Tiket> reservasi;
// Menampilkan daftar tiket
void tampilkanTiket() {
cout << "\nDaftar Tiket Tersedia:\n";
cout << "ID\tTujuan\t\t\tHarga\tStatus\n";
for (const auto& tiket : daftarTiket) {
cout << tiket.id << "\t" << tiket.tujuan << "\t" << tiket.harga << "\t";
cout << (tiket.tersedia ? "Tersedia" : "Terpesan") << "\n";
}
}
// Memesan tiket
void pesanTiket() {
int id;
cout << "\nMasukkan ID tiket yang ingin dipesan: ";
cin >> id;
for (auto& tiket : daftarTiket) {
if (tiket.id == id) {
if (tiket.tersedia) {
tiket.tersedia = false;
reservasi.push_back(tiket);
cout << "Tiket dengan tujuan \"" << tiket.tujuan << "\" berhasil dipesan.\n";
return;
} else {
cout << "Tiket ini sudah terpesan.\n";
return;
}
}
}
cout << "ID tiket tidak ditemukan.\n";
}
// Membatalkan tiket
void batalkanTiket() {
int id;
cout << "\nMasukkan ID tiket yang ingin dibatalkan: ";
cin >> id;
for (auto& tiket : daftarTiket) {
if (tiket.id == id && !tiket.tersedia) {
tiket.tersedia = true;
// Hapus tiket dari daftar reservasi
for (auto it = reservasi.begin(); it != reservasi.end(); ++it) {
if (it->id == id) {
reservasi.erase(it);
break;
}
}
cout << "Tiket dengan tujuan \"" << tiket.tujuan << "\" berhasil dibatalkan.\n";
return;
}
}
cout << "ID tiket tidak ditemukan atau tiket belum dipesan.\n";
}
// Menampilkan daftar reservasi
void tampilkanReservasi() {
cout << "\nDaftar Reservasi:\n";
if (reservasi.empty()) {
cout << "Tidak ada tiket yang dipesan.\n";
return;
}
cout << "ID\tTujuan\t\t\tHarga\n";
for (const auto& tiket : reservasi) {
cout << tiket.id << "\t" << tiket.tujuan << "\t" << tiket.harga << "\n";
}
}
// Menu utama
void menuUtama() {
int pilihan;
do {
cout << "\n=== Sistem Reservasi Tiket ===\n";
cout << "1. Lihat Daftar Tiket\n";
cout << "2. Pesan Tiket\n";
cout << "3. Batalkan Tiket\n";
cout << "4. Lihat Reservasi\n";
cout << "5. Keluar\n";
cout << "Pilih opsi: ";
cin >> pilihan;
switch (pilihan) {
case 1:
tampilkanTiket();
break;
case 2:
pesanTiket();
break;
case 3:
batalkanTiket();
break;
case 4:
tampilkanReservasi();
break;
case 5:
cout << "Terima kasih telah menggunakan sistem reservasi tiket!\n";
break;
default:
cout << "Pilihan tidak valid. Coba lagi.\n";
break;
}
} while (pilihan != 5);
}
// Program utama
int main() {
menuUtama();
return 0;
}
Penjelasan Kode
- Struktur Tiket
id
: Identifikasi unik untuk setiap tiket.tujuan
: Informasi tujuan perjalanan.harga
: Harga tiket.tersedia
: Status apakah tiket tersedia atau sudah dipesan.
- Daftar Tiket dan Reservasi
daftarTiket
: Berisi daftar tiket yang dapat dipesan.reservasi
: Menyimpan daftar tiket yang telah dipesan.
- Fungsi-Fungsi Utama
tampilkanTiket()
: Menampilkan semua tiket beserta statusnya.pesanTiket()
: Memesan tiket berdasarkan ID. Jika tiket sudah terpesan, akan menampilkan pesan error.batalkanTiket()
: Membatalkan reservasi tiket dan mengembalikan status tiket menjadi tersedia.tampilkanReservasi()
: Menampilkan tiket yang telah dipesan oleh pengguna.
- Menu Utama
- Menyediakan antarmuka untuk mengakses semua fitur sistem.
Contoh Output
=== Sistem Reservasi Tiket ===
1. Lihat Daftar Tiket
2. Pesan Tiket
3. Batalkan Tiket
4. Lihat Reservasi
5. Keluar
Pilih opsi: 1
Daftar Tiket Tersedia:
ID Tujuan Harga Status
1 Jakarta - Bandung 150000 Tersedia
2 Jakarta - Surabaya 300000 Tersedia
3 Jakarta - Yogyakarta 250000 Tersedia
4 Bandung - Bali 500000 Tersedia
5 Surabaya - Lombok 450000 Tersedia
=== Sistem Reservasi Tiket ===
1. Lihat Daftar Tiket
2. Pesan Tiket
3. Batalkan Tiket
4. Lihat Reservasi
5. Keluar
Pilih opsi: 2
Masukkan ID tiket yang ingin dipesan: 3
Tiket dengan tujuan "Jakarta - Yogyakarta" berhasil dipesan.
=== Sistem Reservasi Tiket ===
1. Lihat Daftar Tiket
2. Pesan Tiket
3. Batalkan Tiket
4. Lihat Reservasi
5. Keluar
Pilih opsi: 4
Daftar Reservasi:
ID Tujuan Harga
3 Jakarta - Yogyakarta 250000
Fitur Tambahan
- Pencarian Tiket: Tambahkan fitur untuk mencari tiket berdasarkan tujuan atau harga tertentu.
- Penyimpanan Data: Gunakan file (CSV atau JSON) untuk menyimpan data tiket sehingga dapat diakses kembali saat program dijalankan ulang.
- Validasi Input: Tangani kasus input yang salah seperti memasukkan string alih-alih angka.
Jika Anda ingin pengembangan lebih lanjut, beri tahu saya! 😊
Leave a Reply