Διαθεματική Εργασία — Πλήρες σύστημα διαχείρισης 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).
Κάθε ενοικίαση έχει προθεσμία 2 ημερών. Αν ο πελάτης αργήσει:
LateFee = (Ημέρες - 2) × 5€
Παράδειγμα: Αν επιστραφεί μετά από 5 μέρες → (5 - 2) × 5 = 15€
- .NET 6+
- MySQL Server
MySql.DataNuGet package
# 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Άνοιξε τον κώδικα και άλλαξε τα στοιχεία σύνδεσης στην κλάση 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) όλα τα σχετικά δεδομένα
| Όνομα | Ρόλος |
|---|---|
| Γκίκας Αναστάσης | Development & Architecture |
| Δαβίδ Παύλος | Development & Database Design |
Διαθεματική Εργασία · 2026