Работа с записями

 

Министерство науки и образования Республики Казахстан

Карагандинский государственный технический университет

Кафедра: ВТиПО












Лабораторная работа № 1

По дисциплине: «Структуры и методы обработки данных»

Тема: «Работа с записями»











Караганда 2013


Лабораторная работа № 1: «Работа с записями»

Цель работы: Использование на практике механизма работы с структурами данных и их компонентами.

Постановка задачи:

Разработать структуру записи. Предусмотреть наличие ключевого поля.

Составить не менее 20 записей по разработанной структуре.

Упорядочить записи по значению ключевого поля.

Сохранить созданное в виде файла на внешнем носителе.

Описание метода реализации:

При открытии программы создается файл базы данных, в которую будут записываться записи. База рассчитана на 20 записей. При нажатии на кнопку «Добавить» происходит считывание всех полей записи и запись записи в базу данных. Все поля ввода очищаются и затем происходит считывание базы данных. Записи находящиеся в ней переносятся в таблицу. Каждой колонке таблицы соответствует одно поле записи. Колонки в таблице сортируются по ключевому полю. Сортировка числовых данных происходит по алгоритму пузырьковой сортировки. Сортировка строковых данных происходит по схожему алгоритму. Позиция первых букв записей сравниваются друг с другом и ставятся в зависимости от того чья позиция меньше или больше.

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


unit Unit1;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, ExtCtrls, Grids;= class(TForm): TLabeledEdit;: TLabeledEdit;: TLabeledEdit;: TLabeledEdit;: TButton;: TButton;: TStringGrid;: TButton;: TButton;: TButton;: TButton;: TButton;: TButton;: TButton;FormCreate(Sender: TObject);Button3Click(Sender: TObject);Button1Click(Sender: TObject);Button2Click(Sender: TObject);Button4Click(Sender: TObject);Button5Click(Sender: TObject);Button9Click(Sender: TObject);Button6Click(Sender: TObject);Button7Click(Sender: TObject);Button8Click(Sender: TObject);Actions;Vivod;Sortirovka;

{ Private declarations }

{ Public declarations };=record:integer;:string[20];:string[20];:string[10];:integer;;: TForm1;:file of Students;:array [1..20] of Students;,k,P,l,PNumber:integer;,rod1,rod2,rod3,rod4:boolean;:string;,N:array of integer; // массив оценок, номеров,F,G:array of string; // массив имен, фамилий, групп,PSurName,PGroup:string; //промежуточное значение для имен:boolean;

{$R *.dfm}TForm1.FormCreate(Sender: TObject);

var: word; // ответ пользователя

rod0:=false;:=false;:=false;:=false;:=false;:='АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя';(DB, 'd:\Students.db');

{$I-}(DB); // открыть файл

Seek(DB, FileSize(DB)); // указатель записи в конец файла

{$I+}IOResult = 0button1.enabled := TRUE // теперь кнопка Добавить доступна

else:= MessageDlg('Файл базы данных не найден.' +

'Создать новую БД?', mtInformation, [mbYes, mbNo], 0);resp = mrYes then

{$I-}(DB);

{$I+}IOResult = 0button1.enabled := TRUEShowMessage('Ошибка создания файла БД.');;;;TForm1.Button3Click(Sender: TObject);.Close;;TForm1.Button1Click(Sender: TObject);:=i+1;i=20 then begin ShowMessage('База заполнена! Добавление невозможно') end;[i].Number:=i;[i].Name:=LabeledEdit1.Text;[i].SurName:=LabeledEdit2.Text;[i].Group:=LabeledEdit3.Text;[i].Mark:=StrToInt(LabeledEdit4.Text);(DB, Student[i]);.Text:='';.Text:='';.Text:='';.Text:='';.Click();;TForm1.Button2Click(Sender: TObject);:integer;,b:integer;a:=0 to 20 dob:=0 to 3 do.Cells[b,a]:='';:=-1;(DB);not EOF(DB) do

begin:=m+1;(DB, Student[m]); // прочитать строку из файла

