• Tidak ada hasil yang ditemukan

Sistem Informasi Manajemen Barang Berbasis Android

N/A
N/A
Protected

Academic year: 2017

Membagikan "Sistem Informasi Manajemen Barang Berbasis Android"

Copied!
26
0
0

Teks penuh

(1)

LAMPIRAN

1.Class Package Java

1. MainActivity.java

package com.example.dedi;

import android.support.v7.app.ActionBarActivity; import android.support.v7.app.ActionBar;

import android.support.v4.app.Fragment; import android.app.ListActivity;

import android.content.Intent; import android.os.Bundle;

import android.view.LayoutInflater; import android.view.Menu;

import android.view.MenuItem; import android.view.View;

import android.view.ViewGroup;

import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.Toast; import android.os.Build;

public class MainActivity extends ListActivity {

public void onCreate(Bundle icicle){ super.onCreate(icicle);

String[] menu = new String[] {"Tambah Barang", "Tampilkan Data"};

this.setListAdapter(new ArrayAdapter <String>(this, android.R.layout.simple_list_item_1, menu));

}

protected void onListItemClick(ListView l, View v, int position, long id){

super.onListItemClick(l, v, position, id);

Object o= this.getListAdapter().getItem(position); String pilihan = o.toString();

(2)

}

protected void tampilkanPilihan(String pilihan) { // TODO Auto-generated method stub

try{

Intent i = null;

if(pilihan.equals("Tambah Barang")){ i = new Intent(this,

InsertActivity.class);

}else if (pilihan.equals("Tampilkan Data")){

i = new Intent(this, JSONActivity.class);

}

startActivity(i); } catch (Exception e){

e.printStackTrace(); }

}

}

2. Barang.java

package com.example.dedi;

import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.util.ArrayList;

/**

* Created by Backup on 3/5/2016. */

public class Barang {

public String namaBarang, jumlahBarang,keterangan; public int idBarang;

(3)

}

public void setIdBarang(int idBarang) { this.idBarang = idBarang;

}

// Constructor to convert JSON object into a Java class instance

public Barang(JSONObject object){ try {

this.namaBarang = object.getString("namaBarang"); this.jumlahBarang = object.getString("jumlahBarang"); this.keterangan = object.getString("keterangan");

} catch (JSONException e) { e.printStackTrace(); }

}

// Factory method to convert an array of JSON objects into a list of objects

// User.fromJson(jsonArray);

public static ArrayList<Barang> fromJson(JSONArray jsonObjects) {

ArrayList<Barang> barang= new ArrayList<Barang>();

for (int i = 0; i < jsonObjects.length(); i++) { try {

barang.add(new

Barang(jsonObjects.getJSONObject(i))); } catch (JSONException e) { e.printStackTrace(); }

}

return barang; }

public Barang(String namaBarang, String jumlahBarang, String keterangan) {

(4)

}

public String getNamaBarang() { return namaBarang;

}

public void setNamaBarang(String namaBarang) { this.namaBarang = namaBarang;

}

public String getJumlahBarang() { return jumlahBarang;

}

public void setJumlahBarang(String jumlahBarang) { this.jumlahBarang = jumlahBarang;

}

public String getKeterangan() { return keterangan;

}

public void setKeterangan(String keterangan) { this.keterangan = keterangan;

}

}

3. BarangAdapterHolder.java package com.example.dedi;

import android.content.Context; import android.text.Html;

import android.view.LayoutInflater; import android.view.View;

import android.view.ViewGroup;

import android.widget.ArrayAdapter; import android.widget.TextView;

import java.util.ArrayList;

(5)

* Created by Backup on 3/5/2016. */

