Skip to content

Latest commit

 

History

7 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

INL-MNINGSUPPGIFT---INDIVIDUELL

Kassaregister (Cash Register System)

Ett Java baserat kassaregistersystem med grafiskt användargränssnitt (GUI) byggt med Swing.

Beskrivning

Detta är ett komplett kassaregistersystem som simulerar en Point of Sale (POS) terminal. Applikationen är perfekt för små butiker, kaféer eller som ett utbildningsprojekt för att lära sig Java GUI-programmering och objektorienterad design.

📌 Funktioner

  • ✅ Produktkatalog: Fördefinierade produkter från CSV med namn, priser och moms
  • ✅ Kvittohantering: Automatisk generering av detaljerade kvitton med momsberäkning
  • ✅ Rabattsystem: 10% studentrabatt med checkbox
  • ✅ Betalningsmetoder: Stöd för Kort, Swish och kontant betalning
  • ✅ Interaktiv GUI: Produktknappar för snabb produktval + manuell inmatning
  • ✅ Färgteman: Dynamisk färgväxling med "Theme"-knapp och slumpmässiga färger
  • ✅ Modulär arkitektur: Välstrukturerad kod
  • ✅ VS Code-integration: Komplett utvecklingsmiljö med build/debug-konfiguration

Projektstruktur

cashregister/
├── Main.java                    # Huvudklass som startar applikationen
├── .vscode/                     # VS Code konfigurationsfiler
│   ├── settings.json           # Java-projektinställningar
│   └── launch.json             # Debug-konfiguration
├── .gitignore                   # Git ignoreringsfil
├── bin/                         # Kompilerade .class-filer (automatiskt genererat)
│   └── cashregister/           # Paketstruktur för kompilerade klasser
├── model/                       # Datamodeller (Business Objects)
│   ├── Product.java            # Produktklass med pris och moms
│   ├── Receipt.java            # Kvittoklass med rader och totaler
│   └── ReceiptRow.java         # Kvittorad med produkt och antal
├── service/                     # Tjänsteklasser (Business Services)
│   └── ProductCatalog.java     # Produktkatalog med CSV-läsning
├── ui/                          # Användargränssnitt (Presentation Layer)
│   ├── BusinessLogic.java      # Affärslogik och datahantering
│   ├── CashRegister.java       # Huvudfönster och GUI-koordination
│   ├── ColorThemeManager.java  # Färgteman och visuella effekter
│   ├── ControlsPanel.java      # Input-kontroller och knappar
│   ├── PaymentMethodPanel.java # Betalningsval (Kort/Swish/Kontant)
│   ├── ProductButtonsPanel.java# Produktknappar för snabbval
│   ├── ReceiptFormatter.java   # Kvittolayout och formatering
│   └── ReceiptPanel.java       # Kvittodisplay och textformatering
├── resources/
│   └── products.csv            # Produktdatabas (CSV-format)
└── README.md                   # Denna fil

🛠️ Installation och Körning

Förutsättningar

  • Java JDK 8 eller senare
  • Terminal/Kommandotolk

Metod: VS Code (om du använder VS Code)

  • Öppna projektet i VS Code
  • Tryck Ctrl+Shift+P → "Java: Run"
  • Eller använd Run/Debug-knapparna

Användning

  1. Välj produkter: Klicka på produktknapparna eller skriv produktnamn
  2. Ange antal: Specificera antal av vald produkt
  3. Lägg till: Klicka "Add" för att lägga till produkten på kvittot
  4. Rabatt: Aktivera 10% studentrabatt om önskat
  5. Betalning: Välj betalningsmetod (Kort/Swish/Ingen)
  6. Betala: Klicka "Pay" för att slutföra köpet
  7. Tema: Klicka "Theme" för att växla färgtema

Teknik

  • Språk: Java (JDK 8+)
  • GUI Framework: Swing
  • Build System: Manual compilation (javac)
  • Filformat: CSV för produktdata

Senaste Förbättringar

Version 2.0 - Oktober 2025

  • Refactorisering: Delat upp stora klasser för bättre underhåll
  • Tema-synkronisering: Alla UI-komponenter följer samma färgtema
  • VS Code-integration: Komplett utvecklingsmiljö med debug-stöd
  • Build-automation: Färdiga scripts för kompilering och körning
  • Kodrensning: Förenklad Container-hantering och färglogik

Utveckling & Lärande

Detta projekt demonstrerar:

  • Objektorienterad programmering - Klasser, inkapsling, separation of concerns
  • GUI-utveckling med Swing - JFrame, JPanel, event-hantering, färgteman
  • Filhantering - CSV-läsning och databearbetning med felhantering
  • Eventdriven programmering - Consumer interfaces, callbacks
  • Utvecklingsverktyg - VS Code Java Extension, build scripts, debugging

Utvecklare

Sally Altaie

📝 Licens

Detta projekt är utvecklat för utbildningssyfte inom IOT25 kursen.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages