Skip to content

Stan006/ERGASIA

Repository files navigation

🎬 VideoClub Management System

Διαθεματική Εργασία — Πλήρες σύστημα διαχείρισης Video Club με υποστήριξη πολλαπλών καταστημάτων, ταινιών, πελατών και ενοικιάσεων.

by Γκίκας Αναστάσης & Δαβίδ Παύλος


✨ Χαρακτηριστικά

Κατηγορία Λειτουργίες
🏪 Καταστήματα Δημιουργία, Αναζήτηση, Επεξεργασία, Διαγραφή, Λίστα
🎥 Ταινίες Προσθήκη, Επεξεργασία, Διαγραφή, Λίστα
👤 Πελάτες Προσθήκη, Επεξεργασία, Διαγραφή, Λίστα
📋 Ενοικιάσεις Ενοικίαση, Επιστροφή, Υπολογισμός Late Fee

🗂️ Αρχιτεκτονική Κλάσεων

┌─────────────────────────────────────────────────────────────────┐
│                        VIDEO CLUB SYSTEM                        │
├──────────────────────────┬──────────────────────────────────────┤
│   VideoClubStoreSelector │  VideoClub                           │
│  ──────────────────────  │  ─────────────────────────────────── │
│  + AddStore()            │  + AddMovie()      + EditMovie()     │
│  + GetStore()            │  + AddCustomer()   + EditCustomer()  │
│  + ListStores()          │  + DeleteMovie()   + DeleteCustomer()│
│  + EditStore()           │  + RentMovie()     + ReturnMovie()   │
│  + DeleteStore()         │  + ListMovies()    + ListCustomers() │
└──────────────────────────┴──────────────────────────────────────┘

┌─────────────────┐   ┌─────────────────┐   ┌──────────────────┐
│  VideoClubStore │   │     Movie        │   │    Customer      │
│ ─────────────── │   │ ─────────────── │   │ ──────────────── │
│ + StoreID       │   │ + MovieID       │   │ + CustomerID     │
│ + Name          │   │ + Title         │   │ + FullName       │
│ + Area          │   │ + Genre         │   │ + Phone          │
│ + Phone         │   │ + Year          │   └──────────────────┘
└─────────────────┘   │ + IsAvailable   │
                      └─────────────────┘

┌──────────────────────────────────────────┐
│                  Rental                  │
│ ──────────────────────────────────────── │
│ + RentalID    + Movie     + RentalDate   │
│ + MovieID     + Customer  + DueDate      │
│ + CustomerID  + StoreID   + ReturnDate   │
│ + RentalPrice + LateFee                  │
│ + Create()    + Close()                  │
└──────────────────────────────────────────┘

🗄️ Βάση Δεδομένων

Stores      → StoreID, Name, Area, Phone
Movies      → MovieID, Title, Genre, Year, IsAvailable, StoreID
Customers   → CustomerID, FullName, Phone, StoreID
Rentals     → RentalID, MovieID, CustomerID, StoreID,
              RentalDate, DueDate, ReturnDate, RentalPrice, LateFee

Χρησιμοποιείται MySQL με connection string τοπικά (localhost).


💸 Λογική Late Fee

Κάθε ενοικίαση έχει προθεσμία 2 ημερών. Αν ο πελάτης αργήσει:

LateFee = (Ημέρες - 2) × 5€

Παράδειγμα: Αν επιστραφεί μετά από 5 μέρες → (5 - 2) × 5 = 15€


⚙️ Εγκατάσταση & Εκτέλεση

Προαπαιτούμενα

Βήματα

# 1. Κλωνοποίηση repository
git clone https://github.com/username/videoclub-management.git
cd videoclub-management

# 2. Εγκατάσταση NuGet package
dotnet add package MySql.Data

# 3. Δημιουργία βάσης δεδομένων (MySQL Workbench ή CLI)
mysql -u root -p < schema.sql

# 4. Εκτέλεση εφαρμογής
dotnet run

⚠️ Ρύθμιση Connection String

Άνοιξε τον κώδικα και άλλαξε τα στοιχεία σύνδεσης στην κλάση DB:

private static string connectionString =
    "server=localhost;user=root;password=YOUR_PASSWORD;database=videoclubdb;";

🖥️ Χρήση

Μόλις ξεκινήσει η εφαρμογή, εμφανίζεται το Κεντρικό Μενού Καταστημάτων:

--- VIDEO CLUB CENTRAL ---
1. Create Store
2. Load Store
3. Delete Store
4. Edit Store
5. List Stores
6. Exit

Αφού επιλέξεις κατάστημα (option 2), ανοίγει το Μενού Καταστήματος:

--- STORE: [Όνομα] ---
1. Add Movie         7. Delete Customer
2. Add Customer      8. Edit Customer
3. Rent Movie        9. Delete Movie
4. Return Movie     10. Edit Movie
5. List Movies      11. Back
6. List Customers

🛡️ Κανόνες Ακεραιότητας

  • ❌ Δεν διαγράφεται ταινία αν είναι ενεργά ενοικιασμένη
  • ❌ Δεν διαγράφεται πελάτης αν έχει ανοιχτά rentals
  • ✅ Η διαγραφή καταστήματος σβήνει αυτόματα (transaction) όλα τα σχετικά δεδομένα

🧰 Tech Stack

C# MySQL .NET MySQL Workbench


👥 Ομάδα

Όνομα Ρόλος
Γκίκας Αναστάσης Development & Architecture
Δαβίδ Παύλος Development & Database Design

Διαθεματική Εργασία · 2026

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages