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

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

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

> Структурированные файлы (Библиотека)
Совсем новичок
сообщение 26.11.2007 17:33
Сообщение #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('” (c)«  б Ё¬Ґ­Ґ¬ '+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('‚­ҐбвЁ ¤ ­­лҐ § ЇЁбЁ ў ­(r)ўл(c) д (c)«?');
  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('Ђўв(r)а Є­ЁЈЁ: ',avtor);
  writeln('‘а(r)Є ў(r)§ўа в : ',srok);
   writeln('Ђўв(r)а Є­ЁЈЁ: ',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 17:33
мисс_граффити   status:string; почему не boolean? имхо, условие...   27.11.2007 1:02
Совсем новичок   Сначала было string, т.к писал yes/no, а щас думаю...   27.11.2007 19:27
мисс_граффити   прикрепи файл. нет ни времени, ни желания набивать...   27.11.2007 21:00
Совсем новичок   Какой файл? Если вы про файл в котором инфа о книг...   27.11.2007 23:12
Lapp   Какой файл? Если вы про файл в котором инфа о кни...   28.11.2007 6:53
Совсем новичок   Ниче себе, действительно есть такой файл, а я дума...   28.11.2007 15:58
мисс_граффити   с учетом, что файл (по определению) - это именован...   28.11.2007 21:24
Lapp   с учетом, что файл (по определению) - это именова...   29.11.2007 15:36
andriano   Хм.. :blink: Это где такое определение?.. Файл...   18.12.2007 23:05
Совсем новичок   :)   28.11.2007 21:43
мисс_граффити   Кое-что я исправила: procedure find_book; var b...   28.11.2007 23:09
Совсем новичок   :) Спасибо, ща буду дописывать прогу :)   29.11.2007 15:25
Совсем новичок   Все прекрасно работает. Респект Вам за помощь. :)   29.11.2007 15:43
volvo   Ничего подобного: клавиатура и монитор - это ресур...   29.11.2007 15:47
Совсем новичок   Ну а с вариантной частью сам попробую написать.   29.11.2007 15:59
not_programmer   Сделал вариантную часть. Сделал сортировку по полю...   18.12.2007 21:49
Lapp   Ничего подобного: клавиатура и монитор - это [b]р...   18.12.2007 23:50
andriano   уж лучше бы я напильник привел в пример... :) Не в...   19.12.2007 8:17
Lapp   Да не имел я в виду CP/M. Не имел! Я привел п...   19.12.2007 11:26
not_programmer   Тема про файлы конечно животрепещущая и требует бо...   19.12.2007 18:17
not_programmer   Ээхх, никакой помощи не дождешься. Ну да ладна, пр...   20.12.2007 15:42


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

 

- Текстовая версия 23.07.2025 2:32
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"