Автоматизированный учет компьютерной техники ООО "СибирьЭнергоАвтоТранс"

Описание входной и выходной информации. Программа и схема взаимосвязи модулей, руководство пользователю. Подготовка и компиляция программы, тестирование и отладка. Операционная система Windows 7 Ultimate x86. Язык программирования Embarcadero DELPHI 2010.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 29.10.2013
Размер файла 3,6 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

[Введите текст]

ВВЕДЕНИЕ

Данная выпускная квалификационная работа выполнялась в ООО «СибирьЭнергоАвтоТранс», в отделении «Оперативных систем управления». ООО «СибирьЭнергоАвтоТранс» - устойчивое, динамично развивающееся предприятие в сфере транспортных услуг. Данное предприятие является одним из крупнейших на рынке автоуслуг Кемеровской области . Среди постоянных заказчиков и партнеров ООО «СибирьЭнергоАвтоТранс» такие крупные предприятия как филиал ОАО «МРСК Сибири» - «Кузбассэнерго», ЗАО «Энерго-строительная компания Сибири», Администрация Кемеровской области, ОАО «Кемеровоэлектромонтаж», ОАО «Сибирьсетьремонт».

Технический отдел занимается обслуживанием и сопровождением компьютерных сетей, сопровождением и дополнением конфигурации программы «1С: Автотранспорт». Также специалисты технического отдела занимаются приемом и вводом в производство компьютерной техники и периферийного оборудования. После поступлении нового оборудования специалисты тестируют, отлаживают и настраивают компьютеры, так как необходимо полностью удовлетворить потребности остальных сотрудников, для эффективной работы предприятия. Без необходимого программного обеспечения, информацию о прибывшем оборудовании приходилось держать в бумажной форме, что осложняло хранение информации.

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

Данная программа разработана для автоматизации учета компьютерной техники и периферийного оборудования, а также вывода готовых отчетов для предоставления отчетности бухгалтерии и высшему руководству.

Для создания данной программы использовалась среда разработки Delphi 2010. Был выбран метод решения данной задачи с помощью создания приложения трехзвенной архитектуры, так как, оно позволяет полностью отобразить все входные и выходные данные, требуемые по условию задачи. В качестве хранилища данных была выбрана СУБД MySQL.

Операционные системы, используемые при разработке программы: Microsoft Windows 7 (x32).

1. ОСНОВНАЯ ЧАСТЬ

1.1 Организационно-экономическая сущность задачи

программа отладка windows delphi

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

1.2 Постановка задачи

Необходимо написать программное обеспечение, способное вести учет компьютеров и периферийного оборудования в организации ООО «СибирьЭнергоАвтоТранс».

В программе необходимо предусмотреть следующее:

-Удобный интерфейс с возможностью отображения необходимого списка оборудования каждого вида.

-Контроль ввода данных при добавлении информации о компьютерах и -периферии.

-При выборе необходимого участка отображать список оборудования на данном участке.

-Работу с учетными записями сотрудников работающих в программе.

-Каскадное удаление и обновление базы данных.

-Редактирование информации компьютера при замене комплектующих деталей или временного вывода компьютера из эксплуатации.

-Редактирование информации о картриджах при выводе их из эксплуатации на заправку.

-Формирование отчетов со списком всего оборудования на участке и оборудования, введенного за определенный период.

1.3 Описание входной и выходной информации

В качестве входной информации используются сведения о компьютерах и данные о ответственных лицах на участках.

Структура входной информации представлена в таблицах: 1.3.1-1.3.7.

Таблица 1.3.1 - Структура таблицы пользователей (users)

Название

Обозначение

Тип

Длина

Код пользователя

Id_user

int

11

Логин пользователя

Login_users

varchar

16

Пароль пользователя

Password_users

varchar

16

Таблица 1.3.2 - Структура таблицы участков (uchastok)

Название

Обозначение

Тип

Длина

Код участка

Id_uchastok

int

11

Код пользователя

Id_user

int

1

Адрес

Name_uch

varchar

60

Таблица 1.3.3 - Структура таблицы кодов ответственных лиц(ot_male)

Название

Обозначение

Тип

Длина

Код ответственного

Id_ot_male

int

11

Код участка

Id_uchastok

int

11

Ф. И. О. ответственного

Name_otmale

varchar

50

Должность

Dolg_otmale

varchar

30

Таблица 1.3.4 - Структура таблицы информации об компьютерах (comp_info)

Название

Обозначение

Тип

Длина

Код компьютера

Id_comp

int

11

Код участка

Id_uchastok

int

11

Материнская плата

Mother_card

varchar

150

Процессор

Processor

varchar

100

Оперативная память

Op_memory

varchar

120

Видеоадаптер

Video

varchar

150

Жесткий диск

HDD

varchar

100

Привод

Drive_disk

varchar

100

Статус

Status

varchar

10

Аренда

Arenda

varchar

15

Инвентарный номер

Inv_nom

varchar

20

Дата ввода

Date_in

date

-

Дата вывода

Date_out

date

-

Таблица 1.3.5 - Структура таблицы истории компьютеров (comp_history)

Название

Обозначение

Тип

Длина

Код записи

Id_comp_history

lint

11

Код компьютера

Id_stat

int

11

Дата записи

Date_zap

datetime

-

Запись истории

coment

blob

-

Таблица 1.3.6 - Структура таблицы картриджей (cartg)

Название

Обозначение

Тип

Длина

Код картриджа

Id_cartg

int

11

Код участка

Uch_cartg

int

11

Статус

Vrab_cartg

varchar

15

Название картриджа

Name_cartg

varchar

100

Состояние картриджа

Sost_cartg

varchar

15

Таблица 1.3.7 - Структура таблицы истории картриджей (cartg_history)

Название

Обозначение

Тип

Длина

Код записи

Id_cartg_history

int

11

Код картриджа

Id_cartg

int

11

Дата записи

Date_zap

datetime

-

