`
Балтийский Государственный
Технический Университет
«ВоенМех»
имени Д.Ф. Устинова
Отчет
к лабораторной работе по информатике №5
На тему
“Линейный связанный список”
Отчет выполнил студент
Факультета «И»
Суханов Александр
Группа И433
Санкт-Петербург 2004
Лабораторная работа по информатике №5
Тема: Линейный связанный список
Цель: Ознакомиться с динамической памятью и структурой линейный список. Научиться создавать и обрабатывать линейные связанные списки.
Исходная задача: Создать базу данных для отдела кадров. Поля записи: Ф.И.О, год рождения, адрес, телефон, факультет, номер группы. В программе должны быть предусмотрены следующие функции:
Структуры данных:
Тип Link – указатель на элемент списка
Тип Person – элемент списка – содержит данные об одном человеке.
BGTU – Указатель на начало списка
N – Кол-во записей
Модули раздельной трансляции:
Structur.pas – Содержит основные структуры данных, используемые в программе.
Menu.pas – Отвечает за функционирование главного меню программы.
Work.pas – Включает в себя основные процедуры программы.
Основные процедуры и функции:
procedure LoadData(var n: Integer; var BGTU: Link) - Первый пункт Меню
procedure InputData(var n: Integer; var BGTU: Link) - Второй пункт меню
procedure OutputData(n: Integer; var BGTU: Link) - Третий пункт меню
procedure FindData(n: Integer; BGTU: Link) - Четвертый пункт меню
procedure ChangeData(n: Integer; var BGTU: Link) - Пятый пункт меню
procedure DeleteData(var n: Integer; var BGTU: Link) - Шестой пункт меню
procedure SaveData(n: Integer; BGTU: Link) - Седьмой пункт меню
procedure About - Восьмой пункт меню
SafeRead (MaxLen, MinLen, Code) – Замена стандартной процедуры Readln
PrintMainFraime (PozX, PozY, Width, Height: Integer) – Рисует рамку
PrintMainMenu (Active: Integer) – Вывод пунктов меню Active – номер активного пункта
CallMenu – Начало работы с Меню
Блок-схема алгоритма:
1. Добавление элемента в двусвязанный список
2. Поиск элемента в двусвязанном списке
3. Удаление элемента в двусвязанном списке
Листинг программы:
program lab5;
uses Structur, Menu, Work;
begin
n:=0;
Mark(PMain);
New(BGTU);
BGTU:=Nil;
CallMenu;
Release(PMain);
end.
unit Structur;
const Color = 15;
MainBack = 1;
SelBack = 4;
type Link = ^Person;
Person = record
Name: String [20];
BirthYear: String[4];
Address: String[50];
Phone: String [20];
Facultet: String[1];
Group: String[3];
Next: Link;
Pred: Link;
end;
var BGTU: Link;
n: Integer;
PMain: Pointer;
end.
unit Menu;
procedure PrintMainFraime(PozX, PozY, Width, Height: Integer);
procedure PrintMainMenu(Active: Integer);
procedure CallMenu;
uses Crt, Structur, Work;
procedure PrintMainFraime(PozX, PozY, Width, Height: Integer);
var zicl: Integer;
begin
GotoXY(PozX, PozY);
Write('г');
for zicl:=1 to Width-2 do Write('=');
Write('¬');
for zicl:=1 to Height-2 do
begin
GotoXY(PozX, PozY+zicl); Write('¦');
GotoXY(PozX+Width-1,WhereY); Write('¦');
end;
GotoXY(PozX, PozY+Height-1);
Write('L');
for zicl:=1 to Width-2 do Write('=');
Write('-');
end;
procedure PrintMainMenu(Active: Integer);
const MenuItems: array [1..9] of string[39] = (
'[01] Загрузка данных из файла ',
'[02] Добавление записи ',
'[03] Вывод сведений о всех сотрудниках ',
'[04] Поиск ',
'[05] Изменение записи ',
'[06] Удаление записи ',
'[07] Сохранение в файл ',
'[08] О программе ',
'[09] Выход ');
var zicl: Integer;
begin
GotoXY(28, 1);
Writeln('Отдел кадров БГТУ "ВоенМех"');
TextBackGround(MainBack);
for zicl:=1 to 9 do
begin
GotoXY(4, zicl+3);
if zicl=Active then
begin
TextBackGround(SelBack);
Write(MenuItems[zicl]);
TextBackGround(MainBack);
end
else Write(MenuItems[zicl]);
end;
GotoXY(1, 25);
end;
procedure CallMenu;
var zicl, Active: Integer;
Quit: Boolean;
Ch: Char;
begin
TextColor(Color);
TextBackGround(MainBack);
ClrScr;
PrintMainFraime(2, 2, 78, 13);
PrintMainMenu(1);
Quit:=False;
Active:=1;
repeat
Ch:=ReadKey;
case Ord(Ch) of
27: Quit:=True;
80: begin Inc(Active); If Active=10 then Active:=1; PrintMainMenu(Active); end;
72: begin Dec(Active); If Active=0 then Active:=9; PrintMainMenu(Active); end;
13: begin
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.