Absensi adalah proses penting dalam banyak organisasi dan institusi untuk melacak kehadiran dan kegiatan karyawan atau siswa. Dalam tutorial ini, kita akan belajar bagaimana membuat aplikasi absensi sederhana menggunakan Python dan menyimpan data absensi dalam database JSON lokal.
Persiapan
Sebelum memulai, pastikan Anda telah menginstal Python di komputer Anda. Selain itu, Anda juga membutuhkan editor teks seperti Visual Studio Code atau Sublime Text untuk menulis kode.
Langkah-langkah
- Membuat
absensi.json
{
"siswa": [],
"absensi": {}
}
- Install modul yang dibutuhkan
pip install prettytabl
- Buat file baru
main.py
Catatan: File ini harus satu folder dengan absensi json. - Import modul yang dibutuhkan
import json
import os
from datetime import datetime
from prettytable import PrettyTable
- Buat fungsi untuk membaca database JSON
def load_database():
if not os.path.exists('absensi.json'):
with open('absensi.json', 'w') as file:
json.dump({"siswa": [], "absensi": {}}, file)
with open('absensi.json', 'r') as file:
return json.load(file)
Fungsi ini memeriksa apakah file database JSON ('absensi.json') ada atau tidak. Jika tidak ada, maka file tersebut akan dibuat dengan struktur awal yang diperlukan, yaitu daftar siswa kosong dan daftar absensi kosong. Kemudian, fungsi membaca file JSON dan mengembalikan datanya. -
Buat fungsi untuk menyimpan database JSON
def save_database(data):
with open('absensi.json', 'w') as file:
json.dump(data, file)
Fungsi ini digunakan untuk menyimpan data ke dalam file database JSON ('absensi.json'). -
Buat Fungsi untuk menambahkan siswa
def tambah_siswa():
database = load_database()
siswa_baru = input("Masukkan nama siswa (pisahkan dengan koma jika lebih dari satu): ").split(',')
for siswa in siswa_baru:
if siswa.strip():
database['siswa'].append({"nama": siswa.strip()})
save_database(database)
print("Siswa berhasil ditambahkan.")
Fungsi ini memungkinkan pengguna untuk menambahkan satu atau lebih siswa ke dalam database. Pengguna diminta untuk memasukkan nama siswa, yang kemudian dipisahkan dan ditambahkan ke dalam struktur data JSON. - Buat fungsi untuk melakukan absensi
def absen():
database = load_database()
print("Daftar Siswa:")
siswa_table = PrettyTable()
siswa_table.field_names = ["ID", "Nama"]
for i, siswa in enumerate(database['siswa']):
siswa_table.add_row([i + 1, siswa['nama']])
siswa_table.align = "l"
print(siswa_table)
id_siswa_input = input("Masukkan ID siswa yang ingin diabsen (pisahkan dengan koma jika lebih dari satu): ")
id_siswa_list = [int(x.strip()) for x in id_siswa_input.split(',') if x.strip()]
timestamp = datetime.now().strftime("%H:%M/%d-%m-%Y")
if timestamp not in database['absensi']:
database['absensi'][timestamp] = []
for id_siswa in id_siswa_list:
if 0 <= id_siswa < len(database['siswa']):
database['absensi'][timestamp].append({"nama": database['siswa'][id_siswa]['nama'], "hadir": True})
else:
print(f"ID siswa {id_siswa} tidak valid.")
save_database(database)
print("Absensi berhasil.")
Fungsi ini memungkinkan pengguna untuk melakukan absensi. Mereka diminta untuk memilih siswa yang ingin diabsen berdasarkan ID, dan absensi mereka dicatat di database bersama dengan waktu absen. - Buat fungsi untuk lihat absensi
def lihat_absensi():
database = load_database()
absensi_table = PrettyTable()
absensi_table.field_names = ["Tanggal", "Jam", "Nama", "Status"]
for timestamp, absensi in database['absensi'].items():
jam, tanggal = timestamp.split("/")
for siswa in database['siswa']:
hadir = next((absen['hadir'] for absen in absensi if absen['nama'] == siswa['nama']), False)
absensi_table.add_row([tanggal, jam, siswa['nama'], 'Hadir' if hadir else 'Tidak Hadir'])
absensi_table.align = "l"
print("Daftar Absensi:")
print(absensi_table)
Fungsi ini digunakan untuk melihat absensi yang telah dicatat dalam database. Ini mencetak tabel yang menampilkan tanggal, jam, nama siswa, dan status kehadiran mereka. - Buat fungsi untuk menampilkan daftar siswa
def daftar_siswa():
database = load_database()
siswa_table = PrettyTable()
siswa_table.field_names = ["ID", "Nama"]
siswa_table.align = "l"
print("Daftar Siswa:")
for i, siswa in enumerate(database['siswa']):
siswa_table.add_row([i + 1, siswa['nama']])
print(siswa_table)
Fungsi ini memungkinkan pengguna untuk melihat daftar siswa yang ada dalam database. - Buat fungsi untuk menampilkan menu
def display_menu():
menu_table = PrettyTable()
menu_table.field_names = ["Pilihan", "Deskripsi"]
menu_table.align = "l"
menu_table.add_row(["1", "Tambah Siswa"])
menu_table.add_row(["2", "Daftar Siswa"])
menu_table.add_row(["3", "Absen"])
menu_table.add_row(["4", "Lihat Absensi"])
menu_table.add_row(["5", "Keluar"])
print("Menu:")
print(menu_table)
Fungsi ini menampilkan menu utama aplikasi, yang mencakup pilihan untuk menambah siswa, melihat daftar siswa, melakukan absensi, melihat absensi, dan keluar dari program. - Buat fungsi utama
def main_menu():
while True:
display_menu()
pilihan = input("Pilih menu: ")
Fungsi utama ini menjalankan aplikasi dengan menampilkan menu kepada pengguna dan memproses pilihan mereka.if pilihan == '1':
tambah_siswa()
elif pilihan == '2':
daftar_siswa()
elif pilihan == '3':
absen()
elif pilihan == '4':
lihat_absensi()
elif pilihan == '5':
print("Terima kasih!")
break
else:
print("Pilihan tidak valid. Silakan coba lagi.")
- Buat fungsi menjalankan program
if __name__ == "__main__":
main_menu()
Bagian ini memastikan bahwa aplikasi dijalankan ketika file ini dijalankan langsung, bukan diimpor sebagai modul ke dalam program lain. Itu memanggil fungsimain_menu()
untuk memulai eksekusi program. - Jalankan program
python main.py
Dengan langkah-langkah sederhana ini, Anda telah membuat aplikasi absensi sederhana menggunakan Python dan menyimpan data absensi dalam database JSON lokal.
Selamat mencoba!