Запись истории

Opis

blob

-

Таблица 1.3.8 - Структура таблицы принтеров (print)

Название

Обозначение

Тип

Длина

Код принтера

Id_print

int

11

Код участка

Id_uchastok

int

11

Название принтера

Name_print

varchar

60

Статус

Vrab_print

varchar

10

Таблица 1.3.9 - Структура таблицы истории принтеров (print_history)

Название

Обозначение

Тип

Длина

Код записи

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 Описание программы и схема взаимосвязи модулей

При решении задач были разработаны следующие модули:

GLC.dpr - файл проекта

DMGL.pas - модуль данных

Login.pas - модуль «Идентификация пользователя»

MM.pas - модуль «Главное меню». Данный модуль представлен в блок-схеме 1.6.1

Сomp_info.pas - модуль «Добавление компьютеров»

Ecomp.pas - модуль «Изминение компьютера»

AdCartg.pas - модуль «Добавление картриджа»

Ecartg.pas - модуль «Изминение картриджа»

EPrint.pas - модуль «Изминение принтера»

AdUch.pas - модуль «Добавление участка»

ListOtMale.pas - модуль «Список ответственных»

ListUser.pas - модуль «Список пользователей»

VivObor.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. Проверяет текст исходной программы на отсутствие синтаксических ошибок.

2. Создает (генерирует) исполняемую программу - машинный код.

Генерация машинного кода компилятором свидетельствует лишь о том, что в тексте программы нет синтаксических ошибок. Убедиться, что программа работает правильно можно только в процессе ее тестирования - пробных запусках программы и анализе полученных результатов [1].

Процесс и результат компиляции отражаются в диалоговом окне Compiling. В это окно компилятор выводит ошибки (Errors), предупреждений (warnings) и подсказок (Hints). Сами сообщения об ошибках, предупреждения и подсказки отображаются в нижней части окна редактора кода.

В большинстве случаев в только что набранной программе есть синтаксические ошибки. Программист должен их устранить. Процесс устранения ошибок носит итерационный характер. Обычно сначала устраняются наиболее очевидные ошибки, например, декларируются необъявленные переменные. После очередного внесения изменений в текст программы выполняется повторная компиляция. Следует учитывать тот факт, что компилятор не всегда может точно локализовать ошибку. Поэтому, анализируя фрагмент программы, который, по мнению компилятора, содержит ошибку, нужно обращать внимание не только на тот фрагмент кода, на который компилятор установил курсор, но и на тот, который находится в предыдущей строке [1].

Если в программе нет синтаксических ошибок, компилятор создает исполняемый файл программы. Имя исполняемого файла такое же, как и у файла проекта, а расширение - exe. Delphi помещает исполняемый файл в тот же каталог, где находится файл проекта.

При обнаружении в программе неточностей, которые не являются ошибками, компилятор выводит подсказки (Hints) и предупреждения (warnings). Например, наиболее часто выводимой подсказкой является сообщение об объявленной, но не используемой переменной.

Итак, компиляция - это перевод исходного текста к виду, доступному для вычислительной машины, и объединение в одно целое отдельных частей программы. В результате компиляции будет получена программа, находящаяся либо в оперативной памяти машины, либо размещённая в exe - файле на диске [1].

2.2 Тестирование и отладка программы

Успешное завершение процесса компиляции не означает, что в программе нет ошибок. Убедиться, что программа работает правильно можно только в процессе проверки ее работоспособности, который называется тестированием.

Обычно программа редко сразу начинает работать так, как надо, или работает правильно только на некотором ограниченном наборе исходных данных. Это свидетельствует о том, что в программе есть алгоритмические ошибки. Процесс поиска и устранение ошибок называется отладкой [2].

Интегрированная среда разработки Delphi предоставляет программисту мощное средство поиска и устранения ошибок в программе - отладчик. Отладчик позволяет:

выполнять трассировку программы;

наблюдать значения переменных;

устанавливать точки остановки;

отслеживать происходящие события;

выполнять программу в пошаговом режиме.

Именно это средство и использовалось при отладке данной программы. Этап отладки можно считать законченным, если программа правильно работает на одном - двух наборах входных данных [1].

2.3 Выполнение и контрольный пример

Во время выполнения программы можно столкнуться с множеством проблем. Они могут возникнуть как на этапе проектирования, так и на этапе разработки программного продукта. Основной проблемой является неправильное использование операторов языка, неверное построение алгоритма. Ошибки могут быть разными, как это может быть и некорректное использование свойств компонент, или неправильное задание какого-либо условия, так и многое другое [2].

Но они все легко устраняемы, после того, как проект готов к работе проводятся автономная и комплексная отладка программного продукта, испытание работоспособности модулей и базовых программных средств. Для комплексной отладки готовится контрольный пример, который позволяет проверить соответствие возможностей программного продукта заданным спецификациям.

В результате тестирования программы были выявлены следующие ошибки:

ошибка соединения клиентского приложения с серверным;

ошибка при сохранении новой записи в таблице, нарушение целостности первичного ключа;

ошибка при редактировании данных;

некорректное отображение данных при выборе участка или при выборе другой таблицы;

некорректный вывод записей за определенный промежуток времени при формировании отчета.

В настоящее время все ошибки устранены. Результат работы программы представлен в приложении 2 (стр. 78).

3. ПРОГРАММНЫЕ И ТЕХНИЧЕСКИЕ СРЕДСТВА РЕШЕНИЯ ЗАДАЧИ

3.1 Описание ASUS K61IC

Программа «Автоматизированный учет компьютерной техники ООО «СибирьЭнергоАвтоТранс»» представленная в данной выпускной квалификационной работе была разработана на компьютере следующей конфигурации:

Процессор: Intel Pentium Dual Core T4300

Оперативная память: DDR2 PC5300 (4096 МГц)

Жесткий диск: 320 Gb

Видеокарта: NvidiaGeForce GT 220M

