Minggu, 17 Maret 2013

Aplikasi Manajemen Informasi - Jasa Pengiriman Sepeda Motor


Kevin H B P – 672011123
Landhung B P – 672011188
Ulfa S P – 672011228

Latar Belakang
Di era yang serba modern ini, kita selalu menggunakan komputer dalam segala aktivitas yang kita lakukan. Jarang kita menemukan saat ini di sebuah kantor jasa pengiriman misalnya, belum menggunakan komputer dalam mobilitas kantornya. Komputer di kantor jasa pengiriman biasanya digunakan untuk membantu adminitrasi pengiriman barangnya. Namun jika menggunakan aplikasi sederhana, seperti excel, belum banyak mengurangi kesalahan yang dibuat manusia. Maka dari itu kami membuat aplikasi untuk pengiriman sepeda motor yang akan sangat membantu kantor jasa pengiriman sepeda motor. Karena dengan adanya aplikasi yang kami buat ini, akan mengurangi resiko kesalahan pengiriman (salah alamat, salah nama penerima, dll), hal ini terjadi jika masih menulis manual. Kelebihan lainnya adalah dengan aplikasi ini kantor jasa pengiriman akan lebih mudah dalam memenajemen data selama jangka waktu tertentu, karena aplikasi kami ini akan menyimpan semua data pengiriman yang dilakukan setiap waktunya, tidak seperti manual yang  misalnya menulis data pengiriman pada sebuah buku atau menulis data pada lembar kerja excel, karena jika kita ingin mencari atau ingin mengupdate sebuah data, dalam pencariannya akan sangat sulit dan membuang waktu yang cukup lama, maka dari itu aplikasi kami akan sangat membantu dalam mobilitas pelengkapan adminitrasi pengiriman sepeda motor.
Isi

Gambar 1
Setiap karyawan diharuskan memiliki akun yang berisi username dan password, yang nanti akan digunakan dengan memanggilnya dari database. ( Untuk contoh anda akan diberi akun dengan username “kevin” dan password “skies” ). Berikut adalah pengalan kode untuk mengecek apakah data yang dimasukan valid.
        string conn = "server=localhost;database=dbaku;uid=root;password=;"; // untuk memudahkan pemanggilan koneksi ditulis ke variabel string
        private bool cekData(String usernm, String passwd)
        {
            // variable boolean untuk mengetahui kesuksesan proses
            Boolean Success = false;
            try
            {
                MySqlConnection db = new MySqlConnection(conn); // membuat koneksi ke database
                db.Open(); // membuka koneksi ke database
                MySqlCommand cmd = db.CreateCommand(); // membuat command untuk koneksi
                string sql = "select password from logger where username = '" + usernm + "'"; // query dimana hanya akan men-select data dengan username tertentu
                cmd.CommandText = sql; // memasukan query ke dalam koneksi
                MySqlDataReader reader = cmd.ExecuteReader(); // mengeksekusi query dan menampung data
                while (reader.Read()) // ketika reader masih dapat membaca
                {
                    if (reader.GetString(0) == passwd) // mengecek apakah password yang dimasukan sama dengan yang ada didatabase, jika ya variabel success akan diberi nilai true
                    {
                        Success = true;
                    }
                }
                reader.Close(); // menutup reader
                db.Close(); // menutup koneksi
            }
            catch (ArgumentOutOfRangeException m) // untuk menghindari error dibuat dengan try catch
            {
                MessageBox.Show("Data Masih Kosong!\nMasukkan data lebih dulu", "Pesan");
                Console.Write(m);
            }
            catch (MySqlException m)
            {
                MessageBox.Show("Koneksi database masih salah!", "Pesan");
                Console.Write(m);
            }
            return Success; // mengembalikan nilai boolean
        }

 
