Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Разработка клиент-серверного приложения по работе с базой данных "Локомотивное депо "

Содержание:

Введение

ОАО Российские Железные Дороги (РЖД) по степени оснащенности современными средствами информатики занимает ведущее положение среди отраслей народного хозяйства России.

Создана современная телекоммуникационная инфраструктура, в основе которой лежит цифровая волоконно-оптическая сеть протяженностью выше 45 000 км. В ГВЦ осуществлена значительная концентрация вычислительных комплексов, что позволяет считать его держателем информационных ресурсов ОАО «РЖД».

В филиале Московской железной дороги, а конкретно в Моторовагонной дирекции депо «Апрелевка» также установлены программы, контролируемые ГВЦ. Я проходила производственную практику в отделе кадров, в котором до этого времени только некоторая информация о сотрудниках находилась в электронном виде. Руководство депо и отдела кадров поставило передо мной задачу перевести всю имеющуюся в бумажном виде информацию в электронный вид. И было предложено использовать для этого такие программы, как MS Access, так как у сотрудников был опыт работы с ней, и Delphi 7, так как она также уже использовалась ранее. Так как сотрудники отдела кадров не являются профессиональными пользователями ПК необходимо было максимально упростить программу, на которой они будут работать. В отделе работает три человека, каждый из которых выполняет определенную работу. Данная программа будет предназначена для одного человека, именно он занимается приемом людей на работу, отслеживает прохождение медкомиссии и получение квалификации. В качестве сервера будет выступать компьютер, на котором и будет храниться база данных и приложение.

  1. Актуальность выбора задачи

Выбранная мной задача по разработке клиент-серверного приложения по работе с базой данных «Локомотивное депо» является важной задачей для объединения всей имеющейся информации о сотрудниках в отделе кадров локомотивного депо «Апрелевка» и представления ее в более удобном виде. В связи с тем, что программы, которыми ранее пользовалось Депо, были выполнены с помощью такого средства разработки, как пакет Delphi, было решено разработать новое приложения именно с помощью этого языка. Очень важно, чтобы информация была отображена не только полно, но и хранилась в виде числовых значений, что я и продемонстрирую в ходе выполнения задания.

3. Описание использованных средств

3.1. MS Access 2007

Microsoft Office Access— реляционная СУБД, созданная корпорацией Microsoft. Имеет широкий спектр функций, включая связанные запросы, связь с внешними таблицами и базами данных. Благодаря встроенному языку VBA, в самом Access можно писать приложения, работающие с базами данных.

Основные компоненты MS Access:

- построитель таблиц;

- построитель экранных форм;

- построитель SQL-запросов (язык SQL в MS Access не соответствует стандарту ANSI);

- построитель отчётов, выводимых на печать.

Они могут вызывать скрипты на языке VBA, поэтому MS Access позволяет разрабатывать приложения и БД практически «с нуля» или написать оболочку для внешней БД.

MS Access является файл-серверной СУБД и потому применима лишь к небольшим приложениям. Отсутствует ряд механизмов, необходимых в многопользовательских БД, таких, например, как триггеры.

Существенно расширяет возможности MS Access по написанию приложений механизм связи с различными внешними СУБД: "связанные таблицы" (связь с таблицей СУБД) и "запросы к серверу" (запрос на диалекте SQL, который "понимает" СУБД). Также MS Access позволяет строить полноценные клиентсерверные приложения на СУБД MS SQL Server. При этом имеется возможность совместить с присущей MS Access простотой инструменты для управления БД и средства разработки.

Данная организация использует именно эту программу для своей работы. Поэтому она была выбрана и для создания новой программы.

3.2. Delphi 7

Delphi — среда программирования, в которой используется язык программирования Object Pascal. Начиная со среды разработки Delphi 7.0, в официальных документах Borland стала использовать название Delphi для обозначения языка Object Pascal. Начиная с 2007 года уже язык Delphi (производный от Object Pascal) начал жить своей самостоятельной жизнью и претерпевал различные изменения связанные с современными тенденциями (например, с развитием платформы .net) развития языков программирования: появились class helpers, перегрузки операторов и д.р.

Изначально среда разработки была предназначена исключительно для разработки приложений Microsoft Windows, затем был реализован также для платформ Linux (как Kylix), однако после выпуска в 2002 году Kylix 3 его разработка была прекращена, и, вскоре после этого, было объявлено о поддержке Microsoft .NET.

Реализация среды разработки проектом Lazarus (Free Pascal, компиляция в режиме совместимости с Delphi) позволяет использовать его для создания приложений на Delphi для таких платформ, как Linux, Mac OS X и Windows CE.

