Anda di halaman 1dari 56

TUGAS BESAR

PRAKTIKUM PEMROGRAMAN KOMPUTER

Disusun oleh:

DIMAS SEPTIAN IMAM RAHARJA 1800019049

BIMA DZAKY SYAHLANI 1800019050

YUSUF NUR HIDAYAT 1800019051

MUHAMMAD RIFKA YUSRA 1800019052

PROGRAM STUDI TEKNIK INDUSTRI

FAKULTAS TEKNOLOGI INDUSTRI

UNIVERSITAS AHMAD DAHLAN

YOGYAKARTA

2018
LEMBAR PENGESAHAN

Laporan Praktikum Pemrograman Komputer ini telah disetujui dan disahkan


sebagai salah satu syarat lulus praktikum Pemrograman Komputer di Program
Studi Teknik Industri Fakultas Teknologi Industri Universitas Ahmad Dahlan
Yogyakarta.

Nama : 1. Dimas Septian Imam R (1800019049)


: 2. Bimma Dzaky S (1800019050)
: 3. Yusuf Nur Hidayat (1800019051)
: 4. Muhmaad Rifka Yusra (1800019052)

Yogyakarta, Desember
2018

Menyetujui,

Asisten

Pembimbing

Mufida Nur Khasanah

ii
KATA PENGANTAR

Dengan memanjatkan puji syukur kehadirat Allah swt, atas berkat rahmat dan
hidayah-Nya sehingga kami dapat menyelesaikan tugas besar praktikum pemrograman
dasar computer yang berjudul “Engineering Pharmacy” dengan lancar untuk
menyelesaikan tugas besar.

Ucapan terima kasih penulis sampaikan kepada pihak-pihak yang mempunyai


andil dalam proses penyusunan laporan ini atas bantuan dan partisipasinya. Ucapan
terima kasih disampaikan antara lain kepada:

1. Ibu Amalia Yuli Astuti, S.T.,M.T. Selaku dosen pembimbing mata kuliah
pemrograman dasar komputer.
2. Ibu Utaminingsih Linarti, S.T., M.T. Selaku dosen matakuliah pemrograman dasar
komputer
3. Mufida Nur Khasanah selaku asisten dosen yang telah membimbing kami sampai
laporan ini dapat terselesaikan.
4. Orang tua atas izin, dukungan, dan doanya sehingga laporan tugas besar ini dapat
terselesaikan.
5. Teman-teman yang telah memberikan dukungan untuk menyelesaikan laporan tugas
besar ini.

Walaupun penyusunan laporan tugas besar ini telah diusahakan dengan sebaik-
baiknya, namun tentu tak luput dari kekurangan. Oleh karena itu, kami mengharapakan
bantuan para pembaca untuk berkenan memberikan kritik dan saran yang membangun.

Akhirnya, kami berharap semoga laporan ini dapat diterima untuk ditindaklanjuti.

Yogyakarta, 11 Desember 2018

Penulis

iii
DAFTAR ISI

HALAMAN MUKA .............................................................................................. i


HALAMAN PENGESAHAN ..............................................................................ii
KATA PENGANTAR .........................................................................................iii
DAFTAR ISI ........................................................................................................ iv
DAFTAR TABEL ............................................................................................... vi
DAFTAR GAMBAR ..........................................................................................vii
DAFTAR LAMPIRAN ....................................................................................... ix
BAB I PENDAHULUAN
A. Latar Belakang ..................................................................................... 1
B. Rumusan Masalah ................................................................................ 2
C. Tujuan................................................................................................... 2
BAB II LANDASAN TEORI
A. Deklarasi, Variabel, Tipe Data, dan Operator ...................................... 3
B. Logika Kondisi ..................................................................................... 4
C. Perulangan (Loop) ................................................................................ 7
D. Array .................................................................................................... 9
E. Visual Component Library (VCL) ..................................................... 10
F. Data Base……………………………………………………………11
G. Data Base Lanjutan………………………………………………………11
BAB III ALGORITMA PROGRAM
A. Flow Chart ................................................................................................. 13
BAB IV PROGRAM
A. Langkah-Langkah Program ..................................................................... 16
B. Gambar Aplikasi........................................................................................ 17
C. Source code …………………………………………………………….24
BAB V PENUTUP
A. Kesimpulan ........................................................................................ 47
B. Saran ................................................................................................... 47
DAFTAR PUSTAKA…………………………………………………………..48

vi
DAFTAR TABEL

Tabel 1 Data Jenis Obat Umum……………………………………………….…22


Tabel 2 Data Jenis Obat Dokter….………………………………………………22

vii
DAFTAR GAMBAR

Gambar 4.1. Menu Login………………………………………………………………...16


Gambar 4.2 Menu Penjualan Obat ………………………………………………………17

Gambar 4.3. Menu Laporan Penjualan Umum...………………………………………...18

Gambar 4.4. Menu Laporan Penjualan Dokter...………………………………………...18

Gambar 4.5. Struk Pelanggan….………………………………………………………...19

Gambar 4.6. Struk Laporan Umum...…………………………………………………....20

Gambar 4.7. Struk Laporan Dokter……. ...……………………………………………...21

viii
DAFTAR LAMPIRAN

Lock Book…………………………………………………………………………..........49

ix
BAB I
PENDAHULUAN

