You are on page 1of 14

Laporan Tugas Besar Algoritma Pemrograman 2 Aplikasi Toko Buku

Oleh Kelompok Alpro 2 Kelas G : Ramadani Arif Rahman Hakim Nurhadi Pratama P. 10523144 10523145 10523147

Jurusan Teknik Informatika Fakultas Teknologi Industri Universitas Islam Indonesia Yogyakarta 2011

1. Pendahuluan
1.1 Latar Belakang
Perkembangan ilmu pengetahuan dan teknologi telah mengalami percepatan yang tinggi. Keadaan tersebut membuat banyak hal dapat dilakukan dengan lebih mudah dan efisien. Seiring dengan hal tersebut, pertumbuhan akan teknologi informasi makin berkembang pesat, seperti pertumbuhan dalam pembuatan berbagai program yang dapat menunjang suatu usaha tertentu. Penggunaan program yang canggih dapat meningkatkan mutu pelayanan khususnya dalam bidang penjualan dan penyimpanan data dalam suatu usaha tertentu, seperti pada usaha toko buku yang sekarang ini banyak sekali, terlebih di Yogyakarta yang merupakan kota pelajar sehingga banyak mahasiswa, pelajar, maupun masyarakat umum yang membeli buku. Aplikasi toko buku ini dipilih menjadi studi kasus karena banyaknya toko buku di daerah Yogyakarta yang sudah banyak menggunakan program aplikasi buku untuk menunjang usahanya. Maka dari itu kami juga ingin membuat program tersebut dalam versi kami sendiri, meskipun masih terbilang kurang sempurna dan lengkap daripada program sebenarnya yang ada ditoko-toko buku tersebut.

1.2 Deskripsi studi kasus


Program ini merupakan program yang sederhana dari sebuah aplikasi toko buku. Dalam program ini terdapat 6 menu utama, adapun fungsi menu-menu tersebut adalah, pada menu pertama, user dapat melakukan perhitungan harga buku berdasarkan jumlah buku yang akan dibeli oleh konsumen. Pada menu kedua, user dapat memasukkan data buku baru namun sebelumnya user harus memasukkan password agar dapat melakukannya, data yang baru saja dimasukkan disimpan sementara didalam variable struct. Pada menu ketiga berfungsi untuk menampilkan daftar buku berdasarkan kode buku secara ascending. Pada menu keempat, user dapat mencari data buku berdasarkan kode buku yang dimasukkan. Pada menu kelima, user dapat menyimpan data buku yang baru saja dimasukkan, namun sebelumnya user harus memasukkan password agar dapat melakukannya. Lalu pada menu keenam, user dapat keluar dari program dengan memilih menu ini. Namun, program ini tidak sesempurna dan selengkap aplikasi buku yang ada di toko-toko buku besar lainnya. Ada beberapa hal yang tidak dapat dilakukan oleh program ini antara lain, penghapusan dan perubahan data jika data tersebut salah dimasukkan. Pencariannya kurang lengkap karena hanya dapat melakukan pencarian berdasarkan kode buku, namun tidak dapat melakukan pencarian berdasarkan penulis, penerbit, kategori, maupun tahun penerbitannya. Lalu pengurutannya juga kurang lengkap, karena pengurutan dilakukan berdasarkan kode buku saja, tidak dapat melakukan pengurutan berdasarkan harga maupun tahun penerbitannya. Dan hasil perhitungan yang dilakukan pada menu pertama tidak disimpan oleh program, namun

hanya merupakan keluaran biasa dari hasil pembelian buku. Namun dengan fungsionalitas yang ada pada program ini cukup untuk mewakili program aplikasi toko buku yang sebenarnya.

1.3 Pembagian tugas


Adapun pembagian tugas untuk masing-masing kelompok adalah sebagai berikut: 1. Nurhadi Pratama P. mengerjakan fungsionalitas pencarian sekuensial. 2. Arief Rahman H. mengerjakan fungsionalitas pengurutan sisip (Insertion Sort). 3. Ramadani mengerjakan fungsionalitas penambahan data, penyimpanan dan pembacaan file.

1.4 Laporan jadwal pengerjaan


No. 1 2 3 4 5 6 7 8 9 10 11 12 Nama aktivitas Menentukan tema untuk tubes Mencari literature untuk studi kasus Membuat script untuk menu program Membuat prosedur penambahan data Membuat prosedur pencarian sekuensial Membuat penyimpanan dan pembacaan file Membuat prosedur pengurutan sisip Asistensi Perbaikan pada prosedur pengurutan Pembuatan menu pembelian buku (menu pertama) Perbaikan pada tampilan menu dan lain-lain Pembuatan laporan Pelaksanaan 2 Mei 2011 5 Mei 2011 6 Mei 2011 9 Mei 2011 14 Mei 2011 17 Mei 2011 17 Mei 2011 18 Mei 2011 19 Mei 2011 30 Mei 2011 30 Mei 2011 3 Juni 2011

2. Penjelasan aplikasi
Beberapa fungsionalitas yang ada pada program ini antara lain :

2.1 Penambahan data


Begitu dimasukkan data dari luar, maka data yang dimasukkan tadi akan disimpan sementara di variable struct sampai data tersebut disimpan permanen di file data.dat. Di dalam variable struct tersebut terdapat 3 tipe data dasar yaitu int, float, dan char.

Gambar 1 Input data buku baru Tabel 1 Script prosedur input data baru
void inputData(int& n, buku& newBook) { system("cls"); int pass; cout<<"------------------------------------------------------"<<endl; cout<<" Anda login sebagai ADMIN"<<endl; cout<<" masukkan password : "; cin>>pass; cout<<"------------------------------------------------------"<<endl<<endl; if (pass==1052) { n=n+1; //cout<<"------------------------------------------------------"<<endl; cout<<" INPUT DATA BUKU BARU"<<endl<<endl; cout<<"------------------------------------------------------"<<endl;

cout<<" Data buku ke-" <<n<<endl; cout<<" Kode buku : "; cin>>newBook[n].kodeBuku; cout<<" Judul buku : "; cin.getline(newBook[n].judulBuku, 50); cin.getline(newBook[n].judulBuku, 50); cout<<" Kategori : "; cin.getline(newBook[n].kategori, 50); cout<<" Sub Kategori : "; cin.getline(newBook[n].subkategori, 50); cout<<" Penulis : "; cin.getline(newBook[n].penulis, 50); cout<<" Penerbit : "; cin.getline(newBook[n].penerbit, 50); cout<<" Tahun : "; cin>>newBook[n].tahunTerbit; cout<<" Harga : "; cin>>newBook[n].harga; system ("pause"); getchar(); } else { cout<<" password salah"<<endl; system ("pause"); getchar(); } }

2.2 Pencarian
Pencarian menggunakan pencarian sekuensial, jadi data yang dicari diperiksa satu persatu sampai data yang dicari ditemukan. Dalam pencariannya, data yang dicari berdasarkan kode buku yang bertipe data integer. Kode buku dicari satu persatu secara berurutan sampai kode buku tersebut ditemukan. Setelah ditemukan kode buku yang dicari lalu akan ditampilkan semua rincian data buku sesuai posisi dari kode buku yang ditemukan tersebut.

Gambar 2 Mencari data buku berdasarkan kode buku

Tabel 2 Script prosedur pencarian sekuensial berdasarkan kode buku


void searching(int x, buku data, int banyak, int& posisi, bool& ketemu) { int i; i=1; ketemu=false; while (!(ketemu) && (i<=banyak)) { if(data[i].kodeBuku==x) ketemu=true; else i=i+1; } if (ketemu) { posisi=i; } else { posisi=0; } }

2.3 Pengurutan
Pengurutan menggunakan Insertion Sort, diurutkan berdasarkan kode buku yang bertipe data integer mulai dari yang terkecil hingga yang terbesar. Cara kerjanya pertama-tama, dilakukan iterasi dimana di setiap iterasi insert sort memindahkan nilai elemen, kemudian menyisipkannya berulang-ulang sampai ke tempat yang tepat. Begitu seterusnya dilakukan sampai semuanya terurut menaik berdasarkan kode buku. Dari proses iterasi, seperti biasa, terbentuklah bagian yang telah di sorting dan bagian yang belum.

Gambar 3 Daftar data buku yang terurut ascending

Tabel 3 Script prosedur insertion sort secara ascending


void sorting(buku data, int banyak){ int i,j,temp; char judul [50]; char penulis1 [50]; char penerbit1 [50]; char kategoris[50]; char subkategoris[50]; char tahun [4]; float harga1; for(i=2;i<=banyak;i++){ for(j=(i-1);j>1;j--){ if(data[j].kodeBuku>data[j+1].kodeBuku){ temp = data[j].kodeBuku; data[j].kodeBuku = data[j+1].kodeBuku; data[j+1].kodeBuku = temp; strcpy(judul , data[j].judulBuku); strcpy(data[j].judulBuku , data[j+1].judulBuku); strcpy(data[j+1].judulBuku , judul); strcpy(kategoris , data[j].kategori); strcpy(data[j].kategori, data[j+1].kategori); strcpy(data[j+1].kategori , kategoris);

strcpy(subkategoris , data[j].subkategori); strcpy(data[j].subkategori, data[j+1].subkategori); strcpy(data[j+1].subkategori , subkategoris); strcpy(penulis1 , data[j].penulis); strcpy(data[j].penulis , data[j+1].penulis); strcpy(data[j+1].penulis , penulis1); strcpy(penerbit1 , data[j].penerbit); strcpy(data[j].penerbit , data[j+1].penerbit); strcpy(data[j+1].penerbit , penerbit1); strcpy(tahun , data[j].tahunTerbit); strcpy(data[j].tahunTerbit , data[j+1].tahunTerbit); strcpy(data[j+1].tahunTerbit , tahun); harga1 = data[j].harga; data[j].harga = data[j+1].harga; data[j+1].harga = harga1; } } } }

2.4 Penyimpanan ke file


