Program Showroom Mobil menggunakan Bahasa Ruby

Waktu semester 3 kemarin, saya mendapat tugas membuat program showroom mobil dari mata kuliah OOP. Program yang saya buat menggunakan bahasa ruby, dan programnya sangat sangat sederhana gan, soalnya ane juga belum bisa coding tingkat tinggi. tapi ya lumayan gan. sedangkan untuk menyimpan data. ane menggunakan SQL Database. ini program sederhana ane gan. (terlalu simple)

require 'mysql'
$con=Mysql.new '127.0.0.1', 'root', ''
$con.query 'use gejeee'
class DataMobil
  def input
    print "Banyak Data      : "
    @banyak=gets.to_i
    puts":::::::::::::::::::::::::"
    for i in 1..@banyak
    puts ""
    puts "Data ke-"+i.to_s
    puts "========================= "
    print "Nama mobil       : "; @nama=gets.chomp
    print "Kapasitas Mesin  : "; @kpst=gets.chomp
    print "Tipe Mesin       : "; @tpmsn=gets.chomp
    print "Transmisi        : "; @trs=gets.chomp
    print "Berat Kosong     : "; @brt=gets.chomp
    print "Tahun Pembuatan  : "; @thun=gets.to_i
    print "Harga mobil      : "; @harga=gets.chomp
$con.query "insert into showroom(Nama,Kapasitas,Tipe,Transmisi,Berat,Tahun,Harga)
values ('#{@nama}','#{@tpmsn}','#{@trs}','#{@brt}','#{@thun}','#{@harga}')"
puts"========================= "
end
print "Tekan [ENTER] untuk kembali ke menu"
tekan=gets.chomp
tekan="y"
if tekan=="y"
system("cls")
return main
else
  break
end
end

  def output
      rs=$con.query "select * from showroom"
      while row=rs.fetch_row do
      puts "No                  : "+row[0]
      puts "Nama Mobil          : "+row[1]
      puts "Kapasitas Mesin     : "+row[2]
      puts "Tipe                : "+row[3]
      puts "Transmisi           : "+row[4]
      puts "Berat Kosong        : "+row[5]
      puts "Tahun Pembuatan     : "+row[6]
      puts "Harga               : "+row[7]
      puts "===================================="
    end
print "Tekan [ENTER] untuk kembali ke menu"
tekan=gets.chomp
tekan="y"
if tekan=="y"
system("cls")
return main
else
  break
end
  end
 
  def update
    puts "
::::::::::::::::::::::::::"
    print ":: Pilih menu   : "; @menu=gets.to_i
    puts "::::::::::::::::::::::::::"
    if @menu==1
    print "Nomor Data      : "; @no=gets.to_i
    print "Nama            : "; @nama=gets.chomp
    rs=$con.query "update showroom set nama='#{@nama}' where No ='#{@no}'"
    elsif @menu==2
    print "Nomor Data      : "; @no=gets.to_i
    print "Kapasitas Mesin : "; @kpst=gets.chomp
    rs=$con.query "update showroom set kapasitas='#{@kpst}' where No ='#{@no}'"
    elsif @menu==3
    print "Nomor Data      : "; @no=gets.to_i
    print "Tipe Mesin      : "; @tpmsn=gets.chomp
    rs=$con.query "update showroom set tipe='#{@tpmsn}' where No ='#{@no}'"
    elsif @menu==4
    print "Nomor Data      : "; @no=gets.to_i
    print "Transmisi       : "; @trs=gets.chomp
    rs=$con.query "update showroom set transmisi='#{@trs}' where No ='#{@no}'"
    elsif @menu==5
    print "Nomor Data      : "; @no=gets.to_i
    print "Berat Kosong    : "; @brt=gets.chomp
    rs=$con.query "update showroom set berat='#{@brt}' where No ='#{@no}'"
    else
      return update
    end
