Aplikasi manajemen penjualan part komputer berbasis Python dengan GUI PyQt5 dan database MySQL. Sistem ini memudahkan Anda untuk mengelola data part komputer termasuk nama, kategori, harga, dan stok dengan interface yang user-friendly.
- β GUI Modern dengan PyQt5 - Interface yang user-friendly dan responsif
- β Tabel Data Part - Menampilkan semua part dalam format tabel yang rapi
- β Tambah Part Baru - Dialog form untuk menambah part dengan berbagai kategori
- β Edit Part - Pilih row dan edit data part dengan mudah
- β Hapus Part - Hapus part dengan konfirmasi sebelumnya
- β Database MySQL - Penyimpanan data yang aman dan terstruktur
- β Input Validation - Validasi input untuk memastikan data valid
- β Kategori Dropdown - 13 kategori part komputer yang sudah tersedia
| Teknologi | Versi | Deskripsi |
|---|---|---|
| Python | 3.8+ | Bahasa pemrograman utama |
| PyQt5 | 5.15+ | Framework GUI modern |
| MySQL | 8.0+ | Database management system |
| mysql-connector-python | - | Library untuk koneksi MySQL |
Sebelum menjalankan aplikasi, pastikan Anda sudah memiliki:
- Python 3.8+ - Download Python
- MySQL Server - Download MySQL
- pip - Package manager Python (biasanya sudah tersedia)
# Jika menggunakan git
git clone <repository-url>
cd UAS
# Atau extract folder jika sudah di-download
cd /path/to/UAS# Windows
python -m venv venv
venv\Scripts\activate
# Linux/Mac
python3 -m venv venv
source venv/bin/activatepip install mysql-connector-python PyQt5Buka MySQL Command Line atau MySQL Workbench dan jalankan query berikut:
-- Buat database
CREATE DATABASE penjualan_pc;
-- Gunakan database
USE penjualan_pc;
-- Buat tabel part
CREATE TABLE part (
id_part INT AUTO_INCREMENT PRIMARY KEY,
nama_part VARCHAR(100) NOT NULL,
kategori VARCHAR(50) NOT NULL,
harga INT NOT NULL,
stok INT NOT NULL
);
-- Insert data sample (opsional)
INSERT INTO part (nama_part, kategori, harga, stok) VALUES
('Intel Core i7', 'Processor', 3500000, 10),
('RTX 3080', 'Graphics Card', 8000000, 5),
('RAM 16GB', 'Memory', 800000, 20),
('SSD 1TB', 'Storage', 1200000, 15);Edit file database/database.py dan sesuaikan konfigurasi:
def get_db_connection():
return mysql.connector.connect(
host="127.0.0.1", # Alamat server MySQL
user="root", # Username MySQL
password="YOUR_PASSWORD", # Password MySQL
database="penjualan_pc", # Nama database
auth_plugin="mysql_native_password"
)python main.pyAplikasi akan langsung membuka GUI window dengan tabel part dan tombol-tombol fitur.
Langkah-langkah:
- Klik tombol β Tambah Part
- Dialog akan terbuka, isi form:
- Nama Part: Masukkan nama part (mis: RTX 4080)
- Kategori: Pilih kategori dari dropdown (Processor, Graphics Card, Memory, dll)
- Harga: Masukkan harga part
- Stok: Masukkan jumlah stok
- Klik Simpan untuk menyimpan atau Batal untuk membatalkan
Kategori yang Tersedia:
- Processor
- Graphics Card
- Memory (RAM)
- Storage (SSD/HDD)
- Motherboard
- Power Supply
- Cooling
- Case
- Monitor
- Keyboard
- Mouse
- Headset
- Other
Data part akan langsung ditampilkan di tabel utama dengan informasi:
- ID - ID unik part
- Nama Part - Nama part
- Kategori - Kategori part
- Harga - Harga dalam format Rp (contoh: Rp 3.500.000)
- Stok - Jumlah stok tersedia
Langkah-langkah:
- Pilih/klik row part yang ingin diubah di tabel
- Klik tombol βοΈ Edit Part
- Dialog edit akan terbuka dengan data part yang sudah terisi
- Ubah data sesuai kebutuhan
- Klik Simpan untuk menyimpan perubahan
Langkah-langkah:
- Pilih/klik row part yang ingin dihapus di tabel
- Klik tombol ποΈ Hapus Part
- Konfirmasi akan muncul, klik Yes untuk menghapus atau No untuk membatalkan
- Part akan dihapus dari database
Klik tombol π Refresh untuk merefresh/memperbarui data dari database. Berguna jika ada perubahan dari sumber lain.
Klik tombol β Keluar untuk menutup aplikasi.
- β Nama Part tidak boleh kosong - Validasi akan mengingatkan jika nama kosong
- β Harga dan Stok numeric - Gunakan field spinner untuk angka
- β Konfirmasi sebelum hapus - Sistem akan meminta konfirmasi sebelum menghapus data
- β Sorting kolom - Anda bisa klik header tabel untuk sort (jika diaktifkan)
- β Auto-refresh - Setelah tambah/edit/hapus, tabel akan otomatis refresh
UAS/
β
βββ main.py # File utama aplikasi
β
βββ controllers/
β βββ __init__.py
β βββ part_controller.py # Controller untuk menangani input user
β
βββ models/
β βββ __init__.py
β βββ part.py # Model data Part
β
βββ services/
β βββ __init__.py
β βββ part_service.py # Service untuk business logic
β
βββ database/
β βββ __init__.py
β βββ database.py # Konfigurasi koneksi database
β
βββ .gitignore # File untuk mengabaikan file tertentu di git
βββ README.md # File dokumentasi ini
Solusi:
pip install mysql-connector-pythonSolusi:
- Pastikan MySQL Server sudah berjalan
- Cek konfigurasi host, user, dan password di
database/database.py - Pada Linux:
sudo service mysql start - Pada Windows: Buka Services dan start MySQL
Solusi:
- Pastikan database
penjualan_pcsudah dibuat - Jalankan query SQL seperti yang dijelaskan di bagian Instalasi
Solusi:
- Periksa username dan password MySQL di
database/database.py - Pastikan user MySQL memiliki privilege yang sesuai
Solusi:
- Pastikan Anda menjalankan dari terminal, bukan double-click
- Pastikan DISPLAY variable sudah set (Linux/Mac)
- Coba dengan:
python main.py
| Fitur | Deskripsi |
|---|---|
| Tabel Data | Menampilkan semua part dalam format tabel yang rapi |
| Form Input | Dialog modern untuk input data |
| Dropdown Kategori | 13 kategori part yang sudah tersedia |
| Validasi Input | Memvalidasi input sebelum menyimpan |
| Konfirmasi Hapus | Dialog konfirmasi sebelum menghapus data |
| Format Harga | Harga ditampilkan dengan format Rp |
| Error Handling | Pesan error yang jelas dan informatif |
| Auto Refresh | Tabel otomatis refresh setelah operasi |
| Aspek | Detail |
|---|---|
| Dibuat Oleh | Muhamad Farhan Qolbi |
| Tanggal | Desember 2025 |
| Status | Active β |
| Versi | 2.0 (GUI dengan PyQt5) |
Proyek ini bebas digunakan untuk keperluan pendidikan dan komersial.
- Selalu backup database sebelum melakukan operasi delete
- Gunakan virtual environment untuk menghindari konflik package
- Pastikan MySQL running sebelum membuka aplikasi
- Gunakan git untuk version control dan collaboration
- Double-check data sebelum hapus karena tidak bisa di-undo
T: Bisakah saya menambah kategori part baru?
J: Ya, edit file gui/part_gui.py dan tambahkan kategori di list kombobox.
T: Bisakah saya menampilkan lebih banyak kolom di tabel?
J: Ya, edit struktur tabel di gui/part_gui.py dan tambahkan kolom di database.
T: Bagaimana cara backup database?
J: Gunakan mysqldump atau export dari MySQL Workbench.
T: Apakah aplikasi ini support multi-user?
J: Ya, asalkan semua user terkoneksi ke database MySQL yang sama.
T: Bisakah saya menjalankan aplikasi ini di web?
J: Saat ini CLI/GUI only. Untuk web, Anda bisa membuat REST API dengan Flask/Django.
Jika ada pertanyaan atau saran, silakan hubungi melalui:
- π§ Email: muhamadfarhanqolbi@gmail.com
- π¬ Issues: Report di repository
Selamat menggunakan Sistem Penjualan Part Komputer! π



