Sabtu, 23 April 2011

Program Absensi : Client Server

Program ini gue buat kemarin sbagai tugas praktikum Alpro. . .ya sekalian dibikin program client server. . .(smbil belajar :D)
(yah sekedar cerita sja) Awal idenya udah mulai dlu seblum gue mengenyam bangku kuliah. . . akhirnya terwujud juga. . .mulai dri yg console base smpek yg gni nih. .

Lanjut : dalam program absensi ini, krena gue pke pemrograman client server (meki belum bagus berantakan), gue mbikin 2 program yg berbeda, yg 1 untuk si server dlam kasus ini dosen yg akan mengajar n yg ke-2 untuk client, yaitu mahasiswa yang absen. .knpa gk dibuat satu saja, dg privilege?? (terserah gue donk,gue yg mbikin :D) ya sebenernya kemarin smpet berfikir gitu, tpi klo dibikin gitu, bisa2 adminnya kebongkar ya absen mahasiswa bisa keisi semua dunk. . .mka dri itu untuk programnya gue pisahin. . .biar pra tngan2 kreatif tidak melakukan kretifitasnya!!
Dalam program ini konsepnya gini User Interface -- Business Logic -- Database. Dalam coretan ini gue cuma mosting beberapa hal yg gue anggap perlu aja untuk selebihnya bisa mbaca di laporan gue!! :D hehehe

Program absensi yg ini bisa menghasilkan laporan alias di-save dimana aja dengan format xml. Nah untuk programnya dri desain databasenya gue buat kyak gni :
N untuk class diagramnya (class aplication) gue buat seperti ini :

(masih belum menggunakan konsep modulariti, krna wktu mbikin ini belum dapat ilmunya. hehehe)
Nah dari class aplication diatas, kelihatan ada 2 kelompok kelas yg berbeda, dari keduanya terdapat persamaan yaitu terdiri dari 3 class, hanya saja fungsi dari class tersebut berbeda sedikit antara si server dan si client. Berikut sekedar samplenya :

class koneksi : digunakan untuk membuka n menutup koneksi kedatabase
string alamat = "server=localhost; database=masterabsensi; uid=root; pwd=''";
public MySqlConnection koneksi;

//membuka koneksi
public void Buka()
{
  koneksi = new MySqlConnection(alamat);
  koneksi.Open();
}

//menutup koneksi
public void Tutup()
{
  koneksi = new MySqlConnection(alamat);
  koneksi.Close();
}

class baca : digunakan untuk mengambil data dari database yg dikirimkan ke form
MySqlCommand comand;
KONEKSI clasKoneksi;
MySqlDataAdapter adapter;
string sql;
DataTable tabel;

//membaca semua field pada database dalam parameter 
public DataTable BacaSemua(string db)
{
  clasKoneksi = new KONEKSI();
  sql = string.Format("call bacaSemua('{0}');",db);
  tabel = new DataTable();
  
  try
  {
    clasKoneksi.Buka();
    comand = new MySqlCommand(sql,clasKoneksi.koneksi);
    adapter = new MySqlDataAdapter(comand);
    comand.ExecuteNonQuery();
    adapter.Fill(tabel);
  }
  catch (Exception)
  {}
  clasKoneksi.Tutup();
  return tabel;
}

//membaca beberapa field yg diinginkan
public DataTable BacaKondisi(string db,string kolom,string kondisi)
{
  clasKoneksi = new KONEKSI();
  sql = string.Format("select {0} from {1} where {2}",kolom,db,kondisi);
  tabel = new DataTable();
  try
  {
   clasKoneksi.Buka();
   comand = new MySqlCommand(sql,clasKoneksi.koneksi);
   adapter = new MySqlDataAdapter(comand);
   comand.ExecuteNonQuery();
   adapter.Fill(tabel);
  }
  catch (Exception)
  {}
  clasKoneksi.Tutup();
  return tabel;
}

//membaca dari beberapa tabel yg berbeda, hanya untuk absensi server
public DataTable BacaJoin(string mk, string kelas)
{
  clasKoneksi = new KONEKSI();
  sql = string.Format("call joinServer('{0}','{1}')",mk,kelas);
  tabel = new DataTable();
   
  try
  {
 clasKoneksi.Buka();
 comand = new MySqlCommand(sql,clasKoneksi.koneksi);
 adapter = new MySqlDataAdapter(comand);
 comand.ExecuteNonQuery();
        adapter.Fill(tabel);
  }
  catch (Exception)
  {}
  clasKoneksi.Tutup();
  return tabel;
}

class kirim : digunakan untuk mengirim data dari form ke database
MySqlCommand comand;
string sql;

//memasukkan data ke tabel
public void InsertData(string namaDb, string namaKol, string nilai){
 KONEKSI konek = new KONEKSI();
 konek.Buka();
 sql = string.Format("insert into {0} ({1}) values({2})",namaDb, namaKol, nilai);
 try {
   comand = new MySqlCommand(sql, konek.koneksi);
   comand.ExecuteNonQuery();
 } catch (Exception) {}
 konek.Tutup();
}


//mengupdate data
public void UpdateData(string namaDb, string kolomNilai, string kondisi){
  KONEKSI konek = new KONEKSI();
  konek.Buka();
  sql = string.Format("update {0} set {1} where {2}", namaDb,kolomNilai,kondisi);
  try {
 comand = new MySqlCommand(sql, konek.koneksi);
 comand.ExecuteNonQuery();
  } catch (Exception) {}
  konek.Tutup();
}

//menyimpan laporan kedalam format xml
public void KirimXml(string namaFile, DataTable tabel)
{
  XmlWriterSettings setting = new XmlWriterSettings();
  setting.Indent = true;
  
  XmlWriter writer = XmlWriter.Create(namaFile,setting);
  writer.WriteStartDocument();
  writer.WriteStartElement("AbsensiMahasiswa");
  for (int i = 1;i < tabel.Rows.Count;i++)
  {
 writer.WriteStartElement("row");
 for (int j = 0;j < tabel.Columns.Count;j++)
 {
 writer.WriteElementString(tabel.Rows[0][j].ToString(),tabel.Rows[i][j].ToString());
 }
 writer.WriteEndElement();
  }
  writer.WriteEndElement();
  writer.WriteEndDocument();
  writer.Flush();
  writer.Close();
  MessageBox.Show("Data Berhasil Disimpan");
}
diatas merupakan contoh class-nya yg keterangannya tidak gue msukkin kedalam laporan. ya cukup disini saja,untuk masalah event2 dan stored procedure-nya bisa mbaca laporannya atau lngsung programnya! untuk laporannya bisa didownload disini! untuk program dan databasenya bisa didownload disini!
bagi yg berminat bisa dikembangkan jauh lebih sempurna. .
untuk sran n kritiknya mkasih. . ^_^

6 comments:

mantap sob,.. sering sering aw koyog ngene........

Thxu bro. . .
insya gue lnjutkan. .hehehe

bro bisa bantuin skripsi ku...hehehe
mahasiswa 07

wah bos,ilmu gue msh kurang nh,maklum adek tngkat. . .hehehe

ji,,,,kari pelit lak ngeke'i gambar,,,,,kari cilik,,,,,g iso di zoom in...
kari tego a'

wahhh makasih mas buat ilmu yg di share :)

Posting Komentar

Twitter Delicious Facebook Digg Stumbleupon Favorites More