program TP02 ;
uses crt;
type
student= Record
nb : integer ;
nom : string[20];
pnom :string[20];
date:string[10];
ville:string[20];
moy:0..20;
end ;
var
f: file of student ;
stud : student;
c: integer;
{ creér new file procedure 1}
Procedure creer;
begin
assign(f,'students.dat');
rewrite(f);
end; { ajouter new student procedure 2}
Procedure rempler(var stud : student);
var i,n : integer;
begin
assign(f,'students.dat');
rewrite(f);
write('svp!.entrez le nombres des etudiants vou voulez ajoutee:');
readln(n);
for i:= 1 to n Do
begin
write('entrez le numero de etudiant ',i,':');readln(stud.nb);
write('entrez le nom de etudiant ',i,':');readln(stud.nom);
write('entrez le prenom de etudiant ',i,':');readln(stud.pnom);
write('entrez la date de naissance de etudiant ',i,':');readln(stud.date);
write('entrez le lieu de naiss de etudiant ',i,':');readln(stud.ville);
write('entrez la note de etudiant ',i,':');readln(stud.moy);
write(f,stud);
end;
close(f);
end;
{procedure 3 chercer for student }
Procedure recherche(var stud : student);
var
s,a:integer;
b:string;
t:boolean;
begin
write('vous voulez recherchez par numero(1) ou par nom(2)? 1 ou 2 :');
readln(s);
reset(f);
t:= true;
if s=1 then
begin
write('entrez le numero :');readln(a);
while not eof(f) and t=true DO
begin
read(f,stud);
if stud.nb =a then t:= false ;
end;
if t=false then
begin
writeln ('le numero de etudiqnt est;',stud.nb);
writeln ('le numero de etudiqnt est;',stud.nom);
writeln ('le numero de etudiqnt est;',stud.pnom);
writeln ('le numero de etudiqnt est;',stud.date);
writeln ('le numero de etudiqnt est;',stud.ville);
writeln ('le numero de etudiqnt est;',stud.moy);
end
else writeln('le numero il n''existe pqs !!');
end
else
begin
write('entrez le num :');readln(b);
while not eof(f) and t=true DO
begin
read(f,stud);
if stud.nom =b then t:= false ;
end;
if t=false then
begin
writeln ('le numero de etudiqnt est;',stud.nb);
writeln ('le numero de etudiqnt est;',stud.nom);
writeln ('le numero de etudiqnt est;',stud.pnom);
writeln ('le numero de etudiqnt est;',stud.date);
writeln ('le numero de etudiqnt est;',stud.ville);
writeln ('le numero de etudiqnt est;',stud.moy);
end
else writeln('le numero il n''existe pas !!');
end;
close(f);
end;
Procedure suprimer(var stud : student); { supprimer student procedure 4}
var
s,a,r:integer;
b:string;
t:boolean;
begin
write('vous voulez suprimez par numero(1) ou par nom(2)? 1 ou 2 :');
readln(s);
rewrite(f);
t:= true;
r:=0;
if s=1 then
begin
write('entrez le numero :');readln(a);
while not eof(f) and t=true DO
begin
read(f,stud);
r:=r+1;
if stud.nb =a then t:= false ;
end;
if t=false then
begin
seek(f,r);
Truncate(f);
writeln ('le numero de etudiqnt est suprimee');
end
else writeln('le numero il n''existe pqs !!');
end
else
begin
write('entrez le num :');readln(b);
while not eof(f) and t=true DO
begin
read(f,stud);
r:=r+1;
if stud.nom =b then t:= false ;
end;
if t=false then
begin
seek(f,r);
Truncate(f);
writeln ('le numero de etudiqnt est suprimee');
end
else writeln('le numero il n''existe pas !!');
end;
close(f);
end;
{procedure 5 afficher l'information of students}
Procedure afficher(var stud : student);
begin
assign(f,'fille.dat');
reset(f);
while not eof(f) do
begin
read(f,stud);
write (stud.nb);
write (stud.nom);
write (stud.pnom);
write (stud.date);
write (stud.ville);
write (stud.moy);
end;
close(f);
end;
{program principale}
begin
clrscr ;
assign(f,'fille.dat');
rewrite(f);
repeat
begin
writeln('1\creer');
writeln('2\rempler');
writeln('3\recherche');
writeln('4\suprimer');
writeln('5\afficher');
writeln('0\creer');
writeln('entrew votre choix:');readln(c);
case c of
1 : creer;
2 : rempler (stud);
3 : recherche(stud);
4 : suprimer (stud);
5 : afficher(stud);
end;
end ;
UNTIL c=0;
end.مساعدة في برنامج بسيط
program TP02 ;
uses crt;
type
student= Record
nb : integer ;
nom : string[20];
pnom :string[20];
date:string[10];
ville:string[20];
moy:0..20;
end ;
var
f: file of student ;
stud : student;
c: integer;
{ creér new file procedure 1}
Procedure creer;{هذا الإجراء لا يحتاج إليه لأنه سيتم إنشاء الملف في الإجراء remler}
begin
assign(f,'students.dat');
rewrite(f);
end; { ajouter new student procedure 2}
Procedure rempler;
{الإجراء هنا لا يحتاج إلى مدخلات}
var i,n : integer;
begin
assign(f,'students.dat');
rewrite(f);
write('svp!.entrez le nombres des etudiants vou voulez ajoutee:');
readln(n);
for i:= 1 to n Do
begin
write('entrez le numero de etudiant ',i,':');readln(stud.nb);
write('entrez le nom de etudiant ',i,':');readln(stud.nom);
write('entrez le prenom de etudiant ',i,':');readln(stud.pnom);
write('entrez la date de naissance de etudiant ',i,':');readln(stud.date);
write('entrez le lieu de naiss de etudiant ',i,':');readln(stud.ville);
write('entrez la note de etudiant ',i,':');readln(stud.moy);
write(f,stud);
end;
close(f);
end;
{procedure 3 chercer for student }
Procedure recherche;
{الإجراء هنا لا يحتاج إلى مدخلات}
var
s,a:integer;
b:string;
t:boolean;
begin
write('vous voulez recherchez par numero(1) ou par nom(2)? 1 ou 2 :');
readln(s);
reset(f);
t:= true;
if s=1 then
begin
write('entrez le numero :');readln(a);
while not eof(f) and t=true DO
begin
read(f,stud);
if stud.nb =a then t:= false ;
end;
if t=false then
begin
writeln ('le numero de etudiqnt est;',stud.nb);
writeln ('le numero de etudiqnt est;',stud.nom);
writeln ('le numero de etudiqnt est;',stud.pnom);
writeln ('le numero de etudiqnt est;',stud.date);
writeln ('le numero de etudiqnt est;',stud.ville);
writeln ('le numero de etudiqnt est;',stud.moy);
end
else writeln('le numero il n''existe pqs !!');
end
else
begin
write('entrez le num :');readln(b);
while not eof(f) and t=true DO
begin
read(f,stud);
if stud.nom =b then t:= false ;
end;
if t=false then
begin
writeln ('le numero de etudiqnt est;',stud.nb);
writeln ('le numero de etudiqnt est;',stud.nom);
writeln ('le numero de etudiqnt est;',stud.pnom);
writeln ('le numero de etudiqnt est;',stud.date);
writeln ('le numero de etudiqnt est;',stud.ville);
writeln ('le numero de etudiqnt est;',stud.moy);
end
else writeln('le numero il n''existe pas !!');
end;
close(f);
end;
Procedure suprimer; { supprimer student procedure 4}
{الإجراء هنا لا يحتاج إلى مدخلات}
var
s,a,r:integer;
b:string;
t:boolean;
begin
write('vous voulez suprimez par numero(1) ou par nom(2)? 1 ou 2 :');
readln(s);
rewrite(f);
t:= true;
r:=0;
if s=1 then
begin
write('entrez le numero :');readln(a);
while not eof(f) and t=true DO
begin
read(f,stud);
r:=r+1;
if stud.nb =a then t:= false ;
end;
if t=false then
begin
seek(f,r);
Truncate(f);
writeln ('le numero de etudiqnt est suprimee');
end
else writeln('le numero il n''existe pqs !!');
end
else
begin
write('entrez le num :');readln(b);
while not eof(f) and t=true DO
begin
read(f,stud);
r:=r+1;
if stud.nom =b then t:= false ;
end;
if t=false then
begin
seek(f,r);
Truncate(f);
writeln ('le numero de etudiqnt est suprimee');
end
else writeln('le numero il n''existe pas !!');
end;
close(f);
end;
{procedure 5 afficher l'information of students}
Procedure afficher;
{الإجراء هنا لا يحتاج إلى مدخلات}
begin
assign(f,'students.dat'); {الخطأ هنا في اسم الملف}
reset(f);
while not eof(f) do
begin
read(f,stud);
write (stud.nb); {writeln استعمل}
write (stud.nom); {writeln استعمل}
write (stud.pnom); {writeln استعمل}
write (stud.date); {writeln استعمل}
write (stud.ville); {writeln استعمل}
write (stud.moy); {writeln استعمل}
end;
close(f);
end;
{program principale}
begin
clrscr ;
{assign(f,'fille.dat');
rewrite(f); انشاء الملف مكرر لذلك لا حاجة إليه}
repeat
begin
writeln('1\creer');
writeln('2\rempler');
writeln('3\recherche');
writeln('4\suprimer');
writeln('5\afficher');
writeln('0\creer');
writeln('entrew votre choix:');readln(c);
case c of
1 : creer;
2 : rempler ;
3 : recherche;
4 : suprimer ;
5 : afficher; {استدعاء الإجراءات من دون مدخلات}
end;
end ;
UNTIL c=0;
end.إذا رأيتموني غبت فأطلت الغياب فربما أكون قد انتقلت عن الدنيا إلى الآخرة
فما أحوجني إلى دعوة صالحة من أخ لي كريم
أول برنامج عربي للمحاسبة والتجارة وإدراة المخازن يعمل على اللينكس والماك والويندوز
مشكور أخي البرنامج يعمل بطريقة صحيحة ..
لكن عندما أدخل معلومات جديدة وتسجل في الملف لماذا عند دخولي مرة ثانية لا أجدها في الملف..فلقد أدخلتها في ملف students.dat
وكما لدي المشكلة الثانية وهي أن إجراء الحذف supprimer عند استدعاءه يقوم بحذف كافة المعلومات في الملف ...لكن ما أريده هو حذف معلومات لطالب معين يقوم المستخدم بإختياره فقط وليس كافة المعلومات ...ولقد طرأت لدي فكرة نقل كافة المعلومات لملف آخر وعدم نقل المعلومات المراد حذفها ثم حذف الملف القديم والملف الجديد يحوي جميع المعلومات الأخرى ما عدى التي تم حذفها ... والله أعلم
djwy كتب:مشكور أخي البرنامج يعمل بطريقة صحيحة ..
لكن عندما أدخل معلومات جديدة وتسجل في الملف لماذا عند دخولي مرة ثانية لا أجدها في الملف..فلقد أدخلتها في ملف students.dat
طبعا لأنك تكتب فوقه بالأمر rewrite
وبالجملة فالملفات الثنائية لها تعامل خاص وحذر
أنصحك بقراءة هذا الكتاب والتعلم منه فإنه سيفيدك بهذا الشأن
إذا رأيتموني غبت فأطلت الغياب فربما أكون قد انتقلت عن الدنيا إلى الآخرة
فما أحوجني إلى دعوة صالحة من أخ لي كريم
أول برنامج عربي للمحاسبة والتجارة وإدراة المخازن يعمل على اللينكس والماك والويندوز