Object Pascal — результат развития языка Турбо Паскаль, который, в свою очередь, развился из языка Паскаль. Паскаль был полностью процедурным языком, Турбо Паскаль, начиная с версии 5.5, добавил в Паскаль объектно-ориентированные свойства, а в Object Pascal — динамическую идентификацию типа данных с возможностью доступа к метаданным классов (то есть к описанию классов и их членов) в компилируемом коде, также называемом интроспекцией — данная технология получила обозначение RTTI. Так как все классы наследуют функции базового класса TObject, то любой указатель на объект можно преобразовать к нему, после чего воспользоваться методом ClassType и функцией TypeInfo, которые и обеспечат интроспекцию.

Object Pascal (Delphi) является результатом функционального расширения Turbo Pascal.

3.3. AllFusion ERwin Data Modeler 7 (ERwin)

Рассмотрим Функциональные возможности AllFusion ERwin Data Modeler 7 (ERwin)

Архитектура уровня проектирования. AllFusion ERwin Data Modeler (ERwin) имеет достаточную гибкость для разработки архитектуры связных моделей данных, полностью удовлетворяющей потребностям организации. Наряду с комбинированной логической/физической моделью поддерживаются раздельные логические и физические модели. Благодаря накоплению знаний об отношениях между компонентами связанных моделей и ведению журнала проектных решений пользователи могут быстро определять влияние изменений одного уровня проектирования на другой.

Технология трансформации. Физическая структура базы данных редко совпадает с исходной  логической структурой. В целях повышения производительности бизнес-приложений часто требуется проводить денормализацию данных на физическом уровне модели. AllFusion ERwin Data Modeler (ERwin) позволяет автоматизировать процесс трансформации модели, сохраняя в целости исходный проект.

Управление большими моделями. AllFusion ERwin Data Modeler (ERwin) облегчает управление большими корпоративными моделями за счет использования предметных областей (Subject Areas) и хранимых отображений (Stored Displays). Предметные области позволяют конкретным  проектировщикам фокусировать внимание, разделяя модель на более мелкие, и за счет этого легче управляемые подмодели. Хранимые отображения предоставляют разные варианты графического представления модели или ее предметных областей, облегчая обмен информацией между специализированными группами пользователей.

Генерация структуры базы данных. AllFusion ERwin Data Modeler (ERwin) позволяет автоматически сгенерировать структуру базы данных из модели. Входящие в продукт  оптимизированные шаблоны триггеров ссылочной целостности и богатый макроязык, совместимый с различными типами баз данных, позволяют пользователю настроить триггеры и хранимые процедуры. Настраиваемые шаблоны облегчают генерацию законченной физической структуры базы данных и полных определений (для соответствующей целевой базы данных).

Обратное проектирование. AllFusion ERwin Data Modeler (ERwin) позволяет провести автоматическую обратную генерацию структуры базы данных в модель для ее изучения и документирования и/или для последующей миграции на платформу другой СУБД.

Графические объекты. С помощью графических объектов AllFusion ERwin Data Modeler (ERwin) обеспечивает наглядное представление бизнес-правил. Графические объекты, например линии, эллипсы и другие, легко редактируются. Разработчики моделей могут также настраивать параметры шрифта и цвета объектов.

Полный набор возможностей Undo/Redo. AllFusion ERwin Data Modeler (ERwin) предоставляет полный комплект возможностей «отменить/вернуть изменения» в пределах сессии моделирования. Возможности Undo/Redo могут быть применимы ко всем задачам моделирования, включая изменения размещения и создание/обновление/удаление объектов. Отменяя конкретные изменения модели, пользователи могут полностью понимать влияния этих действий.

Создание отчетов и печать. Ключевым элементом, обеспечивающим коммуникацию и совместную работу пользователей в процессе моделирования, является способность визуализации и публикации данных. AllFusion ERwin Data Modeler (ERwin) предоставляет гибкие, настраиваемые возможности создания отчетов и печати. Два встроенных построителя шаблонов отчетов: ERwin Data Browser и Report Template Builder - позволяют однократно разработать шаблон отчета, который впоследствии будет доступен для использования в любых моделях для генерации отчетов в любом из форматов: HTML, RTF, TXT, PDF.

AllFusion ERwin API and Add-In Manager. Программный интерфейс приложений AllFusion ERwin API and Add-In Manager и менеджер встраиваемых систем Add-In Manager обеспечивают работу с дополнительным ПО сторонних разработчиков для выполнения специфичных задач, не представленных в пакете AllFusion Modeling Suite.