public class BarangAdapterHolder extends ArrayAdapter<Barang> {

// View lookup cache

private static class ViewHolder { TextView

namaBarang,nomor,jumlahBarang,keterangan; }

public BarangAdapterHolder(Context context, ArrayList<Barang> barang) {

super(context, R.layout.view_list_barang, barang);

}

@Override

public View getView(int position, View convertView, ViewGroup parent) {

// Get the data item for this position Barang barang = getItem(position);

// Check if an existing view is being reused, otherwise inflate the view

ViewHolder viewHolder; // view lookup cache stored in tag

if (convertView == null) {

viewHolder = new ViewHolder(); LayoutInflater inflater =

LayoutInflater.from(getContext()); convertView =

inflater.inflate(R.layout.view_list_barang, parent, false);

viewHolder.namaBarang = (TextView) convertView.findViewById(R.id.namaBarang);

viewHolder.jumlahBarang = (TextView) convertView.findViewById(R.id.jumlahBarang); viewHolder.nomor = (TextView) convertView.findViewById(R.id.textNomor);

(6)

viewHolder = (ViewHolder) convertView.getTag();

}

// Populate the data into the template view using the data object

viewHolder.namaBarang.setText(Html.fromHtml("<b>"+barang. getNamaBarang()+"<b>"));

viewHolder.jumlahBarang.setText("Jumlah Stok : "+Html.fromHtml(barang.getJumlahBarang()));

viewHolder.keterangan.setText(Html.fromHtml(barang.getKet erangan()));

//viewHolder.nomor.setText(String.valueOf(barang.getIdBar ang()+1));

// Return the completed view to render on screen return convertView;

} }

4. InsertActivity.java

package com.example.dedi;

/**

* Class InsertActivity

* @version 1.0 Dec 18, 2011

* @author Agus Haryanto (agus.superwriter@gmail.com) * @website http://agusharyanto.net

*/

import java.io.BufferedReader; import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.UnsupportedEncodingException; import java.net.URLEncoder;

import org.apache.http.HttpResponse;

import org.apache.http.client.HttpClient;

import org.apache.http.client.methods.HttpGet;

import org.apache.http.impl.client.DefaultHttpClient; import android.app.Activity;

(7)

import android.widget.Button; import android.widget.EditText; import android.widget.ListView; import android.widget.Toast;

public class InsertActivity extends Activity { private EditText txtBarang;

private EditText txtStok;

private EditText txtKeterangan; private Button btnSimpan;

// Seusuaikan url dengan nama domain yang anda gunakan

private String url;

/**

* Method yang dipanggil pada saat aplikaasi dijalankan

* */ @Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState); setContentView(R.layout.tambah); txtBarang = (EditText)

findViewById(R.id.txtNamaBarang); txtStok = (EditText) findViewById(R.id.txtStok);

txtKeterangan = (EditText) findViewById(R.id.txtKeterangan);

btnSimpan = (Button) findViewById(R.id.btnSimpan);

// daftarkan even onClick pada btnSimpan btnSimpan.setOnClickListener(new

Button.OnClickListener() { @Override

public void onClick(View v) {

try {

//url =

"http://10.0.2.2/barang/addbarang.php";

// setiap parameter yang akan dikirim melalui http

// harus encode agar

(8)

String namaBarang =

URLEncoder.encode(txtBarang.getText().toString(), "utf-8");

String stok =

URLEncoder.encode(txtStok.getText().toString(), "utf-8"); String keterangan =

URLEncoder.encode(txtKeterangan.getText().toString(), "utf-8");

url =

"http://10.0.2.2/barang/addbarang.php?namaBarang=" + namaBarang + "&stok=" + stok+ "&keterangan=" +

keterangan;

exec(url);

} catch (UnsupportedEncodingException e) {

// TODO Auto-generated catch block

e.printStackTrace(); }

} });

}

public void exec(String url) {

//url += "/bsscan/cari_barang.php"; //url +="?barcode="+barcode;

//url +="?foto="+foto;

HttpConnection httpConnection = new

HttpConnection(url, new HttpConnection.ConnectHandler() { @Override

public void onStart() {

// Your codes which want to run before execute connection

}

@Override

public void onFinish(String response) {

Toast.makeText(InsertActivity.this,

(9)

//txtResult.setText(Html.fromHtml(response.toString( )));

//txtResult.setText(Html.fromHtml("<table><tr><td>as d</td><td>asd</td></tr><tr><td>asd</td><td>asd</td></tr>< /table>"));

//contentImg.setImage(response);

// Your codes which want to run after execute connection.

// You can use 'response' string in your codes.

}

@Override

public void onFault(String response, String error) {

///contentTxt.setText(response + "no data " +error);

// Your codes which want to run after fault connection.

// You can use 'response' and 'error' strings in your codes.

} });

httpConnection.connect(); }

/**

* Method untuk Mengirimkan data kes erver event by button login diklik

*

* @param view */

public void getRequest(String Url) {

Toast.makeText(this, "Tambah Data " + Url + " ", Toast.LENGTH_SHORT)

.show();

HttpClient client = new DefaultHttpClient(); HttpGet request = new HttpGet(url);

try {

(10)

Toast.makeText(this, "Tambah Data " + request(response) + " ",

Toast.LENGTH_SHORT).show(); } catch (Exception ex) {

Toast.makeText(this, "Tambah Data Gagal !", Toast.LENGTH_SHORT)

.show(); }

}

/**

* Method untuk Menenrima data dari server *

* @param response * @return

*/

public static String request(HttpResponse response) {

String result = "";

try {

InputStream in = response.getEntity().getContent();

BufferedReader reader = new BufferedReader(

new InputStreamReader(in)); StringBuilder str = new StringBuilder(); String line = null;

while ((line = reader.readLine()) != null) {

str.append(line + "\n"); }

in.close();

result = str.toString(); } catch (Exception ex) {

result = "Error"; }

return result; }

}

(11)

5. JSONActivity.java

package com.example.dedi;

import java.io.BufferedReader; import java.io.InputStream;

import java.io.InputStreamReader; import java.util.ArrayList;

import org.apache.http.HttpResponse;

import org.apache.http.client.HttpClient;

import org.apache.http.client.methods.HttpGet;

import org.apache.http.impl.client.DefaultHttpClient; import org.json.JSONArray;

import org.json.JSONException; import org.json.JSONObject; import android.app.Activity; import android.os.Bundle; import android.text.Html;

import android.widget.ListView; import android.widget.TextView; import android.widget.Toast;

public class JSONActivity extends Activity{ private JSONObject jobject;

ArrayList<Barang> listBarang = new ArrayList<Barang>();

private String xResult =""; TextView txtResult;

private String url =

"http://10.0.2.2/barang/daftarbarang.php";

public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);

setContentView(R.layout.dafarbarang); txtResult =

(TextView)findViewById(R.id.TextViewResult); //xResult = getRequest(url);

exec("AS"); //try{

// parse(txtResult);

//}catch (Exception e){

// e.printStackTrace();

(12)

public void exec(String barcode) {

//url += "/bsscan/cari_barang.php"; //url +="?barcode="+barcode;

//url +="?foto="+foto;

HttpConnection httpConnection = new

HttpConnection(url, new HttpConnection.ConnectHandler() { @Override

public void onStart() {

// Your codes which want to run before execute connection

}

@Override

public void onFinish(String response) {

listBarang =

getDataBarangFromJsonArray(response);

BarangAdapterHolder adapter = new

BarangAdapterHolder(JSONActivity.this, listBarang);

ListView listView = (ListView)

findViewById(R.id.listView1);

listView.setAdapter(adapter);

//txtResult.setText(Html.fromHtml(response.toString( )));

//txtResult.setText(Html.fromHtml("<table><tr><td>as d</td><td>asd</td></tr><tr><td>asd</td><td>asd</td></tr>< /table>"));

//contentImg.setImage(response);

// Your codes which want to run after execute connection.

// You can use 'response' string in your codes.

}

@Override

public void onFault(String response, String error) {

///contentTxt.setText(response + "no data " +error);

// Your codes which want to run after fault connection.

(13)

} });

httpConnection.connect(); }

