Разработка приложения в среде визуального программирования Delphi "Формирование профильных классов по направлениям"

Реализация выбора в языках высокого уровня, использование сложных типов. Формат оператора выбора в языке Pascal. Изображение оператора варианта на блок-схеме. Понятие массива и способы их вводов. Описание компонентов приложения и программного кода.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 17.08.2013
Размер файла 585,6 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Курсовой проект по курсу

Системы программирования

на тему: "Разработка приложения в среде визуального программирования Delphi "Формирование профильных классов по направлениям"

Содержание

  • 1.Реализация выбора в языках высокого уровня, использование сложных типов
    • 1.1Оператор выбора
    • 1.2Составные (структурированные) типы
    • 1.3Понятие массива. Способы ввода массивов
  • 2.Разработка приложения
    • 2.1Постановка задачи
    • 2.2Описание компонентов приложения
    • 2.3Программный код
    • 2.4Результаты работы программы
  • Заключение
  • Список источников и используемой литературы
  • Введение
  • Данный курсовой проект был разработан в среде Delphi. Среди множества языков Pascal является наиболее универсальным и легко изучаемым языком. При этом его удобно использовать для создания сложных приложений c базами данных. Delphi прост в обучении при этом средства языка программирования Pascal позволяет использовать все современные возможности объектно-ориентированногопрограммирования.

Delphi - это среда разработки, в которой в качестве языка программирования используется язык ObjectPascal.

Основные конструкции языка четко выделяются в программе, что способствует хорошему восприятию написанного кода. Графический интерфейс Delphi отлично продуман, среда разработки предоставляет доступ только к тем участкам кода, с которыми необходимо работать, скрывая основную часть программы, которая создается автоматически самой средой разработки.

Задачей курсового проекта является изучение:

· Реализации выбора в языках высокого уровня;

· Использования сложных типов;

· Составных типов данных;

· Понятия массива и способами ввода массивов.

Целью курсового проекта является: разработка приложения для

работы с базой данных, позволяющего сортировать записи по необходимым параметрам, а также создание базы данных необходимой для этой цели.

Использованные средства. Программные: ОС Microsoft Windows 7, среду разработки Delphi 2009, СУБД MS Access. Аппаратные: ноутбук: Intel Core i3 M370 2,4 GHz, 3Gb ОЗУ, 300 Gb HDD.

1. Реализация выбора в языках высокого уровня, использование сложных типов

1.1 Оператор выбора

Оператор выбора (или оператор варианта) дает возможность выполнить одно из нескольких действий в зависимости от значения скалярного выражения или выражения ограниченного типа.

В языке Pascal в качестве оператора выбора применяется оператор case.

Формат оператора выбора:

case <селектор> of

<константа 1> : <оператор 1>;

...

<константа N> : <оператор N>

else

<оператор>

end;

Здесь <селектор> - это выражение любого порядкового типа; <константа> - постоянная величина того же типа, что и селектор, представляет собой различные значения, которые может иметь селектор варианта, называется меткой варианта. После каждой метки располагается оператор. Когда одно и то же действие необходимо выполнить для нескольких различных значений селектора варианта, эти значения можно записать в виде списка.

Выполнение оператора выбора происходит так:

вычисляется выражение-селектор;

затем в списках констант ищется такое значение, которое совпадает с полученным значением селектора;

далее исполняется оператор, помеченный данной константой. Если такой константы не найдено, то происходит переход к выполнению оператора, следующего после else.

Изображение оператора варианта на блок-схеме приведено на рисунке (рисунок 1).

язык выбор оператор программный

Рис. 1 Изображение оператора выбора на блок-схеме

Способы записи оператора case:

· Селектор целочисленного типа:

case I of

0 : Z := I + 10;

1 : Z := I + 100;

2 : Z := I + 1000;

end;

Селектор целочисленного типа предназначен для простого перечисления вариантов выбора по порядку.

· Селектор интервального типа:

case I of

1..10 : writeln('число ', I:4, ' в диапазоне 1 - 10');

11..20 : writeln('число ', I:4, ' в диапазоне 11 - 20');

21..30 : writeln('число ', I:4, ' в диапазоне 21 - 30')

else

writeln('число ', I:4, ' вне пределов контроля')

end;

Селектор интервального типа предназначен для выбора варианта при условии, что значение селектора входит в один из диапазонов. Если значение селектора не попадает не в один из перечисленных диапазонов, то выполняется выражение стоящее после оператора else.

· Селектор перечисляемого пользовательского типа:

var Seson: (Winter, Spring, Summer, Autumn);

begin

case Season of

Winter: writeln('Зима');

Spring: writeln('Весна');

Summer: writeln('Лето');

Autumn: writeln('Осень')

end;

end.

При использовании оператора выбора CASE должны выполняться следующие правила:

1. Значения выражения, записанного после служебного слова CASE, должны принадлежать дискретному типу; для целого типа они должны лежать в диапазоне integer.

2. Все константы, предшествующие операторам альтернатив, должны иметь тип, совместимый с типом выражения.

3. Все константы в альтернативах должны быть уникальны в пределах оператора варианта (т.е. повторение констант в альтернативах не допускается); диапазоны не должны пересекаться и не должны содержать констант, указанных в данной или других альтернативах [1].

1.2 Составные (структурированные) типы

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

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

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

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

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

· Общая длина строки, которая характеризует размер памяти, выделяемый строке при описании;

· Текущая длина строки (всегда меньше или равна общей длине), которая показывает количество смысловых символов строки в каждый конкретный момент времени[2].

Строка в Паскале - упорядоченная последовательность символов. Количество символов в строке называется ее длиной. Длина строки в Паскале может лежать в диапазоне от 0 до 255. Каждый символ строковой величины занимает 1 байт памяти и имеет числовой код в соответствии с таблицей кодов ASCII.