puts "Tekan [ENTER] untuk pilih menu"
tekan=gets.chomp
tekan="y"
if tekan=="y"
system("cls")
return update
else
  break
end
  end
 
  def delete
puts"
::::::::::::::::::::
::      Menu      ::
::::::::::::::::::::
::                ::
:: 1. Hapus       ::
:: 2. Keluar      ::
::::::::::::::::::::" 
print ":: Pilih   : "; @hapus=gets.to_i
puts"::::::::::::::::::::"
if @hapus==1
    print"Nomor Data ke-"; @no=gets.chomp
    rs=$con.query "delete from showroom where No ='#{@no}'"
    puts "
Ket : Data ke-"+@no+" Terhapus"
puts""
    puts "Tekan [ENTER] untuk kembali ke menu"
    tekan=gets.chomp
    tekan="y"
if tekan=="y"
system("cls")
return delete
else
  break
end
elsif @hapus==2
  system("cls")
  return main
  else
    return delete
  end

end
 
  def search
    puts"
::::::::::::::::::::
::      Menu      ::
::::::::::::::::::::
::                ::
:: 1. Nama        ::
:: 2. Harga       ::
:: 3. Kapasitas   ::
:: 4. Tahun       ::
:: 5. Keluar      ::
::::::::::::::::::::" 
print "Cari Sesuai : "; @cari=gets.to_i
if @cari==1
print "Nama : "; @nama=gets.chomp
rs=$con.query "select * from showroom where Nama = '#{@nama}'"
     while row=rs.fetch_row do
      puts "No                  : "+row[0]
      puts "Nama Mobi           : "+row[1]
      puts "Kapasitas Mesin     : "+row[2]
      puts "Tipe                : "+row[3]
      puts "Transmisi           : "+row[4]
      puts "Berat Kosong        : "+row[5]
      puts "Tahun Pembuatan     : "+row[6]
      puts "Harga               : "+row[7]
      puts "===================================="
    end
print "Tekan [ENTER] untuk kembali ke menu"
tekan=gets.chomp
tekan="y"
if tekan=="y"
system("cls")
return search
else
  break
end

elsif @cari==2
  print "Harga : "; @Harga=gets.chomp
  rs=$con.query "select * from showroom where Harga = '#{@harga}'"
     while row=rs.fetch_row do
      puts row[0]
      puts row[1]
      puts row[2]
      puts row[3]
      puts row[4]
      puts row[5]
      puts row[6]
      puts row[7]
    end
print "Tekan [ENTER] untuk kembali ke menu"
tekan=gets.chomp
tekan="y"
if tekan=="y"
system("cls")
return search
else
  break
end

elsif @cari==3
  print "Kapasitas : "; @kpst=gets.chomp
  rs=$con.query "select * from showroom where Kapasitas = '#{@kpst}'"
     while row=rs.fetch_row do
      puts row[0]
      puts row[1]
      puts row[2]
      puts row[3]
      puts row[4]
      puts row[5]
      puts row[6]
      puts row[7]
    end
print "Tekan [ENTER] untuk kembali ke menu"
tekan=gets.chomp
tekan="y"
if tekan=="y"
system("cls")
return search
else
  break
end

elsif @cari==4
  print "Tahun : "; @thun=gets.to_i
  rs=$con.query "select * from showroom where Tahun = '#{@thun}'"
     while row=rs.fetch_row do
      puts row[0]
      puts row[1]
      puts row[2]
      puts row[3]
      puts row[4]
      puts row[5]
      puts row[6]
      puts row[7]
    end
print "Tekan [ENTER] untuk kembali ke menu"
tekan=gets.chomp
tekan="y"
if tekan=="y"
system("cls")
return search
else
  break
end

elsif @cari==5
  system("cls")
  return main
else
  return search
end
end
end

class Pembeli
  def caridata
        puts"