Gambar 2
Setelah login anda akan dihadapkan dengan form untuk memasukan data. Anda dapat mengisi kotak – kotak sesuai dengan kriteria yang ditentukan. Untuk melihat data yang sudah berada dalam database anda dapat mengklik tombol View Current Log atau tombol Logout untuk keluar.
        private void masukanData() {
            // id transaksi akan digenerate secara otomatis
            // berisi tahun, bulan, tanggal, jam, menit, detik, milidetik, dengan menambahkan huruf t untuk transaksi didepan sehingga tidak ada yang sama dan cukup efektif
            String id = "t" + DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString() + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() +
            DateTime.Now.Second.ToString() + DateTime.Now.Millisecond.ToString();
               
            //inputan textnya ditampung pada suatu variabel string untuk memudahkan proses memasukan data
            String namaPengirim = "" + txtNamaPengirim.Text;
            String NIP = "" + txtNIP.Text;
            String alamatPengirim = "" + txtAlamatPengirim.Text;
            String telpPengirim = "" + txtTelpPengirim.Text;
            String posPengirim = "" + txtPOSPengirim.Text;

            String namaPenerima = "" + txtNamaPenerima.Text;
            String alamatPenerima = "" + txtAlamatPenerima.Text;
            String telpPenerima = "" + txtTelpPenerima.Text;
            String posPenerima = "" + txtPOSPenerima.Text;

            String merkMotor = "" + cmbMerekMotor.SelectedItem.ToString();
            String typeMotor = "" + txtTypeMotor.Text;
            String platMotor = "" + txtPlatMotor.Text;
           
            try
            {
                MySqlConnection db = new MySqlConnection(conn); // membuat koneksi ke database
                db.Open(); // membuka koneksi ke database
                MySqlCommand cmd = db.CreateCommand(); // membuat perintah ke koneksi
                // tiap tabel dibedakan variabel querynya sehingga meminimalkan kesalahan
                string query = "insert into pengirim values('" + id + "', '" + NIP + "', '" + namaPengirim + "', '" + alamatPengirim + "', '" + telpPengirim + "', '" + posPengirim + "')";
                string query2 = "insert into penerima values('" + id + "', '" + namaPenerima + "', '" + alamatPenerima + "', '" + telpPenerima + "', '" + posPenerima + "')";
                string query3 = "insert into motor values('" + id + "', '" + merkMotor + "', '" + typeMotor + "', '" + platMotor + "')";
                cmd.CommandText = query; // mengisi query ke command
                MySqlDataAdapter adapter = new MySqlDataAdapter(query, conn); // membuat adapter dari query dan connection
                cmd.ExecuteNonQuery(); // mengeksekusi perintah di command

                cmd.CommandText = query2; // merubah query di command
                adapter = new MySqlDataAdapter(query, conn); // merubah adapter
                cmd.ExecuteNonQuery(); // mengeksekusi perintah

                cmd.CommandText = query3; // merubah lagi query di command
                adapter = new MySqlDataAdapter(query, conn); // merubah isi adapter
                cmd.ExecuteNonQuery(); // mengeksekusi kembali

                db.Close(); // menutup koneksi database
                MessageBox.Show("Data Insert Completed", "Done"); // memberikan tanda bahwa proses terlaksana dengan baik
            }
            catch (ArgumentOutOfRangeException)
            {
                MessageBox.Show("Data Masih Kosong!\nMasukkan data lebih dulu");
            }
            catch (MySqlException)
            {
                MessageBox.Show("Koneksi database masih salah!");
            }
        }

Gambar  3
Setelah tombol next di aktifkan proses penyimpana data akan berjalan dan bila sudah selesai akan menampilkan Pesan seperti Gambar 3.
Gambar  4
Terdapat 3 mode yang ada dalam form Gambar 4, View, Update, Delete, yang masing masing mode akan merubah Text dan fungsi dari tombol kanan bawah. Di dalam view mode tombol akan menampilkan data / binding, dalam mode update tombol akan mengupdate data yang telah di select. Cara select data adalah dengan mengklik rowhead / kepala baris dari tabel (yang ada tanda } ) data akan kemudian dipindah ke dapala text box yang disediakan untuk dirubah. Dalam mode delete tombol akan menghapus data yang telah di select. Untuk merubah mode anda hanya dapat mengeklik tombol mode yang ada di pojok kiri atas.

