الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مساعدة في برنامج بسيط

بدأه djwy في 9 مارس 2013 · 3 رد · 661 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع
السلام عليكم ورحمة الله تعالى وبركاته ,,,,,,,

لقد قمت بكتابة برنامج بلغة الباسكال  يقوم بتخزين معلومات الطلبة (سجل)في ملف والمطلوب أن يكون الملف غير قابل للفتح فقط من داخل البرنامج اظن من نوع (dat ou pas )الله أعلم هذه المشكلة الأولى والبرنامج يحوي إجراءات للإضافو والمسح والعر وغيرها ,...المشكلة أن الرنامج يعمل لكن إجراء العرض والحذف لايعملان ولم أعرف أين  المشكلة ؟؟؟


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.

#2
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.
2

vVIfFr.gif

مدونتي



إذا رأيتموني غبت فأطلت الغياب فربما أكون قد انتقلت عن الدنيا إلى الآخرة

فما أحوجني إلى دعوة صالحة من أخ لي كريم

 

http://www.tvquran.com/

 

LoGeCom

أول برنامج عربي للمحاسبة والتجارة وإدراة المخازن يعمل على اللينكس والماك والويندوز 

#3

مشكور أخي البرنامج يعمل بطريقة  صحيحة ..

لكن عندما أدخل معلومات جديدة وتسجل في الملف لماذا عند دخولي مرة ثانية لا أجدها في الملف..فلقد أدخلتها في ملف students.dat   

وكما لدي المشكلة الثانية وهي أن إجراء الحذف supprimer عند استدعاءه يقوم بحذف كافة المعلومات في الملف ...لكن ما أريده هو حذف معلومات لطالب معين يقوم المستخدم بإختياره  فقط وليس كافة المعلومات ...ولقد طرأت لدي فكرة نقل كافة المعلومات لملف آخر وعدم نقل المعلومات المراد حذفها ثم حذف الملف القديم  والملف الجديد يحوي جميع المعلومات الأخرى ما عدى التي تم حذفها ... والله أعلم 

#4
djwy كتب:

مشكور أخي البرنامج يعمل بطريقة  صحيحة ..

لكن عندما أدخل معلومات جديدة وتسجل في الملف لماذا عند دخولي مرة ثانية لا أجدها في الملف..فلقد أدخلتها في ملف students.dat   

طبعا لأنك تكتب فوقه بالأمر rewrite

 

وبالجملة فالملفات الثنائية لها تعامل خاص وحذر

أنصحك بقراءة هذا الكتاب والتعلم منه فإنه سيفيدك بهذا الشأن

vVIfFr.gif

مدونتي



إذا رأيتموني غبت فأطلت الغياب فربما أكون قد انتقلت عن الدنيا إلى الآخرة

فما أحوجني إلى دعوة صالحة من أخ لي كريم

 

http://www.tvquran.com/

 

LoGeCom

أول برنامج عربي للمحاسبة والتجارة وإدراة المخازن يعمل على اللينكس والماك والويندوز 

مواضيع مشابهة