::::::::::::::::::::
::      Menu      ::
::::::::::::::::::::
::                ::
:: 1. Nama        ::
:: 2. Harga       ::
:: 3. Kapasitas   ::
:: 4. Tahun       ::
:: 5. Keluar      ::
::::::::::::::::::::" 
print "Cari Sesuai : "; @cari=gets.to_i
if @cari==1
print "Nama : "; @nama=gets.chomp
rs=$con.query "select * from showroom where Nama = '#{@nama}'"
     while row=rs.fetch_row do
      puts "No                  : "+row[0]
      puts "Nama Mobi           : "+row[1]
      puts "Kapasitas Mesin     : "+row[2]
      puts "Tipe                : "+row[3]
      puts "Transmisi           : "+row[4]
      puts "Berat Kosong        : "+row[5]
      puts "Tahun Pembuatan     : "+row[6]
      puts "Harga               : "+row[7]
      puts "===================================="
    end
print "Tekan [ENTER] untuk kembali ke menu"
tekan=gets.chomp
tekan="y"
if tekan=="y"
system("cls")
return caridata
else
  break
end

elsif @cari==2
  print "Harga : "; @Harga=gets.chomp
  rs=$con.query "select * from showroom where Harga = '#{@harga}'"
     while row=rs.fetch_row do
      puts "No                  : "+row[0]
      puts "Nama Mobi           : "+row[1]
      puts "Kapasitas Mesin     : "+row[2]
      puts "Tipe                : "+row[3]
      puts "Transmisi           : "+row[4]
      puts "Berat Kosong        : "+row[5]
      puts "Tahun Pembuatan     : "+row[6]
      puts "Harga               : "+row[7]
      puts "===================================="
    end
print "Tekan [ENTER] untuk kembali ke menu"
tekan=gets.chomp
tekan="y"
if tekan=="y"
system("cls")
return caridata
else
  break
end

elsif @cari==3
  print "Kapasitas : "; @kpst=gets.chomp
  rs=$con.query "select * from showroom where Kapasitas = '#{@kpst}'"
     while row=rs.fetch_row do
      puts "No                  : "+row[0]
      puts "Nama Mobi           : "+row[1]
      puts "Kapasitas Mesin     : "+row[2]
      puts "Tipe                : "+row[3]
      puts "Transmisi           : "+row[4]
      puts "Berat Kosong        : "+row[5]
      puts "Tahun Pembuatan     : "+row[6]
      puts "Harga               : "+row[7]
      puts "===================================="
    end
print "Tekan [ENTER] untuk kembali ke menu"
tekan=gets.chomp
tekan="y"
if tekan=="y"
system("cls")
return caridata
else
  break
end

elsif @cari==4
  print "Tahun : "; @thun=gets.to_i
  rs=$con.query "select * from showroom where Tahun = '#{@thun}'"
     while row=rs.fetch_row do
      puts "No                  : "+row[0]
      puts "Nama Mobi           : "+row[1]
      puts "Kapasitas Mesin     : "+row[2]
      puts "Tipe                : "+row[3]
      puts "Transmisi           : "+row[4]
      puts "Berat Kosong        : "+row[5]
      puts "Tahun Pembuatan     : "+row[6]
      puts "Harga               : "+row[7]
      puts "===================================="
    end
print "Tekan [ENTER] untuk kembali ke menu"
tekan=gets.chomp
tekan="y"
if tekan=="y"
system("cls")
return caridata
else
  break
end

elsif @cari==5
  system("cls")
  return menupembeli
else
  return caridata
