Помощь - Поиск - Пользователи - Календарь
Полная версия: база данных на рекордах ( без dbf, sql и т.п. )
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Sigma18
нужна помошь в написании базы данных ( см. заголовок )
Вернее в написании 3-х модулей - для удаления записи, поиска и сортировки.

Код
PROGRAM Magazin;
USES Crt;
TYPE
  {zadanie tipov polei zapisi}
    StProdukt=string[10];
    Number=real;
    Date=word;
    {Obl_Type =(H,S);}


  {zadanie tipa zapisi}
  Mag_Rec=record
    Produkt:StProdukt;
    Prise:Number;
    Postupl:Date;
    Godnost:Date;
    Reliz:Date;
    Kol_vo:Number;
  END;
VAR
  Tab_Mag  :array[1..100] of Mag_Rec;
  Mag_File :file of Mag_Rec;
  Acses    :Mag_Rec;    
  continue:string[1];
  Ind:byte;
  j,i:integer;
  {f,i:integer;}

{óδó«ñ ΓѬπΘÑ⌐ ºá»¿ß¿ ¡á φ¬αá¡}
BEGIN
 read(Mag_File, Acses);
 WITH Acses DO
  writeln('║',j:4,'║':1,Produkt:9,'║':2 ,Prise:6:2,'║':2,Postupl:7,
           '║':5,Godnost:9,'║':4,Reliz:7,'║':4,Kol_vo:2:2,'║':6);
END;{Out_Records}

PROCEDURE Out_All_Records;
BEGIN
  writeln('**Produkziya magazina**');
  writeln('╔════╦══════════╦═══════╦═══════════╦════════════╦══════════╦═══════════╗');
writeln('║ #~ ║  PRODUKT ║ PRISE ║  POSTUPL  ║ GODNOST    ║  RELIZ   ║   KOL_VO  ║');
writeln('╠════╬══════════╬═══════╬═══════════╬════════════╬══════════╬═══════════╣    ');

  Seek(Mag_File,0);
  WHILE (NOT eof(Mag_File)) DO Out_Records;
writeln('╚════╩══════════╩═══════╩═══════════╩════════════╩══════════╩═══════════╝');
END;{Out_All_Records;}

< тут идёт процедуры для общения с таблицей >



PROCEDURE Dialog;

BEGIN
 writeln('Prosmotret' table-1');
 writeln('Vvesti dannye v table-2');
 writeln('redaktirovanie po nomeru-3');
 writeln('udalenie zapisi-4');
 writeln('Poisk-5');
 writeln('Sortirovka-6');
 readln (j);
 IF j=1 THEN Out_All_Records;
 IF j=2 THEN Add_Records_End;
 IF j=3 THEN
  BEGIN
    write('ñ½∩ ¿º¼Ñ¡Ñ¡¿∩ ºá»¿ß¿ óóÑñ¿ΓÑ Ñú« ¡«¼Ñα:');
    readln(i);
    Redakt_Records(i);
  END;{IF}
 IF j=4 THEN writeln('ß«αΓ¿α«ó¬á »«¬á ¡¿τÑú«');
 IF j=5 THEN Reserch_Produkt;
 IF j=6 THEN writeln('ß«αΓ¿α«ó¬á »«¬á ¡¿τÑú«');
 writeln('ò«Γ¿ΓÑ »α«ñ«½ª¿Γ∞?(ä/ì)'); read(continue);
 IF ((continue='ä') OR (continue='ñ')) THEN Dialog;
 readln;
END;{Dialog}

BEGIN {Vyvod table}
 CLRSCR;
 {writeln('éδóÑßΓ¿ Γáí½¿µπ ñ½∩ »α«ß¼«Γαá-1');
 writeln('éóÑßΓ¿ ñá¡¡δÑ ó ¬«¡Ñµ Σá⌐½á-2');
 writeln('ÉÑñá¬Γ¿α«óá¡¿Ñ »« ¡«¼Ñαπ-3');
 writeln('ôñá½Ñ¡¿Ñ ºá»¿ß¿-4');
 writeln('Å«¿ß¬-5');
 writeln('æ«αΓ¿α«ó¬á-6');
 readln (j);}
 Assign(Mag_File,'MAGAZIN.dat');
 reset(Mag_File);{«Γ¬αδΓ¿Ñ Σá⌐½á}
 Dialog;
 {IF j=1 THEN Out_All_Records;
 IF j=2 THEN Add_Records_End;
 IF j=3 THEN
  BEGIN
    write('ñ½∩ ¿º¼Ñ¡Ñ¡¿∩ ºá»¿ß¿ óóÑñ¿ΓÑ Ñú« ¡«¼Ñα:');
    readln(i);
    Redakt_Records(i);
  END;{IF
 IF j=4 THEN writeln('ß«αΓ¿α«ó¬á »«¬á ¡¿τÑú«');
 IF j=5 THEN Reserch_Produkt;
 IF j=6 THEN writeln('ß«αΓ¿α«ó¬á »«¬á ¡¿τÑú«');
 writeln('ò«Γ¿ΓÑ »α«ñ«½ª¿Γ∞?(ä/ì)'); read(continue);
 IF ((continue<>'ä') OR (continue<>'ñ')) THEN Dialog;
 readln;}

 close(Mag_File);
 readln;
END.



Код
{rewrite(Mag_File);
Tab_Record;
f:=i;
writeln('ò«Γ¿ΓÑ »α«ñ«½ª¿Γ∞?(ä/ì)'); read(continue);
IF (continue<>'ä' OR continue<>'ñ') THEN Tab_Out;
readln;
END. ***** }
ozzy
на sources.ru  в разделе БД есть исходник, реализующий все вышесказанное
http://pascal.sources.ru/database/dbpascal.htm
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.