Belajar Cepat Aplikasi MFC Microsoft Vis PDF
Belajar Cepat Aplikasi MFC Microsoft Vis PDF
Page |1
ISBN : 978-602-7782-07-5
Belajar Cepat
Aplikasi MFC
Microsoft Visual Studio C++
Sasa Ani Arnomo, S.Kom., M.SI
KATA PENGANTAR
Bismillahhirohmannirrohim….
Alhamdulillah, segala puji dan syukur kehadirat Allah SWT karena berkat
rahmat dan izin - Nya akhirnya penulis dapat menyelesaikan pembuatan buku
pemrograman, sehingga dapat bermanfaat bagi penulis dan pembaca.
Adapun buku yang penulis angkat adalah buku yang membahas tentang
Pemrograman MFC pada program Microsoft Visual Studio C++. Yang dimaksud
tema dari judul yang diangkat yaitu proses untuk mengemplementasikan urutan
langkah untuk menyelesaikan suatu masalah dalam bentuk program dengan
memanfaatkan aplikasi MFC yang ada pada Microsoft Visual Studio C++.
Sedangkan tujuan dalam pembelajarannya yang akan diarahkan diharapkan
dapat meningkatkan kehandalan pembuatan program, program yang dibuat mudah
dibaca dan mudah ditelusuri dalam penulisan kodenya. Kemudian programmer juga
mampu dalam menyederhanakan kerumitan program, pemeliharaan program, dan
mampu meningkatkan produktivitas pemrograman.
Demikian penulis membuat buku belajar cepat aplikasi MFC dengan
Pemrograman visual studio C++ ini diharapkan kedepannya dapat digunakan
sebaik-baiknya untuk proses belajar menangani suatu kasus dalam pembuatan
program sehingga benar-benar bermanfaat bagi kita semua.
DAFTAR ISI
BAB I
PENGANTAR MFC
3. Muncul tampilkan New Project, pada Project Types pilih visual C++
sedangkan pada Templates pilih MFC Application.
6. Application Type pilih yang Dialog Based kemudian tekan tombol Next.
7. User Interface Features pilih Next apabila ingin mengganti title bisa diisi
pada kolom Dialog title.
BAB II
IDENTIFIER, KOMENTAR, DAN TIPE DATA
2.1 KOMENTAR
Komentar merupakan bagian yang penting dalam program, karena
membantu programmer dalam membuat penjelasan mengenai program dan
bagian-bagiannya dan tidak menghasilkan tindakan ( tidak mempengaruhi
jalannya program ). Penjelasan pada komentar bisa berisi:
- Tujuan dan fungsi program
- Saat program dibuat dan direvisi
- Keterangan sejumlah kegunaan dan pernyataan program.
Untuk membuat komentar dipakai tanda // untuk satu baris dan /* ... */
untuk lebih dari satu baris.
Contoh:
1. // Komentar baris
//Contoh program menggunakan komentar
//nama program: komentar1.cpp
2. /* Komentar lebih dari satu baris */
/*Contoh program menggunakan komentar
Ini adalah komentar panjang
Yang banyaknya lebih dari satu baris */
2.2 Identifier
Identifier adalah nama yang diberikan untuk nama objek, nama fungsi,
nama variabel, dll.
Identifier pada C++ dapat terdiri dari :
1. Huruf ‘A’ sampai ‘Z’
2. Huruf “a” sampai ‘z’
3. Underscore ( _ )
4. Bilangan antara ‘0’ sampai ‘9’
2.3 Variabel
Data yang nilainya dapat berubah pada saat program dijalankan disebut
variable. Variabel mempunyai nama, tipe dan dapat dipakai untuk menyimpan
suatu nilai. Sedangkan cara pembuatan variabel dalm Aplikasi Form:
1. Klik kanan pada form
2. Pilih Add Variabel
Apabila ada kesalahan dalam penulisan nama variabel atau tipe data yang
tidak sesuai contoh salah penulisan nama varibel luas dengan penulisan luas3,
maka cara menghapus dengan mencari nama variabel tersebut dan hapus satu
baris perintah variabel pada file *DLG.cpp.
Kemudian hapus juga nama variabel yang tertera pada header pada file
*DLG.h. Lihat gambar berikut:
parameter apaun.
3. Bila diawali dengan operator *, menyatakan penunjuk
terhadap sembarang tipe data.
Contoh deklarasi void :
Void coba (char*, int) ; atau
Main (void); atau
Void* coba;
Int angka = 100;
coba = &angka;
2.5 Kontanta
3. Buatlah variabel dengan cara klik kanan form dan pilih add variabel.
5. Buatlah sebuah fungsi click pada button1 dengan cara klik 2x pada button1,
kemudian isi perintah berikut:
6. Masukkan konstata:
Cara 1: Dengan menulis #define phi 3.14 dibawah #include
Cara 2: Dengan menulis const double phi = 3.14; didalam fungsi button1
BAB III
Operator - Operator Dalam C++
10. Buatlah variabel dengan cara klik kanan form dan pilih add variabel.
12. Buatlah sebuah fungsi click pada button1 untuk rumus perkalian dengan
cara klik 2x pada button1, kemudian isi perintah berikut:
13. Buatlah sebuah fungsi click pada button2 untuk rumus pembagian dengan
cara klik 2x pada button2, kemudian isi perintah berikut:
14. Buatlah sebuah fungsi click pada button3 untuk rumus penjumlahan dengan
cara klik 2x pada button3, kemudian isi perintah berikut:
15. Buatlah sebuah fungsi click pada button4 untuk rumus pengurangan dengan
cara klik 2x pada button4, kemudian isi perintah berikut:
16. Buatlah sebuah fungsi click pada button5 untuk rumus modulus dengan
cara klik 2x pada button5, kemudian isi perintah berikut:
3. Buatlah variabel dengan cara klik kanan form dan pilih add variabel.
5. Buatlah sebuah fungsi click pada BLogin untuk tombol login dengan cara
klik 2x pada BLogin, kemudian isi perintah berikut:
6. Buatlah sebuah fungsi click pada BExit untuk tombol login dengan cara
klik 2x pada BExit, kemudian isi perintah berikut:
3. Buatlah variabel dengan cara klik kanan form dan pilih add variabel.
5. Buatlah sebuah fungsi click pada Button1 untuk tombol Increment dengan
cara klik 2x pada Button1, kemudian isi perintah berikut:
6. Buatlah sebuah fungsi click pada Button2 untuk tombol Decrement dengan
cara klik 2x pada Button2, kemudian isi perintah berikut:
ID Control Properties
Static Text 1 ID : IDC_STATIC1
Caption : Nama
Static Text 2 ID : IDC_STATIC2
Caption : Harga
Static Text 3 ID : IDC_STATIC3
Caption : Jumlah
Static Text 4 ID : IDC_STATIC4
Caption : Diskon
Static Text 5 ID : IDC_STATIC5
Caption : Pajak (2%)
Static Text 6 ID : IDC_STATIC6
Caption : Total Bayar
Edit Control 1 ID : ID_Nama
Edit Control 2 ID : ID_Harga
3. Buatlah variabel dengan cara klik kanan form dan pilih add variabel.
5. Buatlah sebuah fungsi click pada Button1 untuk tombol Hitung dengan cara
klik 2x pada Button1, kemudian isi perintah berikut:
BAB IV
PERCABANGAN
kond
isi salah
perintah
Benar
if (kondisi)
pernyataan;
Ket: Penulisan kondisi harus didalam tanda kurung dan berupa ekspresi
relasi dan penulisan pernyataan dapat berupa sebuah pernyataan tunggal,
pernyataan majemuk atau pernyataan kosong. Jika pemakaian if diikuti
dengan pernyataan majemuk, bentuk penulisannya sebagai berikut :
if (kondisi)
{
pernyataan;
……
10. Buatlah variabel dengan cara klik kanan form dan pilih add variabel.
12. Buatlah sebuah fungsi click pada BClick untuk tombol Click dengan cara
klik 2x pada BClick, kemudian isi perintah berikut:
kond
isi
salah
Peintah-1 Perintah-2
benar
if (kondisi)
perintah-1;
else
perintah-2;
if (kondisi)
{
perintah-1;
...
else
perintah-2;
...
Contoh
Menentukan besarnya potongan dari pembelian barang yang diberikan seorang
pembeli, dengan kriteria :
jika total pembelian kurang dari Rp. 50.000,- potongan yang diterima
sebesar 5% dari total pembelian.
Jika total pembelian lebih dari atau sama dengan Rp. 50.000,- potongan
yang diterima sebesar 20% dari total pembelian.
ID Control Properties
Static Text 1 ID : IDC_STATIC1
Caption : Nama Barang
Static Text 2 ID : IDC_STATIC2
Caption : Harga
Static Text 3 ID : IDC_STATIC3
Caption : Jumlah
Static Text 4 ID : IDC_STATIC4
Caption : Total
Static Text 5 ID : IDC_STATIC5
Caption : Potongan
Static Text 6 ID : IDC_STATIC6
Caption : Total Bayar
Edit Control 1 ID : ID_Nama
Edit Control 2 ID : ID_Harga
Edit Control 3 ID : ID_Jumlah
Edit Control 4 ID : ID_Total
Disable : True
9. Buatlah variabel dengan cara klik kanan form dan pilih add variabel.
11. Buatlah sebuah fungsi click pada BHitung untuk tombol Hitung dengan
cara klik 2x pada BHitung, kemudian isi perintah berikut:
12. Buatlah sebuah fungsi click pada BClear untuk tombol Clear dengan cara
klik 2x pada BClear, kemudian isi perintah berikut:
13. Buatlah sebuah fungsi click pada BExit untuk tombol Exit dengan cara klik
2x pada BExit, kemudian isi perintah berikut:
if(syarat)
if(syarat)
… perintah;
else
… perintah;
else
if(syarat)
… perintah;
else
… perintah;
Contoh
Bila salesman dapat menjual barang hingga Rp. 20.000 ,- , akan diberikan uang
jasa sebesar Rp. 10.000 ditambah dengan uang komisi Rp. 10% dari
pendapatan yang diperoleh hari itu.
Bila salesman dapat menjual barang diatas Rp. 20.000 ,- , akan diberikan uang
jasa sebesar Rp. 20.000 ditambah dengan uang komisi Rp. 15% dari
pendapatan yang diperoleh hari itu.
Bila salesman dapat menjual barang diatas Rp. 50.000 ,- , akan diberikan uang
jasa sebesar Rp. 30.000 ditambah dengan uang komisi Rp. 20% dari
pendapatan yang diperoleh hari itu.
ID Control Properties
Static Text 1 ID : IDC_STATIC1
Caption : Nama
Static Text 2 ID : IDC_STATIC2
Caption : Gaji Pokok
Static Text 3 ID : IDC_STATIC3
Caption : Status
Static Text 4 ID : IDC_STATIC4
Caption : Jumlah Anak
Static Text 5 ID : IDC_STATIC5
Caption : Tunjangan Menikah
Edit Control 1 ID : ID_Nama
Edit Control 2 ID : ID_Gaji
Edit Control 3 ID : ID_Tunjangan
Disable : True
Radio Button 1 ID : ID_Nikah
Group : True
Radio Button 2 ID : ID_Belum
Combo Box ID : ID_JmlAnak
Data : 0;1;2;3;4;5;6;7;8;9
3. Buatlah variabel dengan cara klik kanan form dan pilih add variabel.
5. Buatlah sebuah fungsi click pada ID_Nikah untuk radio button Menikah
dengan cara klik 2x pada ID_Nikah, kemudian isi perintah berikut:
|| Aplikasi MFC Microsoft Visual Studio C++ ||
P a g e | 57
6. Buatlah sebuah fungsi click pada ID_Belum untuk radio button Belum
Menikah dengan cara klik 2x pada ID_Belum, kemudian isi perintah
berikut:
7. Buatlah sebuah fungsi Select Cange pada ID_JmlAnak untuk Combo Box
dengan cara klik 2x pada ID_JmlAnak, kemudian isi perintah berikut:
Percabangan jenis ini merupakan perluasan dari struktur yang memiliki dua
kondisi di atas, yaitu dengan menambahkan satu atau lebih kondisi ke dalamnya.
bentuk umum dari percabangan ini adalah sebagai berikut:
Sintaks umum IF ELSE bertingkat
{
… perintah;
… perintah;
else if (syarat)
{
… perintah;
… perintah;
else
{
… perintah;
… perintah;
Contoh 1:
Bila salesman dapat menjual barang hingga Rp. 200.000 ,- , akan diberikan
uang jasa sebesar Rp. 10.000 ditambah dengan uang komisi Rp. 10% dari
pendapatan yang diperoleh hari itu.
Bila salesman dapat menjual barang diatas Rp. 200.000 ,- , akan diberikan uang
jasa sebesar Rp. 20.000 ditambah dengan uang komisi Rp. 15% dari
pendapatan yang diperoleh hari itu.
Bila salesman dapat menjual barang diatas Rp. 500.000 ,- , akan diberikan uang
jasa sebesar Rp. 30.000 ditambah dengan uang komisi Rp. 20% dari
pendapatan yang diperoleh hari itu.
3. Buatlah variabel dengan cara klik kanan form dan pilih add variabel.
Contoh 2:
Contoh program kedua adalah program penilaian dari nahasiswa yang terdiri dari
nilai tugas, nilai uts dan nilai uas kemudian dimasukkan kedalam rumus nilai akhir
dengan ketentuan 20% nilasi uts, 30% nilai tugas dan 50% nilai uas. Sedangkan
rumus percabangannya sebagai berikut:
Bila nilai akhir diantara 85 dan 100 mendapat grade A
Bila nilai akhir diantara 75 dan 84 mendapat grade B
Bila nilai akhir diantara 50 dan 74 mendapat grade C
Bila nilai akhir diantara 40 dan 49 mendapat grade D
Bila nilai akhir diantara 0 dan 39 mendapat grade E
Caption : Uts
Static Text 6 ID : IDC_STATIC6
Caption : Tugas
Static Text 7 ID : IDC_STATIC7
Caption : Uas
Static Text 8 ID : IDC_STATIC8
Caption : Nilai Akhir
Static Text 9 ID : IDC_STATIC9
Caption : Grade
Edit Control 1 ID : ID_Nim
Edit Control 2 ID : ID_Nama
Edit Control 3 ID : ID_Jur
Edit Control 4 ID : ID_Mtk
Edit Control 5 ID : ID_Uts
Edit Control 6 ID : ID_Tgs
Edit Control 7 ID : ID_Uas
Edit Control 8 ID : ID_Na
Disable : True
Edit Control 9 ID : ID_Grade
Disable : True
Group Box Caption : Nilai
3. Buatlah variabel dengan cara klik kanan form dan pilih add variabel.
Gambar Variabel na
5. Buatlah sebuah fungsi click pada BClick untuk Button Click dengan cara
klik 2x pada BClick, kemudian isi perintah berikut:
case konstanta-1 :
… perintah;
… perintah;
break;
case konstanta-2 :
… perintah;
… perintah;
break;
……
……
default :
… perintah;
… perintah;
Setiap cabang akan dijalankan jika syarat nilai konstanta tersebut dipenuhi
dan default akan dijalankan jika semua cabang diatasnya tidak terpenuhi.
Pernyataan break menunjukan bahwa perintah siap keluar dari switch. Jika
pernyataan ini tidak ada, maka program akan diteruskan kecabang – cabang yang
lainnya.
ID Control Properties
GroupBox Caption : Penjualan Tiket
Static Text 1 ID : IDC_STATIC1
Caption : Harga
Static Text 2 ID : IDC_STATIC2
Caption : Jumlah Pesan
Static Text 3 ID : IDC_STATIC3
3. Buatlah variabel dengan cara klik kanan form dan pilih add variabel.
5. Buatlah sebuah fungsi click pada BHitung untuk Button Hitung dengan cara
klik 2x pada BHitung, kemudian isi perintah berikut:
6. Buatlah sebuah fungsi click pada ID_Bj untuk radio button Batam - Jakarta
dengan cara klik 2x pada ID_Bj, kemudian isi perintah berikut:
7. Buatlah sebuah fungsi click pada ID_Bs untuk radio button Batam -
Singapure dengan cara klik 2x pada ID_Bs, kemudian isi perintah berikut:
8. Buatlah sebuah fungsi click pada ID_Bm untuk radio button Batam –
Medan dengan cara klik 2x pada ID_Bm, kemudian isi perintah berikut:
9. Buatlah sebuah fungsi click pada ID_Bb untuk radio button Batam -
Bandung dengan cara klik 2x pada ID_Bb, kemudian isi perintah berikut:
BAB V
PENGULANGAN ( LOOP )
1. For Statment
For statment adalah salah satu jenis statement pengulangan yang
digunakan untuk melakukan pengulangan yang telah diketahui banyaknya
pengulangan. Pernyataan for digunakan untuk melakukan looping. Pada
Umumnya looping yang dilakukan oleh for telah diketahui batas awal,
syarat looping dan perubahannya. Selama kondisi terpenuhi, maka
pernyataan akan terus dieksekusi. Statement for memiliki 3 parameter, yaitu
nilai awal (initial value), syarat atau tes kondisi yang menentukan akhir
loop, dan penentu perubahan nilai atau pencacah.
3. Buatlah variabel dengan cara klik kanan form dan pilih add variabel.
5. Buatlah sebuah fungsi click pada BClick untuk tombol Click dengan cara
klik 2x pada BClick, kemudian isi perintah berikut:
Contoh Program
Ubahlah perintah dari button Clik dari program diatas menjadi berikut:
Ada beberapa kasus dimana kita melakukan deklarasi dengan cara berbeda,
tidak sesuai dengan bentuk di atas.
Sebagai sebagai berikut contoh:
INPUT DATA
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
3. Buatlah variabel dengan cara klik kanan form dan pilih add variabel.
5. Buatlah sebuah fungsi click pada BClick untuk tombol Click dengan cara
klik 2x pada BClick, kemudian isi perintah berikut:
Contoh Program:
1. Buatlah sebuah project application MFC Type Dialog Based dengan nama
perulangan1
2. Design tampilan form seperti pada gambar
3. Buatlah variabel dengan cara klik kanan form dan pilih add variabel.
5. Buatlah sebuah fungsi click pada BClick untuk tombol Click dengan cara
klik 2x pada BClick, kemudian isi perintah berikut:
BAB VI
Mengolah Data Array dengan File Text
Untuk mempelajari pengolahan data array dengan file text, kita akan
mencoba membuat aplikasi administrasi data mahasiswa dengan tampilan berikut:
fscanf_s(Fin,"%d\n",&n);
for (i=1;i<=n;i++)
{
fgets(x,30,Fin);
fscanf_s(Fin,"%d",&Mhs[i].NIM);
fscanf_s(Fin,"%d",&Mhs[i].UTS);
fscanf_s(Fin,"%d",&Mhs[i].UAS);
fscanf_s(Fin,"%d\n",&Mhs[i].Tugas);
Mhs[i].Nama = x;
}
fclose(Fin);
Perhatikan bahwa urutan pembacaan berdasarkan urutan data pada file text.
Data yang pertama dibaca adalah jumlah elemen array dan dilanjutkan dengan
pengisian array menggunakan perulangan for. Setelah data masuk ke dalam
variabel array, selanjutnya adalah mengisikan nilai array tersebut kedalam variabel
dialog, menghitung nilai dan grade serta menampilkannya di layar. Tentu saja data
yang ditampilkan pada awal dialog adalah data array pertama (i=1). Karena proses
pengisian array, penghitungan nilai dan grade serta menampilkannya ke layar ini
nantinya akan dilakukan beberapa kali, maka buatlah fungsi baru misal dengan
nama hitungnilai(). Seperti yang pernah dipelajari sebelumnya, untuk pembuatan
fungsi global dengan cara right-click pada class dialog pada class view (pada
contoh ini class dialog adalah CArrayMahasiswaDlg), kemudian add function.
Ubah return type menjadi void, kosongkan parameter type serta beri nama
fungsi pada bagian function name.
StaticGrade="E";
UpdateData(FALSE);//mengupdate nilai variabel agar muncul di dialog
Selanjutnya kita kembali pada fungsi OnInitDialog(), tambahkan kode program
berikut sebelum “return TRUE”:
//menampilkan data pertama array pada kotak dialog
i=1;
HitungNilai();
Jalankan aplikasi anda, maka data array pertama akan muncul pada dialog.
Apabila terjadi kesalahan, cek kembali folder dari file text anda danurutan dari
penulisan data pada file text.
Setelah berhasil menampilkan data pertama dari array, untuk dapat melihat
data lainnya maka tugas kita selanjutnya adalah membuat fungsi pada tombol next
dan previous. Buat fungsi pada tombol next, kemudian isikan kode program
berikut:
UpdateData(TRUE);
i=EditNomor;//nilai i diisi dengan edit box edit nomor
if((i>=1)&&(i<n))//isi nilai i dengan i+1
i=i+1;
else
i=n;//isi nilai i dengan n apabila indeks >n
HitungNilai();
Buat juga fungsi pada tombol previous dan isikan dengan kode program berikut:
UpdateData(TRUE);
i=EditNomor;
if((i>1)&&(i<=n))
i=i-1;
else
i=1;//untuk i < 1, isi nilai i dengan 1
HitungNilai();
Jalankan aplikasi anda, coba tombol next dan previous apakah sudah
berfungsi sesuai yang kita harapkan.
Agar nantinya proses penambahan tidak dilakukan ketika data ditampilkan
di awal ataupun ketika menggunakan tombol next dan previous, maka sebaiknya
semua edit box di nonaktifkan (disable). Caranya adalah mengubah masing-masing
properties disable dari edit box menjadi true.
Selanjutnya adalah membuat fungsi menambahkan data array mahasiswa.
Buat fungsi pada tombol tambah, kemudian isikan dengan kode program berikut:
Mhs[i].Tugas);
}
fclose(Fout);
MessageBox(_T("Data berhasil
disimpan"),_T("Hasil"),MB_OK|MB_ICONINFORMATION);
//menampilkan kembali tombol next dan previous serta menonaktifkan kembali
semua edit box
GetDlgItem(IDC_BUTTON1)->ShowWindow(TRUE);
GetDlgItem(IDC_BUTTON2)->ShowWindow(TRUE);
GetDlgItem(IDC_EDIT2)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT3)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT4)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT5)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT6)->EnableWindow(FALSE);
Jalankan aplikasi, coba masukkan data baru, apabila tidak terjadi kesalahan,
kita lanjutkan pada pembuatan fungsi edit data. Pada prinsipnya fungsi edit data
mirip dengan fungsi penambahan data. Perbedaannya hanya pada letak dari data
array yang diubah, pada proses edit, perubahan dapat dilakukan pada elemen array
manapun sedangkan pada penambahan terjadi perubahan pada jumlah elemen array
dan pengisinan data terakhir. Kedua proses tersebut diakhiri dengan penyimpanan
data ke file text melalui tombol simpan. Untuk itu kita perlu membuat variabel baru
untuk menampung nilai variabel pembeda antara proses tambah dan edit. Pada
contoh ini variabel tersebut diberi nama tombol dan bertipe integer. Variabel
tersebut akan digunakan pada beberapa fungsi sehingga perlu dibuat variabel
global. Right-click pada kotak dialog, pilih add variable, kemudian isikan nama
variabelnya.
Buat fungsi pada tombol edit data, kemudian masukkan kode program
berikut pada fungsi tersebut:
tombol=2;
//mengisi nilai tombol dengan 2 untuk edit data
//mengaktifkan kembali edit box kecuali edit box nomor
GetDlgItem(IDC_EDIT2)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT3)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT4)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT5)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT6)->EnableWindow(TRUE);
//menyembunyikan tombol next dan previous
GetDlgItem(IDC_BUTTON1)->ShowWindow(FALSE);
GetDlgItem(IDC_BUTTON2)->ShowWindow(FALSE);
//memfokuskan pada edit box NIM
GetDlgItem(IDC_EDIT2)->SetFocus();
Perhatikan pada kode program di atas, terdapat pengisian pada variabel tombol
dengan nilai 2 untuk edit data, tambahkan juga pengisian variabel tombol tersebut
pada fungsi dari tombol tambah dengan nilai 1. Selanjutnya ubahlah fungsi pada
tombol simpan menjadi seperti berikut:
UpdateData(TRUE);
switch(tombol)
{
case 1:
{
//mengisi array n dengan variabel pada kotak dialog
n= EditNomor;
Mhs[n].NIM=EditNim;
Mhs[n].Nama=EditNama;
Mhs[n].UTS=EditUTS;
Mhs[n].UAS=EditUAS;
Mhs[n].Tugas=EditTugas;
//menampilkan data baru pada kotak dialog
i=n;
HitungNilai();
break;
}
case 2:
{
i=EditNomor;
Mhs[i].NIM=EditNim;
Mhs[i].Nama=EditNama;
Mhs[i].UTS=EditUTS;
Mhs[i].UAS=EditUAS;
Mhs[i].Tugas=EditTugas;
i=EditNomor;
HitungNilai();
break;
}
}
//menyimpan data ke file text
FILE *Fout;
fopen_s(&Fout,"mahasiswa.txt","w");
fprintf_s(Fout,"%d\n",n);
for (i=1;i<=n;i++)
{
fwprintf_s(Fout,_T("%s\n"),Mhs[i].Nama);
fprintf_s(Fout,"%d %d %d %d\n",Mhs[i].NIM, Mhs[i].UTS, Mhs[i].UAS,
Mhs[i].Tugas);
}
fclose(Fout);
MessageBox(_T("Data berhasil
disimpan"),_T("Hasil"),MB_OK|MB_ICONINFORMATION);
//menampilkan kembali tombol next dan previous serta menonaktifkan kembali
semua edit box
GetDlgItem(IDC_BUTTON1)->ShowWindow(TRUE);
GetDlgItem(IDC_BUTTON2)->ShowWindow(TRUE);
GetDlgItem(IDC_EDIT2)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT3)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT4)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT5)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT6)->EnableWindow(FALSE);
Jalankan kembali aplikasi anda dan lihat apakah tombol tambah dan edit
berfungsi dengan benar. Terakhir adalah membuat fungsi pada tombol hapus.
Isikan kode program berikut pada fungsi tersebut:
//message box untuk konfirmasi penghapusan data
int pilihan= MessageBox(_T("Apakah anda yakin untuk menghapus data
ini?"),_T("Konfirmasi"),MB_YESNO|MB_ICONQUESTION);
if (pilihan==IDNO)
MessageBox(_T("Penghapusan batal"));
else
{
UpdateData(TRUE);
//elemen array yang akan dihapus ditimpa dengan elemen selanjutnya dari array
//proses dilakukan sampai elemen array n-1
i= EditNomor;
for (i=EditNomor;i<=n-1;i++)
{Mhs[i].NIM=Mhs[i+1].NIM;
Mhs[i].Nama=Mhs[i+1].Nama;
Mhs[i].UTS=Mhs[i+1].UTS;
Mhs[i].UAS=Mhs[i+1].UAS;
Mhs[i].Tugas=Mhs[i+1].Tugas;
}
n=n-1;//jumlah elemen array berkurang 1
//menyimpan data array kedalam file text
FILE *Fout;
fopen_s(&Fout,"mahasiswa.txt","w");
fprintf_s(Fout,"%d\n",n);
for (i=1;i<=n;i++)
{
fwprintf_s(Fout,_T("%s "),Mhs[i].Nama);
fprintf_s(Fout,"%d %d %d %d\n",Mhs[i].NIM, Mhs[i].UTS, Mhs[i].UAS,
Mhs[i].Tugas);
}
fclose(Fout);
MessageBox(_T("Data berhasil
dihapus"),_T("Hasil"),MB_OK|MB_ICONINFORMATION);
//menampilkan nilai baru dari elemen yang dihapus
UpdateData(TRUE);
if ((i>=1)&&(i<n))
{ i=EditNomor;}
if (i==n)
{ i=EditNomor-1;}
HitungNilai();
}
Ujilah kembali aplikasi anda, apakah semua fungsi telah berjalan dengan
benar. Apabila anda berhasil membuat aplikasi ini maka anda sudah mampu
membuat aplikasi yang cukup kompleks. Sebagai bahan latihan, coba gabungkan
dengan pembuatan menu pada pembahasan sebelumnya.
BAB VII
MENGOLAH DATA DENGAN FILE TEXT
Ada beberapa bentuk pengolahan data yang dapat dilakukan dengan bahasa
C/C++ baik menggunakan compiler visual C++ ataupun yang lain. Pada
pembahasan ini kita akan mempelajari salah satu cara mengolah data menggunakan
inputan dari file text serta mengeluarkan hasilnya juga melalui file text. Berikut
adalah contoh aplikasi yang akan kita buat berikut file text input dan outputnya:
Selanjutnya buat fungsi pada tombol hitung grade, kemudian isikan kode
program berikut:
UpdateData(true);
static_total=0.3*edit_uts+0.3*edit_tugas+0.4*edit_uas;
if(static_total>=80)
static_grade="A";
else if ((static_total>=70)&&(static_total<80))
static_grade="B";
else if ((static_total>=60)&&(static_total<=70))
static_grade="C";
else if ((static_total>=50)&&(static_total<60))
static_grade="D";
else
static_grade="E";
UpdateData(false);
Terakhir adalah membuat fungsi pada tombol cetak. Masukkan kode
berikut pada fungsi dari tombol cetak:
FILE *Fout;
fopen_s(&Fout,"cetak.txt","w");
fprintf_s(Fout,"********************************************\n");
fprintf_s(Fout,"**** LAPORAN DATA MAHASISWA ****\n");
fprintf_s(Fout,"********************************************\n");
fprintf_s(Fout,"Nim : %d\n",edit_nim);
fwprintf_s(Fout,_T("Nama : %s"),edit_nama);
fprintf_s(Fout,"Nilai UTS : %0.2f\n",edit_uts);
fprintf_s(Fout,"Nilai UAS : %0.2f\n",edit_uas);
fprintf_s(Fout,"Nilai Tugas : %0.2f\n",edit_tugas);
fprintf_s(Fout,"-----------------------------\n");
fprintf_s(Fout,"Nilai Total : %0.2f\n",static_total);
fprintf_s(Fout,"Grade : %s",static_grade);
UpdateData(false);
fclose(Fout);
MessageBox(_T("Data sudah di cetak"));
BAB VIII
MENGGUNAKAN FUNGSI PENGOLAHAN WAKTU (TIMER)
Langkah pertama yang perlu kita buat seperti biasa adalah project baru.
Buat project MFC application dengan tipe dialog base, kemudian buatlah tampilan
dialog seperti contoh tampilan aplikasi pada gambar 1 menggunakan objek-objek
kontrol yang terdapat pada toolbox. Langkahselanjutnya adalah membuat variabel
pada static text berisikan data yang kita gunakan. Pada aplikasi ini, ada 6 static text
yang berisikan data, 3 untuk menampung data waktu sistem, data waktu masuk dan
waktu keluar dan 3 lagi untuk menampung selisih waktu masuk dan keluar. Contoh
pada aplikasi ini variabel waktu yang kita buat adalah static_waktu, static_masuk
dan static_keluar yang bertipe CString dan variabel selisih waktu yaitu
static_jam, static_menit dan static_detik yang bertipe integer.
Selain variabel objek dialog, kita juga perlu membuat variabel global pada
class dialog. Berikut adalah contoh deklarasinya pada file dialog header:
Isikan deklarasi variabel tersebut pada bagian public dari dialog header
(pada contoh ini Lat_WaktuDlg.h) pada bagian public agar dapat diakses pada
semua fungsi.
Setelah pembuatan variabel selesai, selanjutnya adalah membuat agar static
text menampilkan waktu jam sistem. Karena kita ingin agar jam sistem tersebut
muncul pada awal aplikasi dijalankan maka kita perlu mengakses fungsi
OnInitDialog(). Isikan kode program berikut pada fungsi tersebut:
//membuat timer dengn fungsi SetTimer dengan ID 1, waktu refresh 1000 mili
second
SetTimer(1,1000,NULL);
Jalankan aplikasi kemudian lihat apakah waktu sistem sudah muncul pada
static text pertama. Apabila berhasil maka selanjutnya adalah membuat fungsi pada
tombol Absen. Fungsi yang ingin kita buat adalah apabila tombol ditekan pertama
kali maka waktu masuk akan tercatat, kemudian apabila tombol tersebut ditekan
kedua kalinya maka waktu keluar akan tercatat sekaligus menghitung selisih antara
waktu keluar dan waktu masuk dan menampilkannya pada static text selisih waktu.
Buat fungsi pada tombol Absen dengan cara double-click pada tombol tersebut,
kemudian masukkan kode program berikut:
//cek apakah waktu masuk kosong. Apabila kosong, isi waktu masuk
if(static_masuk.IsEmpty()==true)
{ //mengisi waktu masuk dengan waktu sistem ketika tombol ditekan
static_masuk=static_waktu;
//mengisi komponen jam,menit,detik dari waktu masuk dengan nilai variabel temp
waktu1.jam=temp.jam;
waktu1.menit=temp.menit;
waktu1.detik=temp.detik;
}
BAB IX
MENGUBAH KOTAK DIALOG AWAL APLIKASI, MENGHAPUS
FUNGSI DAN VARIABEL.
Apabila kita ingin pada awal aplikasi dijalankan langsung muncul kotak
dialog login (IDD_LOGIN_DIALOG) maka kita harus mengubah fungsi
InitInstance() pada file .cpp dari class aplikasi. Seperti yang pernah kita bahas
sebelumnya bahwa pada saat kita membuat suatu project MFC maka secara
otomatis akan terbentuk 2 class yang diberi nama mengikuti nama project yang kita
buat. Pada contoh ini nama project adalah Password, maka secara otomatis
terbentuk 2 class yaitu class CPasswordApp (application class) dan
CPasswordDlg (dialog class). Masing-masing class tersebut terdiri dari file .h dan
.cpp, CPasswordApp terdiri dari file Password.h dan Password.cpp
sedangkan CPasswordDlg terdiri dari PasswordDlg.h dan PasswordDlg.cpp
program dari fungsi InitInstance() di atas menjadi Clogin yang merupakan nama
class dari kotak dialog login.
Apabila aplikasi tersebut dijalankan kembali maka kotak dialog login akan
muncul pertama kali.
BAB X
MEMBUAT LOGIN DENGAN PASSWORD
Buat fungsi pada tombol OK, kemudian isikan kode program berikut pada
fungsi tersebut:
UpdateData(true);//mengupdate nilai pada dialog masuk ke variabel objek kontrol
count=count+1;//menambahkan 1 setiap kali percobaan input password
//kondisi perulangan: selama percobaan belum 3 kali dan pasword belum cocok
//maka kembali ke halaman awal serta tambah 1 nilai count.
while((count<3)&&(edit_password!="kodok"))
{
MessageBox(_T("Password Salah!"), _T("Warning"),
MB_OK|MB_ICONEXCLAMATION);
ctrl_edit_password.SetFocus();
return;
count = count+1;
}
if(edit_password=="kodok")//kondisi apabila password cocok
MessageBox(_T("Selamat! Anda berhasil masuk ke dalam
sistem"),_T("Informasi"),MB_OK|MB_ICONINFORMATION);
else//kondisi ketika setelah 3 kali percobaan dan password belum cocok juga
MessageBox(_T("Password 3X salah! Anda tidak berhak mengakses
sistem"),_T("Informasi"),MB_OK|MB_ICONINFORMATION);
OnOK();
Sampai tahapan ini aplikasi password sudah dapat digunakan. Lalu,
bagaimana jika kita ingin agar password dibaca dari file text berbentuk array
seperti berikut:
Jalankan aplikasi anda dan cek apakah semua fungsi berjalan dengan benar.
BAB XI
MENGHUBUNGKAN APLIKASI MFC DENGAN DATABASE
Buat koneksi baru dengan tombol add kemudian pilih driber MS Access.
Isi nama data source kemudian pilih database yang akan digunakan.
Coba jalankan aplikasi, akan ada pesan error dan apabila anda akses letak
error tersebut mengarah pada warning terhadap adanya password yang kita temui
sebelumnya. Sementara hal ini kita abaikan dengan membuat comment pada line
code program tersebut menggunakan //.
Untuk menghubungkan variabel tersebut dengan edit box yang telah kita
buat pada kotak dialog, bukalah file view.cpp kemudian akses fungsi
DoDataExchange. Masukkan kode program berikut pada fungsi tersebut.
Perhatikan bahwa ukuran kotak dialog perlu diubah agar tidak terlalu besar.
Untuk mengubahnya buka file MainFrm.cpp dan masukkan code program berikut
pada fungsi OnCreate dan PreCreateWindow.
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
.
.
.
// TODO: Delete these three lines if you don't want the toolbar to be dockable
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar);
//Set posisi dan nama kotak dialog
this->CenterWindow();
this->SetWindowText(_T("Sistem Administrasi Perpustakaan - Data Buku"));
return 0;
}
return TRUE;
}
BAB XII
MEMBUAT APLIKASI PENGOLAHAN DATABASE
Buat variabel control tombol tersebut dan semua edit box dengan cara right-
click pada masing-masing objek kemudian pilih add variable, misal pada contoh
ini dibuat dengan nama: ctrl_btn_simpan, ctrl_edit_kode, ctrl_edit_buku dan
ctrl_edit_stok.
Buka kotak dialog menu pada resource view dan tambahkan sub menu New
Record pada menu Record.
Buat fungsi untuk menu new record tersebut dengan cara right-click
kemudian pilih add event handler. Pilih class view untuk menampung fungsi
tersebut.
Buat juga fungsi pada tombol simpan dan tambahkan kode program seperti
berikut:
void CLat_DatabaseView::OnBnClickedButton1()
{
UpdateData();
if (m_pSet->Update())
AfxMessageBox(_T("Database updated!"));
else
AfxMessageBox(_T("Failed updating database!"));
// menyembunyikan kembali tombol
ctrl_btn_simpan.ShowWindow(false);
ctrl_btn_batal.ShowWindow(false);
//menonaktifkan edit box
ctrl_edit_kode.EnableWindow(false);
ctrl_edit_buku.EnableWindow(false);
ctrl_edit_stok.EnableWindow(false);
//menampilkan data terakhir
m_pSet->MoveLast();
}
Terakhir buat fungsi pada tombol cancel dan isikan kode program seperti berikut:
void CLat_DatabaseView::OnBnClickedButton2()
{
// menyembunyikan kembali tombol
ctrl_btn_simpan.ShowWindow(false);
ctrl_btn_batal.ShowWindow(false);
//menonaktifkan edit box
ctrl_edit_kode.EnableWindow(false);
ctrl_edit_buku.EnableWindow(false);
ctrl_edit_stok.EnableWindow(false);
//query ulang data
m_pSet->Requery();
UpdateData(false);
}
Apabila anda ingin menambahkan icon penambahan data pada toolbar maka
tampilkan menu toolbar melalui resource view, kemudian buatlah icon baru untuk
penambahan data tersebut, terakhir ubahlah nama id icon tersebut pada properties
menjadi sama dengan id dari fungsi new record.
Fungsi selanjutnya yang akan kita buat adalah fungsi edit data. Buat sub
menu edit record pada menu record kemudian buat fungsi untuk menu tersebut.
Fungsi edit ini kurang lebih sama dengan fungsi tambah data dan menggunakan
tombol-tombol yang sama (tombol save dan cancel). Untuk itu kita perlu suatu
variabel untuk membedakan fungsi mana yang sedang kita gunakan. Buat variabel
global pada class view dengan cara right-click pada kotak dialog kemudian buat
variabel dengan tipe integer (pada contoh ini nama variabel: tombol). Selanjutnya
isikan kode program berikut pada fungsi edit record:
void CLat_DatabaseView::OnRecordEditrecord()
{
//nilai tombol=2 untuk fungsi edit data
tombol=2;
//mengaktifkan edit box dan tombol
ctrl_edit_kode.EnableWindow(true);
ctrl_edit_buku.EnableWindow(true);
ctrl_edit_stok.EnableWindow(true);
ctrl_btn_simpan.ShowWindow(true);
ctrl_btn_batal.ShowWindow(true);
//edit data pada database
m_pSet->Edit();
}
Perhatikan bahwa untuk fungsi edit nilai variabel tombol kita isi dengan nilai 2,
untuk itu isi nilai variabel tombol pada fungsi tambah dengan nilai 1.
void CLat_DatabaseView::OnRecordNewrecord()
{
//nilai tombol=1 untuk fungsi tambah data
tombol=1;
.
.
|| Aplikasi MFC Microsoft Visual Studio C++ ||
P a g e | 130
.
}
Ubah kode program untuk tombol save:
void CLat_DatabaseView::OnBnClickedButton1()
{
.
.
.
if(tombol==1)
m_pSet->MoveLast();//menampilkan data terakhir
else
return;//kembali ke kondisi sebelumnya
}
Dan pada tombol cancel:
void CLat_DatabaseView::OnBnClickedButton2()
{
.
.
.
if(tombol==1)
m_pSet->Requery();//query ulang data
else
return;//kembali ke kondisi sebelumnya
UpdateData(false);
}
Fungsi selanjutnya yang akan kita buat adalah fungsi hapus data.
Tambahkan sub menu delete rocord pada menu record, kemudian buat fungsi pada
menu delete record tersebut. Isikan kode program berikut pada fungsi tersebut:
void CLat_DatabaseView::OnRecordDeleterecord()
{
int Answer = MessageBox(_T("Apakah anda yakin untuk menghapus data
ini?"),_T("konfirmasi"),MB_YESNO);
if( Answer == IDYES )
{
m_pSet->Delete();
m_pSet->Requery();
UpdateData(FALSE);
}
else
|| Aplikasi MFC Microsoft Visual Studio C++ ||
P a g e | 131
return;
}
Seperti pada fungsi new record, anda dapat menambahkan ikon pada fungsi
delete record. Jalankan aplikasi untuk melihat apakah fungsi-fungsi di atas berjalan
dengan baik.
BAB XIII
MENU
Pada bagian ini kita akan mempelajari bagaimana membuat menu pada
aplikasi, sekaligus bagaimana membuat kotak dialog baru dan menghubungkannya
dengan kotak dialog utama melalui pilihan menu. Berikut adalah contoh tampilan
aplikasi yang akan kita buat :
Langkah pertama yang kita lakukan adalah menambahkan static text pada
kotak dialog utama. Ubahlah properties sunken menjadi true, kemudian buatlah
variabel untuk kedua static text tersebut, tentu saja setelah mengganti nama ID
pada bagian properties. Pada contoh aplikasi ini digunakan nama variabel
static_nama dan static_pilihan.
Langkah selanjutnya adalah membuat menu yang nantinya akan menempel
pada kotak dialog utama tersebut. Buka Jendela resource view, kemudian right-
click pada project yang anda buat, pilih add | resource…, kemudian akan muncul
jendela add resources dengan beberapa jenis resource yang bisa ditambahkan. Pilih
menu kemudian tekan tombol new.
apabila salah satu menu dipilih maka akan ditampilkan pada static text. Untuk itu
tentu saja langkah selanjutnya adalah membuat variabel pada static text. Pada
contoh ini variabel static text diberi nama static_hasil.
Untuk membuat fungsi pada menu cukup right-click pada pilihan menu
kemudian pilih add event handler. Yang perlu diperhatikan adalah pilih class dialog
utama anda sebab disanalah fungsi tersebut akan dituliskan. Perhatikan pada
gambar berikut:
mengakses resource view, pilih folder dialog, right-click, kemudian pilih insert
dialog. Tambahkan list box dan button pada kotak dialog baru tersebut.
Apabila anda jalankan kembali aplikasinya maka listbox telah terisi dengan
pilihan di atas. Selanjutnya bagaimana menampilkan pilihan dari list box pada
static text? Buat fungsi pada tombol submit kemudian isi dengan fungsi OnOK()
untuk menutup kotak dialog. Buat variabel CString pada list box, misal pada
aplikasi ini diberi nama list_pilihan.
Tapi dimana fungsinya kita letakkan? Bukan ditombol submit, bukan juga
dengan membuat fungsi baru, tapi cukup dengan menambahkan kode program
berikut pada fungsi menu pilihan lain pada Lat_Menu1Dlg.cpp:
UpdateData(true);//update perubahan pilihan list box pada variabel
//mengakses variabel list_pilihan melalui objek dari class Cplilihan
static_hasil=objekpilihan.list_pilihan;
UpdateData(false);//update isi variabel ke form
Jalankan aplikasi anda, apabila tidak terjadi kesalahan maka ketika anda
memilih salah satu pilihan pada listbox, maka pilihan tersebut akan muncul pada
static text di kotak dialog utama.
Penutup