end
    end
 
  def pilihmobil
    print "Pilih Mobil (nomor data) : "; @no=gets.chomp
    puts "Detail Mobil Yang dipilih : "
      rs=$con.query "select * from showroom where No ='#{@no}'"
      while row=rs.fetch_row do
      puts "No                  : "+row[0]
      puts "Nama Mobi           : "+row[1]
      puts "Kapasitas Mesin     : "+row[2]
      puts "Tipe                : "+row[3]
      puts "Transmisi           : "+row[4]
      puts "Berat Kosong        : "+row[5]
      puts "Tahun Pembuatan     : "+row[6]
      puts "Harga               : "+row[7]
      puts "===================================="
    @nam=row[1]
    @har=row[7]
  end
 
  print "Anda yakin membeli ini ? [y/n] : "; @yakin=gets.chomp
  if @yakin=="y"
    time=Time.new
    @tangg=time.strftime("%d-%m-%Y")
    @untung=2000000
    rs=$con.query "insert into terjual(Nama,Harga,Tanggal) values ('#{@nam}','#{@har}','#{@tangg}')"
    rs=$con.query "insert into pemasukkan(Tanggal,Pemasukkan) values ('#{@tangg}','#{@untung}')"
      return menupembeli
      else
        system("cls")
        return pilihmobil
        end
puts "Tekan [ENTER] untuk kembali ke menu"
tekan=gets.chomp
tekan="y"
if tekan=="y"
system("cls")
return menupembeli
else
  break
end
  end
  def datapembeli
    puts "
::::::::::::::::::::
::   Pembayaran   ::
::::::::::::::::::::
::                ::
:: 1. Tunai       ::
:: 2. Angsuran    ::
:: 3. Keluar      ::
::::::::::::::::::::"
print "Pilih Jenis Pembayaran : "; @jenpem=gets.to_i
if @jenpem==1
    puts "
::::::::::::::::   
::DATA PEMBELI::
::::::::::::::::"
    print "Nama Pembeli : "; @nape=gets.chomp
    print "Alamat       : "; @almt=gets.chomp
    print "Nama Mobil   : "; @nmmobil=gets.chomp
@pembyrn="Tunai"
@uangmk="0"
@angsrn="0"
@kekurangan="0"
  $con.query "insert into dapem(Nama,Alamat,Mobil,Pembayaran,Uang_Muka,Angsuran,Kekurangan)
values ('#{@nape}','#{@almt}','#{@nmmobil}','#{@pembyrn}','#{@uangmk}','#{@angsrn}','#{@kekurangan}')"
print "Tekan [ENTER] untuk kembali ke menu"
tekan=gets.chomp
tekan="y"
if tekan=="y"
system("cls")
return menupembeli
else
  break
end
    elsif @jenpem==2
       puts "
::::::::::::::::   
::DATA PEMBELI::
::::::::::::::::"
    print "Nama Pembeli : "; @nape=gets.chomp
    print "Alamat       : "; @almt=gets.chomp
    print "Nama Mobil   : "; @nmmobil=gets.chomp
    print "Uang Muka    : "; @uangmk=gets.to_i
    print "Angsuran     : "; @angsrn=gets.chomp
    print "Harga Mobil  : "; @hrgambl=gets.to_i
    @pembyrn="Kredit"
    @kekurangan=@hrgambl-@uangmk
    $con.query "insert into dapem(Nama,Alamat,Mobil,Pembayaran,Uang_Muka,Angsuran,Kekurangan)
values ('#{@nape}','#{@almt}','#{@nmmobil}','#{@pembyrn}','#{@uangmk}','#{@angsrn}','#{@kekurangan}')"
print "Tekan [ENTER] untuk kembali ke menu"
tekan=gets.chomp
tekan="y"
if tekan=="y"
system("cls")
return menupembeli
else
  break
end
elsif @jenpem==3
  system("cls")
  return menupembeli
else
  system("cls")
return datapembeli
    end
    end
   
  def cetaknota
    print "Masukkan Nomor ID Pembeli : "; @noid=gets.chomp
      rs=$con.query "select * from dapem where No ='#{@noid}'"
      while row=rs.fetch_row do
      time=Time.new
      print "Uang sebesar : "; @kalim=gets.chomp
      puts "
¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶
¶                                                                             ¶
¶ No. Nota  : 03457"+row[0]+"                                                          ¶
¶ Tanggal   : "+time.strftime("%d-%m-%Y")+"                                                      ¶
¶                                                                             ¶
¶                                                                             ¶
¶                                                                             ¶
¶ Telah menerima uang sejumlah Rp. "+row[5]+" (Terbilang "+@kalim+")
¶ Dari                                                                        ¶
¶ No. ID         : "+row[0]+"
¶ Nama           : "+row[1]+"
¶ Alamat         : "+row[2]+"
¶ Guna pembelian : 1 unit mobil "+row[3]+"                                            
¶                                                                             ¶
¶                                                                             ¶
¶ Penerima Pembayaran :                                                       ¶
¶                                                                             ¶
¶       /-|-----|                                                             ¶
¶      /  | | |_|                                                             ¶
¶     |___| | |_|                                                             ¶
¶                                                                             ¶
¶       Andryzka                                                              ¶
¶ (..................)                                                        ¶
¶                                                                             ¶
¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶"
puts ""
    end
print "Tekan [ENTER] untuk kembali ke menu"
tekan=gets.chomp
tekan="y"
if tekan=="y"
system("cls")
return menupembeli
else
  break
end
    end

end

def main
    nnn=DataMobil.new
      puts "
:::::::::::::::::::::::::
::        |MENU|       ::
:::::::::::::::::::::::::
[                       ]
[ 1. Input Data Mobil   ]
[ 2. Lihat Data Mobil   ]
[ 3. Update Data Mobil  ]
[ 4. Hapus Data Mobil   ]
[ 5. Cari Data Mobil    ]
[ 6. Laporan            ]
[ 7. Keluar             ]
:::::::::::::::::::::::::"
      print "Pilih menu       : "; @menu=gets.to_i
      puts":::::::::::::::::::::::::"
      if @menu==1
        nnn.input
        elsif @menu==2
          system("cls")
          nnn.output
          elsif @menu==3
            system("cls")
            nnn.update
            elsif @menu==4
              system("cls")
              nnn.delete
              elsif @menu==5
                system("cls")
                nnn.search
                elsif @menu==6
                  system("cls")
                  return laporan
                  elsif @menu==7
                    system("cls")
                    return menuutama
                    else
                      system("cls")
                      return main
                    end
                 
end

def password
print "Masukkan Password : "; @pass=gets.to_i
if @pass==123456
system("cls")
main
else
puts "Password yang anda masukkan salah"
return password
end
end

def menuutama
  nnnn=Pembeli.new
  puts "
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                                                       ¶¶¶¶¶¶¶¶¶             
                                                     ¶¶           ¶¶          
                                       ¶¶¶¶¶       ¶¶               ¶¶        
                                      ¶     ¶    ¶¶     ¶¶    ¶¶      ¶¶      
          SELAMAT DATANG DI           ¶     ¶   ¶¶      ¶¶    ¶¶       ¶¶     
      ^MACAN PUTIH MOBIL KEDIRI^      ¶    ¶  ¶¶        ¶¶    ¶¶        ¶¶    
  jl. Brawijaya no. 40 b, Kota Kediri  ¶   ¶   ¶                         ¶¶   
                                     ¶¶¶¶¶¶¶¶¶¶¶¶                        ¶¶   
                                    ¶            ¶ ¶¶             ¶¶     ¶¶   
                                   ¶¶            ¶  ¶¶            ¶¶     ¶¶   
                                  ¶¶   ¶¶¶¶¶¶¶¶¶¶¶    ¶¶        ¶¶       ¶¶   
                                  ¶               ¶     ¶¶¶¶¶¶¶¶        ¶¶    
                                  ¶¶              ¶                    ¶¶     
                                   ¶   ¶¶¶¶¶¶¶¶¶¶¶¶                   ¶¶      
                                   ¶¶           ¶  ¶¶                ¶¶       
                                    ¶¶¶¶¶¶¶¶¶¶¶¶     ¶¶             ¶¶        
                                                        ¶¶¶¶¶¶¶¶¶¶¶           
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶+++++++++++++++++
++++++++++++++++++¶¶                                        ¶¶+++++++++++++++++
++++++++++++++++++¶¶                   MENU                 ¶¶+++++++++++++++++
++++++++++++++++++¶¶                                        ¶¶+++++++++++++++++
++++++++++++++++++¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶+++++++++++++++++
++++++++++++++++++¶¶                                        ¶¶+++++++++++++++++
++++++++++++++++++¶¶ 1. Masuk sebagai pemilik showroom      ¶¶+++++++++++++++++
++++++++++++++++++¶¶ 2. Masuk sebagai pembeli               ¶¶+++++++++++++++++
++++++++++++++++++¶¶ 3. Keluar                              ¶¶+++++++++++++++++
++++++++++++++++++¶¶                                        ¶¶+++++++++++++++++
++++++++++++++++++¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶+++++++++++++++++"
print "
++++++++++++++++++| Pilih : "; @plh=gets.to_i
if @plh==1
  system("cls")
  password
  elsif @plh==2
    system("cls")
    nnnn.menupembeli
    elsif @plh==3
      break
      else
      return menuutama
    end
  end
 

