1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code]. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
Посмотрите пожалуйста, что не так. (иногда может выбить ошибку 200, но это неважно). В меню записываются фамилии, успешно добавляется, но когда выбираешь показать все записи (не сортировать, по фамилии...) экран пуст. Может что-то неправильно в процедуре Writephone. Или они попросту не сохраняются?
program Phonebook; uses Crt; type Phone = record SurnameS : string[15]; NameS : string[15]; PhoneS : string[15]; AddressS: string[50]; end; var PhoneF : file of Phone; PhoneR : Phone; filename : string; a : array[1..600] of Phone; procedure WritePhone; begin Assign(PhoneF,filename); Reset(PhoneF); ClrScr; writeln('Vse zapisi: '); writeln; while not Eof(PhoneF) do begin PhoneR.SurnameS:=' '; PhoneR.NameS:=' '; PhoneR.PhoneS:=' '; PhoneR.AddressS:=' '; read(PhoneF,PhoneR); writeln; write(' ',PhoneR.SurnameS); write(' ',PhoneR.NameS); write(' ',PhoneR.PhoneS); write(' ',PhoneR.AddressS); end; Close(PhoneF); writeln; writeln; write('Nagmite lybuy klavishu ...'); ReadKey; end; procedure AddPhone; begin Assign(PhoneF,filename); Reset(PhoneF); while not Eof(PhoneF) do Read(PhoneF,PhoneR); PhoneR.SurnameS:=' '; PhoneR.NameS:=' '; PhoneR.PhoneS:=' '; PhoneR.AddressS:=' '; ClrScr; writeln('Dobavlenie zapisi: '); writeln; Write('Vvedite familiy: '); readln(PhoneR.SurnameS); write('Vvedite imya: '); readln(PhoneR.NameS); write('Vvedite nomer telefona: '); readln(PhoneR.PhoneS); write('Vvedite adres: '); readln(PhoneR.AddressS); write(PhoneF,PhoneR); Close(PhoneF); writeln; writeln('Zapis uspehno dobavlena v bazu !!!'); writeln; write('Nagmite lybuy klavishu ...'); ReadKey; end; procedure DeletePhone; var temp : file of Phone; Nazv : string[15]; begin Assign(PhoneF,filename); Reset(PhoneF); Assign(temp,filename); Rewrite(temp); PhoneR.SurnameS:=' '; PhoneR.NameS:=' '; PhoneR.PhoneS:=' '; PhoneR.AddressS:=' '; ClrScr; writeln('Udalenie zapisi: '); writeln; Write('Vvedite familiy: '); readln(Nazv); while not Eof(PhoneF) do begin Read(PhoneF,PhoneR); if PhoneR.SurnameS<>Nazv then Write(temp,PhoneR); end; Close(temp); Close(PhoneF); Erase(PhoneF); Rename(temp,filename); writeln; writeln('Zapis uspehno udalena iz bazu !!!'); writeln; write('Nagmite lybuy klavishu ...'); ReadKey; end; procedure EditPhone; var Nazv : string[15]; temp : file of Phone; begin Assign(PhoneF,filename); Reset(PhoneF); Assign(temp,filename); Rewrite(temp); PhoneR.SurnameS:=' '; PhoneR.NameS:=' '; PhoneR.PhoneS:=' '; PhoneR.AddressS:=' '; ClrScr; writeln('Redaktirovanie zapisi: '); writeln; Write('Vvedite familiy, kotoruy hotite izmenit: '); readln(Nazv); while not Eof(PhoneF) do begin PhoneR.SurnameS:=' '; PhoneR.NameS:=' '; PhoneR.PhoneS:=' '; PhoneR.AddressS:=' '; Read(PhoneF,PhoneR); if PhoneR.SurnameS<>Nazv then Write(temp,PhoneR); end; writeln; write('Vvedite novuy familiy: '); readln(PhoneR.SurnameS); write('Vvedite novoe imya: '); readln(PhoneR.NameS); write('Vvedite novyi nomer telefona: '); readln(PhoneR.PhoneS); write('Vveddite novyi adres: '); readln(PhoneR.AddressS); write(temp,PhoneR); Close(temp); Close(PhoneF); Erase(PhoneF); Rename(temp,filename); writeln; writeln('Zapis uspehno izmenena !!!'); writeln; write('Nagmite lybuy klavishy ...'); ReadKey; end; procedure FindSurname; var Nazv : string[15]; k : integer; begin k:=0; Assign(PhoneF,filename); Reset(PhoneF); ClrScr; writeln('Poisk zapisi po familii: '); writeln; Write('Vvedite familiy: '); readln(Nazv); while not Eof(PhoneF) do begin PhoneR.SurnameS:=' '; PhoneR.NameS:=' '; PhoneR.PhoneS:=' '; PhoneR.AddressS:=' '; read(PhoneF,PhoneR); if PhoneR.SurnameS=Nazv then begin writeln; write(' ',PhoneR.SurnameS); write(' ',PhoneR.NameS); write(' ',PhoneR.PhoneS); write(' ',PhoneR.AddressS); k:=k+1; end; end; Close(PhoneF); writeln; writeln; writeln('Poisk zavershen, naideno zapisei: ',k); writeln; write('Nagmite lybuy klavishu ...'); ReadKey; end; procedure FindPhone; var Nazv : string[15]; k : integer; begin k:=0; Assign(PhoneF,filename); Reset(PhoneF); ClrScr; writeln('Poisk zapisi po nomeru telefona: '); writeln; Write('Vvedite nomer telefona: '); readln(Nazv); while not Eof(PhoneF) do begin PhoneR.SurnameS:=' '; PhoneR.NameS:=' '; PhoneR.PhoneS:=' '; PhoneR.AddressS:=' '; read(PhoneF,PhoneR); if PhoneR.PhoneS=Nazv then begin writeln; write(' ',PhoneR.SurnameS); write(' ',PhoneR.NameS); write(' ',PhoneR.PhoneS); write(' ',PhoneR.AddressS); k:=k+1; end; end; Close(PhoneF); writeln; writeln; writeln('Poisk zavershen, naideno zapisei: ',k); writeln; write('Nagmite lybuy klavishu ...'); ReadKey; end; procedure SortSurname; var i,j,c: integer; tr: Phone; begin c:=0; Assign(PhoneF, filename); Reset(PhoneF); ClrScr; writeln('Sortirovka po familii: '); writeln; while not Eof(PhoneF) do begin inc(c,1); read(PhoneF,a[c]); end; for i:=1 to c do for j:=1 to c-1 do begin if a[j].SurnameS>a[j+1].SurnameS then begin tr:=a[j+1]; a[j+1]:=a[j]; a[j]:=tr; end; end; for i:=1 to c do begin writeln; write(a[i].SurnameS); write(' ',a[i].NameS); write(' ',a[i].PhoneS); write(' ',a[i].AddressS); end; Close(PhoneF); writeln; writeln; write('Nagmite lybuy klavishu ...'); ReadKey; end; procedure SortAddress; var i,j,c: integer; tr: Phone; begin c:=0; Assign(PhoneF, filename); Reset(PhoneF); ClrScr; writeln('Sortirovka po adresu: '); writeln; while not Eof(PhoneF) do begin inc(c,1); read(PhoneF,a[c]); end; for i:=1 to c do for j:=1 to c-1 do begin if a[j].AddressS>a[j+1].AddressS then begin tr:=a[j+1]; a[j+1]:=a[j]; a[j]:=tr; end; end; for i:=1 to c do begin writeln; write(a[i].SurnameS); write(' ',a[i].NameS); write(' ',a[i].PhoneS); write(' ',a[i].AddressS); end; Close(PhoneF); writeln; writeln; write('Nagmite lybuy klavishu ...'); ReadKey; end; procedure SortPhone; var i,j,c: integer; tr: Phone; begin c:=0; Assign(PhoneF, filename); Reset(PhoneF); ClrScr; writeln('Sortirovka po nomeru telefona: '); writeln; while not Eof(PhoneF) do begin inc(c,1); read(PhoneF,a[c]); end; for i:=1 to c do for j:=1 to c-1 do begin if a[j].PhoneS>a[j+1].PhoneS then begin tr:=a[j+1]; a[j+1]:=a[j]; a[j]:=tr; end; end; for i:=1 to c do begin writeln; write(a[i].SurnameS); write(' ',a[i].NameS); write(' ',a[i].PhoneS); write(' ',a[i].AddressS); end; Close(PhoneF); writeln; writeln; write('Nagmite lybuy klavishu ...'); ReadKey; end;
procedure SortType; var b: integer; begin repeat begin ClrScr; writeln('"Telefonnyi spravochnik" - meny sortirovki'); writeln; writeln('1. Ne sortirovat'); writeln('2. Sortirovat po familii'); writeln('3. Sortirovat po adresu'); writeln('4. Sortirovat po nomeru telefona'); writeln('----------------------------'); writeln('5. Vozvrat v glavnoe meny'); writeln; write('Vyberite punkt meny: '); readln(b); case b of 1 : WritePhone; 2 : SortSurname; 3 : SortAddress; 4 : SortPhone; end; end; until b=5; end; procedure PhoneMenu; var b: integer; begin repeat begin ClrScr; writeln('"Telefonnyi spravochnik" - glavnoe meny'); writeln; writeln('1. Pokazat vse zapisi'); writeln('2. Dobavit zapis'); writeln('3. Udalit zapis'); writeln('4. Redaktirovat zapis'); writeln('5. Poisk po familii'); writeln('6. Poisk po nomeru telefona'); writeln('----------------------------'); writeln('7. Vyhod'); writeln; write('Vyberite punkt meny: '); readln(b); case b of 1 : SortType; 2 : AddPhone; 3 : DeletePhone; 4 : EditPhone; 5 : FindSurname; 6 : FindPhone; end; end; until b=7; end; begin ClrScr; PhoneMenu; end.