ASUS K61IC - это мультимедийный ноутбук среднего класса. От более доступных моделей его выгодно отличает дискретный графический адаптер. Модель не рассчитана на частые перемещения, и скорее подойдет для стационарной домашней эксплуатации. В этом ноутбуке разработчики сделали особенный акцент на графические возможности. Модель оснащена быстрым дискретным видеоадаптером 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

Windows 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. Язык Delphi - строго типизированный объектно-ориентированный язык, в основе которого лежит хорошо знакомый программистам Object Pascal [2].

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

Учитывая все эти особенности, для написания данной программы и был выбран объектно-ориентированный язык программировании Delphi [9].

3.4 Описание СУБД MySQL

MySQL является собственностью компании Oracle Corporation, получившей её вместе с поглощённой Sun Microsystems, осуществляющей разработку и поддержку приложения. Распространяется под GNU General Public License или под собственной коммерческой лицензией. Помимо этого разработчики создают функциональность по заказу лицензионных пользователей, именно благодаря такому заказу почти в самых ранних версиях появился механизм репликации [7].

MySQL - решение для малых и средних приложений. Входит в состав серверов 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

Microsoft Excel (также иногда называется Microsoft Office Excel) - программа для работы с электронными таблицами, созданная корпорацией Microsoft для Microsoft Windows, Windows NT и Mac OS. Она предоставляет возможности экономико-статистических расчетов, графические, язык макропрограммирования VBA (Visual Basic для приложений). Microsoft Excel входит в состав Microsoft Office и на сегодняшний день Excel является одним из наиболее популярных приложений в мире [6].

API позволяет открывать таблицы Excel в ряде других приложений. Это включает в себя открытие документов Excel на веб-страницах с помощью ActiveX или таких плагинов, как Adobe Flash Player.

Ценной возможностью Excel является возможность писать код на основе Visual Basic для приложений (VBA). Этот код пишется с использованием отдельного от таблиц редактора. Управление электронной таблицей осуществляется посредством объектно-ориентированной модели кода и данных. С помощью этого кода данные входных таблиц будут мгновенно обрабатываться и отображаться в таблицах и диаграммах (графиках). Таблица становится интерфейсом кода, позволяя легко работать изменять его и управлять расчётами [7].

СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ

1. Delphi 2007. Самоучитель/ С.В. Глушаков, А.Л. Клевцов. - изд. 4-е, доп и перераб. - М.: АСТ:АСТ МОСКВА:ХРАНИТЕЛЬ, 2008. - 448с.

2. Нестандартные приемы программирования на Delphi . Ревич Ю.В. - М.:BHV, 2005. - 560 с.

3. Программирование документов и приложений MS Office в Delphi. Корняков В. - М.:BHV, 2005. - 496с.

ПРИЛОЖЕНИЕ 1

Распечатка текстов программы

unit Login; - модуль формы «Идентификация пользователя»

interface

uses

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

Dialogs, DMGL, Grids, DBGrids, StdCtrls, ExtCtrls, DBCtrls,

RibbonLunaStyleActnCtrls, Ribbon, Mask, Buttons, IniFiles;

type

TForm1 = class(TForm)

Label1: TLabel;

Label2: TLabel;

MaskEdit1: TMaskEdit;

Button1: TButton;

GroupBox1: TGroupBox;

Label3: TLabel;

Edit2: TEdit;

Label4: TLabel;

MaskEdit2: TMaskEdit;

MaskEdit3: TMaskEdit;

Label5: TLabel;

BitBtn1: TBitBtn;

Button2: TButton;

Button3: TButton;

DBLookupComboBox1: TDBLookupComboBox;

Label6: TLabel;

Edit1: TEdit;

Label7: TLabel;

Button4: TButton;

Button5: TButton;

procedure Button1Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure BitBtn1Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

procedure Button5Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

user: String;

con: TIniFile;

implementation

uses MM;

{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);

var

i: integer;

begin

if maskedit2.Text=maskedit3.Text then

begin

datamodule2.Users.Close;

datamodule2.Users.Open;

if datamodule2.Users.Locate('Login_users', edit2.Text, [])=false then

begin

i:=0;

datamodule2.Users.Refresh;

datamodule2.Users.First;

while datamodule2.Users.eof=false do

begin

if i=datamodule2.Users.FieldByName('id_user').AsInteger then

begin

i:=i+1;

datamodule2.Users.Next;

end

else

break;

end;

datamodule2.Users.append;

datamodule2.Users.FieldValues['id_user']:=i;

datamodule2.Users.FieldValues['Login_users']:=edit2.Text;

datamodule2.Users.FieldValues['Password_users']:=maskedit2.Text;

datamodule2.Users.Post;

datamodule2.Users.ApplyUpdates(-1);

end

else application.MessageBox(pchar('Такой логин уже есть'),'Ошибка',mb_OK);

end

else application.MessageBox(pchar('Пароли не совпадают'),'Ошибка',mb_OK);

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

form1.ClientHeight:=302;

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

if (datamodule2.Users.fieldvalues['Password_users']=maskedit1.Text) then

begin

datamodule2.Cartg.Active:=true;

datamodule2.Print.Active:=true;

Main.Show;

main.statusbar1.Panels[0].Text:='Пользователь '+datamodule2.Users.FieldByName('Login_users').AsString;

Form1.Visible:=false;

main.DBLookupComboBox1.KeyValue:=0;

end

else application.MessageBox(pchar('Неправильно введен логин или пароль'), 'Ошибка идентификации', mb_OK);

end;

procedure TForm1.Button3Click(Sender: TObject);

begin

form1.Close;

end;

procedure TForm1.Button4Click(Sender: TObject);

begin

