Aplikasi Portal Akademik Mobile Berbasis Android
L
A
M
P
I
RA
N
LISTING PROGRAM Login.java package portal.akademik; import
android.app.Activity;
import android.content.Intent; import android.os.Bundle; import
android.widget.EditText;
import android.widget.Toast; import android.view.View; import
android.view.Window;
import android.view.WindowManager; import android.view.View.OnClickListener; import
android.widget.Button;
import java.util.ArrayList; import
org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair; import
portal.akademik.CustomHttpClient;
public class Login extends Activity{
EditText nim, pass; Button masuk, keluar; /** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState) {
.onCreate(savedInstanceState);
super
requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.main); nim = (EditText) findViewById(R.id.login_nim); pass = (EditText) findViewById(R.id.login_pass); masuk = (Button) findViewById(R.id.masuk); keluar = (Button) findViewById(R.id.keluar); //daftarkan event onClick pada (Button) masuk masuk.setOnClickListener(new View.OnClickListener(){ @Override void onClick(View v) {
public
ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>(); postParameters.add(new BasicNameValuePair("nim", nim.getText().toString())); postParameters.add(new BasicNameValuePair("pass", pass.getText().toString())); String response = null; try { response
= CustomHttpClient.executeHttpPost("http://10.0.2.2/ta/Login_portal.php", postParameters);
String res = response.toString(); res = res.trim(); res = res.replaceAll("\\s+","");
if(res.equals("1")) {
Toast.makeText(getBaseContext(), "Berhasil Login.", Toast.LENGTH_SHORT).show(); //tampilkan
Intent intent = null; intent = new Intent(Login.this, Khs.class); startActivity(intent); //menyimpan value nim pada method setNim di kelas SessionLogin
SessionLogin.setNim(nim.getText().toString()); }else { Toast.makeText(getBaseContext(), "Gagal Login. Coba Lagi.", Toast.LENGTH_SHORT).show();//gagal } }catch (Exception e){ e.printStackTrace();
} }
}); keluar.setOnClickListener(new OnClickListener(){ void onClick(View v){
public
nim.setText(""); pass.setText(""); }
}); }
}
Khs.java package
import
super
void onCreate(Bundle savedInstanceState){
public Button tampil; public
RadioButton ganjil, genap;
public Spinner spinSemester; public
class Khs extends Activity{
import android.widget.Spinner; public
android.widget.RadioGroup;
android.widget.RadioButton;
portal.akademik;
import android.widget.ArrayAdapter; import android.widget.Button; import
android.widget.AdapterView.OnItemSelectedListener;
import android.view.WindowManager; import android.widget.AdapterView; import
android.view.Window;
import android.os.Bundle; import android.view.View; import
android.content.Intent;
import android.app.Activity; import
java.util.List;
import java.util.ArrayList; import
.onCreate(savedInstanceState); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.showdata);
// SPINNER UNTUK TAHUN AKADEMIK spinSemester = (Spinner) findViewById(R.id.spinner1); List<String> spinner = new ArrayList<String>(); spinner.add("2011"); spinner.add("2012"); spinner.add("2013"); spinner.add("2014"); ArrayAdapter<String> spinSem = ArrayAdapter<String>(this,
new
android.R.layout.simple_spinner_item, spinner); spinSem.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_it );
em
spinSemester.setAdapter(spinSem); spinSemester.setOnItemSelectedListener(new OnItemSelectedListener(){ @Override void onItemSelected(AdapterView<?> parent, View view,
public int position, long id) {
Semester.setTahun(spinSemester.getSelectedItem().toString()); }
@Override void onNothingSelected(AdapterView<?> arg0) {
public
} }); // RADIOBUTTON UNTUK SEMESTER ganjil = (RadioButton) findViewById(R.id.ganjil); genap = (RadioButton) findViewById(R.id.genap); ganjil.setOnClickListener(new RadioGroup.OnClickListener(){ void onClick(View v) {
public
Semester.setSemester(ganjil.getText().toString()); }
}); genap.setOnClickListener(new RadioGroup.OnClickListener(){
public void onClick(View v) {
Semester.setSemester(genap.getText().toString()); }
}); tampil = (Button) findViewById(R.id.tampilkan); tampil.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
Intent intent = null; intent = new Intent(Khs.this, InformasiHasilStudi.class); startActivity(intent);
} });
}
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost; importimport
android.widget.TextView;
import android.view.Window; import android.view.WindowManager; import
android.util.Log;
import org.json.JSONException; import org.json.JSONObject; import android.app.Activity; import android.os.Bundle; import
org.json.JSONArray;
import
org.apache.http.impl.client.DefaultHttpClient;
org.apache.http.client.HttpClient;
InformasiHasilStudi.java package portal.akademik; import
import org.apache.http.NameValuePair; import org.apache.http.client.ClientProtocolException; import
org.apache.http.HttpResponse;
import org.apache.http.HttpEntity; import
java.util.ArrayList;
import java.io.InputStream; import java.io.InputStreamReader; import
java.io.IOException;
import
java.io.BufferedReader;
android.widget.Toast;
public class InformasiHasilStudi extends Activity{
String nimAndroid = SessionLogin.getNim(); String semAndroid = Semester.getSemester(); String thnAndroid = Semester.getTahun(); TextView kode, nm_mk, sks, nilai, nim, totalsks, ip, ipk; TextView sem, thn;
public void onCreate(Bundle savedInstanceState){ super .onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.tampil_nilai2); nim = (TextView) findViewById(R.id.nimAndroid); sem = (TextView) findViewById(R.id.semester); thn = (TextView) findViewById(R.id.tahun); kode = (TextView) findViewById(R.id.kode); nm_mk = (TextView) findViewById(R.id.nm_mk); sks = (TextView) findViewById(R.id.sks); nilai = (TextView) findViewById(R.id.nilai); totalsks = (TextView) findViewById(R.id.totalsks); ip = (TextView) findViewById(R.id.ip); tampil();
} nim.setText(nimAndroid); sem.setText(semAndroid); thn.setText(thnAndroid); String url =
"http://10.0.2.2/ta/tampil_nilai.php?nim="+nimAndroid.toString()+"&thnakademik="+thnAn droid.toString()+"&semester="+semAndroid.toString(); HttpClient httpClient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost(url.trim()); ArrayList<NameValuePair> param = new ArrayList<NameValuePair>();
try {
httpPost.setEntity(new UrlEncodedFormEntity(param)); HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity(); InputStream in = httpEntity.getContent(); BufferedReader read = new BufferedReader(new InputStreamReader(in)); String content = ""; String line = ""; while((line = read.readLine())!=null){ content += line; } Log.d("ADBUG", "content: " + content); //JSON
//ingat inisialisasi //double totalNilai = 0;
int totalsSks = 0;
bobot = 0;
double double skor; double totalSkor = 0;
IP = 0;
double
try { JSONArray jArr = new JSONArray(content); String KODE = ""; String NM_MK = ""; String SKS = ""; String NILAI = ""; for(int i=0;i<jArr.length();i++){ JSONObject jObj = jArr.getJSONObject(i);
//Mengambil value dari setiap field tabel di database String Kode = jObj.getString("kodemk"); String Nm_Mk = jObj.getString("namamk"); String Sks = jObj.getString("sks"); String Nilai = jObj.getString("nilai"); if(jObj.getString("nilai").equals("A")) { bobot=4; }
{ bobot=3; } else if(jObj.getString("nilai").equals("B+")) { bobot=3.5; } else if(jObj.getString("nilai").equals("C")) { bobot=2; } else if(jObj.getString("nilai").equals("C+")) { bobot=2.5; } else if(jObj.getString("nilai").equals("D")) { bobot=1; } else if(jObj.getString("nilai").equals("E")) { bobot=0; } //Menghitung jumlah nilai skor = bobot * Integer.parseInt(jObj.getString("sks")); //Menghitung jumlah sks //Jumlahkan sks, ambil dari string, kemudian konversi ke integer totalsSks = totalsSks + Integer.parseInt(jObj.getString("sks")); //Menghitung jumlah nilai setelah dikalikan dengan bobot dan sks
//Menghitung IP
IP = totalSkor/ totalsSks; KODE += Kode+"\n"; NM_MK += Nm_Mk+"\n"; SKS += Sks+"\n"; NILAI += Nilai+"\n"; } //Menampilkan hasil parsing data dari mysql kode.setText(KODE.toString()); nm_mk.setText(NM_MK.toString()); sks.setText(SKS.toString()); nilai.setText(NILAI.toString()); //menampilkan totalsks, ip, dan ipk totalsks.setText(String.valueOf(totalsSks)); ip.setText(String.valueOf(IP)); } catch (JSONException e) { e.printStackTrace(); } }else{ Toast.makeText(this, "Error" , Toast.LENGTH_LONG).show(); } } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace();
} }
SessionLogin.java package portal.akademik;
class SessionLogin {
public
static String nim; static String pass; public static String getPassword() { return pass; } public static void setPassword(String p) { pass = p; } public static String getNim() { return nim; } public static void setNim(String u) { nim = u; } }
Semester.java
portal.akademik;
package
static String semester;
String tahun;
static public static String getSemester(){
semester;
return
} public static void setSemester(String s){ = s;
semester
} public static String getTahun(){
return tahun;
} public static void setTahun(String t){
tahun = t;
} }
ClientToServer.java
package portal.akademik; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URI; import java.util.ArrayList; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.conn.params.ConnManagerParams; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.params.HttpConnectionParams; import org.apache.http.params.HttpParams; public class ClientToServer { public static final int HTTP_TIMEOUT = 30 * 1000; private static HttpClient client; private static HttpClient getHttpClient() { if (client == null) { client = new DefaultHttpClient(); final HttpParams parameterHttp = client.getParams(); HttpConnectionParams.setConnectionTimeout(parameterHttp,
HTTP_TIMEOUT); ConnManagerParams.setTimeout(parameterHttp, HTTP_TIMEOUT);
} return client; } public static String eksekusiHttpPost(String url,
ArrayList<NameValuePair> postParameter) throws Exception { BufferedReader in = null; try {
HttpClient klien = getHttpClient(); HttpPost req = new HttpPost(url); UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity( postParameter); req.setEntity(formEntity); HttpResponse jawaban = klien.execute(req); in = new BufferedReader(new InputStreamReader(jawaban.getEntity()
StringBuffer sb = new StringBuffer(""); String line = ""; String NL = System.getProperty("line.separator"); while ((line = in.readLine()) != null) { sb.append(line + NL);
} in.close(); String hasil = sb.toString(); return hasil;
} finally { if (in != null) { in.close();
} }
} public static String eksekusiHttpGet(String url) throws Exception { BufferedReader in = null; try {
HttpClient hc = getHttpClient(); HttpGet req = new HttpGet(); req.setURI(new URI(url)); HttpResponse resp = hc.execute(req); in = new BufferedReader(new InputStreamReader(resp.getEntity()
.getContent())); StringBuffer sb = new StringBuffer(""); String line = ""; String NL = System.getProperty("line.separator"); while ((line = in.readLine()) != null) { sb.append(line + NL);
} in.close(); return hasil; } finally { if (in != null) { in.close();
} }
} }
CustomHttpClient.java package portal.akademik; import java.io.BufferedReader; import java.io.IOException; import
java.io.InputStreamReader;
import java.net.URI; import java.util.ArrayList; import
org.apache.http.HttpResponse;
import org.apache.http.NameValuePair; import org.apache.http.client.HttpClient; 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.conn.params.ConnManagerParams;
import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.params.HttpConnectionParams; import
org.apache.http.params.HttpParams;
public class CustomHttpClient {
/** The time it takes for our client to timeout */ public static final int HTTP_TIMEOUT = 30 * 1000 ; // milliseconds /** Single instance of our HttpClient */ private static HttpClient mHttpClient; /** * Get our single instance of our HttpClient object.
- @return an HttpClient object with connection parameters set
- / private static HttpClient getHttpClient() { if (mHttpClient == null) { mHttpClient = new DefaultHttpClient(); final HttpParams params = mHttpClient.getParams(); HttpConnectionParams.setConnectionTimeout(params, HTTP_TIMEOUT); HttpConnectionParams.setSoTimeout(params, HTTP_TIMEOUT); ConnManagerParams.setTimeout(params, HTTP_TIMEOUT); } return mHttpClient; }
/**
- Performs an HTTP Post request to the specified url with the * specified parameters. >@param url The web address to post the request to
- @param postParameters The parameters to send via the request
- @return The result of the request
- @throws Exception
public static String executeHttpPost(String url, ArrayList<NameValuePair> postParameters) throws Exception { BufferedReader in = null; try { HttpClient client = getHttpClient(); HttpPost request = new HttpPost(url); UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(postParameters); request.setEntity(formEntity); HttpResponse response = client.execute(request); in = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); StringBuffer sb = new StringBuffer(""); String line = ""; String NL = System.getProperty("line.separator"); while ((line = in.readLine()) != null) { sb.append(line + NL); } in.close(); String result = sb.toString(); return result; } finally { if (in != null) { try { in.close(); } catch (IOException e) { e.printStackTrace(); } } } } /**
- @param url The web address to post the request to
- @return The result of the request
- @throws Exception */ public static String executeHttpGet(String url) throws Exception { BufferedReader in = null; try { HttpClient client = getHttpClient(); HttpGet request = new HttpGet(); request.setURI(new URI(url)); HttpResponse response = client.execute(request); in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
StringBuffer sb = new StringBuffer(""); String line = ""; String NL = System.getProperty("line.separator"); while ((line = in.readLine()) != null) { sb.append(line + NL); } in.close(); String result = sb.toString(); return result; } finally { if (in != null) { try { in.close(); } catch (IOException e) { e.printStackTrace();
} } } }
main.xml (Login.java)
<?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"> <ImageView android:layout_width="match_parent" android:id="@+id/image" android:src="@drawable/mipa" android:layout_height="wrap_content" android:paddingTop="10dip" android:paddingBottom="10dip">
</ImageView> <TextView android:id="@+id/textView1" android:text="APLIKASI INFORMASI HASIL STUDI" android:textStyle="bold" android:textSize="16sp" android:layout_gravity="center" android:layout_width="wrap_content" android:layout_height="wrap_content"
<TextView android:id="@+id/textView2" android:text="D-III TEKNIK INFORMATIKA" android:textStyle="bold" android:textSize="16sp" android:layout_gravity="center" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingBottom="20dip"/>
<ScrollView android:layout_width="fill_parent" android:layout_height="fill_parent">
<LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="N I M" android:textStyle="bold"/> <EditText android:id="@+id/login_nim" android:layout_height="wrap_content" android:layout_width="fill_parent">
</EditText> <TextView android:text="S A N D I" android:layout_width="wrap_content" android:layout_height="wrap_content"> </TextView> <EditText android:id="@+id/login_pass" android:layout_height="wrap_content" android:layout_width="fill_parent" android:inputType="textPassword">
</EditText> <Button android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="LOGIN" android:textStyle="bold" android:id="@+id/masuk" android:onClick="loginHandler" android:layout_gravity="center"/>
<Button android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="RESET" android:textStyle="bold" android:id="@+id/keluar" android:onClick="exitHandler" android:layout_gravity="center"/>
</LinearLayout> </ScrollView>
showdata.xml (Khs.java)
<?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" android:layout_gravity="center"> <RadioGroup android:id="@+id/radioGroup" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical"> <RadioButton android:id="@+id/ganjil" android:text="ganjil" android:layout_width="match_parent" android:layout_height="wrap_content"/> <RadioButton android:id="@+id/genap" android:text="genap" android:layout_width="match_parent" android:layout_height="wrap_content"/>
</RadioGroup> <Spinner android:id="@+id/spinner1" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_marginTop="2dp"/> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:layout_gravity="center"> <Button android:text="Tampilkan" android:id="@+id/tampilkan" android:layout_width="wrap_content" android:layout_height="wrap_content"/>
</LinearLayout> </LinearLayout>
tampil_nilai.xml (InformasiHasilStudi.java)
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="fill_parent" android:layout_width="fill_parent" android:padding="15dip" android:orientation="vertical"> <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_gravity="center" android:paddingLeft="20dip" android:paddingRight="20dip"> <TextView android:text="INFORMASI HASIL STUDI" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_gravity="center" android:layout_marginBottom="20dip" android:textSize="20sp" android:textStyle="bold"/>
<TextView android:text="Login: " android:id="@+id/nimLogin" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_gravity="left" android:layout_marginBottom="20dip" android:textSize="10sp" android:textStyle="normal"/>
<TableLayout android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_gravity="center" android:stretchColumns="*"> <TableRow>
<TextView android:text="KODE" android:textSize="14sp" android:textStyle="bold" android:gravity="center"/> android:text="MATAKULIAH" android:textSize="14sp" android:textStyle="bold" android:gravity="center"/>
<TextView android:text="NILAI" android:textSize="14sp" android:textStyle="bold" android:gravity="center"/>
</TableRow> <LinearLayout android:orientation="horizontal" android:layout_height="fill_parent" android:layout_width="fill_parent" android:layout_gravity="center" > <TextView android:id="@+id/kodemk" android:textSize="12sp" android:textStyle="italic" android:gravity="center" android:layout_height="wrap_content" android:layout_width="wrap_content"/>
<TextView android:id="@+id/namamk" android:textSize="12sp" android:textStyle="italic" android:gravity="center" android:layout_height="wrap_content" android:layout_width="wrap_content"/>
<TextView android:text="@+id/nilai2" android:textSize="12sp" android:textStyle="italic" android:gravity="center" android:layout_height="wrap_content" android:layout_width="wrap_content"/>
</LinearLayout> </TableLayout>
</LinearLayout> </LinearLayout>
login_portal.php
<?php $nim=$_POST['nim']; $pass=trim($_POST['pass']); mysql_connect("localhost","root",""); mysql_select_db("portal");
$query = "SELECT * FROM login WHERE nim = '$nim' AND pass = $pass'"; $result = mysql_query($query) or die("Unable to verify user because : " . mysql_error()); if(mysql_num_rows($result) == 1){ echo 1; else { // print status message echo 0;
} ?>
tampil_nilai.php
<?php mysql_connect("localhost","root",""); mysql_select_db("portal"); $nimAndroid = $_GET['nim']; $semAndroid = $_GET['semester']; $thnAndroid = $_GET['thnakademik']; $sqlString = "SELECT data_ip2.kodemk, data_ip2.namamk, data_ip2.sks, data_ip2.nilai FROM data_ip2 WHERE data_ip2.thnakademik ='$thnAndroid' AND data_ip2.semester = '" . $semAndroid . "' AND data_ip2.nim ='$nimAndroid'"; $rs = mysql_query($sqlString); if($rs){ while($objRs = mysql_fetch_assoc($rs)){ $output[] = $objRs; } echo json_encode($output); } mysql_close();
KEMENTERIAN PENDIDIKAN NASIONAL UNIVERSITAS SUMATERA UTARA FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM (FMIPA) JL. BIOTEKNOLOGI NO. 1 KAMPUS USU Telp. (061) 8214290
MEDAN
- – 20155, EMAIL :
KARTU BIMBINGAN TUGAS AKHIR MAHASISWA Nama Mahasiswa : Evalyna Christie S Nomor Stambuk : 092406170 Judul Tugas Akhir : Aplikasi Portal Akademik Mobile Berbasis Android Dosen Pembimbing 1 : Partano Siagian M.Sc Tanggal Mulai Bimbingan : Tanggal Selesai Bimbingan :
TANGGAL PEMBAHASAN PADA PARAF DOSEN No ASSISTEN ASSISTEN MENGENAI KETERANGAN PEMBIMBING
1 ACC PROPOSAL
2 ACC BAB 1
3 ACC BAB 2
4 ACC BAB 3
5 ACC BAB 4
6 ACC BAB 5
7 UJI PROGRAM
Kartu ini harap dikembalikan kejurusan Matematika
Bila Bimbingan Mahasiswa telah Selesai Diketahui Disetujui Ketua Jurusan Matematika Pembimbing Utama/
Penanggung Jawab Prof. Dr. Tulus, M.Si Partano Siagian M.Sc NIP. 19620901198803100 Nip.130877994
Hasil Uji Program Tugas Akhir
Yang bertanda tangan dibawah ini, menerangkan bahwa Tugas Akhir Mahasiswa Program D-III Teknik Informatika : Nama : EVALYNA CHRISTIE S Nomor Induk Mahasiswa : 092406170 Program Studi : D-III TEKNIK INFORMATIKA Judul Tugas Akhir : APLIKASI PORTAL AKADEMIK MOBILE
BERBASIS ANDROID Telah melaksanakan tes program Tugas Akhir dari mahasiswa tersebut yang dilaksanakan pada tanggal 01 Juni 2012.
Dengan Hasil : Sukses / Gagal Demikian diterangkan untuk digunakan melengkapi syarat pendaftaran Ujian Meja Hijau Tugas Akhir Mahasiswa yang bersangkutan di Departemen Matematika FMIPA USU Medan.
Medan, 01 Juni 2012 Dosen Pembimbing Partano Siagian M.Sc NIP. 130877994