Senin, 25 Maret 2019

Membuat Aplikasi Ujian Berbasis Android

Assalamu'alaikum Warahmatullahi Wabarakatuh 


Pada kesempatan kali ini saya mencoba membuat aplikasi ujian berbasis android. Aplikasi ini saya buat sebagai pengumpulan tugas Ujian Tengah Semester Mobile Programming. 

Aplikasi ujian online ini adalah aplikasi yang bertujuan untuk mempermudah melakukan ujian, yaitu secara online. Dengan adanya aplikasi ini diharapkan dapat mempermudah pengguna untuk melakukan ujian secara online dan tidak perlu menggunakan alat tulis untuk melakukan pengerjaan. Aplikasi ini saya buat dengan menggunakan Eclipse dan melakukan running aplikasi langsung menggunakan ponsel.


Berikut deskripsi dari aplikasi yang saya buat :

  1. Membuat file Android Project Baru dengan nama UTSRosya 
  2. Membuat Activity besrta file Java-nya, diantaranya :
    • activity_main (login form), 
    • activity_welcome (berhasil login), 
    • activity_uts (soal ujian), 
    • activity_ujian_selesai (cetak nilai)
Berikut ini saya sertakan detail xml graphic dan source code .xml beserta source code .java



  • activity_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"
        tools:context=".MainActivity" >
        
    <LinearLayout
     android:id="@+id/linearLayout1"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_alignParentLeft="true"
     android:layout_alignParentRight="true"
     android:layout_alignParentTop="true"
     android:layout_marginTop="27dp">
    
     <TextView
         android:id="@+id/textView1"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:gravity="center"
         android:text="Silahkan Login"
         android:textAppearance="?android:attr/textAppearanceMedium"
         android:textSize="24sp" 
         android:textStyle="normal|bold" />
    
    </LinearLayout>
       
    <LinearLayout
     android:id="@+id/linearLayout2"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_alignParentLeft="true"
     android:layout_alignParentRight="true"
     android:layout_below="@+id/linearLayout1"
     android:orientation="vertical"
     android:layout_marginTop="57dp">
     
     <TextView
      android:id="@+id/textView2"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:text="User Name"/>
    
     <EditText
         android:id="@+id/username"
         android:layout_width="match_parent"
         android:layout_height="wrap_content" >
    
    </EditText>
    
    </LinearLayout>
    
    <LinearLayout
     android:id="@+id/linearLayout3"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_alignParentLeft="true"
     android:layout_alignParentRight="true"
     android:layout_below="@+id/linearLayout2"
     android:orientation="vertical">
    
     <TextView
      android:id="@+id/textView3"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:text="Password"/>
    
     <EditText
         android:id="@+id/password"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:inputType="textPassword" />
     
    </LinearLayout>
    
    <LinearLayout
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_alignParentLeft="true"
     android:layout_alignParentRight="true"
     android:layout_below="@+id/linearLayout3">
    
     <Button
         android:id="@+id/btnLogin"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_marginTop="67dp"
         android:layout_weight="3"
         android:text="Login" />
    
    </LinearLayout>
    
    </RelativeLayout>
    
    
    Berikut adalah graphical layout dari activity_main.xml
    
    • activity_welcome.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" tools:context=".Welcome" > <LinearLayout android:id="@+id/linearLayout1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_alignParentTop="true"> <TextView android:text="Selamat Datang" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="27dp" android:id="@+id/textView" android:textAlignment="center" android:gravity="center" android:textSize="30sp" android:textStyle="normal|bold" android:textAppearance="?android:attr/textAppearanceMedium" /> </LinearLayout> <TextView android:text="Ujian Tengah Semester" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/textView4" android:layout_below="@+id/textView3" android:textAlignment="center" android:gravity="center" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_marginTop="70dp" android:textSize="18sp" /> <TextView android:text="Silahkan tekan tombol MULAI untuk mulai Ujian." android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/textView4" android:layout_below="@+id/textView3" android:textAlignment="center" android:gravity="center" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_marginTop="170dp" android:textSize="18sp" /> <TextView android:text="Selamat Mengerjakan !!!" android:layout_width="match_parent" android:layout_height="wrap_content" android:textStyle="normal|bold" android:id="@+id/textView4" android:layout_below="@+id/textView3" android:textAlignment="center" android:gravity="center" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_marginTop="300dp" android:textSize="18sp" /> <Button android:id="@+id/btnMulai" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="410dp" android:text="MULAI" > </Button> </RelativeLayout>
    Berikut adalah graphical layout dari activity_welcome.xml
    • activity_uts.xml
    <?xml version="1.0" encoding="utf-8"?>
    <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" tools:context=".UTS" > <TextView android:id="@+id/textView1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:text="TextView" android:textSize="18sp" /> <RadioGroup android:id="@+id/radioGroup1" android:layout_marginTop="60dp" android:layout_width="wrap_content" android:layout_height="wrap_content" > <RadioButton android:id="@+id/radio0" android:layout_width="wrap_content" android:layout_height="wrap_content" android:checked="true" android:text="RadioButton" /> <RadioButton android:id="@+id/radio1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="RadioButton" /> <RadioButton android:id="@+id/radio2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="RadioButton" /> <RadioButton android:id="@+id/radio3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="RadioButton" /> </RadioGroup> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="200dp" android:orientation="horizontal" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Kembali" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Selanjutnya" /> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <Button android:id="@+id/button3" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="380dp" android:text="Selesai" /> </LinearLayout> </RelativeLayout>
    Berikut adalah graphical layout dari activity_uts.xml
    
    
    
    
    • activity_ujian_selesai.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" tools:context=".UjianSelesai" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:text="Large Text" android:textAppearance="?android:attr/textAppearanceLarge" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="40dp" android:text="Large Text" android:textAppearance="?android:attr/textAppearanceLarge" /> <TextView android:id="@+id/textView3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="70dp" android:text="Large Text" android:textAppearance="?android:attr/textAppearanceLarge" /> <TextView android:id="@+id/textView4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="100dp" android:text="Large Text" android:textAppearance="?android:attr/textAppearanceLarge" /> <Button android:id="@+id/button1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="400dp" android:text="Keluar" /> </RelativeLayout>
    Berikut graphical layout dari activity_ujian_selesai.xml
    Setelah selesai dengan activity, kita lanjutkan dengan source code .java
    • MainActivity.java
    package com.tugas.utsrosya; import android.os.Bundle; import android.app.Activity; import android.app.AlertDialog; import android.content.Intent; import android.view.Menu; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; //public class MainActivity extends Activity { public class MainActivity extends Activity { EditText username, password; Button btnLogin; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); username = (EditText) findViewById(R.id.username); password = (EditText) findViewById(R.id.password); btnLogin = (Button)findViewById(R.id.btnLogin); btnLogin.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String usernameKey = username.getText().toString(); String passwordKey = password.getText().toString(); if (usernameKey.equals("161011400074") && passwordKey.equals("123456")){ //jika login berhasil Toast.makeText(getApplicationContext(), "LOGIN SUKSES", Toast.LENGTH_SHORT).show(); Intent intent = new Intent(MainActivity.this, Welcome.class); MainActivity.this.startActivity(intent); finish(); }else { //jika login gagal AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setMessage("Username atau Password Anda salah!") .setNegativeButton("Retry", null).create().show(); } } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_main, menu); return true; } }
    
    
    • Welcome.java
    package com.tugas.utsrosya; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class Welcome extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_welcome); Button btnMulai=(Button)findViewById(R.id.btnMulai); //CQuiz=(Button)findViewById(R.id.button2); btnMulai.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent=new Intent(Welcome.this,UTS.class); startActivity(intent); finish(); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_welcome, menu); return true; } }
    • UTS.Java
    package com.tugas.utsrosya;
    import android.os.Bundle; import android.app.Activity; import java.util.ArrayList; import java.util.HashMap; import android.content.Intent; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.RadioGroup.OnCheckedChangeListener; import android.widget.TextView; public class UTS extends Activity { Button selanjutnya,kembali,selesai; RadioGroup rg; RadioButton rb1,rb2,rb3,rb4; TextView setque; int index=0; String MyCAns,UserCAns=""; int totalCurrect,totalQues=10,totalSkeep,totalWrrong; ArrayList<HashMap<String, String>> MyArrList = new ArrayList<HashMap<String, String>>(); HashMap<String, String> map; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_uts); kembali=(Button)findViewById(R.id.button1); selanjutnya=(Button)findViewById(R.id.button2); selesai=(Button)findViewById(R.id.button3); rg=(RadioGroup)findViewById(R.id.radioGroup1); rb1=(RadioButton)findViewById(R.id.radio0); rb2=(RadioButton)findViewById(R.id.radio1); rb3=(RadioButton)findViewById(R.id.radio2); rb4=(RadioButton)findViewById(R.id.radio3); rb1.setChecked(false); rb2.setChecked(false); rb3.setChecked(false); rb4.setChecked(false); setque=(TextView)findViewById(R.id.textView1); kembali.setVisibility(View.GONE); selesai.setVisibility(View.GONE); set_Your_Ques(); set_Ques_One(); rg.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { RadioButton rb=(RadioButton)findViewById(checkedId) ; UserCAns=rb.getText().toString().trim(); } }); kembali.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if(UserCAns.equals("")){ totalSkeep++; }else if(UserCAns.equals(MyCAns)){ totalCurrect++; }else{ totalWrrong++; } UserCAns=""; rb1.setChecked(false); rb2.setChecked(false); rb3.setChecked(false); rb4.setChecked(false); back(); } }); selanjutnya.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { kembali.setVisibility(View.VISIBLE); if(UserCAns.equals("")){ totalSkeep++; }else if(UserCAns.equals(MyCAns)){ totalCurrect++; }else{ totalWrrong++; } UserCAns=""; rb1.setChecked(false); rb2.setChecked(false); rb3.setChecked(false); rb4.setChecked(false); next(); } }); selesai.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent=new Intent(UTS.this,UjianSelesai.class); intent.putExtra("totalquestion", "Total Pertanyaan : "+totalQues); intent.putExtra("totalcurrect", "Total Nilai : "+totalCurrect); intent.putExtra("totalSkeep", "Total Dilewati : "+totalSkeep); intent.putExtra("totalWrrong", "Total Salah : "+totalWrrong); startActivity(intent); finish(); } }); } private void set_Ques_One() { map=MyArrList.get(index); setque.setText(map.get("Ques").toString().trim()); rb1.setText(map.get("A1").toString().trim()); rb2.setText(map.get("A2").toString().trim()); rb3.setText(map.get("A3").toString().trim()); rb4.setText(map.get("A4").toString().trim()); MyCAns=map.get("CA1").toString().trim(); //Toast.makeText(getApplicationContext(),"1"+index,2000).show(); } public void next() { if(index==9){ kembali.setVisibility(View.GONE); selanjutnya.setVisibility(View.GONE); selesai.setVisibility(View.VISIBLE); }else{ index++; //Toast.makeText(getApplicationContext(),""+index,2000).show(); map=MyArrList.get(index); setque.setText(map.get("Ques").toString().trim()); rb1.setText(map.get("A1").toString().trim()); rb2.setText(map.get("A2").toString().trim()); rb3.setText(map.get("A3").toString().trim()); rb4.setText(map.get("A4").toString().trim()); MyCAns=map.get("CA1").toString().trim(); } } public void back() { if(index==0){ kembali.setVisibility(View.GONE); selesai.setVisibility(View.GONE); }else{ index--; map=MyArrList.get(index); setque.setText(map.get("Ques").toString().trim()); rb1.setText(map.get("A1").toString().trim()); rb2.setText(map.get("A2").toString().trim()); rb3.setText(map.get("A3").toString().trim()); rb4.setText(map.get("A4").toString().trim()); MyCAns=map.get("CA1").toString().trim(); } } public void set_Your_Ques() { //Q 1 map=new HashMap<String, String>(); map.put("Ques", "1. Method yang digunakan untuk mengkonversi nilai string ke integer dalam Java adalah ?"); map.put("A1", "parseInt()"); map.put("A2", "converseInt()"); map.put("A3", "Cint()"); map.put("A4", "ChangeInt()"); map.put("CA1","parseInt()"); MyArrList.add(map); //Q 2 map=new HashMap<String, String>(); map.put("Ques", "2. Software yang digunakan dalam pengembangan Android adalah ?"); map.put("A1", "Android Studio"); map.put("A2", "Androi Virtual Device Manager"); map.put("A3", "Standart Development Kit Manager"); map.put("A4", "Semua jawaban benar"); map.put("CA1","Semua jawaban benar"); MyArrList.add(map); //Q 3 map=new HashMap<String, String>(); map.put("Ques", "3. Bahasa pemrograman android berbasis ?"); map.put("A1", "Java"); map.put("A2", "PHP"); map.put("A3", "C++"); map.put("A4", "Semua jawaban benar"); map.put("CA1","Java"); MyArrList.add(map); //Q 4 map=new HashMap<String, String>(); map.put("Ques", "4. Android tidak bisa dikembangkan pada komputer dengan sistem operasi ?"); map.put("A1", "Windows XP"); map.put("A2", "DOS"); map.put("A3", "Red Hat"); map.put("A4", "Semua jawaban benar"); map.put("CA1","DOS"); MyArrList.add(map); //Q 5 map=new HashMap<String, String>(); map.put("Ques", "5. Contoh brainware adalah ?"); map.put("A1", "Programmer"); map.put("A2", "Laptop"); map.put("A3", "Android Studio"); map.put("A4", "Semua jawaban benar"); map.put("CA1","Programmer"); MyArrList.add(map); //Q6 map=new HashMap<String, String>(); map.put("Ques", "6. Pemilik dari Android saat ini adalah ?"); map.put("A1", "Android inc."); map.put("A2", "Google inc."); map.put("A3", "HTC"); map.put("A4", "Semua jawaban benar"); map.put("CA1","Google inc."); MyArrList.add(map); //Q7 map=new HashMap<String, String>(); map.put("Ques", "7. Berikut ini adalah keyword yang terdapat dalam Java, kecuali ?"); map.put("A1", "Goto"); map.put("A2", "Break"); map.put("A3", "If"); map.put("A4", "String"); map.put("CA1","String"); MyArrList.add(map); //Q8 map=new HashMap<String, String>(); map.put("Ques", "8. Komentar program dalam java dapat menggunakan perintah ?"); map.put("A1", "/*...*/ saja"); map.put("A2", "// saja"); map.put("A3", "// dan /*...*/"); map.put("A4", "#, // dan /*...*/"); map.put("CA1","// dan /*...*/"); MyArrList.add(map); //Q9 map=new HashMap<String, String>(); map.put("Ques", "9. Berikut ini adalah hak akses yang dapat ditambahkan didepan method Java, kecuali ?"); map.put("A1", "Static"); map.put("A2", "Public"); map.put("A3", "Private"); map.put("A4", "Protected"); map.put("CA1","Static"); MyArrList.add(map); //Q10 map=new HashMap<String, String>(); map.put("Ques", "10. Method yang digunakan untuk mengubah panjang data StringBuffer adalah ?"); map.put("A1", "length()"); map.put("A2", "setLength()"); map.put("A3", "Changelength()"); map.put("A4", "reverse()"); map.put("CA1","setLength()"); MyArrList.add(map); } }
    • UjianSelesai.java
    package com.tugas.utsrosya; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; public class UjianSelesai extends Activity { TextView t1,t2,t3,t4; Button b1; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_ujian_selesai); t1=(TextView)findViewById(R.id.textView1); t2=(TextView)findViewById(R.id.textView2); t3=(TextView)findViewById(R.id.textView3); t4=(TextView)findViewById(R.id.textView4); b1=(Button)findViewById(R.id.button1); t1.setText(getIntent().getExtras().getString("totalquestion")); t2.setText(getIntent().getExtras().getString("totalcurrect")); t3.setText(getIntent().getExtras().getString("totalSkeep")); t4.setText(getIntent().getExtras().getString("totalWrrong")); b1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent=new Intent(UjianSelesai.this,MainActivity.class); startActivity(intent); finish(); } }); }
    } Setelah source code .xml dan .java selesai, selanjutnya kita edit konfigurasi AndroidManifest.xml seperti berikut. <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.tugas.utsrosya" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.tugas.utsrosya.MainActivity" android:label="@string/app_name" android:windowSoftInputMode="adjustResize|stateVisible" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="com.tugas.utsrosya.Welcome" android:label="@string/title_activity_welcome" > </activity> <activity android:name="com.tugas.utsrosya.UTS" android:label="@string/title_activity_uts" > </activity> <activity android:name="com.tugas.utsrosya.UjianSelesai" android:label="@string/title_activity_ujian_selesai" > </activity> </application> </manifest>
    Berikut tampilan ketika aplikasi telah di running dan terinstal
    Berikut video hasil Run Aplication langsung melalui device handphone.
    Demikian tugas Mobile Programming ini saya buat, mohon maaf apabila masih banyak kekurangan dalam pengerjaannya dikarnakan aplikasi ini masih jauh dari sempurna.
    Wassalamu'alaikum Warahmatullahi Wabarakatuh

    1 komentar:

    1. izin sedot gan, lagi nyari referensi nih, oh ya perkenalkan nama saya Yuli Suseno dari kampus ISB Atma Luhur. terima kasih

      BalasHapus