Встроенная технология обмена метаданными. Встроенная передовая технология предоставляет возможность обмена метаданными между AllFusion ERwin Data Modeler (ERwin) и другими средствами, такими как MS Excel, XSD, XMI, CWM, ведущими ETL/EII-инструментами, многочисленными средствами BI/Reporting, а также с широким спектром сред моделирования такими, как: Rational Data Architect, Oracle Designer, Sybase Power Designer и другими - всего порядка 100 популярных продуктов. Данная технология позволяет сэкономить временные и материальные ресурсы благодаря устранению необходимости перепроектировать модели.

Поддерживаемые СУБД

  • Oracle
  • DB2/UDB (включая iSeries)
  • SQL Server
  • Teradata
  • ODBC
  • Sybase
  • Informix
  • Ingres
  • Progress
  • Access

Поддерживаемые ОС  

  • Windows 2000
  • Windows XP
  1. Разработка приложения
    1. Архитектура клиент-серверного приложения

Рис.1 Архитектура клиент-серверного приложения

Так как доступ к базе данных и программе будет иметь один человек, то сервером и будет являться его ПК.

4.2 Схема работы клиента с приложением

БД

C:\Documents and Settings\Мария\Рабочий стол\face-clipart.jpg

Приложение

Рис.2 Взаимодействие пользователя с приложением

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

4.3. Этапы выполнения задания

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

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

Для данного локомотивного депо, а конкретно для отдела кадров локомотивного депо «Апрелевка», необходимо создать и заполнить базу данных, используя MS Access, а затем разработать для этой базы данных приложение с помощью Delphi 7.

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

Этап 2. Построение схемы

После того, как мы определились с поставленной задачей, приступаем к созданию базы данных в среде MS Access. Для начала построим ER-модель, чтобы нагляднее увидеть задачу (Рис.3). Данную модель я построила с помощью программы ERwin.

Рис.3 Логическая ER-модель

Для того, чтобы сгенерировать базу данных, я выполнила следующие шаги:

  1. Запустила Microsoft Access и создала новую пустую БД. Затем закрыла созданную БД и вернулась в ERwin:

Рис.4 Создание базы данных

  1. Перешла к физической модели:

Рис.5 Переход к физической модели

  1. В главном меню выбрала Database\Choose Database:

Рис.6 Выбор базы данных

  1. В Target Desktop DBMS выбрала Access. В Access Version выбрала версию MS Access;
  2. В главном меню выбрала Tools\Forvard ingeneer/Schema Generation;
  3. Не меняя опций, нажала на кнопку Generate:

Рис.7 Соединение с Access

  1. Появилось окно Access Connection. В поле User Name ввела «Admin», в поле Database при помощи браузера (кнопка Browse) указала путь к файлу БД, созданному в MS Access:

Рис.8 Выбираем путь к базе данных

  1. Нажала кнопу Connect;
  2. Теперь можно просмотреть созданную БД, снова вызвав MS Access.

После создания базы данных ее необходимо заполнить. В штате депо на момент заполнения числилось 330 человек. Как видно из ER-модели, нам необходимо было заполнить 10 таблиц с информацией об этих сотрудниках.

Этап 3. Создание приложения

После заполнения базы данных я приступила к созданию приложения на Delphi для работы с этой базой данных. Необходимо создать поле для ввода пароля для входа в программу. Это поле будет выглядеть так (Рис.4):

Рис.4 Окно ввода пароля

При вводе вместо пароля будут появляться символы *. Это я получила следующим образом: в окне программы Delphi 7 я прошла по пути: File -> New. В открывшемся диалоговом окне выбрала закладку Dialogs, щелкнула на значке Password Dialog и нажала кнопку Ok. На экране появилась готовая форма запроса пароля с именем PasswordDlg.

Необходимо, чтобы пароль был зашифрован. Для этого я написала специальную функцию TPasswordDlg.xortext. Через свое имя функция будет возвращать зашифрованную строку, переданную в параметре Text. Вот, например, что получится, если зашифровать этой процедурой наш пароль "admin": †„Џ‹„Ќ

Теперь пароль в зашифрованном виде можно хранить в файле, в моем случае это файл Unit2.dcu.

После входа в приложение появиться окно с десятью вкладками, в каждой из которых будет таблица, которую я создала в MS Access. Кроме этих таблиц в каждой вкладке будет полоса прокрутки и поля для добавления, изменения и удаления строк.

4.4. Описание полученной базы данных в MS Access.

Рис.6 База данных в Access

