TUGAS
RANCANG PEMROGRAMAN VISUAL
JUDUL
PROGRAM
KING OF BOOK
DISUSUN
OLEH
ANGGER
AGUNG ENDARKO 672009046
ADITYA
SEPTA MAHENDRA 672009054
ADY
KRISNA 672009287
FAKULTAS
TEKNOLOGI INFORMASI
UNIVERSITAS
KRISTEN SATYA WACANA
Latar Belakang
Pada kesempatan kali ini kelompok kami membuat
program berjudul KING OF BOOK yang bertemakan tentang program penjualan
transaksi buku. Program ini ditujukan untuk mempermudah penggunanya untuk
mengolah data toko bukunya supaya terorganisisr dengan rapi.
ISI
Pada program ini admin bisa login
pada pilihan form pertama di kategori
sign up, dan setelah itu baru terdaftar di database user.
Setelah sign up dan sudah masuk databasenya maka user di persilahkan login
dengan username dan passwordnya
Untuk Login Admin harus mengisikan
Username admin dan Password admin
Dengan source code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace TRteoriPV
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void
button1_Click(object sender, EventArgs e)
{
System.IO.StreamWriter sw = new System.IO.StreamWriter("temp/temp.txt");
DBkontrol d = new DBkontrol();
try
{
DataTable dt = d.getAll("select level from tUser where id='" +
textBox1.Text + "' and pass ='" +
textBox2.Text + "'");
if (dt.Rows[0][0].ToString() == "admin")
{
panel1.Visible = false;
sw.Write("");
sw.Close();
FormAdmin f = new FormAdmin();
f.MdiParent = this;
f.Show();
}
else
{
panel1.Visible = false;
sw.Write(textBox1.Text);
sw.Close();
FormGallery f = new FormGallery();
f.MdiParent = this;
f.Show();
}
}
catch
{
MessageBox.Show("user kode atau Password Salah");
}
sw.Close();
}
private void
panel1_Paint(object sender, PaintEventArgs e)
{
}
}
}
Setelah admin login maka terdapat
tampilan sebagai berikut
Setelah itu jika kita ingin meng
update profile admin maka klik update profile. Setelah itu terdapat tampilan
sebagai berikut
Setelah kita klik save kita menuju
office. Setelah kita klik office dan pilih pelanggan dapat kita lihat tampilan
sebagai berikut.
Pada tampilan ini kita dapat melihat
siapa saja user yang telah sign up di database, pada kategori ini admin dapat
me reset password dari user dan nama password menjadi cinta.
Pada tool BUKU terdapat tampilan
berikut
Disitu kita juga dapat men searching buku berdasarkan id
dan nama yang kita mau lihat pada toolbar pojok kiri, dan akan Nampak sebagai
berikut.
Setelah itu apabila kita klik update maka terdapat
tampilan sebagai berikut.
Pada tampilan ini admin dapat merubah nama, harga,
jumlah, tanggal , kategori, distributor, dan sinopsisnya.
Setelah itu pada pilihan ketiga yaitu transaksi
Terdapat tampilan sebagai berikut
Kita dapat melihat transaksi dari si user pada tahapan
ini.
Setelah itu apabila admin ingin sekali menambah buku maka
klik button gunung di pojok kanan atas, setelah di klik maka akan muncul form
seperti ini
Pada form ini kita dapat menambahkan foto pada tombol
uploud dan semuanya termasuk synopsis dan lain2 nya.
Pada form admin source codenya yaitu
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace TRteoriPV
{
public partial class FormAdmin : Form
{
DBkontrol c = new DBkontrol();
public FormAdmin()
{
InitializeComponent();
}
public void
ViewTable(string sqlSyntaks)
{
c
= new DBkontrol();
dataGridView1.Columns.Clear();
dataGridView1.DataSource = c.getAll(sqlSyntaks);
}
public void btnTable(string btnName)
{
System.ComponentModel.ComponentResourceManager
resources = new System.ComponentModel.ComponentResourceManager(typeof(FormAdmin));
DataGridViewImageColumn EditButton = new System.Windows.Forms.DataGridViewImageColumn();
EditButton.Name = btnName;
EditButton.Width = 50;
if (btnName == "Delete")
{
EditButton.Image = global::TRteoriPV.Properties.Resources.Icon_;
}
else if (btnName == "Reset")
{
EditButton.Image = global::TRteoriPV.Properties.Resources.Rendevous;
}
else if (btnName == "Update")
{
EditButton.Image = global::TRteoriPV.Properties.Resources.Baby;
}
else if (btnName == "View")
{
EditButton.Image = global::TRteoriPV.Properties.Resources.MiXthepiX_search;
}
this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[]
{ EditButton });
}
private void
button1_Click(object sender, EventArgs e)
{
System.IO.StreamWriter sw = new System.IO.StreamWriter("temp/temp.txt");
sw.Write("admin");
sw.Close();
FormUser f = new FormUser();
f.Show();
}
private void
toolStripComboBox1_TextChanged(object sender, EventArgs e)
{
if (toolStripComboBox1.SelectedItem.ToString() == "Pelanggan")
{
ViewTable("select
id,nama,alamat,tanggal,jeniskelamin from tUser where level='user'");
btnTable("Reset");
btnTable("Delete");
comboBox1.Items.Clear();
comboBox1.Items.Add("id");
comboBox1.Items.Add("nama");
button3.Enabled = true;
}
else if
(toolStripComboBox1.SelectedItem.ToString() == "Buku")
{
ViewTable("select
kode,nama,harga,jumlah,tanggal,distributor from tBuku");
btnTable("Update");
btnTable("Delete");
comboBox1.Items.Clear();
comboBox1.Items.Add("kode");
comboBox1.Items.Add("nama");
button3.Enabled = true;
}
else if
(toolStripComboBox1.SelectedItem.ToString() == "Transaksi")
{
ViewTable("select * from
tTransaksi");
btnTable("Delete");
comboBox1.Items.Clear();
comboBox1.Items.Add("no");
comboBox1.Items.Add("tanggal");
button3.Enabled = true;
}
}
private void
dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
c
= new DBkontrol();
if (e.RowIndex > -1)
{
if (e.ColumnIndex == dataGridView1.Columns[dataGridView1.Columns.Count
- 2].Index)
{
if
(toolStripComboBox1.SelectedItem.ToString() == "Pelanggan")
{
DialogResult dr = MessageBox.Show("Anda Yakin ?", "
Reset Password " + dataGridView1[0, e.RowIndex].Value.ToString(), MessageBoxButtons.YesNo);
if (dr == DialogResult.Yes)
{
c.editDB("update tUser set pass='cinta' where id ='"
+ dataGridView1[0, e.RowIndex].Value.ToString() + "'");
}
}
else if
(toolStripComboBox1.SelectedItem.ToString() == "Buku")
{
System.IO.StreamWriter sw = new
System.IO.StreamWriter("temp/temp.txt");
sw.Write(dataGridView1[0, e.RowIndex].Value.ToString());
sw.Close();
FormItem f = new FormItem();
f.Show();
}
else if
(toolStripComboBox1.SelectedItem.ToString() == "Transaksi")
{
Form f = new Form();
TextBox t = new TextBox();
DataTable dtransaksi = c.getAll("select
* from tBuku , tBelanja where tBelanja.no ='" + dataGridView1[0,
e.RowIndex].Value.ToString() + "' and
tBelanja.kode = tBuku.kode");
t.Text = "=====Daftar Belanja=====" + Environment.NewLine;
t.Text += "No Transaksi : " + dataGridView1[0,
e.RowIndex].Value.ToString() + Environment.NewLine;
t.Text += "Pembeli
: " + dataGridView1[1, e.RowIndex].Value.ToString() + Environment.NewLine;
t.Text += "Tanggal
: " + dataGridView1[2, e.RowIndex].Value.ToString() + Environment.NewLine;
for (int i = 0; i < 2; i++)
{
t.Text += (i + 1) +
". " + dtransaksi.Rows[i][1].ToString()
+ Environment.NewLine;
}
t.Text += "Total Bayar
: " + dataGridView1[3, e.RowIndex].Value.ToString() + Environment.NewLine;
t.Multiline = true;
t.Dock = DockStyle.Fill;
f.Controls.Add(t);
f.StartPosition = FormStartPosition.CenterScreen;
f.Show();
}
}
else if
(e.ColumnIndex == dataGridView1.Columns[dataGridView1.Columns.Count - 1].Index)
{
if
(toolStripComboBox1.SelectedItem.ToString() == "Pelanggan")
{
DialogResult dr = MessageBox.Show("Anda Yakin ?", "
Hapus kode " + dataGridView1[0, e.RowIndex].Value.ToString(), MessageBoxButtons.YesNo);
if (dr == DialogResult.Yes)
{
c.editDB("delete from tUser where id ='" +
dataGridView1[0, e.RowIndex].Value.ToString() + "'");
ViewTable("select id,nama,alamat,tanggal,jeniskelamin from
tUser where level='user'");
btnTable("Reset");
btnTable("Delete");
}
}
else if
(toolStripComboBox1.SelectedItem.ToString() == "Buku")
{
DialogResult dr = MessageBox.Show("Anda Yakin ?", "
Hapus kode " + dataGridView1[0, e.RowIndex].Value.ToString(), MessageBoxButtons.YesNo);
if (dr == DialogResult.Yes)
{
c.editDB("delete from tBuku where kode ='" +
dataGridView1[0, e.RowIndex].Value.ToString() + "'");
ViewTable("select kode,nama,harga,jumlah,tanggal,distributor
from tBuku");
btnTable("Update");
btnTable("Delete");
}
}
else if
(toolStripComboBox1.SelectedItem.ToString() == "Transaksi")
{
DialogResult dr = MessageBox.Show("Anda Yakin ?", "
Hapus kode " + dataGridView1[0, e.RowIndex].Value.ToString(), MessageBoxButtons.YesNo);
if (dr == DialogResult.Yes)
{
c.editDB("delete from tTransaksi where no ='" +
dataGridView1[0, e.RowIndex].Value.ToString() + "'");
ViewTable("select * from tTransaksi");
btnTable("View");
btnTable("Delete");
}
}
}
}
}
private void
addDataToolStripMenuItem_Click(object sender, EventArgs e)
{
System.IO.StreamWriter sw = new System.IO.StreamWriter("temp/temp.txt");
sw.Write("");
sw.Close();
FormItem f = new FormItem();
f.Show();
}
private void
reportToolStripMenuItem_Click(object sender, EventArgs e)
{
FormReport f = new
FormReport();
f.Show();
}
private void
button2_Click(object sender, EventArgs e)
{
Application.Restart();
}
private void
button3_Click(object sender, EventArgs e)
{
if (toolStripComboBox1.SelectedItem.ToString() == "Pelanggan")
{
ViewTable("select
id,nama,alamat,tanggal,jeniskelamin from tUser where level='user'");
btnTable("Reset");
btnTable("Delete");
}
else if
(toolStripComboBox1.SelectedItem.ToString() == "Buku")
{
ViewTable("select
kode,nama,harga,jumlah,tanggal,distributor from tBuku");
btnTable("Update");
btnTable("Delete");
}
else if
(toolStripComboBox1.SelectedItem.ToString() == "Transaksi")
{
ViewTable("select * from
tTransaksi");
btnTable("View");
btnTable("Delete");
}
}
private void
textBox1_TextChanged(object sender, EventArgs e)
{
if (toolStripComboBox1.SelectedItem.ToString() == "Pelanggan")
{
ViewTable("select
id,nama,alamat,tanggal,jeniskelamin from tUser where level='user' and "
+ comboBox1.SelectedItem.ToString() + " like
'" + textBox1.Text + "%'");
btnTable("Reset");
btnTable("Delete");
}
else if
(toolStripComboBox1.SelectedItem.ToString() == "Buku")
{
ViewTable("select
kode,nama,harga,jumlah,tanggal,distributor from tBuku where " +
comboBox1.SelectedItem.ToString() + " like
'" + textBox1.Text + "%'");
btnTable("Update");
btnTable("Delete");
}
else if
(toolStripComboBox1.SelectedItem.ToString() == "Transaksi")
{
ViewTable("select * from tTransaksi
where " + comboBox1.SelectedItem.ToString() + " like '" + textBox1.Text + "%'");
btnTable("View");
btnTable("Delete");
}
}
}
}
Sedangkan pada form edit profile form user source codenya
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace TRteoriPV
{
public partial class FormUser : Form
{
DBkontrol c = new DBkontrol();
DataTable dt = new
DataTable();
string kode = "";
public FormUser()
{
InitializeComponent();
System.IO.StreamReader sr = new System.IO.StreamReader("temp/temp.txt");
kode = sr.ReadToEnd();
sr.Close();
if (kode != "")
{
textBox1.Enabled = false;
dt = c.getAll("select * from tUser
where id='" + kode + "'");
textBox1.Text = dt.Rows[0][0].ToString();
textBox2.Text = dt.Rows[0][1].ToString();
textBox3.Text = dt.Rows[0][3].ToString();
textBox4.Text = dt.Rows[0][4].ToString();
dateTimePicker1.Value = DateTime.Parse(dt.Rows[0][5].ToString());
comboBox1.SelectedItem = dt.Rows[0][6].ToString();
}
}
private void
button2_Click(object sender, EventArgs e)
{
try
{
c = new DBkontrol();
c.editDB("update tUser set pass='"
+ textBox2.Text + "',nama='" +
textBox3.Text + "',alamat='" +
textBox4.Text + "',tanggal='" +
dateTimePicker1.Value.ToShortDateString() + "',jeniskelamin='"
+ comboBox1.SelectedItem.ToString() + "' where
id='" + textBox1.Text + "'");
this.Close();
}
catch
{
MessageBox.Show("gagal");
}
}
}
}
Sedangkan pada form item yang dimana kita bisa input buku
source code nya yaitu
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace TRteoriPV
{
public partial class FormItem : Form
{
DBkontrol c = new DBkontrol();
DataTable dt = new
DataTable();
string kode = "";
public FormItem()
{
InitializeComponent();
System.IO.StreamReader
sr = new System.IO.StreamReader("temp/temp.txt");
kode = sr.ReadToEnd();
sr.Close();
if (kode != "")
{
textBox1.Enabled = false;
dt = c.getAll("select * from tBuku
where kode='"+kode+"'");
textBox1.Text = dt.Rows[0][0].ToString();
textBox2.Text = dt.Rows[0][1].ToString();
textBox3.Text = dt.Rows[0][5].ToString();
textBox4.Text = dt.Rows[0][6].ToString();
textBox5.Text = dt.Rows[0][7].ToString();
numericUpDown1.Value = int.Parse(dt.Rows[0][2].ToString());
numericUpDown2.Value = int.Parse(dt.Rows[0][3].ToString());
dateTimePicker1.Value = DateTime.Parse(dt.Rows[0][4].ToString());
try
{
pictureBox1.Image = new Bitmap("book/"
+ dt.Rows[0][0].ToString() + ".ico");
button1.Visible = false;
}
catch
{
}
}
}
private void
button1_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new
OpenFileDialog();
ofd.Filter = "Image Files(*.jpg; *.jpeg;
*.gif; *.bmp; *.png)|*.jpg; *.jpeg; *.gif; *.bmp; *.png";
if (ofd.ShowDialog() == DialogResult.OK)
{
pictureBox1.Image = new Bitmap(ofd.FileName);
}
pictureBox1.Image.Save("book/"
+ textBox1.Text + ".ico");
}
private void
button2_Click(object sender, EventArgs e)
{
if (kode == "")
{
try
{
c = new DBkontrol();
c.editDB("insert into tBuku
values('" + textBox1.Text + "','"
+ textBox2.Text + "'," +
numericUpDown1.Value + "," +
numericUpDown2.Value + ",'" +
dateTimePicker1.Value.ToShortDateString() + "','"
+ textBox3.Text + "','" +
textBox4.Text + "','" +
textBox5.Text + "')");
MessageBox.Show("sukses");
this.Close();
}
catch
{
MessageBox.Show("gagal");
}
}
else
{
try
{
c = new DBkontrol();
c.editDB("update tBuku set nama='"
+ textBox2.Text + "',harga=" +
numericUpDown1.Value + ",jumlah="
+ numericUpDown2.Value + ",tanggal='"
+ dateTimePicker1.Value.ToShortDateString() + "',kategori='"
+ textBox3.Text + "',distributor='"
+ textBox4.Text + "',sinopsis='" +
textBox5.Text + "' where kode='" +
textBox1.Text + "'");
MessageBox.Show("sukses");
this.Close();
}
catch
{
MessageBox.Show("gagal");
}
}
}
}
}
Pada selanjutnya apabila user login dengan username
setelah sign up dengan password yang sudah di buat yaitu sebagai berikut
Setelah kita klik SHOP maka akan muncul tampilan sebagai
berikut
Setelah kita klik add pada buku yang kita pilih maka
muncul di kode barang dan lain lainya
Setelah itu setelah kita bayar maka kita dapat ngeprint
juga dan dapat memilih printer mana yang akan kita gunakan.
Pada form galeri user source codenya yaitu
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace TRteoriPV
{
public partial class FormGallery
: Form
{
System.IO.StreamReader sr = new System.IO.StreamReader("temp/temp.txt");
DBkontrol c = new DBkontrol ();
DataTable dUser = new
DataTable();
DataTable dc = new
DataTable();
string user = "";
int total = 0;
DateTime now = DateTime.Now;
DataGridViewImageCell coba = new DataGridViewImageCell();
public void btnTable(string btnName)
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormAdmin));
DataGridViewImageColumn EditButton = new System.Windows.Forms.DataGridViewImageColumn();
EditButton.Name = btnName;
EditButton.Width = 50;
if (btnName == "Add")
{
EditButton.Image = global::TRteoriPV.Properties.Resources.Library;
this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[]
{ EditButton });
}
else if (btnName == "Del")
{
EditButton.Image = global::TRteoriPV.Properties.Resources.Icon_;
this.dataGridView2.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[]
{ EditButton });
}
else if (btnName == "View")
{
EditButton.Image = global::TRteoriPV.Properties.Resources.MiXthepiX_search;
this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[]
{ EditButton });
}
}
public void tblBuku()
{
dataGridView1.Columns.Clear();
dataGridView1.DataSource = c.getAll("select
kode,nama,harga,jumlah from tBuku");
btnTable("Add");
btnTable("View");
}
public void
tblBelanja()
{
dc.Columns.Add("Kode Barang");
dc.Columns.Add("Nama Barang");
dataGridView2.DataSource = dc;
DataGridViewImageColumn EditButton = new System.Windows.Forms.DataGridViewImageColumn();
btnTable("Del");
}
public FormGallery()
{
InitializeComponent();
tblBuku();
tblBelanja();
user = sr.ReadToEnd();
sr.Close();
dUser = c.getAll("select * from tUser
where id='" + user + "'");
label5.Text = "Hi " +
dUser.Rows[0][3];
}
private void
button2_Click(object sender, EventArgs e)
{
System.IO.StreamWriter sw = new System.IO.StreamWriter("temp/temp.txt");
sw.Write(user);
sw.Close();
FormUser f = new FormUser();
f.Show();
}
private void
dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex > -1)
{
if (e.ColumnIndex ==
dataGridView1.Columns["Add"].Index)
{
if
(int.Parse(dataGridView1[5,
e.RowIndex].Value.ToString()) < 1)
{
MessageBox.Show("habis");
}
else
{
try
{
dataGridView1[5,
e.RowIndex].Value = int.Parse(dataGridView1[5,
e.RowIndex].Value.ToString()) - 1;
dc.Rows.Add(dataGridView1[2, e.RowIndex].Value, dataGridView1[3,
e.RowIndex].Value);
textBox3.Text = "" + (total += int.Parse(dataGridView1[4,
e.RowIndex].Value.ToString()));
tblBelanja();
}
catch (Exception)
{
}
}
} else if
(e.ColumnIndex == dataGridView1.Columns["View"].Index)
{
System.IO.StreamWriter sw = new System.IO.StreamWriter("temp/temp.txt");
sw.Write(dataGridView1[2,
e.RowIndex].Value.ToString());
sw.Close();
FormView f = new
FormView();
f.Show();
}
}
}
private void
dataGridView2_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex > -1)
{
if (e.ColumnIndex ==
dataGridView2.Columns["Del"].Index)
{
DataTable d = c.getAll("select kode,nama,harga,jumlah from tBuku where kode
='" + dataGridView2[1, e.RowIndex].Value.ToString() + "'");
textBox3.Text = "" + (total
-= int.Parse(d.Rows[0][2].ToString()));
for (int
i = 0; i < dataGridView1.Rows.Count; i++)
{
if (dataGridView1[2, i].Value.ToString() == dataGridView2[1,
e.RowIndex].Value.ToString())
{
dataGridView1[5,
i].Value = int.Parse(dataGridView1[5,
i].Value.ToString()) + 1;
}
}
dataGridView2.Rows.RemoveAt(e.RowIndex);
}
}
}
private void
textBox4_TextChanged(object sender, EventArgs e)
{
try
{
if (textBox4.Text == null || textBox4.Text == "")
{
textBox5.Text = "Rp. 0";
}
else
{
if
(int.Parse(textBox3.Text) < int.Parse(textBox4.Text))
textBox5.Text = "Rp. " + (int.Parse(textBox4.Text)
- int.Parse(textBox3.Text));
}
}
catch (Exception)
{
}
}
private void
button1_Click(object sender, EventArgs e)
{
try
{
c.editDB("insert into tTransaksi
values('" + "T" + now
+ "','" + user + "','" + now.ToShortDateString() + "'," + total + ")");
for (int
i = 0; i < dataGridView2.Rows.Count; i++)
{
c.editDB("insert into tBelanja
values('" + "T" + now
+ "','" + dataGridView2[1,
i].Value.ToString() + "')");
}
for (int
i = 0; i < dataGridView1.Rows.Count; i++)
{
c.editDB("update tBuku set jumlah
='" + dataGridView1[4, i].Value.ToString() + "' where kode ='" + dataGridView1[2,
i].Value.ToString() + "'");
}
dc = new DataTable();
dataGridView2.Columns.Clear();
tblBelanja();
textBox3.Text = String.Empty;
textBox4.Text = String.Empty;
textBox5.Text = "Rp. ";
total = 0;
string struck = "Struck
Pembayaran" + Environment.NewLine;
struck += "Pembeli :" + user + Environment.NewLine;
struck += "Tanggal :" + now + Environment.NewLine;
struck += "Daftar Belanja :" + Environment.NewLine;
for (int
i = 0; i < dataGridView2.Rows.Count; i++)
{
struck += dataGridView2[2, i].Value.ToString() + Environment.NewLine;
}
struck += "Total Bayar :"+textBox3.Text
+ Environment.NewLine;
PrintDialog p = new PrintDialog();
DialogResult dr = p.ShowDialog();
if (dr == DialogResult.OK)
{
}
}
catch (Exception)
{
MessageBox.Show("Gagal");
}
}
private void
button3_Click(object sender, EventArgs e)
{
Application.Restart();
}
}
}
KESIMPULAN:
Pada program ini jelas ditujukan untuk mempermudah
pengolahan data took buku yang biasanya diolah secara manual menggunakan buku
dan sekarang semoga berguna dan digunakan dengan mudah.
LINK DOWNLOAD
Tidak ada komentar:
Posting Komentar