public ArrayList<Barang>

getDataBarangFromJsonArray(String dataSoal) {

ArrayList<Barang> listDataBarang = new ArrayList<Barang>();

JSONArray jsonArray = null; try {

jsonArray = new JSONArray(dataSoal);

listDataBarang = Barang.fromJson(jsonArray); } catch (JSONException e) {

e.printStackTrace(); }

return listDataBarang; }

// najam

private void parse(TextView txtResult) throws Exception {

jobject = new JSONObject(xResult);

JSONArray menuitemArray = jobject.getJSONArray("stok");

String sret ="";

for (int i=0; i < menuitemArray.length(); i++){

sret +=

menuitemArray.getJSONObject(i).getString("nm_barang").toS tring()+" : ";

//System.out.println(menuitemArray.getJSONObject(i). get("nm_barang").toString());

//System.out.println(menuitemArray.getJSONObject(i). get("jum_barang").toString());

sret +=

menuitemArray.getJSONObject(i).getString("jum_barang").to String()+"\n";

sret +=

(14)

//System.out.println(menuitemArray.getJSONObject(i). get("ket").toString());

//sret

+=menuitemArray.getJSONObject(i).getString("ket").toStrin g()+"\n";

}

txtResult.setText(sret);

// TODO Auto-generated method stub

}

public String getRequest(String Url){ String sret="";

HttpClient client = new DefaultHttpClient(); HttpGet request = new HttpGet(Url);

try{

HttpResponse response = client.execute(request);

sret = request(response); /*coba

Toast toast =

Toast.makeText(getApplicationContext(),

request(response),

Toast.LENGTH_SHORT);

toast.show();*/ }catch (Exception ex){

Toast.makeText(this,"Gagal "+sret, Toast.LENGTH_SHORT).show();

}

return sret; }

public static String request (HttpResponse response ){

String result =""; try{

InputStream in = response.getEntity().getContent();

BufferedReader reader = new BufferedReader(new InputStreamReader(in));

StringBuilder str = new StringBuilder(); String line = null;

(15)

str.append(line + "\n"); }

in.close();

result=str.toString();

}catch (Exception ex){ result = "Error"; }

return result; }

}

6. HttpConncetion.java

package com.example.dedi;

import android.os.AsyncTask;

import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import

org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpGet;

import org.apache.http.client.methods.HttpPost;

import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import org.apache.http.util.EntityUtils;

import java.io.IOException;

import java.io.UnsupportedEncodingException; import java.net.MalformedURLException;

import java.util.ArrayList;