i:=Student[m].Number;.Cells[0,m]:=IntToStr(Student[m].Number);.Cells[1,m]:=Student[m].Name;.Cells[2,m]:=Student[m].SurName;.Cells[3,m]:=Student[m].Group;.Cells[4,m]:=IntToStr(Student[m].Mark);;;TForm1.Button4Click(Sender: TObject);:word;:= MessageDlg('Вы уверены?', mtInformation, [mbYes, mbNo], 0);ans = mrYes then

{$I-}(DB);

{$I+};;

//сортировка номераTForm1.Button5Click(Sender: TObject);;rod0=true then:=true;sort=true do begin:=false;k:=1 to l-1 do begin:=0; PNumber:=0;N[k-1]>N[k] then;;;;:=false;begin:=true;sort=true do begin:=false;k:=1 to l-1 do begin:=0; PNumber:=0;N[k-1]<N[k] then;;;;:=true;;;;

//сортировка оценокTForm1.Button9Click(Sender: TObject);;rod4=false then:=true;sort=true do begin:=false;k:=1 to l-1 do begin:=0; PNumber:=0;R[k-1]>R[k] then;;;;:=true;begin:=true;sort=true do begin:=false;k:=1 to l-1 do begin:=0; PNumber:=0;R[k-1]<R[k] then;;;;:=false;;;;

// сортировка именTForm1.Button6Click(Sender: TObject);;rod1=false then:=true;sort=true do begin:=false;k:=1 to l-1 do begin:=0; PNumber:=0;H[k-1]>H[k] then;;;;:=true;begin:=true;sort=true do begin:=false;k:=1 to l-1 do begin:=0; PNumber:=0;H[k-1]<H[k] then;;;;:=false;;;;

//сортировка фамилийTForm1.Button7Click(Sender: TObject);;rod2=false then:=true;sort=true do begin:=false;k:=1 to l-1 do begin:=0; PNumber:=0;F[k-1]>F[k] then;;;;:=true;begin:=true;sort=true do begin:=false;k:=1 to l-1 do begin:=0; PNumber:=0;F[k-1]<F[k] then;;;;:=false;;;;

//сортировка группTForm1.Button8Click(Sender: TObject);;rod3=false then:=true;sort=true do begin:=false;k:=1 to l-1 do begin:=0; PNumber:=0;G[k-1]>G[k] then;;;;:=true;begin:=true;sort=true do begin:=false;k:=1 to l-1 do begin:=0; PNumber:=0;G[k-1]<G[k] then;;;;:=false;;;;TForm1.Actions;:=0;k:=0 to 19 do beginStringGrid1.Cells[0,k]<>'' then l:=l+1;;(R, l);(N, l);(H, l);(F, l);(G, l);k:=0 to l-1 do begin[k]:=StrToInt(StringGrid1.Cells[4,k]);[k]:=StrToInt(StringGrid1.Cells[0,k]);[k]:=(StringGrid1.Cells[1,k]);[k]:=(StringGrid1.Cells[2,k]);[k]:=(StringGrid1.Cells[3,k]);;;TForm1.Vivod;k:=0 to l-1 do begin.Cells[4,k]:=IntToStr(R[k]);.Cells[0,k]:=IntToStr(N[k]);.Cells[1,k]:=(H[k]);.Cells[2,k]:=(F[k]);.Cells[3,k]:=(G[k]);;TForm1.Sortirovka;

//оценки:=R[k-1];[k-1]:=R[k];[k]:=P;

//номера:=N[k-1];[k-1]:=N[k];[k]:=PNumber;

//фамилии:=H[k-1];[k-1]:=H[k];[k]:=PName;

//фамилии:=F[k-1];[k-1]:=F[k];[k]:=PSurname;

//группы:=G[k-1];[k-1]:=G[k];[k]:=PGroup;

sort:=true;;.

Результаты работа программы:


Рис. 1


Анализ полученных результатов:

Программа может выполнять следующие действия:

добавление записи «Студент» в базу данных и его 4 основные переменные: Имя, Фамилия, Группа и Оценка

Считывание базы данных из файла и отображение записей из базы в виде таблицы

Очищение базы данных от записей

Сортировка записей по ключевым полям. Числовые записи сортируются по возрастанию и убыванию. Строковые записи сортируются по алфавиту (от А до Я и наоборот)

