0% menganggap dokumen ini bermanfaat (0 suara)
27 tayangan9 halaman

Sistem Manajemen Data dengan Stack dan Linked List

Program ini menggunakan konsep stack dan linked list untuk mengelola data seperti barang, transaksi keuangan, dan informasi lainnya. Program dapat menambah, menghapus, dan menampilkan data-data tersebut.

Diunggah oleh

yunitayasman15
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
27 tayangan9 halaman

Sistem Manajemen Data dengan Stack dan Linked List

Program ini menggunakan konsep stack dan linked list untuk mengelola data seperti barang, transaksi keuangan, dan informasi lainnya. Program dapat menambah, menghapus, dan menampilkan data-data tersebut.

Diunggah oleh

yunitayasman15
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd

NO 1

#include <iostream>
#include <string>

#define MAX 100 // Maksimum kapasitas stack

using namespace std;

// Struktur untuk barang


struct Barang {
string nama;
int jumlah;
};

// Kelas Stack untuk menyimpan daftar barang


class Stack {
private:
Barang barang[MAX];
int top;

public:
Stack() { top = -1; }

// Mengecek apakah stack kosong


bool isEmpty() {
return (top == -1);
}

// Mengecek apakah stack penuh


bool isFull() {
return (top == MAX - 1);
}

// Menambahkan barang ke dalam stack


void push(string nama, int jumlah) {
if (isFull()) {
cout << "Stack penuh! Tidak dapat menambahkan barang.\n";
return;
}
top++;
barang[top].nama = nama;
barang[top].jumlah = jumlah;
cout << "Barang " << nama << " dengan jumlah " << jumlah << " telah
ditambahkan ke dalam stack.\n";
}

// Menghapus barang dari stack dan menampilkan detailnya


void pop() {
if (isEmpty()) {
cout << "Stack kosong! Tidak ada barang yang bisa diperiksa.\n";
return;
}
cout << "Barang " << barang[top].nama << " dengan jumlah " <<
barang[top].jumlah << " dihapus dari stack.\n";
top--;
}
// Menampilkan barang yang ada di stack
void display() {
if (isEmpty()) {
cout << "Stack kosong! Tidak ada barang yang tersedia.\n";
return;
}
cout << "Daftar barang di stack:\n";
for (int i = top; i >= 0; i--) {
cout << "Barang: " << barang[i].nama << ", Jumlah: " <<
barang[i].jumlah << endl;
}
}
};

int main() {
Stack stack;
int pilihan;
string nama;
int jumlah;

while (true) {
cout << "\nMenu:\n";
cout << "1. Tambah Barang ke Stack\n";
cout << "2. Periksa Barang dari Stack\n";
cout << "3. Tampilkan Semua Barang di Stack\n";
cout << "4. Keluar\n";
cout << "Pilih: ";
cin >> pilihan;

switch (pilihan) {
case 1:
cout << "Masukkan nama barang: ";
cin >> nama;
cout << "Masukkan jumlah barang: ";
cin >> jumlah;
stack.push(nama, jumlah);
break;
case 2:
stack.pop();
break;
case 3:
stack.display();
break;
case 4:
exit(0);
break;
default:
cout << "Pilihan tidak valid!\n";
}
}

return 0;
}


no 2

#include <iostream>
#include <stack>
#include <string>

using namespace std;

// Struktur untuk menyimpan informasi transaksi


struct Transaction {
string type;
double amount;
string date;
};

// Fungsi untuk menampilkan menu


void displayMenu() {
cout << "=============================" << endl;
cout << "Menu Transaksi Keuangan" << endl;
cout << "=============================" << endl;
cout << "1. Tambah Transaksi" << endl;
cout << "2. Lihat Sejarah Transaksi" << endl;
cout << "3. Keluar" << endl;
cout << "Pilih opsi: ";
}

// Fungsi untuk menambahkan transaksi baru ke dalam stack


void addTransaction(stack<Transaction>& transactions) {
Transaction newTransaction;
cout << "Masukkan jenis transaksi (debit/kredit): ";
cin >> newTransaction.type;
cout << "Masukkan jumlah: ";
cin >> newTransaction.amount;
cout << "Masukkan tanggal (DD-MM-YYYY): ";
cin >> newTransaction.date;

transactions.push(newTransaction);
cout << "Transaksi berhasil ditambahkan!" << endl;
}

// Fungsi untuk menampilkan sejarah transaksi


