Pascal - Задача: Сделать базу данных по теме : Книжная библиотека
Pascal - Задачка: Сделать базу данных по теме : Книжная библиотека ( заглавие учебника, фамилия учебника, издательство учебника, год учебника, город учебника ).
Выполнить:
1) Составить программку с процедурой и функцией по таблице :
1.Create;
2. VIew;
3.Insert;
4.Delete
5.Edit
6.Update
2) Составить поиск по библиотеке книжек
По желанию: Начертить хоть какой график для задачи и вставить в задачку с библиотекой ( так же выполнить с процедурой
Борис Определенков
Абс
Воякина
Лариса
PascalABC.NET 3.2
1 ответ
Kupchishen Maksim
Как один из простых вариантов
type
LibBook = record
Book:string[50];
Author:string[50];
Publisher:string[30];
PubYear:integer;
City:string[30];
Deleted:boolean
end;
var
gf:file of LibBook;
function Create(pName:string):file of LibBook;
// Делает либо обнуляет имеющийся файл библиотеки
// с полным именованием pName (в имени можно указать и путь)
begin
var f:file of LibBook;
Rewrite(f,pName);
Result:=f;
f.Close
end;
procedure Insert(pLib:LibBook);
// Прибавляет книжку в базу
begin
var n:=FileSize(gf);
Seek(gf,n);
Write(gf,pLib);
end;
procedure BookWrite(pn:integer;pLib:LibBook);
// вывод книжки номер pn
begin
Writeln('*** Книжка ',pn,' ***');
if pLib.Deleted=False then begin
Writeln('Название: ',pLib.Book);
Writeln('Создатель: ',pLib.Author);
Writeln('Издатель: ',pLib.Publisher);
Writeln('Год выпуска: ',pLib.PubYear);
Writeln('Город: ',pLib.City);
end
else Writeln('=== У Д А Л Е Н А ===');
Writeln
end;
procedure View(pKol:integer:=0);
// Отображает содержимое библиотеки.
// Можно вывести не все, а только pKol первых записей
begin
var nB:=FileSize(gf);
if nb=0 then Writeln('Библиотека пустопорожняя')
else begin
Seek(gf,0);
Writeln('Книжек в библиотеке: ',nB,NewLine);
if pKollt;gt;0 then nB:=min(pKol,nb);
var Lib:LibBook;
for var i:=1 to nB do begin
Read(gf,Lib);
BookWrite(i,Lib)
end
end
end;
function Delete(pNom:integer):boolean;
// Устраняет книгу с номером pNom и возвращает true.
// Возвращает false, если такой книжки нет
begin
var nB:=FileSize(gf);
var Lib:LibBook;
if pNom-1gt;nB then begin
Writeln('Книга ',pNom,' не найдена');
Result:=False
end
else begin
Seek(gf,pNom-1);
Read(gf,Lib);
Lib.Deleted:=True;
Seek(gf,pNom-1);
Write(gf,Lib);
Writeln('Книга ',pNom,' удалена');
Result:=True
end;
end;
procedure Find(ps:string);
// поиск книжки по параметрам, данным строчкой
// Формат lt;кодgt; пробел lt;значениеgt;
begin
var n:=Ord(ps[1])-Ord('0');
Delete(ps,1,2);
var par:=ps;
var Lib:LibBook;
case n of
0:begin // по номеру книги
var nb:=FileSize(gf);
var fn:=par.ToInteger;
if fn-1gt;nb then Writeln('Книги с таким номером нет')
else begin
Seek(gf,fn-1);
Read(gf,Lib);
BookWrite(fn,Lib)
end
end;
1:begin // по наименованию книжки
var nl:=par.Length; // для контекстного поиска
Seek(gf,0);
var i:=1;
while not Eof(gf) do begin
Read(gf,Lib);
if Copy(Lib.Book,1,nl)=par then begin
BookWrite(i,Lib); Exit
end
else Inc(i)
end;
Writeln('Поиск по наименованию книжки ',par,' неуспешен')
end;
2:begin // по автору книжки
var nl:=par.Length; // для контекстного поиска
Seek(gf,0);
var i:=1;
while not Eof(gf) do begin
Read(gf,Lib);
if Copy(Lib.Author,1,nl)=par then begin
BookWrite(i,Lib); Exit
end
else Inc(i)
end;
Writeln('Поиск по творцу книжки ',par,' неуспешен')
end;
3:begin // по издательству
var nl:=par.Length; // для контекстного поиска
Seek(gf,0);
var i:=1;
while not Eof(gf) do begin
Read(gf,Lib);
if Copy(Lib.Publisher,1,nl)=par then begin
BookWrite(i,Lib); Exit
end
else Inc(i)
end;
Writeln('Поиск по издательству книжки ',par,' неуспешен')
end;
4:begin // по году выпуска
Seek(gf,0);
var i:=1;
var ipar:=par.ToInteger;
while not Eof(gf) do begin
Read(gf,Lib);
if Lib.PubYear=ipar then begin
BookWrite(i,Lib); Exit
end
else Inc(i)
end;
Writeln('Поиск по году издания ',par,' неуспешен')
end;
5:begin // по городу
var nl:=par.Length; // для контекстного поиска
Seek(gf,0);
var i:=1;
while not Eof(gf) do begin
Read(gf,Lib);
if Copy(Lib.City,1,nl)=par then begin
BookWrite(i,Lib); Exit
end
else Inc(i)
end;
Writeln('Поиск по городку ',par,' неуспешен')
end;
else Writeln('Неверная строчка поиска')
end
end;
const LibName='MyLib.lib';
begin
var MyBook:LibBook;
gf:=Create(LibName);
Reset(gf,LibName);
With MyBook do begin
Book:='1-ый учебник';
Author:='1-ый создатель';
Publisher:='Издательство 1';
PubYear:=2010;;
City:='Город 1'
end;
Insert(MyBook);
With MyBook do begin
Book:='2-ой учебник';
Author:='2-ой создатель';
Publisher:='Издательство 2';
PubYear:=2012;;
City:='Город 2'
end;
Insert(MyBook);
With MyBook do begin
Book:='3-ий учебник';
Author:='3-ий автор';
Publisher:='Издательство 3';
PubYear:=2006;;
City:='Город 3'
end;
Insert(MyBook);
View;
Delete(2);
View;
Find('0 3');
Find('1 Перв');
Find('2 Тре');
Find('3 Издательство 2');
Find('4 2006');
gf.Close
end.
type
LibBook = record
Book:string[50];
Author:string[50];
Publisher:string[30];
PubYear:integer;
City:string[30];
Deleted:boolean
end;
var
gf:file of LibBook;
function Create(pName:string):file of LibBook;
// Делает либо обнуляет имеющийся файл библиотеки
// с полным именованием pName (в имени можно указать и путь)
begin
var f:file of LibBook;
Rewrite(f,pName);
Result:=f;
f.Close
end;
procedure Insert(pLib:LibBook);
// Прибавляет книжку в базу
begin
var n:=FileSize(gf);
Seek(gf,n);
Write(gf,pLib);
end;
procedure BookWrite(pn:integer;pLib:LibBook);
// вывод книжки номер pn
begin
Writeln('*** Книжка ',pn,' ***');
if pLib.Deleted=False then begin
Writeln('Название: ',pLib.Book);
Writeln('Создатель: ',pLib.Author);
Writeln('Издатель: ',pLib.Publisher);
Writeln('Год выпуска: ',pLib.PubYear);
Writeln('Город: ',pLib.City);
end
else Writeln('=== У Д А Л Е Н А ===');
Writeln
end;
procedure View(pKol:integer:=0);
// Отображает содержимое библиотеки.
// Можно вывести не все, а только pKol первых записей
begin
var nB:=FileSize(gf);
if nb=0 then Writeln('Библиотека пустопорожняя')
else begin
Seek(gf,0);
Writeln('Книжек в библиотеке: ',nB,NewLine);
if pKollt;gt;0 then nB:=min(pKol,nb);
var Lib:LibBook;
for var i:=1 to nB do begin
Read(gf,Lib);
BookWrite(i,Lib)
end
end
end;
function Delete(pNom:integer):boolean;
// Устраняет книгу с номером pNom и возвращает true.
// Возвращает false, если такой книжки нет
begin
var nB:=FileSize(gf);
var Lib:LibBook;
if pNom-1gt;nB then begin
Writeln('Книга ',pNom,' не найдена');
Result:=False
end
else begin
Seek(gf,pNom-1);
Read(gf,Lib);
Lib.Deleted:=True;
Seek(gf,pNom-1);
Write(gf,Lib);
Writeln('Книга ',pNom,' удалена');
Result:=True
end;
end;
procedure Find(ps:string);
// поиск книжки по параметрам, данным строчкой
// Формат lt;кодgt; пробел lt;значениеgt;
begin
var n:=Ord(ps[1])-Ord('0');
Delete(ps,1,2);
var par:=ps;
var Lib:LibBook;
case n of
0:begin // по номеру книги
var nb:=FileSize(gf);
var fn:=par.ToInteger;
if fn-1gt;nb then Writeln('Книги с таким номером нет')
else begin
Seek(gf,fn-1);
Read(gf,Lib);
BookWrite(fn,Lib)
end
end;
1:begin // по наименованию книжки
var nl:=par.Length; // для контекстного поиска
Seek(gf,0);
var i:=1;
while not Eof(gf) do begin
Read(gf,Lib);
if Copy(Lib.Book,1,nl)=par then begin
BookWrite(i,Lib); Exit
end
else Inc(i)
end;
Writeln('Поиск по наименованию книжки ',par,' неуспешен')
end;
2:begin // по автору книжки
var nl:=par.Length; // для контекстного поиска
Seek(gf,0);
var i:=1;
while not Eof(gf) do begin
Read(gf,Lib);
if Copy(Lib.Author,1,nl)=par then begin
BookWrite(i,Lib); Exit
end
else Inc(i)
end;
Writeln('Поиск по творцу книжки ',par,' неуспешен')
end;
3:begin // по издательству
var nl:=par.Length; // для контекстного поиска
Seek(gf,0);
var i:=1;
while not Eof(gf) do begin
Read(gf,Lib);
if Copy(Lib.Publisher,1,nl)=par then begin
BookWrite(i,Lib); Exit
end
else Inc(i)
end;
Writeln('Поиск по издательству книжки ',par,' неуспешен')
end;
4:begin // по году выпуска
Seek(gf,0);
var i:=1;
var ipar:=par.ToInteger;
while not Eof(gf) do begin
Read(gf,Lib);
if Lib.PubYear=ipar then begin
BookWrite(i,Lib); Exit
end
else Inc(i)
end;
Writeln('Поиск по году издания ',par,' неуспешен')
end;
5:begin // по городу
var nl:=par.Length; // для контекстного поиска
Seek(gf,0);
var i:=1;
while not Eof(gf) do begin
Read(gf,Lib);
if Copy(Lib.City,1,nl)=par then begin
BookWrite(i,Lib); Exit
end
else Inc(i)
end;
Writeln('Поиск по городку ',par,' неуспешен')
end;
else Writeln('Неверная строчка поиска')
end
end;
const LibName='MyLib.lib';
begin
var MyBook:LibBook;
gf:=Create(LibName);
Reset(gf,LibName);
With MyBook do begin
Book:='1-ый учебник';
Author:='1-ый создатель';
Publisher:='Издательство 1';
PubYear:=2010;;
City:='Город 1'
end;
Insert(MyBook);
With MyBook do begin
Book:='2-ой учебник';
Author:='2-ой создатель';
Publisher:='Издательство 2';
PubYear:=2012;;
City:='Город 2'
end;
Insert(MyBook);
With MyBook do begin
Book:='3-ий учебник';
Author:='3-ий автор';
Publisher:='Издательство 3';
PubYear:=2006;;
City:='Город 3'
end;
Insert(MyBook);
View;
Delete(2);
View;
Find('0 3');
Find('1 Перв');
Find('2 Тре');
Find('3 Издательство 2');
Find('4 2006');
gf.Close
end.
, оставишь ответ?
Похожие вопросы
-
Вопросы ответы
Новое
NEW
Статьи
Информатика
Статьи
Последние вопросы
"Три толстяка" Называли эту площадь Площадью Звезды последующей причине.
Русский язык.
на одной грядке коротышки посадили 3 ряда морковок по 8 штук
Разные вопросы.
эссе на тему какое образование дается в каждой семье
Қазақ тiлi.
Put the verb in brackets into the Present Indefinite.
1The Volga ,
Английский язык.
Сколько стоит коктейль молочный? Точную цену надо?
Математика.
Составить рассказ Из чего складывался культ монарха помазанника Божьего?
История.
задание экономиоти
Рассмотри ситуацию: человек живёт на Крайнем Се-вере. С помощью каких
Экономика.
Человек живет на Крайнем Севере. С помощью каких благ удовлетворяются потребности
Экономика.
там лежат три яйца.у дома рос клен.Это гнездо сойки.на клёне гнездо
Русский язык.
Тыныштық күйіндегі карусель 35 с-та 3,0 рад/с бұрыштық жылдамдықпен үдей қозғалады.
Разные вопросы.
Облако тегов