def laporan
  puts "
::::::::::::::::::::::::
::        Menu        ::
::::::::::::::::::::::::
:: 1. Terjual         ::
:: 2. Pemasukkan      ::
:: 3. Keluar          ::
::::::::::::::::::::::::"
print "Pilih menu : "; @mn=gets.to_i

if @mn==1
  system("cls")
puts"
Unit yang Terjual
-------------------"
  rs=$con.query "select * from terjual"
      while row=rs.fetch_row do
      puts "No                  : "+row[0]
      puts "Nama Mobil          : "+row[1]
      puts "Harga               : "+row[2]
      puts "Tanggal             : "+row[3]
      puts "===================================="
    end
    print "Tekan [ENTER] untuk kembali ke menu"
tekan=gets.chomp
tekan="y"
if tekan=="y"
system("cls")
return laporan
else
  break
end

  elsif @mn==2
    system("cls")
puts "
Pemasukkan
--------------------"
    rs=$con.query "select * from pemasukkan"
      while row=rs.fetch_row do
      puts "No                  : "+row[0]
      puts "Tanggal             : "+row[1]
      puts "Pemasukkan          : "+row[2]
      puts "===================================="
    end
print "Tekan [ENTER] untuk kembali ke menu"
tekan=gets.chomp
tekan="y"
if tekan=="y"
system("cls")
return laporan
else
  break
end
    elsif @mn==3
      system("cls")
      return main
      else
        system("cls")
        return laporan
      end
      end
     
menuutama

Program buatan ane diatas memiliki 4 table untuk menyimpan data. Tabel dapem (data pembeli), tabel pemasukkan, table showroom (data mobil yang di jual),  tabel terjual. ketika menjalankan program dari coding di atas. akan tambil 3 pilihan menu seperti gambar di bawah ini.

Tampilan Home Program

jika kita memilih menu 1, maka kita akan masuk ke menu untuk mengakses data showroom mobil (input, view, delete). tp sebelumnya kita akan ditanya paswordnya terlebih dahulu.
menu kedua diperuntukkan untuk pembeli yang ingin membeli mobil. dan terdapat fasilitas cicilan atau tunai.
menu ketiga di gunakan untuk keluar dari program.
nah, itulah program yang ane buat dengan keringetan sehari penuh. walaupun sangat sederhana dan masih banyak sekali kelemahan atau kekurangannya. tapi yang penting ane udah berusaha semaksimal mungkin. hehehehe..... dan semoga bisa jadi referensi agan2 yang masih baru masuk kuliah. :D