Laporan Tubes Alpro 2 - Aplikasi Toko Buku

14
Laporan Tugas Besar Algoritma Pemrograman 2 Aplikasi Toko Buku Oleh Kelompok Alpro 2 Kelas G : Ramadani 10523144 Arif Rahman Hakim 10523145 Nurhadi Pratama P. 10523147 Jurusan Teknik Informatika Fakultas Teknologi Industri Universitas Islam Indonesia Yogyakarta 2011

description

Laporan tugas besar algoritma dan pemrograman 2 - Aplikasi Toko Buku dengan menggunakan CodeBlock C++ Language

Transcript of Laporan Tubes Alpro 2 - Aplikasi Toko Buku

Page 1: Laporan Tubes Alpro 2 - Aplikasi Toko Buku

Laporan Tugas Besar Algoritma Pemrograman 2

Aplikasi Toko Buku

Oleh Kelompok Alpro 2 Kelas G :

Ramadani 10523144

Arif Rahman Hakim 10523145

Nurhadi Pratama P. 10523147

Jurusan Teknik Informatika

Fakultas Teknologi Industri Universitas Islam Indonesia

Yogyakarta

2011

Page 2: Laporan Tubes Alpro 2 - Aplikasi Toko Buku

2

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

Page 3: Laporan Tubes Alpro 2 - Aplikasi Toko Buku

3

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

Page 4: Laporan Tubes Alpro 2 - Aplikasi Toko Buku

4

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;

Page 5: Laporan Tubes Alpro 2 - Aplikasi Toko Buku

5

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

Page 6: Laporan Tubes Alpro 2 - Aplikasi Toko Buku

6

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.

Page 7: Laporan Tubes Alpro 2 - Aplikasi Toko Buku

7

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);

Page 8: Laporan Tubes Alpro 2 - Aplikasi Toko Buku

8

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; }

Page 9: Laporan Tubes Alpro 2 - Aplikasi Toko Buku

9

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); }

Page 10: Laporan Tubes Alpro 2 - Aplikasi Toko Buku

10

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];

Page 11: Laporan Tubes Alpro 2 - Aplikasi Toko Buku

11

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; }

Page 12: Laporan Tubes Alpro 2 - Aplikasi Toko Buku

12

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.

Page 13: Laporan Tubes Alpro 2 - Aplikasi Toko Buku

13

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/

Page 14: Laporan Tubes Alpro 2 - Aplikasi Toko Buku

14

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