Данная база данных была создана с помощью программы MS Access. Таблицы, которые я заполняла в этой базе данных, были получены автоматически при соединении ERwin и MS Access. База данных находится во 2 нормальной форме. Она содержит 10 таблиц, соединенных между собой с помощью ключей. В базе данных находится информация о 330 сотрудниках, их профессиях, адресах, различных документах (паспортные данные в виде номера и серии, страховой полис, ИНН, пенсионное удостоверение и т.д.), а также информации о медкомиссии, нарушениях и поощрениях. База данных была заполнена вручную.

4.5. Формы отчетов

Я создала форму, в которой будет выводиться ФИО, должность и квалификация сотрудников депо. Для начала я написала запрос по параметрам:

Рис. 7 Запрос

Затем я создала отчет по запросу:

Рис 8. Отчет по запросу

Рис. 9 Отчет по запросу

5. Инструкция пользователю по работе с приложением

  1. На рабочем столе с помощью двойного щелчка по ярлыку Depo запустите приложение Depo.exe.
  2. Система попросит ввести Ваш пароль (Рис.10). Он будет сообщен каждому пользователю лично.

Рис.10 Ввод пароля

  1. После ввода пароля появится основное окно программы. На нем Вы можете увидеть 10 разделов (Список людей, Документы, Должности, Управление, Движение, Квалификация, Медкомиссия, Приказы, Нарушения, Поощрения).

Рис.11 Окно с вкладками

Внизу под каждой таблицей в каждой вкладке находится «навигатор» (Рис.12).

Рис.12 Навигация

1 кнопка – вернуться к первой записи;

2 кнопка – на одну строку вперед;

3 кнопка – на одну строку назад;

4 кнопка – вернуться к последней записи;

5 кнопка – добавить запись;

6 кнопка – удалить запись;

7 кнопка – изменить значения в строке;

8 кнопка – подтвердить изменения;

9 кнопка – отмена предыдущего действия;

10 кнопка – обновить;

  1. Раздел «Список людей» предназначен для просмотра и редактирования информации о людях, работающих в данном Депо (ФИО, пол, дата рождения, адрес прописки).

Рис.13 Раздел «Список людей»

  1. Раздел «Должность» предназначен для просмотра и редактирования информации о существующих в депо должностях. Здесь можно увидеть графу «Вид должности», «ID_Должности».

Рис.13 Раздел «Должности»

  1. Раздел «Документы» предназначен для просмотра и редактирования информации о документах, полученных при приеме человека на работу, таких как: № ТК, № страхового полиса, ИНН, пенсионное удостоверение, паспортные данные (в виде серии и номера), № удостоверения, дата приема на работу, дата увольнения.

Рис.14 Раздел «Документы»

  1. Раздел «Медкомиссия» предназначен для просмотра и редактирования информации о времени прохождения и информации о прохождении медицинской комиссии: здесь можно увидеть такие графы: дата прохождения, информация о прохождении.

Рис.15 Раздел «Медкомиссия»

  1. Раздел «Управление» предназначен для просмотра и редактирования информации о существующих в депо должностях, которые занимаются управлением. Здесь можно увидеть графы: количество человек, № кабинета.

Рис.16 Раздел «Управление»

  1. Раздел «Движение» предназначен для просмотра и редактирования информации о существующих в депо должностях, которые занимаются движением в данном депо. Здесь можно увидеть графу: количество человек, ID_Должности, ID_Человека.

Рис.17 Раздел «Движение»

  1. Раздел «Квалификация» предназначен для просмотра и редактирования информации о существующих в депо квалификациях. Здесь можно увидеть графы: ID_должности, ID_человека, № приказа, № разряда.

Рис. 18 Раздел «Квалификация»

  1. Раздел «Нарушения» предназначен для просмотра и редактирования информации о существующих в депо нарушениях. Здесь можно увидеть графы: ID_должности, ID_человека, № приказа, вид нарушения, дата нарушения, вид наказания.

Рис.19 Раздел «Нарушения»

  1. Раздел «Поощрения» предназначен для просмотра и редактирования информации о существующих в депо поощрениях. Здесь можно увидеть графы: ID_должности, ID_человека, № приказа, вид поощрения, причина поощрения.

Рис.20 Раздел «Поощрения»

  1. Раздел «Приказы» предназначен для просмотра и редактирования информации о существующих в депо приказах. Здесь можно увидеть графу: вид приказа.

Рис.21 Раздел «Приказы»

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

Заключение

