Содержание.
Введение.................................................................................................
Часть I. Теоретическая часть
Основные понятия ООП.…………………………………..…….
Среда реализации...................…………………………………....
ЧастьII. Практическая часть
2.1. Постановка задачи............................................................………..
2.2. Ход работы........................................................................………..
2.3. Тест программы........................................................................…..
2.4. Инструкция для пользователя..........................................……….
Заключение ...........................................................................................
Литература.............................................................................................
Введение.
Объектно-ориентированное программирование является в настоящее время наиболее популярной технологией программирования. Объектно-ориентированное программирование является развитием технологии алгоритмического программирования, которое представляет алгоритм в виде последовательности различных алгоритмических структур (линейная, ветвление, цикл), однако имеет свои характерные черты.
Объектно-ориентированный подход рассматривает все ресурсы, такие как данные, модули, системы в качестве объектов. Каждый объект содержит некоторую структуру данных, обрамленную некоторыми наборами процедур (методов), предназначенных для манипулирования этими данными.
Объектно-ориентированное программирование по своей сути – это создание приложений из объектов, подобно тому, как из блоков и различных деталей строятся дома. Одни объекты приходится полностью создавать самостоятельно, тогда как другие можно позаимствовать в готовом виде из разнообразных библиотек.
Важное место в технологии объектно-ориентированного программирования занимает событие. В качестве событий могут рассматриваться щелчок кнопкой мыши на объекте, нажатие определенной клавиши, открытие документа и т.д. В качестве реакции на события вызывается определенная процедура, которая может изменять свойства объекта, вызывать его методы и т.д.
В системах объектно-ориентированного программирования обычно используется графический интерфейс, который позволяет визуализировать процесс программирования. Появляется возможность создавать объекты, задавать им свойства и поведение с помощью мыши.
Теоретическая часть.
Прежде чем давать определение понятию объект, рассмотрим, что такое класс.
Класс – это определяемый пользователем тип, который включает в себя данные разных типов и операции над ними.
Объект – это экземпляр какого-либо класса.
Таким образом, класс – это описание, а объект – это то, что было создано в соответствии с этим описанием. Например, мы знаем, что такое стол. Стол – это некий предмет, имеющий столешницу и ножки. Такое описание стола и будет классом, а конкретный экземпляр стола, за которым вы сейчас сидите, является объектом данного класса.
Объект состоит из 3 частей:
Имя объекта;
Данные различных типов, называемые полями объекта;
Заголовки процедур или функций, называемых методами объекта (операциями).
Объектно-ориентированный язык программирования характеризуется тремя основными свойствами:
1. Инкапсуляция – это объединение и скрытие данных и обрабатывающих их методов от внешнего пользователя внутри класса. Для этого в описании класса используется спецификатор раздела private, содержащий данные и методы, доступные только для самого класса.
Назначение инкапсуляции:
защита данных, принадлежащих объекту, от возможных ошибок, которые могут возникнуть при прямом доступе к этим данным;
локализация возможных ошибок в программе, что намного упрощает процесс поиска и исправления этих ошибок.
2. Наследование – это процесс, который позволяет определять новые классы на основе уже имеющегося (базового) класса. При этом новый класс сохраняет все свойства старого и может добавлять к ним черты, характерные только для него.
Класс-предок – это базовый класс, от которого новый класс получает свойства. Новый класс при этом называется наследником.
Назначение наследования:
Не надо каждый раз заново описывать новый объект, а можно указать базовый класс и описать отличительные особенности нового класса. В результате новый класс будет обладать всеми свойствами класса-предка плюс своими собственными отличительными чертами.
Простой пример наследования - определение записи, отдельное поле которой является ранее определенной записью.
3. Полиморфизм – это свойство, которое позволяет одно и то же имя можно использовать для решения нескольких технически разных задач.
Назначение полиморфизма
Снижение сложности программ на основе разрешения использования одного метода для нескольких взаимосвязанных классов. При этом обращение к одному и тому же методу у объекта-предка и объекта-потомка может привести к разным результатам.
Описание класса и объекта:
Type <имя>=class(<Класс предок>)
<поле 1>;
<поле 2>;
. . .
<поле N>;
<метод 1>;
<метод 2>;
. . .
<метод M>;
end;
Var <имя>:<имя>;
Для каждого элемента класса можно установить разную видимость.
Видимость элемента определяет, где в программе и как будет виден данный элемент класса. Для этого в структуре class используются 4 ключевых слова private, protected, public, published.
Private (частные) определяет данные и методы, доступные только для самого класса.
Public (общедоступные) определяет элементы класса, которые видны в любом месте программы.
Protected (защищенные) определяет данные и методы, доступные из класса и любого его класса-потомка (по умолчанию).
Published (опубликованные) определяет элементы класса, имеющие ту же видимость, что и public-элементы. Единственное отличие заключается в том, опубликованные элементы порождают информацию о типе времени выполнения (RTTI). Благодаря данной информации, Delphi может осуществить проверку принадлежности элементов объекта тому или иному классу.
В Delphi имеется понятие абстрактного класса.
Абстрактный класс описывает несуществующий объект. Он нужен для того, чтобы описать некоторые фундаментальные свойства и методы объектов, которые создаются из абстрактного класса.
Все объекты в Delphi созданы из абстрактного класса TObject. Класс T – предок многих простых классов. Этот класс объединяет в себе основные методы, которые свойственны всем объектам Delphi.
Пример.
Type MyClass = class (TObject)
Label1: TLabel;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
Procedure MyProc;
end;
Var MyObject: MyClass;
Объектно-ориентированное программирование – это программирование, которое основано на представлении программы в виде совокупности объектов, каждый из которых является реализацией определенного класса, а классы образуют иерархию, основанную на принципах инкапсуляции, наследования и полиморфизма.
Библиотеки классов Delphi 7 Studio
Основные библиотеки компонентов Delphi 7 Studio
Для облегчения работы программиста и ускорения создания приложений в стандартную поставку Delphi 7 Studio входят некоторые готовые классы, которые называются компонентами. Эти компоненты объединены в библиотеки компонентов.
Библиотеки компонентов – это хранилища классов, которые обычно состоят из небольших модулей, разделенных по назначению.
Основные библиотеки Delphi 7 Studio:
VCL (Visual Component Library) – стандартная библиотека визуальных компонентов Delphi.
CLX (Component Library for Cross Platform) – библиотека компонентов для межплатформенной разработки приложений. Данная библиотека была создана для объединения средств разработки приложений Delphi и Kylix.
Компоненты
Библиотека визуальных компонентов, несмотря на свое название содержит в своем составе :
визуальные компоненты – видимые во время выполнения приложения (TButton, TEdit, TLabel и др);
невизуальные компоненты – видимые только на этапе проектирования (TTimer, TTable, TQuery и др.).
Типы компонентов
1. Стандартный
Стандартные компоненты включают в себя поведение элементов управления Windows. К таким компонентам относятся TListView, TRichEdit, TImageList и др. Все эти компоненты находятся на вкладке Win32 панели компонентов Delphi. Каждый из этих компонентов представляет собой так называемую оболочку стандартного элемента управления Windows. Эти компоненты позволяют легко использовать элементы управления Windows в ваших программах.
2. Пользовательский.
К пользовательским компонентам относятся все компоненты, которые входят в стандартную библиотеку компонентов Delphi. Эти компоненты добавляются пользователем в существующий набор компонентов. Пользовательские компоненты создаются самостоятельно или приобретаются у других программистов.
3. Графический.
Графические компоненты предназначены для создания визуальных элементов управления, которые не могут получать фокус ввода. Обычно такие компоненты применяются для отображения какой-либо информации (текстовой или графической). В качестве примера можно привести TShape, TLabel, TImage и др.
4. Невизуальный.
Невизуальные компоненты не видны пользователю во время выполнения приложения, хотя они обладают свойствами, событиями и методами. Примером такого компонента является TTimer.
Структура компонентов
Компоненты, как и всякий класс включают в себя поля, свойства, методы и события.
1. Поля
Поле компонента – это данные, хранящиеся в компоненте или классе. Поле представляется в виде переменной, которая описывается внутри компонента или класса.
2. Свойства компонентов
Свойства компонента предназначены для доступа пользователя к внутренним полям компонента. Свойства позволяют изменить атрибуты компонента, в том числе и вычисляемыми значениями.
Типы свойств
Тип свойства |
Отображение свойств в окне инспектора объектов |
Простой (Simple) |
Числовые, символьные и строковые свойства отображабтся соответственно как числа, символы и строки. Разработчик может редактировать значения данных свойств непосредственно в окне инспектора объектов. |
Перечисляемый (Enumeraded) |
Свойства перечисляемых типов (включая логические типы) отображаются в окне инспектора объектов как редактируемые строки. Разработчик может, кроме непосредственного ввода значения свойства, переключать допустимые значения свойства двойным щелчком в поле значения свойства окна инспектора объектов, либо выбрать допустимое значение из раскрывающегося списка. |
Множество (Set) |
Свойства типа множество отображаются в окне инспектора объектов как множества. При помощи двойного щелчка на значении свойства разработчик может расширить множество и установить каждому элементу множества логическое значение (True, если данный элемент входит в множество) |
Объект (Object) |
Свойства такого типа часто имеют свой собственный редактор свойств. Свойства типа объект должны быть потомками класса TPersistent |
Массив (Array) |
Свойства типа массив должны иметь свой собственный редактор свойств. Окно инспектора объектов Delphi не поддерживает редактирование свойств данного типа. Разработчик должен при регистрации компонента определить редактор свойств |
3. Методы – это процедуры или функции, принадлежащие классу. Методы определяют поведение объекта.
4. Событие (Event) – это механизм, который связывает какое-либо системное изменение или действие пользователя с конкретным кодом, называемым кодом обработчика события (Event handler).
Иерархия визуальных компонентов
Все классы и компоненты являются прямыми или косвенными потомками класса TObject.
Класс TObject обеспечивает:
Возможность создания, уничтожения и управления экземплярами объектов, а также резервирование памяти и ее освобождение после уничтожения экземпляра;
Поддержку информации об объекте и типах;
Поддержку обработки сообщений.
Следующий базовый класс, являющийся прямым потомком TObject, - класс TPersistent. Данный клсаа является предком для всех классов, предназначенных для работы с потоками. Класс TPersistent наследует свойства и методы своего предка – класса TObject, и может, кроме того, считывать данные из потока и записывать данные в поток.
Класс TPersistent обеспечивает:
Определение процедур для загрузки и помещения данных в поток;
Назначение свойствам объекта конкретных значений;
Средства для назначения содержимого одного объекта другому.
Потомком класса TPersistent является класс TComponent, базовый класс всех компонентов библиотеки VCL. Наследники класса TComponent, как и сам данный класс, имеют следующие возможности:
Способность отражаться на палитре компонентов Delphi, а также способность размещения на форме;
Способность быть обладателем других компонентов и управлять ими;
Способность быть преобразованным в элемент управления ActiveX или объект Com с помощью мастера.
Следующий класс, потомок вышеописанного класса TComponent, - класс TControl. Этот класс является базовым классом для всех визуальных компонентов, т.е. потомки этого класса будут видны и доступны пользователю во время выполнения приложения. Все классы, являющиеся потомками класса TControl, имеют свойства, методы и события, которые определяют особенности отображения данного компонента, например, положение компонента на экране, размеры и т.д.
Потомком класса TControl является класс TGraphicControl. Данный класс предназначен для создания визуальных компонентов, которые не являются окнами, т.е. не могут содержать в себе других компонентов и могут получать фокус ввода. Главное предназначение данного класса – отображать графику или текст на форме. Примерами потомков класса TGraphicControl могут выступать такие компоненты, как TBevel (рамка), TImage (рисунок), TSpeedButton (кнопка быстрого вызова) и другие. Класс TGraphicControl передает своим потомкам свойство Canvas, позволяющее получать доступ к поверхности компонента, на которой можно рисовать или писать. Кроме того, класс TGraphicControl передает своим потомкам метод Paint.
Второй потомок класса TControl – класс TWinControl. Данный класс является базовым классом для всех оконных визуальных компонентов. Оконный визуальный компонент – это компонент, который:
может получать фокус ввода во время выполнения приложения;
может содержать в себе другие компоненты. Компонент, который содержит в себе другие компоненты называется родительским (parent). Компонент, содержащийся в другом компоненте, называется дочерним (child);
имеет идентификатор окна Windows (handle). Каждый оконный компонент обрабатывается непосредственно операционной системой, поэтому ему назначается свой уникальный идентификатор.
Примерами оконных компонентов является TEdit (поле редактирования) и другие.
Среда реализации.
Главные составные части среды программирования Delphi 7 Studio
Ниже перечислены основные составные части Delphi:
1. Главное окно среды Delphi (Main Window) расположено в самом верхнем углу экрана (окно с заголовком Delphi 7 – Project1).
2. Конструктор Форм (Form Designer) – окно, по умолчанию имеющее заголовок Form1.
3. Редактор кода (Code Editor) – окно, по умолчанию имеющее заголовок Unit1.pas.
4. Инспектор Объектов (Object Inspector).
5. Окно представления объектов в виде дерева (Object TreeView).
Главное окно Delphi
Это меню содержит в себе:
Меню главного окна Delphi 7 представляет стандартное меню Windows и служит для работы с файлами проекта, для запуска и отладки проекта, позволяет настраивать среду Delphi и запускать дополнительные утилиты, входящие в состав Delphi 7.
1. Меню File предназначено для работы с файлами проекта. Данное меню содержит следующие пункты:
New отображает несколько подменю, при выборе любого из них будет создаваться соответствующий новый объект;
Open отображает диалоговое окно открытия существующего проекта или файла проекта;
Open Project отображает диалоговое окно открытия существующего проекта;
Reopen отображает подменю, которое содержит список последних открываемых вами в среде Delphi файлов и проектов, выбрав любой из них, вы откроете данный файл в среде Delphi;
Save служит для сохранения текущего файла проекта с возможностью задания нового имени данному файлу;
Save Project As открывает диалоговое окно сохранения файлов проекта с возможностью назначения нового имени файлу проекта;
Save All сохраняет все файлы текущего проекта;
Close закрывает открытый в данный момент в редакторе кода файл проекта;
Close All закрывает все открытые в среде Delphi файлы и проекты;
Use Unit открывает диалоговое окно использования модулей. Если ваш проект содержит несколько модулей, то можно указать используемые в данном модуле другие модули проекта;
Print распечатывает текущий файл на принтере;
Exit закрывает все открытый файлы и завершает работу c Delphi 7.
Основные задачи при работе с базами данных
Модификация набора данных.
Процессы редактирования, добавления и удаления данных можно объединить в едином понятии модификации набора данных
Модифицируемость, т.е. возможность изменения набора данных, зависит от различных условий. Примером наложения ограничений на модифицируемость таблицы является переключение ее в режим «только для чтения». Если мы хотим, чтобы возможности пользователя ограничивались только просмотром записей из набора данных без возможности их редактирования или добавления новых записей, можно использовать свойство ReadOnly. Данное свойство имеет по умолчанию значение False. Приведенная ниже строка кода позволяет перевести таблицу данных Table1 в режим «только для чтения»:
Table1.ReadOnly:=True;
Примечание. Значение свойства ReadOnly можно изменять только в том случае, когда набор данных закрыт, т.е. свойство Active набора данных установлено в False.
Чтобы проверить, можно ли модифицировать набор данных, предусмотрено свойство CanModify. Это свойство имеет значение True, если набор данных можно модифицировать, и False, если нельзя.
I. Редактирование набора данных
Для редактирования текущей записи набора данных необходимо сначала перевести его в режим редактирования. Перевод набора данных в состояние редактирования можно осуществить двумя способами:
программно с помощью метода Edit
визуально посредством компонентов, отображающих данные, например, DBGrid, DBEdit, DBMemo и др.
Методы, используемые для редактирования набора данных:
1. Метод Edit переводит набор данных в режим редактирования. При этом блокируется доступ к текущей записи других пользователей (временно устанавливается доступ «только для чтения»). Если запись уже редактируется другим пользователем, то генерируется исключительная ситуация и выполнение метода Edit прекращается.
2. Метод Post сохраняет сделанные изменения в наборе данных. Выполняет следующие действия:
Записывает новые данные в физическую таблицу.
Снимает блокировку записи.
Переводит набор данных в режим просмотра.
3. Метод Cancel предназначен для отмены изменений, сделанных в текущей записи.
4. Метод Refresh заново считывает информацию из набора данных и обновляет содержимое компонентов. После модификации набора данных может возникнуть ситуация, когда изменения не отображаются в визуальных компонентах. В этих случаях необходимо вызвать метод Refresh.
Пример. Изменение данных в поле FIO.
If Table1.CanModify=True then //если модификация возможна, то
begin
Table1.Edit;
Table1.FieldByName(‘Fio’).AsString:=Edit1.Text;
Table1.Post;
Table1.Refresh;
end
else // если редактирование невозможно
ShowMessage(‘Редактирование невозможно’);
Для редактирования текущей записи можно заменить последовательность присваивания значений и вызов метода Post методом SetFields.
5. Метод SetFields(<массив значений>) содержит массив значений, которые присваиваются полям набора данных. При этом порядок перечисления значений должен соответствовать порядку следования полей в наборе данных. Если значение какого-либо поля нужно оставить без изменений, то в качестве значения указывается nil. После выполнения метода SetFields метод Post выполнять не нужно. Набор данных будет автоматически обновлен и переведен в режим просмотра.
Например,
Table1.Edit;
Table1.SetFields([‘Сидоров’,nil, 3400, nil]);
Второе и четвертое поля таблицы Table1 останутся без изменений, а первое и третье заменятся на значения «Сидоров» и 3400 соответственно.
II. Добавление записей
Добавлять новые записи можно только к модифицируемому набору данных.
Для добавления записи следует:
Перевести набор данных в режим вставки.
Задать значение для полей новой записи.
Подтвердить добавление новой записи или отказаться от нее.
Методы, используемее для добавления записей:
1. Метод Insert выполняет следующие действия:
Переводит набор данных в режим вставки записи.
Сдвигает записи на одну вперед, начиная от текущей.
Вставляет на место текущей записи новую пустую запись.
Таким образом, новая запись вставляется перед текущей.
Например,
Table1.Insert;
Table1.FieldByName(‘Fio’).AsString:=Edit1.Text;
Table1.Post;
2. Метод InsertRecord(<массив значений>) Вставляет в текущую позицию курсора новую запись, задавая значения ее полей, как в методе SetFields
Table1.InsertRecord([‘Сидоров’,nil, 3400, nil]);
3. Метод Append аналогичен методу Insert за тем исключением, что вставляет новую запись в конец набора данных, т.е. новая запись будет последней.
4. Метод AppendRecord(<массив значений>) аналогичен методу InsertRecord, но добавляет новую запись в конец набора данных, так же как и метод Append.
III. Удаление записей
Удалить запись можно только из модифицируемого набора данных.
1. Метод Delete удаляет текущую запись. Если удаление произведено успешно, то текущей становится следующая запись. Если удалена последняя запись, курсор переместится на предыдущую запись.
2. Метод EmptyTable удаляет все записи из таблицы. Этот метод разрешен только в режиме исключительного доступа к таблице (свойство Exclusive=True)
Постановка задачи.
Тема: Разработка базы данных «Трудоустройство и публикация резюме»
Постановка задачи:
Построить систему управления базой данных, содержащей публикации резюме для работодателей.
Описание базы данных.
База данных состоит из двух таблиц со следующей структурой:
I. Резюме
Дата приема заявки (системное время)
Предполагаемая должность (берется из второй таблицы)
Предыдущие должности:
1 раздел:
• Должность
(выбирается из того же списка, что и
предполагаемая должность)
.
Стаж работы в этой должности (1 год, 2
года, 3 года, 4 лет, 5 и более лет)
2 раздел:
Должность (выбирается из того же списка, что и предполагаемая должность)
Стаж работы в этой должности (1 год, 2 года, 3 года, 4 лет, 5 и более лет)
3 раздел:
Должность (выбирается из того же списка, что и предполагаемая должность)
Стаж работы в этой должности (1 год, 2 года, 3 года, 4 лет, 5 и более лет)
Опыт
руководящей работы (варианты: нет,
руководство группой, руководство
отделом,
руководство
подразделением, предприятием)
возраст
пол
минимальная зарплата
Тип работы (варианты: постоянная временная)
Информация о себе (поле Memo)
10. Контактная информация:
Фамилия
Имя
. Отчество
Телефон
11. Должности
1. Наименование должности
Определение задач:
Создать в среде Delphi 7 Studio приложение для работы с этой базой данных.
Регистрация заявок
Внесение изменений в таблицу «Должности»
Поиск кандидатов на должность по предполагаемой должности
Отчет
о резюме принятых за текущий день
(Фамилия, Имя, Отчество, предполагаемая
должность,
минимальная зарплата).
Ход работы.
Запускаем программу Delphi 7.
Переходим в окно Конструктор форм. Используя свойство Caption, изменяем слово Form 1 на текст: «Трудоустройство и публикация резюме».
Помещаем на форму компонент MainMenu1 вкладки Standard, создаем пункты меню: Регистрация, Должности, Поиск, Отчет.
Далее нужно вставить на форму компонент Table1, для того что бы можно было связаться с таблицами базы данных.
Так же на форму нужно поместить компоненты: RvProject1 и RvDataSetConnection1, для того что было можно было создавать отчеты по принятым за день Заявлениям.
Теперь нужно создать новую форму: Регистрация заявок, здесь можно будет заполнять данные о себе при регистрации на работу.
Помещаем на форму компоненты: 22 Label (текст), 9 ComboBox1, здесь можно будет выбирать должности на которых вы хотите работать и на которых уже работали), 3 Bevel ( рамки), Создаем 2 кнопки: принять и отказаться, с помощью них можно будет либо зарегистрировать свою заявку либо отказаться от нее.
Также на форму помещаем компонент DataSource1, для того что бы была связь с таблицей. Еще нужно поместить сюда два компонента Table. Это таблицы на которые будет опираться программа.
Теперь создаем еще одну форму Должности, здесь можно будет добавить любые должности било удалить ненужные. Помещаем на форму компонент DataSource1, для связи с таблицей и саму таблицу Table1 где находятся сами должности. Ставим компонент DBNavigator1, для добавления ,удаления и других операций с должностями.
Теперь нужно создать еще одну форму Поиск, здесь можно будет найти нужного кандидата на должность. Помещаем на эту форму 24 компонента Label, 3 компонента Bevel, 15 компонентов DBEdit, здесь будет находится найденная информация о кандидате ,3 кнопки: Поиск, и две для просмотра: Далее и назад. Компонент ComboBox, по которому можно будет искать кандидатов на нужную должность, компонент DataSource, для связи с таблицей ,и два компонента Table, сами таблицы.
Теперь создаем еще одну форму Отчет, , при нажатии на Главной странице по кнопке отчет на этой странице будет выводиться отчет по принятым за день объявлениям.
Текст программы.
(База данных)
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, DB, DBTables;
type
TForm1 = class(TForm)
Table1: TTable;
Table2: TTable;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Table1.CreateTable;
ShowMessage('таблица Резюме создана')
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
Table2.CreateTable;
ShowMessage('таблица Должности создана')
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
end;
end.
(Главная страница)
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, DB, DBTables, RpCon, RpConDS, RpDefine, RpRave;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
Table1: TTable;
RvDataSetConnection1: TRvDataSetConnection;
RvProject1: TRvProject;
procedure N1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
Uses Unit2, Unit3, Unit4;
{$R *.dfm}
procedure TForm1.N1Click(Sender: TObject);
begin
Form2.ShowModal;
end;
procedure TForm1.N2Click(Sender: TObject);
begin
Form3.ShowModal;
end;
procedure TForm1.N3Click(Sender: TObject);
Begin
Form4.Showmodal;
end;
procedure TForm1.N4Click(Sender: TObject);
Var s, s1: String;
Systime:TSystemTime;
i: integer;
begin
GetLocalTime (Systime);
s1:=DateTimeToStr(SystemTimeToDateTime(Systime));
For i:=1 to 10 do
s:=s+s1[i];
ShowMessage('Фомирование отчета по принятым за день объявлениям за '+s);
Table1.Filter:='Data='+''''+s+'''';
Table1.Filtered:=true;
RvProject1.Execute;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
end;
end.
(Регистрация)
object Form1: TForm1
Left = 222
Top = 118
Width = 658
Height = 512
Caption = #1058#1088#1091#1076#1086#1081#1089#1090#1088#1086#1081#1089#1090#1074#1086' '#1080' '#1087#1091#1073#1083#1080#1082#1072#1094#1080#1103' '#1088#1077#1079#1102#1084#1077
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
Menu = MainMenu1
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object MainMenu1: TMainMenu
Left = 600
object N1: TMenuItem
Caption = #1056#1077#1075#1080#1089#1090#1088#1072#1094#1080#1103
OnClick = N1Click
end
object N2: TMenuItem
Caption = #1044#1086#1083#1078#1085#1086#1089#1090#1080
OnClick = N2Click
end
object N3: TMenuItem
Caption = #1055#1086#1080#1089#1082
OnClick = N3Click
end
object N4: TMenuItem
Caption = #1054#1090#1095#1077#1090
OnClick = N4Click
end
end
object Table1: TTable
Active = True
TableName = #1041#1072#1079#1072' '#1076#1072#1085#1085#1099#1093'\'#1056#1077#1079#1102#1084#1077
TableType = ttFoxPro
Left = 560
end
object RvDataSetConnection1: TRvDataSetConnection
RuntimeVisibility = rtDeveloper
DataSet = Table1
Left = 520
end
object RvProject1: TRvProject
ProjectFile =
'D:\Documents and Settings\'#1090#1077#1093#1085'2\'#1052#1086#1080' '#1076#1086#1082#1091#1084#1077#1085#1090#1099'\'#1050#1091#1080#1084#1086#1074' '#1070#1088#1072'\'#1050#1091#1088#1089#1086#1074#1072 +
#1103' '#1054#1054#1055'\Project1.rav'
Left = 480
end
end
(Должности)
object Form2: TForm2
Left = 394
Top = 79
Width = 696
Height = 480
Caption = #1056#1077#1075#1080#1089#1090#1088#1072#1094#1080#1103' '#1079#1072#1103#1074#1086#1082
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object Label2: TLabel
Left = 48
Top = 136
Width = 42
Height = 13
Caption = #1042#1086#1079#1088#1072#1089#1090
end
object Label3: TLabel
Left = 72
Top = 160
Width = 20
Height = 13
Caption = #1055#1086#1083
end
object Label4: TLabel
Left = 24
Top = 184
Width = 71
Height = 13
Caption = #1052#1080#1085' '#1079#1072#1088#1087#1083#1072#1090#1072
end
object Label5: TLabel
Left = 32
Top = 208
Width = 59
Height = 13
Caption = #1058#1080#1087' '#1088#1072#1073#1086#1090#1099
end
object Label6: TLabel
Left = 104
Top = 112
Width = 102
Height = 13
Caption = #1048#1085#1092#1086#1088#1084#1072#1094#1080#1103' '#1086' '#1089#1077#1073#1077
end
object Label7: TLabel
Left = 224
Top = 344
Width = 129
Height = 13
Caption = #1050#1086#1085#1090#1072#1082#1090#1085#1072#1103' '#1080#1085#1092#1086#1088#1084#1072#1094#1080#1103':'
Color = clMenuBar
ParentColor = False
end
object Label8: TLabel
Left = 40
Top = 232
Width = 49
Height = 13
Caption = #1060#1072#1084#1080#1083#1080#1103
end
object Label9: TLabel
Left = 64
Top = 256
Width = 22
Height = 13
Caption = #1048#1084#1103
end
object Label10: TLabel
Left = 40
Top = 280
Width = 47
Height = 13
Caption = #1054#1090#1095#1077#1089#1090#1074#1086
end
object Label11: TLabel
Left = 200
Top = 368
Width = 45
Height = 13
Caption = #1058#1077#1083#1077#1092#1086#1085
end
object Label12: TLabel
Left = 216
Top = 392
Width = 28
Height = 13
Caption = 'E-mail'
end
object Bevel1: TBevel
Left = 304
Top = 32
Width = 305
Height = 73
end
object Label1: TLabel
Left = 16
Top = 8
Width = 145
Height = 13
Caption = #1055#1088#1077#1076#1087#1086#1083#1086#1075#1072#1077#1084#1072#1103' '#1076#1086#1083#1078#1085#1086#1089#1090#1100
end
object Label13: TLabel
Left = 376
Top = 16
Width = 124
Height = 13
Caption = #1055#1088#1077#1076#1099#1076#1091#1097#1080#1077' '#1076#1086#1083#1078#1085#1086#1089#1090#1080
end
object Label14: TLabel
Left = 312
Top = 40
Width = 48
Height = 13
Caption = '1 '#1088#1072#1079#1076#1077#1083':'
end
object Label15: TLabel
Left = 384
Top = 48
Width = 58
Height = 13
Caption = #1044#1086#1083#1078#1085#1086#1089#1090#1100
end
object Label16: TLabel
Left = 384
Top = 72
Width = 66
Height = 13
Caption = #1057#1090#1072#1078' '#1088#1072#1073#1086#1090#1099
end
object Bevel2: TBevel
Left = 304
Top = 112
Width = 305
Height = 73
end
object Label17: TLabel
Left = 312
Top = 120
Width = 45
Height = 13
Caption = '2 '#1088#1072#1079#1076#1077#1083
end
object Label18: TLabel
Left = 384
Top = 128
Width = 58
Height = 13
Caption = #1044#1086#1083#1078#1085#1086#1089#1090#1100
end
object Label19: TLabel
Left = 384
Top = 152
Width = 66
Height = 13
Caption = #1057#1090#1072#1078' '#1088#1072#1073#1086#1090#1099
end
object Bevel3: TBevel
Left = 304
Top = 192
Width = 305
Height = 73
end
object Label20: TLabel
Left = 312
Top = 200
Width = 45
Height = 13
Caption = '3 '#1088#1072#1079#1076#1077#1083
end
object Label21: TLabel
Left = 384
Top = 208
Width = 58
Height = 13
Caption = #1044#1086#1083#1078#1085#1086#1089#1090#1100
end
object Label22: TLabel
Left = 384
Top = 232
Width = 66
Height = 13
Caption = #1057#1090#1072#1078' '#1088#1072#1073#1086#1090#1099
end
object DBEdit1: TDBEdit
Left = 96
Top = 136
Width = 121
Height = 21
DataField = 'VOZR'
DataSource = DataSource1
TabOrder = 0
end
object DBEdit3: TDBEdit
Left = 96
Top = 184
Width = 121
Height = 21
DataField = 'MIN_Z_P'
DataSource = DataSource1
TabOrder = 1
end
object DBEdit6: TDBEdit
Left = 96
Top = 232
Width = 121
Height = 21
DataField = 'FAM'
DataSource = DataSource1
TabOrder = 2
end
object DBEdit7: TDBEdit
Left = 96
Top = 256
Width = 121
Height = 21
DataField = 'IMIA'
DataSource = DataSource1
TabOrder = 3
end
object DBEdit8: TDBEdit
Left = 96
Top = 280
Width = 121
Height = 21
DataField = 'OTCH'
DataSource = DataSource1
TabOrder = 4
end
object DBEdit9: TDBEdit
Left = 248
Top = 360
Width = 113
Height = 21
DataField = 'TEL'
DataSource = DataSource1
TabOrder = 5
end
object DBEdit10: TDBEdit
Left = 248
Top = 384
Width = 113
Height = 21
DataField = 'E_MAIL'
DataSource = DataSource1
TabOrder = 6
end
object ComboBox1: TComboBox
Left =
object Label2: TLabel
Left = 48
Top = 136
Width = 42
Height = 13
Top = 128
Width = 58
Height = 13
Caption = #1044#1086#1083#1078#1085#1086#1089#1090#1100
end
object Label19: TLabel
Left = 384
Top = 152
Width = 66
Height = 13
Caption = #1057#1090#1072#1078' '#1088#1072#1073#1086#1090#1099
end
object Bevel3: TBevel
Left = 304
Top = 192
Width = 305
Height = 73
end
object Label20: TLabel
Top = 24
Width = 145
Height = 21
ItemHeight = 13
TabOrder = 7
end
object DBEdit2: TDBEdit
Left = 96
Top = 160
Width = 121
Height = 21
DataField = 'POL'
DataSource = DataSource1
TabOrder = 8
end
object DBEdit4: TDBEdit
Left = 96
Top = 208
Width = 121
Height = 21
DataField = 'TIP_RABOTI'
DataSource = DataSource1
TabOrder = 9
end
object DBEdit5: TDBEdit
Left = 456
Top = 48
Width = 121
Height = 21
DataField = 'DOLJ_1'
DataSource = DataSource1
TabOrder = 10
end
object DBEdit11: TDBEdit
Left = 456
Top = 72
Width = 121
Height = 21
DataField = 'STAJ_1'
DataSource = DataSource1
TabOrder = 11
end
object DBEdit12: TDBEdit
Left = 456
Top = 128
Width = 121
Height = 21
DataField = 'DOLJ_2'
DataSource = DataSource1
TabOrder = 12
end
object DBEdit13: TDBEdit
Left = 456
Top = 152
Width = 121
Height = 21
DataField = 'STAJ_2'
DataSource = DataSource1
TabOrder = 13
end
object DBEdit14: TDBEdit
Left = 456
Top = 200
Width = 121
Height = 21
DataField = 'DOLJ_3'
DataSource = DataSource1
TabOrder = 14
end
object DBEdit15: TDBEdit
Left = 456
Top = 224
Width = 121
Height = 21
DataField = 'STAJ_3'
DataSource = DataSource1
TabOrder = 15
end
object BitBtn1: TBitBtn
Left = 32
Top = 64
Width = 121
Height = 25
Caption = #1055#1086#1080#1089#1082
TabOrder = 16
OnClick = BitBtn1Click
end
object Edit1: TEdit
Left = 456
Top = 400
Width = 137
Height = 21
TabOrder = 17
end
object Edit2: TEdit
Left = 200
Top = 400
Width = 121
Height = 21
TabOrder = 18
end
object BitBtn2: TBitBtn
Left = 248
Top = 352
Width = 75
Height = 25
Caption = #1044#1072#1083#1077#1077
TabOrder = 19
OnClick = BitBtn2Click
end
object BitBtn3: TBitBtn
Left = 400
Top = 352
Width = 75
Height = 25
Caption = #1053#1072#1079#1072#1076
TabOrder = 20
OnClick = BitBtn3Click
end
object DataSource1: TDataSource
DataSet = Table1
Left = 656
Top = 8
end
object Table1: TTable
Active = True
TableName = #1041#1072#1079#1072' '#1076#1072#1085#1085#1099#1093'\'#1056#1077#1079#1102#1084#1077
TableType = ttFoxPro
Left = 624
Top = 8
end
object Table2: TTable
Active = True
TableName = #1041#1072#1079#1072' '#1076#1072#1085#1085#1099#1093'\'#1044#1086#1083#1078#1085#1086#1089#1090#1080
TableType = ttFoxPro
Left = 624
Top = 40
end
end
(Отчет)
object Form5: TForm5
Left = 182
Top = 182
Width = 696
Height = 480
Caption = 'Form5'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
End
Инструкция для пользователя.
Открыть папку с программой.
Найти файл Project1.exe и запустить его.
В открывшемся окне для регистрации перейти на вкладку Регистрация.
На этой вкладке нужно ввести данные о себе, стаж работы и свою предполагаемую должность. Потом нужно нажать кнопку Принять и закрыть окно.
На вкладке должности можно добавлять и удалять должности, для добавления должности нужно внизу страницы нажать на + и написать желаемую должность затем нажать принять, для удаления следует нажать -.
На вкладке поиск можно найти различных кандидатов на работу по Должности, для этого нужно в списке выбрать соответствующую должность и нажать на кнопку поиск, появится список кандидатов, их можно просматривать кнопками Далее и Назад.
На вкладке Отчет можно просматривать принятые за день Заявления о регистрации. Для этого нужно перейти на вкладку Отчет в открывшемся окне появится список принятых за день заявлений о регистрации.
Заключение.
Эта программа может использоваться при подборе кадров в службе трудоустройства и отделах кадров предприятий.
С помощью нее можно сделать самостоятельно заявку на регистрацию о приеме на работу, так же можно внести любые должности. Так же с помощью этой программы можно найти подходящего кандидата на ту или иную должностью. Можно вывести отчет по принятым за день заявкам о приеме на работу.
Литература.
1. Понамарёв В. Delphi Studio 7- Самоучитель; БХВ- Петербург, 2003
2. Гофман В., Хомоненко А. Delphi 6. – СПБ.: БХВ- Петербург, 2001
3. Гофман В., Хомоненко А. Работа с базами данных в Delphi. – СПБ., БХВ- Петербург, 2000.
4. Карпов Б. Delphi 5: учебный курс. – СПБ.: Питер, 2001.