Gambar  5
Gambar 5 menunjukan data yang telah diselect, berikut potongan kode untuk mengambil data dari database.
        public void binding()
        {
            try
            {
                int max = 0;
                MySqlConnection db = new MySqlConnection(conn); // membuat koneksi
                db.Open(); // membuka koneksi
                MySqlCommand command = db.CreateCommand(); // membuat perintah koneksi
                string query = "select count(id) from pengirim"; // membuat query untuk mengerahui jumlah data
                command.CommandText = query; // memasukan query ke dalam perintah koneksi
                MySqlDataReader reader1 = command.ExecuteReader(); // mengeksekusi perintah
                while (reader1.Read())
                {
                    max = Convert.ToInt16(reader1.GetValue(0)); // menampung jumlah data ke var max
                }
                db.Close(); // menutup koneksi
                dataGridView1.Rows.Clear(); // mengosongkan jumlah baris di dataGridView1
                dataGridView1.Rows.Add(max); // membuat baris sesuai dengan jumlah data
                int i = 0;
                db.Open(); // membuka koneksi
                MySqlCommand secCommand = db.CreateCommand(); // membuat perintah koneksi
                string secQuery = "select * from pengirim"; // membuat query tabel pengirim
                secCommand.CommandText = secQuery; // memasukan query ke perintah koneksi
                MySqlDataReader reader2 = secCommand.ExecuteReader(); // mengeksekusi koneksi
                while (reader2.Read())
                {
                    // memasukan data sesuai nomor kolomnya
                    dataGridView1.Rows[i].Cells[0].Value = reader2.GetString(0);
                    dataGridView1.Rows[i].Cells[1].Value = reader2.GetString(2);
                    dataGridView1.Rows[i].Cells[2].Value = reader2.GetString(1);
                    dataGridView1.Rows[i].Cells[3].Value = reader2.GetString(3);
                    dataGridView1.Rows[i].Cells[4].Value = reader2.GetString(4);
                    dataGridView1.Rows[i].Cells[5].Value = reader2.GetString(5);
                    i++; // agar baris berganti otomatis
                }
                reader2.Close(); // menutup reader
                i = 0; // mengosongkan var i
                secCommand = db.CreateCommand(); // membuat perintah koneksi
                secQuery = "select * from penerima"; // membuat query tabel penerima
                secCommand.CommandText = secQuery; // memasukan query ke perintah koneksi
                reader2 = secCommand.ExecuteReader(); // mengeksekusi koneksi
                while (reader2.Read())
                {
                    // memasukan data sesuai nomor kolomnya
                    dataGridView1.Rows[i].Cells[6].Value = reader2.GetString(1);
                    dataGridView1.Rows[i].Cells[7].Value = reader2.GetString(2);
                    dataGridView1.Rows[i].Cells[8].Value = reader2.GetString(4);
                    dataGridView1.Rows[i].Cells[9].Value = reader2.GetString(3);
                    i++; // agar baris berganti otomatis
                }
                reader2.Close(); // menutup readers
                i = 0; // mengosongkan var i
                secCommand = db.CreateCommand(); // membuat perintah koneksi
                secQuery = "select * from motor"; // membuat query tabel motor
                secCommand.CommandText = secQuery; // memasukan query ke perintah koneksi
                reader2 = secCommand.ExecuteReader(); // mengeksekusi koneksi
                while (reader2.Read())
                {
                    // memasukan data sesuai nomor kolomnya
                    dataGridView1.Rows[i].Cells[10].Value = reader2.GetString(1);
                    dataGridView1.Rows[i].Cells[11].Value = reader2.GetString(2);
                    dataGridView1.Rows[i].Cells[12].Value = reader2.GetString(3);
                    i++; // agar baris berganti otomatis
                }
                reader2.Close(); // menutup readers
                db.Close(); // menutup koneksi
            }
            catch (ArgumentOutOfRangeException m) // memakai trycatch untuk meminimalisir kesalahan dan mengoptimalkan penanganan error
            {
                MessageBox.Show("Database Kosong!");
                Console.Write(m);
            }
            catch (MySqlException m)
            {
                MessageBox.Show("Koneksi database masih salah!");
                Console.Write(m);
            }
            catch (Exception m)
            {
                MessageBox.Show("Error");
                Console.Write(m);
            }

            //untuk menghapus inputan text dan kembali ke defaultnya.
            txtAlamatPenerima.Text = "Alamat Penerima";
            txtAlamatPengirim.Text = "Alamat Pengirim";
            txtNamaPenerima.Text = "Nama Penerima";
            txtNamaPengirim.Text = "Nama Pengirim";
            txtNIP.Text = "Nomor Identitas Pengirim";
            txtPlatMotor.Text = "Plat Motor";
            txtPOSPenerima.Text = "Kode Pos Penerima";
            txtPOSPengirim.Text = "Kode Pos Pengirim";
            txtTelpPenerima.Text = "Nomor Telp Penerima";
            txtTelpPengirim.Text = "Nomor Telp Pengirim";
            txtTypeMotor.Text = "Type Motor";
            txtMerkMotor.Text = "Merk Motor";
        }

