IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Структурированные файлы (Библиотека)
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 29
Пол: Мужской

Репутация: -  0  +


Вот как звучит задание:

В файле хранится информация о книгах, взятых в библиотеке:
Инвентарный номер
Название
Автор
Срок возврата книги
Признак того, сдана книга или нет.

Необходимо проверить, есть ли среди несданных книг "просроченные" (на текущую дату), сли такие книги есть, то сдать их (изменить признак) или продлить еще на один срок (изменить срок возврата). В новый файл поместить информацию о всех несданных книгах.

Вот что у меня есть


program lib;
uses crt;
type books=record
number:integer;
name:string;
avtor:string;
srok:record
d:byte;
m:byte;
end;
status:string; {SDANA ILI NET(true or false)}
end;
var
book_file : file of books;
rec : books;
finder_d : byte;
finder_m : byte;
file_name : string;
key : integer;
exit : boolean;
x : string;

{CREATE NAME OF FILE}

procedure name_of_file;
begin
write('Enter name of file of data of book: ');
readln(file_name);
end;

{ADD RECORD IN THE FILE}

procedure add_record;
begin
writeln('Record N ',filepos(book_file)+1);
with rec do
begin
write('Inventory number: ');
readln(number);
write('Name of the book: ');
readln(name);
write('Author of the book: ');
readln(avtor);
write('Srok vozvrata: ');
readln(srok.d, srok.m);
write('Status of the book: ');
readln(status);
write(book_file,rec);
end;
end;

{CREATE NEW NULL FILE}

procedure create_new_nul_file;
begin
name_of_file;
assign(book_file,file_name);
rewrite(book_file);
end;

{CREATE NEW FILE}

procedure create_new_book_file;
var
i,n:integer;
begin
name_of_file;
assign(book_file,file_name);
rewrite(book_file);
writeln('Create records of file ',file_name);
write('Enter count records: ');
readln(n);
for i:=1 to n do add_record;
writeln('FILE CREATED');
writeln('File of data have ',filesize(book_file),' records');
close(book_file);
end;

{OUTPUT TEMP RECORD}

procedure output_record;
begin
read(book_file,rec);
with rec do
begin
write('N ',filepos(book_file),' : ');
writeln('Name of book: ',name);
writeln('Author of book: ',avtor);
writeln('Srok vozvrata: ',srok.d,'.',srok.m);
writeln('Status of book: ',status);
end;
end;

{OUTPUT ALL RECORDS}

procedure output_all_records;
begin
name_of_file;
assign(book_file,file_name);
{$I-}
reset(book_file);
{$I+}
if IOresult = 0 then
begin
seek(book_file,0);
writeln('OUTPUT INFORMATION ABOUT BOOK ','"',file_name,'"');
while (not eof(book_file)) do output_record;
end
else
writeln('File '+file_name+' is not');
end;

{REWRITE PARTS OF FILE}

procedure update_records;
var
number_of_record:integer;
begin
name_of_file;
assign(book_file,file_name);
{$I-}
reset(book_file);
{$I+}
if IOresult = 0 then
begin
writeln('Enter number of rewrite record :');
readln(number_of_record);
seek(book_file,number_of_record-1);
writeln('Zna4enie of this record: ');
output_record;
seek(book_file,number_of_record-1);
writeln('Enter new zna4enie ',number_of_record,' record');
add_record;
close(book_file);
end
else
writeln('” ©«  б Ё¬Ґ­Ґ¬ '+file_name+' ­Ґ бгйҐбвўгҐв');
end;

{ADD RECORDS IN THE END OF FILE}

procedure add_records_in_the_end;
begin
name_of_file;
assign(book_file,file_name);
{$I-}
reset(book_file);
{$I+}
if IOresult = 0 then
begin
seek(book_file,filesize(book_file));
add_record;
writeln('Data is wrote. So ',filesize(book_file),' records');
close(book_file);
end
else
writeln('File with name '+file_name+' is not');
end;

{SEARCH PROSROCHENNYX BOOKS}

procedure find_book;
var
book_file2:file of books;
finder:integer;
flag:boolean;
counter:integer;
d:char;
begin
name_of_file;
assign(book_file,file_name);
writeln('Enter name of file for prosro4ennyx book: ');
readln(x);
assign(book_file2,x);
rewrite(book_file2);
{$I-}
reset(book_file);
{$I+}
if IOresult = 0 then
begin
write('Enter Tekywyu daty: ');
readln(finder_d, finder_m);
flag:=false;
counter:=0;
while (not eof(book_file)) do
begin
read(book_file,rec);
with rec do
if ((srok.d<finder_d) and (srok.m<finder_m)) or
((srok.d>=finder_d) and (srok.m<finder_m)) then
begin
flag:=true;
inc(counter);
write('N ',filepos(book_file),' : ');
writeln('Name of book: ',name);
writeln('Author of book: ',avtor);
writeln('Srok vozvrata: ',srok.d,'.',srok.m);
writeln('Status of book: ',status);
write(book_file2,rec);
status:='y';
srok.d:=finder_d;
srok.m:=finder_m+1;
end;
end;
{ seek(book_file,0);
while (not eof(book_file)) do
begin
read(book_file,rec);
with rec do
if (srok.d<finder) and (srok.m<finder) then
begin
status:='y';
srok:=finder;
srok.m:=srok.m+1;
write(book_file,rec);
end;
end;}