На производственной практике руководством предприятия, и в частности отделом кадров передо мной была поставлена задача написать приложение, которое было бы компактно и просто в управлении. Также необходимо было заменить огромное количество буквенной информации на цифровую. Так как приложения на данном предприятие работали с помощью таких программ, как Delphi 7 и MS Access, руководство предложило мне использовать их при выполнении практического задания.

Мною было разработано клиент-серверное приложение «Локомотивное депо». Я изучила такие средства, как СУБД Microsoft Office Access и компоненты Delphi 7 для разработки приложений.

Я самостоятельно разработала базу данных в Microsoft Office Access, приложение по работе с базой данных с помощью языка программирования Delphi 7 и инструкцию пользователю по работе с приложением.

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

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

1. Информация о сотрудниках в бумажном виде (ксерокопии документов (паспорт, ИНН, пенсионное удостоверение, трудовые книжки), удостоверения, информация о прохождении медкомиссии, информация о сдачи экзаменов на повышение квалификации и так далее);

2. Сорокин А.В. Разработка базы данных на Delphi, М.: Просвещение, 2005г.;

3. К.Дж. Дейт Введение в базы данных, М.:Вильямс, 2005г.

Приложение

unit Unit1;

interface

uses

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

Dialogs, Unit3, Grids, DBGrids, ComCtrls, ExtCtrls, DBCtrls;

type

TForm1 = class(TForm)

pgc1: TPageControl;

ts1: TTabSheet;

ts2: TTabSheet;

ts3: TTabSheet;

ts4: TTabSheet;

ts5: TTabSheet;

ts6: TTabSheet;

ts7: TTabSheet;

ts8: TTabSheet;

ts9: TTabSheet;

ts10: TTabSheet;

dbgrd1: TDBGrid;

dbgrd2: TDBGrid;

dbgrd3: TDBGrid;

dbgrd4: TDBGrid;

dbgrd5: TDBGrid;

dbgrd6: TDBGrid;

dbgrd7: TDBGrid;

dbgrd8: TDBGrid;

dbgrd9: TDBGrid;

dbgrd10: TDBGrid;

dbnvgr1: TDBNavigator;

dbnvgr2: TDBNavigator;

dbnvgr3: TDBNavigator;

dbnvgr4: TDBNavigator;

dbnvgr5: TDBNavigator;

dbnvgr6: TDBNavigator;

dbnvgr7: TDBNavigator;

dbnvgr8: TDBNavigator;

dbnvgr9: TDBNavigator;

dbnvgr10: TDBNavigator;

procedure FormShow(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.FormShow(Sender: TObject);

begin

PasswordDlg.showmodal;

end;

end.

unit Unit2;

interface

uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,

Buttons;

type

TPasswordDlg = class(TForm)

Label1: TLabel;

Password: TEdit;

OKBtn: TButton;

CancelBtn: TButton;

procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);

private

{ Private declarations }

public

{ Public declarations }

function xortext(text:string):string;

end;

var

PasswordDlg: TPasswordDlg;

implementation

{$R *.dfm}

function TPasswordDlg.xortext(text:string):string;

var key, longkey : string;

i : integer;

toto: char;

begin

key:='da'; //ключ

for i := 0 to (length(text) div length(key)) do

longkey := longkey + key;

for i := 1 to length(text) do begin

toto := chr((ord(text[i]) XOR ord(longkey[i])));

result := result + toto;

end;

end;

procedure TPasswordDlg.FormCloseQuery(Sender: TObject;

var CanClose: Boolean);

var pass: string;

begin

pass:=xortext('admin');

if xortext(Password.Text) = pass then CanClose:=true

else Application.Terminate;

end;

end.

unit Unit3;

interface

uses

SysUtils, Classes, DB, ADODB;

type

TDataModule3 = class(TDataModule)

ADOConnection1: TADOConnection;

ADOTable1: TADOTable;

ds1: TDataSource;

ADOTable2: TADOTable;

ds2: TDataSource;

ADOTable3: TADOTable;

ds3: TDataSource;

ADOTable4: TADOTable;

ds4: TDataSource;

ADOTable5: TADOTable;

ds5: TDataSource;

ADOTable6: TADOTable;

ds6: TDataSource;

ADOTable7: TADOTable;

ds7: TDataSource;

ADOTable8: TADOTable;

ds8: TDataSource;

ADOTable9: TADOTable;

ds9: TDataSource;

ADOTable10: TADOTable;

ds10: TDataSource;

private

{ Private declarations }

public

{ Public declarations }

end;

var

DataModule3: TDataModule3;

implementation

{$R *.dfm}

end.