Java Swing desktop app for a vending machine with admin and customer flows, backed by SQLite. Inventory updates after each order and order history is persisted.
- Admin login (username/password)
- Customer quick start (name only)
- Manage inventory: add, edit, delete, activate/deactivate
- Browse items, add to cart, checkout
- Inventory decrements on purchase
- Order history view (admin)
- Cart editing: remove items, edit quantities, double-click to edit, live total
- Java 8+
- Swing UI
- SQLite via
sqlite-jdbc - Maven build
- Build
- Windows PowerShell:
mvn -q -e -DskipTests package
- Windows PowerShell:
- Run
java -jar target/vendingmachine-1.0.0.jar
First run creates vendingmachine.db and seeds:
- Admin user:
admin/admin - Sample items: Chips, Soda, Candy
src/main/java/com/vendingmachine/
App.java # Entry point
db/Database.java # SQLite connection + schema init
model/Item.java # Domain models
model/Order.java
model/OrderItem.java
dao/ItemDao.java # Data access
dao/OrderDao.java
ui/LoginFrame.java # Swing screens
ui/AdminFrame.java
ui/CustomerFrame.java
ui/AdminService.java
src/main/resources/schema.sql # DB schema & seed
pom.xml
- Passwords are stored in plain text for demo; replace with hashing for production.
- If you prefer MySQL instead of SQLite, see below.
- Add dependency in
pom.xml:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
- Update
Database.javaJDBC URL and credentials. - Run equivalent schema in MySQL (convert
INTEGER PRIMARY KEY AUTOINCREMENTtoINT AUTO_INCREMENT,DATETIME DEFAULT CURRENT_TIMESTAMP, etc.).
- Java version is set to 1.8 for broad compatibility. Update in
pom.xmlif you have a newer JDK. - Logs use slf4j-simple.
MIT

