Учет посещаемости в рабочее время
p align="left">Механизм соединения с хранилищем данных ADO.Перед созданием соединения необходимо определить его параметры. Для этого, как уже говорилось, предназначено свойство ConnectionString. Набор параметров изменяется в зависимости от типа используемого провайдера и может настраиваться как вручную, так и с помощью редактора. Для того чтобы вызывать редактор соединений, необходимо дважды щелкнуть на компоненте TADOConnection. В результате будет активировано диалоговое окно. В этом окне можно настроить соединение, используя поле Use Connection String, или загрузить параметры соединения из файла в разделе Use Data Link File. Параметры соединения хранятся в файлах UDL, представляющих собой обычные текстовые файлы, содержащие параметры соединения. Для того чтобы настроить соединение сданным провайдером, необходимо нажать на кнопку Build. Появится окно, в котором будет опубликован список доступных провайдеров. На вкладке Provider можно выбрать подходящий провайдер данных OLE DB для конкретного источника данных. В списке провайдеров также присутствуют провайдеры, предназначенные для доступа к конкретным службам операционной системы. На вкладке Connection необходимо указать путь к базе данных или сервер. Вкладка Advanced предназначена для указания режима доступа, аналогично свойству Mode. Вкладка АН предназначена для более «тонкой» настройки специфичных свойств провайдера. Для дальнейшей работы нужно выбрать провайдер Microsoft Jet 4.0 OLE DB Provider. Затем нужно перейти на вкладку Connection. Появится окно. В появившемся окне необходимо указать путь к базе данных. В поле Select or enter a database name нужно указать путь к демонстрационной базе dbdemos.mdb. После указания пути к базе данных и задания остальных необходимых параметров нужно проверить созданное соединение при помощи кнопки Test Connection. Если параметры соединения указаны верно, появится сообщение Test connection succeeded. После закрытия этого окна в строке соединения будет отображена информация, с помощью которой провайдер сможет получить доступ к данным. Компонент TADOQuery TADOQuery позволяет выполнять SQL-запросы при работе с данными через ADO. Соединение с хранилищем данных осуществляется стандартным методом. Текст запроса содержится в свойстве SQL. Параметры запроса содержатся в свойстве Parameters. В случае, если компонент возвращает набор данных, его следует открывать методом Open или присвоить свойству Active значение True. Если запрос не должен возвращать набор данных (операторы INSERT, UPDATE, DELETE и CREATE TABLE), то запрос следует выполнять вызовом метода ExecSQL. Метод возвращает число обработанных запросом записей. Свойство RowsAffected содержит число записей, которые затронул последний выполнявшийся запрос. Компонент TADOTable используется для доступа к хранилищам данных ADO и представления информации из них в табличном виде. Компонент предоставляет прямой доступ к каждой записи и ее полям, наследуя свойства и методы класса TCustomADODataSet. Компонент связывается с базой данных через свойства Connection или ConnectionString. Имя таблицы указывается в свойстве TableName. Свойство TableDirect указывает, каким образом набор данных связывается с хранилищем данных. Так как не все провайдеры поддерживают прямое соединение с набором данных, то в некоторых случаях для связи с хранилищем данных приходится использовать SQL-операторы. При установке свойству значения True компонент использует фоновые SQL-запросы для доступа к данным. Используя свойство Readonly, можно установить ограничение «только для чтения» на данную таблицу, запретив, таким образом, возможность изменять данные. В свойстве MasterSource указывается компонент TDataSource, используемый для создания отношения ссылочной целостности Master-Detail. Метод GetlndexNames возвращает список индексов, доступных компоненту в качестве списка. Компонент TDataSource - этот компонент связывается с набором данных. Эта связь осуществляется через свойство DataSet, которое содержит информацию о текущем состоянии набора данных. У этого компонента существует набор свойств и методов, которые облегчают работу с ним. Свойство AutoEdit автоматически переводит набор данных в состояние редактирования, если имеет значение True, когда связанный элемент ввода получает фокус. Метод Edit переводит связанный набор данных в состояние редактирования. Метод-обработчик OnDataChange вызывается при редактировании данных в связанном визуальном компоненте. Метод-обработчик события OnUpdateData вызывается перед тем, как измененные данные будут сохранены в наборе данных. Обработчик вызывается перед выполнением метода Post. Метод-обработчик события OnStateChange вызывается, когда изменяется состояние связанного набора данных. Набор данных - массив записей, полученный приложением по собственному запросу, называется набором данных. Набор данных как объект ведет свое начало от класса TDataSet и наследует его свойства.[10] 3.2 Компоненты доступа к данным Компоненты доступа к данным являются невизуальными компонентами. Таблицы БД располагаются на диске и являются физическими объектами. Для операций с данными, содержащимися в таблицах, используются наборы данных. В терминах системы Delphi набор данных представляет собой совокупность записей, взятых из одной или нескольких таблиц БД. Записи, входящие в набор данных, отбираются по определенным правилам, при этом в частных случаях набор данных может включать в себя все записи из связанной с ним таблицы или не содержать ни одной записи. Набор данных является логической таблицей, с которой можно работать при выполнении приложения. Взаимодействие таблицы и набора данных напоминает взаимодействие физического файла и файловой переменной.[5] В Delphi для работы с наборами данных служат компоненты DBTable и ADOTable, DBQuery и ADOQuery, DataAccess, DataControl, DecisionQuery и StoredProc. Компонент StoredProc используется для вызова хранимых процедур при организации взаимодействия с удаленными БД, а компонент UpDateSQL обеспечивает работу с кэшированными изменениями в записях. Компонент DecisionQuery применяется при построении систем принятия решений. Наиболее универсальными и, соответственно, часто используемыми являются компоненты Table и Query, задающие наборы данных.[5] Базовые возможности доступа к БД обеспечивает класс DataSet, представляющий наборы данных в виде совокупности строк и столбцов (записей и полей). Этот класс предоставляет основные средства навигации и редактирования наборов данных. Компонент DataSet предназначен для представления набора данных из хранилища данных ADO. Он прост в использовании, имея только несколько собственных свойств и методов. Это единственный компонент ADO, инкапсулирующий набор данных, для которого опубликованы свойства, позволяющие управлять командой ADO. В результате компонент представляет собой гибкий инструмент, который позволяет (в зависимости от типа команды и ее текста) получать данные из таблиц, запросов SQL, хранимых процедур, файлов и т. д.[5] Компоненты Table и Query являются производными от класса ADODataSet потомка класса DataSet. Они демонстрируют схожие с базовыми классами характеристики и поведение, но каждый них имеет и свои особенности. Компонент АDOTаblе обеспечивает использование в приложениях Delphi таблиц БД, подключенных через провайдеры OLE DB. По своим функциональным возможностям и применению он подобен стандартному табличному компоненту. В основе компонента лежит использование команды ADO, но ее свойства настроены заранее и изменению не подлежат. Другие свойства и методы компонента обеспечивают применение индексов. Так как не все провайдеры ADO обеспечивают прямое использование таблиц БД, то для доступа к ним может понадобиться запрос SQL. Компонент Table представляет собой набор данных, который в некоторый момент времени может быть связан только с одной таблицей БД. Этот набор данных формируется на базе навигационного способа доступа к данным, поэтому компонент Table рекомендуется использовать для локальных БД, таких как dBase и Paradox. При работе с удаленными БД следует использовать компонент Query. Связь между таблицей и компонентом Table устанавливается через его свойства TableName, которое задает имя таблицы. При задании значения свойства TableName указывается имя файла и расширение имя файла. На этапе разработки приложения имена всех таблиц доступны в раскрывающемся списке Инспектора объектов. В этот список попадают таблицы, файлы которых расположены в каталоге, указанном в свойстве TableName. Компонент ADOQuery обеспечивает применение запросов SQL при работе с данными через ADO. По своей функциональности он подобен стандартному компоненту запроса. Компонент Query представляет собой набор данных, записи которого формируются в результате выполнения SQL-запроса и основаны на реляционном способе доступа к данным. При работе с удаленными БД рекомендуется использовать набор данных Query. При работе с удаленными базами данных следует обращаться к средствам языка SQL. Это относится и к таким операциям, как перемещение по набору данных или вставка в него записей. Если же для компонента Query используются методы типа Next и Insert, то вместо реляционного способа доступа к данным будет применён навигационный. В результате набора данных Query будет мало чем отличаться от набора данных Table. В отличие от компонента Table. Набор данных Query может включать в себя записи более чем одной таблицы БД. Текст запроса, на основании которого в набор данных отбираются записи, содержится в свойстве SQL типа Strings. Запрос включает в себя команды на языке SQL и выполняется при открытии набора данных. Запрос SQL иногда называется SQL-программой. SQL-запрос можно формировать и изменять динамически, внося изменения в его текст непосредственно при выполнении приложения.[5] Компоненты для работы с данными расположенные на странице DataControls палитры компонентов и предназначены для построения интерфейсной части приложения. Они используются для навигации по набору данных, а также для отображения и редактирования записей.[5] Одни визуальные компоненты для работы с данными предназначены для выполнения операций с полями отдельной записи, они отображают и позволяют редактировать значение поля текущей записи. К таким компонентам относятся, например, однострочный редактор Edit и графический обзор Image. Другие компоненты служат для отображения и редактирования сразу нескольких записей. Примерами таких компонентов являются сетки DBGrid и DBCtrlGrid, выводящие записи набора данных в табличном виде. Визуальные компоненты для работы с данными похожи на соответствующие компоненты страниц Standard и Additional и отличаются, в основном, тем, что ориентированны на работу с БД и имеют дополнительные свойства DataSource и Datafield. Первое из них указывает на источник данных, а второе - на поле набора данных, с которым связан визуальный компонент. Например, Edit отображает строковое значение, позволяя пользователю изменять его. Для всех визуальных компонентов, предназначенных для отображения и редактирования значений полей, при изменении пользователем их содержимого набор данных автоматически переводится в режим редактирования. Произведённые с помощью этих компонентов изменения автоматически сохраняются в связанных с ними полях при наступлении определённых событий. При программном изменении содержимого эти визуальных компонентов набор данных автоматически в режим редактирования не переводится. Для этой цели в коде должен предварительно вызываться метод Edit набора. Чтобы сохранить изменения в поле (полях) текущей записи, мы должны также предусмотреть соответствующие действия, например, вызов метода Post или переход к другой записи набора данных.[5] В библиотеке визуальных компонентов для всех компонентов, в том числе и предназначенных для работы с данными, базовым является классу Control. Он обеспечивает основные функциональные атрибуты такие, как положение и размеры элемента, его заголовок, цвет и другие параметры. Класс Control включает в себя общие для визуальных компонентов свойства, события и методы. В целом визуальные компоненты можно разделить на две группы: оконные и неоконные. Оконный элемент управления представляет собой специализированное окно, предназначенное для решения конкретной задачи. К таким элементам относятся, например, поля редактирования, командные кнопки, полосы прокрутки. Такие компоненты, как Edit, DBEdit, Memo или DBMemo при получении фокуса ввода отображают в своей области курсор редактирования. Компоненты, не связанные с редактированием информации, получение фокуса ввода обычно отображают с помощью с помощью пунктирного черного прямоугольника. К неоконным элементам управления базовым является класс GraphiControl, производимый непосредственно от класса Control. Неоконные элементы управления на могут получать фокус ввода. Их достоинством является менее расходования ресурсов. Свойства позволяют управлять внешним видом и поведением компонентов при проектировании и при выполнении приложения. Обычно установка значений большинства свойств компонентов выполняется на этапе проектирования с помощью инспектора объектов. Свойство Name указывает на имя компонента, которое используется для управления компонентов во время выполнения приложения. Каждый новый компонент, помещаемый на форму, получает имя по умолчанию, автоматически образуемое путем добавления к названию компонента его номера в порядке помещения на форму. На этапе разработки приложения мы можем изменять имя компонента на более осмысленное и соответствующее назначению компонента. Свойство Aling определяет способ выравнивания компонента на самой форме, на которой оно находится. Выравнивание используется в случае, когда требуется, чтобы какой-либо интерфейсный элемент занимал определённое положение. Свойство Caption содержит строку для надписи заголовка компонента. Отдельные символы в заголовке могут быть подчеркнуты, они означают комбинации клавиш быстрого доступа. Свойство Color определяет цвет фона. Часто удобно задавать цвета с помощью констант. Отображаемые цвет зависит от параметров видеокарты и монитора, в первую очередь от установленного цветного разрешения. Визуальные компоненты способны генерировать и обрабатывать достаточно большое число событий различных видов. К наиболее общим группам событий можно отнести следующие действия: - Выбор управляющего элемента; - Перемещение указателя мыши; - Нажатие клавиш клавиатуры; - Получение и потеря управляющим элементом фокуса ввода; - Перемещение объектов методом drag-and-drop. Существуют и более сложные события, требующие передачи дополнительных параметров, например событие, связанное с перемещением указателя мыши, передаёт координаты указателя. 3.3 Доступ к данным Навигационный способ доступа заключается в обработки каждой записи набора данных. Достоинством этого способа является простота кодирования операции, а основной недостаток состоит в том, что приложение получает все записи набора независимо от того, сколько их на самом деле требуется обработать. Это приводит к большой нагрузке на сеть, особенно при интенсивном обмене данными. Поэтому применение навигационного способа доступа обычно ограничивается локальными БД. При навигационном способе доступа операции выполняются с отдельными записями. Каждый набор данных имеет указатель текущей записи, то есть записи, с полями которой могут быть выполнены такие операции, как редактирование или удаление. Компоненты Table и Query позволяют управлять положением этого указателя.[5] Навигационный способ доступа даёт возможность осуществлять следующие операции: - сортировка записей; - навигация по набору данных; - редактирование записей; - вставка и удаление записей; - фильтрация записей; - поиск записей. Редактирование записей заключается в изменении значений их полей. Редактирована, может быть только текущая запись, поэтому перед действиями, связанными с редактированием, обычно выполняются операции по поиску и перемещению на требуемую запись. После того. Как указатель текущей записи установлен на нужную запись, и набор данных находится в режиме просмотра, для редактирования записи следует: - перевести набор данных в редактирование; - изменить значение полей записи; - подтвердить изменения или отказаться от них. Метод Insert переводит набор данных в режим вставки и добавляет к нему новую пустую запись. Для добавления записи нужно: - перевести набор данных в режим записи; - задать значение полей новой записи; - подтвердить изменения или отказаться от них. Удаление текущей записи выполняет метод Delete, который работает только с модифицируемым набором данных. В случае успешного удаления записи текущей становится следующая запись, если же удалялась последняя запись, то курсор перемещается на предыдущую запись, которая после удаления становится последней. В отличие от некоторых СУБД, в Delphi удаляемая запись действительно удаляется из набора данных. Порядок расположения записей может быть неопределённым. По умолчанию записи не отсортированы или сортируются. С отсортированными наборами записей работать более удобно. Сортировка заключается в упорядочивании записей по определённому полю в порядке возрастания или убывания содержащихся в нём значений. Сортировку можно выполнять и по нескольким полям.[5] При сортировки по двум полям записи сначала упорядочиваются по значениям первого поля, а затем группы записей с одинаковым значением первого поля сортируются по второму полю. Сортировка наборов данных Table и Query выполняется различными способами. Сортировка наборов данных Table выполняется автоматически по текущему индексу. При смене индекса происходит автоматическое переупорядочивание записей. Таким образом, сортировка возможна по полям, для которых создан индекс. Для сортировки по нескольким полям нужно создавать индекс, включающий эти поля. Направление сортировки определяется параметром ixDescending текущего индекса, по умолчанию он выключен, и упорядочивание выполняется в порядке возрастания значений. Если для индекса признак ixDescending включен, то сортировка выполняется в порядке убывания значений. Поля, по которым сортируются записи, устанавливаются через свойств IndexName. Перемещение по набору данных заключается в управлении указателем текущей записи. Этот указатель определяет запись, с которой будут выполняться такие операции, как редактирование или удаление. Перед перемещение указателя текущей записи набор данных автоматически переводится в режим просмотра. Если текущая запись находилась в режимах редактирования или вставки, то перед перемещением указателя сделанные в записи изменения вступают в силу, для чего набор данных автоматически вызывает метод CheckBrowseMode. Для перемещения указателя текущей записи в наборе данных используются методы: - Процедура First - установка на первую строку; - Процедура Next - установка на следующую строку; - Процедура Last - установка на последнюю строку; - Процедура Prior - установка на предыдущую строку. При перемещении по записям набора данных связанные с ним визуальные компоненты отображают изменения данных, причем смена отображения может происходить достаточно быстро. Побочным эффектом выполнения ряда операций с наборами данных является изменение положения указателя текущей записи. Часто этот эффект ненадёжен, так как после выполнения такой операции указатель находится не в том месте, где был до начала операции. При этом приходится снова отыскивать нужную запись и ставить на нее указатель, что неудобно даже при небольшом количестве записей. Фильтрация записей - это задание ограничений для записей, отбираемых в набор данных. Набор данных представляет собой записи, набранные из одной или нескольких таблиц. Состав записей в наборе данных в данный момент времени зависит от установленных ограничений, в том числе и от фильтров. Система Delphi дает возможность осуществлять фильтрацию записей: - по выражению; - по диапазону. По умолчанию фильтрация записей не ведётся, и набор данных Table содержит все записи связанной с ним таблицы БД, а в набор данных Query включаются все записи, удовлетворяющие SQL-запросу, содержащемуся в свойстве SQL. Фильтрация похожа на SQL-запросы, но является менее мощным средством. По сравнению с SQL-запросами фильтрация менее эффективна, так как ограничивается количество записей, видимых в наборе. При использовании фильтрации по выражению набор данных ограничивается записями, удовлетворяющими выражению фильтра, задающему условия отбора записей. Достоинством фильтрации по выражению является то, что она применима к любым полям, в том числе и неиндексированным. В связи с тем, что в процессе отбора просматриваются все записи таблицы, фильтрация по выражению эффективна при небольшом количестве записей. Для задания выражения фильтра представляет собой конструкцию, в состав которой могут входить следующие элементы: - имена полей таблицы; - литералы; - операции сравнения; - арифметические операции; - логические операции; - круглые и квадратные скобки. Если имя поля содержит пробелы, то его заключают в квадратные скобки. Имена переменных в выражении фильтра использовать нельзя. Если в выражении фильтра требуется включить значение переменной или свойства какого-либо компонента, то это значение должно быть преобразовано в строковый тип. Операции сравнения представляют собой обычные отношения <,>,=,<=,>=,<>. Арифметическими являются операции +, -,* и /. В качестве логических операций можно использовать AND, OR и NOT. Круглые скобки применяются для изменения порядка выполнения арифметических и логических операций. Набор данных Table допускается два способа задания условии фильтрации: су помощью выражения фильтра Filter и в обработчике события OnFilterRecord. В случае набора данных Query для записей можно использовать: SQL-запрос, обработчик событияOnFilterRecord, выражения фильтра. При фильтрации по диапазону в набор данных включаются записи, значения полей которых попадают в заданный диапазон, т.е. условием фильтрации является выражение вида «значение>нижняя граница AND значение < верхней границы». Такая фильтрация применяется к наборам данных Table. Достоинство фильтрации по диапазону является высокая скорость обработки записей. В отличие от фильтрации по выражению, когда последовательно просматриваются все записи таблицы, фильтрация по диапазону ведётся индексно-последовательным методом, поэтому этот способ фильтрации применим только для индексированных полей. Индекс поля, диапазон которого задан как текущий с помощью свойства IndexName или IndexFieldName. Если текущий индекс не установлен, то по умолчанию используется главный индекс. Для включения и выключения фильтрации по диапазону применяются методы ApplyRange и CancelRange. Первый из них активизирует фильтрацию, а другой - деактивизирует. Предварительно для индексного поля или полей, по которому выполняется фильтрация, следует задать диапазон допустимых значений. Когда одна из границ диапазона не задана, то диапазон открыт, то есть нижняя граница становится равной минимально возможному, а верхняя граница - максимально возможному значению этого поля. Поиск записи, удовлетворяющей определённым условиям, означает переход на эту записи. Поиск во многом похож на фильтрацию, так как в процессе поиска также выполняется проверка полей записей на некоторые условия. Отличие заключается в том, что в результате поиска количество записей в наборе данных не изменяется. При организации поиска записей важное значение имеет наличие индекса для полей, по которым ведётся поиск. Индексирование значительно повышает скорость обработки данных, кроме того, ряд методов может работать только с индексированными полями. Для поиска записей по полям служат методы Locate и Lookup, причем поля могут быть не индексированными. Функция Locate ищет запись с заданными значениями полей. Если удовлетворяющие условиям поиска записи существует, то указатель текущей записи устанавливается на первую из них. Если запись найдена, функция возвращает значение True, в противном случае значение False. Обычно при разработки приложения пользователю предоставляется возможность влиять на процесс поиска су помощью управляющих элементов, расположенных на форме. При этом действия пользователя по управлению поиском в наборе данных мало, чем отличаются от аналогичных действий при выполнении фильтрации. Функция Lookup так же осуществляет поиску записи, удовлетворяющей определённым условиям, но, в отличие от метода Locate, не перемещает указатель текущей записи, а считывает информацию из полей записи. Еще одно отличие между двумя методами заключается в том, что метод Lookup осуществляет поиск на точное соответствие значений для поиска и значений в полях записей с учетом регистра букв. Для набора данных Table имеются методы, позволяющие вести поиск записей только по индексным полям. Перед вызовом любого из этих методов следует установить в качестве текущего индекс, построенный по используемым для поиска полям. Методы поиска можно разделить на две группы, в первой группе методы, предназначенные для поиска на точное соответствие, а другую образуют методы, допускающие только частичное совпадение заданных для поиска значений и значений полей записей. Если заданным условиям поиска соответствует несколько записей, то указатель текущей записи устанавливается на первую из них. Порядок сортировки и, соответственно, порядок расположения записей в наборе даны, определяется текущим индексом, по которому и ведется поиск.[5] 3.4 Создание отчетов в Delphi Для вывод информации не печать использовались отчеты созданные в Delphi. Отчет - это печатный документ, содержащий данные, аналогичные получаемые в результате выполнения запроса к БД. В Delphi для создания отчетов служит генератор отчетов QuickReport,содержащий обширный набор компонентов. Компоненты, предназначенные для создания отчетов, находятся на странице QReport палитры компонентов. Большинство компонентов отчета являются визуальными. Многие из них мало отличаются от аналогичных компонентов страниц Standard, Additional и Data Controls. Например, компоненту QRImage соответствуют компоненты Image и DBImage. Главным компонентом отчета является компонент-отчет QuickRep, представляющий собой основу, на которой размещаются другие компоненты. Компонент QuickRep обычно размещается на отдельной форме, предназначенной для создания отчета. По умолчанию он имеет имя QuickRep1. если на форме размещается другой отчет, он получает имя QuickRep2 и т.д. Компонент QuickRep при перемещение его на форму имеет вид страницы формата А4, первоначально отображаемой в натуральную величину. На этапе разработки приложения можно изменить масштаб страницы и размещенных на ней компонентов с помощью свойства Zoom типа Integer (значение этого свойства устанавливается в процентах, по умолчанию 100%). Отчет можно поместить на любую форму приложения, например на главную. В этом случае отчет (страница) создает своего рода фон, на котором расположены управляющие элементы формы. Компонент QuickRep связывается с набором данных Table или Query, для которого создается отчет, с помощью свойства DataSet. При этом наборе данных Query может содержать записи, выбранные из разных таблиц. При печати отчета в процессе выполнения приложения набор даны должен быть открыт. Во время построения отчета можно использовать специально создаваемые наборы данных и размещать его на форме, при этом источник данных DataSource не требуется. На практике компонент QuickRep обычно связывается с набором данных, записи которого отображаются на форме в визуальных компонентах. В этом случае в отчет попадают записи, удовлетворяющие, например, критерию фильтрации и сортировки, задаваемому пользователем. Отчет состоит из отдельных полос - составных частей отчета (Рисунок 5), которые определяют содержание и вид созданного документа. Полоса представляет собой элемент отчета. Каждый элемент размещаются на своем месте и предназначен для отображения соответствующих компонентов отчета и вывода данных. Конструирование отчета в основном аналогично конструированию формы. Управлять наличием полос в отчете можно с помощью свойства Bands множественного типа TQuickRepBadns. При разработки приложения включение/отключение полосы выполняется установкой логического значения соответствующего подсвойства свойства Bands, например, для полосы заголовка отчета этим подсвойством является HasTitle. С помощью этого свойства можно включать полосы: верхний колонтитул, заголовок отчета, заголовки столбцов, область данных, итог отчета, нижний колонтитул. Так же эти полосы можно вставлять в отчет с помощью компонента полосы QRBand. Полоса отчета (компонент QRBand) является основной составной частью отчета, на которой размещаются другие его компоненты. Типы полосы определяются свойством BandType типа TQRBandType, которое может принимать следующие значения: - rbTitle - заголовок отчета; - rbpageHeader - верхний колонтитул; - rbDetail - данные записей набора данных; - rbPageFooter - нижний колонтитул; - rbSummary - итог отчета; - rbGroudHeader - заголовок группы, который находится для каждой группы; - rbGroudFooter - примечание группы, которое выводится для каждой группы; - rbSubDetail - данные подчиненного набора данных для отчета «мастер - детальный»; - rbColumnHeader - заголовки столбцов, печатаемые один раз на каждой странице над данными. При установки типа полосы она автоматически размещается на своем месте в отчете выравнивается по ширине страницы отчета с учетом левого и правого полей. Разработчик не имеет возможности переместить полосу на другое место с помощью мыши. Изменить ширину полосы можно косвенно, изменяя размеры страниц и полей. При создании в отчет нужно включить не более одной полосы каждого вида, так как при печати отчета «лишние» полосы одного и того же вида учитываться не будут. Например, если в отчет включены две полосы заголовка отчета, то ошибки транзакции не возникает, но в качестве заголовка используется первая из этих полос. Каждая полоса может иметь отдельную рамку, которой управляет свойство Frame,не отличающегося от аналогичного свойства самого компонента отчета QuickRep. Заголовок отчета выводиться один раз на первой странице сразу под верхним колонтитулом, если он есть. В полосе заголовка обычно размещаются надписи QRLabel, содержащие требуемый текст, как правило, название всего отчета. При необходимости в заголовке можно разместить, например, сведения о названии, адресе и телефоне организации, а также логотип. Колонтитулы печатаются в начале и конце каждой страницы, в них обычно выводятся сведения о дате, время печать, а также номер страницы. Для этого в полосах колонтитулов чаще всего размещаются компоненты QRSysData , которым устанавливаются требуемое значение свойства Data. В полосе колонтитула можно размещать и другие компоненты, например, QRLabel для вывода на каждой странице названия организации. После создания полосы определенного типа в ней размещаются соответствующие компонент. При этом необходимо только компоненты страницы QReport. Размещение на полосе других компонентов, не взывает ошибки транзакции, но в сформированный отчет такие компоненты не попадают. Можно разместить компонент отчета и вне полосы, на компоненте-отчете QuickRep. В этом случае он будет выводиться на каждой странице отчета. Обычно используются следующие компоненты отчета: - QRTable - надпись, содержащая текст; - QRDBText - значение поля записи, обычно размещается в полосе данных; - QRExpr - значение, формируемое на основе выражения, в котором могут использоваться значение полей записей; - QRSysData - системная информация, обычно используемая для итоговых полос и полос колонтитулов; - QRImage - графический обзор(например, логотип организации); - QRShape - геометрическая фигура, размещаемая в любой полосе, так же позволяет оформить сетку вокруг выводимых данных. Возможность автоматического изменения размеров содержащего текст компонента по размеру текста управляет свойство AutoSize. По умолчанию размер текстового компонента автоматически подстраивается под содержащийся в нем текст, так как свойство AutoSize имеет значение True. Если компоненты отчета, в первую очередь элементы полосы данных, имеют рамку, то размеры этих компонентов должны быть постоянными. Полосы заголовков столбцов и данных является основными полосами, в которых размещаются компоненты, обеспечивающие табличный вывод содержимого набора данных. Заголовки столбцов выводятся на каждом листе отчета. Для заголовка столбцов данных в полосу заголовков обычно помещаются компоненты QRLabel, котором находится тексте, соответствующий полям данных. Для вывода значений полей записей в полосу данных обычно помещаются компоненты QRDBText и QRExpr. Имя набора даны, указывается в свойстве DataSet, чьё значение устанавливается автоматически при помещении компонента в полосу данных, а имя поля задается в свойстве DataFileld. На этапе разработки в отчете присутствует только одна полоса данных, но при форматировании отчета отдельная полоса данных будет выведена для каждой записи отчета. Если набор данных является пустым и не содержит записей, то область данных не выводится. Компонент QRExpr позволяет вставлять в отчет значение выражения, рассчитываемого обычно с участием различных полей записей. Выражение заносится в свойство Expression типа String. Использование компонента QRExpr аналогично использованию вычисляемых полей набора данных. Однако при просмотре отчета на этапе разработки значения компонентов QRExpr выводятся, в то время как значение выделяемы полей не определяются. Итоговая полоса отчета выводится один раз в конце отчета сразу после полосы данных. В этой полосе обычно стоят либо итоговые сведения отчета, например, среднее и максимальное значения по данным какого-либо поля. В итоговой полосе обычно размещается компонент QRLabel для вывода записей и QRExpr для вывода значения выражения. Можно выделить следующие виды отчетов. Простой отчет представляет собой отчет на основе данных из одного набора данных и содержит сведения, которые выводятся в табличном виде без дополнительных условии, например, группирование данных. Размещение и вид печатаемых в отчете данных аналогичны размещению и виду данных, отображаемы в сетке DBGrid. Отличием является то, что данные отчета размещаются не на форме, а на бумажном документе, и их нельзя редактировать. Простой отчет может содержать следующие полосы, перечисляемые в порядке размещения на странице: верхний колонтитул; заголовок отчета; заголовки столбцов; данные; итог отчета; нижний колонтитул. Выводимые в отчете данные можно группировать по определённому признаку. Для группирования записей отчета по определенному полю в наборе данных должен быть установлен текущий индекс, построенный по этому полю. Если индексу не задан или установлен по другому полю, то ошибок компиляции не возникает, то группирование записей выполняется неправильно. Можно группировать данные, находящиеся в одном наборе данных, или данные из связанных наборов данных. В отчете с группирование данных вместо полосы Detail нужно использовать комбинацию полос: 1) QRGroup - название Group Header; 2) QRBand - полоса даны, название Detail; 3) QRBand - полоса нижнего колонтитула группы, название Group Footer. Эти полосы должны располагаться в указанном порядке. Если группа не имеет нижнего колонтитула, то значение этого свойства можно не задавать. Остальные полосы отчета с группирование данных создаётся и используется так же, как в обычном простом отчете. На практике наборы данных чаще всего связываются отношением «главный-подчиненный» способом. Такой отчет содержит: - Заголовок отчета; - Заголовки столбцов; - Области данных - в качестве набора данных устанавливается главный набор. В ней обычно размещаются компоненты QRDBText, текст, который является заголовками столбцов даны детальной области; - Области детализации - устанавливается подчиненный набор данных. В ней обычно располагаются компоненты QRDBText и QRExpr, с помощью которых выводятся значения полей записей подчиненного набора данных; - Нижний колонтитул страницы. Составной отчет объединяет в себе несколько отчетов и представлен компонентом QRCompositeReport, который можно разместить на любой форме. На начальном этапе составной отчет не содержит ни одного отчета. Для добавления к составному отчету нового отчета используется событие OnAddReport, при этом добавляемые отчеты должны быть предварительно подготовлены. Свойство Reports составного отчета содержит список отчетов. Новые отчеты добавляются к этому списку методом Add.[5] 3.5 Создание запросов на языке SQL При писании программного продукта для выбора студентов из базы данных по определенным критериям использовался язык запросов SQL, так как этот язык используется Delphi и Access. SQL символизирует собой Структурированный Язык Запросов. Это - язык, который дает возможность создавать и работать в реляционных базах данных, являющихся наборами связанной информации, сохраняемой в таблицах. Информационное пространство становится более унифицированным. Это привело к необходимости создания стандартного языка, который мог бы использоваться в большом количестве различных видов компьютерных сред. Стандартный язык позволит пользователям, знающим один набор команд, использовать их для создания, нахождения, изменения и передачи информации - независимо от того, работают ли они на персональном компьютере, сетевой рабочей станции, или на универсальной ЭВМ. В нашем все более и более взаимосвязанном компьютерном мире, пользователь снабженный таким языком, имеет огромное преимущество в использовании и обобщении информации из ряда источников с помощью большого количества способов. Элегантность и независимость от специфики компьютерных технологий, а также его поддержка лидерами промышленности в области технологии реляционных баз данных, сделало SQL (и, вероятно, в течение обозримого будущего оставит его) основным стандартным языком.[2] Язык SQL предназначен для манипулирования данными в реляционных базах данных, определения структуры баз данных и для управления правами доступа к данным в многопользовательской среде. Поэтому, в язык SQL в качестве составных частей входят: - язык манипулирования данными (Data Manipulation Language, DML); - язык определения данных (Data Definition Language, DDL); - язык управления данными (Data Control Language, DCL). Это не отдельные языки, а различные команды одного языка. Такое деление проведено только лишь с точки зрения различного функционального назначения этих команд. Язык манипулирования данными используется, как это следует из его названия, для манипулирования данными в таблицах баз данных. Он состоит из 4 основных команд: SELECT (выбрать) INSERT (вставить) UPDATE (обновить) DELETE(удалить) Язык определения данных используется для создания и изменения структуры базы данных и ее составных частей - таблиц, индексов, представлений (виртуальных таблиц), а также триггеров и сохраненных процедур. Основными его командами являются: CREATE DATABASE (создать базу данных); CREATE TABLE (создать таблицу); ALTER DATABASE (модифицировать базу данных); ALTER TABLE (модифицировать таблицу); DROP DATABASE (удалить базу данных); DROP TABLE (удалить таблицу); DROP INDEX (удалить индекс); DROP PROCEDURE (удалить сохраненную процедуру). Язык управления данными используется для управления правами доступа к данным и выполнением процедур в многопользовательской среде. Более точно его можно назвать “язык управления доступом”. Он состоит из двух основных команд: GRANT (дать права), REVOKE (забрать права) С точки зрения прикладного интерфейса существуют две разновидности команд SQL: - интерактивный SQL; - встроенный SQL. Интерактивный SQL используется в специальных утилитах (типа WISQL или DBD), позволяющих в интерактивном режиме вводить запросы с использованием команд SQL, посылать их для выполнения на сервер и получать результаты в предназначенном для этого окне. Встроенный SQL используется в прикладных программах, позволяя им посылать запросы к серверу и обрабатывать полученные результаты, в том числе комбинируя set-ориентированный и record-ориентированный подходы. Наиболее важной командой языка манипулирования данными является команда SELECT. Операция выборки позволяет получить все строки (записи) либо часть строк одной таблицы. К логическим операторам относятся известные операторы AND, OR, NOT, позволяющие выполнять различные логические действия: логическое умножение (AND, “пересечение условий”), логическое сложение (OR, “объединение условий”), логическое отрицание (NOT, “отрицание условий”). В наших примерах мы уже применяли оператор AND. Использование этих операторов позволяет гибко “настроить” условия отбора записей. Оператор AND означает, что общий предикат будет истинным только тогда, когда условия, связанные по “AND”, будут истинны. Оператор OR означает, что общий предикат будет истинным, когда хотя бы одно из условий, связанных по “OR”, будет истинным. Оператор NOT означает, что общий предикат будет истинным, когда условие, перед которым стоит этот оператор, будет ложным. В одном предикате логические операторы выполняются в следующем порядке: сначала выполняется оператор NOT, затем - AND и только после этого - оператор OR. Для изменения порядка выполнения операторов разрешается использовать скобки. Порядок выводимых строк может быть изменен с помощью опционального (дополнительного) предложения ORDER BY в конце SQL-запроса. Способ упорядочивания определяется дополнительными зарезервированными словами ASC и DESC. Способом по умолчанию - если ничего не указано - является упорядочивание “по возрастанию” (ASC). Если же указано слово “DESC”, то упорядочивание будет производиться “по убыванию”.[2] 4 ПРОЦЕСС РАЗРАБОТКИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ В результате разработки программного продукта получилась рабочая программа по чету посещаемости студентов. На главной форме выбирается специальность, группа, студент, дата, количество пропущенных часов, по какой причине. После нажатия на кнопку «Утвердить» выбранные данных заносятся в базу данных. Так же с этой формы осуществляется переход на другие формы. Используемые компоненты: DataSource, DBGrid, ADOQuery, ADOTable, Label, Button, ComboBox, DateTimePicker, MainMenu. Код программы: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, DB, ADODB, Grids, DBGrids, ComCtrls, Menus; type TForm1 = class(TForm) DataSource1: TDataSource; DBGrid1: TDBGrid; ADOQuery1: TADOQuery; ADOTable1: TADOTable; ADOTable2: TADOTable; ADOTable3: TADOTable; Label8: TLabel; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Button1: TButton; ComboBox6: TComboBox; ComboBox5: TComboBox; ComboBox4: TComboBox; ComboBox3: TComboBox; ComboBox2: TComboBox; ComboBox1: TComboBox; MainMenu1: TMainMenu; N1: TMenuItem; N2: TMenuItem; DateTimePicker1: TDateTimePicker; N3: TMenuItem; N4: TMenuItem; procedure ComboBox1Change(Sender: TObject); procedure ComboBox2Change(Sender: TObject); procedure Button1Click(Sender: TObject); procedure N1Click(Sender: TObject); procedure N2Click(Sender: TObject); procedure N3Click(Sender: TObject); procedure N4Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation uses Unit3, Unit2, Unit7; {$R *.dfm} procedure TForm1.ComboBox1Change(Sender: TObject); var pr:String; begin ADOTable1.Open; ADOTable1.First; ComboBox2.Items.Clear; While not ADOTable1.Eof do begin if ADOTable1.Fieldbyname('Spesi').AsString=ComboBox1.Text Then ComboBox2.Items.Add(ADOTable1.fieldbyname('Gruppa').AsString); ADOTable1.Next; end; ADOTable1.Close; ComboBox2.Sorted:=True; end; procedure TForm1.ComboBox2Change(Sender: TObject); var pr1:String; begin ADOTable2.Open; ADOTable2.First; ComboBox3.Items.Clear; While not ADOTable2.Eof do begin if ADOTable2.Fieldbyname('Gruppa').AsString=ComboBox2.Text Then ComboBox3.Items.Add(ADOTable2.fieldbyname('FIO').AsString); ADOTable2.Next; end; ADOTable2.Close; ComboBox3.Sorted:=True; end; procedure TForm1.Button1Click(Sender: TObject); begin ADOTable3.Insert; ADOTable3.FieldByName('Spesi').AsString:=Combobox1.Text; ADOTable3.FieldByName('Gruppa').AsString:=Combobox2.Text; ADOTable3.FieldByName('FIO').AsString:=Combobox3.Text; ADOTable3.FieldByName('Date').AsString:=DateToStr (DateTimePicker1.Date); ADOTable3.FieldByName('Uvazh').AsString:=Combobox4.Text; ADOTable3.FieldByName('Neuvazh').AsString:=Combobox5.Text; ADOTable3.FieldByName('Bolezn').AsString:=Combobox6.Text; ADOTable3.Post; ADOTable3.Close; ADOTable3.Open; ComboBox3.ClearSelection; ComboBox4.Text:='0'; ComboBox6.Text:='0'; ComboBox5.Text:='0'; end; procedure TForm1.N1Click(Sender: TObject); begin Form3.Show; end; procedure TForm1.N2Click(Sender: TObject); begin close; end; procedure TForm1.N3Click(Sender: TObject); begin Form2.Show; end; procedure TForm1.N4Click(Sender: TObject); begin form7.ADOTable1.UpdateBatch; Form7.Show; end; end. На форме корректировки данных осуществляется изменение или удаление ранее введенных данных. Используемые компоненты: DataSource, DBGrid, ADOTable, MainMenu, Label, DBNavigator. Код программы: unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, DB, ADODB, Grids, DBGrids, ExtCtrls, DBCtrls, StdCtrls; type TForm2 = class(TForm) DBNavigator1: TDBNavigator; DBGrid1: TDBGrid; ADOTable1: TADOTable; DataSource1: TDataSource; MainMenu1: TMainMenu; N1: TMenuItem; DataSource2: TDataSource; DBNavigator2: TDBNavigator; DBGrid2: TDBGrid; ADOTable2: TADOTable; Label1: TLabel; procedure N1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form2: TForm2; implementation {$R *.dfm} procedure TForm2.N1Click(Sender: TObject); begin close; end; end. На форме статистики идет поиск студентов по специальности, группе, ФИО, или дате. Так же можно выбрать студентов имеющих пропуски по неуважительным причинам. Выводится количество пропусков, по какой причине и их процентное соотношение, среднее количество пропущенных часов на одного человека. Все найденные записи могут быть выведены на печать в виде списка. Используемые компоненты: DataSource, DBGrid, ADOQuery, GroupBox, CheckBox, ADOTable, Label, Button, MainMenu. Код программы: unit Unit3; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, DB, ADODB, Grids, DBGrids, Menus; type TForm3 = class(TForm) DataSource1: TDataSource; DBGrid1: TDBGrid; ADOQuery1: TADOQuery; GroupBox1: TGroupBox; CheckBox1: TCheckBox; CheckBox2: TCheckBox; CheckBox3: TCheckBox; CheckBox4: TCheckBox; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Edit5: TEdit; Label1: TLabel; Label2: TLabel; Button1: TButton; Label3: TLabel; Label4: TLabel; Label5: TLabel; Edit6: TEdit; Edit7: TEdit; Edit8: TEdit; Label6: TLabel; Edit9: TEdit; Button2: TButton; Button3: TButton; Label7: TLabel; MainMenu1: TMainMenu; Label8: TLabel; N2: TMenuItem; Edit10: TEdit; Edit11: TEdit; Edit12: TEdit; Label9: TLabel; procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure N2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form3: TForm3; implementation uses Unit4, Unit5, Unit6, Unit1; {$R *.dfm} procedure TForm3.Button2Click(Sender: TObject); Var s, a,b,c,d:real; begin ADOQuery1.First; a:=0; b:=0; c:=0; d:=0; while not ADOQuery1.Eof do begin a:=a+ADOQuery1.FieldByName('Uvazh').AsFloat; b:=b+ADOQuery1.FieldByName('Bolezn').AsFloat; c:=c+ADOQuery1.FieldByName('Neuvazh').AsFloat; d:=a+b+c; ADOQuery1.Next; end; Edit6.Text:=FloatToStr(a); Edit7.Text:=FloatToStr(b); Edit8.Text:=FloatToStr(c); Edit9.Text:=FloatToStr(d); d:=100/d; edit10.Text:=FloatToStr(a*d) ; edit11.Text:=FloatToStr(b*d) ; edit12.Text:=FloatToStr(c*d) ; end; procedure TForm3.Button3Click(Sender: TObject); begin if CheckBox1.Checked then begin Form4.QRLabel10.Caption:=Edit9.Text; Form4.QRLabel11.Caption:=Edit6.Text; Form4.QRLabel12.Caption:=Edit7.Text; Form4.QRLabel13.Caption:=Edit8.Text; Form4.QRLabel14.Caption:=Edit1.Text; Form4.QuickRep1.Preview; end; if CheckBox2.Checked then begin Form5.QRLabel9.Caption:=Edit9.Text; Form5.QRLabel10.Caption:=Edit6.Text; Form5.QRLabel11.Caption:=Edit7.Text; Form5.QRLabel12.Caption:=Edit8.Text; Form5.QRLabel13.Caption:=Edit2.Text; Form5.QuickRep1.Preview; end; if CheckBox3.Checked then begin Form6.QRLabel8.Caption:=Edit9.Text; Form6.QRLabel9.Caption:=Edit6.Text; Form6.QRLabel10.Caption:=Edit7.Text; Form6.QRLabel11.Caption:=Edit8.Text; Form6.QRLabel12.Caption:=Edit3.Text; Form6.QuickRep1.Preview; end; end; procedure TForm3.Button1Click(Sender: TObject); var s:String; begin ADOQuery1.Close; ADOQuery1.SQL.Clear; if CheckBox1.Checked then ADOQuery1.SQL.Add('SELECT *FROM Student WHERE (((Student.Spesi)="'+Edit1.Text+'"));'); if CheckBox2.Checked then ADOQuery1.SQL.Add('SELECT * FROM Student WHERE (((Student.Gruppa)="'+Edit2.Text+' "));'); if CheckBox3.Checked then ADOQuery1.SQL.Add('SELECT * FROM Student WHERE (((Student.FIO)="'+Edit3.Text+' "));'); if CheckBox4.Checked then ADOQuery1.SQL.Add('SELECT * FROM Student WHERE (((Student.Date)="'+Edit4.Text+' "));'); //ShowMessage(ADOQuery1.SQL.Text); ADOQuery1.Active:=True; end; procedure TForm3.N2Click(Sender: TObject); begin close; end; end. На форме справочников добавляются группы и фамилии студентов, а также специальности и группы. Используемые компоненты: DataSource, DBGrid, ADOTable, Label, MainMenu,DBNavigator. Код программы: unit Unit7; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, DB, ADODB, Grids, DBGrids, ExtCtrls, DBCtrls, Menus; type TForm7 = class(TForm) DataSource1: TDataSource; DBGrid1: TDBGrid; ADOTable1: TADOTable; Label1: TLabel; MainMenu1: TMainMenu; N1: TMenuItem; DBNavigator1: TDBNavigator; procedure N1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form7: TForm7; implementation {$R *.dfm} procedure TForm7.N1Click(Sender: TObject); begin form7.Close; end; Все найденные результаты на форме статистики можно вывести на экран в виде отчета и распечатать его. Используемые компоненты:QRLabel, QuickRep, PageHeaderBand, TitleBand, DetailBand, SummaryBand, QRDBText. 5 ПРОГРАММНАЯ И ЭКСПЛУАТАЦИОННАЯ ДОКУМЕНТАЦИЯ Ведомость эксплуатационных документов (ГОСТ 19.507-79). К эксплуатационных документации относится следующий комплекс документов: 1) описание программы (ГОСТ 19.402-78), в котором содержатся сведения о логической структуре и функционировании программного продукта; 2) техническое задание (ГОСТ 19.201-78), определяющее требования, предъявляемые к программному продукту, необходимые стадии и сроки разработки, виды испытаний; 3) руководство оператора (ГОСТ 19.505-79) - сведения, необходимые для обеспечения процедуры общения оператора с ЭВМ в процессе выполнения (работы) программного продукта; Описание программы (ГОСТ 19.402-78). 1) Общие сведения. Программный продукт «Учет посещаемости» поможет в контроле за посещаемостью студентов. Использование данного программного продукта позволяет: - Организовать ввод количества пропущенных часов за каждый день по уважительным (болезнь, отпускные) и неуважительным причинам по каждой специальности, группе, студенту - Организовать возможность подведения итогов посещаемости по каждому студенту, по каждой группе, специальности и в целом по колледжу (процентное соотношение пропущенных часов по болезни, по уважительным причинам, по неуважительным причинам, количество прогулов на 1 человека, общее количество пропущенных часов по группе, по специальности, по колледжу) - Обеспечить формирование списков студентов, имеющих наибольшее количество пропущенных часов по итогам текущего месяца, с начала учебного года - Обеспечить формирование отчета. В данном программном продукте использовался язык программирования Delphi, базы данных были созданы с использованы MS ACCESS. 2) Описание логической структуры. В процессе работы над программным продуктом была разработана его структура, которая состоит из нескольких форм. Главной формы из которой можно открыть остальные. 3) Используемые технические средства: - процессор -Pentium 3; - видеокарта -64 Мб; - оперативная память - не менее 256 Мб; - ОС - Windows XT; - наличие Microsoft Office ACCESS; - CD-ROM. 4) Загрузка. Для запуска программы необходимо разместить папку «УЧЕТ ПОСЕЩАЕМОСТИ» на диске D, затем запустить EXE - файл «Учет посещаемости». Техническое задание (ГОСТ 19.201 - 78). 1) Наименование. Разработка программного обеспечения по автоматизации учебного процесса в колледже «Учет посещаемости». 2) Основанием для создания является. Задание на дипломное проектирование.3) Назначение и цель.Программный продукт предназначен для использования а колледже для учета посещаемости.В данный программный продукт должно включаться:- Рабочую программу «УЧЕТ ПОСЕЩАЕМОСТИ»;- База данных MS ACCESS «БД»;4) Безопасность.Данный программный продукт позволяет вносить изменения. Так как предлагается первая версия программы, содержащая открытый код, которая требует изменений и доработки по мере устранения существующих ошибок и добавления новых функций. Поэтому вопрос о защите содержащейся в пособии информации пока не должен решаться.Руководство оператора (ГОСТ 19. 505 - 79). Для запуска программы необходимо открыть папку на диске D, за тем запустить EXE - файл «Учет посещаемости». После этого следует ввести необходимые данные. Чтобы завершить программу закрыть все ее окна. При возникновении ошибок, сбоев, неполадок в работе с программным продуктом, необходимо обратиться к специалисту в области информационных технологий. Самим пользователям при обнаружении неполадок ничего изменять не рекомендуется, так как программисту будет сложнее обнаружить причину возникновения ошибки. ЗАКЛЮЧЕНИЕ Задачей дипломного проекта являлась разработка программного продукта по учету посещаемости (на примере колледжа). Для реализации этой задачи были выполнены следующие этапы: - Спроектирована логическая модель базы данных - Спроектирована физическая модель базы данных - Организован ввод количества пропущенных часов за каждый день по уважительным (болезнь, отпускные) и неуважительным причинам по каждой специальности, группе, студенту - Предусмотрена возможность корректировки данных - Организована возможность подведения итогов посещаемости по каждому студенту, по каждой группе, специальности и в целом по колледжу (процентное соотношение пропущенных часов по болезни, по уважительным причинам, по неуважительным причинам, количество прогулов на 1 человека, общее количество пропущенных часов по группе, по специальности, по колледжу) - Предусмотрена возможность сравнения итоговых данных с итогами предыдущего месяца - Предусмотрена возможность формирования списков студентов, имеющих наибольшее количество пропущенных часов по итогам текущего месяца, с начала учебного года - Предусмотрена возможность формирования отчета Данный программный продукт был написан с использованием Microsoft Office Access для создания базы данных и среда разработки программных продуктов Delphi, имеющий большие возможности для работы с базами данных. Соединение с базой данных произведено при помощи технологии ADO. Обработка данных производилась при помощи операторов языка запросов SQL. В результате была создана программа «Учет посещаемости», которая может быть использована в подобных учебных заведениях. В ходе выполнения дипломной работы был создан программный продукт, дающий возможность вести учет посещаемости. Программа интуитивно проста и понятна для любого пользователя, для ее использования не нужно специального обучения. При этом она выполняет в основном все функции, необходимые для нормальной работы. CПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ 1 Гофман В. Э., Хомоненко А. Д. Delphi. Быстрый старт. -- СПб.: БХВ-Петербург, 2003. -- 288 с. 2 Гофман В. Э., Хомоненко А. Д. Работа с базами данных в Delphi. -- СПб.: БХВ-Петербург, 2001. -- 656 с. 3 Боровский А. Н. Программирование в Delphi 2005. -- СПб.: БХВ-Петербург, 2005. - 448 с. 4 Дарахвелидзе П. Г., Марков Е. П. Delphi 2005 для Win32. - СПб.: БХВ-Петербург, 2005. - 1136 с. 5 Сорокин А. В. Delphi. Разработка баз данных. -- СПб.: Питер, 2005. -- 477 с. 6 Фленов М. Е. Библия Delphi. -- СПб.: БХВ-Петербург, 2004. -- 880 с. 7 Фленов М. Е. Программирование в Delphi глазами хакера. -- СПб.: БХВ-Петербург, 2003. - 368 с. 8 Фленов М. Е. Delphi в шутку и всерьез: что умеют хакеры (+CD). -- СПб.: Питер. 2006. -- 271 с. 9 Архангельский Л.Я. Delphi 2006. Справочное пособие: Язык Delphi, классы, функции Win32 и .NET. -- М.: ООО «Бином-Пресс», 2006 г. -- 1 152 с. 10 Фаронов В. В. Delphi 2005. Разработка приложений для баз данных и Интернета. -- СПб.: Питер, 2006. -- 603 с. 11 Карпова Т. С. Базы данных: модели, разработка, реализация. -- СПб.: Питер, 2001. -- 304 с. 12 Delphi World 6.0. Электронный справочник.
Страницы: 1, 2
|