if flag then
begin
writeln('Finded ',counter,' records');
{ writeln('‚­ҐбвЁ ¤ ­­лҐ § ЇЁбЁ ў ­®ўл© д ©«?');
write('Yes or No');
readln(d);
if (d='y') or (d='Y') then
begin
create_new_nul_file;
while (not eof(book_file)) do
begin
read(book_file,rec);
with rec do
if srok>finder then
begin write('N ',filepos(book_file),' : ');
writeln('Ќ §ў ­ЁҐ Є­ЁЈЁ: ',name);
writeln('Ђўв®а Є­ЁЈЁ: ',avtor);
writeln('‘а®Є ў®§ўа в : ',srok);
writeln('Ђўв®а Є­ЁЈЁ: ',avtor);
writeln('Љ­ЁЈ  б¤ ­ : ',status);
write(file_name,rec);
end;
close(name_file);
end }
end
else
writeln('NO FIND RECORDS');
close(book_file);
end
else
writeln('File with name '+file_name+' is not');
end;

{=============MAIN PROGRAM==============}

begin
exit:=false;
clrscr;
repeat
writeln(' DATABASE OF BOOK');
writeln;
writeln('1 - CREATE NEW FILE');
writeln('2 - VIEW INFORMATION ABOUT BOOKS');
writeln('3 - REWRITE OLD RECORD');
writeln('4 - ADD NEW RECORDS');
writeln('5 - SEARCH PROSRO$ENNYX BOOK');
writeln('6 - EXIT');
write('Your choose: ');
readln(key);
case key of
1:create_new_book_file;
2:output_all_records;
3:update_records;
4:add_records_in_the_end;
5:find_book;
6:exit:=true;
end;
writeln('Executed. <ENTER>');
readln;
clrscr;
until exit;
end.



Добавлено через 7 мин.
Я думаю, что вся собака зарыта в процедуре {SEARCH PROSROCHENNYX BOOKS} )) (что по английски знал -написал) нужно както сравнить текущую дату(вопрос как ее задать(как новую запись?)) и изменить статус тех книг которые просрочены (перевести дату на текущую и изменить сам статус книги).

И еще бы хотелось увидеть вариантную часть какого нить небольшого поля, например поля status(true/false)
как он сдесь будет выглядеть (делать вариантную часть других полей не хочется, уж слишком много всего получится).
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Совсем новичок   Структурированные файлы (Библиотека)   26.11.2007 21:33
мисс_граффити   status:string; почему не boolean? имхо, условие…   27.11.2007 5:02
Совсем новичок   Сначала было string, т.к писал yes/no, а щас думаю…   27.11.2007 23:27
мисс_граффити   прикрепи файл. нет ни времени, ни желания набивать…   28.11.2007 1:00
Совсем новичок   Какой файл? Если вы про файл в котором инфа о книг…   28.11.2007 3:12
Lapp   Какой файл? Если вы про файл в котором инфа о кни…   28.11.2007 10:53
Совсем новичок   Ниче себе, действительно есть такой файл, а я дума…   28.11.2007 19:58
мисс_граффити   с учетом, что файл (по определению) - это именован…   29.11.2007 1:24
Lapp   с учетом, что файл (по определению) - это именова…   29.11.2007 19:36
andriano   Хм.. :blink: Это где такое определение?.. Файл…   19.12.2007 3:05
Совсем новичок   :)   29.11.2007 1:43
мисс_граффити   Кое-что я исправила: procedure find_book; var b…   29.11.2007 3:09
Совсем новичок   :) Спасибо, ща буду дописывать прогу :)   29.11.2007 19:25
Совсем новичок   Все прекрасно работает. Респект Вам за помощь. :)   29.11.2007 19:43
volvo   Ничего подобного: клавиатура и монитор - это ресур…   29.11.2007 19:47
Совсем новичок   Ну а с вариантной частью сам попробую написать.   29.11.2007 19:59
not_programmer   Сделал вариантную часть. Сделал сортировку по полю…   19.12.2007 1:49
Lapp   Ничего подобного: клавиатура и монитор - это [b]р…   19.12.2007 3:50
andriano   уж лучше бы я напильник привел в пример... :) Не в…   19.12.2007 12:17
Lapp   Да не имел я в виду CP/M. Не имел! Я привел п…   19.12.2007 15:26
not_programmer   Тема про файлы конечно животрепещущая и требует бо…   19.12.2007 22:17
not_programmer   Ээхх, никакой помощи не дождешься. Ну да ладна, пр…   20.12.2007 19:42


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 9.03.2021 5:27
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name