Работа с записями
Министерство науки и образования Республики Казахстан
Карагандинский государственный технический университет
Кафедра: ВТиПО
Лабораторная работа № 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 | Пользовательское соглашение
ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