mnrizal.files.wordpress.com · web viewmembahas latar belakang permasalahan, identifikasi masalah,...

Post on 29-Apr-2019

228 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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: anglophilez@gmail.com", 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

top related