https://github.com/itsabdessalam/cynov
Cinema Project C# - Console
https://github.com/itsabdessalam/cynov
app c-sharp chsarp console dotnet
Last synced: about 2 months ago
JSON representation
Cinema Project C# - Console
- Host: GitHub
- URL: https://github.com/itsabdessalam/cynov
- Owner: itsabdessalam
- Created: 2018-11-01T17:03:10.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2018-11-09T22:06:25.000Z (over 6 years ago)
- Last Synced: 2025-02-24T12:49:30.088Z (2 months ago)
- Topics: app, c-sharp, chsarp, console, dotnet
- Language: C#
- Homepage:
- Size: 468 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Projet Cynov
> Projet permettant de mettre en pratique ses connainssances en C#
## Objectif
Utiliser les notions vues en cours, à savoir : les fonctions, les collections, streams, programmation objet...
## Description du projet
Réaliser une application pour le cinéma Cynov
## Compétences évaluées
- Livrer un code qui compile
- Bonne utilisation des Design Patterns
- Savoir modéliser une structure objet via une demande client
- Utilisation de l’orienté objet
- Savoir stocker des données dans une base de données
- Bonne utilisation de LINQ
- Gérer les comportements imprévus via des exceptions
- Gérer des chemins de code différents selon le niveau de droits du visiteur
- Savoir verrouiller son code pour réduire les effets de bord futurs
- Qualité de code et Conventions de nommage## Organisation du projet
Le projet se présente comme suit :
```
├─ Cynov
| ├─ Auditorium.cs
| ├─ FileManager.cs
| ├─ CynovContext.cs
| ├─ DataException.cs
| ├─ Film.cs
| ├─ FilmType.cs
| ├─ Main.cs
| ├─ Order.cs
| ├─ Program.cs
| ├─ Showtime.cs
| ├─ User.cs
| ├─ Utils.cs
| └─ Validator.cs
└─ Cynov.sln
```## Classes et méthodes
### Class [`Auditorium`](Cynov/Auditorium.cs)
**Propriétés**
- Id
int
> Identifiant de la salle nécessaire aussi à la BDD
- Namestring
> Nom de la salle
- Capacitystring
> Capacité totale de la salle
- CurrentCapacitystring
> Capacité actuelle de la salle### Class [`FileManager`](Cynov/FileManager.cs)
**Propriétés**
- \_fileManager
FileManager
> Type FileManager
- \_fileNamestring
> Nom du fichier sur lequel sera écrit le contenu
- \_streamWriterStreamWriter
> StreamWriter pour écrire du contenu**Méthodes**
- WriteToFile(string fileName, string content)
-> void
### Class [`Film`](Cynov/Film.cs)
**Propriétés**
- Id
int
> Identifiant de Film nécessaire aussi à la BDD
- Namestring
> Nom du film
- Directorstring
> Directeur du film
- Producerstring
> Producteur du film
- Genderstring
> Genre du film
- ReleaseDateDateTime
> Date de sortie
- TypeFilmType
> Type du film (enum de 3 valeurs)
- ShowtimesList\()
> Liste des séances associées### Class [`FilmType`](Cynov/FilmType.cs)
### Class [`Main`](Cynov/Main.cs)
**Méthodes**
- Start()
-> void
> Lance le programme
- Menu()
-> int
> Affiche le menu récupére le choix de l'utlisateur
- SignUp()
-> void
> Inscrit un utilisateur
- SignIn()
-> void
> Connecte l'utilisateur
- Search()
-> void
> Effectue une recherche
- Exit()
-> void
> Quitte la console
- GetCreditentials(User u)
-> void
> Récupère les identifiants de l'utilisateur
- AddFilms()
-> void
> Ajoute des films
- AddShowTimes()
-> void
> Ajoute des séances
- RegisterToShowTime()
-> void
> Enregistre une séance pour un utilisateur
- ViewUserHistory()
-> void
> Voir les commandes de l'utilisateur
- ListFilms()
-> void
> Liste les films
- ListAuditoriums()
-> void
> Liste les salles
- ListShowTimes(IEnumerable showtimes = null)
-> void
> Liste les séances
- CreateAuditoriums()
-> void
> Crée des salles
- AddOrder(Showtime showTime)
-> Order
> Affecte une commande
- PrintTicket(User u, Order o)
-> void
> Imprime le bon de commande
- IsAlreadyRegistered(int inputChoice, User user)
-> bool
> Vérifie si l'utilisateur a déjà pris une séance
### Class [`Order`](Cynov/Order.cs)
**Propriétés**
- Id
int
> Identifiant de commande nécessaire aussi à la BDD
- PrintDateDateTime
> Date d'impression
- Companystring
> Le ciméma en question d'où provient la commande
- Pricedouble
> Prix de la commande
- OrderIdstring
> GUID de la commande
- UserUser
> L'utilisateur associé
- ShowtimeShowtime
> La séance associée### Class [`Program`](Cynov/Program.cs)
### Class [`Showtime`](Cynov/Showtime.cs)
**Propriétés**
- Id
int
> Identifiant de la séance nécessaire aussi à la BDD
- AuditoriumAuditorium
> La salle associée
- StartDateTime
> Date de début
- FinishDateTime
> Date de fin
- ThreeDimensionalbool
> En 3D
- OriginalVersionbool
> En VO
- UsersList\()
> Liste d'utilisateurs associés
- FilmFilm
> Film associé### Class [`User`](Cynov/User.cs)
**Propriétés**
- Id
int
> Identifiant de l'utilisateur nécessaire aussi à la BDD
- Usernamestring
> Nom d'utilisateurstring
> Email de l'utilisateur
- Passwordstring
> Mot de passe de l'utilisateur
- IsAdminbool
> Booléen si administrateur
- IsActivebool
> Booléen si le compte est actif
- LastUpdateTimeDateTime
> Dernière date de mise à jour
- ShowtimesList\()
> Liste des séances associées
- OrdersList\()
> Liste des commandes associées**Méthodes**
- toString()
-> string
### Class [`Utils`](Cynov/Utils.cs)
> Contient des méthodes pour le chiffrement du mot de passe et les conversions de date
### Class [`Validator`](Cynov/Validator.cs)
## Parcours utilisateur / Scénario d'usage
On part du principe qu'on autorise que les insriptions d'utilisateurs ordinaires. Pour rajouter un administrateur on doit set le champ `IsAdmin` (par défaut false) à true lors de la création. Un administrateur est déjà crée `[email protected]/1234`. Ce dernier peut rajouter des films et des séances. Un utilisateur ordinaire est aussi crée `[email protected]/1234`. Celui ci pourra s'incrire à une séance, effectuer une recherche et voir ses séances achetées. Lors de son achat un fichier est créé sur son bureau et ce sur le format suivant `20181109-070311-cc93e817fa-abdessalam.txt` celui-ci servira de ticket.
## Execution du programme
Ce projet a été réalisé sur Visual Studio sous Windows 10
### Windows
Ouvrir le projet avec Visual Studio
### Linux
Si vous êtes sous Linux vérifiez que vous avez ces paquets installés
- dotnet-host
- dotnet-runtime-2.1
- dotnet-sdk-2.1Ensuite deplacez vous dans le dossier contenant le projet et lancez la commande :
dotnet run
## Auteur
[Abdessalam BENHARIRA](https://github.com/Abdessalam98)