A. Latarbelakang
Apotek merupakan tempat yang dijadikan transaksi jual beli atau
pelayanan produk dari farmasi. Di dalam apotek juga telah disediakan tenaga
kefarmasian yang ditujukan untuk melakukan pelayanan kepada masyarakat
untuk perbekalan kesehatan yang lainnya. Apotek juga dapat dikatakan
sebagai suatu temapat pelayanana kesehatan yang berhubungan dengan hal-
hal yang berbau kefarmasian seperti obat, bahan obat, obat tradisioanal, alat
kesehatan, kosmetika yang ditujukan pada masyarakat umum.
Aplikasi merupakan Teknologi yang berkembang pesat pada saat ini,
kemajuan teknologi dalam membantu pengolahan data atau informasi yang
tersedia dapat berlangsung secara cepat dan efisien serta akurat. Kemajuan
aplikasi dapat dilihat dari banyaknya aplikasi yang dapat memudahkan
penggunanya dalam membantu pekerjaannya. Salah satu model aplikasi yang
sangat berperan penting adalah aplikasi pengolahan data yang sangat
bermanfaat dan membantu dalam penyimpanan data.
Sekarang ini memang tidak banyak apotek yang menggunakan cara
konvensional untuk penulisan transaksi dan penulisan laporan penjualan
secara manual karrena kesulitan dalam pencatatan transaksi dan pencatatan
laporan penjualan yang cukup memakan banyak waktu. Aplikasi penjualan
adalah aplikasi yang digunakan untuk memudahkan dalam pencatatan atau
record data Penjualan. Aplikasi ini banyak digunakan pada bisnis retail
dimana pimpinan bisa melihat laporan penjualan mulai dari Laporan Harian,
Mingguan, Bulanan bahkan Tahunan.
Mempermudah dalam pendataan maka dibuat sebuah aplikasi
pendataan transaksi pembayaran bagi sebuah apotek yang berbasis komputer
menggunakan program Borland Delphi 7 agar lebih cepat dan efisien.

1
2

Aplikasi engineering pharmacy ini sangat mudah untuk dioperasikan karena


tampilan yang sederhana. Oleh karena itu, aplikasi ini dapat membantu
dalam pendataan transaksi atau laporan penjualan obat bagi apotek.

B. Identifikasi masalah
Berdasarkan latar belakang diatas, maka penulis mengidentifikasikan
beberapa masalah yang ada, antara lain:
1. Pengelolaan laporan penjualan yang masih menggunakan cara manual dan
laporan penjualan kepada pemilik apotek.
2. Pengelolaan data transaksi yang memakan banyak waktu.
3. Tidak ada bukti penjualan kepada konsumen.

C. Tujuan
Berdasarkan latar belakang diatas, tujuan dari pembuatan laporan ini
antara lain:
1. Mempermudah dalam pembuatan laporan penjualan baik data ataupun
informasi dengan jelas.
2. Mempermudah perhitungan transaksi yang harus dibayar sesuai dengan
obat yang dibeli.
3. Mempermudah dalam pencetakan struk kepada pembeli agar mengetahui
obat yang dibeli.
BAB II
LANDASAN TEORI

A. Deklarasi Variabel, Tipe Data, dan Operator

1. Deklarasi Variabel
Dalam setiap penulisan Bahasa pemrograman deklarasi sangat digunakan
apabila dalam penulisan program dibutuhkan identifier atau tanda pengenal.
Identifier pada umumnya dibuat oleh programmer yang digunakan untuk
mewakili nilai dari suatu objek.
Sebelum suatu variable dapat digunakan, variable harus dapat di
deklarasikan terlebih dahulu. Pengertian deklarasi disini adalah menyebutkan
nama 3ariable dan tipe datanya Variabel di deklarasikan pada bagian yang di
awali dengan kata “var”. (Andoyo, 2003).

2. Tipe Data
Tipe data pada dasarnya merupakan nama untuk sejenis data. Ketika kita
mendeklarasikan sebuah 3ariable, maka 3ariable tersebut harus mempunyai
sebuah tipe data, yang menentukan nilai-nilai yang dapat dimuat dan di
operasikan pada 3ariable tersebut. (Andoyo, 2003).
Secara sederhana tipe data dapat didefinisikan dengan istilah tempat
untuk menentukan pemberian nilai terhadap suatu 3ariable sesuai atau tidak
dengan nilai yang diberikan oleh user. Dalam versi lain tipe data juga di
definisikan sebagai 3ariabl terhadap fungsi tanda pengenal terhadap semua
nilai yang di terima. Logika yang dapat kita berikan adalah ketika kita
menempatkan tanda pengenal harga hanya angka, maka ketika kita
memberikan nilai berupa string maka secara otomatis data tersebut akan
ditolak karena nilai tersebut

3
4

tidak dikenali oleh tipe data yang diberikan. Terdapat beberapa tipe data pada
Delphi yaitu string,char,real, dan integer.

3. Operator
Operator dipakai untuk memanipulasi dan mengolah data. Delphi
menyediakan bermacam-macam operator. Setiap operator mempunyai tingkat
hierarki, yaitu urutan pelaksanaan jika ada beberapa operator dalam suatu
proses.
Sebagai contoh, jika terdapat ekspresi X+Y*Z, maka akan dilaksanakan
terlebih dahulu operasi Y*Z, baru setelah itu, hasil operasi X*Y ditambah X.
Hal ini disebabkan operator perkalian (dengan symbol *) hierarkinya lebih
tinggi dari operator penambahan (dengan symbol +).

B. Logika Kondisi
1. If..Then..
Bentuk pertama percabangan adalah bentuk if..then. Pada bentuk ini
pemilihan keputusan hanyha untuk satu bagian atau percabangan. Ini artinya
jika kondisi percabangan saja yang di kerjakan, dan kondisi percabangan tidak
terpenuhi, tidak ada yang dikerjakan. (Mangkulo, 2005).
Bentuk sintaks dari percabangan ini adalah:
If <Kondisi_percabangan> then
Begin
{aksi}
End;
2. If..Then..Else
Pada percabangan bentuk If..Then..Else terdapat dua bagian atau
percabangan. Bagian atau percabangan pertama adalah tempat untuk
pernyataan bila kondisi tercapai. Perbedaannya dengan bentuk If..Then adalah
5

pada bentuk ini terdapat dua bagian atau percabangan, pada bentuk If..Then
hanya terdapat satu bagian saja atau percabangan tunggal. (Mangkulo, 2005).
Bentuk sintaks dari percabangan ini adalah:
If <Kondisi_percabangan> then
Begin
{aksi 1}
End
Else
Begin
{aksi 2}
End;
3. Case..Of
Perintah bersyarat Case umumnya digunakan untuk kondisi dengan
banyak percabangan. Syarat pencabangan pada bentuk ini hanya boleh satu
buah parameter dengan tipe data bukan Real. Pemeriksaan kondisi di sini
lebih tepat disebutkan dalam hubungan relasi samadengan (=). Dengan
demikian bila parameter bernilai tertentu maka dilakukan suatu aksi terkain,
bila bernilai lain mkaka di lakukan aksi yang lain juga, demikian seterusnya.
Bentuk umum penggunaan Case..Of :
Case <Parameter> of
<nilai_1> : <aksi_1>;
<nilai_2> ; <aksi_2>;
<nilai_3> : <aksi_3>;

<nilai_n> : <aksi_n> ;
Else <aksi_n+1>
End;.
(Astuti A. Y. & Utaminingsih , 2017).
6

C. PERULANGAN (LOOP)

Salah satu kelebihan 6ariable adalah dapat melakukan perhitungan


berulang dengan sangat cepat. Dengan demikian, salah satu algoritma yang
penting adalah mempelajari aspek-aspek perulangan. Delphi memberikan tiga
alternative pengulangan, yaitu dengan For, While, atau Repeat. Masing-
masing memiliki karakteristik, yang akan dipelajari pada bagian ini. Ada dua
hal yang penting dalam melakukan merancang perintah pengulangan, yaitu:

-Inisialisasi awal

-Nilai akhir perulangan atau kondisi berhenti.

-Konsep Counter

Perhatikan Penugasan berikut ini:


i←i+1

Arti dari penugasan diatas adalah I sebelah kiri merupakan harga I yang
baru setelah harga I sebelah kanan ditambah dengan 1. Dengan demikian, I
merupakan counter (pencacah) dimana setiap kali pernyataan penegasan itu
dieksekusi, harga I akan bertambah 1. Perulangan digunakan untuk
menjalankan satu atau beberapa pernyataan hanya dengan menuliskan
pernyataan tersebut satu kali.

1. Macam-macam Pernyataan Perulangan


a. For…to…do

Pada perulangan pada For, inisialisasi awal dan kondidi akhir


ditentukan dengan menggunakan suatu variable kendali yang nilainya
dibatasi dalam suatu range tertentu. Sintaks untuk perintah ini adalah:
7

For <variable_kendali> := <nilai_awal> to <nilai_akhir> do

Begin
….{aksi}

End;

Atau

For <variable_kendali> := <nilai_awal> downto <nilai_akhir> do

Begin
….{aksi}

End;

Perbedaan antara to dan downto adalah pada kondisi nilai


awal dan akhir. Pada to nilai awal lebih kecil dari nilai akhir,
sedangkan pada downto nilai awal lebih besar dari nilai akhir.

B. While…do

Pada metode pengulangan ini aksi hanya akan diproses bila


kondisi pengulangan terpenuhi, bentuk sintaks dari pengulangan ini

Whileadalah.
<kondisi_perulangan> do

Begin
….{aksi}

End;
8

Selama kondisi_pengulangan bernilai true maka aksi akan


dilakukan dan baru akan berhenti setelah kondisi pengulangan bernilai
false. Karena kondisi pengulangan diperiksa pada bagian awal, maka
ada kemungkinan aksi tidak pernah dilakukan, yaitu bila kondisi
pengulangan tidak pernah bernilai true.

C. Repeat…until

Metode pengulangan ini juga melakukan pengulangan berdasarkan


pemeriksaan kondisi pengulangan. Hanya saja alur dari pengulangan ini
adalah system seakan-akan memaksa untuk melakukan pengulangan,sampai
di ketahui adanya kondisi berhenti. Bentuk sintaks dari pengulangan ini
adalah:

Repeat

….{aksi}

Until <kondisi_berhenti>

Berlawanan dengan While, yang akan memproses aksi hanya bila


kondisi_pengulangan bernilai true, pada pengulangan Repeat, system akan
memproses aksi selama kondisi_berhenti bernilai false. Dengan demikian aksi
pasti akan selalu diproses (minimal satu kali). Pada tipe ini, pengulangan
dapat terjadi terus-menerus (tidak pernah berhenti), yaitu bila kondisi berhenti
tidak pernah bernilai true (Astuti A. Y. & Utaminingsih , 2017).

D. Array

Array (larik) merupakan tipe data terstruktur dimana datanya terdiri


dari komponen-komponen yang mempunyai tipe daya yang sama. Didalam
array jumlah komponen banyaknya adalah tetap. Didalam suatu larik atau
9

array setiap komponen ditunjukkan oleh suatu index yang unik. Index dari
setiap komponen array menunjukkan urutan data atau identitas data yang
mewakili data yang ada didalamnya. Logika sederhananya array itu bias
disamakan denga dua orang dengan nama yang sama didalam sutu
komunitas, untuk membedakan antara nama yang satu atau dengan nama
yang lain makan diberikan inisial tambahan untuk setiap nama.

Didalam penulisan 9ariab pemograman setiap penggunaan array harus


dideklarsikan terlebih dahulu. Pendeklarasian array diawali dengan nama
9ariable array diikuti dengan indeks array yang dituliskan didalam tanda “[]”
, diikuti dengan kata cadangan of dan tipe data yang dibutuhkan. (delphi,
2006).

E. Visual Component Library (VCL)

Visual Component Library (VCL) adalah hierarki dari class (object)


yang ditulis dengan Object Pascal dan tergabung dalam IDE Delphi. Dengan
Component Palette dan Object Inspector komponen VCL dapat ditempatkan
pada form dan memanipulasi property nya tanpa menuiskan program. Bagian
visual dari VCL merupakan pembungkus Windows API. VCL membungkus
control-kontrol Windows seperti button, kotak edit, tree view, list view. VCL
juga memberikan class Tcanvas yang berisi fungsi grafik sehingga anda dapat
dengan mudah mengecat ulang sebuah jendela (Astuti A. Y. & Utaminingsih ,
2017).
.

Membangun aplikasi diperlukan komonen-kompnen yang ada pada


Delphi. Komponen pada Delphi memiliki dua sifat, yaitu komponen visual
adalah komponen visual dan novisual. Komponen visual adalah komponen
10

yang terlihat pada saat aplikasi di jalankan. Contoh dari komponen visual
diantaranya adalah Label,Edit, Memo, Button, dan RadioButton. Komponen
nonvisual adalah komponen yang tidak terlihat oleh user pada saat aplikasi di
jalankan, tetapi komponen tersebut menghasilkan tampilan seseuai dengan
fungsi komponen tersebut. Contoh dari komponen nonvisual ini diantaranya
adalah MainMenu, PopUpMenu, OpenDialog, dan Timer (Pujianto, 2007).

