Название
|
Обозначение
|
Тип
|
Длина
|
Код
записи
|
Id_print_history
|
int
|
11
|
Код
принтера
|
Id_print
|
int
|
11
|
Дата
записи
|
Data_zap
|
datetime
|
-
|
Запись
истории
|
Opis
|
blob
|
-
|
Выходной информацией являются отчет по
оборудованию, находящиемуся на необходимом участке.
1.4 Информационная модель решения
задачи
Информационная модель решения задачи - это
последовательность операций, выполняемых над информацией с момента её внесения
в базу данных до получения окончательных результатов, например формирования
каких-либо отчётов. Она должна быть организована так, чтобы работа максимально
упрощалась и выполнялась с минимальными затратами труда и денежных средств.
Информационная модель делится на 4 этапа: приём
входной информации; подготовка исходных данных; обработка информации;
подготовка выходной информации.
Информационная модель может включать: приём
данных; сохранение введенных данных в базе; вывод результата работы программы
на печать; контроль ввода данных.
В данной выпускной квалификационной работе
представлена наиболее распространённая информационная модель - это схема
взаимосвязи таблиц по ключевым полям (рис 1.4.1).
Рисунок 1.4.1 - Схема взаимосвязи данных таблиц
1.5 Описание программы и схема
взаимосвязи модулей
При решении задач были разработаны следующие
модули:.dpr - файл проекта.pas - модуль данных.pas - модуль «Идентификация
пользователя».pas - модуль «Главное меню». Данный модуль представлен в
блок-схеме 1.6.1
Сomp_info.pas - модуль «Добавление компьютеров».pas
- модуль «Изминение компьютера».pas - модуль «Добавление картриджа».pas -
модуль «Изминение картриджа».pas - модуль «Изминение принтера».pas - модуль
«Добавление участка».pas - модуль «Список ответственных».pas - модуль «Список
пользователей».pas - модуль «Вывод отчета по оюорудованию на участке»
Схема взаимосвязи модулей представлена на
рисунке 1.5.1.
Тексты модулей представлены в приложении 1 (стр.
33).
Рисунок 1.5.1 - Схема взаимосвязей программных
модулей
1.6 Алгоритм решения задачи
Алгоритм - последовательность арифметических и
логических действий над числовыми значениями переменных, приводящая к
вычислению результата решения задачи при изменении исходных данных в достаточно
широких пределах.
На этапе разработки алгоритма необходимо
определить последовательность действий, которые надо выполнить для получения
результата. Если задача может быть решена несколькими способами и,
следовательно, возможны различные варианты алгоритма решения, то программист, используя
некоторый критерий, например скорость выполнения алгоритма, выбирает наиболее
подходящее решение.
Результатом этапа разработки алгоритма является
подробное словесное описание алгоритма или его блок-схема - графическое
представление алгоритма.
Алгоритм решения данной задачи представлен
модулем главного меню (MM.pas) в виде блок-схемы на рисунке 1.6.1 (стр. 16).
Дискретность - это свойство алгоритма, когда
алгоритм разбивается на конечное число шагов.
Понятность - свойство алгоритма, при котором
каждый из этих шагов являются законченными и понятными.
Детерминированность - свойство, когда каждый шаг
должен пониматься в строго определённом смысле, чтобы не оставалась места
произвольному толкованию. чтобы каждый, прочитавший указание, понимал его
однозначно.
Массовость - свойство, когда по данному
алгоритму должна решаться не одна, а целый класс подобных задач.
Результативность - свойство, при котором любой
алгоритм в процессе выполнения должен приводить к определённому результату.
Отрицательный результат также является результатом.
Рисунок 1.6.1 - Алгоритм выполнения модуля
MM.pas
Рис. 1.6.2
1.7 Руководство пользователю по
работе с программой
Вход в программу
При запуске программы, пользователю предлагается
выбор учетной записи, если таковой нет, то необходимо нажать кнопку «Добавить
пользователя» для ввода новой учетной записи (рис. 1.7.1). Учётная запись
требует пароля, пользователю требуется ввести пароль из латинских букв и цифр
длиной до 16 символов.
Рисунок 1.7.1
Главное меню
Главное меню программы, в зависимости от учётной
записи, несколько отличается. С помощью главного меню пользователь может
добавить записи об необходимых участках, а также поменять участок с каким он
хочет работать. Пользователь может выбрать с каким типом оборудования он хочет
работать. Из главного меню пользователь может переходить на формы для работы с
данными.
Рисунок 1.7.2
Участки
Для ввода нового звонка в главном меню пункт
«Справочники», подункт «Участки» или кнопка «+» на главной форме. Эта форма
позволяет пользователю увидеть с какими участками он может работать или
добавить новый участок (рис 1.7.3). Ввод записи производится путем ввода в поле
адрес участка, затем нажатием кнопки «Добавить».
Рисунок 1.7.3
Пользователи
Содержит сведения об пользователях, имеется
возможность добавления и удаления пользователя. При удалении пользователя удаляются
все связанные с ним записи, на что всплывает диалоговое окно с предупреждением
и выбором действий (рис 1.7.4).
Рис. 1.7.4
Ответственные лица
Для ввода новой ответственного лица требуется
нажать кнопку «+» и ввести данные. Для добавления имени ответственного и
должности используются диалоги. Перед добавлением нового ответственного лица в
главном меню необходимо выбрать нужный участок (рис 1.7.5).
Рисунок 1.7.5
Рисунок 1.7.6
Информация о компьютере
Для ввода нового компьютера требуется заполнить
все поля и нажать кнопку «Сохранить». Если компьютер арендован, необходимо
перед сохранением нажать флажок «Аренда». При сохранении нового комрьютера,
программа автоматически присваивает компьютеру статус «В работе» (рис 1.7.6).
Изменение информации о компьютере
Рисунок 1.7.7
При открытии данной формы в поля автоатически
заносится информация о компьютере. Пользователь может изменить названия
комлектующих, если произошла их замена или внести в запись дату вывода, если
компьютер выведен из производства. Если дата вывода окажется больше даты ввода,
то программа автоматически изменит статус на «Выведен», иначе произойдет вывод
предупредительного окна об ошибке при выборе даты. Аналогично программа себя
поведет, если сделать обратную операцию. При сохранении изминений, необходимо
нажать кнопку «Сохранить» (рис 1.7.7).
Ввод картриджей
Для добавления картриджей необходимo ввести
названия картриджа, статус и сосотояние является ли администратором, если да,
то ввести пароль. После этого нажать кнопку «Добавить» (рис 1.7.8).
Рисунок 1.7.8
Редактирование картриджа
При открытии данной формы в поля автоматически
заносится информация о картридже. При сохранении изменений, необходимо нажать
кнопку «Сохранить». При не заполнении одного из полей, программа выдаст окно с
ошибкой о некорректном вводе данных (рис 1.7.9).
Рисунок 1.7.9
Изменение принтеров
При открытии данной формы в поля автоматически
заносится информация о принтере. При сохранении изменений, необходимо нажать
кнопку «Сохранить» (рис 1.7.10).
Рисунок 1.7.10
Вывод оборудования на участке
Пользователю дается на выбор вывод всего
оборудования на участке или оборудования введенного в определенный период
времени (рис 1.7.11).
Рисунок 1.7.11
Формирование и экспорт отчётов в EXCEL
Рисунок 1.7.12
В форме на рис. 1.7.11 требуется нажать кнопку
«Вывести». Отчёт по оборудованию можно экспортировать как полностью (рис
1.7.12), так и за определенный период (рис 1.7.13).
Рисунок 1.7.13
2. ОПИСАНИЕ ПРОЦЕССА ОТЛАДКИ
2.1 Подготовка и компиляция
программы
Программа, представленная в виде инструкций
языка программирования, называется исходной программой. Она состоит из
инструкций, понятных человеку, но не понятных процессору компьютера. Чтобы
процессор смог выполнить работу в соответствии с инструкциями исходной
программы, эта программа должна быть переведена на машинный язык - язык команд
процессора. Задачу преобразования исходной программы в машинный код выполняет
специальная программа - компилятор.
Компилятор выполняет последовательно две задачи:
. Проверяет текст исходной программы на
отсутствие синтаксических ошибок.
. Создает (генерирует) исполняемую программу -
машинный код.
Генерация машинного кода компилятором
свидетельствует лишь о том, что в тексте программы нет синтаксических ошибок.
Убедиться, что программа работает правильно можно только в процессе ее
тестирования - пробных запусках программы и анализе полученных результатов [1].
Процесс и результат компиляции отражаются в
диалоговом окне Compiling. В это окно компилятор выводит ошибки (Errors),
предупреждений (warnings) и подсказок (Hints). Сами сообщения об ошибках,
предупреждения и подсказки отображаются в нижней части окна редактора кода.
В большинстве случаев в только что набранной
программе есть синтаксические ошибки. Программист должен их устранить. Процесс
устранения ошибок носит итерационный характер. Обычно сначала устраняются
наиболее очевидные ошибки, например, декларируются необъявленные переменные.
После очередного внесения изменений в текст программы выполняется повторная
компиляция. Следует учитывать тот факт, что компилятор не всегда может точно
локализовать ошибку. Поэтому, анализируя фрагмент программы, который, по мнению
компилятора, содержит ошибку, нужно обращать внимание не только на тот фрагмент
кода, на который компилятор установил курсор, но и на тот, который находится в
предыдущей строке [1].
Если в программе нет синтаксических ошибок,
компилятор создает исполняемый файл программы. Имя исполняемого файла такое же,
как и у файла проекта, а расширение - exe. Delphi помещает исполняемый файл в
тот же каталог, где находится файл проекта.
При обнаружении в программе неточностей, которые
не являются ошибками, компилятор выводит подсказки (Hints) и предупреждения
(warnings). Например, наиболее часто выводимой подсказкой является сообщение об
объявленной, но не используемой переменной.
Итак, компиляция - это перевод исходного текста
к виду, доступному для вычислительной машины, и объединение в одно целое
отдельных частей программы. В результате компиляции будет получена программа,
находящаяся либо в оперативной памяти машины, либо размещённая в exe - файле на
диске [1].
2.2 Тестирование и отладка программы
Успешное завершение процесса компиляции не
означает, что в программе нет ошибок. Убедиться, что программа работает
правильно можно только в процессе проверки ее работоспособности, который
называется тестированием.
Обычно программа редко сразу начинает работать
так, как надо, или работает правильно только на некотором ограниченном наборе
исходных данных. Это свидетельствует о том, что в программе есть
алгоритмические ошибки. Процесс поиска и устранение ошибок называется отладкой
[2].
Интегрированная среда разработки Delphi
предоставляет программисту мощное средство поиска и устранения ошибок в
программе - отладчик. Отладчик позволяет:
выполнять трассировку программы;
наблюдать значения переменных;
устанавливать точки остановки;
отслеживать происходящие события;
выполнять программу в пошаговом режиме.
Именно это средство и использовалось при отладке
данной программы. Этап отладки можно считать законченным, если программа
правильно работает на одном - двух наборах входных данных [1].
2.3 Выполнение и контрольный пример
Во время выполнения программы можно столкнуться
с множеством проблем. Они могут возникнуть как на этапе проектирования, так и
на этапе разработки программного продукта. Основной проблемой является
неправильное использование операторов языка, неверное построение алгоритма.
Ошибки могут быть разными, как это может быть и некорректное использование
свойств компонент, или неправильное задание какого-либо условия, так и многое
другое [2].
В результате тестирования программы были
выявлены следующие ошибки:
ошибка соединения клиентского приложения с
серверным;
ошибка при сохранении новой записи в таблице,
нарушение целостности первичного ключа;
ошибка при редактировании данных;
некорректное отображение данных при выборе
участка или при выборе другой таблицы;
некорректный вывод записей за определенный
промежуток времени при формировании отчета.
В настоящее время все ошибки устранены.
Результат работы программы представлен в приложении 2 (стр. 78).
3. ПРОГРАММНЫЕ И ТЕХНИЧЕСКИЕ
СРЕДСТВА РЕШЕНИЯ ЗАДАЧИ
.1 Описание ASUS K61IC
Программа «Автоматизированный учет компьютерной
техники ООО «СибирьЭнергоАвтоТранс»» представленная в данной выпускной
квалификационной работе была разработана на компьютере следующей конфигурации:
Процессор:
Intel Pentium Dual Core T4300
Оперативная память: DDR2 PC5300 (4096 МГц)
Жесткий диск: 320 Gb
Видеокарта: NvidiaGeForce GT 220MK61IC - это
мультимедийный ноутбук среднего класса. От более доступных моделей его выгодно
отличает дискретный графический адаптер. Модель не рассчитана на частые
перемещения, и скорее подойдет для стационарной домашней эксплуатации. В этом
ноутбуке разработчики сделали особенный акцент на графические возможности. Модель
оснащена быстрым дискретным видеоадаптером NVIDIA GeForce GT 220M с 1 ГБ
памяти. Компьютер работает на базе одного из наиболее распространенных
процессоров - Intel Pentium Dual-Core T4300 с частотой 2,1 ГГц. Стандартный
объем оперативной памяти составляет 4 ГБ, а емкость винчестера - 320 ГБ. Это в
полнее достаточно для ноутбука, на котором может храниться большое количество
мультимедийных файлов [11].
Процессор Intel Pentium Dual Core T4300
предлагает хорошую производительность, надежность и имеет исключительную
ценность для ноутбуков. Мобильные процессоры Intel обеспечивают
производительность, необходимую для запуска самых популярных приложений.
Оперативная память - одна из важнейших деталей
компьютера. Память поможет ускорить обмен данными на компьютере. Оперативная
память незаменима для выполнения различных задач, таких как: работа с объемными
текстами, таблицами, графиками; архивирование, шифрование, работа с базами
данных [10].
3.2 Описание операционной системы
Windows 7 Ultimate x86
7 Ultimate x86 - операционная система семейства
Windows NT, следующая за Windows Vista. В состав Windows 7 вошли как некоторые
разработки, исключённые из Windows Vista, так и новшества в интерфейсе и
встроенных программах. Операционная система обладает поддержкой мультитач
-управления. Дополнительным преимуществом Windows 7 можно считать более тесную
интеграцию с производителями драйверов. Большинство из них определяются
автоматически [7].
Минимальные системные требования:
Центральный процессор: Х86 или Х64 с тактовой
частотой 1ГГц
Объем оперативной памяти: 1Гб
Объем жесткого диска: 16Гб
Информационный носитель: DVD-ROM
Графический процессор: Адаптер с поддержкой
DirectX 9 и 128 Мб памяти
Возможности операционной системы Windows 7:
В Windows 7 ускорены процессы перехода в спящий
режим, возобновления работы и повторного подключения к беспроводной сети.
При первом подключении переносного устройства
флэш-памяти или другого USB-устройства Windows 7 подготавливает его к работе за
считанные секунды. Если данное устройство использовалось ранее, подключение
происходит еще быстрее.
В отличие от предыдущих версий Windows 7
позволяет запускать снижающие производительность службы, работающие в фоновом
режиме, только при необходимости.
Операционная система Windows 7 превращает все
возможности 64-разрядных компьютеров в новый стандарт для настольных систем
[11].
3.3 Описание языка программирования
Embarcadero DELPHI 2010
Бурное развитие вычислительной техники,
потребность в эффективных средствах разработки программного обеспечения привели
к появлению систем программирования, ориентированных на так называемую
"быструю разработку", среди которых можно выделить Borland Delphi. В
системе быстрой разработки (RAD-систем, Rapid Application Development - среда
быстрой разработки приложений) лежит технология визуального проектирования и
событийного программирования, суть которой заключается в том, что среда
разработки берет на себя большую часть рутинной работы, оставляя программисту
работу по конструированию диалоговых окон и функций обработки событий [1].- это
среда быстрой разработки, в которой в качестве языка программирования
используется язык Delphi. Язык Delphi - строго типизированный
объектно-ориентированный язык, в основе которого лежит хорошо знакомый
программистам Object Pascal [2].Delphi 2010 является одной из наиболее
признанных и популярных сред для быстрой разработки приложений. Технология
программирования Delphi 2010 значительно ускоряет создание приложений для
настольных компьютеров, рабочих станций, сенсорных дисплеев, информационных
терминалов и Интернета, при этом не ограничивая разработчика в гибкости,
мощности языковых средств или уровне контроля. Приложения, созданные с помощью
Delphi 2010, отличаются высочайшим быстродействием и компактностью, а также
обладают полнофункциональным пользовательским интерфейсом и способностью
подключаться практически к любой базе данных или другому источнику данных, не
требуя дополнительной доработки.
Учитывая все эти особенности, для написания
данной программы и был выбран объектно-ориентированный язык программировании
Delphi [9].
3.4 Описание СУБД MySQL
является собственностью компании Oracle
Corporation, получившей её вместе с поглощённой Sun Microsystems,
осуществляющей разработку и поддержку приложения. Распространяется под GNU
General Public License или под собственной коммерческой лицензией. Помимо этого
разработчики создают функциональность по заказу лицензионных пользователей,
именно благодаря такому заказу почти в самых ранних версиях появился механизм
репликации [7].- решение для малых и средних приложений. Входит в состав
серверов WAMP, LAMP и в портативные сборки серверов Денвер, XAMPP. Обычно MySQL
используется в качестве сервера, к которому обращаются локальные или удалённые
клиенты, однако в дистрибутив входит библиотека внутреннего сервера,
позволяющая включать MySQL в автономные программы.
Гибкость СУБД MySQL обеспечивается поддержкой
большого количества типов таблиц: пользователи могут выбрать как таблицы типа
MyISAM, поддерживающие полнотекстовый поиск, так и таблицы InnoDB,
поддерживающие транзакции на уровне отдельных записей. Более того, СУБД MySQL
поставляется со специальным типом таблиц EXAMPLE, демонстрирующим принципы
создания новых типов таблиц. Благодаря открытой архитектуре и
GPL-лицензированию, в СУБД MySQL постоянно появляются новые типы таблиц [8].
В качестве интерфейса программирования доступа к
данным была выбрана технология dbExpress. Технология dbExpress представляет
собой совокупность драйверов, компонентов, инкапсулирующих соединения,
транзакции, запросы и наборы данных, а также интерфейсов, обеспечивающих
универсальный доступ к функциям dbExpress. Разработанная компанией Borland,
технология dbExpress является наилучшим решением для приложений, в которых
необходим быстрый и необременительный просмотр данных серверов SQL [13].
3.5 Описание Microsoft Excel 2007
Excel (также иногда называется Microsoft Office
Excel) - программа для работы с электронными таблицами, созданная корпорацией
Microsoft для Microsoft Windows, Windows NT и Mac OS. Она предоставляет
возможности экономико-статистических расчетов, графические, язык
макропрограммирования VBA (Visual Basic для приложений). Microsoft Excel входит
в состав Microsoft Office и на сегодняшний день Excel является одним из
наиболее популярных приложений в мире [6].позволяет открывать таблицы Excel в
ряде других приложений. Это включает в себя открытие документов Excel на
веб-страницах с помощью ActiveX или таких плагинов, как Adobe Flash Player.
Ценной возможностью Excel является возможность
писать код на основе Visual Basic для приложений (VBA). Этот код пишется с
использованием отдельного от таблиц редактора. Управление электронной таблицей
осуществляется посредством объектно-ориентированной модели кода и данных. С
помощью этого кода данные входных таблиц будут мгновенно обрабатываться и
отображаться в таблицах и диаграммах (графиках). Таблица становится интерфейсом
кода, позволяя легко работать изменять его и управлять расчётами [7].
СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ
1. Delphi
2007. Самоучитель/ С.В. Глушаков, А.Л. Клевцов. - изд. 4-е, доп и перераб. -
М.: АСТ:АСТ МОСКВА:ХРАНИТЕЛЬ, 2008. - 448с.
. Нестандартные
приемы программирования на Delphi . Ревич Ю.В. - М.:BHV, 2005. - 560 с.
. Программирование
документов и приложений MS Office в Delphi. Корняков В. - М.:BHV, 2005. - 496с.
ПРИЛОЖЕНИЕ 1
Распечатка текстов программы
Login; - модуль формы «Идентификация
пользователя»
interface, Messages, SysUtils,
Variants, Classes, Graphics, Controls, Forms,, DMGL, Grids, DBGrids, StdCtrls,
ExtCtrls, DBCtrls,, Ribbon, Mask, Buttons, IniFiles;= class(TForm): TLabel;:
TLabel;: TMaskEdit;: TButton;: TGroupBox;: TLabel;: TEdit;: TLabel;:
TMaskEdit;: TMaskEdit;: TLabel;: TBitBtn;: TButton;: TButton;:
TDBLookupComboBox;: TLabel;: TEdit;: TLabel;: TButton;: TButton;Button1Click(Sender:
TObject);FormCreate(Sender: TObject);BitBtn1Click(Sender:
TObject);Button3Click(Sender: TObject);Button2Click(Sender:
TObject);Button4Click(Sender: TObject);Button5Click(Sender: TObject);
{ Private declarations }
{ Public declarations };: TForm1;:
String;: TIniFile;MM;
{$R
*.dfm}TForm1.BitBtn1Click(Sender: TObject);:
integer;maskedit2.Text=maskedit3.Text
then.Users.Close;.Users.Open;datamodule2.Users.Locate('Login_users',
edit2.Text, [])=false then:=0;.Users.Refresh;.Users.First;datamodule2.Users.eof=false
doi=datamodule2.Users.FieldByName('id_user').AsInteger
then:=i+1;.Users.Next;;;.Users.append;.Users.FieldValues['id_user']:=i;.Users.FieldValues['Login_users']:=edit2.Text;.Users.FieldValues['Password_users']:=maskedit2.Text;.Users.Post;.Users.ApplyUpdates(-1);application.MessageBox(pchar('Такой
логин
уже
есть'),'Ошибка',mb_OK);application.MessageBox(pchar('Пароли
не
совпадают'),'Ошибка',mb_OK);;TForm1.Button1Click(Sender:
TObject);.ClientHeight:=302;;TForm1.Button2Click(Sender: TObject);(datamodule2.Users.fieldvalues['Password_users']=maskedit1.Text)
then.Cartg.Active:=true;.Print.Active:=true;.Show;.statusbar1.Panels[0].Text:='Пользователь
'+datamodule2.Users.FieldByName('Login_users').AsString;.Visible:=false;.DBLookupComboBox1.KeyValue:=0;application.MessageBox(pchar('Неправильно
введен
логин
или
пароль'),
'Ошибка
идентификации',
mb_OK);;TForm1.Button3Click(Sender:
TObject);.Close;;TForm1.Button4Click(Sender: TObject);
{datamodule2.SocketConnection1.Host:=edit1.text;.SocketConnection1.ServerName:='ServerPro.ServDM';.SocketConnection1.Connected:=true;datamodule2.SocketConnection1.Connected=true
then:=TIniFile.Create(ExtractFilePath(ParamStr(0))+'\connect.ini');.WriteString('SoketConection1','SoketConection1Host',datamodule2.SocketConnection1.Host);.Free;;.Users.Active:=true;.Uchastok.Active:=true;.Ot_male.Active:=true;.Comp_info.Active:=true;.Cartg.Active:=true;.Print.Active:=true;.comp_history.Active:=true;.cartg_history.Active:=true;.print_history.Active:=true;
};TForm1.Button5Click(Sender:
TObject);.ClientWidth:=442;;TForm1.FormCreate(Sender:
TObject);.ClientHeight:=139;;.DMGL; - модуль
данных,
Classes, DB, DBClient, ShellAnimations, MConnect, SConnect, Menus,, Dialogs,
Messages, Windows, StdCtrls, Forms, dateutils, AdoConEd, IniFiles;=
class(TDataModule)_DS: TDataSource;_DS: TDataSource;_male_DS:
TDataSource;_info_DS: TDataSource;_history_DS: TDataSource;_DS:
TDataSource;_history_DS: TDataSource;_DS: TDataSource;_history_DS:
TDataSource;: TMainMenu;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;:
TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;:
TMenuItem;: TClientDataSet;: TClientDataSet;_male: TClientDataSet;_info:
TClientDataSet;_history: TClientDataSet;: TClientDataSet;_history: TClientDataSet;:
TClientDataSet;_history: TClientDataSet;: TSocketConnection;N7Click(Sender:
TObject);N2Click(Sender: TObject);N3Click(Sender: TObject);N9Click(Sender:
TObject);N6Click(Sender: TObject);N4Click(Sender: TObject);N5Click(Sender:
TObject);N10Click(Sender: TObject);DataModuleCreate(Sender:
TObject);SocketConnection1BeforeConnect(Sender: TObject);
{ Private declarations }
{ Public declarations };:
TDataModule2;ListUser, ListOtMale, compinfo, AdCartg, Uchastok, VivObor, MM,
Login;
{$R *.dfm}TDataModule2.DataModuleCreate(Sender:
TObject);connect:
string;.Connected:=true;.users.Active:=true;.uchastok.Active:=true;.ot_male.Active:=true;.comp_info.Active:=true;.cartg.Active:=true;.print.Active:=true;.comp_history.Active:=true;.cartg_history.Active:=true;.print_history.Active:=true;;TDataModule2.N10Click(Sender:
TObject);.show;;TDataModule2.N2Click(Sender: TObject);: string;:
integer;:=inputbox('Название
участка',
'', '');uchastok<>''
then:=0;.Uchastok.Refresh;.Uchastok.First;datamodule2.Uchastok.eof=false
doi=datamodule2.Uchastok.FieldByName('id_uch').AsInteger
then:=i+1;.Uchastok.Next;;;.Uchastok.append;.Uchastok.FieldValues['id_uch']:=i;.Uchastok.FieldValues['id_user']:=datamodule2.Users.FieldValues['id_user'];.Uchastok.FieldValues['Name_uch']:=uchastok;.Uchastok.Post;.Uchastok.ApplyUpdates(-1);;;TDataModule2.N3Click(Sender:
TObject);name,dolg: string;.show;;TDataModule2.N4Click(Sender:
TObject);.comp_info.Show;;TDataModule2.N5Click(Sender:
TObject);.Show;;TDataModule2.N6Click(Sender: TObject);: string;, i1, temp: integer;,
month, day, hour, minute, second, msec: word;
begin:=inputbox('Введите название принтера', ''
,'');
if name<>''
then:=0;.Print.Filtered:=false;.Print.Refresh;.Print.First;datamodule2.Print.eof=false
doi=datamodule2.Print.FieldByName('id_print').AsInteger
then:=i+1;.Print.Next;;;.Print.append;.Print.FieldValues['id_print']:=i;.Print.FieldValues['uch_print']:=datamodule2.Uchastok.FieldValues['id_uch'];.Print.FieldValues['name_print']:=name;.Print.FieldValues['vrab_print']:='В
работе';.Print.Post;.Print.ApplyUpdates(-1);;:=0;.Print_history.Filtered:=false;.Print_history.Refresh;.Print_history.First;datamodule2.Print_history.eof=false
doi=datamodule2.Print_history.FieldByName('id_print_history').AsInteger
then:=i+1;.Print_history.Next;;;.Print_history.Append;.Print_history.FieldValues['id_print_history']:=i;.Print_history.FieldValues['id_print']:=datamodule2.Print.FieldValues['id_print'];(date(),
year, month,
day);(time(),hour,minute,second,msec);.Print_history.FieldValues['data_zap']:=encodedatetime(year,
month, day, hour,minute,second,msec);.Print_history.FieldValues['opis']:='Добавлен
принтер
'+name;.memo1.lines.add(datetostr(datamodule2.Print_history.FieldValues['data_zap'])+'
'+timetostr(datamodule2.Print_history.FieldValues['data_zap'])+' '+datamodule2.Print_history.Fieldbyname('opis').AsString);.Print_history.Post;.print_history.ApplyUpdates(-1);;TDataModule2.N7Click(Sender:
TObject);.Listusers.Show;;TDataModule2.N9Click(Sender:
TObject);.Show;;TDataModule2.SocketConnection1BeforeConnect(Sender:
TObject);connect: string;
{con:=TIniFile.Create(ExtractFilePath(ParamStr(0))+'\connect.ini');:=con.ReadString('SocketConnection1','SocketConection1ComputerName',SocketConnection1.Host);.SocketConnection1.Host:=connect;.SocketConnection1.ServerName:='ServerPro.ServDM';.SocketConnection1.Connected:=true;.Free;
}
end;.MM; - модуль формы «Главное меню»
interface, Messages, SysUtils,
Variants, Classes, Graphics, Controls, Forms,, DMGL, ComCtrls, Grids, DBGrids,
StdCtrls, Mask, DBCtrls, TabNotBk,;= class(TForm): TDBLookupComboBox;: TLabel;:
TStatusBar;: TButton;: TButton;: TRadioGroup;: TDBEdit;: TLabel;: TLabel;:
TDBEdit;: TDBEdit;: TDBEdit;: TLabel;: TLabel;: TButton;: TButton;: TDBGrid;:
TDBEdit;: TLabel;: TMemo;: TDBGrid;: TDBGrid;: TDBGrid;Button1Click(Sender:
TObject);Button2Click(Sender: TObject);Button3Click(Sender:
TObject);FormClose(Sender: TObject; var Action:
TCloseAction);FormCreate(Sender: TObject);RadioGroup1Click(Sender:
TObject);DBLookupComboBox1Click(Sender: TObject);Button4Click(Sender: TObject);TrayIcon1DblClick(Sender:
TObject);
{ Private declarations }
{ Public declarations };: TMain;:
integer;AdCartg, Ecomp, Ecartg, Eprint;
{$R *.dfm}TMain.Button1Click(Sender:
TObject);
beginmessagedlg('При удалении участка произойдет
удаление остальных данных. Выполнить удаление?',mtWarning,
[mbYES,mbNO], 0)=idYES
then.Uchastok.Delete;.Uchastok.ApplyUpdates(-1);.Comp_info.Close;.Comp_info.Open;.Cartg.Close;.Cartg.Open;.Print.Close;.Print.Open;;TMain.Button2Click(Sender:
TObject);.DataModule2.N2Click(self);;TMain.Button3Click(Sender:
TObject);(radiogroup1.ItemIndex=0) then.show;;radiogroup1.ItemIndex=1
then.show;radiogroup1.ItemIndex=2 then.show;;TMain.Button4Click(Sender:
TObject);radiogroup1.ItemIndex=0
then.Comp_info.Delete;.Comp_info.ApplyUpdates(-1);.Comp_history.Close;.Comp_history.Open;;radiogroup1.ItemIndex=1
then.Cartg.Delete;.Cartg.ApplyUpdates(-1);.cartg_history.Close;.cartg_history.Open;;radiogroup1.ItemIndex=2
then.Print.Delete;.Print.ApplyUpdates(-1);.Print_history.Close;.Print_history.Open;;radiogroup1.ItemIndex=3
then.Ot_male.Delete;.Ot_male.ApplyUpdates(-1);;TMain.DBLookupComboBox1Click(Sender:
TObject);radiogroup1.ItemIndex=0
then.Comp_info.Filtered:=false;.Comp_info.Filter:='id_uchastok='+inttostr(datamodule2.Uchastok.FieldByName('id_uch').AsInteger);.Comp_info.Filtered:=true;;radiogroup1.ItemIndex=1
then.Cartg.Filtered:=false;.Cartg.Filter:='uch_cartg='+inttostr(datamodule2.Uchastok.FieldByName('id_uch').AsInteger);.Cartg.Filtered:=true;;radiogroup1.ItemIndex=2
then.Print.Filtered:=false;.Print.Filter:='uch_print='+inttostr(datamodule2.Uchastok.FieldByName('id_uch').AsInteger);.Print.Filtered:=true;;radiogroup1.ItemIndex=3
then.Ot_male.Filtered:=false;.Ot_male.Filter:='id_Uchastok='+inttostr(datamodule2.Uchastok.FieldByName('id_uch').AsInteger);.Ot_male.Filtered:=true;;;TMain.FormClose(Sender:
TObject; var Action: TCloseAction);.Terminate;;TMain.FormCreate(Sender:
TObject);.Visible:=true;.Visible:=false;.Visible:=false;.Visible:=false;.ClientHeight:=520;;TMain.RadioGroup1Click(Sender:
TObject);radiogroup1.ItemIndex of
:begin.Visible:=true;.Visible:=false;.Visible:=false;.Visible:=false;.Visible:=true;.Visible:=true;.Visible:=true;.Visible:=true;.Visible:=true;.Visible:=true;.Visible:=true;.Visible:=true;.Visible:=true;.Visible:=true;.Caption:='Удалить
компьютер';dblookupcombobox1.Text<>''
then.Comp_info.Filtered:=false;.Comp_info.Filter:='id_uchastok='+inttostr(datamodule2.Uchastok.FieldByName('id_uch').AsInteger);.Comp_info.Filtered:=true;;;
:begin
DBGrid1.Visible:=false;.Visible:=true;.Visible:=false;.Visible:=false;.Visible:=false;.Visible:=false;.Visible:=false;.Visible:=false;.Visible:=false;.Visible:=false;.Visible:=false;.Visible:=false;.Visible:=false;.Visible:=false;.Caption:='Удалить
картридж';dblookupcombobox1.Text<>''
then.Cartg.Filtered:=false;.Cartg.Filter:='uch_cartg='+inttostr(datamodule2.Uchastok.FieldByName('id_uch').AsInteger);.Cartg.Filtered:=true;;;
:begin
DBGrid1.Visible:=false;.Visible:=false;.Visible:=true;.Visible:=false;.Visible:=false;.Visible:=false;.Visible:=false;.Visible:=false;.Visible:=false;.Visible:=false;.Visible:=false;.Visible:=false;.Visible:=false;.Visible:=false;.Caption:='Удалить
принтер';dblookupcombobox1.Text<>''
then.Print.Filtered:=false;.Print.Filter:='uch_print='+inttostr(datamodule2.Uchastok.FieldByName('id_uch').AsInteger);.Print.Filtered:=true;;;
:begin
DBGrid1.Visible:=false;.Visible:=false;.Visible:=false;.Visible:=true;.Visible:=false;.Visible:=false;.Visible:=false;.Visible:=false;.Visible:=false;.Visible:=false;.Visible:=false;.Visible:=false;.Visible:=false;.Visible:=false;.Caption:='Удалить
ответственного';dblookupcombobox1.Text<>''
then.Ot_male.Filtered:=false;.Ot_male.Filter:='id_Uchastok='+inttostr(datamodule2.Uchastok.FieldByName('id_uch').AsInteger);.Ot_male.Filtered:=true;;;;;TMain.TrayIcon1DblClick(Sender:
TObject);.Show;;.
unit compinfo; - модуль формы «Информация о
компьютере»
interface, Messages, SysUtils,
Variants, Classes, Graphics, Controls, Forms,, DMGL, DBCtrls, ComCtrls,
StdCtrls, MM, dateutils;_info = class(TForm): TDateTimePicker;: TLabel;:
TEdit;: TLabel;: TCheckBox;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;:
TLabel;: TButton;: TEdit;: TEdit;: TEdit;: TEdit;: TEdit;:
TEdit;Button1Click(Sender: TObject);Edit1KeyPress(Sender: TObject; var Key:
Char);
{ Private declarations }
{ Public declarations };_info:
Tcomp_info;
{$R
*.dfm}Tcomp_info.Button1Click(Sender: TObject);: integer;, month, day, hour,
minute, second, msec: word;(edit1.text<>'') and (edit2.text<>'')
and (edit3.text<>'') and (edit4.text<>'')(edit5.text<>'') and
(edit6.text<>'')
then:=0;.Comp_info.Filtered:=false;.Comp_info.Refresh;.Comp_info.First;datamodule2.Comp_info.Locate('Inv_nom',
edit1.Text, [])=false thendatamodule2.Comp_info.eof=false
do(i=datamodule2.Comp_info.FieldByName('id_comp').AsInteger) then:=i+1;.Comp_info.Next;;;.Comp_info.append;.Comp_info.FieldValues['id_comp']:=i;.Comp_info.FieldValues['id_uchastok']:=datamodule2.Uchastok.FieldValues['id_uch'];.Comp_info.FieldValues['Mother_card']:=edit2.Text;.Comp_info.FieldValues['Processor']:=edit3.Text;.Comp_info.FieldValues['Op_memory']:=edit4.Text;.Comp_info.FieldValues['Video']:=edit5.Text;.Comp_info.FieldValues['HDD']:=edit6.Text;edit7.Text<>''
then.Comp_info.FieldValues['Drive_disk']:=edit7.Textdatamodule2.Comp_info.FieldValues['Drive_disk']:='Не
имеется';checkbox1.Checked=true
then.Comp_info.FieldValues['Arenda']:='Арендован'datamodule2.Comp_info.FieldValues['Arenda']:='Собственность';.Comp_info.FieldValues['Inv_nom']:=edit1.Text;.Comp_info.FieldValues['Date_in']:=datetimepicker1.Date;.Comp_info.FieldValues['Status']:='В
работе';.Comp_info.Post;.Comp_info.ApplyUpdates(-1);:=0;.Comp_history.Refresh;.Comp_history.First;datamodule2.Comp_history.eof=false
doi=datamodule2.Comp_history.FieldByName('id_comp_history').AsInteger
then:=i+1;.Comp_history.Next;;;.Comp_history.Append;.Comp_history.FieldValues['id_comp_history']:=i;.Comp_history.FieldValues['id_stat']:=datamodule2.Comp_info.FieldValues['id_comp'];(date(),
year, month,
day);(time(),hour,minute,second,msec);.Comp_history.FieldValues['date_zap']:=encodedatetime(year,
month, day, hour,minute,second,msec);.Comp_history.FieldValues['coment']:='Добавлен
компьютер
номер
'+datamodule2.Comp_info.FieldValues['inv_nom'];.memo1.lines.add(datetostr(datamodule2.Comp_history.FieldValues['date_zap'])+'
'+timetostr(datamodule2.Comp_history.FieldValues['date_zap'])+'
'+datamodule2.Comp_history.Fieldbyname('coment').AsString);.Comp_history.Post;.Comp_info.ApplyUpdates(-1);application.MessageBox(pchar('Инвентарный
номер
совпадает
с'+#13+'номером
одного
из
комьютеров'),
'Ошибка
ввода',
mb_OK);application.MessageBox(pchar('Данные
ведены
некоректно'),
'Ошибка',
mb_OK);;Tcomp_info.Edit1KeyPress(Sender: TObject; var Key: Char);key of
'0'..'9':;
#8:;key:=#0;;;.
unit Ecomp; - модуль формы «Изминение информации
о компьютере»
interface, Messages, SysUtils,
Variants, Classes, Graphics, Controls, Forms,, StdCtrls, ComCtrls, Mask,
DBCtrls, DMGL, MM, dateutils;= class(TForm): TLabel;: TLabel;: TLabel;:
TLabel;: TLabel;: TLabel;: TLabel;: TCheckBox;: TButton;: TDBEdit;: TDBEdit;:
TDBEdit;: TDBEdit;: TDBEdit;: TDBEdit;: TDBEdit;: TRadioButton;: TRadioButton;:
TDateTimePicker;: TGroupBox;: TLabel;: TLabel;: TLabel;: TDBEdit;: TDBEdit;:
TDBEdit;Button1Click(Sender: TObject);
{ Private declarations }
{ Public declarations };: TEditComp;
{$R *.dfm}TEditComp.Button1Click(Sender:
TObject);: integer;, month, day, hour, minute, second, msec:
word;.Comp_info.Edit;(radiobutton1.Checked=true)
then(datetimepicker1.Date>datamodule2.Comp_info.FieldValues['Date_out']) and
(datamodule2.Comp_info.FieldValues['Date_in']<=datamodule2.Comp_info.FieldValues['Date_out'])
then.Comp_info.FieldValues['Date_in']:=datetimepicker1.Date;.Comp_info.FieldValues['Status']:='В
работе';application.MessageBox(pchar('Ошибка
при
выборе
даты'),
'Ошибка',
mb_OK);;(radiobutton2.Checked=true)
then(datetimepicker1.Date>datamodule2.Comp_info.FieldValues['Date_in']) and
(datamodule2.Comp_info.FieldValues['Date_out']<=datamodule2.Comp_info.FieldValues['Date_in'])
then.Comp_info.FieldValues['Date_out']:=datetimepicker1.Date;.Comp_info.FieldValues['Status']:='Выведен';application.MessageBox(pchar('Ошибка
при
выборе
даты'),
'Ошибка',
mb_OK);;:=0;.Comp_history.Refresh;.Comp_history.First;datamodule2.Comp_history.eof=false
doi=datamodule2.Comp_history.FieldByName('id_comp_history').AsInteger
then:=i+1;.Comp_history.Next;;;.Comp_info.Post;.Comp_info.ApplyUpdates(-1);.Comp_history.Append;.Comp_history.FieldValues['id_comp_history']:=i;.Comp_history.FieldValues['id_stat']:=datamodule2.Comp_info.FieldValues['id_comp'];(date(),
year, month,
day);(time(),hour,minute,second,msec);.Comp_history.FieldValues['date_zap']:=encodedatetime(year,
month, day, hour,minute,second,msec);.Comp_history.FieldValues['coment']:='Изменен
компьютер
номер
'+datamodule2.Comp_info.fieldbyname('inv_nom').AsString;.memo1.lines.add(datetostr(datamodule2.Comp_history.FieldValues['date_zap'])+'
'+timetostr(datamodule2.Comp_history.FieldValues['date_zap'])+'
'+datamodule2.Comp_history.Fieldbyname('coment').AsString);.Comp_history.Post;.Comp_history.ApplyUpdates(-1);;.AdCartg;
- модуль
формы
«Ввод
картриджа»,
Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls,
DMGL, DBCtrls, dateutils;= class(TForm): TEdit;: TLabel;: TLabel;: TComboBox;:
TLabel;: TComboBox;: TButton;Button1Click(Sender: TObject);
{ Private declarations }
{ Public declarations };:
TAddCartg;MM;
{$R
*.dfm}TAddCartg.Button1Click(Sender: TObject);: integer;, month, day, hour,
minute, second, msec: word;(edit1.text<>'') and
(combobox1.text<>'') and (combobox2.text<>'') then:=0;.Cartg.Filtered:=false;.Cartg.Refresh;.Cartg.First;datamodule2.Cartg.eof=false
doi=datamodule2.Cartg.FieldByName('id_cartg').AsInteger
then:=i+1;.Cartg.Next;;;.Cartg.append;.Cartg.FieldValues['id_cartg']:=i;.Cartg.FieldValues['uch_cartg']:=datamodule2.Uchastok.FieldValues['id_uch'];.Cartg.FieldValues['vrab_cartg']:=combobox1.Text;.Cartg.FieldValues['name_cartg']:=edit1.Text;.Cartg.FieldValues['sost_cartg']:=combobox2.Text;.Cartg.Post;.Cartg.ApplyUpdates(-1);:=0;.Cartg_history.Refresh;.Cartg_history.First;datamodule2.Cartg_history.eof=false
doi=datamodule2.Cartg_history.FieldByName('id_cartg_history').AsInteger
then:=i+1;.Cartg_history.Next;;;.Cartg_history.Append;.Cartg_history.FieldValues['id_cartg_history']:=i;.Cartg_history.FieldValues['id_cartg']:=datamodule2.Cartg.FieldValues['id_cartg'];(date(),
year, month,
day);(time(),hour,minute,second,msec);.Cartg_history.FieldValues['date_zap']:=encodedatetime(year,
month, day, hour,minute,second,msec);.Cartg_history.FieldValues['opis']:='Добавлен
картридж
'+datamodule2.Cartg.fieldvalues['name_cartg'];.memo1.lines.add(datetostr(datamodule2.Cartg_history.FieldValues['date_zap'])+'
'+timetostr(datamodule2.Cartg_history.FieldValues['date_zap'])+'
'+datamodule2.Cartg_history.Fieldbyname('opis').AsString);.Cartg_history.Post;.Cartg_history.ApplyUpdates(-1);application.MessageBox(pchar('Данные
ведены
некоректно'),
'Ошибка',
mb_OK);
end;.Ecartg; - модуль формы «Редактирование
картриджа»
interface, Messages, SysUtils,
Variants, Classes, Graphics, Controls, Forms,, StdCtrls, DMGL, Mask, DBCtrls,
dateutils;= class(TForm): TComboBox;: TLabel;: TLabel;: TComboBox;: TDBEdit;:
TLabel;: TButton;FormShow(Sender: TObject);Button1Click(Sender: TObject);
{ Private declarations }
{ Public declarations };:
TEditCartg;MM;
{$R *.dfm}TEditCartg.Button1Click(Sender:
TObject);: integer;, month, day, hour, minute, second, msec:
word;.Cartg.Edit;.Cartg.FieldValues['vrab_cartg']:=Combobox1.Text;.Cartg.FieldValues['name_cartg']:=DBedit1.Text;.Cartg.FieldValues['sost_cartg']:=Combobox2.Text;:=0;.Cartg_history.Refresh;.Cartg_history.First;datamodule2.Cartg_history.eof=false
doi=datamodule2.Cartg_history.FieldByName('id_cartg_history').AsInteger
then:=i+1;.Cartg_history.Next;;;.Cartg.Post;.Cartg.ApplyUpdates(-1);.Cartg_history.Append;.Cartg_history.FieldValues['id_Cartg_history']:=i;.Cartg_history.FieldValues['id_cartg']:=datamodule2.Cartg_history.FieldValues['id_cartg'];(date(),
year, month,
day);(time(),hour,minute,second,msec);.Cartg_history.FieldValues['date_zap']:=encodedatetime(year,
month, day, hour,minute,second,msec);.Cartg_history.FieldValues['opis']:='Изменен
компьютер
номер
'+datamodule2.Cartg.fieldbyname('name_cartg').AsString;.memo1.lines.add(datetostr(datamodule2.Cartg_history.FieldValues['date_zap'])+'
'+timetostr(datamodule2.Cartg_history.FieldValues['date_zap'])+'
'+datamodule2.Cartg_history.Fieldbyname('opis').AsString);.Cartg_history.Post;.Cartg_history.ApplyUpdates(-1);;TEditCartg.FormShow(Sender:
TObject);.Text:=datamodule2.Cartg.FieldByName('vrab_cartg').AsString;.Text:=datamodule2.Cartg.FieldByName('sost_cartg').AsString;
end;.Eprint; - модуль формы «Изминение
принтеров»
interface, Messages, SysUtils,
Variants, Classes, Graphics, Controls, Forms,, DMGL, StdCtrls, Mask, DBCtrls,
DateUtils;= class(TForm)
Статус: TLabel;
Название:
TLabel;: TButton;: TEdit;: TComboBox;Button1Click(Sender:
TObject);FormShow(Sender: TObject);
{ Private declarations }
{ Public declarations };: TForm2;MM;
{$R
*.dfm}TForm2.Button1Click(Sender: TObject);i, temp: integer;, month, day, hour,
minute, second, msec: word;.Print.Filtered:=false;.Print.Edit;.Print.FieldValues['name_print']:=edit2.Text;.Print.FieldValues['vrab_print']:=combobox1.Text;.Print.Post;.Print.ApplyUpdates(-1);:=0;.Print_history.Refresh;.Print_history.First;datamodule2.Print_history.eof=false
doi=datamodule2.Print_history.FieldByName('id_print_history').AsInteger
then:=i+1;.Print_history.Next;;;.Print_history.Append;.Print_history.FieldValues['id_print_history']:=i;.Print_history.FieldValues['id_print']:=datamodule2.Print.FieldValues['id_print'];(date(),
year, month,
day);(time(),hour,minute,second,msec);.Print_history.FieldValues['data_zap']:=encodedatetime(year,
month, day, hour,minute,second,msec);.Print_history.FieldValues['opis']:='Изменён
принтер
'+inttostr(datamodule2.Print.FieldValues['id_print']);.memo1.lines.add(datetostr(datamodule2.Print_history.FieldValues['data_zap'])+'
'+timetostr(datamodule2.Print_history.FieldValues['data_zap'])+'
'+datamodule2.Print_history.Fieldbyname('opis').AsString);.Print_history.Post;.Print_history.ApplyUpdates(-1);;TForm2.FormShow(Sender:
TObject);.Text:=datamodule2.Print.FieldByName('name_print').AsString;.Text:=datamodule2.Print.FieldByName('vrab_print').AsString;;.Uchastok;
- модуль
формы
«Участки»,
Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, DMGL, Grids,
DBGrids, StdCtrls;= class(TForm): TDBGrid;: TLabel;: TEdit;:
TButton;Button1Click(Sender: TObject);
{ Private declarations }
{ Public declarations };: Tfuchast;
{$R
*.dfm}Tfuchast.Button1Click(Sender: TObject);i: integer;edit1.Text<>''
then:=0;.Uchastok.Refresh;.Uchastok.First;datamodule2.Uchastok.eof=false
doi=datamodule2.Uchastok.FieldByName('id_uch').AsInteger
then:=i+1;.Uchastok.Next;;;.Uchastok.append;.Uchastok.FieldValues['id_uch']:=i;.Uchastok.FieldValues['id_user']:=datamodule2.Users.FieldValues['id_user'];.Uchastok.FieldValues['Name_uch']:=edit1.Text;.Uchastok.Post;.Uchastok.ApplyUpdates(-1);;;.ListUser;
- модуль
формы
«Пользователи»,
Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, DBCtrls,
DMGL, StdCtrls;= class(TForm): TDBLookupListBox;: TButton;:
TButton;Button1Click(Sender: TObject);Button2Click(Sender: TObject);
{ Private declarations }
{ Public declarations };:
TListusers;
{$R
*.dfm}TListusers.Button1Click(Sender: TObject);,password1,password2: string;:
integer;:=inputbox('Имя пользователя',
'', '');:=inputbox('Пароль',
'', '');
password2:=inputbox('Повторите пароль', '', '');
if
(password1=password2)or((password1<>'')and(password2<>''))
then:=0;.Users.Refresh;.Users.First;datamodule2.Users.eof=false doi=datamodule2.Users.FieldByName('id_user').AsInteger
then:=i+1;.Users.Next;;;.Users.append;.Users.FieldValues['id_user']:=i;.Users.FieldValues['Login_users']:=password1;.Users.FieldValues['Password_users']:=password2;.Users.Post;.Users.ApplyUpdates(-1);application.MessageBox(pchar('Пароль
веден
некоректно'),
'Ошибка',
mb_OK);;TListusers.Button2Click(Sender: TObject);
beginmessagedlg('При удалении пользователя
произойдет удаление участков. Выполнить удаление?',mtWarning,
[mbYES,mbNO], 0)=idYES
then.Users.Delete;.Users.ApplyUpdates(-1);;.
unit ListOtMale; - модуль формы «Ответственные
лица»
interface, Messages, SysUtils,
Variants, Classes, Graphics, Controls, Forms,, DMGL, DBCtrls, StdCtrls, Grids,
DBGrids;= class(TForm): TButton;: TButton;: TDBLookupComboBox;: TLabel;:
TDBGrid;Button1Click(Sender: TObject);Button2Click(Sender: TObject);
{ Private declarations }
{ Public declarations };: TOtMale;
{$R
*.dfm}TOtMale.Button1Click(Sender: TObject);,dolg: string;:
integer;dblookupcombobox1.KeyValue<>0 then
name:=inputbox('Имя ответственного', '',
'');:=inputbox('Должность', '', '');
if (name<>'') or
(dolg<>'')
then:=0;.Ot_male.Refresh;.Ot_male.First;datamodule2.Ot_male.eof=false
doi=datamodule2.Ot_male.FieldByName('id_Ot_male').AsInteger
then:=i+1;.Ot_male.Next;;;.Ot_male.append;.Ot_male.FieldValues['id_ot_male']:=i;.Ot_male.FieldValues['id_uchastok']:=datamodule2.Uchastok.FieldValues['id_uch'];.Ot_male.FieldValues['name_otmale']:=name;.Ot_male.FieldValues['dolg_otmale']:=dolg;.Ot_male.Post;.Ot_male.ApplyUpdates(-1);application.MessageBox(pchar('Данные
ведены
некоректно'),
'Ошибка',
mb_OK);('Выберите участок!');;TOtMale.Button2Click(Sender:
TObject);messagedlg('Выполнить
удаление?',mtWarning,
[mbYES,mbNO], 0)=idYES
then.Ot_male.Delete;
end;.VivObor; - модуль формы «Вывод оборудования
на участке»
interface, Messages, SysUtils,
Variants, Classes, Graphics, Controls, Forms,, StdCtrls, ComCtrls, ExcelXP,
ComObj;= class(TForm): TRadioButton;: TRadioButton;: TDateTimePicker;:
TDateTimePicker;: TButton;Button1Click(Sender: TObject);RadioButton2Click(Sender:
TObject);
{ Private declarations }
{ Public declarations };:
TVivOb;DMGL;
{$R
*.dfm}TVivOb.Button1Click(Sender:
TObject);,Sheet,Colum:Variant;,index,d,d1,m,m1,y,y1:Integer;, month, day:
word;:=CreateOleObject('Excel.Application');.Visible:=true;.Workbooks.Add(-4167);.Workbooks[1].WorkSheets[1].Name:='Отчет';:=XLApp.Workbooks[1].WorkSheets['Отчет'].Columns;.Columns[1].ColumnWidth:=20;.Columns[2].ColumnWidth:=40;.Columns[3].ColumnWidth:=40;.Columns[4].ColumnWidth:=20;.Columns[5].ColumnWidth:=20;.Columns[6].ColumnWidth:=20;.Columns[7].ColumnWidth:=20;.Columns[8].ColumnWidth:=20;.Columns[9].ColumnWidth:=20;.Columns[10].ColumnWidth:=20;.Columns[11].ColumnWidth:=20;.Columns[12].ColumnWidth:=20;:=XLApp.Workbooks[1].WorkSheets['Отчет'];
Sheet.Cells[1,1]:='ООО
"СибирьЭнергоАвтоТранс"';.Cells[2,1]:='Название
участка';.Cells[2,2]:=datamodule2.Uchastok.Fieldbyname('name_uch').asstring;.Cells[3,1]:='Компьютеры';.Cells[4,1]:='№';.Cells[4,2]:='Материнская
плата';.Cells[4,3]:='Процессор';.Cells[4,4]:='ОЗУ';.Cells[4,5]:='Видеосистема';.Cells[4,6]:='Жесткй
диск';.Cells[4,7]:='ВЗУ';.Cells[4,8]:='Статус';.Cells[4,9]:='Аренда';.Cells[4,10]:='Инвентарный
номер';.Cells[4,11]:='Дата ввода';
Sheet.Cells[4,12]:='Дата вывода';:=5;
Numer:=1;(datetimepicker1.date, year, month, day);:=day; m:=month;
y:=year;(datetimepicker2.date, year, month, day);:=day; m1:=month; y1:=year;
{datamodule2.Comp_info.Filtered:=false;.Comp_info.Filter:='id_uchastok='+inttostr(datamodule2.Uchastok.FieldByName('id_uch').AsInteger);.Comp_info.Filtered:=true;
}.Comp_info.First;DataModule2.Comp_info.Eof=false do(radiobutton1.Checked=true)
or
(datamodule2.Comp_info.FieldValues['Date_in']>=strtodatetime(inttostr(d)+'.'+inttostr(m)+'.'+inttostr(y)))
and (datamodule2.Comp_info.FieldValues['Date_in']<=strtodatetime(inttostr(d1)+'.'+inttostr(m1)+'.'+inttostr(y1)))
then.Cells[index,1]:=Numer;.Cells[index,2]:=DataModule2.Comp_info.FieldByName('Mother_card').AsString;.Cells[index,3]:=DataModule2.Comp_info.FieldByName('Processor').AsString;.Cells[index,4]:=DataModule2.Comp_info.FieldByName('Op_memory').AsString;.Cells[index,5]:=DataModule2.Comp_info.FieldByName('Video').AsString;.Cells[index,6]:=DataModule2.Comp_info.FieldByName('HDD').AsString;.Cells[index,7]:=DataModule2.Comp_info.FieldByName('Drive_disk').AsString;.Cells[index,8]:=DataModule2.Comp_info.FieldByName('Status').AsString;.Cells[index,9]:=DataModule2.Comp_info.FieldByName('Arenda').AsString;.Cells[index,10]:=DataModule2.Comp_info.FieldByName('Inv_nom').AsString;.Cells[index,11]:=DataModule2.Comp_info.FieldByName('Date_in').AsDateTime;.Cells[index,12]:=DataModule2.Comp_info.FieldByName('Date_out').AsDateTime;(index);
Inc(Numer);;.Comp_info.Next;;(index); Numer:=1;.Cells[index,1]:='Картриджи';(index);.Cells[index,1]:='№';.Cells[index,2]:='Статус';.Cells[index,3]:='Наименование картриджа';
Sheet.Cells[index,4]:='Состояние
картриджа';
inc(index);
Numer:=1;.Cartg.Filtered:=false;.Cartg.Filter:='uch_cartg='+inttostr(datamodule2.Uchastok.FieldByName('id_uch').AsInteger);.Cartg.Filtered:=true;.Cartg.First;DataModule2.Cartg.Eof=false
do.Cells[index,1]:=Numer;.Cells[index,2]:=DataModule2.Cartg.FieldByName('Vrab_cartg').AsString;.Cells[index,3]:=DataModule2.Cartg.FieldByName('name_cartg').AsString;.Cells[index,4]:=DataModule2.Cartg.FieldByName('sost_cartg').AsString;(index);
Inc(Numer);.Cartg.Next;(index); Numer:=1;.Cells[index,1]:='Принтеры';(index);.Cells[index,1]:='№';
Sheet.Cells[index,2]:='Название
принтера';
Sheet.Cells[index,3]:='Статус';(index);
Numer:=1;.Print.Filtered:=false;.Print.Filter:='uch_print='+inttostr(datamodule2.Uchastok.FieldByName('id_uch').AsInteger);.Print.Filtered:=true;.Print.First;DataModule2.Print.Eof=false
do.Cells[index,1]:=Numer;.Cells[index,2]:=DataModule2.Print.FieldByName('name_print').AsString;.Cells[index,3]:=DataModule2.Print.FieldByName('vrab_print').AsString;(index);
Inc(Numer);.Print.Next;;TVivOb.RadioButton2Click(Sender:
TObject);.Enabled:=true;.Enabled:=true;
end;
end.
ПРИЛОЖЕНИЕ 2
Распечатка результатов работы
программы
Рис. 1 - Окно авторизации пользователя
Рис. 2 - Главное меню
Рис. 3 - Участки
Рис. 4 - Ответственные лица
Рис. 5 - Пользователи
Рис. 6 - Информация о компьютере
Рис. 7 - Изменение информации о компьютере
Рис 8 - Ввод картриджа
Рис 9 - Редактирование картриджа
Рис. 10 - Добавление принтера
Рис. 11 - Изменение принтеров
Рис. 12 - Вывод оборудования на участке
Рис. 13 - Отчет об оборудовании на участке
Рис. 14 - Отчет об оборудовании на участке за
определенный период