Линейный связанный список. Создание базы данных для отдела кадров

Страницы работы

Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.

Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.

Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.

Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.

Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.

Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.

Содержание работы

`

Балтийский Государственный

Технический Университет

«ВоенМех»

имени Д.Ф. Устинова

Отчет

к лабораторной работе по информатике №5

На тему

“Линейный связанный список”

Отчет выполнил студент

Факультета «И»

Суханов Александр

Группа И433

Санкт-Петербург 2004

Лабораторная работа по информатике №5

Тема: Линейный связанный список

Цель: Ознакомиться с динамической памятью и структурой линейный список. Научиться создавать и обрабатывать линейные связанные списки.

Исходная задача: Создать базу данных для отдела кадров. Поля записи: Ф.И.О, год рождения, адрес, телефон, факультет, номер группы. В программе должны быть предусмотрены следующие функции:

  1. Загрузка из файла
  2. Ввод данных
  3. Вывод данных обо всех сотрудниках (ФИО, Факультет, Группа, Телефон)
  4. Поиск
  5. Изменение данных
  6. Удаление записи
  7. Сохранение в файл

Структуры данных:

Тип 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.  Добавление элемента в двусвязанный список

Temp:=Base,начало SpInsert,(Base=nil) or (Add^.Name<=Base^.Name),true,(Temp^.Name<Add^.Name) and 
(Temp^.Next<>Nil),Add^.Pred:=Nil
Add^.Next:=Base
Base^.Pred:=Add
Base:=Add,конец,false,true,Temp:=Temp^.Next,Add^.Name<=Temp^.Name,true,false,Add^.Next:=Temp
Add^.Pred:=Temp^.Pred
Temp^.Pred^.Next:=Add
Temp^.Pred:=Add,Temp^.Next:=Add
Add^.Next:=Nil
Add^.Pred:=Temp
 


2.  Поиск элемента в двусвязанном списке

начало SpSearch,not Found and Temp<>Nil,Found:=False,Temp^.Name=Search^.Name or
Temp^.BirthYear=Search^.BirthYear or
Temp^.Address=Search^.Address or
Temp^.Phone=Search^.Phone or
Temp^.Facultet=Search^.Facult,конец,true,false,true,Found:=True,Temp:=Temp^.Next 


3.  Удаление элемента в двусвязанном списке

начало SpDelete,Del^.Pred=Nil,true,false,Base:=Base^.Next;
Base^.Pred:=Nil;,Del^.Pred^.Next:=Del^.Next,Del^.Next=Nil,true,false,Del^.Pred^.Next:=Nil,Del^.Next^.Pred:=Del^.Pred,Dispose(Del),конец 


Листинг программы:

program lab5;

uses Structur, Menu, Work;

begin

n:=0;

Mark(PMain);

New(BGTU);

BGTU:=Nil;

CallMenu;

Release(PMain);

end.

unit Structur;

Interface

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;

Implementation

end.

unit Menu;

Interface

procedure PrintMainFraime(PozX, PozY, Width, Height: Integer);

procedure PrintMainMenu(Active: Integer);

procedure CallMenu;

Implementation

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

Похожие материалы

Информация о работе

Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.

Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.

Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.

Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.

Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.

Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.