45
BAB IV IMPLEMENTASI SISTEM
4.1 Implementasi Subsistem Manajemen Data
Langkah pertama yang dilakukan dalam implementasi manajemen data adalah membuat database. Database dibuat dengan nama
“lanjoet” yang dibuat menggunakan MYSQL melalui phpmyadmin sebagai aplikasi
pengolahan query. Berikut ini adalah langkah-langkah pembuatan database-nya :
1. Membuat user baru dengan nama username root dan password root,
selajutnya membuat database dengan nama lanjoet. 2.
Langkah berikutnya adalah membuat tabel-tabel yang akan digunakan dalam sistem. Maka diperlukan perintah create untuk membuat tabel-
tabel tersebut. Berikut ini adalah implementasi query:
a. Implementasi tabel menu
Query 4.1 create data menu PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
46
b. Implementasi tabel batasan
Query 4.2 create data batasan
4.2 Implementasi Subsistem Manajemen Model
1. Source Code Button Tambah dan Edit Menu
publicpartialclass TambahMenu
: Form
{ static
MySqlConnection con =
new MySqlConnection
datasource=localhost;database=lanjoet;port=3306;username=roo t;password=
; MySqlCommand
cmd; int
ID; publicvoid
ExecuteQuery string
q {
try {
if con.State ==
ConnectionState .Closed
{ con.Open;
} cmd =
new MySqlCommand
q, con; cmd.ExecuteNonQuery;
} catch
Exception ex
{ MessageBox
.Showex.Message; }
finally {
if con.State ==
ConnectionState .Open
{ con.Close;
} }
}
public TambahMenu
string x_ID
{ InitializeComponent;
if x_ID =
Kalau 0 berarti Tambah Menu, kalau bukan 0 berarti Edit Menu {
ID = Int32
.Parsex_ID; EditMenu;
} }
47
privatevoid EditMenu
{ cmd = con.CreateCommand;
cmd.CommandText = SELECT FROM menu WHERE id=
+ ID + ;
con.Open; MySqlDataReader
read_menu = cmd.ExecuteReader; while
read_menu.Read {
txMenu_Nama.Text = read_menu[1].ToString; txMenu_HargaBahanBaku.Text = read_menu[2].ToString;
txMenu_BiayaJasa.Text = read_menu[3].ToString; txMenu_BiayaTambahan.Text = read_menu[4].ToString;
txMenu_LamaPembuatan.Text = read_menu[5].ToString; txMenu_BatasMaksimal.Text = read_menu[6].ToString;
txMenu_HargaJual.Text = read_menu[7].ToString; }
con.Close; }
privatevoid btnSimpanMenu_Click
object sender,
EventArgs e
{ string
x_nama = -
; string
x_harga_bahan_baku = ;
string x_biaya_jasa =
; string
x_biaya_tambahan = ;
string x_lama_pembuatan =
; string
x_batas_maksimal = ;
string x_harga_jual =
; x_nama = txMenu_Nama.Text;
x_harga_bahan_baku = txMenu_HargaBahanBaku.Text; x_biaya_jasa = txMenu_BiayaJasa.Text;
x_biaya_tambahan = txMenu_BiayaTambahan.Text; x_lama_pembuatan = txMenu_LamaPembuatan.Text;
x_batas_maksimal = txMenu_BatasMaksimal.Text; x_harga_jual = txMenu_HargaJual.Text;
if ID == 0
{ string
q = INSERT INTO menu nama, harga_bahan_baku, biaya_jasa,
biaya_tambahan, lama_pembuatan, batas_maksimal, harga_jual +
VALUES + x_nama +
, + x_harga_bahan_baku +
, + x_biaya_jasa +
, + x_biaya_tambahan +
, + x_lama_pembuatan +
, + x_batas_maksimal +
, + x_harga_jual +
; ExecuteQueryq;
} else
{ string
q = UPDATE menu SET nama =
+ x_nama + , harga_bahan_baku =
+ x_harga_bahan_baku +
, biaya_jasa = + x_biaya_jasa +
, biaya_tambahan = + x_biaya_tambahan +
, lama_pembuatan = + x_lama_pembuatan +
, batas_maksimal =
+ x_batas_maksimal + , harga_jual =
+ x_harga_jual + WHERE id =
+ ID + ;
ExecuteQueryq; }
MessageBox .Show
Menu + x_nama +
berhasil disimpan ;
Beranda f =
new Beranda
; this
.Hide; f.ShowDialog;
this .Close;
} privatevoid
btnKembali_Click object
sender, EventArgs
e
48
{ Beranda
f = new
Beranda ;
this .Hide;
f.ShowDialog; this
.Close; }
privatevoid CEK_AngkaSaja
KeyPressEventArgs e
{ string
karakter = 0123456789
; if
karakter.IndexOfe.KeyChar = 0 || e.KeyChar == char
Keys .Back
{ e.Handled =
false ;
} else
{ MessageBox
.Show Inputan harus berupa angka
; e.Handled =
true ;
} }
privatevoid txMenu_HargaBahanBaku_KeyPress
object sender,
KeyPressEventArgs e
{ CEK_AngkaSajae;
}
privatevoid txMenu_BiayaJasa_KeyPress
object sender,
KeyPressEventArgs e
{ CEK_AngkaSajae;
}
privatevoid txMenu_BiayaTambahan_KeyPress
object sender,
KeyPressEventArgs e
{ CEK_AngkaSajae;
}
privatevoid txMenu_LamaPembuatan_KeyPress
object sender,
KeyPressEventArgs e
{ CEK_AngkaSajae;
}
privatevoid txMenu_BatasMaksimal_KeyPress
object sender,
KeyPressEventArgs e
{ CEK_AngkaSajae;
}
privatevoid txMenu_HargaJual_KeyPress
object sender,
KeyPressEventArgs e
{ CEK_AngkaSajae;
}
privatevoid TambahMenu_FormClosing
object sender,
FormClosingEventArgs e
{ e.Cancel =
true ;
} }
privatevoid btnTambahMenu_Click
object sender,
EventArgs e
{ TambahMenu
f = new
TambahMenu ;
this .Hide;
f.ShowDialog;
49
this .Close;
} privatevoid
btnEdit_Click object
sender, EventArgs
e {
if txNomorHapus.Text ==
{ MessageBox
.Show Anda belum memasukkan ID Menu yang akan diedit
; }
else {
cmd = con.CreateCommand; cmd.CommandText =
SELECT COUNT FROM menu WHERE id= +
txNomorHapus.Text + ;
con.Open; int
count = Int32
.Parsecmd.ExecuteScalar.ToString; con.Close;
if count 0
{ TambahMenu
f = new
TambahMenu txNomorHapus.Text;
this .Hide;
f.ShowDialog; this
.Close; }
else {
MessageBox .Show
Data menu dengan ID= + txNomorHapus.Text +
tidak ditemukan
; }
} }
2. Source Code Button Batasan
publicpartialclass Batasan
: Form
{ static
MySqlConnection con =
new MySqlConnection
datasource=localhost;database=lanjoet;port=3306;username=roo t;password=
; static
MySqlCommand cmd = con.CreateCommand;
publicvoid ExecuteQuery
string q
{ try
{ if
con.State == ConnectionState
.Closed {
con.Open; }
cmd = new
MySqlCommand q, con;
cmd.ExecuteNonQuery; }
catch Exception
ex {
MessageBox .Showex.Message;
} finally
50
{ if
con.State == ConnectionState
.Open {
con.Close; }
} }
public Batasan
{ InitializeComponent;
EditBatasan; }
privatevoid EditBatasan
{ cmd = con.CreateCommand;
cmd.CommandText = SELECT FROM batasan_lain
; con.Open;
MySqlDataReader read_menu = cmd.ExecuteReader;
while read_menu.Read
{ txBatasan_JamKerja.Text = read_menu[0].ToString;
txBatasan_BiayaAnggaran.Text = read_menu[1].ToString; }
con.Close; }
privatevoid btnSimpanBatasan_Click
object sender,
EventArgs e
{ string
x_jam_kerja = ;
string x_biaya_anggaran =
; x_jam_kerja = txBatasan_JamKerja.Text;
x_biaya_anggaran = txBatasan_BiayaAnggaran.Text; ExecuteQuery
TRUNCATE TABLE batasan_lain ;
string q1 =
INSERT INTO batasan_lain jam_kerja, biaya_anggaran +
VALUES + x_jam_kerja +
, + x_biaya_anggaran +
; ExecuteQueryq1;
MessageBox .Show
Batasan tambahan berhasil disimpan ;
this .Close;
} privatevoid
btnKembali_Click object
sender, EventArgs
e {
Beranda f =
new Beranda
; this
.Hide; f.ShowDialog;
this .Close;
} privatevoid
CEK_AngkaSaja KeyPressEventArgs
e {
string karakter =
0123456789 ;
if karakter.IndexOfe.KeyChar = 0 || e.KeyChar ==
char Keys
.Back {
e.Handled = false
; }
else {
MessageBox .Show
Inputan harus berupa angka ;
e.Handled = true
;
51
} }
privatevoid txBatasan_JamKerja_KeyPress
object sender,
KeyPressEventArgs e
{ CEK_AngkaSajae;
}
privatevoid txBatasan_BiayaAnggaran_KeyPress
object sender,
KeyPressEventArgs e
{ CEK_AngkaSajae;
}
privatevoid Batasan_FormClosing
object sender,
FormClosingEventArgs e
{ e.Cancel =
true ;
} }
privatevoid btnBatasan_Click
object sender,
EventArgs e
{ Batasan
f = new
Batasan ;
this .Hide;
f.ShowDialog; this
.Close; }
3. Source Code ButtonHapus
privatevoid btnHapusSatu_Click
object sender,
EventArgs e
{ DialogResult
dr = MessageBox
.Show Apakah Anda yakin akan menghapus menu dengan
ID= + txNomorHapus.Text +
? ,
, MessageBoxButtons
.YesNo, MessageBoxIcon
.Warning; if
dr == DialogResult
.Yes {
ExecuteQuery DELETE FROM menu WHERE id=
+ txNomorHapus.Text + ;
MessageBox .Show
Menu dengan ID= + txNomorHapus.Text +
berhasil dihapus ;
} LoadData;
}
privatevoid btnHapusSemua_Click
object sender,
EventArgs e
{ DialogResult
dr = MessageBox
.Show Apakah Anda yakin akan menghapus semua menu
? ,
, MessageBoxButtons
.YesNo, MessageBoxIcon
.Warning; if
dr == DialogResult
.Yes {
ExecuteQuery DELETE FROM menu
; MessageBox
.Show Semua menu berhasil dihapus
; }
LoadData; }
52
publicvoid LoadData
{ dgv.Rows.Clear;
cmd = con.CreateCommand; cmd.CommandText =
SELECT id, nama, harga_jual FROM menu ;
con.Open; MySqlDataReader
read_menu = cmd.ExecuteReader; while
read_menu.Read {
string d_id = read_menu[0].ToString;
string d_nama = read_menu[1].ToString;
string d_harga = read_menu[2].ToString;
d_harga = ToRupiah Int32
.Parsed_harga; string
[] row = newstring
[] {d_id, d_nama, d_harga}; dgv.Rows.Addrow;
} con.Close;
}
4. Source Code Button Cara Penyelesaian
publicpartialclass Perhitungan
: Form
{ static
MySqlConnection con =
new MySqlConnection
datasource=localhost;database=lanjoet;port=3306;username=roo t;password=
; MySqlCommand
cmd; publicvoid
ExecuteQuery string
q {
try {
if con.State ==
ConnectionState .Closed
{ con.Open;
} cmd =
new MySqlCommand
q, con; cmd.ExecuteNonQuery;
} catch
Exception ex
{ MessageBox
.Showex.Message; }
finally {
if con.State ==
ConnectionState .Open
{ con.Close;
} }
}
public Perhitungan
{ InitializeComponent;
THE_SUPER_SIMPLEX; }
53
int jmlVar, jmlBts, ITR, cjminZ_TERPILIH, rasio_TERPILIH;
int [] indexRasioYangTerpilih, nilaiCjMinZjYangTerpilih;
double angkaKunci;
double [, ,] nilai;
double [] Z, cjminZ, rasio, namaAsal, namaTujuan;
publicstaticdouble [] hasilKomposisi;
void THE_SUPER_SIMPLEX
{ Tentukan jumlah kolom pada tabel iterasi awal
Jumlah kolomnya sesuai dengan jumlah menu yang diinputkan cmd = con.CreateCommand;
cmd.CommandText = SELECT COUNT FROM menu
; con.Open;
jmlVar = Int32
.Parsecmd.ExecuteScalar.ToString; con.Close;
Tentukan jumlah baris pada tabel iterasi awal Jumlah barisnya sesuai dengan jumlah batasan ditambah batasan produksi
maksimal sejumlah menu jmlBts = 2 + jmlVar;
tx_Proses.Text = Jumlah Menu=
+ jmlVar + \nJumlah Batasan=
+ jmlBts;
ITR = 0; nilai =
newdouble [jmlVar + 2, jmlBts + 1, jmlVar + jmlBts + 2];
Z = newdouble
[jmlVar + jmlBts + 1]; cjminZ =
newdouble [jmlVar + jmlBts];
rasio = newdouble
[jmlBts]; hasilKomposisi =
newdouble [jmlVar];
namaAsal = newdouble
[jmlVar+jmlBts+2]; for
int I = 0; I jmlVar + jmlBts; I++
{ namaAsal[I] = I + 1;
} namaTujuan =
newdouble [jmlBts+1];
for int
I = 0; I jmlBts; I++ {
namaTujuan[I] = 0; }
cjminZ_TERPILIH = 0; rasio_TERPILIH = 0;
angkaKunci = 0; indexRasioYangTerpilih =
newint [jmlBts + 1];
nilaiCjMinZjYangTerpilih = newint
[jmlBts + 1]; inputKasusMaksimasi;
inputBatasan; hitung_Zj_cjminZj_rasio;
cetakIterasi0;
int i = 1;
while cjminZ.Max 0
{ buatIterasiBaru;
54
hitung_Zj_cjminZj_rasio; cetakIterasii;
i++; }
int J = 0;
for int
I = 0; I namaTujuan.Length; I++ {
tx_Proses.Text += namaTujuan[I] + : + Math.Roundnilai[i-1, I, 1] + \n; for
int K = 3; K 3 + jmlVar; K++ {
if namaTujuan[I] == K {
hasilKomposisi[J] = Math
.Roundnilai[i - 1, I, 1]; J++;
} }
} tx_Proses.Text +=
Perhitungan Keuntungan Total\n ;
tx_Proses.Text += Jumlah menu diproduksi dikalikan keuntungan tiap
menu\n\n ;
cmd = con.CreateCommand; cmd.CommandText =
SELECT nama, harga_jual - harga_bahan_baku + biaya_jasa + biaya_tambahan FROM menu
; con.Open;
MySqlDataReader read_menu = cmd.ExecuteReader;
int L = 0;
double TOT = 0;
while read_menu.Read
{ string
d_nama = read_menu[0].ToString; double
tot = 0; tot = hasilKomposisi[L]
Double .Parseread_menu[1].ToString;
TOT += tot; tx_Proses.Text +=
+ d_nama + :
+ hasilKomposisi[L] + x
+ read_menu[1].ToString + =
+ ToRupiahtot + \n
; L++;
} con.Close;
tx_Proses.Text += \nTotal Keuntungan =
+ ToRupiahTOT + \n
; }
publicstring ToRupiah
double angka
{ return
String .Format
CultureInfo .CreateSpecificCulture
id-ID ,
Rp{0:N} ,
angka; }
void inputKasusMaksimasi
{ Hitung keuntungan tiap menu
int n = jmlVar;
string [] keuntungan =
newstring [n];
int x = 0;
cmd = con.CreateCommand; cmd.CommandText =
SELECT harga_jual - harga_bahan_baku + biaya_jasa + biaya_tambahan FROM menu
; con.Open;
MySqlDataReader read = cmd.ExecuteReader;
while read.Read
{ keuntungan[x] = read[0].ToString;
55
x++; }
con.Close;
Tetapkan nilai keuntungan sebagai cj for
int j = 2; j jmlVar + 2; j++
{ nilai[0, 0, j] =
Int32 .Parsekeuntungan[j - 2];
} Nilai cj yang lainnya diisi 0
for int
j = jmlVar + 2; j jmlVar + jmlBts + 2; j++ {
nilai[0, 0, j] = 0; }
}
void inputBatasan
{ Ambil nilai batasan biaya dan waktu
cmd = con.CreateCommand; cmd.CommandText =
SELECT biaya_anggaran, jam_kerja FROM batasan_lain
; con.Open;
MySqlDataReader read1 = cmd.ExecuteReader;
while read1.Read
{ nilai[ITR, 1, 1] =
Int32 .Parseread1[0].ToString;
nilai[ITR, 2, 1] = Int32
.Parseread1[1].ToString; }
con.Close; Ambil nilai batasan jumlah produksi
cmd.CommandText = SELECT batas_maksimal FROM menu
; con.Open;
MySqlDataReader read2 = cmd.ExecuteReader;
int a = 3;
while read2.Read
{ nilai[ITR, a, 1] =
Int32 .Parseread2[0].ToString;
a++; }
con.Close;
Ambil nilai batasan modal beli bahan baku cmd.CommandText =
SELECT harga_bahan_baku + biaya_tambahan FROM menu
; con.Open;
MySqlDataReader read3 = cmd.ExecuteReader;
int b = 2;
while read3.Read
{ nilai[ITR, 1, b] =
Int32 .Parseread3[0].ToString;
b++; }
con.Close;
Ambil nilai batasan waktu pembuatan cmd.CommandText =
SELECT lama_pembuatan FROM menu ;
con.Open; MySqlDataReader
read4 = cmd.ExecuteReader;
56
int c = 2;
while read4.Read
{ nilai[ITR, 2, c] =
Int32 .Parseread4[0].ToString;
c++; }
con.Close;
Tetapkan nilai 1 atau 0 untuk batas produksi maksimal for
int i = 3; i jmlBts + 1; i++
{ for
int j = 2; j jmlVar + 2; j++
{ if
j == i-1 {
nilai[ITR, i, j] = 1; }
else {
nilai[ITR, i, j] = 0; }
} }
Tetapkan nilai 1 atau 0 untuk slack for
int i = 1; i jmlBts + 1; i++
{ int
x = 0; nilai[ITR, i, 0] = nilai[ITR, 0, jmlVar + 2 + x];
x++; for
int j = jmlVar + 2; j jmlVar + jmlBts + 2; j++
{ if
j == jmlVar + i + 1 {
nilai[ITR, i, j] = 1; }
else {
nilai[ITR, i, j] = 0; }
} }
}
void hitung_Zj_cjminZj_rasio
{ namaTujuan[rasio_TERPILIH] = namaAsal[cjminZ_TERPILIH];
for int
j = 1; j jmlVar + jmlBts + 2; j++ {
Z[j - 1] = 0; for
int i = 1; i jmlBts + 1; i++
{ Z[j - 1] = Z[j - 1] + nilai[ITR, i, 0] nilai[ITR, i, j];
} }
cjminZ_TERPILIH = 0; rasio_TERPILIH = 0;
for int
j = 2; j jmlVar + jmlBts + 2; j++ {
cjminZ[j - 2] = nilai[0, 0, j] - Z[j - 1];
57
} dapatkan index dari cj-Zj terbesar
cjminZ_TERPILIH = cjminZ.ToList.IndexOfcjminZ.Max + 2; for
int i = 1; i jmlBts + 1; i++
{ if
nilai[ITR, i, cjminZ_TERPILIH] == 0 {
rasio[i - 1] = 0; }
else {
rasio[i - 1] = nilai[ITR, i, 1] nilai[ITR, i, cjminZ_TERPILIH];
} }
dapatkan index dari rasio positif terkecil double
temp_max_rasio = rasio.Max; for
int i = 1; i jmlBts + 1; i++
{ if
rasio[i - 1] 0 {
rasio[i - 1] = rasio[i - 1] - temp_max_rasio; }
else {
rasio[i - 1] = rasio[i - 1] - 0; }
} rasio_TERPILIH = rasio.ToList.IndexOfrasio.Min + 1;
indexRasioYangTerpilih[ITR] = rasio_TERPILIH; nilaiCjMinZjYangTerpilih[ITR] = cjminZ_TERPILIH;
MessageBox.Showrasio= + rasio_TERPILIH + + rasio.Min + \ncjminZj= + cjminZ_TERPILIH + + cjminZ.Max + ;
angkaKunci = nilai[ITR, rasio_TERPILIH, cjminZ_TERPILIH]; ITR++;
}
void buatIterasiBaru
{ for
int BH = 0; BH ITR; BH++
{ int
rarasio = indexRasioYangTerpilih[BH]; int
cecejemin = nilaiCjMinZjYangTerpilih[BH]; nilai[ITR, rarasio, 0] = nilai[0, 0, cecejemin];
} for
int j = 1; j jmlVar + jmlBts + 2; j++
{ nilai[ITR, rasio_TERPILIH, j] = nilai[ITR - 1, rasio_TERPILIH,
j] angkaKunci; }
for int
i = 1; i jmlBts + 1; i++ {
for int
j = 1; j jmlVar + jmlBts + 2; j++ {
if i = rasio_TERPILIH
{ nilai[ITR, i, j] =
nilai[ITR - 1, i, j] - nilai[ITR - 1, i, cjminZ_TERPILIH]
58
nilai[ITR - 1, rasio_TERPILIH, cjminZ_TERPILIH] nilai[ITR - 1, rasio_TERPILIH, j];
} }
} }
void cetakIterasi
int haha
{ tx_Proses.Text = tx_Proses.Text +
\n================================================================ ;
tx_Proses.Text = tx_Proses.Text + \nITERASI KE-
+ ITR; tx_Proses.Text = tx_Proses.Text +
\n================================================================\n ;
for int
i = 0; i jmlBts + 1; i++ {
for int
j = 0; j jmlVar + jmlBts + 2; j++ {
nilai[haha, i, j] = Math
.Roundnilai[haha, i, j], 2; tx_Proses.Text = tx_Proses.Text + nilai[haha, i, j] +
\t ;
} tx_Proses.Text = tx_Proses.Text +
Environment .NewLine;
} tx_Proses.Text = tx_Proses.Text +
================================================================\n\t ;
for int
j = 1; j jmlVar + jmlBts + 2; j++ {
Z[j - 1] = Math
.RoundZ[j - 1], 2; tx_Proses.Text = tx_Proses.Text + Z[j - 1] +
\t ;
} tx_Proses.Text = tx_Proses.Text +
Environment .NewLine +
\t\t ;
for int
j = 2; j jmlVar + jmlBts + 2; j++ {
cjminZ[j - 2] = Math
.RoundcjminZ[j - 2], 2; tx_Proses.Text = tx_Proses.Text + cjminZ[j - 2] +
\t ;
} tx_Proses.Text = tx_Proses.Text +
\n\ncj-Zj\t\t: +
cjminZ_TERPILIH + \nRasio\t\t:
+ rasio_TERPILIH + \nAngka Kunci\t:
+ angkaKunci;
tx_Proses.Text = tx_Proses.Text + \n================================================================\n\n\n
; }
}
privatevoid btnLihatPerhitungan_Click
object sender,
EventArgs e
{ cmd = con.CreateCommand;
cmd.CommandText = SELECT COUNT FROM menu
; con.Open;
int count1 =
Int32 .Parsecmd.ExecuteScalar.ToString;
con.Close; if
count1 0 {
cmd = con.CreateCommand; cmd.CommandText =
SELECT COUNT FROM batasan_lain ;
con.Open; int
count2 = Int32
.Parsecmd.ExecuteScalar.ToString; con.Close;
59
if count2 0
{ Perhitungan
f = new
Perhitungan ;
f.ShowDialog; btnLihatKomposisi.Enabled =
true ;
} else
{ MessageBox
.Show Anda belum menetapkan batasan.
; }
} else
{ MessageBox
.Show Anda belum memasukkan menu.
; }
}
5. Source Code Button Lihat Komposisi
privatevoid btnLihatKomposisi_Click
object sender,
EventArgs e
{ string
pesan = ;
pesan += Perhitungan Keuntungan Total\n
; pesan +=
Jumlah menu diproduksi dikalikan keuntungan tiap menu\n\n
; cmd = con.CreateCommand;
cmd.CommandText = SELECT nama, harga_jual - harga_bahan_baku +
biaya_jasa + biaya_tambahan FROM menu ;
con.Open; MySqlDataReader
read_menu = cmd.ExecuteReader; int
L = 0; double
TOT = 0; double
[] hasilKompos = Perhitungan
.hasilKomposisi; while
read_menu.Read {
string d_nama = read_menu[0].ToString;
double tot = 0;
tot = hasilKompos[L] Double
.Parseread_menu[1].ToString; TOT += tot;
pesan += + d_nama +
: + hasilKompos[L] +
\tx +
read_menu[1].ToString + =
+ ToRupiahtot + \n
; L++;
} con.Close;
pesan += \nTotal Keuntungan =
+ ToRupiahTOT + \n
; MessageBox
.Showpesan; }
public Beranda
{ InitializeComponent;
LoadData; btnLihatKomposisi.Enabled =
false ;
}
60
4.3 Implementasi Subsistem Manajemen Dialog