Gambar 6
Setelah anda mengaktifkan tombol save atau delete atau go akan muncul Kotak pesan apakah proses manghapus, update, atau binding berhasil atau gagal.
        private void deleteData(String id)
        {
            try
            {
                MySqlConnection db = new MySqlConnection(conn); // membuat koneksi ke database
                db.Open(); // membuka koneksi ke database
                MySqlCommand cmd = db.CreateCommand(); // membuat perintah ke koneksi
                // tiap tabel dibedakan querynya
                string query = "delete from pengirim where id='" + id + "'";
                string query2 = "delete from penerima where id='" + id + "'";
                string query3 = "delete from motor where id='" + id + "'";
                cmd.CommandText = query; // mengisi query ke perintah
                MySqlDataAdapter adapter = new MySqlDataAdapter(query, conn);
                cmd.ExecuteNonQuery();

                cmd.CommandText = query2;
                adapter = new MySqlDataAdapter(query, conn);
                cmd.ExecuteNonQuery();

                cmd.CommandText = query3;
                adapter = new MySqlDataAdapter(query, conn);
                cmd.ExecuteNonQuery();

                db.Close(); // menutup koneksi database
                MessageBox.Show("Data Deleting Completed", "Done");
            }
            catch (ArgumentOutOfRangeException)
            {
                MessageBox.Show("Database Kosong!");
            }
            catch (MySqlException)
            {
                MessageBox.Show("Koneksi database masih salah!");
            }
        }

        private void updateData(String id)
        {
            //inputan textnya ditampung pada suatu variabel tertentu
            String namaPengirim = "" + txtNamaPengirim.Text;
            String NIP = "" + txtNIP.Text;
            String alamatPengirim = "" + txtAlamatPengirim.Text;
            String telpPengirim = "" + txtTelpPengirim.Text;
            String posPengirim = "" + txtPOSPengirim.Text;

            String namaPenerima = "" + txtNamaPenerima.Text;
            String alamatPenerima = "" + txtAlamatPenerima.Text;
            String telpPenerima = "" + txtTelpPenerima.Text;
            String posPenerima = "" + txtPOSPenerima.Text;

            String merkMotor = "" + txtMerkMotor.Text;
            String typeMotor = "" + txtTypeMotor.Text;
            String platMotor = "" + txtPlatMotor.Text;

            try
            {
                MySqlConnection db = new MySqlConnection(conn); // membuat koneksi ke database
                db.Open(); // membuka koneksi ke database
                MySqlCommand cmd = db.CreateCommand(); // membuat perintah ke koneksi
                // tiap tabel dibedakan querynya
                string query = "update pengirim set nip='" + NIP + "', nama='" + namaPengirim + "', alamat='" + alamatPengirim + "', telp='" + telpPengirim + "', kodepos='" + posPengirim + "' where id='" + id + "'";
                string query2 = "update penerima set nama='" + namaPenerima + "', alamat='" + alamatPenerima + "', telp='" + telpPenerima + "', kodepos='" + posPenerima + "' where id='" + id + "'";
                string query3 = "update motor set merek='" + merkMotor + "', type='" + typeMotor + "', plat='" + platMotor + "' where id='" + id + "'";
                cmd.CommandText = query; // mengisi query ke perintah
                MySqlDataAdapter adapter = new MySqlDataAdapter(query, conn);
                cmd.ExecuteNonQuery();

                cmd.CommandText = query2;
                adapter = new MySqlDataAdapter(query, conn);
                cmd.ExecuteNonQuery();

                cmd.CommandText = query3;
                adapter = new MySqlDataAdapter(query, conn);
                cmd.ExecuteNonQuery();

                db.Close(); // menutup koneksi database
                MessageBox.Show("Data Saving Completed", "Done");
            }
            catch (ArgumentOutOfRangeException)
            {
                MessageBox.Show("Database Kosong!");
            }
            catch (MySqlException)
            {
                MessageBox.Show("Koneksi database masih salah!");
            }
        }

Kesimpulan
Dengan adanya aplikasi kami ini kantor jasa pengiriman sepeda motor akan sangat terbantu dalam memanajemen data pengiriman selama jangka waktu tertentu, tidak akan ada kesalahan pengiriman (karena salah baca dikarenakan tulisan tangan tidak jelas), lebih memudahkan untuk mencari dan mengupdate sebuah data. Melihat data akan lebih cepat, dan efisien. Untuk Mengunduh / Download anda bisa buka di sini : Server Mediafire

Tidak ada komentar:

Posting Komentar