Minggu, 05 April 2020

MPPL 2020 - Manajemen Biaya

Christine Amelia / 05111740000174
Nandha Himawan / 05111740000180

Berikut merupakan manajemen biaya yang telah kami buat berdasarkan KAK pada tugas sebelumnya.

Minggu, 29 Maret 2020

TUGAS MPPL

Anggota : 
Christine Amelia / 05111740000174
Nandha Himawan / 05111740000180

Kelas : MPPL 2020

Membuat Jadwal Pengerjaan Proyek dari KAK (Kerangka Acuan Proyek)
PEKERJAAN PENGEMBANGAN APLIKASI KEPEGAWAIAN TAHUN ANGGARAN 2012

Dokumen :


Timeline proyek untuk KAK diatas:









Minggu, 16 Februari 2020

TUGAS 2 MPPL (2020)

Anggota:
Christine Amelia / 05111740000174
Nandha Himawan / 05111740000180
M. Husni Ridhart Azzikry / 05111740000122


SIKLUS MANAGEMEN PROYEK
DAILY EXPENSE CONTROLLER

Daily expense controller adalah aplikasi yang dapat menghitung pengeluaran harian pengguna dan dapat menampilkan total pengeluaran pengguna perbulannya. Aplikasi ini juga dapat menampilkan push notification.

perkiraan tampilan (sumber)

INITIATION STAGE
- Identification of the problem

  • Kesulitan memantau pengeluaran harian.
  • Kesulitan mengatur pengeluaran harian sesuai dengan pemasukan yang didapat.
  • Kesulitan mengatur uang yang dikeluarkan sehingga sulit menabung
- Identification of Scope

  • Ruang lingkup aplikasi ini ditujukan kepada pengguna yang ingin belajar mengatur kondisi finansialnya dengan baik.
- Identification of Deliverables

  • Menampilkan batas maksimal pengeluaran dalam sehari, total pengeluaran yang sudah dikeluarkan dalam sehari, dan sisa uang yang dapat digunakan.
- Identification of Project Stakeholders

  • Stakeholder project ini adalah user dan developer.
PLANNING STAGE
- Identification of Project Timeline

  • Proyek dilaksanakan pada bulan Februari - Juni.
- Gathering Resource

  • UI/UX Designer, Frontend dan Backend Developer.
- Risk Anticipation

  • Notifikasi tidak berfungsi dengan baik.
  • Sistem gagal melakukan penghitungan.


EXECUTION STAGE
- Creating Tasks and Organizing Workflows

  • Pembagian tugas designer, frontend, dan backend.

-Explaining tasks to team members

  • Penjelasan pembagian tugas dilakukan saat rapat pertama kali dilakukan.

-Communicating with team members

  • Setiap 2 minggu sekali diadakan rapat untuk memantau perkembangan tim.

-Monitoring:

  • Setiap satu bulan akan diadakan dua kali rapat untuk melakukan pemantauan kinerja tim.


CLOSURE STAGE
- Determining the goals

  • Pengguna dapat mengatur finansialnya dengan baik oleh bantuan aplikasi ini.
  • Program berjalan dengan sebagaimana mestinya.

-Evaluation of team's performance

  • Seluruh anggota tim yang terlibat dapat bekerja dengan baik dan sesuai dengan timeline yang telah direncanakan.





Selasa, 26 Februari 2019

TUGAS APSI C (TUGAS 2)

Kelas : C
Anggota Kelompok:
1. Christine Amelia             (05111740000174)
2. Wisnu                              (05111740000170)
3. Faqih Fathan Irfani          (05111740000175)
4. Hafidz Firman Asqalany (05111740000195)

Process Flow System pada ATM

  • Penarikan


  • Pembayaran

  • Transfer

  • Penyetoran

Selasa, 12 Februari 2019

TUGAS APSI C (TUGAS 1)

CHRISTINE AMELIA
05111740000174
APSI C

Sociolla

Sociolla merupakan sebuah platform beauty e-commerce yang menyediakan layanan jual beli produk-produk kecantikan. Sociolla sendiri telah berdiri sejak Maret 2015 di Indonesia. Sociolla memberikan layanan dan menjalankan bisnisnya berdasarkan kepercayaan dari konsumen, brand/partners, layanan premium dan konsistensi dalam mengkomunikasikan brand identitas. Saat ini Sociolla sendiri baru menyediakan layanannya di Indonesia saja.




Klasifikasi Fitur Aplikasi
  • Teknologi End User : Website dan Aplikasi Smartphone Android dan IOS (soon)
  • Teknologi Database : Cloud Computing, Smartphone Storage
  • Payment : Bank Transfer, Credit/Debit Card, OVO, GoPay, Gift Card, Kredivo, Cash on Delivery, T-Cash, VOSPay
  • Customer Service : Social Media, Email, Call Center

Diagram Sistem Informasi Secara Umum


  •  Transaction Processing Systems (TPS)
Transaction Processing System (TPS) adalah sistem informasi yang terkomputerisasi yang dikembangkan untuk memproses data-data dalam jumlah besar untuk transaksi bisnis rutin seperti daftar gaji dan inventarisasi. TPS berfungsi pada level organisasi yang memungkinkan organisasi dapat berinteraksi dengan lingkungan eksternal. Data yang dihasilkan TPS dapat dilihat dan digunakan oleh manager. input pada level ini adalah transaksi dan kejadian. Proses sistem ini meliputi pengurutan data, melihat data, dan memperbaharui data. Sedangkan outputnya merupakan laporan yang detail, daftar lengkap dan ringkasan. Contohnya:


  • Management Information Systems (MIS)
Management Information Systems (MIS) adalah sistem perencanaan bagian dari pengendalian internal suatu bisnis yang meliputi pemanfaatan manusiadokumenteknologi, dan prosedur oleh akuntansi manajemen untuk memecahkan masalah bisnis seperti biaya produk, layanan, atau suatu strategi bisnis. Sistem informasi manajemen dibedakan dengan sistem informasi biasa karena SIM digunakan untuk menganalisis sistem informasi lain yang diterapkan pada aktivitas operasional organisasi. Secara akademis, istilah ini umumnya digunakan untuk merujuk pada kelompok metode manajemen informasi yang bertalian dengan otomasi atau dukungan terhadap pengambilan keputusan manusia, misalnya sistem pendukung keputusansistem pakar, dan sistem informasi eksekutif.

Pada Sociolla, MIS berupa laporan data grafik penjualan dan pembelian serta kepuasan konsumen yang berguna untuk melihat konsumsi produk yang sedang dibutuhkan maupun sebaliknya. Selain itu juga digunakan untuk melihat kebutuhan lain yang diminta konsumen, serta menampung kritik dan saran melalui kontak yang disediakan pada website Sociolla.

  • Decision Support Systems (DSS)
DSS hampir sama dengan MIS karena sama-sama menggunakan basis data sebagai sumber data. Data khusus dalam sistem informasi yang didapat dari pengumpulan data sebelumnya menjadi acuan manajer Sociolla sebagai bahan keputusan untuk memusatkan atau mengekspansi usaha, menambah atau mengurangi produk, serta pengembangan layanan.

  • Executive Information Systems (EIS)
