Développeurs : Hage Rémi, Deparis Hippolyte, Merlaud Thomas, Chiadmi Yassine
N27 est un projet de deuxième année de cycle préparatoire CIR à l'ISEN Lille.
L'objet de ce projet est de modéliser la gestion de comptes bancaires en ligne. Le modèle de gestion adopté repose sur une agence considérée comme centrale et plusieurs agences décentralisées. A intervalle régulier, l’agence centrale interroge et rassemble l’ensemble des modifications sur les transactions, situations financières, création de comptes... effectuées dans les agences décentralisées, et met à jour sa base de données.
Les transactions, paiements, dépôts, transferts... sont réalisés dans les agences décentralisées. Elles sont suivies par des enregistrements locaux en mémoire et/ou sur disque.
Ce projet est développé entièrement en C++.
structures du backend | mise en place des sockets | mise en place du système de données | interface graphique |
---|---|---|---|
✅ | ✅ | ✅ | ✅ |
- Interface avec QT
- Threads.
- Socket (client et serveur asynchrone).
- "Bases de données" en json.
- Il est possible de déposer et d'envoyer de l'argent pour deux comptes de la même agence.
- On peut créer et supprimer des comptes et des utilisateurs.
- Les comptes ont un taux d'intérêt.
- Toutes les 10 secondes (court pour pouvoir déboguer) chaque agence envoie sa base de données à l'agence centrale.
- Avec la requête "get {acountId}", l'agence centrale va chercher un compte donné dans ses bases de données et renvoyer le json correspondant.
- La commande "update {agencyId} {timestamp}" permet de mettre à jour la base de données d'une agence, l'agence centrale va renvoyer sa base donnée si elle a été modifié plus récemment que celle de locale de l'agence en question en comparant les deux timestamp d'écriture.
Pour faire fonctionner le projet, ouvrez N27UI dans QT creator, vérifiez bien que le chemin de build correspond au dossier N27UI/build.
- Lancez le serveur asychrone (l'agence centrale)
- Lancez l'interface qui fait office de client et d'agence décentralisée
- Ce projet a été développé et compilé sur Fedora37