Anda di halaman 1dari 29

Laporan Tugas Besar Pemrograman Berbasis Objek

Sistem Pembayaran Toko Kue

Disusun oleh: Kelompok Green Arrow


Ketua : Dini Mustika ( 191402074 )

Anggota : Milpa Wahyuni Siregar ( 191402005 )

Tomy Risky Parlindungan ( 191402095 )

Dosen Pengampu:
Dani Gunawan, S.T., M.T.
Asisten Laboratorium:
Rogate Sola Fide

Fakultas Ilmu Komputer dan Teknologi Informasi


Mei, 2020
Kata Pengantar
Puji syukur penulis panjatkan pada Tuhan Yang Maha Esa atas rahmat dan hidayat-
Nya, penulis dapat menyelesaikan Laporan Tugas Besar Pemrograman Berbasis Objek dalam
pembuatan Sistem Pembayaran Toko Kue.
Penulis sampaikan rasa terima kasih kepada semua pihak yang telah membantu.
Diantaranya :
1. Bapak Dani Gunawan, S.T., M.T. selaku dosen pengampu mata kuliah Pemrograman
Berorientasi Objek yang telah memberikan arahan dan bimbingan, sehingga penulis
dapat menyelesaikan pembuatan sistem pembayaran dan penulisan laporan ini.
2. Rogate Sola Fide selaku Asisten Labolatorium Praktikum Pemrograman Berorientasi
Objek yang telah memberikan arahan dan bimbingan sehingga penulis dapat
menyelesaikan pembuatan sistem pembayaran toko kue dan penulisan laporan ini.
3. Seluruh pihak, termasuk teman – teman yang telah memberikan arahan dan bimbingan
kepada penulis.
Penulis menyadari bahwa laporan dan sistem pembayaran toko kue ini masih jauh dari kata
sempurna. Oleh karena itu, kritik dan saran yang membangun sangat dibutuhkan penulis. Besar
harapan penulis bahwa laporan ini dapat memberikan manfaat kepada para pembaca. Akhir
kata, penulis mengucapkan terimakasih.

Medan, Mei 2020

Penulis
BAB I
PENDAHULUAN

1.1.Latar Belakang
Di tengah pandemi covid – 19 yang sedang terjadi saat ini, banyak perusahaan
yang terpaksa untuk memutuskan hubungan kerja dengan karyawannya. Hal ini
menyebabkan kekacauan ekonomi. Oleh karena itu, pembukaan usaha toko kue
diharapkan dapat mengurangi kekacauan ekonomi yang sedang terjadi. Sistem
pembayaran di toko kue juga perlu dibenahi sehingga data penjualan dan laba usaha
dapat dikelola dengan baik.
Pembuatan sistem pembayaran toko kue dapat memperoleh keuntungan dari
sistem yang dikembangkan. Keuntungan yang dapat diperoleh dari keuntungan yang
didapatkan dari penjualan sistem dan juga penjualan kue.

1.2.Tujuan
Pembuatan sistem pembayaran toko kue ini dilakukan sebagai langkah awal untuk
menjadi seorang pengembang perangkat lunak atau software developer. Melalui program
ini diharapkan agar tiap anggota memperoleh pengalaman dalam pembuatan aplikasi,
sehingga pada masa mendatang dapat mengembangkan aplikasi yang lebih bermanfaat.
BAB II
PEMBAHASAN
2.1. Diagram UML ( Unified Modeling Language )
2.2.Pra Pengolahan dan Deklarasi Namespace
//Prapengolahan
#include <iostream>
#include <fstream>
#include <ctime>
#include <string>
#include <cstdlib>
#include <conio.h>
#include <windows.h>

using namespace std;

