Exercice: Annuaire téléphonique, enresgitrements et fichiers
Forum INFOMATH :: Enseignement de l'informatique :: Informatique - Collège & Lycée :: Exercices Pascal :: Fichiers et Enregistrements
Page 1 sur 1
Exercice: Annuaire téléphonique, enresgitrements et fichiers
Exercice n°4 Annuaire téléphonique électronique
Un annuaire téléphonique regroupe la liste des abonnés au réseau de téléphonie fixe d’un pays ou d’une région. Un abonné est défini par un ensemble d’informations:
Un annuaire téléphonique regroupe la liste des abonnés au réseau de téléphonie fixe d’un pays ou d’une région. Un abonné est défini par un ensemble d’informations:
- Nom et Prénom (non nul)
- Numéro de téléphone (type numérique commençant ne commençant ni par '0' ni par '00')
- Adresse (non nul)
- Code Postal (type numérique compris entre 1000 et 9999)
- Gouvernerat (non nul)
- Date inscription (utiliser un type enregistrement T_DATE qui définit l'année, le mois et le jour d'inscription)
- Identifier puis représenter (Algorithmique et Pascal) les structures de données indiquées dans l’exercice.
- Écrire un programme qui utiliser le fichier Annuaire nommé "C:\ANNUAIRE.DAT" s’il existe sinon il le crée et affiche un menu permettant de :
- Ajouter des abonnés à l’annuaire sachant que deux abonnés ne peuvent pas avoir le même numéro de Tél. L'ajout des abonnés se répètera selon la réponse de l'utilisateur à la question "Ajouter d'autres abonnés O/N?".
- Modifier l'adresse complète d'un abonné (accès par Numéro de Tél)
- Supprimer un abonné de l'annuaire (accès par Numéro de Tél)
- Afficher la liste de tous les abonnés
- Afficher uniquement les abonnés dont le numéro de téléphone commence par ‘71’.
- Copier dans un nouveau fichier tous les abonnés qui se sont inscrits en 2009. Le nouveau fichier sera nommé C:\Abonnes_2009.dat
- Créer des fichiers nommés C:\Abonnes_{ANNEE}.dat qui contient chacun la liste des abonnés de l’année {ANNEE} avec {ANNEE} entre 2000 et 2009.
Dernière édition par nabiL le Lun 12 Oct - 0:02, édité 2 fois
Napoléon- Admin
-
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7872
Date d'inscription : 19/03/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Exercice: Annuaire téléphonique, enresgitrements et fichiers
Une solution incomplète :
- Code:
program annuaire_tel;
uses wincrt;
const
FICH_A = 'C:\Annuaire.dat';
type
T_DATE = record
Annee: 1980..4000;
Mois : 1..12;
Jours: 1..31;
end;
T_ABONNE = record
Nom : String[20]; {Nom}
Pre : String[20]; {Prénom}
Tel : Longint; {N°Tél}
Adr : String;
CodP : Word; {Code Postal}
Gouv : String[30]; {Gouvernerat}
DatIn: T_DATE;
end;
F_ANNUAIRE = file of T_ABONNE;
(**********************************************)
VAR
FA: F_ANNUAIRE;
OPTION: 1..9;
(**********************************************)
procedure CREER_OUVRIR(var fa: F_ANNUAIRE);
begin
Assign(fa,FICH_A);
{$I-}
Reset(fa);
{$I+}
if (IOResult <> 0) then
Rewrite(fa)
else
Seek(fa, FilePos(fa));
end;
(**********************************************)
function EXISTE_TEL_FICHIER(numTel: Longint; nomfichier: String):boolean;
var
fa: F_ANNUAIRE;
abonne: T_ABONNE;
existe: Boolean;
begin
Assign(fa,nomfichier);
Reset(fa);
existe:= false;
while (not EOF(fa)) and (not existe) do
begin
read(fa,abonne);
existe := (abonne.Tel = numTel);
end;
Close(fa);
EXISTE_TEL_FICHIER := existe;
end;
(**********************************************)
procedure SAISIE_ABONNE(var abonne: T_ABONNE);
begin
with abonne do
begin
repeat
write('Nom: '); readln(nom);
write('Prénom: '); readln(pre);
until (length(Nom)>0) and (length(Pre)>0);
{Vérifier l'unicité du N°Tel dans l'annuaire}
repeat
write('N°Tel: '); readln(Tel);
until (Tel>0) and (Not EXISTE_TEL_FICHIER(Tel,FICH_A));
write('Adresse: '); readln(Adr);
write('Code Postal: '); readln(CodP);
write('Gouvernerat: '); readln(Gouv);
writeln('Date inscription ');
write(' > Année inscription: '); readln(DatIn.Annee);
write(' > Mois inscription: ') ; readln(DatIn.Mois);
write(' > Jour inscription: ') ; readln(DatIn.Jours);
end;
end;
(**********************************************)
procedure AJOUTER_ABONNE(var fa: F_ANNUAIRE);
var
reponse: char;
abonne : T_ABONNE;
begin
Writeln('**** AJOUTER DES ABONNES ***');
repeat
SAISIE_ABONNE(abonne);
write(fa, abonne);
write('Continuer(O/N)? ');
readln(reponse);
writeln('_______________');
until (UPCASE(reponse) in ['n','N']);
end;
(**********************************************)
procedure AFFICHER_ABONNE(abonne: T_ABONNE);
begin
writeln('---------------------------------');
writeln('...... DETAILS D''UN ABONNE .....');
writeln('---------------------------------');
with abonne do
begin
Writeln('> Nom: ',Nom);
Writeln('> Prénom: ',Pre);
Writeln('> Num Tel: ',Tel);
Writeln('> Adresse: ',Adr);
Writeln('> Code Postal: ',CodP);
Writeln('> Gouvernerat: ',Gouv);
Writeln('> Date Inscription: ',DatIn.Jours,'/',
DatIn.Mois,'/',DatIn.Annee);
end;
end;
(**********************************************)
procedure AFFICHER_ANNUAIRE(var fa: F_ANNUAIRE);
var
abonne: T_ABONNE;
begin
Seek(fa, 0);
while (not EOF(fa)) do
begin
read(fa, abonne);
AFFICHER_ABONNE(abonne);
end;
end;
(**********************************************)
(* PROGRAMME PRINCIPAL *)
(**********************************************)
BEGIN
CREER_OUVRIR(FA);
Repeat
writeln('========================================* ');
Writeln(' MENU PRINCIPAL - ANNUAIRE ELECTRONIQUE | ');
writeln('========================================* ');
Writeln(' 1. Ajouter des abonnés');
Writeln(' 2. Afficher tous les abonnés');
Writeln(' 9. Quitter');
Writeln;
Write(' > Option: ');
Readln(OPTION);
Case (OPTION) of
1: AJOUTER_ABONNE(FA);
2: AFFICHER_ANNUAIRE(FA);
9: Begin
Writeln('**** Fermeture de l''annuaire.');
CLOSE(FA);
End;
end;
until (OPTION = 9);
END.
Napoléon- Admin
-
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7872
Date d'inscription : 19/03/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Sujets similaires
» Exercice de révision sur les fichiers typés
» Exercice: Transfert des nombres entre Fichiers et Tableaux
» Page de cours sur les enresgitrements
» Tunisachat.com, annuaire des commerces de proximité
» Exercice + Complexes
» Exercice: Transfert des nombres entre Fichiers et Tableaux
» Page de cours sur les enresgitrements
» Tunisachat.com, annuaire des commerces de proximité
» Exercice + Complexes
Forum INFOMATH :: Enseignement de l'informatique :: Informatique - Collège & Lycée :: Exercices Pascal :: Fichiers et Enregistrements
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum