zum75
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Program Biblioteka; Type Bibl=record {описание типа } Inv_nomer:integer; Name_author:string[50]; Naim_knigi:string[20]; God_izd:string[20]; Mesto_izd:string[20]; Naim_izd:string[20]; end; Var f:file of Bibl; filename:string; k:integer; Procedure Creatfile; {создание файла} begin Writeln('Задайте имя файла'); Readln(filename); Assign(f,filename); {связь с внешним файлом} Rewrite(f);{открытие нового файла для записи} end; Procedure Addrecord; {добавление записи в файл} Var rez:integer; begin while rez <> 0 do begin Writeln(' Задайте имя файла, куда добавить запись'); Readln(filename); Assign(f,filename); {установка связи} Reset(f); If rez <> 1 then begin Writeln ('Проверьте правильность имени файла! (Y/N)'); Readln; end; end; end; Procedure Inputfile; {ввод данных в файл} Var st:Bibl; k:char; begin Writeln('Введите данные о новой книге:'); Write('Инвентарный номер книги:'); Readln(st.Inv_nomer); Write('Имя автора:'); Readln(st.Name_author); Write('Наименование книги:'); Readln(st.naim_knigi); Write('Год издания:'); Readln(st.god_izd); Write('Наименование издательства:'); Readln(st.Naim_izd); Write('Место издания:'); Readln(st.Mesto_izd); Write('Ввести данные о новой книге? (Y/N)'); Readln(k); Writeln; end; Procedure Redzap; {редактирование записи} Var st:Bibl; filename:string[20]; st2:integer; x:integer; begin Writeln('Задайте имя файла'); Readln(filename); Assign(f,filename); Reset(f); With st do begin Write('Введите инвентарный номер книги:'); Readln(st2); x:=0; While not eof(f) do begin Read(f,st); if st.Inv_nomer=st2 then begin Writeln('Введите новые данные о книге:'); Write('Инвентарный номер книги:'); Readln(st.Inv_nomer); Write('Имя автора:'); Readln(st.Name_author); Write('Наименование книги:'); Readln(st.Naim_knigi); Write('Год издания:'); Readln(st.God_izd); Write('Наименование издательства:'); Readln(st.Naim_izd); Write('Место издания:'); Readln(st.Mesto_izd); seek(f,filepos(f)-1); Write(f,st); x:=1; end; end; Close(f); end; if x=0 then Begin Writeln('Записи с таким номером нет!'); Readln end; end; Procedure Openfile; {процедура открытия файла} Var rez:integer; Begin While rez<>0 do begin Write('Задайте имя файла:'); Readln(filename); Assign(f,filename); Reset(f); end; end; Procedure Outputfile; {вывод данных из файла} Var st:Bibl; Begin While not eof(f) do Begin Read(f,st); Writeln('Инвентарный номер книги:',st.Inv_nomer); Writeln('Имя автора:',st.Name_author); Writeln('Наименование книги:',st.Naim_knigi); Writeln('Год издания:',st.God_izd); Writeln('Наименование издательства:',st.Naim_izd); Writeln('Место издания:',st.Mesto_izd); Writeln('Для продолжения нажмите (Enter)'); Readln; end; Close(f); end; Procedure Clearfile; {удаление записи из файла} Var st:Bibl; I_N:integer; fo:file of Bibl; begin Writeln('Задайте имя файла, из которого удаляются элементы'); Readln(filename); Assign(f,filename); Reset(f); Assign(fo,'newfile.dat'); Rewrite(fo); Writeln('Введите номер книги, запись о которой удаляется'); Readln(I_N); While not eof(f) do begin read(f,st); if st.Inv_nomer<>I_N then Write(fo,st); end; Close(f); Close(fo); Erase(f); Rename(fo,filename); end; {Основная часть программы} Procedure P_Nom; {поиск по номеру} var PNo:integer; st:Bibl; begin write ('Введите инвентарный номер книги: '); readln(PNo); begin read(f,st); if PNo=st.Inv_nomer then begin Writeln('Инвентарный номер книги:',st.Inv_nomer); Writeln('Имя автора:',st.Name_author); Writeln('Наименование книги:',st.Naim_knigi); Writeln('Год издания:',st.God_izd); Writeln('Наименование издательства:',st.Naim_izd); Writeln('Место издания:',st.Mesto_izd);end; if PNo<> st.Inv_nomer then Writeln('Книг с таким номером нет!'); Writeln('Нажмите <Enter> для выхода '); readln; end; close(f); end; Procedure P_Name; {поиск по имени автора} var PN:string[15]; st:Bibl; begin writeln('Введите полное имя автора: '); readln(PN); if PN=st.Name_author then begin Writeln('Инвентарный номер:',st.Inv_nomer); Writeln('Имя автора:',st.Name_author); Writeln('Наименование книги:',st.Naim_knigi); Writeln('Год издания:',st.God_izd); Writeln('Наименование издательства:',st.Naim_izd); Writeln('Место издания:',st.Mesto_izd); end; if PN<> st.Name_author then writeln('Авторов с таким именем нет!'); writeln('Нажмите <Enter> для выхода '); readln; end; Begin Writeln( ' Меню:'); Writeln('1:Создание файла'); Writeln('2:Добавление записи в файл'); Writeln('3:Редактирование записи в файле'); Writeln('4:Просмотр файла '); Writeln('5:Удаление записи из файла'); Writeln('6:Поиск по инвентарному номеру книги'); Writeln('7:Поиск по имени автора'); Writeln('8:Выход из программы'); Readln(k); Case k of 1: begin Creatfile; Inputfile end; 2:begin Addrecord; Inputfile end; 3: redzap; 4:begin Openfile; Outputfile end; 5:Clearfile; 6:begin Openfile; P_Nom end; 7:begin Openfile; P_Name end; {8:Exit} end; End. |