EIS adalah sistem terkomputerisasi yang menyediakan akses bagi eksekutif secara mudah ke informasi internal dan eksterrnal yang relevan dengan faktor penentu keberhasilan. Sistem ini berguna untuk menentukan penaikan saham dan peningkatan keseluruhan perusahaan dengan 
mengacu pada data yang ada. Pada Sociolla, EIS menerima data dari DSS sebagai pemutus tertinggi 
perusahaan meliputi penetapan pekerja, mengesahkan proyek baru, serta kontrak dengan relasi lain. 

Rabu, 12 Desember 2018

EAS PWEB C

Nama : Christine Amelia
NRP   : 05111740000174
Kelas : PWEB C
Link : ppdbonlinepweb.000webhostapp.com

MEMBUAT PPDB ONLINE

1. Database:


2. Interface:
Tampilan halaman login



Tampilan halaman register

Tampilan halaman jika berhasil login


Tampilan halaman pengisian form


Tampilan halaman untuk mendownload formulir



3. Sourcecode

  • connect.php
  <?php   
  $server = "localhost";   
  $user = "root";   
  $password = "1103199901";   
  $nama_database = "pendaftaran_calonsiswa";   
  $db = mysqli_connect($server, $user, $password , $nama_database);   
  if(!$db){   
   die("Gagal terhubung dengan database: " . mysqli_connect_error());   
  }   
  ?>   

  • opening.php
  <!DOCTYPE html>    
  <html>    
  <head>    
  </head>    
  <style type="text/css">    
   ul{    
   display:table; margin:0 auto;    
   }    
   body {    
   background-color: #f5ffdc;    
   }    
  </style>    
  <body>    
   <header>    
   <h1 align="center">Pendaftaran Siswa Baru Kota Batam</h3>    
   <h3 align="center">Tingkat Sekolah Menengah Atas</h1>    
   </header>    
   <h4 align="center">Menu</h4>    
   <nav>    
   <ul>    
    <li><a href="form-daftarr.php">Isi Formulir</a></li>    
    <li><a href="list-siswa.php">Edit/Hapus</a></li>    
    <li><a href="downloadd.php">Lihat Formulir</a></li>    
   </ul>    
   </nav>    
   </body>    
  </html>    

  • signin.php
 <?php    
  session_start();    
  // initializing variables   
  $email = "";  
  $username = "";   
  $errors = array();    
  // connect to the database    
  $db = mysqli_connect('localhost', 'root', '1103199901', 'pendaftaran_calonsiswa');    
  // REGISTER USER    
  if (isset($_POST['daftar'])) {    
  // receive all input values from the form    
   $email = mysqli_real_escape_string($db, $_POST['email']);  
  $username = mysqli_real_escape_string($db, $_POST['username']);     
  $password1 = mysqli_real_escape_string($db, $_POST['password1']);    
  $password2 = mysqli_real_escape_string($db, $_POST['password2']);    
  // form validation: ensure that the form is correctly filled ...    
  // by adding (array_push()) corresponding error unto $errors array    
  if (empty($username)) { array_push($errors, "Username is required"); }    
  if (empty($email)) { array_push($errors, "Email is required"); }    
  if (empty($password1)) { array_push($errors, "Password is required"); }    
  if ($password1 != $password2) {    
   array_push($errors, "The two passwords does not match");    
  }    
  $user_check_query = "SELECT * FROM users WHERE email='$email' OR username='$username' LIMIT 1";    
  $result = mysqli_query($db, $user_check_query);    
  $user = mysqli_fetch_assoc($result);    
  if ($user) {    
   if ($user['email'] === $email) {    
   array_push($errors, "email is already exists");    
   }   
   if ($user['username'] === $username) {    
   array_push($errors, "Username is already exists");    
   }    
  }    
  if (count($errors) == 0) {    
    $password = md5($password1);   
    $query = "INSERT INTO users (username, email, password)    
      VALUES('$email', '$username', '$password')";    
    mysqli_query($db, $query);    
    $_SESSION['username'] = $username;    
    $_SESSION['success'] = "You are now logged in";    
    header('location: indexx.php');    
  }    
  }    
  // ...    
  if (isset($_POST['submit'])) {    
  $username = mysqli_real_escape_string($db, $_POST['username']);    
  $password = mysqli_real_escape_string($db, $_POST['password']);    
  if (empty($username)) {    
    array_push($errors, "Username is required");    
  }    
  if (empty($password)) {    
    array_push($errors, "Password is required");    
  }    
  if (count($errors) == 0) {    
    $password = md5($password);    
    $query = "SELECT * FROM users WHERE username='$username' AND password='$password'";    
    $results = mysqli_query($db, $query);    
    if (mysqli_num_rows($results) == true) {    
    $_SESSION['username'] = $username;    
    $_SESSION['success'] = "You are now logged in";    
    header('location: indexx.php');    
    }else {    
     array_push($errors, "Wrong username/password combination");    
    }    
  }    
  }    
  ?>    

  • login.php
 <?php   
  include "connect.php";   
  session_start();   
  if (isset($_SESSION['username'])){   
  header ("location:indexx.php");   
  }   
  ?>   
  <html>   
  <head>   
  <title>PENDAFTARAN SISWA BARU KOTA BATAM</title>    
  <link rel="stylesheet" type="text/css" href="style.css">    
  </head>   
  <body style="text-align: center;">   
  <form method="post" name="login" action="signin.php">   
  <table border=0 align="center" cellpadding=5 cellspacing=0>   
  <tr>   
  <h1>Pendaftaran Siswa Baru Kota Batam</h1>   
  <div class="header">   
  <td colspan=3><center><font size=5>LOGIN</font></center></td>   
  </div>   
  </tr>   
  <tr>   
  <td>Username</td>   
  <td>:</td>   
  <td><input type="text" name="username"></td>   
  </tr>   
  <tr>   
  <td>Password</td>   
  <td>:</td>   
  <td><input type="password" name="password"></td>   
  </tr>   
  <tr>   
  <td colspan=2></td>   
  <td><input type="submit" name="submit" value="LOGIN"></td>   
  </tr>   
  <tr>   
  <td> Belum Mendaftar? Klik </td>   
  <td colspan=3><a href="daftar-baru.php">DAFTAR</a></td>   
  </tr>   
  </table>   
  </form>   
  </body>   
  </html>   

  • indexx.php
  <?php    
  session_start();    
  if (!isset($_SESSION['username'])) {    
    $_SESSION['msg'] = "You must log in first";    
    header('location: login.php');    
  }    
  if (isset($_GET['logout'])) {    
    session_destroy();    
    unset($_SESSION['username']);    
    header("location: login.php");    
  }    
  ?>    
  <!DOCTYPE html>    
  <html>    
  <head>    
   <title>Home</title>    
  <link rel="stylesheet" type="text/css" href="style.css">      
  </head>    
  <body>    
  <div class="header">    
   <h2>Home Page</h2>    
  </div>    
  <div class="content">    
    <!-- notification message -->    
    <?php if (isset($_SESSION['success'])) : ?>    
   <div class="error success" >    
    <h3>    
   <?php    
     echo $_SESSION['success'];    
     unset($_SESSION['success']);    
   ?>    
    </h3>    
   </div>    
    <?php endif ?>    
   <!-- logged in user information -->    
   <?php if (isset($_SESSION['username'])) : ?>    
    <p>Welcome <strong><?php echo $_SESSION['username']; ?></strong></p>    
   <p> <a href="opening.php" style="color: red;">Fill The Formulir</a> </p>    
    <p> <a href="indexx.php?logout='1'" style="color: red;">Logout</a> </p>    
   <?php endif ?>    
  </div>    
  </body>    
  </html>    

  • daftar-baru.php
 <?php include('signin.php') ?>    
  <!DOCTYPE html>    
  <html>    
  <head>    
  <title>Formulir Pendaftaran Siswa Baru 2019 Kota Batam</title>    
  <link rel="stylesheet" type="text/css" href="style.css">    
  </head>    
  <body>    
  <div class="header">    
    <h2>Register</h2>    
  </div>    
  <form method="post" action="daftar-baru.php">    
    <?php include('errors.php'); ?>    
       <div class="input-group">    
    <label>Email</label>    
    <input type="email" name="email" value="<?php echo $email; ?>">    
    </div>   
    <div class="input-group">    
    <label>Username</label>    
    <input type="text" name="username" value="<?php echo $username; ?>">    
    </div>     
    <div class="input-group">    
    <label>Password</label>    
    <input type="password" name="password1">    
    </div>    
    <div class="input-group">    
    <label>Confirm password</label>    
    <input type="password" name="password2">    
    </div>    
    <div class="input-group">    
    <button type="submit" class="btn" name="daftar">Register</button>    
    </div>    
    <p>    
     Already a member? <a href="login.php">Sign in</a>    
    </p>    
  </form>    
  </body>    
  </html>    

  • form-daftarr.php
 <?php include('signin.php') ?>    
  <!DOCTYPE html>    
  <html>    
  <head>    
  <title>Formulir Pendaftaran Siswa Baru 2019 Kota Batam</title>    
  <link rel="stylesheet" type="text/css" href="style.css">    
  </head>    
  <body>    
  <div class="header">    
    <h2>Register</h2>    
  </div>    
  <form method="post" action="daftar-baru.php">    
    <?php include('errors.php'); ?>    
       <div class="input-group">    
    <label>Email</label>    
    <input type="email" name="email" value="<?php echo $email; ?>">    
    </div>   
    <div class="input-group">    
    <label>Username</label>    
    <input type="text" name="username" value="<?php echo $username; ?>">    
    </div>     
    <div class="input-group">    
    <label>Password</label>    
    <input type="password" name="password1">    
    </div>    
    <div class="input-group">    
    <label>Confirm password</label>    
    <input type="password" name="password2">    
    </div>    
    <div class="input-group">    
    <button type="submit" class="btn" name="daftar">Register</button>    
    </div>    
    <p>    
     Already a member? <a href="login.php">Sign in</a>    
    </p>    
  </form>    
  </body>    
  </html>    

  • form-edit.php
  <?php    
  include("connect.php");    
  // kalau tidak ada id di query string    
  if( !isset($_GET['id']) ){    
   header('Location: list-siswa.php');    
  }    
  //ambil id dari query string    
  $id = $_GET['id'];    
  // buat query untuk ambil data dari database    
  $sql = "SELECT * FROM calon_siswa WHERE id=$id";    
  $query = mysqli_query($db, $sql);    
  $siswa = mysqli_fetch_assoc($query);    
  // jika data yang di-edit tidak ditemukan    
  if( mysqli_num_rows($query) < 1 ){    
   die("data tidak ditemukan...");    
  }    
  ?>    
  <!DOCTYPE html>    
  <html>    
  <head>    
   <title>Formulir Pendaftaran Siswa Kota Batam</title>   
  <style type="text/css">    
   body {    
   background-color: #f5ffdc;    
   }    
   fieldset{    
   background-color: #f5ffdc;    
   }    
   </style>     
  </head>    
  <body>    
   <header>    
   <h3>Formulir Pendaftaran Siswa Baru 2019 Kota Batam</h3>    
   </header>    
   <form action="proses-edit.php" method="POST">    
   <fieldset>    
    <input type="hidden" name="id" value="<?php echo $siswa['id'] ?>" />    
   <p>    
    <label for="nama">Nama: </label>    
    <input type="text" name="nama" placeholder="nama lengkap" value="<?php echo $siswa['nama'] ?>" />    
   </p>    
    <p>    
    <label for="tempat_lahir">Tempat Lahir: </label>    
    <input type="text" name="tempat_lahir" placeholder="tempat lahir" value="<?php echo $siswa['tempat_lahir'] ?>"/>    
   </p>    
     <p>    
    <label for="tanggal_lahir">Tanggal Lahir(dd/mm/yyyy): </label>    
    <input type="text" name="tgl_lahir" placeholder="tanggal_lahir" value="<?php echo $siswa['tgl_lahir'] ?>"/>    
     </p>      
   <p>    
    <label for="alamat">Alamat: </label>    
    <textarea name="alamat"><?php echo $siswa['alamat'] ?></textarea>    
   </p>    
   <p>    
    <label for="jenis_kelamin">Jenis Kelamin: </label>    
    <?php $jk = $siswa['jenis_kelamin']; ?>    
    <label><input type="radio" name="jenis_kelamin" value="laki-laki" <?php echo ($jk == 'laki-laki') ? "checked": "" ?>> Laki-laki</label>    
    <label><input type="radio" name="jenis_kelamin" value="perempuan" <?php echo ($jk == 'perempuan') ? "checked": "" ?>> Perempuan</label>    
   </p>    
   <p>    
    <label for="agama">Agama: </label>    
    <?php $agama = $siswa['agama']; ?>    
    <select name="agama">    
    <option <?php echo ($agama == 'Buddha') ? "selected": "" ?>>Buddha</option>    
    <option <?php echo ($agama == 'Hindu') ? "selected": "" ?>>Hindu</option>    
    <option <?php echo ($agama == 'Islam') ? "selected": "" ?>>Islam</option>    
    <option <?php echo ($agama == 'Katolik') ? "selected": "" ?>>Katolik</option>    
    <option <?php echo ($agama == 'Kristen') ? "selected": "" ?>>Kristen</option>    
    </select>    
   </p>    
   <p>    
    <label for="sekolah_asal">Sekolah Asal: </label>    
    <input type="text" name="sekolah_asal" placeholder="nama sekolah" value="<?php echo $siswa['sekolah_asal'] ?>" />    
   </p>   
  <p>    
    <label for="pilihan1">Pilihan 1: </label>    
    <select name="pilihan1">   
    <option>SMA Negeri 01 Batam</option>    
    <option>SMA Negeri 03 Batam</option>    
    <option>SMA Negeri 04 Batam</option>    
    <option>SMA Negeri 08 Batam</option>    
    <option>SMA Negeri 12 Batam</option>    
       <option>SMA Negeri 15 Batam</option>  
       <option>SMA Negeri 20 Batam</option>      
    </select>    
   </p>   
     <p>    
    <label for="pilihan2">Pilihan 2: </label>    
    <select name="pilihan2">    
    <option>SMA Negeri 01 Batam</option>    
    <option>SMA Negeri 03 Batam</option>    
    <option>SMA Negeri 04 Batam</option>    
    <option>SMA Negeri 08 Batam</option>    
    <option>SMA Negeri 12 Batam</option>    
       <option>SMA Negeri 15 Batam</option>  
       <option>SMA Negeri 20 Batam</option>       
    </select>    
   </p>    
      <p>  
      <label for="pilihan3">Pilihan 3: </label>  
      <select name="pilihan3">  
       <option>SMA Negeri 01 Batam</option>    
    <option>SMA Negeri 03 Batam</option>    
    <option>SMA Negeri 04 Batam</option>    
    <option>SMA Negeri 08 Batam</option>    
    <option>SMA Negeri 12 Batam</option>    
       <option>SMA Negeri 15 Batam</option>  
       <option>SMA Negeri 20 Batam</option>   
      </select>  
      </p>       
   <p>    
    <input type="submit" value="Simpan" name="simpan" />    
   </p>    
   </fieldset>    
   </form>    
   </body>    
  </html>    

  • proses-daftar.php
  <?php    
  include("connect.php");    
  // cek apakah tombol daftar sudah diklik atau blum?    
  if(isset($_POST['daftar'])){    
   // ambil data dari formulir   
      $nik = $_POST['nik'];  
   $nama = $_POST['nama'];    
   $tempat_lahir = $_POST['tempat_lahir'];   
   $tanggal_lahir = $_POST['tgl_lahir'];   
   $alamat = $_POST['alamat'];    
   $jk = $_POST['jenis_kelamin'];    
   $agama = $_POST['agama'];    
   $sekolah = $_POST['sekolah_asal'];   
   $pilihan1 = $_POST['pilihan1'];    
   $pilihan2 = $_POST['pilihan2'];   
   $pilihan3 = $_POST['pilihan3'];        
   // buat query    
   $sql = "INSERT INTO calon_siswa (nik, nama, tempat_lahir, tgl_lahir, alamat, jenis_kelamin, agama, sekolah_asal, pilihan1, pilihan2, pilihan3) VALUE ('$nik', '$nama', '$tempat_lahir', '$tanggal_lahir', '$alamat', '$jk', '$agama', '$sekolah', '$pilihan1', '$pilihan2', '$pilihan3')";    
   $query = mysqli_query($db, $sql);    
   // apakah query simpan berhasil?    
   if( $query ) {    
   // kalau berhasil alihkan ke halaman index.php dengan status=sukses    
   header('Location: indexx.php?status=sukses');    
   } else {    
   // kalau gagal alihkan ke halaman indek.php dengan status=gagal    
   header('Location: indexx.php?status=gagal');    
   }    
  } else {    
   die("Akses dilarang...");    
  }    
  ?>    

  • proses-edit.php
 <?php    
  include("connect.php");    
  // cek apakah tombol simpan sudah diklik atau blum?    
  if(isset($_POST['simpan'])){    
   // ambil data dari formulir    
   $id = $_POST['id'];  
      $nik = $_POST['nik'];  
   $nama = $_POST['nama'];    
   $tempat_lahir = $_POST['tempat_lahir'];   
   $tanggal_lahir = $_POST['tgl_lahir'];   
   $alamat = $_POST['alamat'];    
   $jk = $_POST['jenis_kelamin'];    
   $agama = $_POST['agama'];    
   $sekolah = $_POST['sekolah_asal'];   
   $pilihan1 = $_POST['pilihan1'];    
   $pilihan2 = $_POST['pilihan2'];  
   $pilihan3 = $_POST['pilihan3']  
   // buat query update    
   $sql = "UPDATE calon_siswa SET nik='$nik',nama='$nama', tempat_lahir='$tempat_lahir', tgl_lahir='$tanggal_lahir', alamat='$alamat', jenis_kelamin='$jk', agama='$agama', sekolah_asal='$sekolah', pilihan1='$pilihan1', pilihan2='$pilihan2', pilihan3='$pilihan3' WHERE id=$id";    
   $query = mysqli_query($db, $sql);    
   // apakah query update berhasil?    
   if( $query ) {    
   // kalau berhasil alihkan ke halaman list-siswa.php    
   header('Location: list-siswa.php');    
   } else {    
   // kalau gagal tampilkan pesan    
   die("Gagal menyimpan perubahan...");    
   }    
  } else {    
   die("Akses dilarang...");    
  }    
  ?>    

  • list-siswa.php
  <?php include("connect.php"); ?>    
  <!DOCTYPE html>    
  <html>    
  <head>    
   <title>Formulir Pendaftaran Siswa Baru 2019 Kota Batam</title>    
  <style type="text/css">    
   body {    
   background-color: #f5ffdc;    
   }    
   fieldset{    
   background-color: #f5ffdc;    
   }    
   </style>     
  </head>    
  </style>    
  <body>    
   <header>    
   <h2 align="center">FORMULIR PENDAFTARAN SISWA BARU 2019 Kota Batam</h2>    
   <h3 align="center">TINGKAT SEKOLAH MENENGAH ATAS</h3>    
   </header>    
   <fieldset>    
   <p>    
   <?php    
   $sql = "SELECT * FROM calon_siswa";    
   $query = mysqli_query($db, $sql);    
   $siswa = mysqli_fetch_array($query);    
   echo "<p align='center'> FORMULIR PENDAFTARAN SISWA BARU 2019 Kota Batam</p>";    
   echo " <p align='center'> SEKOLAH MENENGAH ATAS </p>";    
   echo "<br />";    
   echo "<br />";    
   echo "<strong>ID</strong><br>";    
   echo $siswa['id']; echo "<br>";    
   echo "<br />";  
           echo "<strong>NIK</strong><br>";  
      echo $siswa['nik']; echo "<br>";    
   echo "<br />";  
   echo "<strong>Nama</strong><br>";    
   echo $siswa['nama']; echo "<br>";    
   echo "<br />";   
   echo "<strong>Tempat Lahir</strong><br>";    
   echo $siswa['tempat_lahir']; echo "<br>";    
   echo "<br />";   
   echo "<strong>Tanggal Lahir</strong><br>";    
   echo $siswa['tgl_lahir']; echo "<br>";    
   echo "<br />";   
   echo "<strong>Alamat</strong><br>";    
   echo $siswa['alamat']; echo "<br>";    
   echo "<br />";    
   echo "<strong>Jenis Kelamin</strong><br>";    
   echo $siswa['jenis_kelamin']; echo "<br>";    
   echo "<br />";    
   echo "<strong>Agama</strong><br>";    
   echo $siswa['agama']; echo "<br>";    
   echo "<br />";    
   echo "<strong>Sekolah Asal</strong><br>";    
   echo $siswa['sekolah_asal']; echo "<br>";    
   echo "<br />";    
   echo "<strong>Sekolah Pilihan 1</strong><br>";    
   echo $siswa['pilihan1']; echo "<br>";   
   echo "<strong>Sekolah Pilihan 2</strong><br>";    
   echo $siswa['pilihan2']; echo "<br>";   
      echo "<strong>Sekolah Pilihan 3</strong><br>";  
      echo $siswa['pilihan3']; echo "<br>";  
   echo "<br /></br>";    
   echo "<td>";    
   echo "<a href='form-edit.php?id=".$siswa['id']."'>Edit</a> | ";    
   echo "<a href='hapus.php?id=".$siswa['id']."'>Hapus</a>";    
   echo "</td>";    
   ?>    
   </p>    
  </html>    
  </body>    

  • style.php
 * {    
  margin: 1px;    
  padding: 1px;    
  }    
  body {    
  font-size: 120%;    
  background:#f5ffdc;    
  }    
  .header {    
  width: 20%;    
  margin: 50px auto 0px;    
  color: black;    
  background: #f5ffdc;    
  text-align: center;    
  border: 1px solid #B0C4DE;    
  border-bottom: none;    
  border-radius: 10px 10px 0px 0px;    
  padding: 20px;    
  }    
  form, .content {    
  width: 30%;    
  margin: 0px auto;    
  padding: 20px;    
  border: 1px solid #f5ffdc;    
  background: white;    
  border-radius: 0px 0px 10px 10px;    
  }    
  .input-group {    
  margin: 10px 0px 10px 0px;    
  }    
  .input-group label {    
  display: block;    
  text-align: left;    
  margin: 3px;    
  }    
  .input-group input {    
  height: 30px;    
  width: 93%;    
  padding: 5px 10px;    
  font-size: 16px;    
  border-radius: 5px;    
  border: 1px solid gray;    
  }    
  .btn {    
  padding: 10px;    
  font-size: 15px;    
  color: black;    
  background: #FFF8DC;    
  border: none;    
  border-radius: 5px;    
  }    
  .error {    
  width: 92%;    
  margin: 0px auto;    
  padding: 10px;    
  border: 1px solid #FFF8DC;    
  color: #a94442;    
  background: #f2dede;    
  border-radius: 5px;    
  text-align: left;    
  }    
  }    

  • unduh.php
 <?php    
  //export.php    
  $connect = mysqli_connect("localhost", "root", "1103199901", "pendaftaran_calonsiswa");    
  $output = '';    
  if(isset($_POST["download"]))    
  {    
  $query = "SELECT * FROM calon_siswa";    
  $result = mysqli_query($connect, $query);    
  if(mysqli_num_rows($result) > 0)    
  {    
  $output .= '    
   <table class="table" bordered="1">    
     <tr>    
           <th>nik</th>  
     <th>nama</th>   
          <th>tempat_lahir</th>   
          <th>tgl_lahir</th>           
     <th>alamat</th>    
     <th>jenis_kelamin</th>    
     <th>agama</th>    
     <th>sekolah_asal</th>    
     <th>pilihan1</th>    
          <th>pilihan2</th>  
                      <th>pilihan3</th>  
     </tr>    
  ';    
  while($row = mysqli_fetch_array($result))    
  {    
   $output .= '    
   <tr>     
            <td>'.$row["nik"].'</td>  
     <td>'.$row["nama"].'</td>   
          <td>'.$row["tempat_lahir"].'</td>   
          <td>'.$row["tgl_lahir"].'</td>   
     <td>'.$row["alamat"].'</td>    
     <td>'.$row["jenis_kelamin"].'</td>    
     <td>'.$row["agama"].'</td>    
     <td>'.$row["sekolah_asal"].'</td>    
     <td>'.$row["pilihan1"].'</td>   
          <td>'.$row["pilihan2"].'</td>  
                      <td>'.$row["pilihan3"].'</td>  
     </tr>    
   ';    
  }    
  $output .= '</table>';    
  header('Content-Type: application/xls');    
  header('Content-Disposition: attachment; filename=download.xls');    
  echo $output;    
  }    
  }    
  ?>    

  • download.php
  <?php include("connect.php"); ?>    
  <!DOCTYPE html>    
  <html>    
  <head>    
   <title>Formulir Pendaftaran Online Siswa Baru Kota Batam</title>   
  <style type="text/css">    
   body {    
   background-color: #87CEEB;    
   }    
   fieldset{    
   background-color: #f5ffdc;    
   }    
   </style>     
  </head>    
  </style>    
  <body>    
   <header>    
   <h2 align="center">FORMULIR PENDAFTARAN ONLINE SISWA BARU KOTA BATAM</h2>    
   <h3 align="center">SEKOLAH MENENGAH ATAS</h3>    
   </header>    
   <div class="login">    
   <fieldset>    
   <p>    
   <?php    
   $sql = "SELECT * FROM calon_siswa";    
   $query = mysqli_query($db, $sql);    
   $siswa = mysqli_fetch_array($query);    
   echo "<p align='center'> FORMULIR PENDAFTARAN ONLINE SISWA BARU 2019 KOTA BATAM</p>";    
   echo " <p align='center'> SEKOLAH MENENGAH ATAS</p>";    
   echo "<br />";    
   echo "<br />";     
     echo "<strong>NIK</strong><br>";    
   echo $siswa['nik']; echo "<br>";      
   echo "<br />";    
   echo "<strong>Nama</strong><br>";    
   echo $siswa['nama']; echo "<br>";    
   echo "<br />";    
     echo "<strong>Tempat Lahir</strong><br>";    
   echo $siswa['tempat_lahir']; echo "<br>";    
   echo "<br />";      
     echo "<strong>Tanggal Lahir</strong><br>";    
   echo $siswa['tgl_lahir']; echo "<br>";    
   echo "<br />";      
   echo "<strong>Alamat</strong><br>";    
   echo $siswa['alamat']; echo "<br>";    
   echo "<br />";    
   echo "<strong>Jenis Kelamin</strong><br>";    
   echo $siswa['jenis_kelamin']; echo "<br>";    
   echo "<br />";    
   echo "<strong>Agama</strong><br>";    
   echo $siswa['agama']; echo "<br>";    
   echo "<br />";    
   echo "<strong>Sekolah Asal</strong><br>";    
   echo $siswa['sekolah_asal']; echo "<br>";    
   echo "<br />";    
   echo "<strong>Sekolah Pilihan 1</strong><br>";    
   echo $siswa['pilihan1'];     echo "<br>";    
   echo "<br />";   
   echo "<strong>Sekolah Pilihan 2</strong><br>";    
   echo $siswa['pilihan2']; echo "<br>";   
      echo "<br />";  
      echo "<strong>Sekolah Pilihan 3</strong><br>";  
      echo $siswa['pilihan3']; echo "<br>";  
   ?>    
   </p>    
   <form method="post" action="unduh.php">    
   <input type="submit" name="download" class="btn btn-success" value="Download" />    
  </html>    
  </body>    

  • errors.php
  <?php if (count($errors) > 0) : ?>    
  <div class="error">    
    <?php foreach ($errors as $error) : ?>    
    <p><?php echo $error ?></p>    
    <?php endforeach ?>    
  </div>    
  <?php endif ?>   