Для описания строковых переменных в Паскале существует предопределенный тип string.

В общем виде описание строковой переменной будет выглядеть следующим образом:

Var <имя_переменной>: string[<максимальная длина строки>]

Например:

Var s1: string[10];

s2: string[20];

smax: string

В приведенном выше описании строковая переменная s1 может содержать не более 10 символов, переменная s2 - не более 20 символов. Если же при описании строки ее максимальная длина не указывается, то по умолчанию принимается максимально допустимая длина, равная 255 символам (переменная smax) [3].

Действия со строками в Паскале

· Операция слияния (сцепления, конкатенации) применяется для соединения нескольких строк в одну, обозначается знаком "+". Операция слияния применима для любых строковых выражений, как констант, так и переменных.

· Операции отношения позволяют сравнивать строки на отношение равенства (=), неравенства (<>), больше (>), меньше (<), больше или равно (>=), меньше или равно (<=). В результате сравнения двух строк получается логическое значение (true или false). Сравнение строк производится слева направо посимвольно до первого несовпадающего символа, большей считается та строка, в которой первый несовпадающий символ имеет больший код в таблице кодировки. Если строки имеют различную длину, но в общей части символы совпадают, считается, что короткая строка меньше. Строки равны, если они имеют равную длину и соответствующие символы совпадают.

Стандартные функции для работы со строками в Паскале

· Copy (S, poz, n) выделяет из строки S, начиная с позиции poz, подстроку из n символов. Здесь S - любое строковое выражение, poz, n - целочисленные выражения.

· Concat (s1, s2,...,sn) выполняет слияние строк s1, s2,...,sn в одну строку.

· Length(S) определяет текущую длину строкового выражения S. Результат - значение целого типа.

· Pos(subS, S) определяет позицию первого вхождения подстроки subS в строку S. Результат - целое число, равное номеру позиции, где находится первый символ искомой подстроки. Если вхождение подстроки не обнаружено, то результат функции будет равен 0.

· Delete (S, poz, n) удаляет из строки S, начиная с позиции poz, подстроку из n символов. Здесь S - строковая переменная (в данном случае нельзя записать никакое другое строковое выражение, кроме имени строковой переменной, т.к. только с именем переменной связана область памяти, куда будет помещен результат выполнения процедуры); poz, n - любые целочисленные выражения.

· Insert(subS, S, poz) вставляет в строку S, начиная с позиции poz, подстроку subS. Здесь subS - любое строковое выражение, S - строковая переменная (именно ей будет присвоен результат выполнения процедуры), poz - целочисленное выражение.

В структурных типах выделяют регулярный тип (массивы - array). Название регулярный тип (или ряды) массивы получили за то, что в них объединены однотипные элементы, упорядоченные (урегулированные) по индексам, определяющим положение каждого элемента в массиве.

Описать одномерный массив можно несколькими способами:

В разделе переменных

Var имя массива : Array [тип индекса] of тип элементов ;

В разделе описания типов

Type имя типа = Array [тип индекса] of тип элементов ;

Var имя массива : имя типа ;

В разделе констант

Const имя массива : Array [тип индекса] of тип элементов = (список элементов); [тип индекса] of тип элементов [4].

Множество (set) - это структурированный тип данных, представляющий собой набор взаимосвязанных по какому-либо признаку или группе признаков объектов, которые можно рассматривать как единое целое. Каждый объект во множестве называется элементом множества. Все элементы множества должны принадлежать одному из скалярных типов, кроме вещественного.

Переменные множественного типа описываются так:

Type symbol= set of char; {описан множественный тип symbol из букв}

Var letter, digits, sign: symbol; {описаны три переменные множественного типа}

Для того чтобы придать переменной множественного типа значение, используют конструктор множества - перечисление элементов множества через запятую в квадратных скобках. Например, sign:= [`+', `-`];

Конструктор множества может содержать диапазон значений базового типа. Тогда во множества включаются все элементы диапазона. Например,

digits:=[`0'..`9'];

