Skip to content

Instantly share code, notes, and snippets.

@mochadwi
Forked from anonymous/data.pas
Created January 14, 2017 12:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mochadwi/910fd1514e0e6f5840ee992d67131df6 to your computer and use it in GitHub Desktop.
Save mochadwi/910fd1514e0e6f5840ee992d67131df6 to your computer and use it in GitHub Desktop.
program distribusi_barang;
{I.S. : User Mengisi Data Pada Menu Isi Data}
{F.S. : Melakukan Pencarian Terhadap Data Yang Sudah Ada dan Menampilkan
Keseluruhan Data Yang Telah Terurut}
uses crt;
const
LokasiFile = 'D:\TUBESAlpro\databarang.txt';
maks = 20;
type
data = record
harga_barang,qty,harga_total : integer;
id_barang,nama,barang,agen : string;
end;
data_distribusi =array[1..maks] of data;
arsip = File of data;
var
data_array : data_distribusi;
menu,n : integer;
ArsipBrg: arsip;
procedure Open(var ArsipBrg: arsip; kode: integer);
{ I.S: sembarang }
{ F.S: arsip disiapkan untuk dibaca atau ditulis }
begin
Assign(ArsipBrg, LokasiFile);
{$I-}
Case (kode) Of
1: Begin
Reset(ArsipBrg);
End;
2: Begin
Rewrite(ArsipBrg);
End;
End;
{$I+}
If (IOResult <> 0) Then
Begin
writeln('arsip error!');
Rewrite(ArsipBrg);
End;
end;
procedure Fread(var ArsipBrg: arsip; var DataBrg: data_distribusi);
{ I.S: Arsip sudah siap dibaca dari Open(ArsipBrg, kode) }
{ F.S: Menulis dari arsip ke memori }
var
i: integer;
begin
writeln('nilai n sebelum Fread: ', n);
Seek(ArsipBrg, 0);
i := 0;
writeln('Siap2 membaca arsip');
readkey;
while not EOF(ArsipBrg) do
begin
i := i + 1;
Seek(ArsipBrg, i - 1);
Read(ArsipBrg, DataBrg[i]);
writeln('data yang dimasukkan dengan nama [', DataBrg[i].nama, ']');
readkey;
end;
n := i;
writeln('nilai n setelah Fread: ', n);
end;
procedure Fwrite(var ArsipBrg: arsip; DataBrg: data_distribusi);
{ I.S: Arsip sudah siap ditulis dari Open (ArsipBrg, kode) }
{ F.S: Menulis dari memori ke arsip }
var
i: integer;
begin
writeln('nilai n sebelum Fwrite: ', n);
Seek(ArsipBrg, 0);
writeln('siap2 menyimmpan ke arsip');
readkey;
for i := 1 to n do
begin
i := i + 1;
Seek(ArsipBrg, i - 1);
Write(ArsipBrg, DataBrg[i]);
writeln('data barang dengan nama [', DataBrg[i].nama, '] sudah tersimpan ke arsip');
readkey;
end;
writeln('nilai n setelah Fwrite: ', n);
end;
procedure menu_pilihan( var menu: integer);
begin
textcolor(white);
clrscr;
gotoxy(20,3);writeln('=================================================================================');
gotoxy(45,4);writeln('APLIKASI DISTRIBUSI BARANG KE AGEN');
gotoxy(52,5);writeln('PT.Pintu Tiga Raharja');
gotoxy(26,6);writeln('Jl.Raya Banjaran, No.365,Sukasari Indah,Kab.Bandung,Jawabarat 403657');
gotoxy(20,7) ;writeln('=================================================================================');
gotoxy(20,4);writeln('||'); gotoxy(99,4);writeln('||');
gotoxy(20,5);writeln('||'); gotoxy(99,5);writeln('||');
gotoxy(20,6);writeln('||'); gotoxy(99,6);writeln('||');
gotoxy(20,8);writeln('||'); gotoxy(99,8);writeln('||');
gotoxy(20,9);writeln('||'); gotoxy(99,9);writeln('||');
gotoxy(20,10);writeln('||'); gotoxy(99,10);writeln('||');
gotoxy(20,11);writeln('||'); gotoxy(99,11);writeln('||');
gotoxy(20,12);writeln('||'); gotoxy(99,12);writeln('||');
gotoxy(20,13);writeln('||'); gotoxy(99,13);writeln('||');
gotoxy(20,14);writeln('||'); gotoxy(99,14);writeln('||');
gotoxy(20,15);writeln('||'); gotoxy(99,15);writeln('||');
gotoxy(20,16);writeln('||'); gotoxy(99,16);writeln('||');
gotoxy(20,17);writeln('||'); gotoxy(99,17);writeln('||');
gotoxy(20,18);writeln('||'); gotoxy(99,18);writeln('||');
gotoxy(20,19);writeln('||'); gotoxy(99,19);writeln('||');
gotoxy(20,20);writeln('||'); gotoxy(99,20);writeln('||');
gotoxy(20,21);writeln('||'); gotoxy(99,21);writeln('||');
gotoxy(20,22);writeln('||'); gotoxy(99,22);writeln('||');
gotoxy(20,23);writeln('||'); gotoxy(99,23);writeln('||');
gotoxy(20,24);writeln('||'); gotoxy(99,24);writeln('||');
gotoxy(20,25);writeln('||'); gotoxy(99,25);writeln('||');
gotoxy(20,26);writeln('||'); gotoxy(99,26);writeln('||');
gotoxy(20,27);writeln('||'); gotoxy(99,27);writeln('||');
gotoxy(20,28);writeln('=================================================================================');
gotoxy(50,9);writeln ('>>> Menu Pilihan <<<');delay(100);
gotoxy(50,10);writeln ('======================');delay(100);
gotoxy(43,12);writeln ('1. Isi Data');delay(100);
gotoxy(43,14);writeln('2. Cari Data Berdasarkan ID');delay(100);
gotoxy(43,16);writeln('3. Cari Data Berdasarkan Nama Barang');delay(100);
gotoxy(43,18);writeln('4. Cari Data Berdasarkan Harga Total');delay(100);
gotoxy(43,20);writeln('5. Tampil Data Keseluruhan Yang Sudah Terurut');delay(100);
gotoxy(43,22);writeln('6. Help ?');delay(100);
gotoxy(43,24);writeln('0. Keluar Program');delay(100);
gotoxy(50,26);write('Pilihan Anda : ');
gotoxy(65,26);readln(menu);
{validasi menu pilihan}
while (menu<0) or (menu>6) do
begin
textcolor(yellow);
gotoxy(22,19);writeln('Salah Memilih Menu Pilihan, Ulangi !');
gotoxy(25,20);write('Tekan enter untuk melanjutkan');
readln;
gotoxy(22,19);clreol;textcolor(15);gotoxy(74,19);writeln('#######');
gotoxy(25,20);clreol;textcolor(15);gotoxy(71,20);writeln('##########');
gotoxy(47,17);clreol;textcolor(15);gotoxy(76,17);writeln('#####');
textcolor(15);
gotoxy(47,17);readln(menu);
end;
end;
function hargabarang(barang:string):integer;
{I.S. : Nama Kamar Sudah Terdefinisi }
{F.S. : Menghasilkan Fungsi Harga Kamar Dari Kamar Tersebut}
begin
if(barang='kecap')
then
hargabarang := 308000
else
if(Pos('pasta gigi', barang) > 0)
then
hargabarang := 276000
else if(barang='mentega')
then
hargabarang := 228000
else if(barang='susu')
then
hargabarang := 318000
else if(barang='shampo')
then
hargabarang := 245000
else if(Pos('personal care', barang) > 0)
then
hargabarang := 1250000
else if(Pos('home care', barang) > 0)
then
hargabarang := 925000;
end;
procedure isi_data(var data_array : data_distribusi; var n :integer);
var
i : integer;
begin
clrscr;
Open(ArsipBrg, 1);
Fread(ArsipBrg, data_array);
Close(ArsipBrg);
Open(ArsipBrg, 2);
gotoxy(50,2);write('Data Distribusi Barang');
gotoxy(50,3);write('======================');
i := 1;
textcolor(yellow);
gotoxy(1,5); write('Ketiklah (stop) pada kolom ID jika data berakhir');
textcolor(white);
gotoxy(1,6); write('Jenis Barang : kecap, pasta gigi, mentega,susu,shampo , personal_care, home_care');
gotoxy(1,7); write('=======================================================================================================================');
gotoxy(1,8); write('| Kode | Nama Barang | Jenis Barang | Harga Barang | Qty | Nama Agen | Total Pembayaran |');
gotoxy(1,9); write('-----------------------------------------------------------------------------------------------------------------------');
gotoxy(1,9+i);write('| | | | | | | |');
gotoxy(4,9+i);readln(data_array[i + n].id_barang);
while(data_array[i + n].id_barang <> 'stop') do
begin
gotoxy(15,9+i);readln(data_array[i + n].nama);
gotoxy(32,9+i);readln(data_array[i + n].barang);
while((data_array[i + n].barang<>'kecap')and
(Pos('pasta gigi', data_array[i + n].barang) = 0) and
(data_array[i + n].barang<>'mentega') and
(data_array[i + n].barang<>'susu') and
(data_array[i + n].barang<>'shampo') and
(Pos('personal care', data_array[i + n].barang) = 0) and
(Pos('home care', data_array[i + n].barang) = 0))do
begin
gotoxy(20,i+10);
write('Jenis barang hanya ada kecap, pasta gigi, mentega, shampo, personal care, home care !!');
gotoxy(20,i+11);
write('Tekan Enter untuk melanjutkan');
readln;
gotoxy(22,i+10);clreol;
gotoxy(22,i+10);clreol;
gotoxy(19,9+i);clreol;
gotoxy(17,9+i);write('| | | | | | | |');
gotoxy(32,9+i);readln(data_array[i + n].barang);
end;
data_array[i + n].harga_barang := hargabarang(data_array[i + n].barang);
gotoxy(52,9+i);writeln(data_array[i + n].harga_barang);
gotoxy(68,9+i);readln(data_array[i + n].qty);
gotoxy(78,9+i);readln(data_array[i + n].agen);
data_array[i + n].harga_total := (data_array[i + n].qty * data_array[i + n].harga_barang);
gotoxy(105,9+i);writeln(data_array[i + n].harga_total);
i:=i+1;
gotoxy(1,9+i);write('| | | | | | | |');
gotoxy(4,9+i);readln(data_array[i + n].id_barang);
end;
gotoxy(1,9+i);write('-----------------------------------------------------------------------------------------------------------------------');
n := n + i - 1;
Close(ArsipBrg);
end;
{Shorting dengan Metode Bubble Short Secara Ascending}
procedure urut_id(n:integer; var data_array : data_distribusi);
var
i,k : integer;
temp: data;
begin
for i := 1 to n-1 do
begin
for k := n downto (i+1) do
begin
if(data_array[k].id_barang) < (data_array[k-1].id_barang) then
begin
temp := data_array[k];
data_array[k] := data_array[k - 1];
data_array[k - 1] := temp;
end;
end;
end;
end;
{Shorting dengan Metode Bubble Short Secara Ascending}
procedure urut_nama(n:integer;var data_array : data_distribusi);
var
i,k : integer;
temp: data;
begin
for i := 1 to n-1 do
begin
for k := n downto (i+1) do
begin
if(data_array[k].nama) < (data_array[k-1].nama) then
begin
temp := data_array[k];
data_array[k] := data_array[k - 1];
data_array[k - 1] := temp;
end;
end;
end;
end;
{Shorting dengan Metode Bubble Short Secara Ascending}
procedure urut_harga(n:integer;var data_array : data_distribusi);
var
i,k : integer;
temp: data;
begin
for i := 1 to n-1 do
begin
for k := n downto (i+1) do
begin
if(data_array[k].harga_total) < (data_array[k-1].harga_total) then
begin
temp := data_array[k];
data_array[k] := data_array[k - 1];
data_array[k - 1] := temp;
end;
end;
end;
end;
procedure tampil(var data_array : data_distribusi; var n : integer);
var
i : integer;
begin
Open(ArsipBrg, 1);
Fread(ArsipBrg, data_array);
readkey;
gotoxy(28,1);write('==========================');
gotoxy(28,2);write('Data hasil pengurutan data');
gotoxy(28,3);write('==========================');
gotoxy(1,7); write('=======================================================================================================================');
gotoxy(1,8); write('| Kode | Nama Barang | Jenis Barang | Harga Barang | Qty | Nama Agen | Total Pembayaran |');
gotoxy(1,9); write('-----------------------------------------------------------------------------------------------------------------------');
for i:=1 to n do
begin
gotoxy(1,9+i);write('| | | | | | | |');
gotoxy(4,9+i);writeln(data_array[i].id_barang);
gotoxy(15,9+i);writeln(data_array[i].nama);
gotoxy(32,9+i);writeln(data_array[i].barang);
gotoxy(52,9+i);writeln(data_array[i].harga_barang);
gotoxy(68,9+i);writeln(data_array[i].qty);
gotoxy(78,9+i);writeln(data_array[i].agen);
gotoxy(105,9+i);writeln(data_array[i].harga_total);
end;
gotoxy(1,10+i);write('-----------------------------------------------------------------------------------------------------------------------');
Close(ArsipBrg);
end;
{Pencarian Menggunakan Metode Binary Search}
procedure binary_search_id(data_array : data_distribusi; n : integer);
var
i,k : integer;
data_cari : string ;
ketemu :boolean;
begin
gotoxy(43,1);write('Pencarian Data berdasarkan Kode Barang');
gotoxy(43,2);write('======================================');
gotoxy(50,3);write('Masukkan Kode Barang : ');readln(data_cari);
ketemu := false;
i := 1;
while((not ketemu) and (i <= n)) do
begin
k:=(i+n) div 2 ;
if(data_array[k].id_barang=data_cari)
then
ketemu:=true
else
if(data_array[k].id_barang < data_cari)
then
i:= k+1
else
n:=k-1;
end;
if(ketemu)
then
begin
gotoxy(1,7);write('=======================================================================================================================');
gotoxy(1,8);write('| Kode | Nama Barang | Jenis Barang | Harga Barang | Qty | Nama Agen | Total Pembayaran |');
gotoxy(1,9);write('-----------------------------------------------------------------------------------------------------------------------');
gotoxy(1,10);write('| | | | | | | |');
gotoxy(4,10);writeln(data_array[k].id_barang);
gotoxy(15,10);writeln(data_array[k].nama);
gotoxy(32,10);writeln(data_array[k].barang);
gotoxy(52,10);writeln(data_array[k].harga_barang);
gotoxy(68,10);writeln(data_array[k].qty);
gotoxy(78,10);writeln(data_array[k].agen);
gotoxy(105,10);writeln(data_array[k].harga_total);
gotoxy(1,11);write('-----------------------------------------------------------------------------------------------------------------------');
end
else
textcolor(red);
gotoxy(45,4);writeln('Kode barang ',data_cari,' Tidak Ditemukan!!!');
end;
procedure binary_search_nama(data_array : data_distribusi; n : integer);
var
i, k: integer;
data_cari : string ;
temp_array: data_distribusi;
kata_kecil: string;
begin
write('Masukkan Nama Barang : ');readln(data_cari);
{ start searching yg sama }
i := 0;
k := 0;
while (i <= n) do { sequential search }
begin
i := i + 1;
kata_kecil := lowercase(data_array[i].nama);
if (pos(lowercase(data_cari), kata_kecil) > 0) then
begin
k := k + 1;
temp_array[k] := data_array[i];
writeln('Data Ditemukan : [', temp_array[k].nama, ']');
end;
end;
if (k > 0)
then
begin
writeln('data k : ', k);
gotoxy(1,7);write('=======================================================================================================================');
gotoxy(1,8);write('| Kode | Nama Barang | Jenis Barang | Harga Barang | Qty | Nama Agen | Total Pembayaran |');
gotoxy(1,9);write('-----------------------------------------------------------------------------------------------------------------------');
for i := 1 to k do
begin
gotoxy(1,9+i);write('| | | | | | | |');
gotoxy(4,9+i);writeln(temp_array[i].id_barang);
gotoxy(15,9+i);writeln(temp_array[i].nama);
gotoxy(32,9+i);writeln(temp_array[i].barang);
gotoxy(52,9+i);writeln(temp_array[i].harga_barang);
gotoxy(68,9+i);writeln(temp_array[i].qty);
gotoxy(78,9+i);writeln(temp_array[i].agen);
gotoxy(105,9+i);writeln(temp_array[i].harga_total);
end;
gotoxy(1,10+i);write('-----------------------------------------------------------------------------------------------------------------------');
end
else
textcolor(red);
writeln('Nama Barang ',data_cari,' Tidak Ditemukan!!!');
end;
procedure binary_search_total_bayar(data_array : data_distribusi; n : integer);
var
v,w,data_cari,i,ia,ib,k : integer;
ketemu :boolean;
begin
write('Masukkan Total Bayar : ');readln(data_cari);
ia := 1;
ib := n;
ketemu := false;
while((not ketemu) and (ia <= ib)) do
begin
k:=(ia+ib) div 2 ;
if(data_array[k].harga_total=data_cari)
then
ketemu := true
else
if(data_array[k].harga_total < data_cari)
then
ia:= k+1
else
ib:=k-1;
end;
if (ketemu) then
begin
i:=1;
v:=k;
w:=k+1;
while (data_cari = data_array[v].harga_total) do
begin
gotoxy(1,7); write('=======================================================================================================================');
gotoxy(1,8); write('| Kode | Nama Barang | Jenis Barang | Harga Barang | Qty | Nama Agen | Total Pembayaran |');
gotoxy(1,9); write('-----------------------------------------------------------------------------------------------------------------------');
gotoxy(1,8+i);write('| | | | | | | |');
gotoxy(4,8+i);writeln(data_array[v].id_barang);
gotoxy(15,8+i);writeln(data_array[v].nama);
gotoxy(32,8+i);writeln(data_array[v].barang);
gotoxy(52,8+i);writeln(data_array[v].harga_barang);
gotoxy(68,8+i);writeln(data_array[v].qty);
gotoxy(78,8+i);writeln(data_array[v].agen);
gotoxy(105,8+i);writeln(data_array[v].harga_total);
i:=i+1;
v:=v-1;
gotoxy(1,8+i);write('-----------------------------------------------------------------------------------------------------------------------');
end;
while (data_cari =data_array[w].harga_total) do
begin
gotoxy(1,7); write('=======================================================================================================================');
gotoxy(1,8); write('| Kode | Nama Barang | Jenis Barang | Harga Barang | Qty | Nama Agen | Total Pembayaran |');
gotoxy(1,9); write('-----------------------------------------------------------------------------------------------------------------------');
gotoxy(1,8+i);write('| | | | | | | |');
gotoxy(4,8+i);writeln(data_array[w].id_barang);
gotoxy(15,8+i);writeln(data_array[w].nama);
gotoxy(32,8+i);writeln(data_array[w].barang);
gotoxy(52,8+i);writeln(data_array[w].harga_barang);
gotoxy(68,8+i);writeln(data_array[w].qty);
gotoxy(78,8+i);writeln(data_array[w].agen);
gotoxy(105,8+i);writeln(data_array[w].harga_total);
i:=i+1;
w:=w+1;
gotoxy(1,8+i);write('-----------------------------------------------------------------------------------------------------------------------');
end;
end
else
Textcolor(red);
writeln('Total Bayar ',data_cari,' Tidak Ditemukan!!!');
end;
procedure help;
begin
gotoxy(35,2);write('Panduan Cara Menggunakan Program Distribusi Barang ke Agen');
gotoxy(35,3);write('==========================================================');
gotoxy(3,7);write('1. cara mengisi kolom Kode Barang');
gotoxy(6,8);write('* Pada kolom Kode, Kode yang boleh digunakan adalah dari 0001-1000');
gotoxy(3,9);write('2. cara mengisi kolom Nama Barang');
gotoxy(6,10);write('* Untuk kolom nama barang, ketikan nama barang yang akan di kirim');
gotoxy(3,11);write('3. cara mengisi kolom jenis barang');
gotoxy(6,12);write('* Kolom kamar diisi dengan Kecap,Pasta_gigi,Mentega,Softdrink,Shampo,Personal_Care,Home_care');
gotoxy(6,13);write('* harga barang akan ditentukan dari harga jual dan Qty yang dimasukkan');
gotoxy(3,14);write('4. cara mengisi kolom Qty(Banyaknya Barang) dan Nama Agen ');
gotoxy(6,15);write('* Kolom Qty dan Nama Agen diisi dengan berapa banyak barang yang di pesan oleh Agen dan Nama Agen yang dituju');
gotoxy(30,17);write('>>> NAMA AGEN PT.PINTU TIGA RAHARJA : <<<');
gotoxy(6,19);write('* TOKO CIBADUYUT*');
gotoxy(6,20);write('* 1.Toko Sukamenak*');
gotoxy(6,21);write('* 2.Toko Sinar Baru*');
gotoxy(6,22);write('* 3.Toko Sinar Berkat*');
gotoxy(6,23);write('* 4.Toko Sukses*');
gotoxy(6,24);write('* 5.Toko Selli*');
gotoxy(31,19);write('* TOKO BANJARAN*');
gotoxy(31,20);write('* 1.Mitra Baru*');
gotoxy(31,21);write('* 2.Kharisma*');
gotoxy(51,19);write('* TOKO SOREANG*');
gotoxy(51,20);write('* 1.Subur*');
gotoxy(51,21);write('* 2.Cemerlang*');
gotoxy(71,19);write('* TOKO BALEENDAH*');
gotoxy(71,20);write('* 1.Pusaka*');
gotoxy(71,21);write('* 2.Toko Cirebon*');
gotoxy(71,22);write('* 3.Toko Cahaya Baru*');
gotoxy(71,23);write('* 4.Toko Paayi*');
gotoxy(71,24);write('* 5.Toko Dzidan*');
gotoxy(71,25);write('* 6.Toko Sinar Mitra*');
gotoxy(71,26);write('* 7.Toko Wawan 3*');
gotoxy(71,27);write('* 8.Toko Dewi*');
gotoxy(1,29);write('*Cat : Banyaknya Barang dalam satuan paket(dus),Harga Yang di tentukan sesuai harga distributor PT.PINTU TIGA RAHARJA')
end;
{program utama}
begin
repeat
clrscr;
menu_pilihan(menu);
case menu of
1 : begin
clrscr;
isi_Data(data_array,n);
readln;
clrscr;
end;
2 : begin
clrscr;
urut_id(n,data_array);
binary_search_id(data_array,n);
readln;
clrscr;
end;
3 : begin
clrscr;
urut_nama(n,data_array);
binary_search_nama(data_array,n);
readln;
clrscr;
end;
4 : begin
clrscr;
urut_harga(n,data_array);
binary_search_total_bayar(data_array,n);
readln;
clrscr;
end;
5 : begin
clrscr;
urut_id(n,data_array);
tampil(data_array,n);
readln;
clrscr;
end;
6 : begin
clrscr;
help;
readln;
end;
0 : begin
writeln('Anda akan keluar program , tekan enter ! ');
end;
end;
until(menu=0);
readln;
end.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment