Anda di halaman 1dari 14

PRAKTIKUM IMPLEMENTASI

STRUKTUR DATA

SEMESTER GANJIL T.A 2019/2020

LAPORAN PROYEK AKHIR

DISUSUN OLEH :

NIM : 123180096
123180178
NAMA : MUHAMMAD AKBAR RIVALDO
MAHARDIKA RAHMAN RIZKY
KELAS/PLUG : B
NAMA ASISTEN : AGUNG NUR HIDAYAT
AYU NOVIRA SHINTA PERMATASARI

PROGRAM STUDI INFORMATIKA


JURUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNIK INDUSTRI
UNIVERSITAS PEMBANGUNAN NASIONAL ”VETERAN”
YOGYAKARTA
2019

ii
HALAMAN PENGESAHAN

LAPORAN PROYEK AKHIR

Disusun oleh :

Iffatuz Zahra Ridka Siwi


123180039 123180083

Asisten Praktikum Asisten Praktikum

Agung Nur Hidayat Ayu Novira Shinta Permatasari


NIM. 123160075 NIM. 123170073

Mengetahui,
Ka. Lab. Geoinformatika

Budi Santosa, S.Si., M.T.


NIK. 2 7009 02 0234 1

iii
KATA PENGANTAR

Puji syukur saya panjatkan kepada Tuhan Yang Maha Esa yang senantiasa
mencurahkan rahmat dan hidayah-Nya sehingga saya dapat menyelesaikan praktikum Struktur
Data serta laporan proyek akhir praktikum yang berjudul Antrian Digital Printing. Adapun
laporan ini berisi tentang proyek akhir yang Saya pilih dari hasil pembelajaran selama
praktikum berlangsung.
Tidak lupa ucapan terimakasih kepada asisten dosen yang selalu membimbing dan
mengajari saya dalam melaksanakan praktikum dan dalam menyusun laporan ini. Laporan ini
masih sangat jauh dari kesempurnaan, oleh karena itu kritik serta saran yang membangun saya
harapkan untuk menyempurnakan laporan akhir ini.
Atas perhatian dari semua pihak yang membantu penulisan ini, saya ucapkan
terimakasih. Semoga laporan ini dapat dipergunakan seperlunya.

Yogyakarta, 4 Desember 2019

Penyusun

iv
DAFTAR ISI
Cover i
Halaman Pengesahan …………………………………………………...……. ii
Kata Pengantar ................................................................................................. iii
Daftar Isi …………………………………………………………………..…. iv
1. Judul Proyek Akhir ………………………………………………..…. 1
2. Pendahuluan ......................................................................................... 1
2.1. Latar Belakang Masalah…………………………………….... 1
2.2. Tujuan Proyek Akhir ……………………………………...…. 1
3. Pembahasan …………………………………………………………...1
3.1. Dasar Teori ......………………………………………………. 2
3.2. Deskripsi Umum Proyek Akhir………………………...…...... 2
3.3. Inti Pembahasan……….……………………………………... 2
4. Jadwal Pengerjaan dan Pembagian Tugas…...……………………… 7
5. Kesimpulan dan Saran ...............…………………………………..... 7
5.1. Kesimpulan ............................………………………………. 7
5.2. Saran .........................................…………………………….. 7
Daftar Pustaka ………………………………...……………………………... 8

v
BAB I
JUDUL PROYEK AKHIR

“ANTRIAN DIGITAL PRINTING“

1
BAB II
PENDAHULUAN

2.1. Latar Belakang Masalah


Semakin hari industri Digital Printing makin dibutuhkan banyak orang. Konsumen
biasanya memakai jasa digital printing untuk membuat poster,baliho,brosur dan lain
sebagainya. Karena banyaknya konsumen antrian menjadi tidak sesuai.
Berdasakan latar belakang di atas, penyusun tertarik untuk mengamati hal mengenai
aktivitas di digital printing. Dalam hal ini, penyusun tertarik untuk mengangkat topik “Antrian
Digital Printing” sebagai judul penulisan laporan proyek tugas akhir ini.
2.2. Tujuan Proyek Akhir
1) Mengetahui nomor antrian konsumen
2) Mengetahui apa yang diorder oleh konsumen

1
BAB III
PEMBAHASAN

3.1 Dasar Teori


3.1.1 Linked-List (Senarai Berkait)
Linked-List adalah suatu struktur data linier. Berbeda dengan array
yang juga merupakan struktur data linier dan tipe data komposit, linked-list
dibentuk secara dinamik. Pada saat awal program dijalankan elemen linked
list belum data. Elemen linked-list (disebut node) dibentuk sambil jalan
sesuai instruksi. Apabila setiap elemen array dapat diakses secara langsung
dengan menggunakan indeks, sebuah node linked-list diakses dengan
menggunakan pointer yang mengacu (menunjuk) ke node tersebut. Struktur
data algortima linked-list mempunyai beberapa jenis diantaranya Linked-
List dengan Array, Linked-List Berkepala dan Berekor, Linked-List dengan
Pointer, dan Linked-List Melingkar.