void viewTransactionHistory(const stack<Transaction>& transactions) {
stack<Transaction> tempStack = transactions;

if (tempStack.empty()) {
cout << "Tidak ada transaksi yang tercatat." << endl;
} else {
cout << "Sejarah Transaksi:" << endl;
while (!tempStack.empty()) {
Transaction transaction = tempStack.top();
tempStack.pop();
cout << "Tanggal: " << transaction.date << ", Jenis: " <<
transaction.type << ", Jumlah: " << transaction.amount << endl;
}
}
}

int main() {
stack<Transaction> transactions;
int choice;

do {
displayMenu();
cin >> choice;

switch (choice) {
case 1:
addTransaction(transactions);
break;
case 2:
viewTransactionHistory(transactions);
break;
case 3:
cout << "Terima kasih telah menggunakan program ini." << endl;
break;
default:
cout << "Pilihan tidak valid, coba lagi." << endl;
}
} while (choice != 3);

return 0;
}

no 3

#include <iostream>
#include <string>

using namespace std;

// Struktur untuk menyimpan informasi tujuan kuliner


struct CulinaryDestination {
string restaurantName;
string location;
CulinaryDestination* next;
};

// Fungsi untuk menambahkan tujuan kuliner baru ke dalam linked list


void addDestination(CulinaryDestination*& head, const string& restaurantName, const
string& location) {
CulinaryDestination* newDestination = new CulinaryDestination;
newDestination->restaurantName = restaurantName;
newDestination->location = location;
newDestination->next = head;
head = newDestination;
cout << "Tujuan kuliner berhasil ditambahkan!" << endl;
}

// Fungsi untuk menampilkan semua tujuan kuliner


void displayDestinations(CulinaryDestination* head) {
CulinaryDestination* current = head;
if (current == nullptr) {
cout << "Tidak ada tujuan kuliner yang tercatat." << endl;
return;
}

cout << "Daftar Tujuan Kuliner 2024:" << endl;


while (current != nullptr) {
cout << "Nama Restoran: " << current->restaurantName << ", Lokasi: " <<
current->location << endl;
current = current->next;
}
}

// Fungsi untuk menghapus tujuan kuliner berdasarkan nama restoran


void deleteDestination(CulinaryDestination*& head, const string& restaurantName) {
CulinaryDestination* current = head;
CulinaryDestination* previous = nullptr;

while (current != nullptr && current->restaurantName != restaurantName) {


previous = current;
current = current->next;
}

if (current == nullptr) {
cout << "Restoran dengan nama '" << restaurantName << "' tidak ditemukan."
<< endl;
return;
}

if (previous == nullptr) {
head = current->next;
} else {
previous->next = current->next;
}

delete current;
cout << "Tujuan kuliner berhasil dihapus!" << endl;
}

int main() {
CulinaryDestination* head = nullptr;
int choice;
string restaurantName, location;

do {
cout << "=============================" << endl;
cout << "Menu Tujuan Kuliner 2024" << endl;
cout << "=============================" << endl;
cout << "1. Tambah Tujuan Kuliner" << endl;
cout << "2. Lihat Daftar Tujuan" << endl;
cout << "3. Hapus Tujuan Kuliner" << endl;
cout << "4. Keluar" << endl;
cout << "Pilih opsi: ";
cin >> choice;
cin.ignore(); // Mengabaikan newline character setelah pilihan

switch (choice) {
case 1:
cout << "Masukkan nama restoran: ";
getline(cin, restaurantName);
cout << "Masukkan lokasi: ";
getline(cin, location);
addDestination(head, restaurantName, location);
break;
case 2:
displayDestinations(head);
break;
case 3:
cout << "Masukkan nama restoran yang ingin dihapus: ";
getline(cin, restaurantName);
deleteDestination(head, restaurantName);
break;
case 4:
cout << "Terima kasih telah menggunakan program ini." << endl;
break;
default:
cout << "Pilihan tidak valid, coba lagi." << endl;
}
} while (choice != 4);

// Membersihkan memori
while (head != nullptr) {
CulinaryDestination* temp = head;
head = head->next;
delete temp;
}

return 0;
}

no 4

#include <iostream>
#include <string>

using namespace std;

// Struktur untuk menyimpan informasi anggota keluarga


struct FamilyMember {
string name;
int age;
string gender;
string city;
FamilyMember* next;
};

// Fungsi untuk menambahkan anggota keluarga baru ke dalam linked list


