Membuat Agenda Sederhana dengan C++

Membuat Agenda Sederhana dengan C++

Berikut adalah program sederhana untuk membuat dan mengelola agenda dengan C++. Program ini memungkinkan pengguna untuk:

  1. Menambahkan agenda.
  2. Melihat semua agenda.
  3. Menghapus agenda berdasarkan ID.
  4. Mencari agenda berdasarkan tanggal.

Kode Lengkap

#include <iostream>
#include <vector>
#include <string>
using namespace std;

// Struktur untuk menyimpan data agenda
struct Agenda {
    int id;
    string tanggal; // Format: YYYY-MM-DD
    string waktu;   // Format: HH:MM
    string deskripsi;
};

// Vektor untuk menyimpan daftar agenda
vector<Agenda> daftarAgenda;
int nextId = 1; // ID unik untuk setiap agenda

// Fungsi untuk menambahkan agenda
void tambahAgenda() {
    Agenda a;
    a.id = nextId++;
    cout << "\nMasukkan tanggal (YYYY-MM-DD): ";
    cin >> a.tanggal;
    cout << "Masukkan waktu (HH:MM): ";
    cin >> a.waktu;
    cin.ignore(); // Membersihkan buffer input
    cout << "Masukkan deskripsi agenda: ";
    getline(cin, a.deskripsi);

    daftarAgenda.push_back(a);
    cout << "Agenda berhasil ditambahkan!\n";
}

// Fungsi untuk menampilkan semua agenda
void tampilkanAgenda() {
    if (daftarAgenda.empty()) {
        cout << "\nTidak ada agenda.\n";
        return;
    }

    cout << "\nDaftar Agenda:\n";
    cout << "ID\tTanggal\t\tWaktu\tDeskripsi\n";
    for (const auto& a : daftarAgenda) {
        cout << a.id << "\t" << a.tanggal << "\t" << a.waktu << "\t" << a.deskripsi << "\n";
    }
}

// Fungsi untuk menghapus agenda berdasarkan ID
void hapusAgenda() {
    int id;
    cout << "\nMasukkan ID agenda yang ingin dihapus: ";
    cin >> id;

    for (auto it = daftarAgenda.begin(); it != daftarAgenda.end(); ++it) {
        if (it->id == id) {
            daftarAgenda.erase(it);
            cout << "Agenda dengan ID " << id << " berhasil dihapus.\n";
            return;
        }
    }
    cout << "Agenda dengan ID " << id << " tidak ditemukan.\n";
}

// Fungsi untuk mencari agenda berdasarkan tanggal
void cariAgenda() {
    string tanggal;
    cout << "\nMasukkan tanggal (YYYY-MM-DD) untuk mencari agenda: ";
    cin >> tanggal;

    bool ditemukan = false;
    cout << "\nAgenda pada tanggal " << tanggal << ":\n";
    cout << "ID\tTanggal\t\tWaktu\tDeskripsi\n";
    for (const auto& a : daftarAgenda) {
        if (a.tanggal == tanggal) {
            cout << a.id << "\t" << a.tanggal << "\t" << a.waktu << "\t" << a.deskripsi << "\n";
            ditemukan = true;
        }
    }

    if (!ditemukan) {
        cout << "Tidak ada agenda pada tanggal tersebut.\n";
    }
}

// Menu utama
void menuUtama() {
    int pilihan;

    do {
        cout << "\n=== Agenda Sederhana ===\n";
        cout << "1. Tambah Agenda\n";
        cout << "2. Tampilkan Semua Agenda\n";
        cout << "3. Hapus Agenda\n";
        cout << "4. Cari Agenda Berdasarkan Tanggal\n";
        cout << "5. Keluar\n";
        cout << "Pilih opsi: ";
        cin >> pilihan;

        switch (pilihan) {
            case 1:
                tambahAgenda();
                break;
            case 2:
                tampilkanAgenda();
                break;
            case 3:
                hapusAgenda();
                break;
            case 4:
                cariAgenda();
                break;
            case 5:
                cout << "Terima kasih telah menggunakan program agenda sederhana!\n";
                break;
            default:
                cout << "Pilihan tidak valid. Silakan coba lagi.\n";
        }
    } while (pilihan != 5);
}

// Program utama
int main() {
    menuUtama();
    return 0;
}

Penjelasan Kode

  1. Struktur Data Agenda
    • struct Agenda: Menyimpan informasi agenda, termasuk ID, tanggal, waktu, dan deskripsi.
  2. Vektor daftarAgenda
    • Digunakan untuk menyimpan daftar semua agenda yang dimasukkan ke dalam sistem.
  3. Fungsi Utama
    • tambahAgenda(): Menambahkan agenda baru ke dalam vektor.
    • tampilkanAgenda(): Menampilkan semua agenda dalam format tabel sederhana.
    • hapusAgenda(): Menghapus agenda berdasarkan ID dengan menggunakan iterator.
    • cariAgenda(): Mencari agenda berdasarkan tanggal yang diberikan pengguna.
  4. Menu Utama
    • Menyediakan antarmuka untuk pengguna mengakses fungsi-fungsi pengelolaan agenda.

Contoh Output

=== Agenda Sederhana ===
1. Tambah Agenda
2. Tampilkan Semua Agenda
3. Hapus Agenda
4. Cari Agenda Berdasarkan Tanggal
5. Keluar
Pilih opsi: 1

Masukkan tanggal (YYYY-MM-DD): 2024-01-01
Masukkan waktu (HH:MM): 10:00
Masukkan deskripsi agenda: Rapat awal tahun
Agenda berhasil ditambahkan!

=== Agenda Sederhana ===
1. Tambah Agenda
2. Tampilkan Semua Agenda
3. Hapus Agenda
4. Cari Agenda Berdasarkan Tanggal
5. Keluar
Pilih opsi: 2

Daftar Agenda:
ID      Tanggal         Waktu   Deskripsi
1       2024-01-01      10:00   Rapat awal tahun

Fitur Tambahan

  • Simpan dan Baca dari File: Gunakan pustaka fstream untuk menyimpan dan memuat data agenda dari file.
  • Validasi Input: Pastikan input tanggal dan waktu sesuai format yang diinginkan.
  • Edit Agenda: Tambahkan fitur untuk mengedit agenda berdasarkan ID.

Jika Anda ingin menambahkan fitur lain atau mengembangkan lebih lanjut, beri tahu saya! 😊

Leave a Reply

Your email address will not be published. Required fields are marked *