Senin, 10 Desember 2018

UAS PBO B

MEMBUAT IMAGE EDITOR

1. Gambarkan rancangan interfacenya.


2. Gambarkan dan jelaskan Class Diaram penyusun dari image viewer yang akan dibuat.
  • Image viewer : Class utama dari image editor.
  • Image panel : mengatur letak letak panel yang akan dibentuk dari OFImage
  • OFImage : Class yang mendefinisikan gambar kedalam format OF (Object First)
  • File Manager : mengatur pengelolaan file seperti membuka file dan menyimpan file.
  • Filter : untuk menambah efek-efek yang disediakan terhadap gambar. Terdiri atas 3 filter yaitu Grayscale (hitam-putih), Mirror (Pencerminan), dan Darker (Menggelapkan).
3. Implementasikan ke dalam program.

  • Class ImageFileManager
 import java.awt.image.*;   
 import javax.imageio.*;   
 import java.io.*;  
 /**  
  * Membuat Image Editor  
  *   
  *  
  * @author (Christine Amelia)  
  * @version (UAS PBO B)  
  */  
 public class ImageFileManager  
 {  
   // A constant for the image format that this writer uses for writing.    
   // Available formats are "jpg" and "png".    
   private static final String IMAGE_FORMAT = "jpg";    
   /**    
   * Read an image file from disk and return it as an image. This method    
   * can read JPG and PNG file formats. In case of any problem (e.g the file    
   * does not exist, is in an undecodable format, or any other read error)    
   * this method returns null.    
   *    
   * @param imageFile The image file to be loaded.    
   * @return  The image object or null is it could not be read.    
   */    
   public static OFImage loadImage(File imageFile)    
   {    
     try   
     {    
       BufferedImage image = ImageIO.read(imageFile);    
       if(image == null || (image.getWidth(null) < 0))   
       {    
         // we could not load the image - probably invalid file format    
         return null;    
       }    
       return new OFImage(image);    
     }    
     catch(IOException exc)   
     {    
       return null;    
     }    
   }    
   public static void saveImage(OFImage image, File file)    
   {    
     try   
     {    
      ImageIO.write(image, IMAGE_FORMAT, file);    
     }    
     catch(IOException exc)   
     {    
       return;    
     }    
   }   
 }  

  • Class ImagePanel
 import java.awt.image.*;  
 import java.awt.*;   
 import javax.swing.*;  
 /**  
  * Membuat Image Editor  
  *  
  * @author (Christine Amelia)  
  * @version (UAS PBO B)  
  */  
 public class ImagePanel extends JComponent  
 {   
   private int width, height;    
   // An internal image buffer that is used for painting. For    
   // actual display, this image buffer is then copied to screen.    
   private OFImage panelImage;     
   //Create a new, empty ImagePanel.     
   public ImagePanel()    
   {    
     width = 350; // arbitrary size for empty panel    
     height = 250;    
     panelImage = null;    
   }   
   // Set the image that this panel should show.     
   public void setImage(OFImage image)    
   {    
     if(image != null)   
     {    
      width = image.getWidth();    
      height = image.getHeight();    
      panelImage = image;    
      repaint();    
     }    
   }   
   // Clear the image on this panel.    
   public void clearImage()    
   {    
     Graphics imageGraphics = panelImage.getGraphics();    
     imageGraphics.setColor(Color.LIGHT_GRAY);    
     imageGraphics.fillRect(0, 0, width, height);    
     repaint();    
   }    
   // The following methods are redefinitions of methods    
   // inherited from superclasses.    
   /**    
   * Tell the layout manager how big we would like to be.    
   * (This method gets called by layout managers for placing    
   * the components.)    
   *    
   * @return The preferred dimension for this component.    
   */    
   public Dimension getPreferredSize()    
   {    
     return new Dimension(width, height);    
   }    
   /**    
   * This component needs to be redisplayed. Copy the internal image    
   * to screen. (This method gets called by the Swing screen painter    
   * every time it want this component displayed.)    
   *    
   * @param g The graphics context that can be used to draw on this component.    
   */    
   public void paintComponent(Graphics g)    
   {    
     Dimension size = getSize();    
     g.clearRect(0, 0, size.width, size.height);    
     if(panelImage != null)   
     {    
       g.drawImage(panelImage, 0, 0, null);    
     }    
   }    
 }  

  • Class OFImage
 import java.awt.*;   
 import java.awt.image.*;   
 import javax.swing.*;  
 /**  
  * Membuat Image Editor  
  *  
  * @author (Christine Amelia)  
  * @version (UAS PBO B)  
  */  
 public class OFImage extends BufferedImage  
 {   
   public OFImage(BufferedImage image)    
   {    
     super(image.getColorModel(), image.copyData(null), image.isAlphaPremultiplied(), null);    
   }    
   public OFImage(int width, int height)    
   {    
     super(width, height, TYPE_INT_RGB);    
   }    
   public void setPixel(int x, int y, Color col)    
   {    
     int pixel = col.getRGB();    
     setRGB(x, y, pixel);    
   }    
   public Color getPixel(int x, int y)    
   {    
     int pixel = getRGB(x, y);    
     return new Color(pixel);    
   }    
   // Make this image a bit darker.     
   public void darker()    
   {    
     int height = getHeight();    
     int width = getWidth();    
     for(int y = 0; y < height; y++)   
     {    
       for(int x = 0; x < width; x++)   
       {    
         setPixel(x, y, getPixel(x, y).darker());    
       }    
     }    
   }    
   // Make this image a bit lighter.     
   public void lighter()    
   {    
     int height = getHeight();    
     int width = getWidth();    
     for(int y = 0; y < height; y++)   
     {    
       for(int x = 0; x < width; x++)   
       {    
         setPixel(x, y, getPixel(x, y).brighter());    
       }    
     }    
   }   
   /**    
   * Perform a three level threshold operation.    
   * That is: repaint the image with only three color values:    
   *  white, gray, and black.    
   */    
   public void threshold()    
   {    
     int height = getHeight();    
     int width = getWidth();    
     for(int y = 0; y < height; y++)   
     {    
       for(int x = 0; x < width; x++)   
       {    
         Color pixel = getPixel(x, y);    
         int brightness = (pixel.getRed() + pixel.getBlue() + pixel.getGreen()) / 3;    
         if(brightness <= 85)   
         {    
          setPixel(x, y, Color.BLACK);    
         }    
         else if(brightness <= 170)   
         {    
           setPixel(x, y, Color.GRAY);    
         }    
         else   
         {    
           setPixel(x, y, Color.WHITE);    
         }    
       }    
     }    
   }    
 }  

  • Class Filter
 /**  
  * Membuat Image Editor  
  *  
  * @author (Christine Amelia)  
  * @version (UAS PBO B)  
  */  
 public abstract class Filter  
 {  
   private String name;    
   public Filter(String name)   
   {   
     this.name = name;   
   }   
   public String getName()   
   {   
     return name;   
   }   
   // Apply this filter to an image.   
   public abstract void apply(OFImage image);  
 }  

  • Class DarkerFilter
 /**  
  * Membuat Image Editor  
  *  
  * @author (Christine Amelia)  
  * @version (UAS PBO B)  
  */  
 public class DarkerFilter extends Filter  
 {   
   public DarkerFilter(String name)   
   {   
     super(name);   
   }   
   // Apply this filter to an image.   
   public void apply(OFImage image)   
   {   
     int height = image.getHeight();   
     int width = image.getWidth();   
     for(int y = 0; y < height; y++)   
     {   
       for(int x = 0; x < width; x++)   
       {   
         image.setPixel(x, y, image.getPixel(x, y).darker());   
       }   
     }   
   }   
 }  

  • Class MirrorFilter
 import java.awt.Color;  
 /**  
  * Membuat Image Editor  
  *  
  * @author (Christine Amelia)  
  * @version (UAS PBO B)  
  */  
 public class MirrorFilter extends Filter  
 {  
   public MirrorFilter(String name)   
   {   
     super(name);   
   }   
   // Apply this filter to an image.    
   public void apply(OFImage image)   
   {   
    int height = image.getHeight();   
    int width = image.getWidth();   
    for(int y = 0; y < height; y++)   
    {   
      for(int x = 0; x < width / 2; x++)   
      {   
        Color left = image.getPixel(x, y);   
        image.setPixel(x, y, image.getPixel(width - 1 - x, y));   
        image.setPixel(width - 1 - x, y, left);   
      }   
    }   
   }   
 }  

  • Class GrayScaleFilter
 import java.awt.Color;   
 /**  
  * Membuat Image Editor  
  *  
  * @author (Christine Amelia)  
  * @version (UAS PBO B)  
  */  
 public class GrayScaleFilter extends Filter  
 {   
   public GrayScaleFilter(String name)   
   {   
     super(name);   
   }   
   // Apply this filter to an image.   
   public void apply(OFImage image)   
   {   
     int height = image.getHeight();   
     int width = image.getWidth();   
     for(int y = 0; y < height; y++)   
     {   
       for(int x = 0; x < width; x++)   
       {   
         Color pix = image.getPixel(x, y);   
         int avg = (pix.getRed() + pix.getGreen() + pix.getBlue()) / 3;   
         image.setPixel(x, y, new Color(avg, avg, avg));   
       }   
     }   
   }   
 }  

  • Class ImageViewer
 import java.awt.*;  
 import java.awt.event.*;  
 import java.awt.image.*;  
 import java.awt.Graphics;  
 import java.awt.Image;  
 import java.awt.image.BufferedImage;  
 import javax.swing.*;  
 import javax.swing.border.*;  
 import java.util.ArrayList;  
 import java.util.List;  
 import java.util.Iterator;  
 import java.io.File;  
 /**  
  * Membuat Image Editor  
  * Main class  
  *  
  * @author (Christine Amelia)  
  * @version (UAS PBO B)  
  */  
 public class ImageViewer  
 {  
   private static final String VERSION = "Version 3.1";  
   private static JFileChooser fileChooser = new JFileChooser(System.getProperty("user.dir"));  
   private JFrame frame;  
   private ImagePanel imagePanel;  
   private JButton textButton;  
   private JButton zoominButton;  
   private JButton zoomoutButton;  
   private JButton cropButton;  
   private JButton rotate1Button;  
   private JButton rotate2Button;  
   private JLabel filenameLabel;  
   private JLabel statusLabel;  
   private OFImage currentImage;  
   private List<Filter> filters;  
   public ImageViewer()  
   {  
     currentImage = null;  
     filters = createFilters();  
     makeFrame();  
   }  
   private void makeText()  
   {  
     if(currentImage !=null)  
     {  
       int width = currentImage.getWidth();  
       int height = currentImage.getHeight();  
       String addText = JOptionPane.showInputDialog("Type something");  
       float fontSize = Float.parseFloat(JOptionPane.showInputDialog("Font Size"));  
       int xPosition = Integer.parseInt(JOptionPane.showInputDialog("X Position"));  
       int yPosition = Integer.parseInt(JOptionPane.showInputDialog("Y Position"));  
       OFImage newImage = new OFImage(width,height);  
       for(int y = 0; y < height; y++)   
       {    
         for(int x = 0; x < width; x++)   
         {    
           Color col = currentImage.getPixel(x, y);    
           newImage.setPixel(x, y, col);    
         }   
       }  
       Graphics g = newImage.getGraphics();    
       g.setFont(g.getFont().deriveFont(fontSize));    
       g.drawString(addText, xPosition, yPosition);    
       g.dispose();    
       currentImage = newImage;    
       imagePanel.setImage(currentImage);   
     }  
   }  
   private void openFile()    
   {    
     int returnVal = fileChooser.showOpenDialog(frame);    
     if(returnVal != JFileChooser.APPROVE_OPTION)   
     {    
       return;    
     }    
     File selectedFile = fileChooser.getSelectedFile();    
     currentImage = ImageFileManager.loadImage(selectedFile);    
     if(currentImage == null)   
     {    
       JOptionPane.showMessageDialog(frame,    
       "The file was not in a recognized image file format.",    
       "Image Load Error",    
       JOptionPane.ERROR_MESSAGE);    
       return;    
     }    
     imagePanel.setImage(currentImage);    
     setButtonsEnabled(true);    
     showFilename(selectedFile.getPath());    
     showStatus("File loaded.");    
     frame.pack();    
   }  
   private void close()  
   {    
     currentImage = null;    
     imagePanel.clearImage();    
     showFilename(null);    
     setButtonsEnabled(false);    
   }  
   private void saveAs()    
   {    
     if(currentImage != null)   
     {    
       int returnVal = fileChooser.showSaveDialog(frame);    
       if(returnVal != JFileChooser.APPROVE_OPTION)   
       {    
         return;    
       }    
       File selectedFile = fileChooser.getSelectedFile();    
       ImageFileManager.saveImage(currentImage, selectedFile);    
       showFilename(selectedFile.getPath());    
     }    
   }  
   private void quit()    
   {    
     System.exit(0);    
   }   
   private void applyFilter(Filter filter)    
   {    
     if(currentImage != null)   
     {    
       filter.apply(currentImage);    
       frame.repaint();    
       showStatus("Applied: " + filter.getName());    
     }    
     else   
     {    
       showStatus("No image loaded.");    
     }    
   }    
   private void showAbout()    
   {    
     JOptionPane.showMessageDialog(frame,"ImageViewer\n" + VERSION,"About ImageViewer", JOptionPane.INFORMATION_MESSAGE);    
   }  
   private void makeZoomIn()    
   {    
     if(currentImage != null)   
     {    
       int width = currentImage.getWidth();    
       int height = currentImage.getHeight();    
       OFImage newImage = new OFImage(width * 2, height * 2);    
       for(int y = 0; y < height; y++)   
       {    
         for(int x = 0; x < width; x++)   
         {    
           Color col = currentImage.getPixel(x, y);    
           newImage.setPixel(x * 2, y * 2, col);    
           newImage.setPixel(x * 2 + 1, y * 2, col);    
           newImage.setPixel(x * 2, y * 2 + 1, col);    
           newImage.setPixel(x * 2+1, y * 2 + 1, col);    
         }    
       }    
       currentImage = newImage;    
       imagePanel.setImage(currentImage);    
       frame.pack();    
     }    
   }    
   private void makeZoomOut()    
   {    
     if(currentImage != null)   
     {    
       int width = currentImage.getWidth() / 2;    
       int height = currentImage.getHeight() / 2;    
       OFImage newImage = new OFImage(width, height);    
       for(int y = 0; y < height; y++)   
       {    
         for(int x = 0; x < width; x++)   
         {    
           newImage.setPixel(x, y, currentImage.getPixel(x * 2, y * 2));    
         }    
       }    
       currentImage = newImage;    
       imagePanel.setImage(currentImage);    
       frame.pack();    
     }    
   }    
   private void crop()    
   {    
     if (currentImage != null)    
     {    
       int width = currentImage.getWidth();    
       int height = currentImage.getWidth();    
       int xAwal = Integer.parseInt(JOptionPane.showInputDialog("x.akhir"));    
       int yAwal = Integer.parseInt(JOptionPane.showInputDialog("y.akhir"));    
       int xAkhir = Integer.parseInt(JOptionPane.showInputDialog("x.awal"));    
       int yAkhir = Integer.parseInt(JOptionPane.showInputDialog("y.awal"));    
       OFImage newImage = new OFImage(xAkhir - xAwal, yAkhir - yAwal);    
       for (int y = 0; y < yAkhir - yAwal; y++)    
       {    
         for (int x = 0; x < xAkhir - xAwal; x++)    
         {    
           newImage.setPixel(x, y, currentImage.getPixel(x + xAwal, y + yAwal));    
         }    
       }    
       currentImage = newImage;    
       imagePanel.setImage(currentImage);    
       frame.pack();    
     }    
   }    
   private void showFilename(String filename)    
   {    
     if(filename == null)   
     {    
       filenameLabel.setText("No file displayed.");    
     }    
     else   
     {    
       filenameLabel.setText("File: " + filename);    
     }    
   }    
   private void showStatus(String text)    
   {    
     statusLabel.setText(text);    
   }    
   private void setButtonsEnabled(boolean status)    
   {    
     zoominButton.setEnabled(status);    
     zoomoutButton.setEnabled(status);    
     cropButton.setEnabled(status);    
     rotate1Button.setEnabled(status);    
     rotate2Button.setEnabled(status);     
   }    
   private List<Filter> createFilters()    
   {    
     List<Filter> filterList = new ArrayList<Filter>();    
     filterList.add(new DarkerFilter("Darker"));      
     filterList.add(new MirrorFilter("Mirror"));    
     filterList.add(new GrayScaleFilter("Grayscale"));    
     return filterList;    
   }    
   private void makeFrame()    
   {    
     frame = new JFrame("ImageViewer");    
     JPanel contentPane = (JPanel)frame.getContentPane();    
     contentPane.setBorder(new EmptyBorder(6, 6, 6, 6));    
     makeMenuBar(frame);    
     contentPane.setLayout(new BorderLayout(6, 6));    
     imagePanel = new ImagePanel();    
     imagePanel.setBorder(new EtchedBorder());    
     contentPane.add(imagePanel, BorderLayout.CENTER);    
     filenameLabel = new JLabel();    
     contentPane.add(filenameLabel, BorderLayout.NORTH);    
     statusLabel = new JLabel(VERSION);    
     contentPane.add(statusLabel, BorderLayout.SOUTH);    
     JPanel toolbar = new JPanel();    
     toolbar.setLayout(new GridLayout(0, 1));    
     textButton = new JButton("Add Text");    
     textButton.addActionListener(new ActionListener()   
     {    
       public void actionPerformed(ActionEvent e)   
       {   
         makeText();  
       }    
     });  
     toolbar.add(textButton);    
     zoominButton = new JButton("Zoom In");    
     zoominButton.addActionListener(new ActionListener()   
     {    
      public void actionPerformed(ActionEvent e)   
      {   
        makeZoomIn();   
      }    
     });    
     toolbar.add(zoominButton);    
     zoomoutButton = new JButton("Zoom Out");    
     zoomoutButton.addActionListener(new ActionListener()   
     {    
      public void actionPerformed(ActionEvent e)   
      {   
        makeZoomOut();   
      }    
     });    
     toolbar.add(zoomoutButton);    
     cropButton = new JButton("Crop");    
     cropButton.addActionListener(new ActionListener()   
     {    
      public void actionPerformed(ActionEvent e)   
      {   
        crop();   
      }    
     });    
     toolbar.add(cropButton);   
     rotate1Button = new JButton("Rotate 90 Left");    
     rotate1Button.addActionListener(new ActionListener()   
     {    
      public void actionPerformed(ActionEvent e)   
      {   
        Rotate90left();   
      }    
     });    
     toolbar.add(rotate1Button);    
     rotate2Button = new JButton("Rotate 90 Right");    
     rotate2Button.addActionListener(new ActionListener()   
     {    
      public void actionPerformed(ActionEvent e)   
      {   
        Rotate90right();   
      }    
     });    
     toolbar.add(rotate2Button);    
     JPanel flow = new JPanel();    
     flow.add(toolbar);    
     contentPane.add(flow, BorderLayout.WEST);    
     showFilename(null);    
     setButtonsEnabled(false);    
     frame.pack();     
     Dimension d = Toolkit.getDefaultToolkit().getScreenSize();    
     frame.setLocation(d.width/2 - frame.getWidth()/2, d.height/2 - frame.getHeight()/2);    
     frame.setVisible(true);    
   }    
   private void Rotate90left()   
   {    
     if(currentImage != null)   
     {    
       // create new image with double size    
       int width = currentImage.getWidth();    
       int height = currentImage.getHeight();    
       OFImage newImage = new OFImage(height, width);    
       //copy pixel data into new image    
       for(int y = 0; y < height; y++)   
       {    
         for(int x = 0; x < width; x++)   
         {    
           Color col = currentImage.getPixel(x, y);    
           newImage.setPixel(y, width-x-1, col);    
         }    
       }    
       currentImage = newImage;    
       imagePanel.setImage(currentImage);    
       frame.pack();    
     }    
   }    
   private void Rotate90right()   
   {    
     if(currentImage != null)   
     {    
       // create new image with double size    
       int width = currentImage.getWidth();    
       int height = currentImage.getHeight();    
       OFImage newImage = new OFImage(height, width);    
       //copy pixel data into new image    
       for(int y = 0; y < height; y++)   
       {    
         for(int x = 0; x < width; x++)   
         {    
           Color col = currentImage.getPixel(x, y);    
           newImage.setPixel(height-y-1, x, col);    
         }    
       }    
       currentImage = newImage;    
       imagePanel.setImage(currentImage);    
       frame.pack();    
     }    
   }    
   private void makeMenuBar(JFrame frame)    
   {    
     final int SHORTCUT_MASK = Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();    
     JMenuBar menubar = new JMenuBar();    
     frame.setJMenuBar(menubar);    
     JMenu menu;    
     JMenuItem item;    
     // create the File menu    
     menu = new JMenu("File");    
     menubar.add(menu);    
     item = new JMenuItem("Open...");    
     item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, SHORTCUT_MASK));    
     item.addActionListener(new ActionListener()   
     {    
      public void actionPerformed(ActionEvent e)   
      {   
        openFile();   
      }    
     });    
     menu.add(item);    
     item = new JMenuItem("Close");    
     item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W, SHORTCUT_MASK));    
     item.addActionListener(new ActionListener()   
     {    
      public void actionPerformed(ActionEvent e)   
      {   
        close();  
      }    
     });    
     menu.add(item);    
     menu.addSeparator();    
     item = new JMenuItem("Save As...");    
     item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, SHORTCUT_MASK));    
     item.addActionListener(new ActionListener()   
     {    
      public void actionPerformed(ActionEvent e)   
      {   
        saveAs();   
      }    
     });    
     menu.add(item);    
     menu.addSeparator();    
     item = new JMenuItem("Quit");    
     item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, SHORTCUT_MASK));    
     item.addActionListener(new ActionListener()   
     {    
      public void actionPerformed(ActionEvent e)   
      {   
        quit();   
      }    
     });    
     menu.add(item);    
     // create the Filter menu    
     menu = new JMenu("Effect");    
     menubar.add(menu);    
     for(final Filter filter : filters)   
     {    
       item = new JMenuItem(filter.getName());    
       item.addActionListener(new ActionListener()   
       {    
        public void actionPerformed(ActionEvent e)   
        {    
          applyFilter(filter);    
        }    
       });    
       menu.add(item);    
     }    
     // create the Help menu    
     menu = new JMenu("Help");    
     menubar.add(menu);    
     item = new JMenuItem("About ImageViewer...");    
     item.addActionListener(new ActionListener()   
     {    
      public void actionPerformed(ActionEvent e)   
      {   
        showAbout();   
      }    
     });    
     menu.add(item);    
   }    
 }    

Hasil:

  • Tampilan awal dan saat memunculkan gambar

  • Tampilan saat menambahkan text
  • Tampilan saat membesarkan dan mengecilkan gambar

  • Tampilan saat gambar diputar 90 derajat ke kanan dan kekiri

  • Tampilan saat gambar memakai filter Darker, Mirror dan Grayscale




MPPL 2020 - Manajemen Biaya

Christine Amelia / 05111740000174 Nandha Himawan / 05111740000180 Berikut merupakan manajemen biaya yang telah kami buat berdasarkan KAK ...