МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ ХАРЧОВИХ ТЕХНОЛОГІЙ
Кафедра інформаційних систем
Домашня робота
на тему:
«Розроблення інформаційно-довідкової системи»
Виконав:
студент групи АКС-3-5
Максимчук Андрій
Київ 2011
Завдання :
Розробити алгоритм та програму згідно варіанту - «книжковий магазин» , яка використовує типований файл записів для предметної облаті. Полі запису – назва книги, автор книги, напрям книги, ціна книги, рік видання. Знайти : книгу по назві книги, за автором, книгу по тематиці, по ціні. Забезпечити реалізацію трьох довідок з виведенням їх на екран.
Текст програми :
program biblio;
uses crt;
type lib=record
book_n:string;
book_a:string;
book_p:real;
book_y:integer;
book_v:string;
end;
{record}
f1=file of lib;
var f:f1;
user_case:byte;
{____________________________________________}
procedure Fill (var fz:f1);
var y_n:char;
el:lib;
i,k,nom:integer;
BEGIN
assign(fz,'file1.txt');
reset(fz);
if ioresult <>0 then
begin
rewrite(fz);
writeln('File created');
end;
writeln ('File is opening');
writeln('jaksho vi bajaete stvoriti novij fajl, natisnit (1)');
writeln('jaksho vi zminiti dani natisnit (2)');
writeln('nerobiti nichogo (0)');
readln(y_n);
if y_n='1' then
begin
seek(fz,filesize(fz));
writeln('budlaska vvedit kilkist knig, dlia dozapisu : ');
readln(k);
for i:=1 to k do
begin
with el do
begin
clrscr;
write('vedit nazvu knigi : ');
readln(book_n); clrscr;
write('vedit avtora knigi : ');
readln(book_a); clrscr;
writeln('vedit napriam knigi : ');
writeln('naukova - n ');
writeln('hudojnia - h ');
writeln('gumanitarna - g ');
writeln('tehnichna - t ');
writeln('specialna - s ');
writeln('metodichna - m ');
readln(book_v); clrscr;
write('vedit cinu knigi : ');
readln(book_p); clrscr;
writeln('vvedit rik vidanija :');
readln(book_y);
end;
write(fz,el);
end; end
else
if y_n='2' then
begin
writeln('vvedit nomer knigi glja provedenna zmin\zapisu');
readln(nom);
seek(fz,nom-1);
with el do
begin clrscr;
write('vedit nazvu knigi : ');
readln(book_n);
clrscr;
write('vedit avtora knigi : ');
readln(book_a);
clrscr;
writeln('vedit napriam knigi : ');
writeln('naukova - n ');
writeln('hudojnia - h ');
writeln('gumanitarna - g ');
writeln('tehnichna - t ');
writeln('specialna - s ');
writeln('metodichna - m ');
readln(book_v); clrscr;
write('vedit cinu knigi : ');
readln(book_p); clrscr;
writeln('vvedit rik vidanija :');
readln(book_y);
end;
write(fz,el);
end;
End;
{____________________________________________}
procedure Tabl;
begin
writeln('|------------|-----------|-----------|------------|------------|');
writeln('| Nazva | AVTOR | CINA | NAPRIJAM | Rik |');
writeln('|---------|----------|-----------|-------------|-------------|');
end;
{____________________________________________}
procedure Rfail(var fz:f1);
var el:lib;
Begin
tabl;
seek(fz,0);
while not eof(fz) do
begin
read(fz,el);
with el do
writeln('',book_n:14,'',book_a:7,'',book_p:4:2,'',book_v:1,'',book_y:5,' ');
writeln('|__________|__________|____________|_____________|______________|');
end; end;
{____________________________________________}
procedure d1(var fz:f1);
var el:lib;
net:integer;
name:string;
Begin
net:=0;
writeln('Vvedit nazvu knigi dlia poshuku :');
readln(name);
writeln('Knigi po zaprosu :');
writeln;
tabl;
seek(fz,0);
while not eof(fz) do
begin
read(fz,el);
if (el.book_n=name) then
begin
with el do
writeln('',book_n:14,'',book_a:7,'',book_p:4:2,'',book_v:1,'',book_y:5,' ');
writeln('|__________|__________|____________|_____________|______________|');
net:=net+1;
end; end;
if net=0 then
begin
writeln(' VIBACHTE PO DANOMU ZAPITU NICHOGO NEZNAJDENO! ');
writeln('|_______________|______________|______________|_______________|______________|');
end; End;
{____________________________________________}
procedure d2(var fz:f1);
var el:lib;
net:integer;
prise:real;
Begin
net:=0;
writeln('Vvedit cinu knigi dlia poshuku :');
readln(prise);
writeln('Knigi po zaprosu :');
writeln;
tabl;
seek(fz,0);
while not eof(fz) do
begin
read(fz,el);
if (el.book_p=prise) then
begin
with el do
writeln('',book_n:14,'',book_a:7,'',book_p:4:2,'',book_v:1,'',book_y:5,' ');
writeln('|__________|__________|____________|_____________|______________|');
net:=net+1;
end; end;
if net=0 then
begin
writeln(' VIBACHTE PO DANOMU ZAPITU NICHOGO NEZNAJDENO! ');
writeln('|________|_________|___________|____________|______________|');
end;
end;
{____________________________________________}
procedure d3(var fz:f1);
var el:lib;
author:string;
net:integer;
Begin
net:=0;
writeln('vvedit imja avtora dlija poshuku :');
readln(author);
writeln('Knigi po zaprosu :');
writeln;
tabl;
seek(fz,0);
while not eof (fz) do
begin
read(fz,el);
if (el.book_a=author) then
begin
with el do
writeln('',book_n:14,'',book_a:7,'',book_p:4:2,'',book_v:1,'',book_y:5,' ');
writeln('|__________|__________|____________|_____________|______________|');
net:=net+1;
end; end;
if net=0 then
begin
writeln(' VIBACHTE PO DANOMU ZAPITU NICHOGO NEZNAJDENO! ');
writeln('|________|_________|___________|____________|______________|');
end; end;
{____________________________________________}
procedure d4(var fz:f1);
var el:lib;
tip:string;
net:integer;
Begin
net:=0;
writeln('vvedit napriam iz podanogo spiska:');
writeln('naukova - n ');
writeln('hudojnia - h ');
writeln('gumanitarna - g ');
writeln('tehnichna - t ');
writeln('specialna - s ');
writeln('metodichna - m ');
readln(tip);
writeln('Knigi po zaprosu :');
writeln;
tabl;
seek(fz,0);
while not eof (fz) do
begin
read(fz,el);
if (el.book_v=tip) then
begin
with el do
writeln('',book_n:14,'',book_a:7,'',book_p:4:2,'',book_v:1,'',book_y:5,' ');
writeln('|__________|__________|____________|_____________|______________|');
net:=net+1;
end; end;
if net=0 then
begin
writeln(' VIBACHTE PO DANOMU ZAPITU NICHOGO NEZNAJDENO! ');
writeln('|________|_________|___________|____________|______________|');
end;end;
{____________________________________________}
BEGIN
clrscr;
Fill(f);
repeat clrscr;
writeln('BUDLASKA VIBERIT ODIN IZ PUNKTIV');
writeln('Vedit cifru i natisnit <Enter>');
writeln;
writeln('1 - menu 1');
writeln('2 - vivod vsih zapisiv');
writeln('3 - poshuk po nazvi knigi');
writeln('4 - poshuk po cini');
writeln('5 - poshuk po avtoru');
writeln('6 - poshuk po tipu');
writeln('7 - Exit');
readln(user_case);
case user_case of
1: begin
clrscr;
Fill(f);
end;
2: begin
clrscr;
Rfail(f);
end;
3: begin clrscr;
d1(f);
end;
4: begin clrscr;
d2(f);
end;
5: begin clrscr;
d3(f);
end;
6: begin clrscr;
d4(f);
end;
7: halt;
end;{case}
writeln;readln;
until user_case=7;
readln;
End.
Блок-схема процедури fill :
Блок-схема процедури Tabl :
Блок-схема процедури Rfajl :
Блок-схема процедури d1:
Мал.1 – діалогове вікно процедури d1
Мал.2 результуюче вікно процедури d1
На прикладі процедури d1 зрозуміло як працюють інші процедури такі як d2, d3,d4
Блок-схема процедури d2 :
Блок-схема процедури d3 :
Мал.3 Результат роботи процедури d3
Блок-схема процедури d4 :
У процедурі d4 дається вибір констант які фігурують для введення даних по типу літератури. Це своєрідне скорочення для лекшої робити користувача з програмою.
Мал. 4 діалогове вікно процедури d4
Блок-схема програ
Мал.5 початкове вікно програми, процедура Fill
Мал.6 Результат роботи самої програми
Висновок :
Домашня робота допомогла мені закріпити і поліпшити свої навички роботи в програмному середовищі Тurbo Рascal. Я вважаю що для мене було дуже корисно виконання домашньої роботи тому що, в ході розробки виникло багато ідей які я встиг реалізувати в інформаційно-довідковій системі.