First commit

This commit is contained in:
nugroho 2026-04-10 13:35:37 +07:00
commit c1006502f2
3 changed files with 107 additions and 0 deletions

13
README.MD Normal file
View File

@ -0,0 +1,13 @@
# Discount Calculator Project
This project was created as part of a recruitment task for Koding Next.
It is a python-based GUI app that calculates final price after applying discount.
The purpose of this project is to demonstrate practical skills in programming, problem solving, and basic web development.
# Notes
Since the task mentionied quantity as a possible input, but the example showed no such input, I created two versions of the app.
- `discalc.py` includes all three mentioned fields (price, quantity, discount).
- `discalc-noqty.py` is the one without quantity field.
Thank you for your understanding

47
discalc-noqty.py Normal file
View File

@ -0,0 +1,47 @@
import tkinter as tk
from tkinter import messagebox
def calculate():
try:
price = float(entry_price.get())
#quantity = int(entry_quantity.get())
rate = float(entry_rate.get())
if price < 0 or rate < 0: #price < 0 or quantity < 0 or rate < 0:
messagebox.showerror("Error", "Invalid input.", detail="Value cannot be negative.")
return
if rate > 100:
messagebox.showerror("Error", "Invalid input.", detail="Discount rate cannot exceed 100%.")
return
#subtotal = price * quantity
discount = price * rate / 100 #subtotal * rate / 100
total = price - discount #subtotal - discount
result_var.set(f"Total: {total:,.2f}")
except ValueError:
messagebox.showerror("Error", "Invalid input.", detail="Please enter numeric values. Fractions are allowed for price and discount rate.")
root = tk.Tk()
root.title("Discount Calculator")
root.geometry("280x250")
tk.Label(root, text="Price").pack(pady=5)
entry_price = tk.Entry(root, width=20)
entry_price.pack(pady=5)
# tk.Label(root, text="Quantity").pack(pady=5)
# entry_quantity = tk.Entry(root, width=20)
# entry_quantity.pack(pady=5)
tk.Label(root, text="Discount (%)").pack(pady=5)
entry_rate = tk.Entry(root, width=20)
entry_rate.pack(pady=5)
tk.Button(root, text="Calculate", command=calculate).pack(pady=10)
result_var = tk.StringVar()
tk.Label(root, textvariable=result_var).pack(pady=10)
root.mainloop()

47
discalc.py Executable file
View File

@ -0,0 +1,47 @@
import tkinter as tk
from tkinter import messagebox
def calculate():
try:
price = float(entry_price.get())
quantity = int(entry_quantity.get())
rate = float(entry_rate.get())
if price < 0 or quantity < 0 or rate < 0:
messagebox.showerror("Error", "Invalid input.", detail="Value cannot be negative.")
return
if rate > 100:
messagebox.showerror("Error", "Invalid input.", detail="Discount rate cannot exceed 100%.")
return
subtotal = price * quantity
discount = subtotal * rate / 100
total = subtotal - discount
result_var.set(f"Total: {total:,.2f}")
except ValueError:
messagebox.showerror("Error", "Invalid input.", detail="Please enter numeric values. Fractions are allowed for price and discount rate.")
root = tk.Tk()
root.title("Discount Calculator")
root.geometry("280x300")
tk.Label(root, text="Price").pack(pady=5)
entry_price = tk.Entry(root, width=20)
entry_price.pack(pady=5)
tk.Label(root, text="Quantity").pack(pady=5)
entry_quantity = tk.Entry(root, width=20)
entry_quantity.pack(pady=5)
tk.Label(root, text="Discount (%)").pack(pady=5)
entry_rate = tk.Entry(root, width=20)
entry_rate.pack(pady=5)
tk.Button(root, text="Calculate", command=calculate).pack(pady=10)
result_var = tk.StringVar()
tk.Label(root, textvariable=result_var).pack(pady=10)
root.mainloop()