F. Data Base dalam Delphi

DataBase adalah program yang disediakan oleh Borland Delphi untuk


melakukan pembuatan DataBase. Dengan menggunakan program inilah nanti
kita akan membuat tabel-tabel yang kita butuhkan untuk membuat DataBase.
DataBase dapat dipanggil dari Menu’Tools>DataBase Desktop’yang ada di
Delphi.

DataBase dipakai untuk menyimpan data sehingga dapat dimanipulasi


dengan mudah. Delphi mempunyai komponen-komponen yang dipakai untuk
mengakses tabel dan method untuk memanipulasi record. Delphi memberikan
fasilitas untuk memanipulasi database yang kompleks.

Alias dipakai untuk memberi nama lojik pada sebuah direktori. Untuk
membuka kotak dialog Alias Manager, dari DataBase Desktop (Start|
Programs| Borland Delphi7| DataBase Desktop), atau jika sudah masuk di
dalam Delphi, pilih menu Tools| DataBase Desktop. Dari database desktop
pilih menu Tools| Alias Manager untuk option-option (Astuti A. Y. &
Utaminingsih , 2017).

G. Data Base lanjutan


DataBase dekstop merupakan sebuah sistem aplikasi database yang
sudah disertakan pada saat penginstallan Delphi. Komponen database yang
11

merupakan bawaan Delphi meliputi paradox, dBase, MsSQL, Oracle, Macces,


Excel dan lain-lain (delphi, 2006).
Pencarian data merupakan operasi yang sangat penting dan merupakan
keunggulan dari database sekarang ini. Untuk melakukan operasi seperti edit,
cetak, dan lain-lain biasanya harus diawali dengan pencarian. Pada dasarnya,
pencarian data ada 2 macam, yaitu
a. Pencarian data tanpa index (urutan data)
Pencarian ini harus dilakukan secara berurutan (sekuensial). Jenis dari
pencarian ini, yaitu locate.
b.Pencarian data menggunnakan index
Pencarian ini dapat dilakukan dengan tidak berurutan. Macam/jenis
dari pencarian ini antara lain:
-Setkey
-GotoNearest
-FindKey
-Gotokey
-Editkey
-FindNearest
(Astuti A. Y. & Utaminingsih , 2017).
BAB III
ALGORITMA PROGRAM

A. Flow Chart
1. Flowchart Utama
Start

Input Id dan Password

Proses Login

False
Login

True
Tampilan menu
penjualan

Input nama dan nomer


telpon pelanggan

Memilih jenis obat

False False
Jenis obat umum Jenis obat dokter

True True

Ouput Ouput
Tabel jenis obat Tabel jenis obat
umum umum
Data Base Data Base
Kode Kode
Nama obat Harga Nama oba Harga
Jumlah Jumlah

Input data Input data


Jumlah Jumlah

Total harga=Jumlah*harga jual

Ouput
Harga

Proses
Kembalian=Bayar-
harga

Output
Total
Kembalian

Proses cetak

Struk Pelanggan

Menu Laporan Umum

Menu Laporan dokter

True
Kembali
False

Clear

Close

End

12
13

2. Flowchart menu laporan umum

Tampilan
Menu
Umum

Proses
mencari

Ouput
Data Base Tampilan
pencarian

Proses cetak

Struk Laporan

3. Flowchart menu laporan dokter


15

Tampilan
Menu
dokter

Proses
Mencari

Output
tampilan Data Base
pencarian

Proses cetak

Struk Laporan
BAB IV
PROGRAM

A. Langkah-langkah Program
1. Membuka program dan akan muncul tampilan login.
2. Memasukkan username dan password
3. Mengklik tombol login untuk masuk ke menu penjualan obat dan akan muncul
tampilan penjualan obat
4. Kemudian input nama dan nomor hp pelanggan.
5. Mengklik input data untuk menyimpan data pada laporan penjualan
6. Memilih jenis obat dokter atau umum, jika memilih jenis obat dokter maka
akan muncul data obat dokter dan jika memilih jenis obat umum maka akan
keluar tampilan data obat umum.
7. Mencari obat yang akan dibeli.
8. Kemudian input jumlah obat yang dibeli.
9. Kemudian input nominal uang yang di bayarkan oleh konsumen.
10. Mengklik tombol cetak data untuk menampilkan bukti transaksi data.
11. Kemudian mengklik tombol close untuk menutup bukti transaksi.
12. Mengklik main menu pada pojok kanan atas untuk menampilkan pilihan menu.
13. Memilih menu laporan penjualan obat dokter untuk menampilkan panel laporan
penjualan obat dokter.
14. Mengklik tombol cari untuk menampilkan tabel data transaksi.
15. Kemudian memilih tombol cetak untuk menampilan butki laporan penjualan
yang ditampilkan tabel.
16. Mengklik tombol kembali untuk kembali ke tampilan awal.
17. Mengklik close untuk menutup bukti laporan penjualan.
18. Kemudian kanan pada panel penjualan untuk menampilkan pop up menu yang
berisi menu kembali dan close

16
17

19. Memilih menu kembali untuk menampilkan atau kembali pada menu penjualan
obat.
20. Kemudian mengulangi langkah 8 untuk memilih menu laporan penjualan umum
perbedaannya terletak pada jenis obatnya.
21. Mengikuti langkah yang sama seperti langkah 10 – 14.
22. Kemudian mengklik menu pada pojok menu penjualan obat.
23. Memilih close untuk menutup aplikasi.
24. Selesai.

B. Gambar Aplikasi
1. Tampilan Program Untuk Login
Tampilan atau menu login ini berfungsi untuk masuk kedalam menu penjualan
obat.

Gambar 4.1 Menu login


18

2. Tampilan Program Menu penjualan obat


Tampilan ini berfungsi dalam melakukan pemilihan obat, pengontrolan obat-
obatan yang tersedia dan pembelian obat.

Gambar 4.2 Menu Penjualan obat

3. Tampilan Program Laporan Penjualan Obat Umum


Tampilan ini berfungsi dalam merekap data dan menyimpan data hasil
penjualan obat dokter.
19

Gambar 4.3 Menu Penjualan Obat Umum


4. Tampilan Program Laporan Penjualan Obat Dokter
Tampilan ini berfungsi dalam melakukan penyimpanan data dan merekap data
hasil penjualan obat umum.

Gambar 4.4 Menu Penjualan Obat Dokter

5. Tampilan struk penjualan kepada konsumen.


20

Tampilan ini berfungsi untuk mengetahui jenis obat, jumlah obat, harga obat,
dan pembayaran oleh konsumen.

Gambar 4.5 Struk penjualan.

6. Tampilan laporan penjualan umum.


Tampilan ini berfungsi untuk mengetahui jumlah penjualan obat perhari.
21

Gambar 4.6 Laporan penjualan umum.


7. Tampilan laporan penjualan dokter.
Tampilan ini berfungsi untuk mengetahui penjualan obat per hari yang
ditunjukan kepada dokter.
22

Gambar 4.7 Tampilan laporan penjualan dokter.


8. Tabel data obat umum.
Tabel ini berfungsi untuk mengetahui jenis obat umum.
23

Tabel 4.1 Data jenis obat umum.


9. Tabel data obat dokter.
Tabel ini berfungsi untuk mengetahui jenis obat dokter.

Tabel 4.2 Data jenis obat dokter.


24

C. Source Code

Label5: TLabel;

unit Unit1; Label6: TLabel;

interface Timer1: TTimer;

uses procedure Button1Click(Sender:


TObject);
Windows, Messages, SysUtils,
Variants, Classes, Graphics, Controls, procedure Timer1Timer(Sender:
Forms, TObject);

Dialogs, jpeg, ExtCtrls, StdCtrls, private


Buttons;
{ Private declarations }
type
public
TForm1 = class(TForm)
{ Public declarations }
Panel1: TPanel;

Panel2: TPanel;
end;
Edit1: TEdit;

Edit2: TEdit;
var
Label3: TLabel;
Form1: TForm1;
Image1: TImage;

BitBtn2: TBitBtn;
implementation
Image2: TImage;

Label1: TLabel;
uses Unit2, Unit5;
Label2: TLabel;

Button1: TButton;

Label4: TLabel;
25

else

messagebox(0,'Anda Gagal
Login','information',mb_ok+mb_icone
{$R *.dfm} rror);

end;
procedure
TForm1.Button1Click(Sender:
TObject);

var procedure
TForm1.Timer1Timer(Sender:
username:string; TObject);
pass:string; var
begin ADate:TDateTime;
username:=string(Edit1.Text); hari:array[1..7] of string;
pass:=string(edit2.text); begin
if(username='Admin') and hari[1]:='Minggu';
(pass='apotekengineering') then
hari[2]:='Senin';
begin
hari[3]:='Selasa';
messagebox(0,'Anda Berhasil
Login','information',mb_ok+mb_iconi hari[4]:='Rabu';
nformation);
hari[5]:='Kamis';
form2.Edit1.Text:=form1.Edit1.Text;
hari[6]:='Jumat';
form5.show;
hari[7]:='Sabtu';
form1.Hide;
ADate:=date;
form5.Timer1.Enabled:=true;
Label4.Caption:=timetostr(now);

label5.Caption:=hari[DayofWeek(ADa
end te)];
26

label6.Caption:=datetostr(now); Label1: TLabel;

Label3: TLabel;

end; Edit1: TEdit;

Label5: TLabel;

end. Edit4: TEdit;

Edit5: TEdit;

Label6: TLabel;

unit Unit2; GroupBox2: TGroupBox;

Label7: TLabel;

interface Label8: TLabel;

Label11: TLabel;

uses DBEdit1: TDBEdit;

Windows, Messages, SysUtils, DBEdit2: TDBEdit;


Variants, Classes, Graphics, Controls,
Forms, DBEdit5: TDBEdit;

Dialogs, StdCtrls, ExtCtrls, jpeg, GroupBox3: TGroupBox;


Mask, DBCtrls, Buttons, Menus, Label14: TLabel;
Grids,
Image1: TImage;
DBGrids, DB, DBTables;
Label15: TLabel;

Image2: TImage;
type
MainMenu1: TMainMenu;
TForm2 = class(TForm)
Menu1: TMenuItem;
Panel1: TPanel;
LaporanPenjualanObatDokter1:
GroupBox1: TGroupBox; TMenuItem;
27

LaporanPenjualanObatUmum1: Label4: TLabel;


TMenuItem;
Timer1: TTimer;
Kembali1: TMenuItem;
Label9: TLabel;
Close1: TMenuItem;
Edit3: TEdit;
DBGrid1: TDBGrid;
Label10: TLabel;
BitBtn1: TBitBtn;
Label12: TLabel;
DBNavigator1: TDBNavigator;
Label13: TLabel;
Image3: TImage;
Label19: TLabel;
Label16: TLabel;
Edit6: TEdit;
DBGrid2: TDBGrid;
Label20: TLabel;
DataSource1: TDataSource;
Edit7: TEdit;
Table1: TTable;
Label22: TLabel;
ListBox1: TListBox;
DataSource2: TDataSource;
ListBox2: TListBox;
Table2: TTable;
GroupBox4: TGroupBox;
Label23: TLabel;
Label17: TLabel;
Edit8: TEdit;
Label18: TLabel;
Label2: TLabel;
Label21: TLabel;
Edit2: TEdit;
Image4: TImage;
Button1: TButton;
Label25: TLabel;
PopupMenu1: TPopupMenu;
DBEdit4: TDBEdit;
Refesh1: TMenuItem;
DBEdit8: TDBEdit;
Timer2: TTimer;
DBEdit10: TDBEdit;
RadioButton1: TRadioButton;
28

RadioButton2: TRadioButton; procedure


DBGrid2CellClick(Column:
BitBtn2: TBitBtn; TColumn);
procedure procedure BitBtn2Click(Sender:
LaporanPenjualanObatDokter1Click(S TObject);
ender: TObject);
procedure Button1Click(Sender:
procedure TObject);
LaporanPenjualanObatUmum1Click(S
ender: TObject); procedure Kembali1Click(Sender:
TObject);
procedure CheckBox1Click(Sender:
TObject); procedure Close1Click(Sender:
TObject);
procedure CheckBox2Click(Sender:
TObject); procedure Refesh1Click(Sender:
TObject);
procedure BitBtn1Click(Sender:
TObject); procedure Timer2Timer(Sender:
TObject);
procedure
DBGrid1CellClick(Column: procedure
TColumn); RadioButton1Click(Sender: TObject);

