[C] Deux structures dans un même fichier ?

Fermé
tony0093 Messages postés 10 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 21 juin 2008 - 4 juin 2006 à 14:10
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 - 6 juin 2006 à 23:32
Bonjour à tous!

Je réalise en ce moment un programme en C qui est censé gérer les absences et les retards des employés d'une entreprise...

La possibilité s'offre a l'utilisateur de:
- ajouter un retard
- modifier un retard
- supprimre un retard
- affichage des retards
-----------
- ajouter une absence
- modifier une absence
- supprimer une absence
- affichage des absences

2 structures se distinguent alors: "Sretard" et "Sabsence".
Lorsqu'on ajoute un retard ou une absence, l'utilisateur saisie le nom de l'employé, et un fichier est créé ou mis à jour...

J'ai donc 2 structures dans un même fichier employé, le pb est que lorsque j'ajoute une absence par exemple, elle est écrite au meme endroit que les retards et est affichée avec ts les retards !!
(quand je souhaite afficher tous les retards d'un employé)

Je me demade alors si il existe pas un moyen d'enregistrer differemment dans le fichier ou de traiter differemment le pb sachant que je n'ai plus bcp de temps!! :'(

Merci bcp à ts ceux qui tenteront de m'aider !!
A voir également:

7 réponses

crabs Messages postés 908 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 3 août 2008 507
4 juin 2006 à 21:47
Salut,

La solution la plus rapide, si tu n'as pas de limite en nombre de fichiers, c'est
de créer un fichier retard et un fichier absence.

La seconde un peu moins évidente :
- ton fichier débute avec une entête qui precise le nombre de retard et
le nombre d'absences.
- tu ajoutes ensuites tes retards, puis les absences
Le souci c'est qu'il faut reécire à chaque ajout tout le fichier.

Tu peux faire moins simple, mais dans ce cas il te faudrais plus de temps, mets
en oeuvre un SGBD ou un SGBD/R qui sont là pour que le programme n'est
pas à s'occuper du stockage physique des données.

A+, crabs
0
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 659
5 juin 2006 à 09:43
Et pourquoi pas prendre une base de données ?

C'est très bien adapté à ce genre de choses.

Par exemple SQLite qui est simple à utiliser et qui s'intègre directement dans ton programme.
0
crabs Messages postés 908 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 3 août 2008 507
6 juin 2006 à 19:19
Salut,
SQLite n'est-il pas un SGBD/R ? Même s'il ne propose pas d'accès réseau propre,
il peut être partagé sur une ressource disque réseau disposant d'un système de
verrou sur les fichiers.
A+, crabs
0
tony0093 Messages postés 10 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 21 juin 2008 2
6 juin 2006 à 15:26
Merci pour vos réponses!

J'ai oublié de préciser en fait que le language de programmation m'était imposé,c'est pourquoi j'utilise ce language qui, je trouve, est un peu trop capricieux et bcp moins pratique que le php ou le java par exemple...

Pr revenir au pb, je pensais qu'il y avait peut être un moyen de différencier les lignes dans le fichier, par exemple certains projet contiennent un fichier client avec ts les clients à l'intérieur ds lequel on peut rechercher et afficher l'enregistrement concernant un seul client...
Je suis pas une bête dans ce language de prog mais je pense qu'il doit y avoir un moyen plus simple de différencier les retards des absences et ce ds le meme fichier, en introduisant pt etre en debut de ligne un numero 1 pour les retards, et un 2 pr les absences ( je dis ça comme ça je sais pas)...

si vraiment je trouve pas de solution je vais faire comme me conseille crabs, à savoir 2 fichiers pr chaque employé...

Merci pr vos réponses!
0
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 659
6 juin 2006 à 17:51
2 fichier pour chaque employé ?
Mon dieu, non !

Mieux vaut utiliser une base de données, surtout s'il faut faire des recherches dedans.

SQLite est utilisable en C.


Je te conseille de jeter un coup d'oeil du côté SQL.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
crabs Messages postés 908 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 3 août 2008 507
6 juin 2006 à 20:20
Salut,

2 fichiers c'est pour faire rapide, ce n'est pas très élégant. Je suis ok avec
les remarques de sebsauvage sur ce propos.

L'idée de marquer les structure avec un "nombre magique" n'est pas une
mauvaise idée, mais cela risque de complexifier les fonctions d'entrée/sortie
sur tes fichiers de données.

Regardes du coté de SQLite, c'est gratuit et l'API en C n'est pas insurmontable.
Ton programme restera en C, il ne fera qu'utiliser une bibliothèque qui te
permettra de faire du SQL.

A+, crabs
0
tony0093 Messages postés 10 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 21 juin 2008 2
6 juin 2006 à 23:20
Et bien merci à tous!!
je pense que je vais utiliser SQLite même si je ne trouve pas grand chose sur la manière de l'utiliser avec le language C

Si vous avez des supers liens à me donner n'hésitez pas !! lol ;-)
0
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 659
6 juin 2006 à 23:32
Des exemples en C:
http://www.linuxjournal.com/articles/lj/0110/6650/6650l2.html
http://docs.cs.byu.edu/docs/sqlite/4.php
0