{datamodule2.SocketConnection1.Host:=edit1.text;

datamodule2.SocketConnection1.ServerName:='ServerPro.ServDM';

datamodule2.SocketConnection1.Connected:=true;

if datamodule2.SocketConnection1.Connected=true then

begin

con:=TIniFile.Create(ExtractFilePath(ParamStr(0))+'\connect.ini');

con.WriteString('SoketConection1','SoketConection1Host',datamodule2.SocketConnection1.Host);

con.Free;

end;

datamodule2.Users.Active:=true;

datamodule2.Uchastok.Active:=true;

datamodule2.Ot_male.Active:=true;

datamodule2.Comp_info.Active:=true;

datamodule2.Cartg.Active:=true;

datamodule2.Print.Active:=true;

datamodule2.comp_history.Active:=true;

datamodule2.cartg_history.Active:=true;

datamodule2.print_history.Active:=true; }

end;

procedure TForm1.Button5Click(Sender: TObject);

begin

Form1.ClientWidth:=442;

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

form1.ClientHeight:=139;

end;

end.

unit DMGL; - модуль данных

interface

uses

SysUtils, Classes, DB, DBClient, ShellAnimations, MConnect, SConnect, Menus,

ADODB, Dialogs, Messages, Windows, StdCtrls, Forms, dateutils, AdoConEd, IniFiles;

type

TDataModule2 = class(TDataModule)

Users_DS: TDataSource;

Uchastok_DS: TDataSource;

Ot_male_DS: TDataSource;

Comp_info_DS: TDataSource;

Comp_history_DS: TDataSource;

cartg_DS: TDataSource;

cartg_history_DS: TDataSource;

print_DS: TDataSource;

print_history_DS: TDataSource;

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N4: TMenuItem;

N5: TMenuItem;

N6: TMenuItem;

N7: TMenuItem;

N8: TMenuItem;

N9: TMenuItem;

N10: TMenuItem;

N11: TMenuItem;

N3: TMenuItem;

Users: TClientDataSet;

Uchastok: TClientDataSet;

Ot_male: TClientDataSet;

Comp_info: TClientDataSet;

Comp_history: TClientDataSet;

Cartg: TClientDataSet;

Cartg_history: TClientDataSet;

Print: TClientDataSet;

Print_history: TClientDataSet;

SocketConnection1: TSocketConnection;

procedure N7Click(Sender: TObject);

procedure N2Click(Sender: TObject);

procedure N3Click(Sender: TObject);

procedure N9Click(Sender: TObject);

procedure N6Click(Sender: TObject);

procedure N4Click(Sender: TObject);

procedure N5Click(Sender: TObject);

procedure N10Click(Sender: TObject);

procedure DataModuleCreate(Sender: TObject);

