Автоматизированный учет компьютерной техники ООО "СибирьЭнергоАвтоТранс"
Описание входной и выходной информации. Программа и схема взаимосвязи модулей, руководство пользователю. Подготовка и компиляция программы, тестирование и отладка. Операционная система 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