3.1.2 Stack (Tumpukan)


Stack adalah suatu bentuk khusus dari linear list di mana operasi penyisipan
dan penghapusan atas elemen-elemennya hanya dapat dilakukan pada satu sisi saja
yang disebut sebagai “TOP”. Ada empat operasi dasar yang didefinisikan pada stack,
yaitu Create, IsEmpty, Push, dan Pop.

3.1.2 Queue (Antrian)


Queue adalah koleksi dari obyek-obyek yang homogen dengan operasi
penambahan elemen (Enqueue) dan pengambilan elemen (Dequeue) melalui dua
tempat yang berbeda yaitu belakang dan depan. Operasi-operasi pada Queue yaitu
Create, IsEmpty, IsFull, Enqueue, dan Dequeue

2
3.2 Deskripsi Umum Proyek Akhir
Program ini digunakan untuk memudahkan admin dalam melakukan
penginputan antrian digital printing karena dalam pengambilan antrian sudah ada input
berupa no transaksi, nama pelanggan, jenis yang akan di print serta jumlah yang akan
di print. Setelah diinputkan admin juga dapat mengedit jika antrian sudah selesai dan
hasil dari antrian tersebut dapat disimpan di file sehingga meminimalisir kesalahan
dalam rekap data.

3.3 Inti Pembahasan


Pada program kami terdapat 7 menu yaitu :
1. Menu ambil antrian
Dimana dalam menu ambil antrian admin dapat menginputkan antrian beserta jenis
Setelah itu akan di masukkan kedalam file antrian.
2. Menu lihat antrian
Dimana dalam menu ini admin dapat melihat antrian yang sedang berlangsung.
3. Menu hapus antrian
Dimana admin dapat menghapus antrian yang sudah terproses. Lalu akan dimasukkan
ke dalam file log.

4. Menu Log antrian


Dimana admin dapat melihat antrian yang telah keluar / telah berhasil diproses.
5. Menu Hapus Arsip antrian
Dimana admin dapat menghapus seluruh antrian yang ada di file antrian.txt.
6. Menu Hapus Log Antrian
Dimana admin dapat menghapus log antrian yang ada.
7. Exit.
Untuk keluar dari program.

berikut adalah listing dari program :

#include <iostream>

3
#include <malloc.h>
#include <windows.h>
#include <fstream>
#include <conio.h>
#include <iomanip>
Listing 1 library

typedef struct typequeue *typeptr;


struct data{
int id, antrian, jumlah;
char nama[30], tp[50];};
struct typequeue{
data info;
typeptr next,prev;};
typeptr qdepan, qbelakang;
typedef struct typestack *typepointer;
struct typestack{
data info;
typepointer next,prev;};
typepointer awalstack, akhirstack;

Listing 2 struct queue dan stack

void buatqueue();
int queuekosong();
void enqueue(data IB);
void pop0();
void cetakqueue();
void buat_stack();
void stackkosong();
void push(data);
void pop();
void cetak_stack();
listing 3 deklarasi fungsi

int main(){
int pilih;char lagi;
buatqueue();
buat_stack();
data awal; do{
cout<< " ANTRIAN DIGITAL PRINTING\n";
cout<< "===========================================\n";
cout<< " MENU\n";

4
cout<< "-------------------------------------------";
cout<< "\n1. Ambil Antrian";
cout<< "\n2. Lihat Antrian";
cout<< "\n3. Hapus Antrian (Selesai Proses)";
cout<< "\n4. Log Antrian Telah Terproses";
cout<< "\n5. Hapus Arsip Antrian" ;//pop
cout<< "\n6. Hapus Arsip Log";//pop
cout<< "\n7. Exit";
cout<< "\n===========================================\n";
cout<< "Pilih : "; cin>>pilih; switch (pilih){
case 1:
system("cls");
cout<<"Antrian Ke-"<<antri<<endl;
awal.antrian = antri;
jumlah<<antri;
jumlah.close();
cout<<"Masukkan No Antrian\t: "; cin>>awal.id;
cin.ignore();
cout<<"Masukkan Nama Customer\t: "; cin.getline(awal.nama,30);
cout<<"Masukkan Tipe Print\t: "; cin.getline(awal.tp,50);
cout<<"Masukkan Jumlah order\t: "; cin>>awal.jumlah;
simpan.open("FileArsip.txt",ios::app);
simpan<<"====================================\n";
simpan<<"No antrian : "<<awal.id<<endl;
simpan<<"Nama customer : "<<awal.nama<<endl;
simpan<<"Tipe print : "<<awal.tp<<endl;
simpan<<"Jumlah order : "<<awal.jumlah<<endl;
simpan<<"====================================\n";
simpan.close();
enqueue(awal);
break;
case 2:
system("cls");
Listing 4 main()

cetakqueue();
break;
case 3:
pop0();
break;
case 4:
system("cls");
cetak_stack();
break;
case 5:
system("cls");
pop();
break;
case 6 :
pop2();
break;
default:
cout<<"\n SALAH PILIH QAMU";
break;}

5
cout<<"\nBalik Ke Menu (y/n)? "; cin>>lagi;
if (lagi == 'y'){
system("cls");}
}while(lagi == 'y' || lagi == 'Y');}