Вывод: в ходе выполнения данной лабораторной работы были приобретены навыки работы со структурами данных, а именно с записями в среде Object Pascal. Была написана программа для работы с записями, хранящимися в базе данных, и сортировкой этих записей по ключевым полям.

Ответы на контрольные вопросы:

. Основные типы данных и их представление в памяти компьютера.

При обработке данных часто бывает необходимо собрать в одну коллекцию разнотипные данные. Для этого используются структурированные типы данных: записи - в Паскале, структуры - в Си. В Паскале записи отображаются в памяти так, что их компоненты располагаются последовательно. Каждая компонента обычно занимает целое число слов.Адрес какой-либо компоненты (поля) записи относительно начального адреса R называется смещением поля Kj. Оно вычисляется по формуле

= S1+S2+…+Si-1,


где Sj - размер j-й компоненты в словах.

Для массива Кi = (I-l)S, т.к. все длины одинаковы.Доступ к компонентам записи ограничен - можно пользоваться лишь фиксированными идентификаторами. Это ограничение позволяет узнать относительные адреса во время трансляции, что увеличивает эффективность доступа к записям.

. Понятие структуры. Логическая и физическая структуры. Структура - иерархически упорядоченная коллекция данных. Данные разных типов располагаются на определенных уровнях. Элементами записей могут быть:

скалярные данные;

массивы;

записи.

Различные составные типы могут комбинироваться различными способами. Физическая структура данных - это способ физического представления данных в памяти компьютера. Логическая или абстрактная структура - это рассмотрение структуры данных без учета его представления в машинной памяти.

. Запись как структура данных. В Паскале составной структурированный тип - запись - определяется описанием типа.


TYPE Т = RECORD: T1;

S2 : T2;

. . . . .:TN;


Ограничений на типы полей в записи нет. Обращение к элементам записи осуществляется с помощью составных имен, которые являются селекторами записи. Селектор состоит из имени записи и имен полей (подзаписей), однозначно определяющих элементарную компоненту записи.

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


WITH R DO S,


где WITH, DO - служебные слова;- список имен записи (через запятую);- любой оператор Паскаля.

Смысл: внутри оператора S имена полей записи можно использовать без префикса (имени записи и, возможно, имен старших подзаписей). Считается, что все они ссылаются на переменную R.

. Записи с вариантами. На практике часто оказывается удобным рассматривать два типа как варианты одного и того же типа. Например, в геометрии можно использовать декартовы или полярные координаты точки на плоскости. Эти координаты можно считать типом, объединяющим два варианта записи, компонентами которой являются:

две длины;

длина и угол.

Для того, чтобы определить, какой вариант в данный момент принят, вводится третья компонента. Она называется дескриптором типа или полем признака. Например,

COORD = RECORD

CASE KIND : (DEC, POL) OF: (X, Y : REAL);: (R, FI: REAL);


Здесь имя поля признака - KIND, а имена координат либо Х и Y в случае DEC, либо R и FI в случае POL.

Множество значений типа COORD есть объединение двух типов:


T1=(X,Y: REAL)

Т2= (R, FI: REAL),


а его кардинальное число равно сумме кардинальных чисел T1 и Т2.

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


TYPE Т = SET OF T0,


где Т0 - базовый тип элементов множества. Базовым типом может быть только перечислимый или интервальный.Значениями переменной х типа Т являются множества элементов типа Т0. Они составляют множества всех подмножеств Т0. Такое множество называется множеством-степенью. Т.е. тип Т - это множество-степень своего базового типа Т0

. Операции над множествами. Операции над множествами - операции теории множеств.

Присваивание: CH := [12]; D:= [SU, FR];

Объединение:

множество паскаль запись оператор

А = [1, 2, 3, 4, 5]

В = [2, 5, 6, 7, 8]

А+В=[1, 2, 3, 4, 5, 6, 7, 8]


Пересечение:


А * В = [2, 5]


Разность


А-В = [1, 3, 4]


Отношение


ПаскальМатематическая записьзначениеA=B(A = B)True falseA<>B(A ? B)A<=B(A ? B)A=>B(A ? B)x IN A(x ? A)


Министерство науки и образования Республики Казахстан Карагандинский государственный технический университет Кафедра: ВТиПО

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