LEMBAR PENGESAHAN
Mengetahui,
Penulis
Mohamad Noor RizalNIS 05061 11523
Menyetujui,
Kepala Jurusan
Teknik Informatika
Drs. Purwanto SST, MT
Pembimbing
Kurnia Jaya Eliazar
i
ABSTRAK
Dokumen yang berjudul “Java Horoscope” ini merupakan sebuah dokumentasi
aplikasi dan juga sebagai user manual atau panduan untuk pengguna aplikasi ini
mengenai penggunaan dan detil dari software program aplikasi sederhana yang
bernama sama dengan aplikasinya, “Java Horoscope”. Dokumentasi ini dibuat
untuk melengkapi program sehingga dapat menambah nilai lebih dalam
pemasaran program.
ii
KATA PENGANTAR
Assalamu’alaikum Wr. Wb.
Puji dan syukur penulis panjatkan kehadirat Allah SWT karena telah memberikan
rahmat dan karunia-Nya sehingga penulis dapat menyelesaikan laporan tugas
akhir tahun pelajaran 2007/2008 di Sekolah Menengah Kejuruan (SMK) Negeri 4
Bandung.
Dalam kesempatan ini penulis ingin mengucapkan banyak terima kasih kepada
yang terhormat Drs. Purwanto selaku Ketua Jurusan Teknik Informatika SMKN 4
Bandung, kepada rekan-rekan yang telah membantu pengerjaan laporan ini, dan
tak lupa kepada kedua orang tua dan seluruh keluarga tercinta yang telah
memberikan do’a dan dorongan baik secara moril maupun secara materiil.
Penulis menyadari bahwa dalam penyusunan laporan ini masih banyak
kekurangan, mengingat adanya kemampuan dan pengetahuan yang kami miliki
masih sangat terbatas, maka dari itu penulis mengharapkan saran dan kritik demi
menyempurnakan laporan tugas akhir. Semoga laporan tugas akhir ini dapat
memberikan banyak manfaat.
Wassalamu’alaikum Wr. Wb.
Bandung, Juni 2008
iii
Penulis
iv
DAFTAR ISI
LEMBAR PENGESAHAN......................................................................................i
ABSTRAK...............................................................................................................ii
KATA PENGANTAR............................................................................................iii
DAFTAR ISI...........................................................................................................iv
DAFTAR GAMBAR.............................................................................................vii
DAFTAR TABEL...................................................................................................ix
BAB I PENDAHULUAN........................................................................................1
1.1 Latar Belakang...............................................................................................1
1.2 Tujuan............................................................................................................1
1.3 Manfaat..........................................................................................................2
1.4 Sistematika Penulisan....................................................................................2
BAB II TEORI DASAR..........................................................................................3
2.1 Pemograman...................................................................................................3
2.2 Perancangan...................................................................................................4
2.2.1 Diagram Alir Data...................................................................................4
2.2.2 Entity Relationship Diagram...................................................................5
v
BAB III APLIKASI JAVA HOROSCOPE.............................................................6
3.1 User Interface.................................................................................................6
3.2 Cara Pengoperasian........................................................................................6
3.3 Flowchart.......................................................................................................9
3.3.1 Class Main...............................................................................................9
3.3.1.1 Method Constuctor Main()...........................................................10
3.3.1.2 Method getUserName()................................................................13
3.3.1.3 Method keyPressed()....................................................................13
3.3.1.4 Method getZodiac()......................................................................14
3.3.1.5 Method actionPerformed()...........................................................18
3.3.1.6 Method windowClosing().............................................................19
3.3.1.7 Method main()..............................................................................19
3.3.2 Class Logo_Canvas...............................................................................20
3.3.2.1 Method Constructor Logo_Canvas................................................20
3.3.2.2 Method paint()..............................................................................20
3.3.3 Class About...........................................................................................21
3.3.3.1 Method Constructor About()........................................................21
3.3.3.2 Method paint()..............................................................................22
3.3.3.3 Method windowClosing().............................................................22
3.4 Diagram Class..............................................................................................23
vi
3.5 Deskripsi Fungsional Modul........................................................................23
BAB IV KESIMPULAN DAN SARAN...............................................................24
4.1 Kesimpulan..................................................................................................24
4.2 Saran.............................................................................................................24
4.3 Kemungkinan Pengembangan......................................................................25
DAFTAR PUSTAKA............................................................................................26
LAMPIRAN...........................................................................................................27
Script..................................................................................................................27
vii
DAFTAR GAMBAR
Gambar 3 - 1 Tampilan Utama................................................................................6
Gambar 3 - 2 Isi Data...............................................................................................7
Gambar 3 - 3 Data Invalid........................................................................................7
Gambar 3 - 4 Tekan Tombol Ramal........................................................................7
Gambar 3 - 5 Menu File...........................................................................................8
Gambar 3 - 6 Menu Help.........................................................................................8
Gambar 3 - 7 Form About........................................................................................8
Gambar 3 - 8 Flowchart Class Main.......................................................................9
Gambar 3 - 9 Flowchart Method Constructor Main 1...........................................10
Gambar 3 - 10 Flowchart Method Constructor Main 2.........................................11
Gambar 3 - 11 Flowchart Method Constructor Main 3.........................................12
Gambar 3 - 12 Flowchart Method getUserName()................................................13
Gambar 3 - 13 Flowchart Method keyPressed()....................................................13
Gambar 3 - 14 Flowchart Method getZodiak() 1...................................................14
Gambar 3 - 15 Flowchart Method getZodiak() 2...................................................15
Gambar 3 - 16 Flowchart Method getZodiak() 3...................................................16
Gambar 3 - 17 Flowchart Method getZodiak() 4...................................................17
Gambar 3 - 18 Flowchart Method actionPerformed() 1........................................18
Gambar 3 - 19 Flowchart Method actionPerformed() 2........................................19
Gambar 3 - 20 Flowchart Method windowClosing().............................................19
viii
Gambar 3 - 21 Flowchart Method main()..............................................................19
Gambar 3 - 22 Flowchart Class Logo Canvas.......................................................20
Gambar 3 - 23 Flowchart Method Constructor Logo Canvas................................20
Gambar 3 - 24 Flowchart Method paint()..............................................................20
Gambar 3 - 25 Flowchart Class About...................................................................21
Gambar 3 - 26 Flowchart Method Constructor About()........................................21
Gambar 3 - 27 Flowchart Method paint()..............................................................22
Gambar 3 - 28 Flowchart Method windowClosing().............................................22
Gambar 3 - 29 Diagram Class................................................................................23
ix
DAFTAR TABEL
Tabel 2 - 1 Simbol Data Flow Diagram...................................................................5
Tabel 2 - 2 Simbol Entity Relationship Diagram.....................................................5
Tabel 3 - 1 Deskripsi Fungsional Modul...............................................................23
x
BAB I
PENDAHULUAN
Program tidak buat semata – mata dengan tanpa alasan, tanpa masalah, dan tanpa
kebutuhan sebuah sistem tertentu. Oleh karena itu, pembuatan program yang
dilengkapi dokumentasi yang baik tak dapat dipandang sebelah mata, karena
memerlukan kompetensi yang cukup dalam teknis pembuatan software, serta
kosakata Bahasa Indonesia yang luas.
1.1 Latar Belakang
Manusia pada dasarnya tidak bisa hidup tanpa hiburan. Peranan hiburan dalam
kehidupan manusia mungkin bisa disetarakan dengan makanan. Maksudnya,
manusia pun tidak bisa hidup tanpa hiburan.
Hiburan dapat berbentuk berbagai macam. Bisa seperti apresiasi seni, menonton
film, ataupun bergurau dengan teman, bahkan dengan cara ramal-meramal.
Maka dari itu, penulis tertarik membuat program hiburan untuk mengetahui
zodiak dan meramalkan masa depan. Sebuah program sederhana bernama “Java
Horoscope” untuk meramal masa depan.
1.2 Tujuan
Tujuan dari pengerjaan tugas akhir ini adalah sebagai berikut:
1. Sebagai salahsatu syarat untuk memenuhi mata pelajaran Pemograman
Java
1
2. Siswa dapat membuat program secara mandiri
3. Siswa dapat menyusun laporan dengan benar
4. Siswa dapat menerapkan ilmu yang didapat di dalam kelas.
1.3 Manfaat
Manfaat dari pengerjaan tugas akhir ini adalah sebagai berikut:
1. Mendapat suatu gambaran akan peranan seorang pemogram dalam
kegiatan dunia industri
2. Dapat bekerja sama/berkelompok dengan sesama siswa dalam
menyelesaikan suatu tugas
3. Menghibur penggunanya.
1.4 Sistematika Penulisan
Sistematika yang digunakan dalam penulisan dokumentasi ini adalah:
BAB I PENDAHULUAN
Membahas latar belakang permasalahan, identifikasi masalah, maksud
dan tujuan, serta sistematika penulisan
BAB II TEORI DASAR
Menguraikan tentang teori-teori mengenai garis besar pemograman dan
perancangan sebuah aplikasi
BAB III APLIKASI JAVA HOROSCOPE
Menjelaskan mengenai tampilan, cara pemakaian, flowchart dan diagram
serta deskripsi rinci modul yang ada pada aplikasi ini
BAB IV KESIMPULAN DAN SARAN
Menguraikan kesimpulaln yang didapat dari permasalahan dan
pembahasan serta menguraikan saran dari kesimpulan tersebut. Di bab ini
membahas juga kemungkinan pengembangan.
2
BAB II
TEORI DASAR
Dalam pembangunan sebuah aplikasi, ada banyak sekali pilihan dalam
penggunaan bahasa pemrograman. Karena begitu banyaknya bahasa
pemrograman, maka bahasa-bahasa itu dikelompokkan menjadi kriteria-kriteria
tertentu.
2.1 Pemograman
Pemrograman dapat diklasifikasikan sebagai berikut [Rechenberg]:
1. Berorientasi prosedur (procedural oriented)
2. Berorientasi fungsi (functional oriented)
3. Berorientasi logik (logic oriented)
4. Berorientasi obyek (object oriented)
Masing-masing memiliki kelebihan tersendiri. Kadangkala dalam membangun
suatu aplikasi dibutuhkan gabungan metode pemrograman tersebut. Misalnya
dalam C++ dan Java (bahasa pemrograman berorientasi obyek), kita masih dapat
menemukan tehnik-tehnik pemrograman berorientasi prosedur dalam setiap
method/function member dalam obyek-obyeknya.
Suatu bahasa pemrograman pada asalnya hanya dapat digunakan dalam satu
metode. Pascal mulanya untuk procedural-oriented, Lisp untuk functional-
3
oriented, Smaltalk untuk object-oriented dan lain-lain. Seiring dengan
perkembangan tehnologi informasi dan komputer, puluhan bahkan ratusan bahasa
pemrograman baru lahir. Masing-masing memiliki keunikan dan kelebihan
spesifik. Ada yang khusus untuk jenis komputer tertentu, ada pula yang khusus
untuk paradigma pemograman tertentu.
Secara umum, bahasa pemrograman yang berbasiskan prosedur terdiri dari
blok/sub program. yang
memiliki dua bagian utama yaitu:
1. Bagian deklarasiBagian deklarasi merupakan bagian program untuk mendefinisikan tipe data suatu
variable, konstanta, serta fungsi dan prosedur yang akan digunakan pada program.
Selain itu, bagian deklarasi dapat juga digunakan untuk memberi nilai awal suatu
variable. Dengan kata lain, deklarasi digunakan untuk memperkenalkan suatu
nama kepada Compiler program.
2. Bagian Statement
Bagian statement merupakan bagian program yang berisi perintah yang akan
dieksekusi/dijalankan.
2.2 Perancangan
2.2.1 Diagram Alir Data
Diagram alir data adalah representasi dari aliran data dalam sebuah sistem
informasi. Tabel dibawah ini menjelaskan objek-obek yang ada didalam sebuah
diagram alir data.
4
Simbol Nama Simbol Keterangan
EntitasMenunjukkan bagian luar dari sistem
yang mempunyai hubngan dengan sistem.
ProsesMenunjukkan proses data atau informasi
yang terjadi didalam sistem
Alur Data Menunjukkan aliran data yang terjadi.
File Menunjukkan data yang ada pada sistem.
Tabel 2 - 1 Simbol Data Flow Diagram
2.2.2 Entity Relationship Diagram
Entity Relationship Diagram adalah sebuah konseptual abstrak yang
merepresentasikan struktur data. Simbol-simbol yang digunakan dalam ERD:
Simbol Nama Simbol Keterangan
Entitas Merupakan data yang dikelola.
Relasi Hubungan antara dua entitas atau lebih
5
Garis Hubung Garis hubung antara entitas dengan relasi.
Tabel 2 - 2 Simbol Entity Relationship Diagram
BAB III
APLIKASI JAVA HOROSCOPE
3.1 User Interface
Pada saat program dieksekusi, tampilannya seperti berikut:
Gambar 3 - 1 Tampilan Utama
3.2 Cara Pengoperasian
1. Isi data
6
Ada beberapa data yang harus diisi, diantaranya nama, bulan lahir, tanggal
lahir dan tahun lahir. Ini dimaksud untuk mengetahui zodiak.
Gambar 3 - 2 Isi Data
Apabila Anda mengisi textfield tahun dan memasukkan data yang invalid,
maka akan keluar peringatan berupa pesan teks dan suara.
Gambar 3 - 3 Data Invalid
Tombol “Ramal!” akan mati dan Anda harus mereset datanya lagi.
2. Tekan tombol “Ramal!”
Setelah data terisi semua, tekan tombol “Ramal!” untuk mengetahui
ramalan dan zodiak Anda.
7
Gambar 3 - 4 Tekan Tombol Ramal
8
3. Menu File
Menu File berisi tiga item, yaitu Ramal, Reset dan Exit. Item Ramal
berfungsi untuk menampilkan ramalan dan zodiak Anda setelah data diisi.
Item Reset untuk mereset data yang telah diisi. Item Exit untuk keluar dari
program
Gambar 3 - 5 Menu File
4. Menu Help
Menu Help berisi satu item yaitu About yang berfugsi untuk menampilkan
form yang berisi informasi tentang program ini
Gambar 3 - 6 Menu Help
5. Form About
Gambar 3 - 7 Form About
9
3.3 Flowchart
3.3.1 Class Main
Gambar 3 - 8 Flowchart Class Main
10
3.3.1.1 Method Constuctor Main()
Gambar 3 - 9 Flowchart Method Constructor Main 1
11
Gambar 3 - 10 Flowchart Method Constructor Main 2
12
Gambar 3 - 11 Flowchart Method Constructor Main 3
13
3.3.1.2 Method getUserName()
Gambar 3 - 12 Flowchart Method getUserName()
3.3.1.3 Method keyPressed()
Gambar 3 - 13 Flowchart Method keyPressed()
14
15
3.3.1.4 Method getZodiac()
Gambar 3 - 14 Flowchart Method getZodiak() 1
16
Gambar 3 - 15 Flowchart Method getZodiak() 2
17
Gambar 3 - 16 Flowchart Method getZodiak() 3
18
Gambar 3 - 17 Flowchart Method getZodiak() 4
19
3.3.1.5 Method actionPerformed()
Gambar 3 - 18 Flowchart Method actionPerformed() 1
20
Gambar 3 - 19 Flowchart Method actionPerformed() 2
3.3.1.6 Method windowClosing()
Gambar 3 - 20 Flowchart Method windowClosing()
21
3.3.1.7 Method main()
Gambar 3 - 21 Flowchart Method main()
3.3.2 Class Logo_Canvas
Gambar 3 - 22 Flowchart Class Logo Canvas
3.3.2.1 Method Constructor Logo_Canvas
Gambar 3 - 23 Flowchart Method Constructor Logo Canvas
22
3.3.2.2 Method paint()
Gambar 3 - 24 Flowchart Method paint()
3.3.3 Class About
Gambar 3 - 25 Flowchart Class About
23
3.3.3.1 Method Constructor About()
Gambar 3 - 26 Flowchart Method Constructor About()
24
3.3.3.2 Method paint()
Gambar 3 - 27 Flowchart Method paint()
3.3.3.3 Method windowClosing()
Gambar 3 - 28 Flowchart Method windowClosing()
25
3.4 Diagram Class
Gambar 3 - 29 Diagram Class
3.5 Deskripsi Fungsional Modul
Nama Modul Type Modul Proses
getUsername private mendapatkan data username
getZodiac private mendapatkan zodiak
actionPerformed public aksi ketika tombol ditekan
keyPressed public penanganan ketika tombol keyboard
ditekan
paint public menampilkan image ke kanvasTabel 3 - 1 Deskripsi Fungsional Modul
26
BAB IV
KESIMPULAN DAN SARAN
4.1 Kesimpulan
Setelah menyelesaikan penyusunan laporan tugas akhir ini, penulis dapat
menyimpulkan bahwa membuat program hasil kreasi sendiri itu tidak mudah. Kita
harus mengantisipasi segala kemungkinan. Bisa saja user tidak tahu cara
mengoperasikan aplikasi ini, sehingga aplikasi terhenti karena ada error, misalnya
data isian tidak invalid. Karena itu, pemahaman konsep OOP (Object Oriented
Programming) mesti diterapkan, karena sangat penting dalam dunia pemograman,
terutama pemograman bahasa Java.
4.2 Saran
Berdasarkan dari kegiatan pembuatan program sampai menjalankan program,
maka penulis memberikan saran sebagai berikut:
1. Editor yang digunakan oleh penulis, NetBean 5.5.1, membutuhkan
memory yang besar untuk menjalankannya, sehingga apabila komputer
yang digunakan tidak memiliki memory yang besar, proses editing akan
berjalan lambat. Untuk komputer yang tidak memiliki memory yang besar
lebih baik menggunakan editor seperti BlueJ, JBuilder, atau Notepad.
27
2. Komponen yang digunakan adalah AWT. Menurut beberapa narasumber,
komponen ini lebih berat daripada komponen Swing. Jadi, untuk
mendapatkan kecepatan me-load komponen, gunakan komponen Swing.
4.3 Kemungkinan Pengembangan
Program ini dapat dikembangkan menjadi lebih baik. Bisa dengan cara
memperbanyak ramalan. Jadi, pengguna tidak bosan dengan ramalan yang itu-itu
saja.
28
DAFTAR PUSTAKA
Java Source Code. (2002, Maret 15). Retrieved Juni 15, 2008, from Planet Source
Code: planet-source-code.com
Kadir, A. (2004). Pemrograman Java. Bandung: Maxicom.
29
LAMPIRAN
Script
/*
* Main.java
*
* Created on 12 Juni 2008, 13:56
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
//importing java packages
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.net.*;
/**
*
* @author Rizal
*/
public class Main extends Frame implements ActionListener, KeyListener,
WindowListener
{
//class instance
Logo_Canvas lcanv;
About abt;
Help hlp;
Ramalan rmln;
30
int rndm_ramalan;
AudioClip error; //instance AudioClip class
File fil; //instance File class
URL direct; //instance URL class
Toolkit tk; //buat toolkit
Dimension dim; //buat screen resolution
MenuBar mbar;
Menu mnu_file;
Menu mnu_help;
MenuItem mramal;
MenuItem refresh;
MenuItem exit;
MenuItem about;
Label nama;
Label tgl_lahir;
Choice tanggal;
Choice bulan;
Button ramal;
Button reset;
TextField txtnama;
TextField txttahun;
TextArea horoscope;
String get_tahun = ""; //deklarasi variable
int check_tahun = 0;
Color back, front; //instance Color class
public Main() //konstruktor
{
setTitle("Java Horoscope");
setLayout(new FlowLayout());
back = new Color(235,235,235); //bikin warna background
front = new Color(0,0,130); //bikin warna foreground
31
setBackground(back); //set warna bg jadi back
setForeground(front); //set warna fg jadi front
mbar = new MenuBar();
setMenuBar(mbar);
mnu_file = new Menu("File");
mramal = new MenuItem("Ramal!");
refresh = new MenuItem("Reset");
exit = new MenuItem("Exit");
mnu_file.add(mramal);
mnu_file.add(refresh);
mnu_file.addSeparator();
mnu_file.add(exit);
mbar.add(mnu_file);
mnu_help = new Menu("Help");
about = new MenuItem("About");
mnu_help.add(about);
mbar.add(mnu_help);
mramal.addActionListener(this);
refresh.addActionListener(this);
exit.addActionListener(this);
about.addActionListener(this);
fil=new File("user.dir");
try
{
direct=fil.toURL();
error=Applet.newAudioClip(new URL(direct,"data/error.au"));
}
catch(MalformedURLException e)
{
}
//inisialisasi Logo_Canvas
32
lcanv = new Logo_Canvas();
//inisialisasi Ramalan
rmln = new Ramalan();
nama = new Label("Ketik nama kamu:");
tgl_lahir = new Label("Tanggal lahir (mm/ dd/ yyyy)");
txtnama = new TextField(30);
txttahun = new TextField(3);
//inisialisasi n nambahin nilai tanggal pake loop
tanggal = new Choice();
for(int i = 1; i<=31; i++)
{
tanggal.add(String.valueOf(i));
}
tanggal.select(0); //nilai default
//inisialisasi n nambahin bulan
bulan = new Choice();
bulan.add("Januari");
bulan.add("Februari");
bulan.add("Maret");
bulan.add("April");
bulan.add("Mei");
bulan.add("Juni");
bulan.add("Juli");
bulan.add("Agustus");
bulan.add("September");
bulan.add("Oktober");
bulan.add("November");
bulan.add("Desember");
bulan.select(0); //nilai default
//inisialisasi n nambahin tombol
ramal = new Button("Ramal!");
33
ramal.setFont(new Font("Courier",Font.BOLD,16));
ramal.setBackground(Color.orange);
ramal.setForeground(Color.white);
reset = new Button("Reset");
reset.setFont(new Font("Courier",Font.BOLD,16));
reset.setBackground(Color.orange);
reset.setForeground(Color.white);
//inisialisasi TextArea
horoscope = new TextArea(8,50);
horoscope.setEditable(false);
horoscope.setFont(new Font("Verdana",Font.BOLD,12));
//nambahin komponen ke window
add(lcanv);
add(nama);
add(txtnama);
add(tgl_lahir);
add(bulan);
add(tanggal);
add(txttahun);
add(ramal);
add(reset);
add(horoscope);
//nambahin KeyListener ke TextFields
txtnama.addKeyListener(this);
txttahun.addKeyListener(this);
//nambahin ActionListener ke tombol
ramal.addActionListener(this);
reset.addActionListener(this);
//nambahin WindowListener ke window
addWindowListener(this);
tk = this.getToolkit();
34
dim = tk.getScreenSize();
setBounds(dim.width/4, dim.height/4, 420, 340);
setResizable(false);
setVisible(true);
}
//method buat dapetin user name
private String getUserName()
{
String temp = txtnama.getText();
//kalo dikosongin, namanya jadi Meneketehe
if(temp.equals(""))
temp = "Meneketehe";
return temp;
}
//method buat dapet zodiac
private String getZodiac()
{
String nama_bulan = bulan.getSelectedItem();
int i_tanggal = tanggal.getSelectedIndex();
String zodiac = "";
//1
if(nama_bulan.equals("Maret"))
{
if(i_tanggal >= 20)
zodiac = "Aries";
else if(i_tanggal <= 19)
zodiac = "Pisces";
}
//2
if(nama_bulan.equals("April"))
35
{
if(i_tanggal >= 20)
zodiac = "Taurus";
else if(i_tanggal <= 19)
zodiac = "Aries";
}
//3
if(nama_bulan.equals("Mei"))
{
if(i_tanggal >= 21)
zodiac = "Gemini";
else if(i_tanggal <= 20)
zodiac = "Taurus";
}
//4
if(nama_bulan.equals("Juni"))
{
if(i_tanggal >= 21)
zodiac = "Cancer";
else if(i_tanggal <= 20)
zodiac = "Gemini";
}
//5
if(nama_bulan.equals("Juli"))
{
if(i_tanggal >= 22)
zodiac = "Leo";
else if(i_tanggal <= 21)
zodiac = "Cancer";
}
//6
36
if(nama_bulan.equals("Agustus"))
{
if(i_tanggal >= 23)
zodiac = "Virgo";
else if(i_tanggal <= 22)
zodiac = "Leo";
}
//7
if(nama_bulan.equals("September"))
{
if(i_tanggal >= 23)
zodiac = "Libra";
else if(i_tanggal <= 22)
zodiac = "Virgo";
}
//8
if(nama_bulan.equals("Oktober"))
{
if(i_tanggal >= 23)
zodiac = "Scorpio";
else if(i_tanggal <= 22)
zodiac = "Libra";
}
//9
if(nama_bulan.equals("November"))
{
if(i_tanggal >= 22)
zodiac = "Sagittarius";
else if(i_tanggal <= 21)
zodiac = "Scorpio";
}
37
//10
if(nama_bulan.equals("Desember"))
{
if(i_tanggal >= 21)
zodiac = "Capricorn";
else if(i_tanggal <= 20)
zodiac = "Sagittarius";
}
//11
if(nama_bulan.equals("Januari"))
{
if(i_tanggal >= 20)
zodiac = "Aquarius";
else if(i_tanggal <= 19)
zodiac = "Capricorn";
}
//12
if(nama_bulan.equals("Februari"))
{
if(i_tanggal >= 18)
zodiac = "Pisces";
else if(i_tanggal <= 17)
zodiac = "Aquarius";
}
return zodiac;
}
//kalo tombol ditekan...
public void actionPerformed(ActionEvent ae)
{
try
38
{
if((ae.getSource() == ramal) || (ae.getSource() == mramal))
{
check_tahun = Integer.parseInt(txttahun.getText());
get_tahun = txttahun.getText();
int len = txttahun.getText().length();
if(len<4)
{
error.play();
horoscope.setText("Maaf " + getUserName() + ", tahun yang kamu
masukkan invalid!\nMasukkan tahun yang benar (contoh: 1980) untuk\
nmengetahui ramalan kamu!");
ramal.setEnabled(false);
mramal.setEnabled(false);
}
else
{
rndm_ramalan = (int)(Math.random()*18)+1;
horoscope.setText(getUserName() + ", bintang kamu adalah " +
getZodiac() + ". Ini ramalan untuk kamu :\n\n"+rmln.sr[rndm_ramalan]);
ramal.setEnabled(false);
mramal.setEnabled(false);
}
}
}
catch(NumberFormatException e)
{
error.play();
39
horoscope.setText("Maaf " + getUserName() + ", tahun yang kamu masukkan
invalid!\nMasukkan tahun yang benar (contoh: 1980) untuk\nmengetahui ramalan
kamu!");
ramal.setEnabled(false);
mramal.setEnabled(false);
}
if((ae.getSource() == reset) || (ae.getSource() == refresh))
{
txtnama.setText("");
bulan.select(0);
tanggal.select(0);
txttahun.setText("");
horoscope.setText("");
mramal.setEnabled(true);
ramal.setEnabled(true);
}
if(ae.getSource() == exit)
{
dispose();
setVisible(false);
System.exit(0);
}
if(ae.getSource() == about)
{
abt = new About();
}
}
//handling key events
public void keyPressed(KeyEvent ke)
{
if(ke.getSource() == txttahun)
40
{
String sr = txttahun.getText();
if(sr.length()>3)
{
error.play();
txttahun.setText("");
horoscope.setText("Maaf " + getUserName() + ", tahun yang kamu
masukkan invalid!\nMasukkan tahun yang benar (contoh: 1980) untuk\
nmengetahui ramalan kamu!");
ramal.setEnabled(false);
mramal.setEnabled(false);
}
}
}
public void keyTyped(KeyEvent ke)
{
}
public void keyReleased(KeyEvent ke)
{
}
public void windowClosing(WindowEvent we)
{
dispose();
setVisible(false);
System.exit(0);
}
public void windowClosed(WindowEvent we)
{
}
public void windowOpened(WindowEvent we)
{
41
}
public void windowActivated(WindowEvent we)
{
}
public void windowDeactivated(WindowEvent we)
{
}
public void windowIconified(WindowEvent we)
{
}
public void windowDeiconified(WindowEvent we)
{
}
public static void main(String[] args)
{
new Main();
}
}
/******************************************************/
class Logo_Canvas extends Canvas
{
Image logo; //instance image class
public Logo_Canvas() //konstruktor
{
//dapetin image/gambar
try
{
logo=Toolkit.getDefaultToolkit().getImage("data/header.gif");
}
catch(Exception e)
{
42
}
setSize(292,40); //setting ukuran canvas
setVisible(true); //set jadi keliatan
}
public void paint(Graphics g)
{
g.drawImage(logo,0,0,this); //menggambar si image ke kanvas
}
}
/******************************************************/
class About extends Frame implements WindowListener
{
Color back=new Color(235,235,235);
Color front=new Color(0,0,130);
Image mini_logo;
Toolkit tk;
Dimension dim;
public About()
{
setTitle("About");
setLayout(new FlowLayout());
setBackground(back);
addWindowListener(this);
try
{
mini_logo=Toolkit.getDefaultToolkit().getImage("data/mini_logo.gif");
}
catch(Exception e)
{
}
tk = this.getToolkit();
43
dim = tk.getScreenSize();
setBounds(dim.width/4, dim.height/4, 285, 200);
setResizable(false);
setVisible(true);
}
public void paint(Graphics g)
{
g.drawImage(mini_logo,10,30,this);
Font normal=new Font("Default",Font.PLAIN,12);
g.setFont(normal);
g.setColor(front);
g.drawString("Mohamad Noor Rizal", 10, 75);
g.drawString("XII H", 10, 90);
g.drawString("Tugas Akhir Pemograman Bahasa Java", 10, 105);
g.drawString("Mailto: [email protected]", 10, 120);
g.drawString("Website: friendster.com/decaydance", 10, 135);
g.drawString("Peringatan Pemerintah:", 10, 150);
g.drawString("Dilarang mempercayai ramalan ini karena", 10, 165);
g.drawString("dapat membahayakan iman, akidah dan janin", 10, 180);
}
public void windowClosing(WindowEvent we)
{
dispose();
setVisible(false);
}
public void windowClosed(WindowEvent we)
{
}
public void windowOpened(WindowEvent we)
{
}
44
public void windowActivated(WindowEvent we)
{
}
public void windowDeactivated(WindowEvent we)
{
}
public void windowIconified(WindowEvent we)
{
}
public void windowDeiconified(WindowEvent we)
{
}
}
/******************************************************/
public class Ramalan
{
String sr[] =
{
"", //0
"Pasangan kamu akan sedikit linglung minggu\n"+
"depan. Kemungkinan besar si dia terkena\n"+
"gangguan ingatan. Ambil langkah preventif dengan\n"+
"mengambil batu bata dan hajar si dia. Insya Allah\n"+
"si dia akan sadar di alam lain.\n", //1
"Usaha kamu saat ini akan mengalami kemunduran\n"+
"pesat. Hal ini disebabkan oleh sifat kamu yang boros\n"+
"dan bolot. Namun hal tersebut dapat diatasi dengan\n"+
"expansi usaha yang cocok dengan kamu seperti\n"+
"usaha pijat tuna susila dan rental pramuria\n",//2
"Hati-hati lemak di perut kamu semakin menumpuk.\n"+
"Dalam 4 minggu berat kamu akan bertambah 14 kg.\n"+
45
"Oleh karena itu, setiap minggu kamu wajib berolahraga\n"+
"jalan santai dengan kecepatan diatas 50 km/jam.\n"+
"Insya Allah dalam 2 tahun berat kamu akan turun\n"+
"sekitar 100%\n",//3
"Hubungan anda di minggu ini semakin\n"+
"renggang dengan si dia. Usahakan jalin kembali\n"+
"silaturahmi dengan cara yang lembut dan \n"+
"halus, misal menggunakan jasa pihak ketiga seperti\n"+
"lelembut dan mahluk halus. Bila dalam waktu\n"+
"dua tahun si dia masih belum ada perubahan,\n"+
"segeralah anda melakukan tobat nashuha!\n", //4
"Tak seorangpun berhak mengatur jalan hidup\n"+
"anda. Jangan mendengar komentar dan\n"+
"nasehat orang lain. Jika anda berada di pintu rel kereta api\n"+
"yang tertutup ,jangan takut oleh peraturan dan larangan\n"+
"PJKA. ‘Maju terus pandang mundur’ adalah motto\n"+
"kesayangan anda yang mengantarkan anda\n"+
"ke liang lahat.\n", //5
"Diet ketat yang anda lakukan saat ini \n"+
"mengakibatkan penurunan intelektual sebanyak 90% sehingga\n"+
"anda mendapat predikat the moron person of the month.\n"+
"Terbukti dengan kegiatan anda saat ini yang\n"+
"sedang menggunakan program ini ! \n", //6
"Pada hari kamis minggu depan ada anjing\n"+
"buldog gila yang jatuh cinta pada anda.\n"+
" Hindari ciuman dan gigitan mesranya karena\n"+
"dapat membuat anda tergila-gila pada anjing tsb. Cara\n"+
"mengatasinya yaitu dengan pura-pura menjadi anjing\n"+
"pudel edan saat berpapasan dengannya.\n", //7
"Wah, nampaknya anda akan memenangkan\n"+
"hadiah undian jutaan rupiah dari\n"+
46
"produsen sabun colek cap cicak cuek, pada hari\n"+
"rabu minggu depan. Persyaratan penarikan \n"+
"hadiah dengan menunjukkan Ijazah TK.\n", //8
"Di bulan ini penyakit bergengsi akan menjangkit\n"+
"anda yaitu: panu. Namun jangan khawatir\n"+
"karena kulit anda yang hitam kelam akan memutih \n"+
"secara alami dalam waktu 10 hari. Kembangkan \n"+
"Kembangkan terus panu anda ke seluruh tubuh\n" +
"sampai mendapatkan hasil yang maksimal.\n", //9
"Calon mertua sangat senang dengan hadirnya\n"+
"anda di keluarganya. Dengan kehadiran anda,\n"+
"maka si inem bisa pensiun. Rambut anda yang\n"+
"bisa dipakai untuk sikat WC dan gigi anda yang pas untuk\n"+
"pembuka botol, membuat pernikahan anda\n"+
"dipercepat dan diadakan besar-besaran.\n", //10
"Kebiasaan anda yang jarang mau bayar\n"+
"pada pengamen dan pengemis, akan\n"+
"meningkatkan Deposito anda yang kini berjumlah Rp.7500,-\n"+
"Dengan kemampuan anda menahan malu\n" +
"dengan jumlah tersebut, maka anda akan\n" +
"diundang pada acara Who Wants to Be Maluinoner\n", //11
"Anda tidak puas dengan hidung anda yang\n"+
"pesek, bukan? Percuma saja bila anda berobat\n"+
"ke dokter atau operasi plastik keresek. Sering-seringlah\n"+
"berbohong dan omong kosong. Dijamin dalam\n"+
"beberapa minggu, hidung anda sudah\n"+
"sama mancungnya dengan pinokio.\n", //12
"Calon mertua kurang suka jika anda ada\n"+
"di rumahnya. Tiap anda apel ke sana \n"+
"selalu menghabiskan jatah makan untuk sebulan.\n"+
"Daripada diusir secara tidak hormat, lebih baik ajak \n"+
47
"si dia rekreasi ke tempat romantis, seperti\n"+
"kolong jembatan atau kuburan.\n", //13
"Dalam bisnis kejujuran adalah nomor 19, yang\n"+
"utama adalah omong besar. Biasakanlah\n"+
"mengobral janji ,basa basi dan provokasi. Usaha anda \n"+
"akan mencapai puncaknya 2 bulan lagi.\n"+
"Jangan lupa, setelah sukses segera ambi.\n"+
"jurus pamungkas yaitu langkah seribu.\n", //14
"Minggu ini ada akan menjalani operasi bedah otak. \n"+
"Menurut dokter, jalan satu-satunya adalah otak \n"+
"anda harus di-‘low level format’ karena sudah banyak \n"+
"bad sector. Selain itu juga terdapat pasir berserakan \n"+
"di dalamnya sehingga anda selalu berpikir ngeres\n", //15
"Si dia agaknya kurang dewasa dalam selera.\n"+
"Anda dituntut membimbing dia ke jalan yang benar. Agar\n"+
"intelektualnya bertambah, ajaklah si dia nonton film-film \n" +
"bermutu dengan tema kepahlawanan seperti\n" +
"'Kenikmatan Tabu' ,‘Gatal-gatal Mesra’ atau film pemenang\n" +
"piala oscar: 'Buruan Coblos Gue’\n", //16
"Kesuksesan anda bulan depan akan mengundang\n"+
"tamu tak diundang. Untuk mengantisipasi para penjahat ,\n"+
"pungutan liar dan pengamen dortudor, pasanglah\n"+
"Pagar listrik dan Ranjau di pintu masuk. Juga pelihara\n"+
"hewan penjaga yang bertampang sadis yang \nlebih sadis dari anda.\
n", //17
"Atur waktu tidur agar anda tidur lebih awal\n"+
"dan bangun lebih siang. Dalam mimpi, anda\n"+
"akan dikelilingi wanita-wanita cantik yang memperebutkan\n"+
"cinta anda. Cobalah tidur terus dan jangan \n"+
"bangun lagi, maka anda akan dikelilingi \n"+
"malaikat yang memperebutkan nyawa anda\n", //18
48
};
}
49