Skip to content

Latihan penerapan JavaScript ES6 untuk memahami fitur modern seperti arrow function, destructuring, dan spread/rest operator. Program dijalankan di console browser (F12) dengan output ditampilkan langsung di console.

Notifications You must be signed in to change notification settings

bnrpmbd/tugas-es6

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

3 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“Š Electrical Engineering Score Analyzer

JavaScript License Status

Aplikasi web interaktif untuk menganalisis dan mengelola nilai mahasiswa Teknik Elektro dengan fitur ranking, konversi nilai huruf, dan sistem pembimbing akademik.

🎯 Fitur Utama

  • βœ… Manajemen Data Mahasiswa - Pengelolaan data mahasiswa dengan skor dan pembimbing
  • πŸ“ˆ Ranking Otomatis - Peringkat mahasiswa berdasarkan skor tertinggi
  • πŸŽ“ Konversi Nilai - Konversi skor numerik ke nilai huruf (A-E)
  • πŸ“§ Sistem Pembimbing - Informasi dosen pembimbing dengan email
  • πŸ“Š Statistik Real-time - Rata-rata nilai, jumlah lulus, dan mahasiswa terbaik
  • πŸ–₯️ Console Output - Tampilan hasil analisis di browser console
  • ⚑ ES6+ Features - Menggunakan destructuring, arrow functions, spread operator, optional chaining

πŸ“Έ Screenshot Output

1️⃣ Output dari Browser Console (F12)

Browser Console Output Part 1 Browser Console Output Part 2

2️⃣ Output dari Terminal (node main.js)

Terminal Output

πŸ“‹ Prasyarat

  • Browser modern (Chrome, Firefox, Edge, Safari)
  • Node.js (opsional, untuk testing via terminal)

πŸ’» Instalasi & Penggunaan

1️⃣ Clone Repository

git clone https://github.com/bnrpmbd/tugas-es6.git
cd tugas-es6

2️⃣ Jalankan di Browser

Buka file index.html di browser, lalu buka Console (tekan F12 atau Ctrl + Shift + J):

# Windows
start index.html

# macOS
open index.html

# Linux
xdg-open index.html

Atau melalui Live Server di VSCode. Lihat output di Console Browser, bukan di halaman web.

3️⃣ Jalankan di Terminal (Node.js)

node main.js

πŸ“ Struktur Project

Tugas 1/
β”œβ”€β”€ index.html          # Halaman utama aplikasi
β”œβ”€β”€ main.js             # Logic JavaScript & data processing
β”œβ”€β”€ README.md           # Dokumentasi project
└── screenshots/        # Folder untuk screenshot output
    β”œβ”€β”€ console_1.png   # Screenshot console browser (part 1)
    β”œβ”€β”€ console_2.png   # Screenshot console browser (part 2)
    └── terminal.png    # Screenshot terminal output

πŸ› οΈ Teknologi yang Digunakan

  • JavaScript ES6+

    • Arrow Functions
    • Destructuring
    • Spread Operator
    • Optional Chaining (?.)
    • Nullish Coalescing (??)
    • Template Literals
    • Array Methods (map, filter, reduce)
  • HTML5 - Minimal markup untuk load JavaScript

  • Console API - Menampilkan output menggunakan console.log()

πŸ“š Konsep JavaScript yang Diimplementasikan

1. Deklarasi Variabel (const vs let)

const appName = "Electrical Engineering Score Analyzer";
let version = 1.0;
const author = "Banar";

2. Arrow Functions & Higher-Order Functions

const getAverage = arr => arr.reduce((sum, s) => sum + s.score, 0) / arr.length;
const getPassed = arr => arr.filter(s => s.score >= 80);

3. Destructuring Parameters

const getTopStudent = ([first, ...rest]) => {
  return rest.reduce((best, s) => s.score > best.score ? s : best, first);
};

4. Optional Chaining & Nullish Coalescing

const email = student.advisor?.email ?? "Belum ada pembimbing";

5. Array Manipulation (Immutable)

const rankStudents = (arr) => {
  return [...arr].sort((a, b) => b.score - a.score);
};

πŸ“Š Data Structure

const students = [
  {
    name: "Rina",
    score: 88,
    advisor: {
      name: "Dr. Ahmad",
      email: "ahmad@univ.ac.id"
    }
  },
  // ...
];

πŸŽ“ Grading System

Skor Nilai Huruf
β‰₯ 85 A
β‰₯ 70 B
β‰₯ 60 C
β‰₯ 50 D
< 50 E

πŸ”§ Kustomisasi

Mengubah Data Mahasiswa

Edit array students di main.js:

const students = [
  { name: "Nama Baru", score: 90, advisor: { name: "Dr. X", email: "x@univ.ac.id" } },
  // tambahkan mahasiswa lainnya...
];

Mengubah Batas Kelulusan

Ubah kondisi di fungsi getPassed:

const getPassed = arr => arr.filter(s => s.score >= 75); // ubah dari 80 ke 75

πŸ› Troubleshooting

Data tidak muncul di console browser?

  1. Pastikan file main.js dan index.html di folder yang sama
  2. Buka Console browser dengan menekan F12 atau Ctrl + Shift + J
  3. Hard refresh browser: Ctrl + Shift + R atau Ctrl + F5
  4. Cek apakah ada error di Console

Error "Identifier has already been declared"?

  • Pastikan tidak ada variabel dengan nama yang sama
  • Cek duplikasi const atau let

Script tidak ter-load?

  • Cek path di <script src="main.js"></script> sudah benar
  • Pastikan nama file main.js (huruf kecil semua)

πŸ“ˆ Roadmap

  • Tambahkan UI visual di halaman HTML (tidak hanya console)
  • Export data ke PDF
  • Import data dari CSV/Excel
  • Database integration
  • Authentication system
  • Multi-semester support
  • Grafik visualisasi nilai

🀝 Kontribusi

Kontribusi sangat diterima! Silakan:

  1. Fork repository ini
  2. Buat branch baru (git checkout -b feature/AmazingFeature)
  3. Commit perubahan (git commit -m 'Add some AmazingFeature')
  4. Push ke branch (git push origin feature/AmazingFeature)
  5. Buat Pull Request

πŸ“ License

Distributed under the MIT License. See LICENSE for more information.

πŸ‘¨β€πŸ’» Author

Banar Pambudi

πŸ™ Acknowledgments

  • Terima kasih kepada dosen pengampu mata kuliah Pemrograman Web
  • Inspirasi dari berbagai tutorial JavaScript ES6+
  • Community support dari Stack Overflow

⭐ Star repository ini jika membantu!

πŸ“« Punya pertanyaan? Buat issue baru.


Made with ❀️ for Electrical Engineering Students

About

Latihan penerapan JavaScript ES6 untuk memahami fitur modern seperti arrow function, destructuring, dan spread/rest operator. Program dijalankan di console browser (F12) dengan output ditampilkan langsung di console.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published