Listing 5 main() lanjutan

void buatqueue()
{ qdepan=(typequeue *) malloc(sizeof(typequeue));
qdepan=NULL;
qbelakang=qdepan;}
int queuekosong()
{ if(qdepan==NULL)
return(1);
else
return(0);}
void enqueue(data IB)
{ typeptr NB;
NB=(typequeue *) malloc(sizeof(typequeue));
NB->info=IB;
if (qdepan==NULL)
qdepan=NB;
else{
NB->prev=qbelakang;
qbelakang->next=NB;}
qbelakang=NB;
qbelakang->next=NULL;}

Listing 6 queue

void buat_stack()
{ typepointer NS;
NS=NULL;
awalstack=NS;
akhirstack=NS; }
int stack_kosong()
{ if(awalstack==NULL)
return(1);
else
return(0); }
void pop0(){
typeptr hapus;
if (queuekosong()){
cout << " antrian kosong !";}
else{
hapus=qdepan;
qdepan=hapus->next;
push(hapus->info);

6
free(hapus);
}}
void pop2()
{ typepointer hapus, bantu;
if (stack_kosong())
{ cout << "Arsip log sudah kosong !\n";} else
{ bantu=awalstack;
hapus=akhirstack;
if (hapus==awalstack)
awalstack=NULL;
else
{ while(bantu->next->next!=NULL)
bantu=bantu->next;
akhirstack=bantu;
akhirstack->next=NULL; }
free(hapus); }
simpan.open("log.txt");
bantu = awalstack;
while(bantu!=NULL){
simpan<<bantu->info.antrian<<endl;
simpan<<bantu->info.id<<endl;
simpan<<bantu->info.nama<<endl;
simpan<<bantu->info.tp<<endl;
simpan<<bantu->info.jumlah<<endl;
simpan<<"------------------------\n";
bantu=bantu->next; }
simpan.close();}
void cetak_stack()
{ typepointer bantu;
if(stack_kosong()){
cout<<"Stack Kosong";}
else{bantu = akhirstack;
Listing 7 stack

while(bantu!=NULL){
ofstream log;
log.open("log.txt");

log << "-----------------------------------\n";


log <<"No antrian : " << bantu->info.id<< endl;
log <<"Nama customer : " << bantu->info.nama<< endl;
log <<"Tipe print : " << bantu->info.tp<<endl;
log <<"Jumlah order : " << bantu->info.jumlah<<endl;
log.close();
cout << "-----------------------------------\n";
cout << "No antrian : " << bantu->info.id<< endl;
cout << "Nama customer : " << bantu->info.nama<< endl;
cout << "Tipe print : " << bantu->info.tp<<endl;
cout << "Jumlah order : " << bantu->info.jumlah<<endl;
bantu=bantu->prev;
}}}

Listing 8 stack lanjutan

7
4. Jadwal Pengerjaan dan Pembagian Tugas
a. Codingan : Mahardika (60%), Aldo (40%)
b. Laporan : Mahardika(50%), Aldo (50%)

5. Kesimpulan dan Saran

5.1 Kesimpulan
Kesimpulan dari project akhir yang berjudul “Antrian Digital Printing” adalah sebagi
berikut:
1 Program antrian digital printing dibuat dengan bahasa C++
2 Unsur yang dipakai pada program ini adalah queue,stack.
3 Program ini dapat digunakan untuk mengetahui data serta nomer antrian pelanggan

5.2 Saran
Untuk pengembangan lebih lanjut penulis memberikan saran yang sangat bermanfaat dan
dapat membantu :
1. program antrian Digital Printing lebih ditingkatkan kualitasnya

Daftar Pustaka

https://www.kodedasar.com/belajar-cpp/

8
ii

Anda mungkin juga menyukai