letter:= [`a' .. `z'];

Обе формы конструирования множеств могут сочетаться. Например,

letter:= [`a' .. `z', `A' .. `Z'];

Конструктор вида [] обозначает пустые множества.

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

Const YesOrNo= [`Y', `y', `N', `n'];

Можно множественный тип определить как типизированную константу:

Const digits: set of char= [`0' .. `9'];

При описании множественного тип как констант допускается использование знака "+" (слияние множеств). Например,

Const Yes=[`Y',`y'];No=[`N',`n'];

YesOrNo= Yes+ No;[5]

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

Объединением двух множеств A и B называется множество, состоящее из элементов, входящих хотя бы в одно из множеств A или B. Знак операции объединения в Паскале "+" (рисунок 2).

Рис. 2 Объединение множеств

Пересечением двух множеств A и B называется множество, состоящее из элементов, одновременно входящих во множество A и во множество B.

Знак операции пересечения в Паскале "*" (рисунок 3).

Рис. 3 Пересечение множеств

Разностью двух множеств A и B называется множество, состоящее из элементов множества A, не входящих во множество B (рисунок 4).

Рис. 4 Разность множеств

Операция вхождения. Это операция, устанавливающая связь между множеством и скалярной величиной, тип которой совпадает с базовым типом множества. Если x -- такая скалярная величина, а M -- множество, то операция вхождения записывается так: x in M.

Результат -- логическая величина true, если значение x входит в множество M, и false -- в противном случае.

Например, 4 in [3, 4, 7, 9] -- true, 5 in [3, 4, 7, 9] -- false [6].

Запись - это структурированный комбинированный тип данных, состоящий из фиксированного числа компонент (полей) разного типа. Поля записи могут быть различного типа. Чтобы можно было ссылаться на тот или иной компонент записи, поля именуются.

Объявление типа записи выглядит следующим образом:

TYPE <имя типа> = RECORD <список полей> END

Имя типа - идентификатор, список полей представляет собой последовательность разделов записи, между которыми ставится точка с запятой.

Каждый раздел записи состоит из одного или нескольких идентификаторов полей, отделяемых друг от друга запятыми. За идентификатором (идентификаторами) ставится двоеточие и описание типа поля (полей).

Пример :

TYPE

Adres = record

Gorod, Uliza : string[20];

dom, kvart : integer;

end;

var

a,b : Adres; [7]

Файловый тип данных или файл определяет упорядоченную совокупность произвольного числа однотипных компонент.?

При работе с файлами выполняются операции ввода - вывода.

Операция ввода означает перепись данных с внешнего устройства (из входного файла) в оперативную память ЭВМ, операция вывода - это пересылка данных из оперативной памяти на внешнее устройство (в выходной файл).

Файлы на внешних устройствах часто называют физическими файлами.

Их имена определяются операционной системой. В программах на языке

Паскаль имена файлов задаются с помощью строк.

Например, имя файла на диске может иметь вид:C:\ABC150\pr.txt.

Турбо Паскаль поддерживает три файловых типа:

· текстовые файлы;

· типизированные файлы;

· не типизированные файлы.

Доступ к файлу в программе происходит с помощью переменных файлового типа. Переменную файлового типа описывают одним из трех способов:

· file of тип - типизированный файл (указан тип компоненты);

· text - текстовый файл;

· file - не типизированный файл.

Примеры описания файловых переменных:

var

f1: file of char;

f2: file of integer;

f3: file;

t: text;

Стандартные процедуры и функции

Любые дисковые файлы становятся доступными программе после

связывания их с файловой переменной, объявленной в программе. Все операции в программе производятся только с помощью связанной с ним файловой переменной.

Assign(f, FileName) - связывает файловую переменную f с физическим файлом, полное имя которого задано в строке FileName.

Установленная связь будет действовать до конца работы программы, или до тех пор, пока не будет сделано переназначение. После связи файловой переменной с дисковым именем файла в программе нужно указать направление передачи данных (открыть файл). В зависимости от этого направления говорят о чтении из файла или записи в файл.

Reset(f) - открывает для чтения файл, с которым связана файловая переменная f. После успешного выполнения процедуры Reset файл готов к чтению из него первого элемента. Процедура завершается с сообщением об ошибке, если указанный файл не найден. Если f - типизированный файл, то процедурой reset он открывается для чтения и записи одновременно.

Rewrite(f) - открывает для записи файл, с которым связана файловая переменная f. После успешного выполнения этой процедуры файл готов к

записи в него первого элемента. Если указанный файл уже существовал, то все данные из него уничтожаются.

Close(f) - закрывает открытый до этого файл с файловой переменной f. Вызов процедуры Close необходим при завершении работы с файлом. Если по какой-то причине процедура Close не будет выполнена, файл все-же будет создан на внешнем устройстве, но содержимое последнего буфера в него не будет перенесено.

Rename(f, NewName) - позволяет переименовать физический файл на диске, связанный с файловой переменной f. Переименование возможно после закрытия файла [8].

1.3 Понятие массива. Способы ввода массивов

Массив - это упорядоченная последовательность однообразных данных, объединенных под одним именем.

Элементами массива могут быть данные любого типа, включая структурированные.

Тип элементов массива называется базовым. Особенностью языка Паскаль является то, что число элементов массива фиксируется при описании и в процессе выполнения программы не меняется.

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

Тип индекса определяет границы изменения значений индекса. Для описания массива предназначено словосочетание array of (массив из).

Одномерные массивы

Если за каждым элементом массива закреплен только один его порядковый номер, то такой массив называется линейным, или одномерным.

<имя массива>:= array [<количество элементов>] of <тип переменной>;

Каждый элемент массива в общем виде описывается как А[I], где

А-имя массива, I - номер или индекс массива (0<=I<=N, но практически употребляется 1<=I<=N) A[I] - значение элемента массива.

var i:integer;

a:array[1..10] of string[10];

begin

for i:=1 to 10 do

a[i]:=GetSubStr(Edit1.text,' ',i);

end;

Двумерным называется массив, элемент которого зависит от его местоположения в строке и в столбце. В общем виде элемент матрицы обозначается как A(I,J), где А -- имя массива, I -- индекс (номер) строки,

J -- индекс (номер) столбца.

Матрицу можно задать двумя способами:

<имя матрицы>: array [<количество строк>] of array [<количество столбцов>] of <тип переменной>;

<имя матрицы>: array [<количество строк >,<количество столбцов>] оf <тип переменной>].

Соотношение индексов в квадратной матрице

I=J элементы матрицы расположены на главной диагонали

I<J элементы матрицы расположены над главной диагональю

I>J элементы матрицы расположены под главной диагональю

I+J=N+I элементы матрицы расположены на побочной диагонали (N -- количество строк или столбцов в квадратной матрице)

I+J<N+I элементы матрицы расположены над побочной диагональю

I+J>N+I элементы матрицы расположены под побочной диагональю [9].

Рассмотрим процедуры, которые бы формировали одномерный массив двумяспособами:

1)случайнымобразом,

2)вводомэлементовсклавиатуры.

Предположим, что мы будем работать с массивом целых чисел. Пусть нам достаточно иметь максимальное количество элементов равное 50. Процедура принимает параметр по ссылке массив Massiv заданного типа и целую переменную n, отвечающую за количество заполняемых ячеек массива. Также нам нужна будет локальная переменная i, которая будет выполнять функции параметра цикла и использоваться для указания номера, определяющего местоположение элемента в массиве.

· Формирование одномерного массива случайным образом. Зададим значение каждого элемента результатом случайной функции Random(10). Заполнение массива зададим циклическим оператором for, в теле которого выполняется вычисление случайного числа функцией Random(10), после чего это значение присваивается очередному i-му элементумассива.

Type

mas=array [1..m] of integer; {массив из m целых чисел}

Procedure InsertMas1(Var massiv: mas; n:integer);

Var

i: integer;

Begin

Randomize;

for i:=1 to n do

massiv[i] := Random(10);

End;

· Формирование одномерного массива вводом элементов с клавиатуры.

Type

mas=array [1..m] of integer; {массив из m целых чисел}

ProcedureInsertMas2(Varmassiv:array;n:integer);

Var

i:integer;

Begin

fori:=1tondo

begin

write('Введите',i,'-ыйэлементмассива');

readln(massiv[i]);

end;

End;

Операции работы с двумерными массивами аналогичны операциям работы с одномерными массивами, нужно только не забывать о различиях между массивами. Обычно при работе с двумерными массивами используются вложенныециклы.

Очень часто значения элементов массива вводятся с клавиатуры. Этот способ задания информации слишком трудоемок при работе с массивами больших размеров. Для отладки широкого класса алгоритмов такой ввод информации должен быть заменен на формирование элементов массива случайным образом. Для этого используют встроенные средства Турбо Паскаля, процедуру Randomize и функцию Random. Вы уже сталкивались с этими средствами. Сегодня же наша задача создать процедуры различного ввода элементов в массив и процедуру вывода элементов на экран [11].

2. Разработка приложения

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

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

· гуманитарный,

· физико-математический,

· химико-биологический.

Для выполнения поставленной задачи необходимо было создать базу данных, содержащую список учащихся и оценки по нескольким предметам. База данных "Spisok" была создана с помощью СУБД MS Access 2010. Создана таблица "Soolers", имеющая структуру представленную на рисунке 5. Таблица содержит сведения об оценках учеников за определенный период времени по предметам: русский язык, литература, история, алгебра, геометрия, физика, биология, анатомия, химия.

Рис. 5 Структура таблицы.

Данные представленные в таблице "Sollers" на рисунке 6 содержат информацию об оценках учащихся.

Рис. 6 Таблица "Soolers"

Для разработки приложения была использована среда визуального программирования Delphi 2009.

2.2 Описание компонентов приложения

При создании приложения нами были использованы следующие стандартные компоненты, имеющиеся в среде Delphi 2009: TPageControl, TTabSheet, TDBGrid, TADOConnection, TADOTable, TDataSource, TADODataSet, TButton, TLabel, Tedit, TForm.

Компонент TPageControl был использован для создания многостраничного приложения, в свойствах этого компонента был изменен параметр Align, в нем было установлено значение alClient (занять всю клиентскую область приложения). В компоненте TPageControl было создано 4 вкладки TTabSheet1 - (Caption-Список с оценками), TTabSheet2 - ( Caption-Химико-биологический), TTabSheet3 - ( Caption-Физико-математический), TTabSheet4 - ( Caption-Гуманитарный).

Для работы с базой данных были использованы следующие компоненты:

1. TADOConnection1 - в нем были добавлены следующие

· параметры:

· Provider - Microsoft.ACE.OLEDB.12.0 - драйвер базы данных;

· Connection String - адрес и параметры подключения к БД;

· Login Prompt - False - отключение запроса имени пользователя и пароля при подключении к БД;

2. TADOTable1 - в нем были добавлены следующие параметры:

· Connected - True - активация соединения с БД;

· Connection - ADOConnection1- связь с компонентом ADOConnection1;

· Table Name - soolers - название таблицы в БД;

· Active - True - активация компонента TADOTable1;

3. TDataSource1 - компонент для связи TADOTable1 и TDBGrid1 в нем были добавлены следующие параметры:

TDataSet - TADOTable1 - установление связи с компонентом TADOTable1;

4. TDBGrid1 - компонент для вывода таблицы из БД - в нем были добавлены следующие параметры:

DataSource - DataSource1 - связь с компонентом DataSource1;

5. TADODataSet1- в нем были добавлены следующие параметры:

Connected - True - активация соединения с БД;

Connection - ADOConnection1- связь с компонентом ADOConnection1;

CommandText - SQL запрос - "Select Фамилия, Имя, Отчество, Биология, Анатомия, Химия from soolers where Химия='5' and Биология='5' and Анатомия='5' - вывод из таблицы soolers записей в которых значения оценок по химии, биологии и анатомии равны "5";"

Active - True - активация компонента ADOData Set1;

6. TDataSource2 - компонент для связи ADODataSet1 и DBGrid2 в нем были добавлены следующие параметры:

DataSet - ADODataSet1 - установление связи с компонентом ADODataSet1;

7. TDBGrid2 - компонент для вывода таблицы из БД - в нем были добавлены следующие параметры:

DataSource - DataSource2 - связь с компонентом DataSource2;

8. TADODataSet2- в нем были добавлены следующие параметры:

Connected - True - активация соединения с БД;

Connection - ADOConnection1- связь с компонентом ADOConnection1;

Command Text - SQL запрос - select Фамилия, Имя, Отчество, Алгебра, Геометрия, Физика from soolers where Алгебра='5' and Геометрия='5' and Физика='5'' - вывод из таблицы soolers записей в которых значения оценок по алгебре, геометрии и физике равны "5";

Active - True - активация компонента ADODataSet2;

9. TDataSource3 - компонент для связи ADODataSet2 и DBGrid3 в нем были добавлены следующие параметры:

DataSet - ADOData Set2 - установление связи с компонентом ADO Data Set2;

10. TDBGrid3 - компонент для вывода таблицы из БД - в нем были добавлены следующие параметры:

DataSource - DataSource3 - связь с компонентом DataSource3;

11. TADODataSet3- в нем были добавлены следующие параметры:

Connected - True - активация соединения с БД;

Connection - ADOConnection1- связь с компонентом ADOConnection1;

CommandText - SQL запрос - select Фамилия, Имя, Отчество, История, Русский язык, Литература from soolers where История='5' and Русский язык='5' and Литература='5' - вывод из таблицы soolers записей в которых значения оценок по русскому языку, литературе и истории равны "5";

Active - True - активация компонента ADODataset3;

12. TDataSource4 - компонент для связи ADODataset3 и DBGrid4 в нем были добавлены следующие параметры:

Dataset - ADODataset3 - установление связи с компонентом ADODataSet3;

13. TDBGrid4 - компонент для вывода таблицы из БД - в нем были добавлены следующие параметры:

DataSource - DataSource4 - связь с компонентом DataSource4.

Также в приложении использовались компоненты Button, Label и Edit:

1. TButton1 - кнопка добавления новой записи в БД - в нем были добавлены следующие параметры:

Caption - `Добавить новую запись' - надпись на кнопке;

Button1Click - событие нажатия кнопки (On Click);

2. TButton2 - кнопка удаления записи из БД - в нем были добавлены следующие параметры: Caption - `Удалить запись' - надпись на кнопке;

Button2Click - событие нажатия кнопки (On Click);

3. TLabel - надпись - в нем были добавлены следующие параметры:

Caption - содержание надписи;

4. TEdit - поле редактирования;

2.3 Программный код

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs,Unit3, Grids, DBGrids, ComCtrls, StdCtrls, ExtCtrls, DBCtrls, DB,

ADODB;

type

TForm1 = class(TForm)

PageControl1: TPageControl;

TabSheet1: TTabSheet;

TabSheet2: TTabSheet;

TabSheet3: TTabSheet;

DBGrid1: TDBGrid;

DBGrid3: TDBGrid;

TabSheet4: TTabSheet;

DBGrid4: TDBGrid;

DataSource1: TDataSource;

ADOConnection1: TADOConnection;

DataSource3: TDataSource;

ADODataSet3: TADODataSet;

DataSource4: TDataSource;

Button1: TButton;

ADOTable1: TADOTable;

Button2: TButton;

ADODataSet1: TADODataSet;

DBGrid2: TDBGrid;

DataSource2: TDataSource;

ADODataSet2: TADODataSet;

procedure PageControl1Change(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure TForm1.Button1 Click (Sender: TObject); // объявление процедуры;

begin // начало процедуры;

Form3:=form3.create (application); // создание формы (функция Create);

Form3.Caption:='Добавить запись'; // заголовок формы;

Form3.Show; // вывод новой формы;

end; // конец процедуры;

Процедура TForm1.Button1 Click является обработчиком события Button1Click результатом ее выполнения является открытие формы для ввода новой записи (Form3).

procedure TForm1.Button2Click(Sender: TObject); // объявление процедуры;

begin // начало процедуры;

form1.ADO Table1.Delete; // функция удаления записи из БД;

end; // конец процедуры;

Процедура TForm1.Button2 Click является обработчиком события Button2 Click, результатом ее выполнения является удаление записи из БД.

procedure TForm1.Page Control1 Change (Sender: TObject); // объявление процедуры;

begin // начало процедуры;

Form1.ADO Table1.Requery(); // обновление данных в ADO Table1;

Form1.ADO Data Set1.Requery();// обновление данных в Data Set1;

Form1.ADO Data Set2.Requery();// обновление данных в Data Set2;

Form1.ADO Data Set3.Requery();// обновление данных в Data Set3;

end; конец процедуры;

unit Unit3;

interface

uses

Windows, Messages, SysUtils, Variants ,Classes, Graphics, Controls, Forms,

Dialogs, ComCtrls, StdCtrls, ExtCtrls, DBCtrls, DB, ADODB;

type

TForm3 = class(TForm)

procedure FormShow(Sender: TObject);

procedure Button2click(Sender: TObject);

private

button2:Tbutton;

lb1:TLabel;

lb2:TLabel;

lb3:TLabel;

lb4:TLabel;

lb5:TLabel;

lb6:TLabel;

lb7:TLabel;

lb8:TLabel;

lb9:TLabel;

lb10:TLabel;

lb11:TLabel;

lb12:TLabel;

ed1:Tedit;

ed2:Tedit;

ed3:Tedit;

ed4:Tedit;

ed5:Tedit;

ed6:Tedit;

ed7:Tedit;

ed8:Tedit;

ed9:Tedit;

ed10:Tedit;

ed11:Tedit;

ed12:Tedit;

Процедура TForm1.Page Control1Change является обработчиком события Page Control1 Change, результатом ее выполнения является обновление донных в формах при переходе с одной формы на другую. Это необходимо для того, чтобы при изменении данных на одной вкладке эти изменения происходили и на других вкладках несущих в себе изменённые данные.

procedure TForm3.FormShow(Sender: TObject); // объявление процедуры;

begin // начало процедуры;

button2:=Tbutton.Create(form3);// создание кнопки button2;

button2.Parent := Form3; // место создания кнопки button2 (form3);

button2.Caption:='Добавить'; // добавление надписи на кнопке;

button2.OnClick:=button2 click; // добавление события button2 click нажатие на кнопку;

lb1:=Tlabel.create(form3); // создание элемента надпись (label);

lb1.parent:=form3; // место создания надписи (form3);

lb1.caption:='Фамилия'; // Текст надписи;

lb1.top:=50; // смещение относительно вертикальной оси;

lb1.Left:=10; // смещение относительно горизонтальной оси;

lb2:=Tlabel.create(form3); // создание элемента надпись (label);

lb2.parent:=form3; // место создания надписи (form3);

lb2.caption:='Имя'; // Текст надписи;

lb2.top:=80; // смещение относительно вертикальной оси;

lb2.Left:=10; // смещение относительно горизонтальной оси;

lb3:=Tlabel.create(form3); // создание элемента надпись (label);

lb3.parent:=form3; // место создания надписи (form3);

lb3.caption:='Отчество'; // Текст надписи;

lb3.top:=110; // смещение относительно вертикальной оси;

lb3.Left:=10; // смещение относительно горизонтальной оси;

lb4:=Tlabel.create(form3); // создание элемента надпись (label);

lb4.parent:=form3; // место создания надписи (form3);

lb4.caption:='Алгебра'; // Текст надписи;

lb4.top:=140; // смещение относительно вертикальной оси;

lb4.Left:=10; // смещение относительно горизонтальной оси;

lb5:=Tlabel.create(form3); // создание элемента надпись (label);

lb5.parent:=form3; // место создания надписи (form3);

lb5.caption:='Геометрия'; // Текст надписи;

lb5.top:=170; // смещение относительно вертикальной оси;

lb5.Left:=10; // смещение относительно горизонтальной оси;

lb6:=Tlabel.create(form3); // создание элемента надпись (label);

lb6.parent:=form3; // место создания надписи (form3);

lb6.caption:='Физика'; // Текст надписи;

lb6.top:=200; // смещение относительно вертикальной оси;

lb6.Left:=10; // смещение относительно горизонтальной оси;

lb7:=Tlabel.create(form3); // создание элемента надпись (label);

lb7.parent:=form3; // место создания надписи (form3);

lb7.caption:='Русский язык'; // Текст надписи;

lb7.top:=140; // смещение относительно вертикальной оси;

lb7.Left:=160; // смещение относительно горизонтальной оси;

lb8:=Tlabel.create(form3); // создание элемента надпись (label);

lb8.parent:=form3; // место создания надписи (form3);

lb8.caption:='Литература'; // Текст надписи;

lb8.top:=170; // смещение относительно вертикальной оси;

lb8.Left:=160; // смещение относительно горизонтальной оси;

lb9:=Tlabel.create(form3); // создание элемента надпись (label);

lb9.parent:=form3; // место создания надписи (form3);

lb9.caption:='История'; // Текст надписи;

lb9.top:=200; // смещение относительно вертикальной оси;

lb9.Left:=160; // смещение относительно горизонтальной оси;

lb10:=Tlabel.create(form3); // создание элемента надпись (label);

lb10.parent:=form3; // место создания надписи (form3);

lb10.caption:='Биология'; // Текст надписи;

lb10.top:=140; // смещение относительно вертикальной оси;

lb10.Left:=320; // смещение относительно горизонтальной оси;

lb11:=Tlabel.create(form3); // создание элемента надпись (label);

lb11.parent:=form3; // место создания надписи (form3);

lb11.caption:='Анатомия'; // Текст надписи;

lb11.top:=170; // смещение относительно вертикальной оси;

lb11.Left:=320; // смещение относительно горизонтальной оси;

lb12:=Tlabel.create(form3); // создание элемента надпись (label);

lb12.parent:=form3; // место создания надписи (form3);

lb12.caption:='Химия'; // Текст надписи;

lb12.top:=200; // смещение относительно вертикальной оси;

lb12.Left:=320; // смещение относительно горизонтальной оси;

ed1:=Tedit.create(form3); // создание поля ввода (Edit);

ed1.parent:=form3; // место создания поля ввода (form3);

with ed1 do

begin

top:=50; // смещение относительно вертикальной оси;

Left:=100; // смещение относительно горизонтальной оси;

end;

ed2:=Tedit.create(form3); // создание поля ввода (Edit);

ed2.parent:=form3; // место создания поля ввода (form3);

with ed1 do

begin

ed2.top:=80; // смещение относительно вертикальной оси;

ed2.Left:=100; // смещение относительно горизонтальной оси;

end;

ed3:=Tedit.create(form3); // создание поля ввода (Edit);

ed3.parent:=form3; // место создания поля ввода (form3);

with ed3 do

begin

ed3.top:=110; // смещение относительно вертикальной оси;

ed3.Left:=100; // смещение относительно горизонтальной оси;

end;

ed4:=Tedit.create(form3); // создание поля ввода (Edit);

ed4.parent:=form3; // место создания поля ввода (form3);

with ed4 do

begin

top:=140; // смещение относительно вертикальной оси;

Left:=100; // смещение относительно горизонтальной оси;

Width:=30; // задание ширины поля ввода;

end;

ed5:=Tedit.create(form3); // создание поля ввода (Edit);

ed5.parent:=form3; // место создания поля ввода (form3);

with ed5 do

begin

top:=170; // смещение относительно вертикальной оси;

Left:=100; // смещение относительно горизонтальной оси;

Width:=30; // задание ширины поля ввода;

end;

ed6:=Tedit.create(form3); // создание поля ввода (Edit);

ed6.parent:=form3; // место создания поля ввода (form3);

with ed6 do

begin

top:=200; // смещение относительно вертикальной оси;

Left:=100; // смещение относительно горизонтальной оси;

Width:=30; // задание ширины поля ввода;

end;

ed7:=Tedit.create(form3); // создание поля ввода (Edit);

ed7.parent:=form3; // место создания поля ввода (form3);

with ed7 do

begin

top:=140; // смещение относительно вертикальной оси;

Left:=250; // смещение относительно горизонтальной оси;

Width:=30; // задание ширины поля ввода;

end;

ed8:=Tedit.create(form3); // создание поля ввода (Edit);

ed8.parent:=form3; // место создания поля ввода (form3);

with ed8 do

begin

top:=170; // смещение относительно вертикальной оси;

Left:=250; // смещение относительно горизонтальной оси;

Width:=30; // задание ширины поля ввода;

end;

ed9:=Tedit.create(form3); // создание поля ввода (Edit);

ed9.parent:=form3; // место создания поля ввода (form3);

with ed9 do

begin

top:=200; // смещение относительно вертикальной оси;

Left:=250; // смещение относительно горизонтальной оси;

Width:=30; // задание ширины поля ввода;

end;

ed10:=Tedit.create(form3); // создание поля ввода (Edit);

ed10.parent:=form3; // место создания поля ввода (form3);

with ed10 do

begin

top:=140; // смещение относительно вертикальной оси;

Left:=400; // смещение относительно горизонтальной оси;

Width:=30; // задание ширины поля ввода;

end;

ed11:=Tedit.create(form3); // создание поля ввода (Edit);

ed11.parent:=form3; // место создания поля ввода (form3);

with ed11 do

begin

top:=170; // смещение относительно вертикальной оси;

Left:=400; // смещение относительно горизонтальной оси;

Width:=30; // задание ширины поля ввода;

end;

ed12:=Tedit.create(form3); // создание поля ввода (Edit);

ed12.parent:=form3; // место создания поля ввода (form3);

with ed12 do

begin

top:=200; // смещение относительно вертикальной оси;

Left:=400; // смещение относительно горизонтальной оси;

Width:=30; // задание ширины поля ввода;

end;

end;

Данная процедура после открытия формы (form3) создает элементы управления: кнопку 'Добавить', надписи (Label-Label12), поля ввода (edit1-edit12) и задает им необходимые свойства.

procedure TForm3.button2click(Sender: TObject); // объявление процедуры;

begin

form1.ADOTable1.insert(); // процедура вставки новой записи в БД;

form1.ADOtable1.FieldByName('Фамилия').Value:= ed1.Text;

form1.ADOtable1.FieldByName('Имя').Value:= ed2.Text;

form1.ADOtable1.FieldByName('Отчество').Value:= ed3.Text;

form1.ADOtable1.FieldByName('Алгебра').Value:= ed4.Text;

form1.ADOtable1.FieldByName('Геометрия').Value:= ed5.Text;

form1.ADOtable1.FieldByName('Физика').Value:= ed6.Text;

form1.ADOtable1.FieldByName('Русский_язык').Value:= ed7.Text;

form1.ADOtable1.FieldByName('Литература').Value:= ed8.Text;

form1.ADOtable1.FieldByName('История').Value:= ed9.Text;

form1.ADOtable1.FieldByName('Биология').Value:= ed10.Text;

form1.ADOtable1.FieldByName('Анатомия').Value:= ed11.Text;

form1.ADOtable1.FieldByName('Химия').Value:= ed12.Text;

end;

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

При загрузке приложения на главной форме (рисунок 7) отображается многостраничная форма с четырьмя вкладками. На первой вкладке "Список с оценками" расположен элемент DBGrid1, в котором отображается общий список учеников и их оценки по необходимым предметам. Также на первой вкладке расположены две кнопки для редактирования данных "Добавить новую запись" и "Удалить запись".

Рис. 7 Главная форма приложения

При нажатии на кнопку "Добавить новую запись" генерируется новое окно с формой для ввода новых записей (рисунок 8).

Рис. 8 Форма добавления записи

При переходе на вкладку "Химико-биологический" (рисунок 9) в элементе DBGrid2 отображаются ученики, имеющие оценку "5" по химии, биологии и анатомии.

Рис. 9 Вкладка "Химико-биологический"

При переходе на вкладку "Физико-математический" (рисунок 10) в элементе DBGrid3 отображаются ученики, имеющие оценку "5" по физике, алгебре и геометрии.

Рис. 10 Вкладка "Физико-математический"

При переходе на вкладку "Гуманитарный" в элементе DBGrid4 (рисунок 11) отображаются ученики, имеющие оценку "5" по русский язык, литература и история.

Рис. 11 Вкладка "Гуманитарный"

Заключение

Данный курсовой проект был выполнен в полном соответствии поставленному заданию в среде DELPHI 2009. Было разработано приложение "Формирование профильных классов по направлениям" с графическим интерфейсом для распределения учеников по трём категориям в зависимости от оценок по определенным предметам (гуманитарный, физико-математический, химико-биологический). Входными данными являются сведения из базы данных "Spisok".

Выбранная среда Delphi позволяет решать множество задач, в частности:

· Создавать законченные приложения для Windows самой различной направленности: от чисто вычислительных и логических, до графических и мультимедиа.

· Быстро создавать (даже начинающим программистам) профессионально выглядящий оконный интерфейс для любых приложений.

· Создавать мощные системы работы с локальными и удаленными базами данных

· Создавать справочные системы (файлы . hlp) для своих приложений и мн. др.

Delphi - это комбинация нескольких важнейших технологий:

· Высокопроизводительный компилятор в машинный код

· Объектно-ориентированная модель компонент построение приложений из программных прототипов

· Масштабируемые средства для построения баз данных.

В качестве дальнейшего развития возможна доработка приложения с целью повышения удобства работы.

В результате выполнения данного курсового проекта, я убедился в широких возможностях языка программирования Object Pascal .

Список источников и используемой литературы

1. Гордон Я. Тонкости программирования на языке Паскаль /Я. Гордон. -М.: Бук-Пресс, 2006. - 350 с.

2. Попов В.Б. Паскаль и Дельфи. Самоучитель / В.Б. Попов. - СПб.: Питер, 2004. - 544 с.

3. Дарахвелидзе П. Программирование в Delphi 7./ П. Дарахвелидзе. СПб.: БХВ-Петербург, 2009 - 400 с.

4. Чеснокова О.В., Delphi 2007: Алгоритмы и программы./ О.В Чеснокова. М.: НТ-пресс, 2008 - 368 с.

5. Флёнов М. Библия Delphi, 2-е изд./ М. Флёнов. СПб.: БХВ-Петербург, 2008. - 880 с.

6. Фаронов, Валерий Васильевич. Turbo Pascal : учебное пособие для студентов вузов, обучающихся по направлению подготовки "Информатика и вычислительная техника" / В. В. Фаронов . - М. ; СПб. : Питер, 2009 . - 366 с.

7. Фаронов В. В. Delphi. Программирование на языке высокого уровня : учебник для студентов вузов, обучающихся по направлению подготовки дипломированных специалистов "Информатика и вычислительная техника" / В. В. Фаронов . - М. ; СПб.: Питер, 2009 . - 639 с.

8. Климова, Л. М. Delphi 7. Основы программирования. Решение типовых задач : самоучитель / Л. М. Климова. - Изд. 2-е, доп. -- М.: КУДИЦ-ОБРАЗ, 2005 . - 480 с.

9. Павловская Т. А. Паскаль. Программирование на языке высокого уровня : учебник для студентов вузов, обучающихся по направлению подгот. бакалавров и магистров "Информатика и вычислит. техника" и направлению подгот. дипломиров. специалистов "Информатика и вычислит. техника" / Т. А. Павловская . - М. СПб.: Питер, 2008 . - 392 с.

10. Культин Н.Б. Основы программирования в Delphi XE. / Н.Б. Культин. . Санкт-Петербург : БХВ-Петербург, 2011. -594 с.

11. Чеснокова О.В. DELPHI 2007 Алгоритмы и программы. Самоучитель. / О.В. Чеснокова. - М.: НТ Пресс, 2008. - 320с.

12. Осипов, Д.Л. Базы данных и Delphi : теория и практика / Д.Л. Осипов. Санкт-Петербург .: БХВ-Петербург, 2011. - 733 с.

13. Немнюгин С.А. Turbo Pascal: Учебник. / С.А. Немнюгин. СПб.: Питер, 2000. - 496 с.

Размещено на Allbest.ru


Подобные документы

  • Характеристика системы программирования. Главные составные части Delphi. Интерфейс программного приложения. Результаты работы программы. Руководство системного программиста и оператора. Язык программирования Delphi, среда компилятора Borland 7.0.

    курсовая работа [1,6 M], добавлен 29.05.2013

  • Описания объектов, свойств, методов, формы и основных модулей текста программы в среде Delphi. Создание Windows-приложения на алгоритмическом языке Object Pascal в среде визуального программирования. Анализ результатов тестирования программного продукта.

    курсовая работа [2,4 M], добавлен 27.08.2012

  • Создание Windows-приложения на алгоритмическом языке Object Pascal в среде визуального программирования Delphi, которое, как планируется, будет обеспечивать решение специализированных задач по формированию, обработке на ЭВМ и выводу информации.

    курсовая работа [967,6 K], добавлен 20.05.2008

  • Описание истории развития информационных технологий. Исследование предпочтений по использованию программного обеспечения пользователя персонального компьютера начального уровня и разработка интерфейсного приложения в среде программирования Delphi.

    дипломная работа [2,0 M], добавлен 14.01.2012

  • Общая характеристика системы программирования Delphi, а также принципы создания ее компонентов. Описание значений файлов приложения, созданного с помощью Delphi. Структура и свойства библиотеки визуальных компонентов (Visual Component Library или VCL).

    отчет по практике [1,1 M], добавлен 07.12.2010

  • Создание и реализация программы в среде визуального программирования С++ Builder. Разработка ее алгоритма. Описание компонентов и их свойств, используемых в структуре приложения. Создание кнопок создания турниров по круговой системе и на выбывание.

    курсовая работа [4,6 M], добавлен 12.11.2013

  • Разработка программы создания заметок в любом месте компьютера. Выбор технологии, языка и среды разработки приложения. Описание основных алгоритмов работы программного обеспечения. Проектирование пользовательского интерфейса. Выбор стратегии тестирования.

    отчет по практике [700,5 K], добавлен 24.11.2014

  • Разработка и реализация демонстрационного многопоточного приложения. Выбор основных средств реализации. Описание логики работы приложения и разработка программного обеспечения. Описание пользовательского интерфейса. Реализация потоков в Delphi.

    курсовая работа [462,5 K], добавлен 10.08.2014

  • Цель и основные составные части автоматизации. Характеристика ее объекта. Описание концептуальной модели предметной области. Обоснование выбора программного обеспечения. Разработка программы в среде Borland Delphi 7. Общий алгоритм работы приложения.

    курсовая работа [368,6 K], добавлен 21.05.2015

  • Анализ предметной области. Диаграмма классов. Проектирование программного продукта "Часы". Тестирование и отладка, руководство программиста. Описание работы приложения. Руководство оператора, модель жизненного цикла. Файл Times.cs, Arrow.cs, Form1.cs.

    курсовая работа [1,7 M], добавлен 20.04.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.