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

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    411,65 Кб
  • Опубликовано:
    2013-08-17
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

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













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

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

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

Содержание

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

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

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

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

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

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

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

.3Программный код

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

Заключение

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

Введение

Данный курсовой проект был разработан в среде Delphi. Среди множества языков Pascal является наиболее универсальным и легко изучаемым языком. При этом его удобно использовать для создания сложных приложений c базами данных. Delphi прост в обучении при этом средства языка программирования Pascal позволяет использовать все современные возможности объектно-ориентированногопрограммирования.- это среда разработки, в которой в качестве языка программирования используется язык ObjectPascal.

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

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

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

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

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

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

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

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

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

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

 

.1 Оператор выбора


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

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

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

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

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

...

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

<оператор>;

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

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

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

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

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

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

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

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

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

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

 I of

0 : Z := I + 10;

: Z := I + 100;

 : Z := I + 1000;

end;

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

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

case I of

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

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

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

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

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

Seson: (Winter, Spring, Summer, Autumn);Season of: writeln('Зима');: writeln('Весна');: writeln('Лето');: writeln('Осень');.

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

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

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

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

 

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


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

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

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

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

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

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

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

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

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

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

Например:

s1: string[10];: 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). Название регулярный тип (или ряды) массивы получили за то, что в них объединены однотипные элементы, упорядоченные (урегулированные) по индексам, определяющим положение каждого элемента в массиве.

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

В разделе переменныхимя массива : Array [тип индекса] of тип элементов ;

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

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

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

Переменные множественного типа описываются так:symbol= set of char; {описан множественный тип symbol из букв}letter, digits, sign: symbol; {описаны три переменные множественного типа}

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

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

digits:=[‘0’..‘9’];

letter:= [‘a’ .. ‘z’];

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

:= [‘a’ .. ‘z’, ‘A’ .. ‘Z’];

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

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

Const YesOrNo= [‘Y’, ‘y’, ‘N’, ‘n’];

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

Const digits: set of char= [‘0’ .. ‘9’];

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

Yes=[‘Y’,‘y’];No=[‘N’,‘n’];= 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].

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

Объявление типа записи выглядит следующим образом:<имя типа> = RECORD <список полей> END

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

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

Пример := record, Uliza : string[20];, kvart : integer;;,b : Adres; [7]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

var: file of char;

f2: file of integer;: file;

t: text;

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

var i:integer;:array[1..10] of string[10];i:=1 to 10 do[i]:=GetSubStr(Edit1.text,' ',i);;

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

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

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

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

Соотношение индексов в квадратной матрице=J элементы матрицы расположены на главной диагонали<J элементы матрицы расположены над главной диагональю>J элементы матрицы расположены под главной диагональю+J=N+I элементы матрицы расположены на побочной диагонали (N - количество строк или столбцов в квадратной матрице)+J<N+I элементы матрицы расположены над побочной диагональю+J>N+I элементы матрицы расположены под побочной диагональю [9].

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

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

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

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

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

Type=array [1..m] of integer; {массив из m целых чисел}InsertMas1(Var massiv: mas; n:integer);: integer;;i:=1 to n do[i] := Random(10);;

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

Type=array [1..m] of integer; {массив из m целых чисел}(Varmassiv:array;n:integer);:integer;:=1tondo('Введите',i,'-ыйэлементмассива');(massiv[i]);;;

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

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

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

 

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


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

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

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

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

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

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

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

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

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

 

.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;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Connection - ADOConnection1- связь с компонентом ADOConnection1; - 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);

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

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

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

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

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

 

.3 Программный код


unit Unit1;

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,,Unit3, Grids, DBGrids, ComCtrls, StdCtrls, ExtCtrls, DBCtrls, DB,;= class(TForm): TPageControl;: TTabSheet;: TTabSheet;: TTabSheet;: TDBGrid;: TDBGrid;: TTabSheet;: TDBGrid;: TDataSource;: TADOConnection;: TDataSource;: TADODataSet;: TDataSource;: TButton;: TADOTable;: TButton;: TADODataSet;: TDBGrid;: TDataSource;: TADODataSet;PageControl1Change(Sender: TObject);Button1Click(Sender: TObject);Button2Click(Sender: TObject);TForm1.Button1 Click (Sender: TObject); // объявление процедуры;// начало процедуры;:=form3.create (application); // создание формы (функция Create);3.Caption:='Добавить запись'; // заголовок формы;

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

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

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

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

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

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

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