public class HttpConnection extends AsyncTask<Void, Void, Void> {

private ConnectHandler connectHandler;

private ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>();

private String url; public String response;

private String responseCharset = "utf-8"; private boolean fault = true;

(16)

public HttpConnection(String url, ConnectHandler connectHandler) {

this.url = url;

this.connectHandler = connectHandler; }

public HttpConnection(String url, String outputCharset, ConnectHandler connectHandler) { this.url = url;

this.responseCharset = outputCharset; this.connectHandler = connectHandler; }

public void setHttpConnectionHandler(ConnectHandler connectHandler) {

this.connectHandler = connectHandler; }

public void setUrl(String url) { this.url = url;

}

public void

setPostParameters(ArrayList<NameValuePair> postParameters) {

this.postParameters = postParameters; }

public void clearPostParameters() {

postParameters = new ArrayList<NameValuePair>(); }

public void addPostParameters(String key, String value) {

if (postParameters == null) clearPostParameters();

postParameters.add(new BasicNameValuePair(key, value));

}

public void connect() { execute();

}

(17)

protected void onPreExecute() { super.onPreExecute();

connectHandler.onStart(); }

@Override

protected Void doInBackground(Void... params) { try {

DefaultHttpClient httpClient = new DefaultHttpClient();

HttpResponse httpResponse; if (postParameters == null) clearPostParameters();

if (postParameters.isEmpty()) {

HttpGet httpGet = new HttpGet(url); httpResponse =

httpClient.execute(httpGet); } else {

HttpPost httpPost = new HttpPost(url); httpPost.setEntity(new

UrlEncodedFormEntity(postParameters)); httpResponse =

httpClient.execute(httpPost); }

HttpEntity httpEntity = httpResponse.getEntity();

response = EntityUtils.toString(httpEntity, responseCharset);

fault = false;

} catch (UnsupportedEncodingException e) { error = e.getMessage();

} catch (MalformedURLException e) { error = e.getMessage();

} catch (IOException e) { error = e.getMessage(); }

return null; }

@Override

protected void onPostExecute(Void result) { super.onPostExecute(result);

(18)

interface ConnectHandler { void onStart();

void onFinish(String response);

void onFault(String response, String error); }

}

7. Close.java

package com.example.dedi;

import java.io.BufferedReader; import java.io.InputStream;

import java.io.InputStreamReader; import org.apache.http.HttpResponse; import android.app.Activity;

import android.app.AlertDialog; import android.app.Dialog;

import android.content.Context;

import android.content.DialogInterface; import android.os.Bundle;

import android.view.KeyEvent; import android.view.Menu; import android.view.View;

import android.view.View.OnClickListener; import android.widget.Button;

public class Close extends Activity {

final Context context = this; private Button button;

final Dialog dialog = new Dialog(this);

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState); setContentView(R.layout.keluar);

dialog.setContentView(R.layout.keluar);

button = (Button) findViewById(R.id.btnExit);

button.setOnClickListener(new OnClickListener(){ public void onClick(View v) {

(19)

}); }

2. Kode Program Layout xml

1. activity_main.xml <FrameLayout

xmlns:android="http://schemas.android.com/apk/res/android "

xmlns:tools="http://schemas.android.com/tools" android:id="@+id/container"

android:layout_width="match_parent" android:layout_height="match_parent"

tools:context="com.example.dedi.MainActivity" tools:ignore="MergeRootFrame" />

2. daftarbarang.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout

xmlns:android="http://schemas.android.com/apk/res/android "

android:orientation="vertical" android:layout_width="fill_parent"

xmlns:tools="http://schemas.android.com/apk/res/andr oid"

android:layout_height="fill_parent">

<TextView

android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Tugas Akhir" />

<TextView

(20)

<TextView

android:layout_width="fill_parent" android:id="@+id/TextViewResult" android:layout_height="wrap_content" android:text="Hasil" />

<ListView

tools:id="@+id/listView1"

tools:layout_width="match_parent" tools:layout_height="wrap_content" > </ListView>

</LinearLayout>

3. tambah.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout

xmlns:android="http://schemas.android.com/apk/res/android "

android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" >

<TextView

android:id="@+id/TextView03"

android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Nama Barang :" />

<EditText

android:id="@+id/txtNamaBarang" android:layout_width="fill_parent" android:layout_height="wrap_content" android:ems="10" >

<requestFocus /> </EditText>

<TextView

android:id="@+id/TextView01"

(21)

</TextView>

<EditText

android:id="@+id/txtStok"

android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="" >

</EditText>

<TextView

android:id="@+id/TextView02"

android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Keterangan :" >

</TextView>

<EditText

android:id="@+id/txtKeterangan" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="" >

</EditText>

<Button

android:id="@+id/btnSimpan"

android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Simpan" >

</Button>

</LinearLayout>

4. view_list_barang.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout

xmlns:android="http://schemas.android.com/apk/res/android "

android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical">

<TextView

(22)
(23)

/>

</LinearLayout>

5. fragment_main.xml <RelativeLayout

xmlns:android="http://schemas.android.com/apk/res/android "

xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"

android:layout_height="match_parent"

android:paddingBottom="@dimen/activity_vertical_margin"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin"

tools:context="com.example.dedi.MainActivity$PlaceholderF ragment" >

<TextView

android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" />

</RelativeLayout>

6. keluar.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout

xmlns:android="http://schemas.android.com/apk/res/android "

android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView

android:id="@+id/author_name"

(24)

android:layout_height="wrap_content" android:text="test"/>

<Button

android:id="@+id/btnExit"

android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Exit" />

(25)

SURAT KETERANGAN

Hasil Uji Program Tugas Akhir

Yang bertanda tangan di bawah ini, menerangkan bahwa Tugas Akhir Mahasiswa Program Diploma 3 Teknik Informatika :

Nama : Maulana Dedy Fauzi NIM : 122406116

Program Studi : TEKNIK INFORMATIKA

Judul TA : Sistem Informasi Manajemen Barang Berbasis Android

Telah melakukan test Program Tugas Akhir Mahasiswa tersebut di atas tanggal ...Juni 2016.

Dengan Hasil : Sukses/Gagal

Demikian diterangkan untuk digunakan sebagai syarat pendaftaran Ujian Meja Hijau Tugas Akhir Mahasiswa bersangkutan di Departemen Matematika FMIPA USU Medan.

Medan, Juni 2016 Dosen Pembimbing,

(26)

KEMENTERIAN PENDIDIKAN NASIONAL UNIVERSITAS SUMATERA UTARA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM Jl. Bioteknologi No.1 Kampus USU Padang Bulan Medan-20155

Telp. (061) 8211050, Fax. (061) 8214290

KARTU BIMBINGAN TUGAS AKHIR MAHASISWA

Nama Mahasiswa : MAULANA DEDY FAZUI Nomor Stambuk : 122406116

Judul Tugas Akhir : SISTEM INFORMASI MANAJEMEN BARANG BERBASIS ANDROID

Dosen Pembimbing : Prof. Dr. Opim Salim Sitompul, M.Sc Tanggal Mulai Bimbingan :

Tanggal Selesai Bimbingan :

No. Tanggal Asisten Bimbingan

Pembahasan pada Asistensi Mengenai, pada

Bab :

Paraf Dosen Pembimbing

Keterangan

1. 2. 3. 4. 5. 6.