Jika isiData lebih dari 0, maka akan membuka file data.dat untuk menulis/menyimpan data ke toko.dat dalam modus binary. Menulis file toko.dat dari isi pointer daftar sebanyak pointer daftar.

Gambar 4 Menyimpan data yang telah dimasukkan

Tabel 4 Script untuk menyimpan data yang telah dimasukkan


if (isiData>0) { daftar[isiData+1].kodeBuku=0; toko=fopen("data.dat", "wb"); fwrite(&daftar, sizeof(daftar),1,toko); fclose(toko); cout<<" Data sudah tersimpan"<<endl; }

2.5 Pembacaan dari file


Membuka untuk membaca saja file "toko.dat" dalam modus binary jika toko not null atau berisi data, maka akan membaca isi file toko.dat (fread(&daftar, sizeof(daftar), 1, toko) = ) untuk ditampung pointer daftar sebanyak isi pointer daftar. Perulangan untuk menghitung banyaknya isi daftar (selama pointer kodeBuku!=0).

Gambar 5 Membaca dan menampilkan data yang telah ada

Tabel 5 Script untuk membaca data yang telah ada


FILE *toko; isiData=0; toko = fopen("data.dat", "rb"); if (toko!=NULL) { fread(&daftar, sizeof(daftar), 1, toko); isiData=1; while (daftar[isiData+1].kodeBuku!=0) { isiData=isiData+1; } fclose(toko); }

2.6 Fungsionalitas Tambahan


Fungsionalitas ini digunakan pada menu pertama program, fungsinya adalah untuk menghitung harga buku berdasarkan banyaknya buku yang dibeli. Caranya adalah hanya memasukkan kode buku, jika kode buku yang dimasukkan itu benar, maka akan ada rincian data buku dari kode buku yang dimasukkan tadi.

Gambar 6 Screenshot hasil dari menu pertama program

Tabel 6 Script fungsionalitas pada menu pertama program


total=0; beli=1; cout<<"--------------------------------------------------"; cout<<endl<<" PEMBELIAN BUKU"; cout<<endl<<"-------------------------------------------------"<<endl; do { cout <<endl<<" Masukkan kode buku : "; cin>>cariKode; cout<<endl; searching(cariKode, daftar, isiData, cari, ada); if (ada) { cout<<" Judul buku : "<<daftar[cari].judulBuku<<endl; cout<<" Harga satuan : "<<daftar[cari].harga<<endl; cout<<" Banyak buku : "; cin>>buyBook; totalBuy[beli]=buyBook*daftar[cari].harga; cout<<" Total : "<<totalBuy[beli]<<endl; total=total+totalBuy[beli];

10

beli++; } else { cout <<" Tidak ada data buku dengan kode buku "<<cariKode<<endl; } cout<<" Beli lagi ? [y/n] "; cin>>beliLagi; }while (beliLagi == 'y' && beliLagi != 'n'); if (total!=0) { cout<<endl<<" TOTAL BELANJA : "<<total<<endl; totalAkhir(total); } else { cout<<" Tidak ada data yang dimasukkan"<<endl; }

11

3. Penutup
3.1 Kesimpulan
Dari tugas besar yang kami kerjakan, kami mendapatkan banyak sekali ilmu tentang algoritma dan pemrograman 2 yang tidak ada di algoritma dan pemrograman 1 seperti pencarian, pengurutan, dan penyimpanan serta pembacaan file yang telah dimasukkan datanya. Meskipun demikian kami juga mendapatkan kendala dalam pengerjaannya seperti kurang paham tentang pembuatan dan konsep fungsionalitas untuk pengurutan dan penyimpanan serta pembacaan file, untungnya dalam pengerjaan tugas besar ini kami dibantu oleh asisten pembimbing kami. Selain itu tugas besar ini memotivasi kami agar kami lebih kreatif lagi dalam membuat program, dan tentunya membuat kami kompak pada saat pengerjaan maupun asistensi dengan asisten pembimbing kami.

3.2 Saran
Kami berharap tugas besar algoritma dan pemrograman 2 ini setiap tahunnya diadakan, sehingga mahasiswa tidak hanya mendapatkan teorinya saja, namun dapat dipraktekkan dalam pembuatan program yang sebenarnya serta dapat memacu kreatifitas mahasiswa dalam membuat program sesuai dengan kreatifitas mereka. Dan kami juga berharap untuk kedepannya agar program yang dibuat berbentuk grafis jadi tidak hanya berbentuk consule. Demikian saran dan kritik maupun masukkan dari kami.

12

Daftar Pustaka

PIT, Laboratorium. Modul Praktikum Algoritma dan Pemrograman 1. Laboratorium Pemrograman dan Informatika Teori. 2010. Jurusan Teknik Informatika Fakultas Teknologi Industri Universitas Islam Indonesia Yogyakarta. http://www.cplusplus.com/doc/tutorial/

13

Lampiran

Lampiran 1 : CD berisi source code program dan softcopy laporan dalam format pdf. Lampiran 2 : Gambar 7

Gambar 7 Menu utama pada saat program dijalankan

14

You might also like