Tentang Saya – About Me

Program Penyewaan Baju Berbasis Objek dengan C++

Spesifikasi program:

  1. Program sewa diawali dengan menginput data baju terlebih dahulu.
  2. Terdapat fungsi untuk menampilkan data baju, mengurutkan baju berdasarkan harga, mencari data baju berdasarkan ID, harga, merk, model, warna, harga, ukuran.
  3. Terdapat fungsi sewa yang dapat mencatat data baju dan data penyewa dengan menginputkan:
    • Jumlah penyewa
    • Nama dan nohp penyewa, ID dan jumlah baju yang disewa.

     Proses sewa: 

    • Jika sewa berhasil, stok baju akan berkurang, dan data penyewa bertambah
    • Jika stok baju < jumlah baju yang disewa maka sewa gagal
File h

/*
Nama : Taliya Meyswara
NIM : A11.2022.14163
Kelompok : A11.41205
Mata Kuliah : Algoritma Pemrograman
Dosen : Ifan Rizqa M.Kom
TUGAS AKHIR INDIVIDU
========= Program Sewa Baju Berbasis Objek =========
1. Program sewa diawali dengan menginput data baju terlebih dahulu.
2. Terdapat fungsi untuk menampilkan data baju, mengurutkan baju berdasarkan harga, mencari data baju berdasarkan ID, harga, merk, model, warna, harga, ukuran.
2. Terdapat fungsi sewa yang dapat mencatat data buku dan data penyewa dengan menginputkan:
- Jumlah penyewa
- Nama dan nohp penyewa, ID dan jumlah baju yang disewa.
Proses sewa:
-> Jika sewa berhasil, stok baju akan berkurang, dan data penyewa bertambah
-> Jika stok baju < jumlah baju yang disewa maka sewa gagal
3. Data penyewa dapat ditampilkan ketika sudah terdapat penyewaan
4. Terdapat fungsi pengembalian baju dengan menginputkan nama penyewa yang ingin melakukan pengembalian baju.
5. Jika nama yang diinputkan tidak ada dalam data penyewa, maka pengembalian gagal
*/
#include <iostream>
#include <string>
using namespace std;
// fungsi untuk mengubah string menjadi lowercase
void lowercase(string& target) {
int i ;
i = 0;
while(i < target.length()){ // target.length() utk mengambil byk karakter dlm string
// pd setiap iterasi, karakter dlm tiap idx target akan diubah
// mjd lowercase dgn mnggunakan fungsi bawaan yaitu tolower
target[i] = tolower(target[i]);
i = i+1;
}
}
class Baju {
public:
// atribut
string merk, warna, model, ukuran;
int harga, id, stok;
//=========================================================================================
// fungsi utk menginput data baju, n merupakan jumlah data baju
void inputData(Baju arr[], int n) {
cout << "====================\nInput Data Baju\n====================" << endl;
cin.ignore();
for (int i = 0; i < n; i++) {
cout << "Data Baju ke-" << i + 1 << endl;
cout << "ID\t: ";
cin >> arr[i].id;
cin.ignore();
cout << "Merk\t: ";
getline(cin, arr[i].merk);
cout << "Model\t: ";
getline(cin, arr[i].model);
cout << "Warna\t: ";
getline(cin, arr[i].warna);
cout << "Ukuran\t: ";
getline(cin, arr[i].ukuran);
cout << "Harga\t: ";
cin >> arr[i].harga;
cout << "Stok\t: ";
cin >> arr[i].stok;
cout << endl;
}
system("cls");
cout << "====== DATA BERHASIL DISIMPAN ======" << endl;
}
//=========================================================================================
// fungsi utk menampilkan data baju
void tampilData(Baju arr[], int n) {
system("cls");
cout << "\t\t====== Data Baju ======" << endl;
cout << "-------------------------------------------------------" << endl;
cout << "ID\tMerk\tModel\tWarna\tUkuran\tHarga\tStok" << endl;
cout << "-------------------------------------------------------" << endl;
for (int i = 0; i < n; i++) {
cout << arr[i].id << "\t" << arr[i].merk << "\t" << arr[i].model << "\t" <<
arr[i].warna << "\t" << arr[i].ukuran << "\t" << arr[i].harga << "\t" << arr[i].stok << endl;
}
cout << "-------------------------------------------------------" << endl;
cout << endl;
}
//=========================================================================================
//fungsi void untuk mencari data baju berdasarkan harga baju menggunakan metode linear search
void cariID(Baju arr[], int n){
// Kamus Lokal
int i; // utk looping
int id; // utk menyimpan harga yg dicari
bool hasilCari; // utk menentukan hasilcari
hasilCari = false; // inisialisasi hasilCari dengan false
cout << "\nInput harga baju yang ingin dicari: " ; cin >> id;
i = 0;
while(i<n){
// proses pengecekan apakah harga yg diinput terdapat pd data
if(arr[i].id == id){
if (!hasilCari) {
cout << "\t\t====== Data Baju ======" << endl;
cout << "-------------------------------------------------------" << endl;
cout << "ID\tMerk\tModel\tWarna\tUkuran\tHarga\tStok" << endl;
cout << "-------------------------------------------------------" << endl;
hasilCari = true;
}
cout << arr[i].id << "\t" << arr[i].merk << "\t" << arr[i].model << "\t" <<
arr[i].warna << "\t" << arr[i].ukuran << "\t" << arr[i].harga << "\t" << arr[i].stok << endl;
}
i = i+1;
}
if(hasilCari == false){ // jk data tdk ada maka hasilCari tetap false
// dan akan mencetak output data tidak ditemukan
cout << "Baju dengan ID " << id << " tidak ditemukan" << endl;
}else {
cout << "-------------------------------------------------------" << endl;
}
}
//=========================================================================================
//fungsi untuk mencari data baju berdasarkan harga baju menggunakan metode linear search
void cariHarga(Baju arr[], int n) {
int harga; // untuk menyimpan harga yang dicari
bool hasilCari = false; // untuk menentukan hasil pencarian
cout << "\nInput harga baju yang ingin dicari: "; cin >> harga;
for (int i = 0; i < n; i++) {
if (arr[i].harga == harga) {
// Menampilkan judul kolom jika data ditemukan pertama kali
if (!hasilCari) {
cout << "\t\t====== Data Baju ======" << endl;
cout << "-------------------------------------------------------" << endl;
cout << "ID\tMerk\tModel\tWarna\tUkuran\tHarga\tStok" << endl;
cout << "-------------------------------------------------------" << endl;
hasilCari = true;
}
cout << arr[i].id << "\t" << arr[i].merk << "\t" << arr[i].model << "\t" <<
arr[i].warna << "\t" << arr[i].ukuran << "\t" << arr[i].harga << "\t" << arr[i].stok << endl;
}
}
if (!hasilCari) {
cout << "Baju dengan harga " << harga << " tidak ditemukan" << endl;
} else {
cout << "-------------------------------------------------------" << endl;
}
}
//=========================================================================================
// fungsi untuk mencari data baju berdasarkan merk baju menggunakan metode linear search
void cariMerk(Baju arr[], int n){
int i; // utk looping
string merk; // utk menyimpan merk yg dicari
bool hasilCari; // utk menentukan hasilcari
hasilCari = false; // inisialisasi hasilCari dengan false
cout << "\nInput merk baju yang ingin dicari: " ; cin >> merk;
//mengubah inputan merk mjd lowercase dgn memanggil fungsi lowercase
lowercase(merk);
i = 0;
while(i<n){
// mengubah data merk dalam array menjadi lowercase dgn memanggil fungsi lowercase
lowercase(arr[i].merk);
// proses pengecekan apakah harga yg diinput terdapat pd data
if(arr[i].merk == merk){
if (!hasilCari) {
cout << "\t\t====== Data Baju ======" << endl;
cout << "-------------------------------------------------------" << endl;
cout << "ID\tMerk\tModel\tWarna\tUkuran\tHarga\tStok" << endl;
cout << "-------------------------------------------------------" << endl;
hasilCari = true;
}
cout << arr[i].id << "\t" << arr[i].merk << "\t" << arr[i].model << "\t" <<
arr[i].warna << "\t" << arr[i].ukuran << "\t" << arr[i].harga << "\t" << arr[i].stok << endl;
}
i = i+1;
}
if(hasilCari == false){ // jk data tdk ada maka hasilCari tetap false
// dan akan mencetak output data tidak ditemukan
cout << "Baju dengan merk '" << merk << "' tidak ditemukan\n" << endl;
}else {
cout << "-------------------------------------------------------" << endl;
}
}
//=========================================================================================
//fungsi untuk mencari data baju berdasarkan model baju menggunakan metode linear search
void cariModel(Baju arr[], int n){
// Kamus Lokal
int i; // utk looping
string model; // utk menyimpan model yg dicari
bool hasilCari; // utk menentukan hasilcari
hasilCari = false; // inisialisasi hasilCari dengan false
cout << "\nInput model baju yang ingin dicari: " ; cin >> model;
//mengubah inputan model mjd lowercase dgn memanggil fungsi lowercase
lowercase(model);
i = 0;
while(i<n){
// mengubah data dalam array menjadi lowercase dgn memanggil fungsi lowercase
lowercase(arr[i].model);
// proses pengecekan apakah harga yg diinput terdapat pd data
if(arr[i].model == model){
if (!hasilCari) {
cout << "\t\t====== Data Baju ======" << endl;
cout << "-------------------------------------------------------" << endl;
cout << "ID\tMerk\tModel\tWarna\tUkuran\tHarga\tStok" << endl;
cout << "-------------------------------------------------------" << endl;
hasilCari = true;
}
cout << arr[i].id << "\t" << arr[i].merk << "\t" << arr[i].model << "\t" <<
arr[i].warna << "\t" << arr[i].ukuran << "\t" << arr[i].harga << "\t" << arr[i].stok << endl;
}
i = i+1;
}
if(hasilCari == false){ // jk data tdk ada maka hasilCari tetap false
// dan akan mencetak output data tidak ditemukan
cout << "Baju dengan model '" << model << "' tidak ditemukan" << endl;
}else {
cout << "-------------------------------------------------------" << endl;
}
}
//=========================================================================================
//fungsi untuk mencari data baju berdasarkan warna baju menggunakan metode linear search
void cariWarna(Baju arr[], int n){
// Kamus lokal
int i; // utk looping
string warna; // utk menyimpan warna yg dicari
bool hasilCari; // utk menentukan hasilcari
hasilCari = false; // inisialisasi hasilCari dengan false
cout << "\nInput warna baju yang ingin dicari: " ; cin >> warna;
//mengubah inputan warna mjd lowercase dgn memanggil fungsi lowercase
lowercase(warna);
i = 0;
while(i<n){
// mengubah data warna dalam array menjadi dgn memanggil fungsi lowercase
lowercase(arr[i].warna);
// proses pengecekan apakah harga yg diinput terdapat pd data
if(arr[i].warna == warna){
if (!hasilCari) {
cout << "\t\t====== Data Baju ======" << endl;
cout << "-------------------------------------------------------" << endl;
cout << "ID\tMerk\tModel\tWarna\tUkuran\tHarga\tStok" << endl;
cout << "-------------------------------------------------------" << endl;
hasilCari = true;
}
cout << arr[i].id << "\t" << arr[i].merk << "\t" << arr[i].model << "\t" <<
arr[i].warna << "\t" << arr[i].ukuran << "\t" << arr[i].harga << "\t" << arr[i].stok << endl;
}
i = i+1;
}
if(hasilCari == false){ // jk data tdk ada maka hasilCari tetap false
// dan akan mencetak output data tidak ditemukan
cout << "Baju dengan warna '" << warna << "' tidak ditemukan" << endl;
}else {
cout << "-------------------------------------------------------" << endl;
}
}
//=========================================================================================
//fungsi untuk mencari data baju berdasarkan ukuran baju menggunakan metode linear search
void cariUkuran(Baju arr[], int n){
// Kamus Lokal
int i; // utk looping
string ukuran; // utk menyimpan ukuran yg dicari
bool hasilCari; // utk menentukan hasilcari
hasilCari = false; // inisialisasi hasilCari dengan false
cout << "\nInput ukuran baju yang ingin dicari: " ; cin >> ukuran;
//mengubah inputan ukuran mjd lowercase dgn memanggil fungsi lowercase
lowercase(ukuran);
i = 0;
while(i<n){
// mengubah data ukuran dalam array menjadi dgn memanggil fungsi lowercase
lowercase(arr[i].ukuran);
// proses pengecekan apakah harga yg diinput terdapat pd data
if(arr[i].ukuran == ukuran){
if (!hasilCari) {
cout << "\t\t====== Data Baju ======" << endl;
cout << "-------------------------------------------------------" << endl;
cout << "ID\tMerk\tModel\tWarna\tUkuran\tHarga\tStok" << endl;
cout << "-------------------------------------------------------" << endl;
hasilCari = true;
}
cout << arr[i].id << "\t" << arr[i].merk << "\t" << arr[i].model << "\t" <<
arr[i].warna << "\t" << arr[i].ukuran << "\t" << arr[i].harga << "\t" << arr[i].stok << endl;
}
i = i+1;
}
if(hasilCari == false){ // jk data tdk ada maka hasilCari tetap false
// dan akan mencetak output data tidak ditemukan
cout << "Baju dengan warna '" << ukuran << "' tidak ditemukan" << endl;
}else {
cout << "-------------------------------------------------------" << endl;
}
}
//=========================================================================================
// fungsi untuk mencari data semua data sesuai pilihan dengan memanggil fungsi2 searching dari masing2 atribut
void searchData(Baju arr[], int n){
// Kamus lokal
char tanya; // utk menyimpan jawaban
int pilihan; // utk menyimpan pilihan
do{
system("cls");
cout << "\nCari Data Baju berdasarkan: " << endl;
cout << "1. Merk\n2. Model\n3. Warna\n4. Ukuran\n5. Harga\n0. Kembali" << endl;
cout << "Pilih [1/2/3/4/5/0] : " ; cin >> pilihan;
if(pilihan == 1){
// perulangan apabila ingin mencari data lagi
do{
cariMerk(arr,n); // panggil fungsi utk mencari data
cout << "Cari lagi? (y/t) : " ; cin >> tanya;
}while(tanya == 'y' || tanya == 'Y');
}else if(pilihan == 2){
// perulangan apabila ingin mencari data lagi
do{
cariModel(arr,n); // panggil fungsi utk mencari data
cout << "Cari lagi? (y/t) : " ; cin >> tanya;
}while(tanya == 'y' || tanya == 'Y');
}else if(pilihan == 3){
// perulangan apabila ingin mencari data lagi
do{
cariWarna(arr,n); // panggil fungsi utk mencari data
cout << "Cari lagi? (y/t) : " ; cin >> tanya;
}while(tanya == 'y' || tanya == 'Y');
}else if(pilihan == 4){
// perulangan apabila ingin mencari data lagi
do{
cariUkuran(arr,n); // panggil fungsi utk mencari data
cout << "Cari lagi? (y/t) : " ; cin >> tanya;
}while(tanya == 'y' || tanya == 'Y');
}else if(pilihan == 5){
// perulangan apabila ingin mencari data lagi
do{
cariHarga(arr,n); // panggil fungsi utk mencari data
cout << "Cari lagi? (y/t) : " ; cin >> tanya;
}while(tanya == 'y' || tanya == 'Y');
}else if(pilihan==0){
system("cls");
return;
}
else{
cout << "Pilihan Anda tidak valid" << endl;
}
cout << "\nCari data dengan pilihan lain?[y/t] : " ; cin >> tanya;
}while(tanya == 'y' || tanya == 'Y');
cout << "========= Keluar dari menu cari data ===========" << endl;
system("cls");
}
//=========================================================================================
// fungsi untuk mengurutkan data berdasarkan harga dgn bubblesort
void sortDatabyHarga(Baju arr[], int n){
// Kamus lokal
int i,j; // utk perulangan
Baju temp; // utk menyimpan nilai sementara
i = 0;
while(i<n-1){
j = 0;
while(j<n-i-1){
if(arr[j].harga > arr[j+1].harga){
//panggil prosedur utk menukar nilai
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
j = j+1;
}
i = i+1;
}
}
//=========================================================================================
};
class Penyewa {
public:
string nama;
string nohp;
int id, tgl_sewa, tgl_kembali, biaya, jumlah;
Baju dataBaju;
// fungsi utk menyewa baju, parameter x merupakan jumlah data penyewa
void sewaBaju(Baju arr[], int n, Penyewa penyewa[], int x) {
// Kamus Lokal
int idBaju, jumlahBaju; // utk input data baju yg ingin disewa
int indexBaju; // index dr array baju
bool stokTersedia; // utk cek apakah stok baju tersedia
system("cls");
cout << "====================\nInput Data Penyewa\n====================" << endl;
for (int i = 0; i < x; i++) {
cout << "\nData #" << i + 1 << endl;
cin.ignore();
cout << "Nama\t: ";
getline(cin, penyewa[i].nama);
cout << "No. HP\t: ";
getline(cin, penyewa[i].nohp);
cout << "ID Baju yang akan disewa : ";
cin >> idBaju;
cout << "Jumlah Baju yang akan disewa : ";
cin >> jumlahBaju;
stokTersedia = false; // inisialisai stok baju = false (stok baju belum tersedia)
for (int i = 0; i < n; i++) {
// periksa apakah id yg diinput sama dgn id baju
if (arr[i].id == idBaju) {
// periksa apakah stok baju cukup dgn jumlahBaju yg diinginkan penyewa
if (arr[i].stok >= jumlahBaju) {
// jika stok cukup, maka jadi true
stokTersedia = true;
// menyimpan idx baju
indexBaju = i;
break; // keluar loop krn sudah ketemu
}
}
}
// pengkondisian jika stok tersedia (stokTersedia==true)
if (stokTersedia) {
// mengurangi stok baju
arr[indexBaju].stok -= jumlahBaju;
// menyimpan data penyewa dlm aarray
penyewa[i].id = arr[indexBaju].id;
penyewa[i].jumlah = jumlahBaju;
penyewa[i].biaya = arr[indexBaju].harga * jumlahBaju;
// menampilkan data penyewa
system("cls");
cout << "=========================== Sewa Berhasil ===============================\n" << endl;
cout << "Data Penyewa:" << endl;
cout << "------------------------------" << endl;
cout << "Nama\t\tNo. HP" << endl;
cout << "------------------------------" << endl;
cout << penyewa[i].nama << "\t\t" << penyewa[i].nohp << endl;
// Menampilkan data baju yang disewa
cout << "\nData Baju yang Disewa:" << endl;
cout << "-----------------------------------------------------------------" << endl;
cout << "ID\tMerk\tModel\tWarna\tUkuran\tHarga\tJumlah\tBiaya" << endl;
cout << "-----------------------------------------------------------------" << endl;
cout << arr[indexBaju].id << "\t" << arr[indexBaju].merk << "\t" << arr[indexBaju].model << "\t" << arr[indexBaju].warna << "\t" << arr[indexBaju].ukuran << "\t" << arr[indexBaju].harga << "\t" << jumlahBaju << "\t" << penyewa[i].biaya << endl;
cout << "\n========================================================================" << endl;
}
else {
// jika stokTersedia != true
cout << "Stok baju tidak mencukupi." << endl;
}
}
}
// fungsi utk mengembalikan baju
void kembalikanBaju(Baju arr[], int n, Penyewa penyewa[], int x, const string& namaPenyewa) {
// Kamus lokal
bool ditemukan = false;
int indexPenyewa;
// mencari idx penyewa berdasarkan nama penyewa
for (int i = 0; i < x; i++) {
lowercase(penyewa[i].nama);
if (penyewa[i].nama == namaPenyewa) {
ditemukan = true;
indexPenyewa = i;
break;
}
}
if (ditemukan) {
// menambahkan kembali stok baju
for (int i = 0; i < n; i++) {
if (arr[i].id == penyewa[indexPenyewa].id) {
arr[i].stok += penyewa[indexPenyewa].jumlah;
break;
}
}
// menghapus data penyewa
for (int i = indexPenyewa; i < x - 1; i++) {
penyewa[i] = penyewa[i + 1];
}
system("cls");
cout << "\t==================== Baju berhasil dikembalikan! ====================" << endl;
cout << "Stok baju telah kembali ditambahkan dan data peminjam telah dihapus" << endl;
} else {
cout << "Nama penyewa tidak ditemukan." << endl;
}
}
// fungsi utk menampilkan data penyewa
void tampilDataPenyewa(Penyewa penyewa[], int x) {
cout << "\t\t======= Data Penyewa =======" << endl;
if(x==0){
cout << "Data Penyewa Kosong" << endl;
}else{
cout << "---------------------------------------------------------------" << endl;
cout << "#\tNama\tNo. HP\t\tID Baju\t\tJumlah\tBiaya" << endl;
cout << "---------------------------------------------------------------" << endl;
for (int i = 0; i < x; i++) {
cout << i+1<< "\t" << penyewa[i].nama << "\t" << penyewa[i].nohp << "\t" << penyewa[i].id << "\t\t" << penyewa[i].jumlah << "\t" << penyewa[i].biaya << endl;
}
cout << "---------------------------------------------------------------" << endl;
cout << endl;
}
}
};
// fungsi utk menampilkan pesan jika inputan salah
void inputSalah(){
cout << "\nMaaf, Input menu anda salah. Ulangi lagi.\n" << endl;
}
// fungsi utk menampilkan pesan jika belum ada data penyewaan
void dataKosong(){
cout << "Tidak ada data sewa" << endl;
}
// fungsi utk memilih menu sewa baju
void menuSewa(Baju arr[], int n) {
// Kamus Lokal
const int MAX_PENYEWA = 100;
Penyewa arrPenyewa[MAX_PENYEWA];
Baju dataBaju;
Penyewa dataPenyewa;
string namaPenyewa;
int jumlahDataPenyewa;
int inputMenu;
do {
cout << "\n====================\nMenu Sewa Baju\n====================" << endl;
cout << "1. Data Baju" << endl;
cout << "2. Cari Data Baju" << endl;
cout << "3. Urutkan Data Baju Berdasarkan Harga" << endl;
cout << "4. Sewa Baju" << endl;
cout << "5. Kembalikan Baju" << endl;
cout << "6. Data Penyewa" << endl;
cout << "0. Keluar" << endl;
cout << "Pilihan: ";
cin >> inputMenu;
switch (inputMenu) {
case 1:
system("cls");
dataBaju.tampilData(arr, n);
break;
case 2:
system("cls");
dataBaju.searchData(arr, n);
break;
case 3:
system("cls");
dataBaju.sortDatabyHarga(arr, n);
dataBaju.tampilData(arr, n);
break;
case 4:
system("cls");
cout << "====================\nSewa Baju\n====================" << endl;
cout << "Input Jumlah Data Penyewa: " ; cin >> jumlahDataPenyewa;
dataPenyewa.sewaBaju(arr, n, arrPenyewa, jumlahDataPenyewa);
break;
case 5:
system("cls");
if(jumlahDataPenyewa==0){
dataKosong();
}else{
dataBaju.tampilData(arr, n);
cout << endl;
dataPenyewa.tampilDataPenyewa(arrPenyewa, jumlahDataPenyewa);
cout << "\nInput nama penyewa: " ; cin >> namaPenyewa;
lowercase(namaPenyewa);
dataPenyewa.kembalikanBaju(arr,n, arrPenyewa, jumlahDataPenyewa, namaPenyewa);
jumlahDataPenyewa--; // mengurangi jumlah penyewa
}
break;
case 6:
system("cls");
if(jumlahDataPenyewa==0){
dataKosong();
}else{
dataPenyewa.tampilDataPenyewa(arrPenyewa, jumlahDataPenyewa);
}
break;
case 0:
system("cls");
cout << "Keluar dari program. Terimakasih!" << endl;
break;
default:
inputSalah();
}
} while (inputMenu != 0);
}
view raw baju.h hosted with ❤ by GitHub
File main

#include <iostream>
#include "baju.h"
using namespace std;
int main() {
int jumlahDataBaju;
cout << "Selamat datang di Program Manajemen Sewa Baju!\n\nSilakan input data baju terlebih dahulu." << endl;
cout << "\nInput banyak data baju: " ; cin >> jumlahDataBaju;
Baju data;
Baju arrBaju[jumlahDataBaju];
data.inputData(arrBaju, jumlahDataBaju);
menuSewa(arrBaju,jumlahDataBaju);
return 0;
}
view raw mainBaju.h hosted with ❤ by GitHub

Komentar