 Kartu ini harap dikembalikan ke Departemen Matematika bila bimbingan telah selesai.

Diketahui, Disetujui,

Ketua Prog.Studi D3Teknik Informatika, Dosen Pembimbing,

Dr. Elly Rosmaini, M.Si. Prof. Dr. Opim Salim Sitompul, M.Sc

Referensi

Dokumen terkait

Tujuan penelitian ini adalah Menganalisa hubungan depresi dengan kadar [9] gula darah acak pada penderita Diabetes Mellitus tipe 2 di Ruang Dahlia RSUD Jombang.. Desain penelitian

Daya serap air yang ditunjukkan pada Gambar 1, memberikan kecenderungan yang linier, dengan nilai R 2 = 0.869, artinya bahwa sebanyak 86,9% dari total daya

The main objectives of this study are the (1) measurement and mapping of the spatial distribution of the deformation rates in the study area; (2) analysis of

Sistem penilaian dengan system KPI, selain dapat mengukur kinerja orang per orang, juga bisa dilakukan untuk melakukan pengukuran kinerja secara kelompok, baik itu

Dengan menggunakan Akibat 2.3 ini, dapat dikonstruksi sebuah aljabar graf pada graf- berhingga baris tanpa sources seperti halnya pada graf berarah, dinotasikan dengan

Level 3 ini aktor harus memakan lebih banyak keju dan dihadapkan dengan musuh yang lebih banyak maka dari itu pada level 3 ini pemain harus lebih berhati-hati

informasi manajemen rumah sakit adalah suatu sistem berbasis komputer yang.. menghasilkan sekumpulan informasi yang telah diolah dan saling

Pada tahap pelaksanaan, kegiatan pembelajaran dibagi menjadi tiga bagian yaitu kegiatan awal, kegiatan inti dan kegiatan penutup. Pada kegiatan awal dimulai dengan