Mengetahui,
Ketua Program Studi Pembimbing PKL/KP ,
(. . . . . . . . . . . . . …..) (. . . . . . . . . ……... . .)
NIK. . . . . . . . . . . NIDN. .. . . . . . . . . .
HALAMAN PENGESAHAN
Praktik Kerja Lapangan/Kerja Praktik
KATA PENGANTAR
Puji syukur kehadirat Tuhan Yang Maha Esa yang telah memberi kekuatan
kepada penulis sehingga mampu menyelesaikan Praktek Kerja Lapangan/PKL
hingga dapat menyelesaikan laporan tugas praktek ini.
Laporan tugas praktek ini disusun guna memenuhi syarat kelulusan mata
kuliah PKL yang ada di semester 7 pada IT Telkom Purwokerto Fakultas
Teknologi Industri dan Informatika program diploma S1 Teknik Informatika.
Kegiatan PKL ini bertujuan untuk memberikan kesempatan kepada mahasiswa
tingkat akhir yang akan lulus untuk belajar mengembangkan ilmu pengetahuan
dan potensi yang dimiliki dengan mengaplikasikan ilmunya di bidang pekerjaan
nantinya serta dapat menjadi tolak ukur tingkat ketrampilan mahasiswa.
Pada PKL serta pembuatan laporannya tak lepas dari bantuan dari berbagai
pihak, baik dari pihak PT Telkom Divisi Regional IV Semarang yang telah
memberikan kesempatan bagi penulis untuk bisa praktek, kemudian pihak kampus
IT Telkom Purwokerto yang sudah memberikan bimbingan serta arahan sebelum
terjun untuk praktek.
Terimakasih penulis ucapkan kepada Orang tua penulis yang selalu
memberikan doa dan support sehingga praktek ini berjalan lancer tanpa adanya
halangan apapun. Terimakasih penulis ucapkan kepada Ibu Yania Maria Christie
selaku manager sekaligus pembimbing lapangan bidang Information System di
PT Telkom Divisi Regional IV Semarang yang sudah bersedia membimbing
praktek kerja di PT Telkom. Terimakasih pula kapada Ibu Rima Dias Ramadhani
selaku dosen pembimbing praktek kerja yang sudah memberikan bimbingan serta
arahan baik saat praktek maupun memberikan masukan saat penulisan laporan.
Terakhir, terimakasih kepada teman-teman kelompok penulis yang sudah mau
bekerja sama menyelesaikan tugas yang diberikan saat praktek kerja.
ABSTRAK
DAFTAR ISI
DAFTAR GAMBAR
DAFTAR LAMPIRAN
BAB I
PENDAHULUAN
A. Latar Belakang
KBM Online yang merupakan website yang hanya dapat diakses
oleh karyawan PT Telkom Indonesia se-Jawa. Digunakan untuk
memberikan fasilitas kepada karyawan yang ingin meminjam kendaraan
kantor guna kepentingan pekerjaannya. Namun, website tersebut juga
memiliki permasalahan dalam memasukkan data untuk kepentingan
peminjaman secara manual sehingga user harus mengetik satu per satu tiap
kolom. Dalam kenyataanya, masih terdapat kesalahan seperti memasukkan
data alamat penjemputan, kemudian alamat tujuan yang cenderung belum
detail. Berdasarkan permasalahan diatas dan mobilitas karyawan yang
cukup tinggi PT Telkom perlu mengupgrade versi website ke versi
android agar lebih efisien dalam proses peminjaman.
Salah satu cara dalam pengisian form peminjaman pada aplikasi
tersebut agar lebih efisien yaitu dengan mengganti form input alamat
penjemputan dan alamat tujuan dengan menghubungkan langsung kepada
google maps. Dengan demikian, aplikasi KBM Online tersebut dapat
memberikan lebih detail informasi tentang alamat penjemputan serta
alamat tujuan. Selain itu, aplikasi ini sekaligus bisa memberikan informasi
seperti jarak yang ditempuh, perkiraan waktu perjalanan, dan perkiraan
biaya yang harus dikeluarkan untuk pengisian bahan bakar.
B. Tujuan
Tujuan dari aplikasi yang dibuat yaitu sebagai berikut:
1. Efisiensi dalam mengisi form peminjaman mobil
2. Memberikan data detail khususnya alamat karena terhubung
dengan google maps.
3. Memudahkan dalam pemesanan karena dapat dibuka melalui
aplikasi android, sehingga mobilitas tidak terganggu.
C. Ruang Lingkup
Pada penelitian ini menerapkan session yang akan digunakan pada
login aplikasi peminjaman mobil KBM Online. Session yang terdapat pada
aplikasi ini berjumlah tiga session dengan fungsi tiap session yang
berbeda.
D. Aspek Umum Dan Kelembagaan
1. Metode Wawancara
Wawancara yang dilakukan langsung oleh penulis dan
rekan tim kepada Manager dari Information System (IS) untuk
mengumpulkan data dan kebutuhan yang diperlukan oleh sistem.
2. Metode Kajian Pustaka
Metode ini untuk mengkaji permasalahan untuk mencari
solusi dengan referensi dari internet dengan sumber terpercaya
maupun e-book.
3. Metode Diskusi
Diskusi yang dilakukan dengan rekan tim PKL sebagai
pembagian tugas koding aplikasi.
F. Sistematika Penulisan Laporan
Untuk memudahkan pemahaman dalam penyampaian laporan
PKL, dibagi dalam beberapa bab, yakni:
BAB I PENDAHULUAN
Berisi mengenai uraian permasalahan, tujuan serta gambaran
umum tentang perusahaan tempat PKL dan metode-metode yang
digunakan dalam penyusunan laporan.
BAB II LANDASAN TEORI
Berisi tentang teori pemahaman yang digunakan pada aplikasi
sebagai acuan untuk membuat aplikasi berbasis mobile ini agar sesuai
dalam pembuatan.
BAB III ANALISA DAN PEMBAHASAN
Berisi tentang pekerjaan yang dilakukan selama PKL diawali
dengan gambaran umum pekerjaan, kemudian gambaran secara spesifik
pekerjaan pada bidang tersebut. Selain itu berisi tentang pekerjaan yang
dikerjakan selama PKL yang berupa koding membuat aplikasi.
BAB IV PENUTUP
Berisi tentang kesimpulan dari hasil pekerjaan selama kegiatan
PKL serta saran yang ditujukan kepada tempat perusahaan PKL penulis.
BAB II
LANDASAN TEORI
A. Aplikasi
Aplikasi merupakan suatu unit perangkat lunak yang dibuat untuk
menunjang kebutuhan dari berbagai aktivitas manusia. Aplikasi ini dibuat
dengan menuliskan sebuah program atau perintah mulai dari interface nya,
kemudian fitur-fitur yang ada di aplikasi dibuat dengan menulis program.
Penulisan sebuah program diperlukan bahasa pemrograman untuk bisa
menulis programnya[1]. Terdapat banyak bahasa pemrograman untuk
membuat sebuah aplikasi, salah satunya yaitu bahasa pemrograman
android dan bahasa pemrograman java.
B. Mobile Application
Mobile application yaitu sebuah program aplikasi yang dapat
diggunakan walaupun pengguna aplikasi berpindah-pindah tidak hanya di
satu lokasi saja. Aplikasi ini dapat diakses dari berbagai perangkat seperti
nirkabel, pager, telepon seluler, smartphone, dan perangkat lain yang
sejenisnya[1].
C. Android Operation System
Android merupakan sebuah sistem operasi yang digunakan untuk
perangkat mobile, dengan basis Linux yang memiliki cakupan mulai dari
sistem operasi, middleware, dan aplikasi[2].
D. Android Studio
Android Studio merupakan sebuha perangkat lunak IDE
(Integrated Development Environment) yang digunakan untuk android
dengan pengembang dari Eclipse IDE, yang dibuat berdasarkan IDE Java
popular[3].
E. Java
Java adalah sebuah bahasa pemrograman tingkat tinggi
berorientasi objek yang mendukung mulai website, aplikasi, dan
client/server. Bahasa pemrograman Java ini mulai diedarkan atau dibuat
oleh Sun Microsystem1 pada awal tahun 1996[4].
F. Session
Session merupakan sebuah fitur fungsi pada pemrograman yang
berfungsi menggunakan form login untuk menyimpan data dari sebuah
akun agar tetap tersimpan pada server[5].
G. Shared Preferences
Merupakan proses untuk menyimpan data dalam beberapa nilai
dalam bentuk suatu group key atau bisa juga disebut dengan preferences.
Data tersebut bersifat primitive yang ada pada file internal yang memiliki
pasangan yaitu key-value[6].
BAB III
ANALISA DAN PEMBAHASAN
A. Pekerjaan/Kegiatan
PT Telkom Divisi Regional IV Semarang memberikan pekerjaan
kepada penulis selama satu bulan yang dimulai dari 31 Juli 2018 hingga 31
Agustus 2018 yaitu dengan membuat aplikasi. Aplikasi tersebut berawal
dari website yang nantinya dibuat berbasis mobile dikerjakan oleh penulis
beserta rekan rekan kelompok kerja PKL. Tools yang digunakan untuk
membuat aplikasi mobile tersebut menggunakan android studio. Bahasa
pemrograman yang digunakan pada android studio yaitu berupa bahasa
pemrograman android dan bahasa pemrograman java. Penulis beserta
rekan kerja kelompok PKL diharuskan membuat aplikasi tersebut dengan
sedikit memodifikasi aplikasi tersebut agar terhubung dengan google
maps.
Google maps tersebut nantinya akan mengganti form titik
penjemputan beserta titik tujuan yang awalnya di website tersebut masih
mengisi form secara manual, sehingga tingkat keakurasian masih kurang
tepat. Selain itu, fungsi lain dapat memperkirakan jarak tempuh,waktu
tempuh hingga konsumsi bbm, sehingga biaya yang harus dikeluarkan
untuk bbm bisa sesuai dengan penggunaan mobil. Dikarenakan masa PKL
hanya satu bulan yang dirasa kurang oleh pembimbing lapangann, maka
aplikasi tersebut dibuat dengan pembagian tugas kepada penulis dan tiga
rekan lainnya. Penulis mendapat tugas yaitu dengan membuat session
untuk aplikasi tersbut.
Selain pembimbing dari pihak institut, penelitian ini juga memiliki
pembimbing lapangan yang bertugas memberikan tugas kepada penulis
dan rekan kerja, kemudian pengawasan beserta evaluasi kerja yang
dilakukan setiap hari sebelum jam pulang kerja. Melalui buku catatan
kegiatan yang sudah disediakan dari pihak institut, pembimbing lapangan
melaporkan kegiatan penulis selama PKL. Sampai pada saat akhir masa
nilai method checklogin diupdate menjadi true saat user menekan tombol
login pada login activity, dan akan bernilai false jika user menekan tombol
exit yang akan membuat method logout. Session akan dideklarasikan
secara global pada setiap activity session, kemudian mengambil konteks
yang ada pada method oncreate. Pada dashboard berisi tombol yang akan
memunculkan jika login sebagai admin, maka tombol approval akan
terlihat, jika sebagai user maka tombol approval akan menghilang.
Session yang pertama berada pada layout splash screen berfungsi
untuk pengecekan awal apakah sudah pernah login (session) pada hari ini
atau belum login. Jika sudah login pada hari ini, maka layout login akan
dilewati sehingga langsung pada dashboard. Selain itu session pada splash
screen juga untuk mengecek bahwa user login sebagai admin atau bukan
sebagai admin.
Pada session yang dibuat login tersebut memiliki fungsi kelanjutan
dari splash screen untuk yang belum login pada satu hari tersebut. Session
ini akan memastikan bahwa user apakah admin atau user biasa, jika
sebagai admin, maka session akan dibuat, begitupun jika sebagai user
maka session dibuat.
Gambar 3.2 (Kiri) Login melalui Admin (Kanan) Login melalui User
BAB IV
PENUTUP
A. Kesimpulan
Kesimpulan yang dapat dipelajari dengan adanya session pada aplikasi
KBM Online versi android dalam penelitian kali ini yaitu:
1. Mengurangi penumpukan layout yang aktif di belakang layar sehingga
aplikasi dapat bekerja lebih ringan.
2. Memudahkan user untuk tidak kembali login ke dalam aplikasi pada
satu hari jika sebelumnya sudah login karena session akan menyimpan
data login sementara.
3. Dapat memverifikasi akun, sehingga aplikasi hanya bisa dibuka dalam
1 akun saja.
B. Saran
Saran untuk penelitian kali ini yaitu:
1. Bahan improvisasi kedepan baik dalam jangka panjang maupun jangka
pendek untuk perusahaan.
2. Efisiensi dalam menggunakan aplikasi tanpa harus login kembali
ketika ingin menggunakan aplikasi.
DAFTAR PUSTAKA
LAMPIRAN
MainActivity.java
package com.example.daya.kbmonline;
import android.content.Intent;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import com.facebook.stetho.Stetho;
Session.java
package com.example.daya.kbmonline;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
class Session {
private static final String KEY_USERNAME = "KEY_USERNAME";
private static final String KEY_ID_USERS = "KEY_ID_USERS";
private static final String KEY_PASSWORD = "KEY_PASSWORD";
//CUNSTRUCTOR
Session(Context context) {
this.context = context;
session =
PreferenceManager.getDefaultSharedPreferences(context);
editor = session.edit();
}
editor.putString(KEY_USERNAME, username);
editor.putString(KEY_PASSWORD, password);
editor.putString(KEY_ID_USERS, id);
editor.putBoolean(KEY_IS_USER_LOGIN, true);
editor.putBoolean(KEY_CHECK_ADMIN, isAdmin);
editor.apply();
}
//method yang digunakan untuk mengecek apakah user session aktif atau
tidak
public Boolean checkLogin() {
boolean s = session.getBoolean(KEY_IS_USER_LOGIN, false);
return s;
}
//mendapatkan id users
public String getId_users() {
return session.getString(KEY_ID_USERS, null);
}
DashboardActivity.java
package com.example.daya.kbmonline;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageButton;
import android.widget.TextView;
import com.facebook.stetho.Stetho;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dashboard);
Stetho.initializeWithDefaults(this);
session = new Session(getApplicationContext());
//casting widget
final ImageButton logout, tentang, detail, pesan;
logout = findViewById(R.id.logout);
detail = findViewById(R.id.detail);
pesan = findViewById(R.id.order);
TextView txtDetail = findViewById(R.id.txt_detail);
logout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
session.logout();
finish();
}
});
detail.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(intent);
}
});
}else {
detail.setVisibility(View.GONE);
txtDetail.setVisibility(View.GONE);
pesan.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
store.clearstore();
Intent intent = new Intent(DashboardActivity.this,
PesanActivity.class);
startActivity(intent);
}
});
}
}
LoginActivity.java
package com.example.daya.kbmonline;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.support.design.widget.TextInputLayout;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Html;
import android.text.Spanned;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.facebook.stetho.Stetho;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
Stetho.initializeWithDefaults(this);
initCreateAccountTextView();
initViews();
buttonLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
username = editTextEmail.getText().toString();
password = editTextPassword.getText().toString();
if (username.equals("") || password.equals("")) {
Toast.makeText(LoginActivity.this, "username dan password
tidak boleh kosong", Toast.LENGTH_SHORT).show();
}else {
new BackgroundPesan().execute(username, password);
}
}
});
}
@Override
protected String doInBackground(String... strings) {
String username = strings[0];
String password= strings[1];
String register_url =
"http://tiktokandmusically.000webhostapp.com/kbm_online/login.php";
try {
URL url = new URL(register_url);
HttpURLConnection httpURLConnection =
(HttpURLConnection) url.openConnection();
httpURLConnection.setRequestMethod("POST");
httpURLConnection.setDoOutput(true);
httpURLConnection.setDoInput(true);
String post_data =
URLEncoder.encode("username", "UTF-8") + "=" +
URLEncoder.encode(username, "UTF-8") + "&" +
URLEncoder.encode("password", "UTF-8") + "=" +
URLEncoder.encode(password, "UTF-8");
OutputStream outputStream =
httpURLConnection.getOutputStream();
BufferedWriter bufferedWriter = new BufferedWriter(new
OutputStreamWriter(outputStream, "UTF-8"));
bufferedWriter.write(post_data);
bufferedWriter.flush();
bufferedWriter.close();
InputStream inputStream =
httpURLConnection.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new
InputStreamReader(inputStream, "iso-8859-1"));
StringBuilder result = new StringBuilder();
String line;
while ((line = bufferedReader.readLine()) != null) {
result.append(line);
}
bufferedReader.close();
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
try {
progDailog.setMessage("Loading...");
progDailog.setIndeterminate(false);
progDailog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progDailog.setCancelable(false);
progDailog.show();
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
protected void onPostExecute(String s) { //s akan berisi text
"login_failed jika error, dan id user yg login jika sukses
progDailog.dismiss();
if (s.equals("LOGIN_FAILED")) {
Log.d(TAG, "onPostExecute error coy dikarenakan : "+s);
} else {
}else {
//AuthAdmin.setAdmin(false);
session.createsession(s,username,password,false);
}
/*yang asli
session.createsession(s,username,password); //saat request login
diterima oleh webserver maka sesion dibuat
*/