procedure Timer1Timer(Sender: procedure


TObject); RadioButton2Click(Sender: TObject);

procedure Label19Click(Sender: private


TObject);
{ Private declarations }
procedure Label10Click(Sender:
TObject); public

procedure Image3Click(Sender: { Public declarations }


TObject); end;
procedure Image4Click(Sender:
TObject);
var

Form2: TForm2;
29

procedure
TForm2.CheckBox1Click(Sender:
implementation TObject);

begin
uses Unit4, Unit3, Unit6, Unit1; groupbox2.Show;

dbgrid1.Show;
{$R *.dfm} groupbox4.hide;

dbgrid2.Hide;
procedure end;
TForm2.LaporanPenjualanObatDokter
1Click(Sender: TObject);

begin procedure
TForm2.CheckBox2Click(Sender:
Form4.show; TObject);
Form2.Hide; begin
end; dbgrid2.Show;

groupbox4.Show;
procedure groupbox2.hide;
TForm2.LaporanPenjualanObatUmum
1Click(Sender: TObject); dbgrid1.hide;

begin end;

Form3.show;

Form2.Hide; procedure
TForm2.BitBtn1Click(Sender:
TObject);
end; var

a:string;
30

begin add(' ');

a:=listbox1.Items.Text; add(' ');

form6.Show; add('========================
===========================
with form6.memo1.lines do ==========' );
begin add(' Total :
add('--------------------------- '+label14.Caption);
ENGINEERING PHARMACY--------- add('.......................................................
---------------- '); ................ ');
add(' STRUK PEMBELIAN add(' BAYAR :
OBAT APOTEK ENGINEERING '+edit6.text);
');
add(' KEMBALIAN :
add(' '+label20.Caption);
');
add('
add(' ');
');
add('
add('Tanggal ');
:'+label4.Caption);
add('
add('Transaksi ');
:EP'+edit2.Text );
add(' Terima kasih atas
add('Kasir kunjungan anda ');
:'+Edit1.Text);
add(' Semoga anda puas
add('Pelanggan dengan pelayanan kami ');
:'+edit4.Text);
add('
add('======================== ..........................................................
=========================== ');
==========' );
add(' *Pembeli adalah
add(a); raja* ') ;
add(' ');
31

end;

end; procedure
TForm2.Timer1Timer(Sender:
procedure TObject);
TForm2.DBGrid1CellClick(Column:
TColumn); begin

var label4.Caption:=datetostr(now);

a,b:string; end;

i:integer;

total:real; procedure
TForm2.Label19Click(Sender:
begin TObject);
total:=0; var
a:=dbedit2.Text; a,b,c:currency;
b:=dbedit5.Text; begin
listbox1.Items.Append(a+' : a:=strtocurr(edit6.Text);
'+b);
b:=strtocurr(Label14.Caption);
listbox2.Items.Append(b);
c:=a-b;
for i:=0 to listbox2.Items.Count-1 do
Label20.Caption:=currtostr(c);
begin
end;
total:=total+strtofloat(listbox2.Items[i]
);

end; procedure
TForm2.Label10Click(Sender:
label14.Caption:=floattostr(total); TObject);

var
end; a,b,c:currency;
32

begin begin

a:=strtocurr(edit3.Text); if (not table2.locate('Nama


Obat',edit8.Text,[])) then
b:=strtocurr(Label14.Caption);
begin
c:=a-b;
Application.MessageBox('Obat Tidak
Label12.Caption:=currtostr(c); Tersedia','informasi',MB_OK or
end; MB_ICONINFORMATION);

edit8.Text:='';

procedure end
TForm2.Image3Click(Sender: else
TObject);
edit8.Text;
begin
end;
if (not table1.locate('Nama
Obat',edit7.Text,[])) then

begin procedure
TForm2.DBGrid2CellClick(Column:
Application.MessageBox('Obat Tidak TColumn);
Tersedia','informasi',MB_OK or
MB_ICONINFORMATION); var

edit7.Text:=''; a,b:string;

end i:integer;

else total:real;

edit7.Text; begin

end; total:=0;

a:=dbedit8.Text;

procedure b:=dbedit10.Text;
TForm2.Image4Click(Sender:
TObject);
33

listbox1.Items.Append(a+' : add(' STRUK PEMBELIAN


'+b); OBAT APOTEK ENGINEERING
');
listbox2.Items.Append(b);
add('
for i:=0 to listbox2.Items.Count-1 do ');
begin add('
total:=total+strtofloat(listbox2.Items[i] ');
); add('Tanggal
end; :'+label4.Caption);

label14.Caption:=floattostr(total); add('Transaksi
:EP'+edit2.Text );

add('Kasir
end; :'+Edit1.Text);

add('Pelanggan
:'+edit4.Text);
procedure
TForm2.BitBtn2Click(Sender: add('========================
TObject); ===========================
==========' );
var
add(a);
a:string;
add(' ');
begin
add(' ');
a:=listbox1.Items.Text;
add(' ');
form6.Show;
add('========================
with form6.memo1.lines do
===========================
begin ==========' );

add('--------------------------- add(' Total :


ENGINEERING PHARMACY--------- '+label14.Caption);
---------------- ');
34

add('....................................................... edit2.Text:='EP';
................ ');

add(' BAYAR :
'+edit3.text); end;

add(' KEMBALIAN :
'+label12.Caption); procedure
add(' TForm2.Kembali1Click(Sender:
'); TObject);

add(' begin
'); form1.show;
add(' form2.Hide
');
end;
add(' Terima kasih atas
kunjungan anda ');

add(' Semoga anda puas procedure


dengan pelayanan kami '); TForm2.Close1Click(Sender:
TObject);
add('
.......................................................... begin
');
form2.Close;
add(' *Pembeli adalah
end;
raja* ') ;

end;
procedure
end;
TForm2.Refesh1Click(Sender:
TObject);

procedure begin
TForm2.Button1Click(Sender:
Listbox1.Clear;
TObject);
Edit4.text:='';
begin
35

Edit5.text:=''; bitbtn2.Visible:=true;

Edit3.text:=''; bitbtn1.Visible:=false;

Label12.caption:=''; end;

Label14.caption:='';

Edit6.text:=''; procedure
TForm2.RadioButton2Click(Sender:
Label20.caption:=''; TObject);
end; begin

groupbox2.Show;
procedure dbgrid1.Show;
TForm2.Timer2Timer(Sender:
TObject); groupbox4.hide;

begin dbgrid2.Hide;

edit2.Text:=timetostr(now); listbox1.Visible:=true;

end; bitbtn1.Visible:=true;

bitbtn2.Visible:=false;

procedure end;
TForm2.RadioButton1Click(Sender:
TObject);

begin end.

dbgrid2.Show;

groupbox4.Show; end;

groupbox2.hide;

dbgrid1.hide; end.

listbox1.Visible:=true;
36

unit Unit3; Panel3: TPanel;

Memo1: TMemo;

interface Panel5: TPanel;

Label6: TLabel;

uses Panel4: TPanel;

Windows, Messages, SysUtils, Panel6: TPanel;


Variants, Classes, Graphics, Controls,
Forms, Label7: TLabel;

Dialogs, StdCtrls, ExtCtrls, Buttons, ListBox1: TListBox;


Menus, Grids, DBGrids, jpeg, DB, procedure Kembali1Click(Sender:
DBTables; TObject);

procedure BitBtn1Click(Sender:
TObject);
type
procedure Button1Click(Sender:
TForm3 = class(TForm) TObject);

PopupMenu1: TPopupMenu; private

Kembali1: TMenuItem; { Private declarations }

Close1: TMenuItem; public

Image1: TImage; { Public declarations }

Panel1: TPanel; end;

Label1: TLabel;

Label2: TLabel; var

GroupBox1: TGroupBox; Form3: TForm3;

Button1: TButton;

BitBtn1: TBitBtn; implementation


37

add('---------------------------
ENGINEERING PHARMACY---------
uses Unit2, Unit7, Unit6; ---------------- ');

add('
{$R *.dfm} ');

add(' LAPORAN
PENJUALAN OBAT
procedure ');
TForm3.Kembali1Click(Sender:
TObject); add('
');
begin
add('
form3.Hide; ');

form2.show; add('No Faktur


:'+form2.edit2.Text
end;
+form2.label4.Caption);

add('Kasir
procedure :'+form2.Edit1.Text);
TForm3.BitBtn1Click(Sender:
add('Pelanggan
TObject);
:'+form2.Edit4.Text);
var
add('No HP
a:string; :'+form2.Edit5.Text);

begin add('Tanggal
:'+form2.label4.Caption);
a:=listbox1.Items.Text;
add(' '+form2.Label4.Caption);
form7.Show;
add( 'Nama Obat & Harga');
with form7.memo1.lines do
add(a);
begin
add(' TOTAL
TENSAKSI:
'+form2.Label14.Caption);
38

add(' BAYAR add(' Apoteker


: '+form2.Edit3.Text); ') ;

add(' end;
KEMBALIAN :
'+form2.label12.Caption); end;

add('.......................................................
................ '); procedure
add(' TForm3.Button1Click(Sender:
'); TObject);

add(' var
'); a:string;
add(' begin
');
a:=listbox1.Items.Text;
add('
'); with memo1.lines do

add(' begin
Yogyakarta,2018
add('Tanggal
');
:'+form2.Label4.Caption);
add(' Penanggung
add('No Faktur
jawab ');
:'+form2.edit2.Text
add(' +form2.label4.Caption);
');
add('Nama Kasir
add(' :'+Form2.Edit1.Text);
');
add('Nama Pelanggan
add(' :'+form2.edit4.Text);
');
add('Bayar
add(' :'+form2.edit6.text);
');
add('Kembalian
:'+form2.label20.Caption);
39

form3.ListBox1.Items.Text:=form2.Li Kembali1: TMenuItem;


stBox1.Items.Text;
Close1: TMenuItem;
end;
Panel2: TPanel;
end;
Panel4: TPanel;
end.
Label4: TLabel;

Image1: TImage;
unit Unit4;
Timer1: TTimer;

Memo1: TMemo;
interface
GroupBox1: TGroupBox;

Button1: TButton;
uses
Panel3: TPanel;
Windows, Messages, SysUtils,
Variants, Classes, Graphics, Controls, Panel5: TPanel;
Forms, Label3: TLabel;
Dialogs, Buttons, StdCtrls, ExtCtrls, ListBox1: TListBox;
Menus, Grids, DBGrids, jpeg;
procedure Kembali1Click(Sender:
TObject);
type procedure BitBtn1Click(Sender:
TForm4 = class(TForm) TObject);

Panel1: TPanel; procedure Button1Click(Sender:


TObject);
Label1: TLabel;
private
Label2: TLabel;
{ Private declarations }
BitBtn1: TBitBtn;
public
PopupMenu1: TPopupMenu;
{ Public declarations }
40

end; begin

a:=listbox1.Items.Text;

var form8.Show;

Form4: TForm4; with form8.memo1.lines do

begin

implementation add('---------------------------
ENGINEERING PHARMACY---------
---------------- ');
uses Unit2, Unit8, Unit7; add('
');

{$R *.dfm} add(' LAPORAN


PENJUALAN OBAT
');

procedure add('
TForm4.Kembali1Click(Sender: ');
TObject);
add('
begin ');

form4.Hide; add('No Faktur


:'+form2.edit2.Text
form2.show;
+form2.label4.Caption);
end;
add('Kasir
:'+form2.Edit1.Text);

procedure add('Pelanggan
TForm4.BitBtn1Click(Sender: :'+form2.Edit4.Text);
TObject);
add('No HP
var :'+form2.Edit5.Text);

a:string; add('Tanggal
:'+form2.label4.Caption);
41

add(' '+form2.Label4.Caption); add('


');
add( 'Nama Obat & Harga');
add('
add(a); ');
add(' TOTAL add('
TENSAKSI: ');
'+form2.Label14.Caption);
add(' Apoteker
add(' BAYAR ') ;
: '+form2.Edit3.Text);
end;
add('
KEMBALIAN : end;
'+form2.label12.Caption);

add('.......................................................
................ ');

add(' procedure
'); TForm4.Button1Click(Sender:
TObject);
add('
'); var

add(' a:string;
'); begin
add(' a:=listbox1.Items.Text;
');
with memo1.lines do
add('
Yogyakarta,2018 begin
');
add('Tanggal
add(' Penanggung :'+form2.Label4.Caption);
jawab ');
add('No Faktur
add(' :'+form2.edit2.Text
'); +form2.label4.Caption);
42

add('Nama Kasir
:'+Form2.Edit1.Text);
type
add('Nama Pelanggan
:'+form2.edit4.Text); TForm5 = class(TForm)

add('Bayar ProgressBar1: TProgressBar;


:'+form2.edit6.text); Label1: TLabel;
add('Kembalian Timer1: TTimer;
:'+form2.label20.Caption);
Label2: TLabel;
form4.ListBox1.Items.Text:=form2.Li
stBox1.Items.Text; Label3: TLabel;

end; Label4: TLabel;

end; XPManifest1: TXPManifest;

procedure Timer1Timer(Sender:
TObject);

private
end.
{ Private declarations }

public
unit Unit5;
{ Public declarations }

end;
interface

var
uses
Form5: TForm5;
Windows, Messages, SysUtils,
Variants, Classes, Graphics, Controls,
Forms,
implementation
Dialogs, StdCtrls, ComCtrls,
ExtCtrls, XPMan;
43

uses Unit2; begin

progressbar1.position:=
progressbar1.position+10;
{$R *.dfm}
end;

end;
procedure
TForm5.Timer1Timer(Sender: end;
TObject);
end.
begin

label1.Font.Color:=trunc(clblue*rando
m); unit Unit6;

label2.Font.Color:=trunc(clred*rando
m); interface
label3.Font.Color:=trunc(clgreen*rand
om);
uses
label4.font.Color:=trunc(clwhite*rand
om); Windows, Messages, SysUtils,
Variants, Classes, Graphics, Controls,
begin Forms,
if progressbar1.position=100 Dialogs, StdCtrls, ExtCtrls, Buttons;
then

begin type
form2.show; TForm6 = class(TForm)
form5.Hide; Panel1: TPanel;
timer1.Enabled:=false; Memo1: TMemo;
end BitBtn1: TBitBtn;
else Button1: TButton;
44

procedure Button1Click(Sender:
TObject);
end.
private

{ Private declarations }

public
unit Unit7;
{ Public declarations }

end;
interface

var
uses
Form6: TForm6;
Windows, Messages, SysUtils,
Variants, Classes, Graphics, Controls,
Forms,
implementation
Dialogs, StdCtrls, ExtCtrls, Buttons;

uses Unit2;
type

TForm7 = class(TForm)
{$R *.dfm}
Panel1: TPanel;

Memo1: TMemo;
procedure
TForm6.Button1Click(Sender: Button1: TButton;
TObject);
BitBtn1: TBitBtn;
begin
procedure Button1Click(Sender:
form6.Hide; TObject);

form2.show; procedure Memo1Change(Sender:


TObject);
end;
45

private procedure
TForm7.Memo1Change(Sender:
{ Private declarations } TObject);
public begin
{ Public declarations }

end; end;

var end.
Form7: TForm7;

unit Unit8;
implementation

interface
uses Unit3;

uses
{$R *.dfm} Windows, Messages, SysUtils,
Variants, Classes, Graphics, Controls,
Forms,
procedure
TForm7.Button1Click(Sender: Dialogs, StdCtrls, ExtCtrls, Buttons;
TObject);

begin type
form7.Hide; TForm8 = class(TForm)
form3.show; Panel1: TPanel;
end; Memo1: TMemo;

BitBtn1: TBitBtn;
46

Button1: TButton;

procedure Button1Click(Sender: uses Unit4;


TObject);

private
{$R *.dfm}
{ Private declarations }

public
procedure
{ Public declarations } TForm8.Button1Click(Sender:
TObject);
end;
begin

form8.Hide;
var
form4.show;
Form8: TForm8;
end;

implementation
end.
BAB V
PENUTUP
A. Kesimpulan
1. Aplikasi yang telah terkomputerisasi dengan program komputer sangat
membantu dalam menyelesaikan suatu masalah. Dalam hal ini pengolahan
transaksi penjualan obat, sehingga konsumen tidak dikecewakan oleh apotik
karena lamanya dalam pemrosesan dan pengolahan data tidak terjamin
kebenaran dan ketepatannya. Dengan aplikasi Engineering Pharmacy dapat
mempercepat proses pembuatan laporan penjualan obat dalam setiap hari.
2. Aplikasi ini akan dapat membantu untuk memperbaiki kesalahan pada
penulisan data. Aplikasi Penjualan Obat ini juga diharapkan akan dapat
membantu asisten apoteker dalam proses pencarian data.

B. Saran
1. Sebaiknya diadakan suatu pelatihan terhadap para operator yang akan dapat
menjalankan aplikasi ini sehingga tidak menghambat rangkaian kerja yang
akan dilakukan dan untuk menjamin kebenarannya, ketepatan, dan kecepatan
proses data.
2. Agar program aplikasi ini selalu berjalan dengan perkembangan data dan
teknologi sebaiknya selalu mengadakan pembaharuan secara berkala terhadap
program aplikasi yang ada atau melengkapi kelemahan- kelemahan program
ini.

47
DAFTAR PUSTAKA
Andoyo, A. (2003). Belajar Sendiri Mengolah Database dengan Borland Delphi. Jakarta:
Elex Media Komputindo.

Astuti, A. Y., & U. L. (2017). Petunjuk Praktikum Pemrograman Komputer. Yogyakarta:


Laboratorium Teknik Industri Universitas Ahmad Dahlan.

Delphi, T. p. (2006). Modul Praktek Laboratorium Komputer Borland Delphi. Jakarta: Bina
Sarana Informatika.

Mangkulo, H. A. (2005). Membuat Aplikasi Database dengan Delphi. Jakarta: Elex Media
Komputindo.

Pujianto. (2007). 50 Trik Pemrograman Delphi. Jakarta: Elex Media Komputindo.

48
49

LAMPIRAN