Program Penggajian Upah di QBasic

QBasic adalah suatu IDE dan interpreter untuk bahasa basic. Bisa di bilang ini sudah jadul, tapi masih di pelajari di universitas. Di sini saya membuat program penggajian atau upah berdasarkan jam kerjanya dengan ketentuan :Golongan 1, 20 ribu per jam
Golongan 2, 30 ribu per jam
Golongan 3, 40 ribu per jam
Golongan 4, 50 ribu per jam
Golongan 5, 60 ribu per jam
Golongan 6, 70 ribu per jam
Lebih dari 30, maka di bulankan menjadi 1 jam
Kurang dari atau sama dengan 30 menit, di bulankan menjadi 0 jam

Source Code Programnya

DATA "RAHMAT",3,"08:10","20:45"
DATA "BUDI",2,"08:00","17:44"
DATA "UDIN",1,"08:14","19:33"
DATA "JAJA",4,"07:56","21:12"
DATA "SULI",6,"07:55","20:15"
DATA "TOTI",3,"08:12","20:30"
DATA "KASTELA",6,"07:23","16:30"
DATA "ABI",1,"07:55","22:29"
DATA "JARGO",3,"07:54","19:12"
DATA "LOLA",6,"08:21","21:42"
DATA "BOBI",5,"08:10","20:12"
DATA "ROSI",5,"08:15","18:30"
DATA "POPI",4,"07:30","21:42"
DATA "BUPI",2,"07:52","21:13"
DATA "JARGO",5,"08:10","20:12"

'Tanda Akhir data
DATA "0",0,"0","0" 

DIM NAMA AS STRING * 13
NOMOR = 0

' <--Mulai Template-->
M1$ = "PT. Mamat.co"
M2$ = "=====+==============+======+=======+========+=======+=========+"
M3$ = "| NO |     NAMA     |  GOL | MASUK | PULANG |  JAM  |   GAJI  |"
M4$ = "=====+==============+======+=======+========+=======+=========+"
M5$ = "+====+==============+======+=======+========+=======+=========+"
M6$ = "                                   |   TOTAL UPAH   |########,|"
M7$ = "                                   +================+=========+"
M8$ = "| ## | &|   #  | & |  & |   ##  | ######, |"
'<--Akhir Template --->

PRINT M1$
PRINT M2$
PRINT M3$
PRINT M4$

5 READ NAMA$, GOL, MASUK$, PULANG$
'Cek Data Akhir
IF GOL = 0 THEN GOTO 6
NOMOR = NOMOR + 1

IF GOL = 1 THEN UPJ = 20000
IF GOL = 2 THEN UPJ = 30000
IF GOL = 3 THEN UPJ = 40000
IF GOL = 4 THEN UPJ = 50000
IF GOL = 5 THEN UPJ = 60000
IF GOL = 6 THEN UPJ = 70000

'Merubah format menjadi desimal
MENIT = (VAL(MID$(MASUK$, 4, 2)) / 60)
MASUKINT = VAL(MID$(MASUK$, 1, 2)) + MENIT

MENIT = (VAL(MID$(PULANG$, 4, 2)) / 60)
PULANGINT = VAL(MID$(PULANG$, 1, 2)) + MENIT

JAM = PULANGINT - MASUKINT
JAMSTR$ = STR$(JAM)
POSISI = INSTR(JAMSTR$, ".")
MENITINT = VAL(MID$(JAMSTR$, POSISI + 1, 2))
IF MENITINT &amp;amp;amp;amp;gt; 50 THEN MENITINT = 1 ELSE MENITINT = 0
JAMINT = VAL(LEFT$(JAMSTR$, POSISI - 1))

JAM = JAMINT + MENITINT
UPAH = JAM * UPJ

PRINT USING M8$;NOMOR; NAMA; GOL; MASUK$; PULANG$; JAM; UPAH
TU = TU + UPAH
GOTO 5

6 PRINT M5$
PRINT USING M6$; TU
PRINT M7$
PRINT "http://mamat.co"
END

Sedikit Saya jelaskan tentang source code di atas

DATA "JARGO",5,"08:10","20:12"

ini di gunakan sebagai tanda bahwa data sudah habis

DIM NAMA AS STRING * 13

Nama di beri 13 karakter, maka jika nama kurang dari itu, akan di tambah spasi sehingga tidak merusah template.

M8$ = "| ## | &|   #  | & |  & |   ##  | ######, |"

Di sini saya menggunakan print using (format), simbil # untuk angka, & untuk string. Koma setelah # supaya setiap 3 digit di kasih tanda koma.

MENIT = (VAL(MID$(MASUK$, 4, 2)) / 60)
MASUKINT = VAL(MID$(MASUK$, 1, 2)) + MENIT

Variabel MASUK$ berisi 08:21, maka untuk mengambil menit, menggunakan MID$ dengan start 4 sebanyak 2 huruf, lalu di konvert menjadi integer dan di bagi 60. Fungsi di bagi 60 supaya di rubah menjadi angka desimal sehingga mempermudah dalam pengurangan antara jam pulang dan jam masuk.

JAM = PULANGINT - MASUKINT
JAMSTR$ = STR$(JAM)
POSISI = INSTR(JAMSTR$, ".")
MENITINT = VAL(MID$(JAMSTR$, POSISI + 1, 2))
IF MENITINT > 50 THEN MENITINT = 1 ELSE MENITINT = 0

JAMINT = VAL(LEFT$(JAMSTR$, POSISI - 1))
JAM = JAMINT + MENITINT

Variabel JAM misalkan berisi 12.5 (berarti 12 jam 30 menit). untuk membulatkan angka menit, kita mengambil digit di belakang koma. Pertama kita cari dulu posisi titik, karena bisa saja jamnya 1 digit atau 2 digit. Lalu gunakan MID lagi dengan hasil posisi tadi di tambah + sebanyak 2. Kita sudah dapat menit. Tinggal kita gunakan if, jika lebih besar dari 50 (maksudnya adalah 0.5,  30 menit sama saja 0.5 jam) maka menjadi 1, selain itu 0. Jangan lupa mengambil digit jamnya juga, kita gunakan left untuk mengambil digit dari kiri hingga posisi titik -1. Lalu tinggal di tambahkan antara jam dan menit.

PRINT USING M8$;NOMOR; NAMA; GOL; MASUK$; PULANG$; JAM; UPAH

Ini menggunakan print format

Ouput dari program ini adalah
gaji qbasic

Rahmat Burhanudin

Sharing is caring. Ada pertanyaan? silahkan komentar atau email ke rahmat@mamat.co

3 thoughts on “Program Penggajian Upah di QBasic

  1. Maaf sebelumnya saya ingin bertanya..
    Hmmm, ini program ditujukan untuk data yang sudah di deklarasikan di awal kode program. Nah bagaimana jika data yang digunakan adalah data yang di input dari user? Karena akan sedikit merepotkan kalau harus mengubah kode program lagi.

Leave a Reply

Your email address will not be published. Required fields are marked *