Penggalan kode diatas adalah header yang digunakan pada program ini. Header
fstream berfungsi untuk mengoperasikan file data penjualan dalam program ini. Header
ctime berfungsi untuk menentukan waktu transaksi yang terjadi untuk menjamin
kebenaran struk pembelian jika suatu saat terjadi permasalahan antara pembeli dan
pemilik toko. Begitu juga dengan header cstdlib, conio.h, windows.h dibutuhkan dalam
program ini.
Program ini memerlukan deklarasi namespace untuk mempersingkat penulisan
kode, karena program ini banyak memakai banyak fungsi dari library std.
2.3.Struktur Folder
Sistem Pembayaran Green Arrow
 Penjualan_Green_Arrow.txt
 Green_Arrow.exe

Struktur folder diatas adalah struktur dari program excecutable dan file
pendukung program ini. File Penjualan_Green_Arrow.txt berisi catatan penjualan yang
terdiri dari nama penjaga toko, kode kue, nama kue, total harga dan waktu penjualan.
File Green_Arrow.exe adalah excecutable file untuk memulai proses transaksi.

2.4.Fungsi Main
int main(){

system("color 8B");
Welcome pelanggan;
Login user;
Menu laku;
Uang ag;
ag.getPajak( " PPn : ");
ag.getPajak();
ag.getBalik();
ag.data();
Time belanja;

return 0;

Potongan kode program diatas adalah fungsi utama untuk pembuatan objek dan
pemanggilan fungsi dari class – class yang sudah ada. Kode system(“color 8B”)
berfungsi untuk memberikan warna pada latar belakang dan juga huruf pada sistem
pembayaran.

2.5. Kelas Welcome


class Welcome{
public:
Welcome(){
cout << "
**************************************************" << endl;
cout << " * Selamat Datang di Toko Kue Green Arrow
*" << endl;
cout << "
**************************************************" << endl;
cout << endl;
cout << " Silahkan login terlebih dahulu" << endl;
}
};

Kelas Welcome berisi output untuk ucapan selamat datang pada saat program
pertama kali dijalankan, dan juga berisi perintah untuk melakukan login sebelum
proses transaksi dijalankan.

2.6. Kelas Login


class Login{

public:
string user, pass;

char c;
int i;

public:

Login(){

int login=0;

cout << " ===============================" << endl;

cout << " Username : ";

cin >> user;

cout << " Password : ";

while(c != '\r')

c = getch();

if(c == '0')
{

switch(getch())

default:

break;

};

else if(c == '\b')

if(pass.size() != 0)

cout << "\b \b";

pass.erase(pass.size() - 1, 1);

continue;

}
else if(c <= '9' && c >= '0' || c >= 'a' && c <= 'z' || c >= 'A' &&
c <= 'Z')

pass += c;
cout << "*";

else

continue;

cout << endl;

cout << " ===============================" << endl;

if (user =="green" && pass =="arrow"){

cout << " ------------------------------------------------------


\n";

cout << " Anda Berhasil


Login" << endl;

cout << " ------------------------------------------------------


\n\n";

i=4;

login=1;

}else {
cout << endl;

cout << " -----------------------------------


---------------------\n";

cout << " Maaf username atau password yang


anda masukkan salah" << endl;

cout << " Anda keluar dari program


" << endl;

cout << " Jika terdapat kendala, silahkan hubungi


call center(999)" << endl;

cout << " -----------------------------------


---------------------\n\n";
exit(0);

};

Kelas login ini bertujuan untuk menjaga keamanan kasir. Di program ini tidak
di atur proses registrasi agar keamanan login semakin terjaga. Apabila user melakukan
kesalahan mengisi data username atau password maka program akan langsung berakhir.
Password dan Username pada saat login sudah ditetapkan sebelum program dijalankan.

2.7.Kelas Menu
class Menu{
public:
fstream is;
string line;

public:
Menu(){
is.open("menu.txt");
if(is.is_open()){
cout << endl;
}
cout << endl;
is<<" " << endl;
is<<" DAFTAR MENU TOKO KUE GREEN
ARROW " << endl;
is<<" ______ _____________________
____________ " << endl;
is<<" | Kode | Daftar Kue | Harga |" << endl;
is<<" | 1 | Rainbow cake | 25000 |" << endl;
is<<" | 2 | Tiramisu | 30000 |" << endl;
is<<" | 3 | Red Velvet | 45000 |" << endl;
is<<" | 4 | Cheese Cake | 30000 |" << endl;
is<<" | 5 | Cinnamon Roll | 18000 |" << endl;
is<<" | 6 | Lava Cake | 12000 |" << endl;
is<<" | 7 | Pudding | 15000 |" << endl;
is<<" | 8 | Nastar | 75000 |" << endl;
is<<" | 9 | Chocolate cookie | 60000 |" << endl;
is<<"
|______|_____________________|___________|" << endl;
cout<<endl;
cout << endl;
is.close();

is.open("menu.txt");
if(is.fail())
cout << " Gagal Membuka daftar Menu" << endl;
while(getline(is,line)){
cout << line << endl;
}
is.close();
}

~Menu(){
cout << " Selamat menikmati ^_^\n";
cout << " Callcenter(2278)\n\n";
system("pause");
}
};

Kelas Menu diatas berisi konstruktur Menu untuk menampilkan daftar menu
beserta harga dengan menggunakan operating file. Di akhir kelas Menu terdapat
destruktur menu untuk mengakhiri program.

2.8. Kelas Pembayaran


class Pembayaran{

public:

fstream green;

char nama[30];

int jumlah_kue, jumlah_kue1;

double diskon;

string nama_kue, nama_kue1;

int total, total_bayar, harga_kue, total_harga;

char kode_kue, kode_kue1, pilih;


public:

Pembayaran(){

cout << "\n\n Nama Pembeli :";

cin >> nama;

cout << " Kode Kue (1/2/3/.../9) : " ;

cin >> kode_kue;

cout << " Jumlah Kue :";

cin >> jumlah_kue;

cout << " ----------------------------------------------


" << endl;

if(kode_kue == '1'){

harga_kue = 25000;

nama_kue = "Rainbow Cake";

else if(kode_kue == '2'){

harga_kue = 30000;

nama_kue = "Tiramisu";

else if(kode_kue == '3'){

harga_kue = 45000;

nama_kue = "Red Velvet";

else if(kode_kue == '4'){

harga_kue = 30000;

nama_kue = "Cheese Cake";

else if(kode_kue == '5'){


harga_kue = 18000;

nama_kue = "Cinnamon Roll";

else if(kode_kue=='6'){

harga_kue = 12000;

nama_kue = "Lava Cake";

else if(kode_kue == '7'){

harga_kue = 15000;

nama_kue = "Pudding";

else if(kode_kue == '8'){

harga_kue = 75000;

nama_kue = "Nastar";

else if(kode_kue=='9'){

harga_kue = 60000;

nama_kue = "Chocolate cookies";

else{

cout << " Menu " << kode_kue << "


tidak ada di daftar menu" << endl;

try{

total = kali(harga_kue, jumlah_kue);

catch(...){
cout << " Pembelian kue sebanyak 0 tidak
diperbolehkan" << endl;

while(1){

Pembayaran();

cout << " Kode Kue : " << kode_kue <<


endl;

cout << " Nama Kue : " << nama_kue <<


endl;

cout << " Harga Kue : Rp." << harga_kue <<


endl;

cout << " Jumlah Kue : " << jumlah_kue <<


endl;

cout << " Total Harga : Rp." << total << ",-"
<< endl;

cout << " ----------------------------------------------


" << endl;

total_harga += total;

cout << " Ingin melakukan pembelian lainnya


(Y/N)? ";

cin >> pilih;

cout << " ----------------------------------------------


" << endl;

if(pilih == 'Y'){

cout << " Kode Kue (1/2/3/.../9) : " ;

cin >> kode_kue1;

cout << " Jumlah Kue :";

cin >> jumlah_kue1;


cout << " -------------------------------------
---------" << endl;

if(kode_kue1 == '1'){

harga_kue = 25000;

nama_kue1 = "Rainbow Cake";

else if(kode_kue1 == '2'){

harga_kue = 30000;

nama_kue1 = "Tiramisu";

else if(kode_kue1 == '3'){

harga_kue = 45000;

nama_kue1 = "Red Velvet";

else if(kode_kue1 == '4'){

harga_kue = 30000;

nama_kue1 = "Cheese Cake";

else if(kode_kue1 == '5'){

harga_kue = 18000;

nama_kue1 = "Cinnamon Roll";

else if(kode_kue1 =='6'){

harga_kue = 12000;

nama_kue1 = "Lava Cake";

}
else if(kode_kue1 == '7'){

harga_kue = 15000;

nama_kue1 = "Pudding";

else if(kode_kue1 == '8'){

harga_kue = 75000;

nama_kue1 = "Nastar";

else if(kode_kue1 =='9'){

harga_kue = 60000;

nama_kue1 = "Chocolate cookies";

else{

cout << " Menu " << kode_kue


<< " tidak ada di daftar menu" << endl;

try{

total = kali(harga_kue, jumlah_kue);

catch(...){

cout << " Pembelian kue sebanyak 0 tidak


diperbolehkan" << endl;

while(1){

Pembayaran();

}
cout << " Kode Kue : " <<kode_kue1<<
endl;

cout << " Nama Kue : "


<<nama_kue1<< endl;

cout << " Harga Kue : Rp."


<<harga_kue<< endl;

cout << " Jumlah Kue : " <<


jumlah_kue1<< endl;

cout << " Total Harga : Rp." << total


<<",-"<< endl;

cout << " -------------------------------------


---------" << endl;

total_harga += total;

if(jumlah_kue + jumlah_kue1 >= 10)

diskon = total_harga * 0.3;

if(jumlah_kue + jumlah_kue1 >= 5)

diskon = total_harga * 0.07;

else

diskon = total_harga * 0;

total_bayar = total_harga - diskon;

cout << "\n\n =====STRUK


PEMBAYARAN TOKO KUE GREEN ARROW====" << endl;

cout << " jl.Jamin ginting nomor


102 Medan" << endl << endl;

cout << " Nama Pembeli : " << nama


<< endl;

cout << " Nama Kue : " <<


nama_kue << endl;
cout << " Jumlah : " <<
jumlah_kue << endl;

cout << " Nama Kue : " <<


nama_kue1 << endl;

cout << " Jumlah : " <<


jumlah_kue1 << endl;

cout << " -------------------------------------


---------"<< endl;

cout << " Diskon : Rp." << diskon


<<",-"<< endl;

cout << " -------------------------------------


---------"<< endl;

double kali(double x, double y){

if (y == 0){

throw("");

return x * y;

int data(){

cout << "\n Nama penjaga toko : " ;

cin >> nama;

cout << "


=============================================" << endl;

green.open("Penjualan_Green_Arrow.txt", ios::app);

if(green.is_open()){

cout << " " << endl;

else{

cout << " Mohon ulangi input barang" << endl;


}

green << "\n\n============Data


penjualan================\n";

green << "Nama penjaga toko : " << nama << endl;

green << "Kode Kue pertama : " << kode_kue << endl;

green << "Jumlah Kue Pertama : " << jumlah_kue <<


endl;

green << "Kode kue kedua : " << kode_kue1 << endl;

green << "Jumlah Kue Kedua : " << jumlah_kue1 <<


endl;

green << "Total uang : " << total_bayar << endl;

green.close();

~Pembayaran(){

cout << " Terimakasih telah


berbelanja\n";

};

Kelas pembayaran berisi dari deklarasi variabel yang dibutuhkan, kemudian


beberapa methode untuk kepentingan proses transaksi. Konstruktur pembayaran berisi
permintaan input nama pembeli, kode kue, serta jumlah kue yang akan dibeli. Dengan
perkondisian if else, harga dan nama secara otomatis akan terisi.

Pembelian kue dengan jumlah 0 tidak akan bisa dilakukan atau struk tidak dapat
dicetak, dikarenakan penggunaan exception handling pada class ini.

Adanya pemberian diskon jika pembelian dalam jumlah tertentu. Jika membeli
lebih dari 4 kue maka akan mendapat diskon sebesar 7%. Jika pembelian kue lebih dari
9 maka akan mendapat diskon sebesar 30%.
Setelah pembelian selesai, program akan mencetak struk pembelian yang terdiri
dari nama pembeli, kode kue, jumlah kue, diskon, pajak ppn, uang kembalian, dan
waktu serta tanggal pembelian.

Fungsi data berisi file Penjualan_Green_Arrow.txt yang menyimpan data


penjualan berupa nama penjaga toko, kode kue, jumlah kue, total harga dan waktu
penjualan.

Kelas pembayaran merupakan superclass untuk kelas pajak dan kelas uang.

2.9. Kelas Temp


template <class X, class Y>
class Temp{
public :
X Poin(X bayar, Y nilai) {
return bayar*nilai;
}
};
Kelas Temp berisi template untuk digunakan pada kelas pajak untuk
menghitung poin pembelian, sehingga pelanggan dapat mendapatkan hadiah menarik.

2.10. Kelas Pajak

class Pajak : public Pembayaran{

public:

Temp <int,int> late;

int pajak;

int total_bayar;

int chg;

public:
void getPajak(string x){

pajak = total_harga * 0.1;

cout <<x<< pajak << endl;

chg = total_harga + pajak;

total_bayar = chg - diskon;

cout << " Total bayar : "<< total_bayar << endl;

void getPajak(){

if (total_harga >= 300000)

cout <<" Poin kamu : " <<late.Poin(2,


3);

cout <<"\n Selamat kamu mendapatkan 1


gelas Cantik GRATISS!\n";

}else{

cout <<" Pembelian Minimal 300k, kamu


akan mendapatkan Hadiah menarik!\n";

virtual void getBalik()=0;

};
Kelas pajak merupakan subclass dari kelas pembayaran. Kelas pajak adalah kelas
untuk menghitung pajak ppn dan juga untuk memberikan hadiah kepada pelanggan dengan
jumlah pembelian tertentu.

2.11. Kelas Uang


class Uang : public Pajak{

public:

int jumlah_uang;

int kembalian;

public:

void getBalik(){

cout << " Jumlah uang : ";

cin >> jumlah_uang;

kembalian = jumlah_uang-total_bayar;

cout << " Kembalian : " << kembalian <<


endl;

cout << "


==============================================" << endl;

};

Kelas uang merupakan subclass dari kelas pembayaran, kelas ini berfungsi
untuk menentukan jumlah uang kembalian.

2.12. Kelas Time


class Time{

public :

time_t now, waktu;

public:
Time(){

time_t now = time(0);

char* dt = ctime(&now);

cout << " " << dt;

};

Kelas ini merupakan kelas yang berfungsi untuk menentukan waktu dan
tanggal dari proses transaksi yang terjadi.

2.13. Foto Aplikasi


1. Tampilan awal Sistem pembayaran
2. Pada saat berhasil login
3. Pada saat login gagal
4. Daftar Menu dan pembelian salah satu jenis kue
5. Lanjut melakukan pembelian
6. Selesai melakukan pembelian
7. Struk Akhir
BAB III
PENUTUP

3.1. Kesimpulan
Sistem pembayaran toko kue ini dilengkapi dengan catatan penjualan setiap transaksi.
Waktu yang dibutuhkan untuk menyelesaikan tugas ini satu sampai dua minggu. Program ini
dikembangkan di lingkungan sistem operasi windows dan dapat dioperasikan di sistem operasi
lain. Di lingkungan Windows, program ini di eksekusi dengan konsol Command Prompt.

3.2. Saran
Kepada pihak yang ingin melakukan pengembangan terhadap sistem ini, diperlukan
perhatian terhadap penentuan jumlah barang yang tersedia dan juga menampilkannya.

Kami menyadari bahwa aplikasi ini masih jauh dari kata sempurna. Oleh karena itu,
kritik dan saran yang membangun sangat dibutuhkan.

Anda mungkin juga menyukai