void addFamilyMember(FamilyMember*& head, const string& name, int age, const
string& gender, const string& city) {
FamilyMember* newMember = new FamilyMember;
newMember->name = name;
newMember->age = age;
newMember->gender = gender;
newMember->city = city;
newMember->next = head;
head = newMember;
cout << "Anggota keluarga berhasil ditambahkan!" << endl;
}

// Fungsi untuk menampilkan semua anggota keluarga


void displayFamilyMembers(FamilyMember* head) {
FamilyMember* current = head;
if (current == nullptr) {
cout << "Tidak ada anggota keluarga yang tercatat." << endl;
return;
}

cout << "Daftar Anggota Keluarga:" << endl;


while (current != nullptr) {
cout << "Nama: " << current->name << ", Umur: " << current->age
<< ", Jenis Kelamin: " << current->gender << ", Kota: " << current-
>city << endl;
current = current->next;
}
}

// Fungsi untuk menghapus anggota keluarga berdasarkan nama


void deleteFamilyMember(FamilyMember*& head, const string& name) {
FamilyMember* current = head;
FamilyMember* previous = nullptr;

while (current != nullptr && current->name != name) {


previous = current;
current = current->next;
}

if (current == nullptr) {
cout << "Anggota keluarga dengan nama '" << name << "' tidak ditemukan." <<
endl;
return;
}

if (previous == nullptr) {
head = current->next;
} else {
previous->next = current->next;
}

delete current;
cout << "Anggota keluarga berhasil dihapus!" << endl;
}

int main() {
FamilyMember* head = nullptr;
int choice;
string name, gender, city;
int age;

do {
cout << "=============================" << endl;
cout << "Menu Anggota Keluarga" << endl;
cout << "=============================" << endl;
cout << "1. Tambah Anggota Keluarga" << endl;
cout << "2. Lihat Daftar Anggota Keluarga" << endl;
cout << "3. Hapus Anggota Keluarga" << endl;
cout << "4. Keluar" << endl;
cout << "Pilih opsi: ";
cin >> choice;
cin.ignore(); // Mengabaikan newline character setelah pilihan

switch (choice) {
case 1:
cout << "Masukkan nama: ";
getline(cin, name);
cout << "Masukkan umur: ";
cin >> age;
cin.ignore(); // Mengabaikan newline character setelah umur
cout << "Masukkan jenis kelamin: ";
getline(cin, gender);
cout << "Masukkan kota tinggal: ";
getline(cin, city);
addFamilyMember(head, name, age, gender, city);
break;
case 2:
displayFamilyMembers(head);
break;
case 3:
cout << "Masukkan nama anggota keluarga yang ingin dihapus: ";
getline(cin, name);
deleteFamilyMember(head, name);
break;
case 4:
cout << "Terima kasih telah menggunakan program ini." << endl;
break;
default:
cout << "Pilihan tidak valid, coba lagi." << endl;
}
} while (choice != 4);

// Membersihkan memori
while (head != nullptr) {
FamilyMember* temp = head;
head = head->next;
delete temp;
}

return 0;
}


no 5

#include <iostream>
#include <string>
#include <algorithm>

using namespace std;

int main() {
// Inisialisasi nama lengkap
string fullName = "johan setia budi";
string address = "JL Rawa Dolar, Cibubur, Bekasi";

// Menampilkan nama lengkap dengan format yang diinginkan


cout << "Nama Lengkap: " << fullName << endl;

// Menampilkan karakter pertama


char firstChar = toupper(fullName[0]);
cout << "Karakter Pertama: " << firstChar << endl;

// Menampilkan karakter terakhir


char lastChar = toupper(fullName[fullName.length() - 1]);
cout << "Karakter Terakhir: " << lastChar << endl;

// Mengubah nama
string modifiedName = fullName;
modifiedName[0] = toupper(modifiedName[0]); // Huruf pertama kapital
modifiedName[6] = ' '; // Mengubah karakter ke-7 dari 'e' menjadi ' ' (spasi)
modifiedName[7] = 'S'; // Mengubah karakter ke-8 dari 't' menjadi 'S'
modifiedName[8] = 'F'; // Mengubah karakter ke-9 dari 'e' menjadi 'F'

cout << "Nama Setelah Diubah: " << modifiedName << endl;

// Menggabungkan nama yang telah diubah dengan alamat


string fullNameAndAddress = modifiedName + ", " + address;
cout << "Nama Lengkap dan Alamat: " << fullNameAndAddress << endl;

return 0;
}

Anda mungkin juga menyukai