Федеральное агентство по образованию РФ ГОУ ВПО «Волжский государственный инженерно-педагогический университет» кафедра «Математика и информатика» ОТЧЕТ по практике по профилю специальности Студента Дремина А.С. Группы № ИВТ – 05 - 1 База практики Администрация Шахунского района Руководитель от организации Шибаева Т.А. Руководитель от ВГИПУ Ширшова Н.Г. г. Н. Новгород 2008 г. Содержание: Введение…………………………………………………………………………...3 Раздел 2. Индивидуальное задание (Разработка или модификация баз данных)……………………………………………………………………………5 2.1. Постановка задачи…………………………………………………………5 2.2. Алгоритм решения задачи………………………………………………...6 2.3. Программный продукт для решения задачи……………………………..8 2.4. Руководство пользователя по эксплуатации, разработанной автоматизированной системе……………………………………………12 Заключение……………………………………………………………………….19 Список литературы………………………………………………………………20 Приложение………………………………………………………………………21 2 Введение Цели практики - получение практического представления о технологии программирования, информационных и программных отделов предприятия, а также закрепление и углубление теоретических знаний. Технологическая практика направлена на: Выполнение государственных требований к минимуму содержания и уровню подготовки выпускников в соответствии с получаемой специальностью и присваиваемой квалификацией; На закрепление, расширение, углубление и систематизацию знаний, и приобретение первоначального практического опыта. Основными задачами технологической практики являются: Приобретение практических умений и навыков по видам деятельности техника; Подготовка будущего специалиста к самостоятельной трудовой деятельности; Развитие и углубление навыков разработки и настройки программного обеспечения; Изучение и освоение программных систем, пакетов прикладных программ (ППП), специализированных программных продуктов. В процессе прохождения практики я должна уметь: Пользоваться технической документацией по автоматизированной обработке информации для конкретных систем; Разработать алгоритм программной реализации поставленной задачи; Создать программный продукт по разработанному алгоритму; Выполнить отладку и тестирование программного продукта; Применять математические методы для решения оптимизационных задач; Составлять инструкцию к программным средствам; Реализовать функции программной защиты информации. Задачами моей технологической практики являются: Закрепление, углубление и совершенствование теоретических знаний; 3 Формирование и развитие профессиональных умений и навыков, профессионального сознания и профессионально значимых качеств личности; Развитие профессиональной культуры; Формирование целостного представления об информационном и технологическом процессе современного предприятия; 4 Раздел 2. Индивидуальное задание (Разработка или модификация баз данных) 2.1. Постановка задачи Требуется создать в среде Delphi приложение, предназначенное для ведения учета о доходах работников администрации. База данных состоит из 6 таблиц: справочника «Отдел», «Должность», «Начисление», «Сотрудники», «Данные о сотрудниках», «Отработанные дни» и операционных таблиц «Просмотр», «Заработная плата». Таблицы необходимо создать и хранить в формате Paradox. Необходимо будет создать форму, которая будет называться «Добавление сотрудника», из которой введенная информация автоматически будет отправляться в таблицы «Сотрудники» и «Данные о сотрудниках». В меню «Справка» на вкладке «О программе» разместить информацию о работе программы. Программа представляет собой список сотрудников, их должность, в каком отделе работаю, заработная плата по месяцам. Список можно обновлять, а так же из него можно извлекать данные на какую-либо сотрудника, задав предварительную характеристику. Программа должна иметь простой пользовательский интерфейс. 5 2.2. Алгоритм решения задачи Разработать базу данных, которая позволит получать необходимую информацию о структуре предприятия, о ее сотрудниках и об их доходах за любой период времени. Данная БД должна быть простой и удобной в использовании для пользователя. Для создания базы данных я проанализировала и изучила примерную программу по начислению заработной платы со своим руководителем. В ходе практики мной были рассмотренные документы, справки, материалы. Пришлось изучить определенную литературу по начислению зарплаты. Возникли некоторое затруднения, но мой руководитель все доступно мне объяснил. После всего изученного я приступила к созданию модели программы. На черновике прорисовала все допустимые варианты работы программы. Нашла наиболее допустимый вариант и приступила к созданию. В создание программы входят разработка основного меню и создание БД. Программа создается и работает в несколько этапов. На первой и главной форме разместим основное меню всей программы, которое включает в себя: Файл Справочник Выход Отчеты Справка Отдел Добавление сотрудника О программе Должность Просмотр Об организации Начисление Заработная плата Лицензия Сотрудники Данные о сотрудниках Отработанные дни По каждому пункту будет осуществляться переход на указанную форму, где будет отражаться определенная информация. Структура базы данных включает в себя 6 таблицы (отдел, должность, начисление, сотрудники, данные о сотрудниках, отработанные дни). Таблица «Отдел» содержит информацию обо всех имеющихся отделов в администрации. Таблица «Должность» содержит информацию обо все имеющихся должностей в администрации. Таблица «Начисление» хранит 6 оклад сотрудников. Таблицы «Сотрудники» и «Данные о сотрудниках» будет заполняться с помощью формы «Добавления сотрудника», в которых будет отображена информация о сотрудниках. Таблица «Отработанные дни» включает себя время работы сотрудника по месяцам. Запросы базы данных сформированы на основе таблиц с данными. С помощью запросов можно получить информацию о конкретном сотруднике, в каком отделе он работает и на какой должности находится, а так же его доходы по месяцам. Описание всех кнопок и процедур смотри в приложении. 7 2.3. Программный продукт для решения задачи В качестве индивидуального задания разработана структуру базы данных с помощью средств Delphi 7, которая предназначена для хранения необходимой информации о структуре предприятия, о ее сотрудниках и об их доходах за любой период времени. Все операции необходимые для создания информационной системы выполняются с помощью программы Database Desktop, Конструктора формы и Инспектора объектов. Работа над информационной системой состоит из следующих основных этапов: создание БД; создание приложения. Кроме приложения и БД, в информационную систему также входят вычислительная система и СУБД. В качестве СУБД выбирается Delphi. Для создания приложений БД используются компоненты. Кроме компонентов, Delphi предоставляет разработчику специальные объекты, например, объекты типа Field. Как и другие элементы управления Delphi, связанные с БД компоненты бывают визуальные и не визуальные. Нужные компоненты, используемые для работы с БД, находятся на различных вкладках: - на странице Data Access находятся не визуальные компоненты, предназначенные для организации доступа к данным. Здесь выбирается DataSource (источник данных). - на странице Data Controls расположены визуальные компоненты, предназначенные для управления данными. Здесь выбирается DBGrid (сетка, или таблица); - страница BDE стала включать на один компонент меньше и содержит компоненты, предназначенные для управления данными с использованием BDE. Здесь выбираем Table и Query (набор данных, основанный на таблице БД). Так как для доступа к файлам (таблицам) базы данных библиотека BDE использует не имя каталога, в котором находятся файлы, а его псевдоним, то 8 перед тем, как приступить к созданию таблиц новой базы данных, необходимо создать псевдоним для этой базы данных. Таким образом, процесс создания базы данных может быть представлен как последовательность следующих шагов: создание каталога; создание псевдонима; создание таблиц. После того как определена структура записей базы данных, можно приступить непосредственно к созданию таблицы. Таблицы создаются при помощи входящей в состав Delphi утилиты Database Desktop. Для того чтобы создать новую таблицу, нужно выбором из меню Tools команды Database Desktop запустить Database Desktop. Затем в появившемся окне утилиты Database Desktop надо из меню File выбрать команду New и в появившемся списке выбрать тип создаваемого файла — Table. Затем в открывшемся диалоговом окне Create Table следует выбрать тип создаваемой таблицы (значением по умолчанию является тип Paradox 7). В результате открывается диалоговое окно Create Paradox 7 Table, в котором можно определить структуру записей таблицы. Для каждого поля таблицы необходимо задать имя, тип и, если нужно, размер поля. Имя поля используется для доступа к данным. В качестве имени поля, которое вводится в колонку Field Name, можно использовать последовательность из букв латинского алфавита и цифр длиной не более 25 символов. Index (Первичный индекс) для ключа. После нажатия кнопки Open из выбранной таблицы в новую копируются описания полей, а также те элементы, для которых установлен флажок. Если какой-либо элемент в структуре копируемой таблицы отсутствует, то состояние флажка не имеет значения. Впоследствии скопированную структуру можно настраивать, изменяя, добавляя или удаляя ее отдельные элементы. 9 После определения структуры таблицы ее необходимо сохранить, нажав кнопку Save As и указав расположение таблицы на диске и ее имя. В результате на диск записывается новая таблица, первоначально пустая, при этом все необходимые файлы создаются автоматически. При создании приложения главной задачей является конструирование форм, в простейшем случае – одной формы. Вид формы приложения на этапе проектирования, где в форме размещены компоненты Tablel, DataSourcel, DBGridl. Компонент Tablel обеспечивает взаимодействие с таблицей БД. Для связи с требуемой таблицей нужно установить в соответствующие значения свойство DataBaseName, указывающее путь к БД, и свойство TableName, указывающее имя таблицы. После задания таблицы для открытия набора данных свойство АCTIV должно быть установлено в значение True. Значение True свойства Active нужно устанавливать после задания таблицы БД т. е. после установки нужных значений свойств DataBaseName и TableName. Имя таблицы лучше выбирать в раскрывающемся списке в поле значения свойства TableName. Если путь к БД (свойство DataBaseName) задан правильно, то в списке отображаются главные файлы всех доступных таблиц. Компонент DataSourcel является промежуточным звеном между компонентом Tablel, соединенным с реальной таблицей БД, и визуальными компонентами: DBGridl и DBNavigatorl, с помощью которых пользователь взаимодействует с этой таблицей. На компонент Tablel, с которым связан компонент DataSourcel, указывает свойство DataSet последнего. Компонент DBGridl отображает содержимое таблицы БД в виде сетки, в которой столбцы соответствуют полям, а строки – записям таблицы. По умолчанию пользователь может просматривать и редактировать данные. Компонент DBNavigatorl позволяет пользователю перемещаться по таблице, редактировать, вставлять и удалять записи. Компоненты DBGridl и DBNavigatorl связываются со своим источником данных – компонентом DataSourcel – через свойство DataSource. 10 Разрабатывая приложение, можно задавать значения всех свойств компонентов с помощью Инспектора объектов. При этом требуемые значения либо непосредственно вводятся в поле, либо выбираются в раскрывающихся списках. В последнем случае приложение создается с помощью мыши и не требует набора каких-либо символов на клавиатуре. В дальнейшем при организации приложений, использующих механизм доступа BDE, предполагается, что названные компоненты связаны между собой именно таким образом, и свойства, с помощью которых эта связь осуществляется, не рассматриваются. Для автоматизации процесса создания формы, использующей компоненты для операций с БД, можно вызвать Database Form Wizard (Мастер форм баз данных). Этот Мастер расположен на странице Business Хранилища объектов. Мастер позволяет создавать формы для работы с отдельной таблицей и со связанными таблицами, при этом можно использовать наборы данных Table или Quегу. 11 2.4. Руководство пользователя по эксплуатации, разработанной автоматизированной системе Программа «База данных Администрации Шахунского района» предназначена для хранения необходимой информации о структуре предприятия, о ее сотрудниках и об их доходах за любой период времени. Данная программа имеет простой пользовательский интерфейс. Для запуска этой программы необходимо запустить программу Borland Delphi 7. Запустив «Базу данных Администрации Шахунского района» с помощью клавиши (F9), открывается главная форма. Данная форма выглядит следующим образом: На форме содержится меню, которое включает в себя: Файл; Справочник; Отчеты; Справка. Нажав на меню Файл/Выход мы выйдем из программы. Нажав на меню Справочник, откроются подпункты: Отдел, Должность, Начисление, Сотрудники, Данные о сотрудниках, Отработанные дни. 12 Рассмотрим вышеперечисленные подпункты: На форме «Отдел» идет заполнение таблицы. В таблицу заносятся отделы администрации. В таблицу можно добавлять новые отделы и удалять старые отделы. На форме «Должность» идет заполнение таблицы. В таблицу заносятся должности работников. В таблицу можно добавлять новые должности и удалять должности. 13 На форме «Начисление» идет заполнение таблицы. В таблицу заносятся должности, которые выбираются из списка и проставляется оклад каждой должности. В таблице можно добавлять и удалять строки. На форме «Сотрудники» идет автоматическое заполнение таблицы с формы «Добавление сотрудника», которая находится в меню Отчеты/Добавление сотрудника. В данной таблице можно просмотреть информацию о сотрудниках администрации, как в целом, так и в отдельности по каждому сотруднику. Реализуется с помощью операции «поиск». Для этого нужно ввести фамилию, поставить флажок «По фамилии» и нажать кнопку поиск. Выведется информация о нужном сотруднике. Пример, введем в строку для поиска фамилию, например, Смирнов. Программа найдет сотрудника с введенной фамилией и данные о нем. Выглядит следующим образом: Для того чтобы обратно вернуться в таблицу необходимо нажать кнопку «Возврат в таблицу» таблица вернется в первоначальное состояние. С помощью операции «сортировка» данные в таблице выстроятся в алфавитном порядке. Кнопка «Добавить» нужна для добавления нового сотрудника, который пришел на работу. Программа автоматически переходит на форму «Добавление сотрудника», где вводим информацию о 14 новом сотруднике. Кнопка «Удалить» нужна для удаления сотрудника из базы. На форме «Данные о сотруднике» идет автоматическое заполнение таблицы с формы «Добавление сотрудника», которая находится в меню Отчеты/Добавление сотрудника. В данной таблице отражается информацию о сотрудниках по индивидуальному номеру, а так же табельный номер, номер приказа, отдел и должность. На форме «Отработанные дни» идет заполнение таблицы. Выбираем нужный отдел, должность и поле Фамилия выбираем нужную фамилию. В полях месяц, количество рабочих дней и количество отработанных дней проставляем нежную информацию. Затем нажимаем по кнопке «Добавить в таблицу» и в таблицу заносятся месяц количество отработанных дней по каждому работнику и количество рабочих дней в месяце. Так же на форме отображается подсказка, сколько рабочих дней в каждом месяце. Нажав на меню Отчеты, откроются подпункты: Добавление сотрудника, Просмотр, Заработная плата. 15 Рассмотрим вышеперечисленные подпункты: На форме «Добавление сотрудника» вводится информация о работнике администрации. Данная информация отправляется автоматически в таблицы «Сотрудники» и «Данные о сотруднике». Если одновременно вводится несколько работников, то после заполнения первого необходимо нажать на кнопку «Добавить еще». Для завершения работы нажать кнопку «закрыть». На форме «Просмотр» отображается информация о всех работниках администрации. С помощью операции «Поиск» можно просмотреть информацию о сотруднике. Для этого в поле «Данные для поиска» нужно ввести либо фамилию, либо отдел, либо должность и соответственно поставить галочку «По фамилии», «По отделу», «По должности» и нажать кнопку поиск. Если поиск осуществлялся по фамилии, выведется информация о конкретном сотруднике. Если по отделу, то все сотрудники, 16 работающие в этом отделе. Если же по должности, все сотрудники с этой должностью. Аналогично осуществляется сортировка. Кнопка «Возврат в таблицу» возвращает все в первоначальный вид. На форме «Заработная плата» отображается информация о доходах работников администрации. С помощью операции «поиск» можно просмотреть информацию о сотруднике. Для этого в поле «Данные для поиска» нужно ввести либо фамилию, либо отдел, либо должность, либо месяц и соответственно поставить галочку «По фамилии», «По отделу», «По должности», «По месяцу» и нажать кнопку «Поиск». Если поиск осуществлялся по фамилии, выведется информация о конкретном сотруднике. Если по отделу, то все сотрудники, работающие в этом отделе. Если же по должности, все сотрудники с этой должностью. Если по месяцу, то соответствующий месяц. Аналогично осуществляется сортировка. Кнопка «Возврат в таблицу» возвращает все в первоначальный вид. Нажав на меню Справка, откроются подпункты: О программе, Об организации, Лицензия. На форме «О программе» отражена информация по эксплуатации, разработанной программы. 17 На форме «Об организации» отражена информация об Администрации Шахунского района. На форме «Лицензия» отражена информация о разработчике программы. 18 Заключение В течение технологической практики выполнено индивидуальное задание, которое заключалось в разработке структуры базы данных, отображающую условия запроса по данным связанных таблиц и описание процессов обработки данных Администрации Шахунского района. Данная программа проста и удобна для использования. В период моей практики, которая длилась со 2 июня по 13 июля 2008 года, мне необходимо было закрепить, углубить и усовершенствовать теоретические знания; сформировать и развить профессиональные умения и навыки, профессиональные сознание и профессионально значимые качества личности; развить профессиональную культуру. 19 Список литературы: 1. Бобровский С. Delphi 7. Учебный курс. - СПб: Питер, 2003 2. Бабушкина И., Окулов С.. Практикум по объектноориентированному программированию.– М.: БИНОМ. Лаборатория Знаний, 2004. 3. Гутман Г.Н. Учебные мини – проекты на Delphi. // Библиотечка «Первого сентября». Серия «Информатика». – 2005. - № 3. 4. Культин Н.. Основы программирования в Delphi –7. - СПб.: БХВ – Петербург, 2005. 20 ПРИЛОЖЕНИЕ 21 Описание программы 1 Форма TFrmBD: «База данных: Администрация Шахунского района» unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, XPMan, StdCtrls, ExtCtrls, DB, DBTables, jpeg; type TFrmBD = class(TForm) MainMenu1: TMainMenu; XPManifest1: TXPManifest; N1: TMenuItem; N2: TMenuItem; N3: TMenuItem; N5: TMenuItem; N6: TMenuItem; N7: TMenuItem; N8: TMenuItem; N9: TMenuItem; N10: TMenuItem; Label1: TLabel; Label2: TLabel; N12: TMenuItem; Sotrudniki: TTable; DS_Sotrudniki: TDataSource; SotrudnikiFamiliya: TStringField; SotrudnikiImya: TStringField; SotrudnikiOtchestvo: TStringField; SotrudnikiOblast: TStringField; SotrudnikiRaion: TStringField; SotrudnikiGorod: TStringField; SotrudnikiUlica: TStringField; SotrudnikiDom: TFloatField; SotrudnikiKorpus: TFloatField; SotrudnikiKvartira: TFloatField; SotrudnikiDataRegistracii: TDateField; SotrudnikiDataRojdenya: TDateField; SotrudnikiNomerPasporta: TFloatField; SotrudnikiDataVydachi: TDateField; SotrudnikiPasportVydan: TStringField; Dolzhnosti: TTable; DolzhnostiDoljnost: TStringField; Otdel: TTable; OtdelOtdel: TStringField; N13: TMenuItem; N14: TMenuItem; N15: TMenuItem; N16: TMenuItem; N4: TMenuItem; DS_Otdell: TDataSource; T_Otdell: TTable; DS_Dol: TDataSource; DS_Otdel: TDataSource; 22 T_OtdellID_D: TFloatField; T_OtdellTab_Num: TFloatField; T_OtdellPrik_Num: TFloatField; T_OtdellOtdel: TStringField; T_OtdellDol: TStringField; SotrudnikiID_S: TFloatField; SotrudnikiINN: TStringField; N17: TMenuItem; Image2: TImage; N11: TMenuItem; DS_Dni: TDataSource; Dni: TTable; Label3: TLabel; Timer1: TTimer; Label4: TLabel; procedure N1Click(Sender: TObject); procedure N3Click(Sender: TObject); procedure N10Click(Sender: TObject); procedure N4Click(Sender: TObject); procedure N6Click(Sender: TObject); procedure N5Click(Sender: TObject); procedure N8Click(Sender: TObject); procedure N9Click(Sender: TObject); procedure N11Click(Sender: TObject); procedure N12Click(Sender: TObject); procedure N14Click(Sender: TObject); procedure N16Click(Sender: TObject); procedure N15Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); private { Private declarations } public { Public declarations } end; var FrmBD: TFrmBD; implementation uses Unit2, Unit3, Unit4, Unit5, Unit6, Unit7, Unit8, Unit9, Unit10, Unit11, Unit12, Unit13; {$R *.dfm} // Процедура нажатия вкладки Об организация procedure TFrmBD.N1Click(Sender: TObject); begin FrmOrg.ShowModal; end; // Процедура нажатия вкладки Просмотр procedure TFrmBD.N3Click(Sender: TObject); begin FrmPros.ShowModal; end; // Процедура нажатия вкладки Выход procedure TFrmBD.N10Click(Sender: TObject); begin Close; 23 end; // Процедура нажатия вкладки Добавление procedure TFrmBD.N4Click(Sender: TObject); begin frmADD.ShowModal; FrmBD.Sotrudniki.Insert; end; // Процедура нажатия вкладки Зарплата procedure TFrmBD.N6Click(Sender: TObject); begin FrmZp.ShowModal; end; // Процедура нажатия вкладки Поиск procedure TFrmBD.N5Click(Sender: TObject); begin frmDol.Showmodal; end; // Процедура нажатия вкладки О программе procedure TFrmBD.N8Click(Sender: TObject); begin FrmSpravka.ShowModal; end; // Процедура нажатия вкладки Лицензия procedure TFrmBD.N9Click(Sender: TObject); begin FrmLic.Visible:=True; FrmLic.Focused; end; // Процедура нажатия вкладки Отработанные дни procedure TFrmBD.N11Click(Sender: TObject); begin frmDni.ShowModal; end; // Процедура нажатия вкладки Отдел procedure TFrmBD.N12Click(Sender: TObject); begin frmOtdel.ShowModal; end; procedure TFrmBD.N14Click(Sender: TObject); begin Nachis.ShowModal; end; //Процедура нажатия вкладки Оттдел/Должность procedure TFrmBD.N16Click(Sender: TObject); begin frmOtdell.ShowModal; end; //Процедура нажатия вкладки Сотрудники procedure TFrmBD.N15Click(Sender: TObject); begin FrmSotrud.ShowModal; end; procedure TFrmBD.Timer1Timer(Sender: TObject); begin 24 timer1.Enabled:=true; Label3.Caption:=timetostr(now); //Установка времени Label4.Caption:=datetostr(now); //Установка даты end; end. 2 Форма TFrmOrg: «Об организация» unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, XPMan, StdCtrls, ExtCtrls, Buttons; type TFrmOrg = class(TForm) XPManifest1: TXPManifest; Label1: TLabel; Label2: TLabel; private { Private declarations } public { Public declarations } end; var FrmOrg: TFrmOrg; implementation uses Unit1, Unit3, Unit4, Unit5, Unit6, Unit7, Unit8, Unit9, Unit10, Unit11, Unit12; {$R *.dfm} end. 3 Форма TFrmPros: «Просмотр» unit Unit3; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, XPMan, Grids, DBGrids, DB, DBTables, StdCtrls, Buttons, ExtCtrls, DBCtrls, Mask; type TFrmPros = class(TForm) GroupBox2: TGroupBox; RFam: TRadioButton; ROtdel: TRadioButton; RDol: TRadioButton; GroupBox3: TGroupBox; DBGrid1: TDBGrid; DataSource1: TDataSource; Qprosm: TQuery; QFindSort: TQuery; EFind: TEdit; BitBtn1: TBitBtn; BitBtn2: TBitBtn; BitBtn4: TBitBtn; procedure BitBtn1Click(Sender: TObject); procedure BitBtn2Click(Sender: TObject); 25 procedure BitBtn4Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var FrmPros: TFrmPros; implementation uses Unit2,Unit1, Unit4, Unit5, Unit6, Unit7, Unit8, Unit9, Unit10, Unit11, Unit12; {$R *.dfm} //Процедура нажатия кнопки Возврат procedure TFrmPros.BitBtn1Click(Sender: TObject); begin DataSource1.DataSet:=Qprosm; end; //Процедура нажатия кнопки Поиск procedure TFrmPros.BitBtn2Click(Sender: TObject); Var find:String; // объявление новой переменной begin if RFam.Checked then find:='Familiya'; if ROtdel.Checked then find:='Otdel'; if RDol.Checked then find:='Dol'; QFindSort.Close; // закрыть файл-результат выполнения предыдущего запроса QFindSort.SQL.Clear; // удалить текст предыдущего запроса // записываем новый запрос в свойство SQL QFindSort.SQL.Add('Select Tab_Num, Prik_Num,Familiya,Imya, Otchestvo,'); QFindSort.SQL.Add('Otdel,Dol'); QFindSort.SQL.Add('from Sotr.db,Tab2.db'); QFindSort.SQL.Add('where ID_D=ID_S'); QFindSort.SQL.Add(' and '+ find+'='+ chr(39)+Efind.Text+ chr(39)); QFindSort.Active:=true; // откроем базу данных DataSource1.DataSet:=QFindSort; ; // источник данных - таблица end; //Процедура нажатия кнопки Сортировка procedure TFrmPros.BitBtn4Click(Sender: TObject); Var Sort:String; // объявление новой переменной begin if RFam.Checked then Sort:='Familiya'; if ROtdel.Checked then Sort:='Otdel'; if RDol.Checked then Sort:='Dol'; QFindSort.Close; // закрыть файл-результат выполнения предыдущего запроса QFindSort.SQL.Clear; // удалить текст предыдущего запроса // записываем новый запрос в свойство SQL QFindSort.SQL.Add('Select Tab_Num, Prik_Num,Familiya,Imya, Otchestvo,'); QFindSort.SQL.Add('Otdel,Dol'); QFindSort.SQL.Add('from Sotr.db,Tab2.db'); QFindSort.SQL.Add('where ID_D=ID_S'); QFindSort.SQL.Add('order by '+ Sort ); QFindSort.Active:=true; // откроем базу данных DataSource1.DataSet:=QFindSort; ; // источник данных - таблица end; end. 26 4 Форма TfrmADD: «Добавление сотрудника» unit Unit4; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, XPMan, StdCtrls, ExtCtrls, Buttons, Mask, DBCtrls, ComCtrls; type TfrmADD = class(TForm) XPManifest1: TXPManifest; GroupBox1: TGroupBox; Label2: TLabel; Label3: TLabel; Label4: TLabel; GroupBox2: TGroupBox; GroupBox3: TGroupBox; GroupBox4: TGroupBox; GroupBox5: TGroupBox; GroupBox6: TGroupBox; DBEdit1: TDBEdit; DBEdit2: TDBEdit; DBEdit3: TDBEdit; DBEdit9: TDBEdit; GroupBox7: TGroupBox; GroupBox8: TGroupBox; DateR: TDateTimePicker; DBEdit4: TDBEdit; DateOut: TDateTimePicker; DBMemo1: TDBMemo; DBEdit12: TDBEdit; DBEdit13: TDBEdit; DBEdit14: TDBEdit; DateReg: TDateTimePicker; Label9: TLabel; Label10: TLabel; Label11: TLabel; BitBtn2: TBitBtn; DBEdit7: TDBEdit; Label1: TLabel; DBEdit8: TDBEdit; Label5: TLabel; DBEdit10: TDBEdit; Label7: TLabel; DBEdit11: TDBEdit; Label8: TLabel; DBEdit6: TDBEdit; Label13: TLabel; DBEdit15: TDBEdit; Label14: TLabel; Label15: TLabel; Label16: TLabel; DBLookupComboBox1: TDBLookupComboBox; DBLookupComboBox2: TDBLookupComboBox; 27 BitBtn3: TBitBtn; Label12: TLabel; procedure BitBtn2Click(Sender: TObject); procedure FormActivate(Sender: TObject); procedure BitBtn3Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var frmADD: TfrmADD; implementation uses Unit2, Unit3, Unit1, Unit5, Unit6, Unit7, Unit8, Unit9, Unit10, Unit11, Unit12; {$R *.dfm} // Процедура нажатия кнопки Закрыть procedure TfrmADD.BitBtn2Click(Sender: TObject); begin FrmBD.Sotrudniki['DataRojdenya']:=DateR.Date; //добавление в таблицу с формы FrmBD.Sotrudniki['DataVydachi']:=DateOut.Date; //добавление в таблицу с формы FrmBD.Sotrudniki['DataRegistracii']:=DateReg.Date; //добавление в таблицу с формы FrmBD.Sotrudniki['ID_S']:=FrmBD.Sotrudniki.RecordCount+1; FrmBD.T_Otdell['ID_D']:=FrmBD.Sotrudniki.RecordCount+1; FrmBD.T_Otdell.Next; FrmBD.Sotrudniki.Next; Close; end; // активизация формы procedure TfrmADD.FormActivate(Sender: TObject); begin FrmBD.Sotrudniki.insert; FrmBD.T_Otdell.Insert; end; // Процедура нажатие кнопки Добавить еще procedure TfrmADD.BitBtn3Click(Sender: TObject); begin FrmBD.Sotrudniki['DataRojdenya']:=DateR.Date; FrmBD.Sotrudniki['DataVydachi']:=DateOut.Date; FrmBD.Sotrudniki['DataRegistracii']:=DateReg.Date; FrmBD.Sotrudniki['ID_S']:=FrmBD.Sotrudniki.RecordCount+1; FrmBD.T_Otdell['ID_D']:=FrmBD.Sotrudniki.RecordCount+1; FrmBD.T_Otdell.insert; FrmBD.Sotrudniki.insert; end; end. 5 Форма TFrmZP: «Заработная плата» unit Unit5; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, XPMan, Menus, DB, Grids, DBGrids, DBTables, ExtCtrls, DBCtrls, StdCtrls, Buttons, Mask; 28 type TFrmZP = class(TForm) DBGrid1: TDBGrid; DataSource1: TDataSource; Query1: TQuery; GroupBox3: TGroupBox; GroupBox2: TGroupBox; RFam: TRadioButton; ROtdel: TRadioButton; RDol: TRadioButton; BitBtn3: TBitBtn; BitBtn4: TBitBtn; BitBtn5: TBitBtn; QFindSort: TQuery; Efind: TEdit; procedure FormActivate(Sender: TObject); procedure BitBtn3Click(Sender: TObject); procedure BitBtn4Click(Sender: TObject); procedure BitBtn5Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var FrmZP: TFrmZP; implementation uses Unit2, Unit3, Unit4, Unit1, Unit6, Unit7, Unit8, Unit9, Unit10, Unit11, Unit12; {$R *.dfm} procedure TFrmZP.FormActivate(Sender: TObject); begin Query1.Active:=false; Query1.Active:=true; // откроем базу данных end; // Процедура нажатия кнопки Поиск procedure TFrmZP.BitBtn3Click(Sender: TObject); Var find:String; begin if RFam.Checked then find:='Familiya'; if ROtdel.Checked then find:='Otdel'; if RDol.Checked then find:='Dol'; if find<>'' then begin QFindSort.Close; // закрыть файл-результат выполнения предыдущего запроса QFindSort.SQL.Clear;// удалить текст предыдущего запроса // записываем новый запрос в свойство SQL QFindSort.SQL.Add('Select Mecyac, Kol_D, Kol_R, familiya,Imya, Otchestvo, Otdel, dol,'); QFindSort.SQL.Add ('Oklad, (Oklad*40/100) as Avans, (Oklad*0.13) as PodNal,'); QFindSort.SQL.Add (' (Avans+Oklad*0.13) as Uderjano,'); QFindSort.SQL.Add ('(Oklad-Avans+Oklad*0.13) as Itogo'); QFindSort.SQL.Add ('from Tab2.db, Nach.db, Sotr.db, dni.db '); QFindSort.SQL.Add ('where (ID_S=ID_D) and ( dol=dol_Z) and (ID_S=ID_M) '); 29 QFindSort.SQL.Add(' and '+ find+'='+ chr(39)+Efind.Text+ chr(39)); QFindSort.Active:=true;// откроем базу данных DataSource1.DataSet:=QFindSort; // источник данных - таблица end; end; // Процедура нажатия кнопки Сортировки procedure TFrmZP.BitBtn4Click(Sender: TObject); Var Sort:String; begin if RFam.Checked then Sort:='Familiya'; if ROtdel.Checked then Sort:='Otdel'; if RDol.Checked then Sort:='Dol'; QFindSort.Close; // закрыть файл-результат выполнения предыдущего запроса QFindSort.SQL.Clear;// удалить текст предыдущего запроса // записываем новый запрос в свойство SQL QFindSort.SQL.Add('Select Mecyac, Kol_D, Kol_R, familiya,Imya, Otchestvo, Otdel, dol,'); QFindSort.SQL.Add ('Oklad, (Oklad*40/100) as Avans, (Oklad*0.13) as PodNal,'); QFindSort.SQL.Add (' (Avans+Oklad*0.13) as Uderjano,'); QFindSort.SQL.Add ('(Oklad-Avans+Oklad*0.13) as Itogo'); QFindSort.SQL.Add ('from Tab2.db, Nach.db, Sotr.db, dni.db '); QFindSort.SQL.Add ('where (ID_S=ID_D) and ( dol=dol_Z) and (ID_S=ID_M) '); QFindSort.Active:=true;// откроем базу данных DataSource1.DataSet:=QFindSort; // источник данных - таблица end; // Процедура нажатия кнопки Возврата procedure TFrmZP.BitBtn5Click(Sender: TObject); begin DataSource1.DataSet:=Query1; // источник данных - таблица end; end. 6 Форма TfrmDol: «Должность» unit Unit6; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, XPMan, ExtCtrls, DBCtrls, StdCtrls, DB, Grids, DBGrids, DBTables; type TfrmDol = class(TForm) Table1: TTable; DBGrid1: TDBGrid; DataSource1: TDataSource; Button1: TButton; Button3: TButton; Button4: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } 30 public { Public declarations } end; var frmDol: TfrmDol; implementation uses Unit2, Unit3, Unit4, Unit1, Unit5, Unit7, Unit8, Unit9, Unit10, Unit11, Unit12; {$R *.dfm} // Процедура нажатия кнопки Добавить procedure TfrmDol.Button1Click(Sender: TObject); begin Table1.Insert; end; // Процедура нажатия кнопки Предыдущий procedure TfrmDol.Button3Click(Sender: TObject); begin Table1.Prior; end; // Процедура нажатия кнопки Следующий procedure TfrmDol.Button4Click(Sender: TObject); begin Table1.Next; end; // Процедура нажатия кнопки Удалить procedure TfrmDol.Button2Click(Sender: TObject); begin Table1.Delete; end; end. 7 Форма TFrmSpravka: «О программе » unit Unit7; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, XPMan, OleCtrls, SHDocVw; type TFrmSpravka = class(TForm) WebBrowser1: TWebBrowser; private { Private declarations } public { Public declarations } end; var FrmSpravka: TFrmSpravka; implementation uses Unit2, Unit3, Unit4, Unit5, Unit6, Unit1, Unit8, Unit9, Unit10, Unit11, Unit12; {$R *.dfm} end. 8 Форма TFrmLic: «Лицензия» unit Unit8; 31 interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, XPMan, StdCtrls, Buttons, jpeg, ExtCtrls; type TFrmLic = class(TForm) XPManifest1: TXPManifest; BitBtn1: TBitBtn; Image1: TImage; Label1: TLabel; procedure N12Click(Sender: TObject); procedure BitBtn1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var FrmLic: TFrmLic; implementation uses Unit2, Unit3, Unit4, Unit5, Unit6, Unit7, Unit1, Unit9, Unit10, Unit11, Unit12; {$R *.dfm} procedure TFrmLic.N12Click(Sender: TObject); begin end; // Процедура нажатия кнопки ОК procedure TFrmLic.BitBtn1Click(Sender: TObject); begin close; end; end. 9 Форма: «Сотрудники» unit Unit9; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, XPMan, ExtCtrls, DBCtrls, StdCtrls, Grids, DBGrids, DB, DBTables, Mask, Buttons; type TFrmSotrud = class(TForm) DBGrid1: TDBGrid; GroupBox2: TGroupBox; Button2: TButton; Button4: TButton; Button3: TButton; Button1: TButton; RadioButton1: TRadioButton; Edit1: TEdit; BitBtn3: TBitBtn; BitBtn1: TBitBtn; BitBtn2: TBitBtn; QDel: TQuery; 32 procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure BitBtn3Click(Sender: TObject); procedure BitBtn1Click(Sender: TObject); procedure BitBtn2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var FrmSotrud: TFrmSotrud; implementation uses Unit1, Unit3, Unit4, Unit5, Unit6, Unit10, Unit7, Unit8, Unit2, Unit11, Unit12; {$R *.dfm} // Процедура нажатия кнопки Добавить procedure TFrmSotrud.Button1Click(Sender: TObject); begin frmADD.Visible:=True; frmADD.Focused; FrmSotrud.Visible:=False; end; // Процедура нажатия кнопки Удалить из нескольких таблиц procedure TFrmSotrud.Button2Click(Sender: TObject); var int:integer; begin int:=strToInt(FrmBD.Sotrudniki['ID_S']); QDel.Close; Qdel.SQL.Clear; Qdel.SQL.Add('Delete from Sotr.db where ID_D='+chr(39)+inttostr(int)+chr(39)); QDel.ExecSQL; QDel.Close; Qdel.SQL.Clear; Qdel.SQL.Add('Delete from Dni.db where ID_M='+chr(39)+inttostr(int)+chr(39)); QDel.ExecSQL; QDel.Close; Qdel.SQL.Clear; Qdel.SQL.Add('Delete from Tab2.db where ID_S='+chr(39)+inttostr(int)+chr(39)); QDel.ExecSQL; end; // Процедура нажатия кнопки Предыдущий procedure TFrmSotrud.Button3Click(Sender: TObject); begin FrmBD.Sotrudniki.Prior; end; // Процедура нажатия кнопки Следующий procedure TFrmSotrud.Button4Click(Sender: TObject); begin 33 FrmBD.Sotrudniki.Next; end; // Процедура нажатия кнопки Поиск procedure TFrmSotrud.BitBtn3Click(Sender: TObject); var s:string; begin FrmBD.Sotrudniki.Filtered:=True; s:=Edit1.Text+'*'; If RadioButton1.Checked then FrmBD.Sotrudniki.Filter:='Familiya='+''''+s+''''; end; // Процедура нажатия кнопки Сортировка procedure TFrmSotrud.BitBtn1Click(Sender: TObject); begin If RadioButton1.Checked then FrmBD.Sotrudniki.IndexFieldNames:='Familiya'; end; // Процедура нажатия кнопки Возврата procedure TFrmSotrud.BitBtn2Click(Sender: TObject); begin FrmBD.Sotrudniki.Filtered:=False; end; end. 10 Форма TfrmOtdel: «Отдел» unit Unit10; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, XPMan, DB, Grids, DBGrids, DBTables, ExtCtrls, DBCtrls, StdCtrls; type TfrmOtdel = class(TForm) DataSource1: TDataSource; DBGrid1: TDBGrid; Table1: TTable; Button1: TButton; Button3: TButton; Button4: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var frmOtdel: TfrmOtdel; implementation uses Unit2, Unit3, Unit9, Unit4, Unit5, Unit6, Unit7, Unit8, Unit1, Unit11, Unit12; {$R *.dfm} 34 // Процедура нажатия кнопки Добавить procedure TfrmOtdel.Button1Click(Sender: TObject); begin Table1.Insert; end; // Процедура нажатия кнопки Предыдущий procedure TfrmOtdel.Button3Click(Sender: TObject); begin Table1.Prior; end; // Процедура нажатия кнопки Следующий procedure TfrmOtdel.Button4Click(Sender: TObject); begin Table1.Next; end; // Процедура нажатия кнопки Удалить procedure TfrmOtdel.Button2Click(Sender: TObject); begin Table1.Delete; end; end. 11 Форма TFrmDni: «Отработанные дни» unit Unit11; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, DB, Grids, DBGrids, DBTables, DBCtrls; type TFrmDni = class(TForm) TDni: TTable; DBGrid1: TDBGrid; DS_Dni: TDataSource; Button3: TButton; Button4: TButton; Button2: TButton; DbL_Otdel: TDBLookupComboBox; DBL_DOL: TDBLookupComboBox; Qfam: TQuery; DSFam: TDataSource; DBL_FAM: TDBLookupComboBox; CB_Month: TComboBox; EKol: TEdit; QID: TQuery; DataSource1: TDataSource; GroupBox1: TGroupBox; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Button5: TButton; Label6: TLabel; ComboBox1: TComboBox; 35 GroupBox2: TGroupBox; Label7: TLabel; Label8: TLabel; Label9: TLabel; Label10: TLabel; Label11: TLabel; Label12: TLabel; Label13: TLabel; Label14: TLabel; Label15: TLabel; Label16: TLabel; Label17: TLabel; Label18: TLabel; procedure DbL_OtdelClick(Sender: TObject); procedure SelectFam(Sender: TObject); procedure DBL_DOLClick(Sender: TObject); procedure DBL_FAMClick(Sender: TObject); procedure Button5Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var FrmDni: TFrmDni; ID:Integer; implementation uses Unit1; {$R *.dfm} procedure TFrmDni.SelectFam(Sender: TObject); begin if (DBL_Otdel.Text<>'') and (DBL_DOL.Text<>'') then Begin Qfam.Close; Qfam.SQL.Clear; Qfam.SQL.Add('Select Familiya from Tab2.db, Sotr.db '); Qfam.SQL.Add('where Otdel='+ chr(39)+DBL_Otdel.Text+chr(39) +' and'); Qfam.SQL.Add('Dol='+ chr(39)+DBL_DOL.Text+ chr(39)+' and'); Qfam.SQL.Add('ID_S=ID_D'); Qfam.Active:=true; DBL_FAM.Enabled:=true; end; end; procedure TFrmDni.DbL_OtdelClick(Sender: TObject); begin SelectFam(Sender); end; procedure TFrmDni.DBL_DOLClick(Sender: TObject); begin SelectFam(Sender); end; procedure TFrmDni.DBL_FAMClick(Sender: TObject); begin if (DBL_Otdel.Text<>'') and (DBL_DOL.Text<>'') then 36 Begin QID.Close;// закрыть файл-результат выполнения предыдущего запроса QID.SQL.Clear;; // удалить текст предыдущего запроса // записываем новый запрос в свойство SQL QID.SQL.Add('Select ID_S from Tab2.db, Sotr.db '); QID.SQL.Add('where Otdel='+ chr(39)+DBL_Otdel.Text+chr(39) +' and'); QID.SQL.Add('Dol='+ chr(39)+DBL_DOL.Text+ chr(39)+' and'); QID.SQL.Add('Familiya='+ chr(39)+DBL_FAM.Text+ chr(39)+' and'); QID.SQL.Add('ID_S=ID_D'); QID.Active:=true; // откроем базу данных end; ID:=QID['ID_S']; end; // Процедура нажатия кнопки Добавить в таблицу procedure TFrmDni.Button5Click(Sender: TObject); begin TDni.Insert; TDni['ID_M']:=ID; // добавление в столбкц ID_M TDni['Mecyac']:=CB_Month.Text;// добавление в столбец месяц TDni['Kol_D']:=EKol.Text; // добавление в столбец кол-во дней TDni['Kol_R']:=ComboBox1.Text;// добавление в столбец кол-во дней TDni.Next; end; end. 12 Форма TNachis: «Начисление» unit Unit12; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, XPMan, Menus, ExtCtrls, DBCtrls, StdCtrls, Grids, DBGrids, DB, DBTables; type TNachis = class(TForm) Table1: TTable; DataSource1: TDataSource; DBGrid1: TDBGrid; Table1Oklad: TCurrencyField; Table1Avans: TCurrencyField; Button2: TButton; Button4: TButton; Button3: TButton; Button1: TButton; Table1Dol_Z: TStringField; Table1Dol: TStringField; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); private { Private declarations } public { Public declarations } end; 37 var Nachis: TNachis; implementation uses Unit2, Unit3, Unit9, Unit4, Unit5, Unit10, Unit6, Unit7, Unit8, Unit1, Unit11; {$R *.dfm} // Процедура нажатия кнопки Добавить procedure TNachis.Button1Click(Sender: TObject); begin Table1.Insert; end; // Процедура нажатия кнопки Удалить procedure TNachis.Button2Click(Sender: TObject); begin Table1.Delete; end; // Процедура нажатия кнопки Предыдущий procedure TNachis.Button3Click(Sender: TObject); begin Table1.Prior; end; // Процедура нажатия кнопки Следующий procedure TNachis.Button4Click(Sender: TObject); begin Table1.Next; end; end.» 13 Форма TfrmOtdell «Данные о сотруднике» unit Unit13; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, DBCtrls, StdCtrls, DB, Grids, DBGrids, DBTables, XPMan; type TfrmOtdell = class(TForm) DBGrid1: TDBGrid; Query1: TQuery; private { Private declarations } public { Public declarations } end; var frmOtdell: TfrmOtdell; implementation uses Unit1; {$R *.dfm} end. 38