Skip to content

Repository files navigation

ORGANIZED - Documentation du Projet

📋 Vue d'ensemble

ORGANIZED est un programme en C permettant de gérer un inventaire de matériel électronique dans un laboratoire virtuel. Le projet simule un atelier robotique où l'utilisateur peut stocker, manipuler et trier différents types de composants.


🎯 Objectifs du Projet

  • Créer un système de gestion d'inventaire interactif
  • Maîtriser les listes chaînées comme structure de données
  • Implémenter des algorithmes de tri efficaces
  • Développer une interface shell fonctionnelle
  • Gérer la mémoire dynamique proprement

📚 Table des Matières

  1. Fonctionnalités - Description détaillée des commandes
  2. Architecture - Structure technique du projet
  3. Modèles de Données - Structures et entités
  4. Workflow - Flux de fonctionnement
  5. Contraintes Techniques - Règles et limitations
  6. Tests - Guide complet de test avec binaire de référence
  7. Objectifs Pédagogiques - Compétences visées
  8. Glossaire - Termes techniques

🚀 Démarrage Rapide

Compilation

make

Exécution

./organized

Exemple d'utilisation

Workshop >> add WIRE usb, ACTUATOR button
WIRE n°0 - "usb" added.
ACTUATOR n°1 - "button" added.

Workshop >> disp
ACTUATOR n°1 - "button"
WIRE n°0 - "usb"

Workshop >> sort NAME
Workshop >> disp
ACTUATOR n°1 - "button"
WIRE n°0 - "usb"

⚙️ Informations Techniques

  • Langage : C
  • Compilation : via Makefile (rules: all, re, clean, fclean)
  • Fonctions autorisées : open, read, write, close, malloc, free
  • Code de sortie en erreur : 84 ## (⚠️Tres important ça mère)
  • Bibliothèque fournie : libshell.a + shell.h

🎯 Binaire de Référence

Un binaire de référence (fake_organized) et un fichier de test (example_test) sont fournis dans binary.zip pour tester le comportement attendu.

Extraction

unzip binary.zip
chmod +x fake_organized example_test

Utilisation du binaire de référence

Test interactif

./fake_organized
Workshop >> add WIRE usb
WIRE n°0 - "usb" added.
Workshop >> disp
WIRE n°0 - "usb"

Test avec fichier

cat example_test | ./fake_organized

Comportement observé

✅ Ajout correct

Workshop >> add WIRE a, WIRE b, SENSOR c
WIRE n°0 - "a" added.
WIRE n°1 - "b" added.
SENSOR n°2 - "c" added.

❌ Erreur - Arguments invalides

Workshop >> add usb
Not valid arguments count (<TYPE> <NAME>).

❌ Erreur - Type invalide

Workshop >> add usb noge
Invalid type of material.

✅ Tri par TYPE inversé

Workshop >> sort TYPE -r
Workshop >> disp
WIRE n°6 - "a"
WIRE n°3 - "d"
WIRE n°2 - "c"
WIRE n°1 - "b"
WIRE n°0 - "a"
SENSOR n°5 - "f"
SENSOR n°4 - "e"

Exemple de test complet

Contenu de example_test :

add WIRE a, WIRE b, WIRE c, WIRE d, SENSOR e, SENSOR f, WIRE a
disp
sort TYPE -r
disp
exit

Sortie attendue :

$ cat example_test | ./fake_organized
Workshop >> WIRE n°0 - "a" added.
WIRE n°1 - "b" added.
WIRE n°2 - "c" added.
WIRE n°3 - "d" added.
SENSOR n°4 - "e" added.
SENSOR n°5 - "f" added.
WIRE n°6 - "a" added.
Workshop >> WIRE n°6 - "a"
SENSOR n°5 - "f"
SENSOR n°4 - "e"
WIRE n°3 - "d"
WIRE n°2 - "c"
WIRE n°1 - "b"
WIRE n°0 - "a"
Workshop >> Workshop >> WIRE n°6 - "a"
WIRE n°3 - "d"
WIRE n°2 - "c"
WIRE n°1 - "b"
WIRE n°0 - "a"
SENSOR n°5 - "f"
SENSOR n°4 - "e"
Workshop >>

Comparaison avec votre implémentation

Pour vérifier que votre programme fonctionne correctement :

# Tester avec le binaire de référence
cat example_test | ./fake_organized > expected_output.txt

# Tester avec votre implémentation
cat example_test | ./organized > your_output.txt

# Comparer les sorties
diff expected_output.txt your_output.txt

Si aucune différence n'est affichée, votre implémentation est correcte ! ✅


📦 Livrables

  • Tous les fichiers sources (.c, .h)
  • Le Makefile
  • La bibliothèque libshell.a
  • Le header shell.h
  • Binaire de référence (binary.zip contenant fake_organized et example_test)
  • Fichiers bonus dans un dossier bonus/ (si applicable)

À exclure : binaires, fichiers temporaires, fichiers objets


🎓 Compétences Développées

  • Manipulation de listes chaînées (insertion, suppression, parcours)
  • Algorithmes de tri (tri à plusieurs critères)
  • Gestion de la mémoire dynamique
  • Développement d'une interface utilisateur shell
  • Gestion des erreurs et validation des entrées
  • Optimisation algorithmique

📞 Support

Pour toute question sur le projet, référez-vous aux documents suivants :


✅ Validation Finale

Pour vérifier que votre implémentation est correcte :

# Compiler votre projet
make

# Comparer avec le binaire de référence
cat example_test | ./organized > your_output.txt
cat example_test | ./fake_organized > expected_output.txt
diff your_output.txt expected_output.txt

# Si aucune différence : ✅ Votre implémentation est correcte !

Consultez TESTING.md pour plus de tests détaillés.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors