Балтийский государственный технический университет «ВОЕНМЕХ» им. Д. Ф. Устинова
Кафедра информационных систем и технологий
Лабораторная работа №3
«Массив записей в динамической памяти»
Преподаватель: Козлов В.Р.
Выполнил: Боровкова К.О.
Группа: И-351
Санкт-Петербург
2006 год.
Задание:
Разработать модуль, определяющий в массиве записей с полями: номер аптеки, наименование лекарства, шифр лекарства, страна-производитель, количество, стоимость совпадение с отдельно введенным «материалом» и выводящий данные о таких элементах массива. Поиск и удаление.
Текст программы
Lab_3.pas
program lab_3; {sozdaet bazu dannih dlya apteki}
uses crt,in_out,job,global;
begin
clrscr;
assign(f1,'table.txt');
new(a);
while true do begin
writeln;
writeln('1.Просмотр базы');
writeln('2.Добавление информации');
writeln('3.Поиск');
writeln('4.Удаление информации');
writeln('5.Выход');
readln(key);
clrscr;
case key of
'1': begin
vivod(a,n);
readln;
clrscr; end;
'2': begin
vvod(a,n);
clrscr; end;
'3': begin
poisk(a,n);
readln;
clrscr; end;
'4': begin
del(a,n);
readln;
clrscr; end;
'5': halt;
end;
end;
dispose(a);
end.
Global.pas
unit global;
interface
uses crt;
type zap=record
num:string[3];
lek:string[14];
shifr:string[5];
land:string[11];
kol:string[5];
price:string[5];
end;
mas=array[1..20] of zap;
ptr=^mas;
var
key:char;
ok:boolean;
a:ptr;
n:byte;
implementation
begin
a:=nil;
end.
In_Out.pas
unit in_out;
interface
uses crt,global;
procedure vvod(var a:ptr ;var n:byte);
procedure vivod(a:ptr ;n:byte);
var f1:text;
implementation
procedure vvod;
var k:char;
begin
repeat
n:=n+1;
with a^[n] do begin
clrscr;
writeln;
writeln('введите номер аптеки');
readln(num);
writeln('введите название лекарства');
readln(lek);
writeln('введите шифр');
readln(shifr);
writeln('введите страну-производитель');
readln(land);
writeln('введите кол-во');
readln(kol);
writeln('введите стоимость');
readln(price);
end;
writeln('ещё одна запись?y/n');
readln(k);
until k='n';
end;
procedure vivod;
var i:byte;
z:zap;
begin
writeln;
{shapka}
if n=0 then
writeln('База данных пуста')
else begin
rewrite(f1);
write('╔═══════╦══════════════╦═════════╦══════════════════════╦════════╦═══════════╗');
write(f1,'╔═══════╦══════════════╦═════════╦══════════════════════╦════════╦═══════════╗');
writeln;
writeln(f1);
write('║ Номер ║ Наименование ║ Шифр ║ Страна-производитель ║ Кол-во ║ Стоимость ║');
writeln;
write('║аптеки ║ лекарства ║лекарства║ ║ ║ ║');
write(f1,'║ Номер ║ Наименование ║ Шифр ║ Страна-производитель ║ Кол-во ║ Стоимость ║');
writeln(f1);
write(f1,'║аптеки ║ лекарства ║лекарства║ ║ ║ ║');
for i:=1 to n do begin
if i mod 9=0 then begin
writeln;
write('╚═══════╩══════════════╩═════════╩══════════════════════╩════════╩═══════════╝');
writeln;
writeln('Нажмите любую клавишу для продолжения':40);
readln;
clrscr;
write('╔═══════╦══════════════╦═════════╦══════════════════════╦════════╦═══════════╗');
writeln;
write('║ Номер ║ Наименование ║ Шифр ║ Страна-производитель ║ Кол-во ║ Стоимость ║');
writeln;
write('║аптеки ║ лекарства ║лекарства║ ║ ║ ║');
end;
writeln;
writeln(f1);
write('╠═══════╬══════════════╬═════════╬══════════════════════╬════════╬═══════════╣');
write(f1,'╠═══════╬══════════════╬═════════╬══════════════════════╬════════╬═══════════╣');
writeln;
writeln(f1);
with a^[i] do begin
write('║');write(num:4); write('║':4); write(lek:9); write('║':6);
write(shifr:6);write('║':4); write(land:21); write('║':2); write(kol:6); write('║':3);
write(price:8); write('║':4);
write(f1,'║');write(f1,num:4); write(f1,'║':4); write(f1,lek:9); write(f1,'║':6);
write(f1,shifr:6);write(f1,'║':4); write(f1,land:21); write(f1,'║':2); write(f1,kol:6); write(f1,'║':3);
write(f1,price:8); write(f1,'║':4);
end;
end;
writeln;
writeln(f1);
write('╚═══════╩══════════════╩═════════╩══════════════════════╩════════╩═══════════╝');
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.