procedure SocketConnection1BeforeConnect(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

DataModule2: TDataModule2;

implementation

uses ListUser, ListOtMale, compinfo, AdCartg, Uchastok, VivObor, MM, Login;

{$R *.dfm}

procedure TDataModule2.DataModuleCreate(Sender: TObject);

var connect: string;

begin

socketconnection1.Connected:=true;

datamodule2.users.Active:=true;

datamodule2.uchastok.Active:=true;

datamodule2.ot_male.Active:=true;

datamodule2.comp_info.Active:=true;

datamodule2.cartg.Active:=true;

datamodule2.print.Active:=true;

datamodule2.comp_history.Active:=true;

datamodule2.cartg_history.Active:=true;

datamodule2.print_history.Active:=true;

end;

procedure TDataModule2.N10Click(Sender: TObject);

begin

fuchast.show;

end;

procedure TDataModule2.N2Click(Sender: TObject);

var

uchastok: string;

i: integer;

begin

uchastok:=inputbox('Название участка', '', '');

if uchastok<>'' then

begin

i:=0;

datamodule2.Uchastok.Refresh;

datamodule2.Uchastok.First;

while datamodule2.Uchastok.eof=false do

begin

if i=datamodule2.Uchastok.FieldByName('id_uch').AsInteger then

begin

i:=i+1;

datamodule2.Uchastok.Next;

end

else

break;

end;

datamodule2.Uchastok.append;

datamodule2.Uchastok.FieldValues['id_uch']:=i;

datamodule2.Uchastok.FieldValues['id_user']:=datamodule2.Users.FieldValues['id_user'];

datamodule2.Uchastok.FieldValues['Name_uch']:=uchastok;

datamodule2.Uchastok.Post;

datamodule2.Uchastok.ApplyUpdates(-1);

end;

end;

procedure TDataModule2.N3Click(Sender: TObject);

var name,dolg: string;

begin

VivOb.show;

end;

procedure TDataModule2.N4Click(Sender: TObject);

begin

compinfo.comp_info.Show;

end;

procedure TDataModule2.N5Click(Sender: TObject);

begin

AddCartg.Show;

end;

procedure TDataModule2.N6Click(Sender: TObject);

var

name: string;

i, i1, temp: integer;

year, month, day, hour, minute, second, msec: word;

begin

name:=inputbox('Введите название принтера', '' ,'');

if name<>'' then

begin

i:=0;

datamodule2.Print.Filtered:=false;

datamodule2.Print.Refresh;

datamodule2.Print.First;

while datamodule2.Print.eof=false do

begin

if i=datamodule2.Print.FieldByName('id_print').AsInteger then

begin

i:=i+1;

datamodule2.Print.Next;

end

else

break;

end;

datamodule2.Print.append;

datamodule2.Print.FieldValues['id_print']:=i;

datamodule2.Print.FieldValues['uch_print']:=datamodule2.Uchastok.FieldValues['id_uch'];

datamodule2.Print.FieldValues['name_print']:=name;

datamodule2.Print.FieldValues['vrab_print']:='В работе';

datamodule2.Print.Post;

datamodule2.Print.ApplyUpdates(-1);

end;

i:=0;

datamodule2.Print_history.Filtered:=false;

datamodule2.Print_history.Refresh;

datamodule2.Print_history.First;

while datamodule2.Print_history.eof=false do

begin

if i=datamodule2.Print_history.FieldByName('id_print_history').AsInteger then

begin

i:=i+1;

datamodule2.Print_history.Next;

end

else

break;

end;

datamodule2.Print_history.Append;

datamodule2.Print_history.FieldValues['id_print_history']:=i;

datamodule2.Print_history.FieldValues['id_print']:=datamodule2.Print.FieldValues['id_print'];

decodedate(date(), year, month, day);

decodetime(time(),hour,minute,second,msec);

datamodule2.Print_history.FieldValues['data_zap']:=encodedatetime(year, month, day, hour,minute,second,msec);

datamodule2.Print_history.FieldValues['opis']:='Добавлен принтер '+name;

main.memo1.lines.add(datetostr(datamodule2.Print_history.FieldValues['data_zap'])+' '+timetostr(datamodule2.Print_history.FieldValues['data_zap'])+' '+datamodule2.Print_history.Fieldbyname('opis').AsString);

datamodule2.Print_history.Post;

datamodule2.print_history.ApplyUpdates(-1);

end;

procedure TDataModule2.N7Click(Sender: TObject);

begin

listuser.Listusers.Show;

end;

procedure TDataModule2.N9Click(Sender: TObject);

begin

OtMale.Show;

end;

procedure TDataModule2.SocketConnection1BeforeConnect(Sender: TObject);

var connect: string;

begin

{con:=TIniFile.Create(ExtractFilePath(ParamStr(0))+'\connect.ini');

connect:=con.ReadString('SocketConnection1','SocketConection1ComputerName',SocketConnection1.Host);

datamodule2.SocketConnection1.Host:=connect;

datamodule2.SocketConnection1.ServerName:='ServerPro.ServDM';

datamodule2.SocketConnection1.Connected:=true;

con.Free; }

end;

end.

unit MM; - модуль формы «Главное меню»

interface

uses

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

Dialogs, DMGL, ComCtrls, Grids, DBGrids, StdCtrls, Mask, DBCtrls, TabNotBk,

ExtCtrls;

type

TMain = class(TForm)

DBLookupComboBox1: TDBLookupComboBox;

Label1: TLabel;

StatusBar1: TStatusBar;

Button1: TButton;

Button2: TButton;

RadioGroup1: TRadioGroup;

DBEdit1: TDBEdit;

Label2: TLabel;

Label3: TLabel;

DBEdit2: TDBEdit;

DBEdit3: TDBEdit;

DBEdit4: TDBEdit;

Label4: TLabel;

Label5: TLabel;

Button4: TButton;

Button3: TButton;

DBGrid1: TDBGrid;

DBEdit5: TDBEdit;

Label6: TLabel;

Memo1: TMemo;

DBGrid2: TDBGrid;

DBGrid3: TDBGrid;

DBGrid4: TDBGrid;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure FormCreate(Sender: TObject);

procedure RadioGroup1Click(Sender: TObject);

procedure DBLookupComboBox1Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

procedure TrayIcon1DblClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Main: TMain;

izmen: integer;

implementation

uses AdCartg, Ecomp, Ecartg, Eprint;

{$R *.dfm}

procedure TMain.Button1Click(Sender: TObject);

begin

if messagedlg('При удалении участка произойдет удаление остальных данных. Выполнить удаление?',mtWarning,

[mbYES,mbNO], 0)=idYES then

datamodule2.Uchastok.Delete;

datamodule2.Uchastok.ApplyUpdates(-1);

datamodule2.Comp_info.Close;

datamodule2.Comp_info.Open;

datamodule2.Cartg.Close;

datamodule2.Cartg.Open;

datamodule2.Print.Close;

datamodule2.Print.Open;

end;

procedure TMain.Button2Click(Sender: TObject);

begin

DMGL.DataModule2.N2Click(self);

end;

procedure TMain.Button3Click(Sender: TObject);

begin

if (radiogroup1.ItemIndex=0) then

begin

EditComp.show;

end;

if radiogroup1.ItemIndex=1 then

EditCartg.show;

if radiogroup1.ItemIndex=2 then

Form2.show;

end;

procedure TMain.Button4Click(Sender: TObject);

begin

if radiogroup1.ItemIndex=0 then

begin

datamodule2.Comp_info.Delete;

datamodule2.Comp_info.ApplyUpdates(-1);

datamodule2.Comp_history.Close;

datamodule2.Comp_history.Open;

end;

if radiogroup1.ItemIndex=1 then

begin

datamodule2.Cartg.Delete;

datamodule2.Cartg.ApplyUpdates(-1);

datamodule2.cartg_history.Close;

datamodule2.cartg_history.Open;

end;

if radiogroup1.ItemIndex=2 then

begin

datamodule2.Print.Delete;

datamodule2.Print.ApplyUpdates(-1);

datamodule2.Print_history.Close;

datamodule2.Print_history.Open;

end;

if radiogroup1.ItemIndex=3 then

datamodule2.Ot_male.Delete;

datamodule2.Ot_male.ApplyUpdates(-1);

end;

procedure TMain.DBLookupComboBox1Click(Sender: TObject);

begin

if radiogroup1.ItemIndex=0 then

begin

datamodule2.Comp_info.Filtered:=false;

datamodule2.Comp_info.Filter:='id_uchastok='+inttostr(datamodule2.Uchastok.FieldByName('id_uch').AsInteger);

datamodule2.Comp_info.Filtered:=true;

end;

if radiogroup1.ItemIndex=1 then

begin

datamodule2.Cartg.Filtered:=false;

datamodule2.Cartg.Filter:='uch_cartg='+inttostr(datamodule2.Uchastok.FieldByName('id_uch').AsInteger);

datamodule2.Cartg.Filtered:=true;

end;

if radiogroup1.ItemIndex=2 then

begin

datamodule2.Print.Filtered:=false;

datamodule2.Print.Filter:='uch_print='+inttostr(datamodule2.Uchastok.FieldByName('id_uch').AsInteger);

datamodule2.Print.Filtered:=true;

end;

if radiogroup1.ItemIndex=3 then

begin

datamodule2.Ot_male.Filtered:=false;

datamodule2.Ot_male.Filter:='id_Uchastok='+inttostr(datamodule2.Uchastok.FieldByName('id_uch').AsInteger);

datamodule2.Ot_male.Filtered:=true;

end;

end;

procedure TMain.FormClose(Sender: TObject; var Action: TCloseAction);

begin

application.Terminate;

end;

procedure TMain.FormCreate(Sender: TObject);

begin

DBGrid1.Visible:=true;

DBGrid2.Visible:=false;

DBGrid3.Visible:=false;

DBGrid4.Visible:=false;

Main.ClientHeight:=520;

end;

procedure TMain.RadioGroup1Click(Sender: TObject);

begin

case radiogroup1.ItemIndex of

0:begin

DBGrid1.Visible:=true;

DBGrid2.Visible:=false;

DBGrid3.Visible:=false;

DBGrid4.Visible:=false;

label2.Visible:=true;

label3.Visible:=true;

label4.Visible:=true;

label5.Visible:=true;

label6.Visible:=true;

DBEdit1.Visible:=true;

DBEdit2.Visible:=true;

DBEdit3.Visible:=true;

DBEdit4.Visible:=true;

DBEdit5.Visible:=true;

Button4.Caption:='Удалить компьютер';

if dblookupcombobox1.Text<>'' then

begin

datamodule2.Comp_info.Filtered:=false;

datamodule2.Comp_info.Filter:='id_uchastok='+inttostr(datamodule2.Uchastok.FieldByName('id_uch').AsInteger);

datamodule2.Comp_info.Filtered:=true;

end;

end;

1:begin DBGrid1.Visible:=false;

DBGrid2.Visible:=true;

DBGrid3.Visible:=false;

DBGrid4.Visible:=false;

label2.Visible:=false;

label3.Visible:=false;

label4.Visible:=false;

label5.Visible:=false;

label6.Visible:=false;

DBEdit1.Visible:=false;

DBEdit2.Visible:=false;

DBEdit3.Visible:=false;

DBEdit4.Visible:=false;

DBEdit5.Visible:=false;

Button4.Caption:='Удалить картридж';

if dblookupcombobox1.Text<>'' then

begin

datamodule2.Cartg.Filtered:=false;

datamodule2.Cartg.Filter:='uch_cartg='+inttostr(datamodule2.Uchastok.FieldByName('id_uch').AsInteger);

datamodule2.Cartg.Filtered:=true;

end;

end;

2:begin DBGrid1.Visible:=false;

DBGrid2.Visible:=false;

DBGrid3.Visible:=true;

DBGrid4.Visible:=false;

label2.Visible:=false;

label3.Visible:=false;

label4.Visible:=false;

label5.Visible:=false;

label6.Visible:=false;

DBEdit1.Visible:=false;

DBEdit2.Visible:=false;

DBEdit3.Visible:=false;

DBEdit4.Visible:=false;

DBEdit5.Visible:=false;

Button4.Caption:='Удалить принтер';

if dblookupcombobox1.Text<>'' then

begin

datamodule2.Print.Filtered:=false;

datamodule2.Print.Filter:='uch_print='+inttostr(datamodule2.Uchastok.FieldByName('id_uch').AsInteger);

datamodule2.Print.Filtered:=true;

end;

end;

3:begin DBGrid1.Visible:=false;

DBGrid2.Visible:=false;

DBGrid3.Visible:=false;

DBGrid4.Visible:=true;

label2.Visible:=false;

label3.Visible:=false;

label4.Visible:=false;

label5.Visible:=false;

label6.Visible:=false;

DBEdit1.Visible:=false;

DBEdit2.Visible:=false;

DBEdit3.Visible:=false;

DBEdit4.Visible:=false;

DBEdit5.Visible:=false;

Button4.Caption:='Удалить ответственного';

if dblookupcombobox1.Text<>'' then

begin

datamodule2.Ot_male.Filtered:=false;

datamodule2.Ot_male.Filter:='id_Uchastok='+inttostr(datamodule2.Uchastok.FieldByName('id_uch').AsInteger);

datamodule2.Ot_male.Filtered:=true;

end;

end;

end;

end;

procedure TMain.TrayIcon1DblClick(Sender: TObject);

begin

Main.Show;

end;

end.

unit compinfo; - модуль формы «Информация о компьютере»

interface

uses

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

Dialogs, DMGL, DBCtrls, ComCtrls, StdCtrls, MM, dateutils;

type

Tcomp_info = class(TForm)

DateTimePicker1: TDateTimePicker;

Label1: TLabel;

Edit1: TEdit;

Label3: TLabel;

CheckBox1: TCheckBox;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;

Label8: TLabel;

Label9: TLabel;

Button1: TButton;

Edit2: TEdit;

Edit3: TEdit;

Edit4: TEdit;

Edit5: TEdit;

Edit6: TEdit;

Edit7: TEdit;

procedure Button1Click(Sender: TObject);

procedure Edit1KeyPress(Sender: TObject; var Key: Char);

private

{ Private declarations }

public

{ Public declarations }

end;

var

comp_info: Tcomp_info;

implementation

{$R *.dfm}

procedure Tcomp_info.Button1Click(Sender: TObject);

var

i: integer;

year, month, day, hour, minute, second, msec: word;

begin

if (edit1.text<>'') and (edit2.text<>'') and (edit3.text<>'') and (edit4.text<>'')

and (edit5.text<>'') and (edit6.text<>'') then

begin

i:=0;

datamodule2.Comp_info.Filtered:=false;

datamodule2.Comp_info.Refresh;

datamodule2.Comp_info.First;

if datamodule2.Comp_info.Locate('Inv_nom', edit1.Text, [])=false then

begin

while datamodule2.Comp_info.eof=false do

begin

if (i=datamodule2.Comp_info.FieldByName('id_comp').AsInteger) then

begin

i:=i+1;

datamodule2.Comp_info.Next;

end

else

break;

end;

datamodule2.Comp_info.append;

datamodule2.Comp_info.FieldValues['id_comp']:=i;

datamodule2.Comp_info.FieldValues['id_uchastok']:=datamodule2.Uchastok.FieldValues['id_uch'];

datamodule2.Comp_info.FieldValues['Mother_card']:=edit2.Text;

datamodule2.Comp_info.FieldValues['Processor']:=edit3.Text;

datamodule2.Comp_info.FieldValues['Op_memory']:=edit4.Text;

datamodule2.Comp_info.FieldValues['Video']:=edit5.Text;

datamodule2.Comp_info.FieldValues['HDD']:=edit6.Text;

if edit7.Text<>'' then

datamodule2.Comp_info.FieldValues['Drive_disk']:=edit7.Text

else datamodule2.Comp_info.FieldValues['Drive_disk']:='Не имеется';

if checkbox1.Checked=true then

datamodule2.Comp_info.FieldValues['Arenda']:='Арендован'

else datamodule2.Comp_info.FieldValues['Arenda']:='Собственность';

datamodule2.Comp_info.FieldValues['Inv_nom']:=edit1.Text;

datamodule2.Comp_info.FieldValues['Date_in']:=datetimepicker1.Date;

datamodule2.Comp_info.FieldValues['Status']:='В работе';

datamodule2.Comp_info.Post;

datamodule2.Comp_info.ApplyUpdates(-1);

i:=0;

datamodule2.Comp_history.Refresh;

datamodule2.Comp_history.First;

while datamodule2.Comp_history.eof=false do

begin

if i=datamodule2.Comp_history.FieldByName('id_comp_history').AsInteger then

begin

i:=i+1;

datamodule2.Comp_history.Next;

end

else

break;

end;

datamodule2.Comp_history.Append;

datamodule2.Comp_history.FieldValues['id_comp_history']:=i;

datamodule2.Comp_history.FieldValues['id_stat']:=datamodule2.Comp_info.FieldValues['id_comp'];

decodedate(date(), year, month, day);

decodetime(time(),hour,minute,second,msec);

datamodule2.Comp_history.FieldValues['date_zap']:=encodedatetime(year, month, day, hour,minute,second,msec);

datamodule2.Comp_history.FieldValues['coment']:='Добавлен компьютер номер '+datamodule2.Comp_info.FieldValues['inv_nom'];

main.memo1.lines.add(datetostr(datamodule2.Comp_history.FieldValues['date_zap'])+' '+timetostr(datamodule2.Comp_history.FieldValues['date_zap'])+' '+datamodule2.Comp_history.Fieldbyname('coment').AsString);

datamodule2.Comp_history.Post;

datamodule2.Comp_info.ApplyUpdates(-1);

end

else application.MessageBox(pchar('Инвентарный номер совпадает с'+#13+'номером одного из комьютеров'), 'Ошибка ввода', mb_OK);

end

else application.MessageBox(pchar('Данные ведены некоректно'), 'Ошибка', mb_OK);

end;

procedure Tcomp_info.Edit1KeyPress(Sender: TObject; var Key: Char);

begin

case key of

'0'..'9':;

#8:;

else key:=#0;

end;

end;

end.

unit Ecomp; - модуль формы «Изминение информации о компьютере»

interface

uses

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

Dialogs, StdCtrls, ComCtrls, Mask, DBCtrls, DMGL, MM, dateutils;

type

TEditComp = class(TForm)

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;

Label8: TLabel;

Label9: TLabel;

CheckBox1: TCheckBox;

Button1: TButton;

DBEdit1: TDBEdit;

DBEdit3: TDBEdit;

DBEdit4: TDBEdit;

DBEdit5: TDBEdit;

DBEdit6: TDBEdit;

DBEdit7: TDBEdit;

DBEdit8: TDBEdit;

RadioButton1: TRadioButton;

RadioButton2: TRadioButton;

DateTimePicker1: TDateTimePicker;

a: TGroupBox;

Label1: TLabel;

Label2: TLabel;

Label10: TLabel;

DBEdit2: TDBEdit;

DBEdit9: TDBEdit;

DBEdit10: TDBEdit;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

EditComp: TEditComp;

implementation

{$R *.dfm}

procedure TEditComp.Button1Click(Sender: TObject);

var

i: integer;

year, month, day, hour, minute, second, msec: word;

begin

datamodule2.Comp_info.Edit;

if (radiobutton1.Checked=true) then

begin

if (datetimepicker1.Date>datamodule2.Comp_info.FieldValues['Date_out']) and

(datamodule2.Comp_info.FieldValues['Date_in']<=datamodule2.Comp_info.FieldValues['Date_out']) then

begin

datamodule2.Comp_info.FieldValues['Date_in']:=datetimepicker1.Date;

datamodule2.Comp_info.FieldValues['Status']:='В работе';

end

else application.MessageBox(pchar('Ошибка при выборе даты'), 'Ошибка', mb_OK);

end;

if (radiobutton2.Checked=true) then

begin

if (datetimepicker1.Date>datamodule2.Comp_info.FieldValues['Date_in']) and

(datamodule2.Comp_info.FieldValues['Date_out']<=datamodule2.Comp_info.FieldValues['Date_in']) then

begin

datamodule2.Comp_info.FieldValues['Date_out']:=datetimepicker1.Date;

datamodule2.Comp_info.FieldValues['Status']:='Выведен';

end

else application.MessageBox(pchar('Ошибка при выборе даты'), 'Ошибка', mb_OK);

end;

i:=0;

datamodule2.Comp_history.Refresh;

datamodule2.Comp_history.First;

while datamodule2.Comp_history.eof=false do

begin

if i=datamodule2.Comp_history.FieldByName('id_comp_history').AsInteger then

begin

i:=i+1;

datamodule2.Comp_history.Next;

end

else

break;

end;

datamodule2.Comp_info.Post;

datamodule2.Comp_info.ApplyUpdates(-1);

datamodule2.Comp_history.Append;

datamodule2.Comp_history.FieldValues['id_comp_history']:=i;

datamodule2.Comp_history.FieldValues['id_stat']:=datamodule2.Comp_info.FieldValues['id_comp'];

decodedate(date(), year, month, day);

decodetime(time(),hour,minute,second,msec);

datamodule2.Comp_history.FieldValues['date_zap']:=encodedatetime(year, month, day, hour,minute,second,msec);

datamodule2.Comp_history.FieldValues['coment']:='Изменен компьютер номер '+datamodule2.Comp_info.fieldbyname('inv_nom').AsString;

main.memo1.lines.add(datetostr(datamodule2.Comp_history.FieldValues['date_zap'])+' '+timetostr(datamodule2.Comp_history.FieldValues['date_zap'])+' '+datamodule2.Comp_history.Fieldbyname('coment').AsString);

datamodule2.Comp_history.Post;

datamodule2.Comp_history.ApplyUpdates(-1);

end;

end.

unit AdCartg; - модуль формы «Ввод картриджа»

interface

uses

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

Dialogs, StdCtrls, DMGL, DBCtrls, dateutils;

type

TAddCartg = class(TForm)

Edit1: TEdit;

Label1: TLabel;

Label2: TLabel;

ComboBox1: TComboBox;

Label3: TLabel;

ComboBox2: TComboBox;

Button1: TButton;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

AddCartg: TAddCartg;

implementation

uses MM;

{$R *.dfm}

procedure TAddCartg.Button1Click(Sender: TObject);

var

i: integer;

year, month, day, hour, minute, second, msec: word;

begin

if (edit1.text<>'') and (combobox1.text<>'') and (combobox2.text<>'') then

begin

i:=0;

datamodule2.Cartg.Filtered:=false;

datamodule2.Cartg.Refresh;

datamodule2.Cartg.First;

while datamodule2.Cartg.eof=false do

begin

if i=datamodule2.Cartg.FieldByName('id_cartg').AsInteger then

begin

i:=i+1;

datamodule2.Cartg.Next;

end

else

break;

end;

datamodule2.Cartg.append;

datamodule2.Cartg.FieldValues['id_cartg']:=i;

datamodule2.Cartg.FieldValues['uch_cartg']:=datamodule2.Uchastok.FieldValues['id_uch'];

datamodule2.Cartg.FieldValues['vrab_cartg']:=combobox1.Text;

datamodule2.Cartg.FieldValues['name_cartg']:=edit1.Text;

datamodule2.Cartg.FieldValues['sost_cartg']:=combobox2.Text;

datamodule2.Cartg.Post;

datamodule2.Cartg.ApplyUpdates(-1);

i:=0;

datamodule2.Cartg_history.Refresh;

datamodule2.Cartg_history.First;

while datamodule2.Cartg_history.eof=false do

begin

if i=datamodule2.Cartg_history.FieldByName('id_cartg_history').AsInteger then

begin

i:=i+1;


Подобные документы

  • Организационно-экономическая сущность задачи и ее постановка. Техническое обслуживание компьютерной техники на предприятии. Сбор информации об установленных на принтеры картриджей или заправленные тонером. Описание модулей и схема их взаимосвязи.

    отчет по практике [2,1 M], добавлен 16.04.2009

  • Написание программы, состоящей из двух модулей и реализующей простейший калькулятор. Разработка алгоритма решения задачи, реализация его в среде программирования Delphi. Список использованных переменных. Блок-схема программы, руководство пользователя.

    курсовая работа [106,6 K], добавлен 16.06.2014

  • Описание входной и выходной информации. Программно-технические средства, необходимые для разработки программы "Автоматизированная информационная справочная система аптеки". Возможность формирования и корректировки файлов, тестирование программы.

    курсовая работа [761,7 K], добавлен 18.12.2013

  • Создание компьютерной игры посредством среды программирования Delphi. Инструменты разработки, компоненты и методы для разработки программы. Логическая и физическая структуры, основные функции и элементы управления программы, ее тестирование и отладка.

    курсовая работа [27,9 K], добавлен 26.07.2014

  • Назначение программы учета вычислительной техники и оргтехники организации. Характеристика входной и выходной информации. Требования к базам данных и приложению. Проектирование отношений сущность-связь. Описание операторов создания базы данных.

    курсовая работа [1,7 M], добавлен 16.06.2022

  • Ознакомление с возможностями языка Си как средой программирования высокого уровня. Циклы программирования параметрического оператора for и функции форматированного ввода. Разработка программы средствами Си: блок-схема, текст и тестирование программы.

    контрольная работа [204,4 K], добавлен 26.01.2013

  • Этапы разработки программы, предназначенной для автоматизации складского учета в фармацевтических организациях: выбор языка программирования, характеристика входной и результатной информации, составление схемы взаимосвязи программных модулей и файлов.

    курсовая работа [148,4 K], добавлен 12.05.2013

  • Разработка комплекса алгоритмов. Кодирование и компиляция. Тестирование, отладка, испытание и сдача программы. Минимальные системные требования для использования Delphi 7. Написание программы с использованием инструментального языка высокого уровня.

    курсовая работа [2,7 M], добавлен 21.02.2011

  • Структура программы в среде Delphi в процессе проектирования приложения, ее модульный принцип. Объявление списка используемых модулей и нескольких операторов. Размещение на форме компонентов и изменение их свойств. Создание кода - обработчика события.

    лабораторная работа [19,1 K], добавлен 15.07.2009

  • Описание входной и выходной документации. Требования к интерфейсу Windows-приложения и информационной базе. Разработка алгоритмов обработки данных и SQL-запросов к базе данных. Язык программирования Object Pascal и среда Delphi. Используемая СУБД.

    дипломная работа [228,7 K], добавлен 25.11.2007

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.