procedure TForm1.Page Control1 Change (Sender: TObject); // объявление процедуры;// начало процедуры;.ADO Table1.Requery(); // обновление данных в ADO Table1;.ADO Data Set1.Requery();// обновление данных в Data Set1;.ADO Data Set2.Requery();// обновление данных в Data Set2;.ADO Data Set3.Requery();// обновление данных в Data Set3;; конец процедуры;Unit3;, Messages, SysUtils, Variants ,Classes, Graphics, Controls, Forms,, ComCtrls, StdCtrls, ExtCtrls, DBCtrls, DB, ADODB;= class(TForm)FormShow(Sender: TObject);Button2click(Sender: TObject);:Tbutton;:TLabel;:TLabel;:TLabel;:TLabel;:TLabel;:TLabel;:TLabel;:TLabel;:TLabel;:TLabel;:TLabel;:TLabel;:Tedit;:Tedit;:Tedit;:Tedit;:Tedit;:Tedit;:Tedit;:Tedit;:Tedit;:Tedit;:Tedit;:Tedit;

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

procedure TForm3.FormShow(Sender: TObject); // объявление процедуры;// начало процедуры;:=Tbutton.Create(form3);// создание кнопки button2;.Parent := Form3; // место создания кнопки button2 (form3);2.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.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;:=Tedit.create(form3); // создание поля ввода (Edit);2.parent:=form3; // место создания поля ввода (form3);

with ed1 do

begin

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

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

end;:=Tedit.create(form3); // создание поля ввода (Edit);3.parent:=form3; // место создания поля ввода (form3);

with ed3 do

begin

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

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

end;:=Tedit.create(form3); // создание поля ввода (Edit);4.parent:=form3; // место создания поля ввода (form3);

with ed4 do

begin

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

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

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

end;:=Tedit.create(form3); // создание поля ввода (Edit);5.parent:=form3; // место создания поля ввода (form3);

with ed5 do

begin

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

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

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

end;:=Tedit.create(form3); // создание поля ввода (Edit);6.parent:=form3; // место создания поля ввода (form3);

with ed6 do

begin

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

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

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

end;:=Tedit.create(form3); // создание поля ввода (Edit);7.parent:=form3; // место создания поля ввода (form3);

with ed7 do

begin

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

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

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

end;:=Tedit.create(form3); // создание поля ввода (Edit);8.parent:=form3; // место создания поля ввода (form3);ed8 do:=170; // смещение относительно вертикальной оси;:=250; // смещение относительно горизонтальной оси;

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

end;:=Tedit.create(form3); // создание поля ввода (Edit);9.parent:=form3; // место создания поля ввода (form3);ed9 do:=200; // смещение относительно вертикальной оси;:=250; // смещение относительно горизонтальной оси;

end;:=Tedit.create(form3); // создание поля ввода (Edit);10.parent:=form3; // место создания поля ввода (form3);

with ed10 do

begin

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

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

end;:=Tedit.create(form3); // создание поля ввода (Edit);11.parent:=form3; // место создания поля ввода (form3);ed11 do:=170; // смещение относительно вертикальной оси;:=400; // смещение относительно горизонтальной оси;

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

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

begin

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

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

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

end;

end;

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

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

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

form1.ADOtable1.FieldByName('Фамилия').Value:= ed1.Text;.ADOtable1.FieldByName('Имя').Value:= ed2.Text;.ADOtable1.FieldByName('Отчество').Value:= ed3.Text;.ADOtable1.FieldByName('Алгебра').Value:= ed4.Text;.ADOtable1.FieldByName('Геометрия').Value:= ed5.Text;.ADOtable1.FieldByName('Физика').Value:= ed6.Text;.ADOtable1.FieldByName('Русский_язык').Value:= ed7.Text;.ADOtable1.FieldByName('Литература').Value:= ed8.Text;.ADOtable1.FieldByName('История').Value:= ed9.Text;.ADOtable1.FieldByName('Биология').Value:= ed10.Text;.ADOtable1.FieldByName('Анатомия').Value:= ed11.Text;.ADOtable1.FieldByName('Химия').Value:= ed12.Text;

end;

 

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


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

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

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

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

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

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

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

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

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

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

 

Заключение


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

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

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

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

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

·        Создавать справочные системы (файлы . hlp) для своих приложений и мн. др.- это комбинация нескольких важнейших технологий:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!