Главная       Продать работу       Блог       Контакты       Оплата       О нас       Как мы работаем       Регистрация       Вход в кабинет
Тех. дипломные работы
   автомобили
   спец. техника
   станки
   тех. маш.
   строительство
   электроснабжение
   пищевая промышленность
   водоснабжение
   газоснабжение
   автоматизация
   теплоснабжение
   холодильники
   машиностроение
   др. тех. специальности

Тех. курсовые работы
   автомобили
   спец. техника
   станки
   тех. маш.
   строительство
   детали машин
   электроснабжение
   газоснабжение
   водоснабжение
   пищевая промышленность
   автоматизация
   теплоснабжение
   ТММ
   ВСТИ
   гидравлика и пневматика
   машиностроение
   др. тех. специальности

Тех. дополнения
   Отчеты
   Расчетно-графические работы
   Лекции
   Задачи
   Лабораторные работы
   Литература
   Контрольные работы
   Чертежи и 3D моделирование
   Тех. soft
   Рефераты
   Общий раздел
   Технологический раздел
   Конструкторский раздел
   Эксплуатационный раздел
   БЖД раздел
   Экономический раздел
   Экологический раздел
   Автоматизация раздел
   Расчетные работы

Гум. дипломные работы
   педагогика и психология
   астрономия и космонавтика
   банковское, биржевое дело
   БЖД и экология
   биология и естествознание
   бухгалтерский счет и аудит
   военное дело
   география
   геология
   государство и право
   журналистика и СМИ
   иностранные языки
   история
   коммуникации
   краеведение
   кулинария
   культура и искусство
   литература
   экономика и торговля
   математика
   медицина
   международное отношение
   менеджмент
   политология
   музыка
   религия
   социология
   спорт и туризм
   таможенная система
   физика
   химия
   философия
   финансы
   этика и эстетика
   правознавство

Гум. курсовые работы
   педагогика и психология
   астрономия и космонавтика
   банковское, биржевое дело
   БЖД и экология
   биология и естествознание
   бухгалтерский счет и аудит
   военное дело
   география
   геология
   государство и право
   журналистика и СМИ
   иностранные языки
   история
   коммуникации
   краеведение
   кулинария
   культура и искусство
   литература
   экономика и торговля
   математика
   медицина
   международное отношение
   менеджмент
   политология
   музыка
   религия
   социология
   спорт и туризм
   таможенная система
   физика
   химия
   философия
   финансы
   этика и эстетика
   правознавство

Гум. дополнения
   Отчеты
   Расчетные работы
   Лекции
   Задачи
   Лабораторные работы
   Литература
   Контрольные работы
   Сочинения
   Гум. soft
   Рефераты

Рефераты
   Авиация и космонавтика
   Административное право
   Арбитражный процесс
   Архитектура
   Астрология
   Астрономия
   Банковское дело
   Безопасность жизнедеятельнос
   Биографии
   Биология
   Биология и химия
   Биржевое дело
   Ботаника и сельское хоз-во
   Бухгалтерский учет и аудит
   Валютные отношения
   Ветеринария
   Военная кафедра
   ГДЗ
   География
   Геодезия
   Геология
   Геополитика
   Государство и право
   Гражданское право и процесс
   Делопроизводство
   Деньги и кредит
   ЕГЭ
   Естествознание
   Журналистика
   ЗНО
   Зоология
   Издательское дело и полиграф
   Инвестиции
   Иностранный язык
   Информатика
   Информатика, программировани
   Исторические личности
   История
   История техники
   Кибернетика
   Коммуникации и связь
   Компьютерные науки
   Косметология
   Краеведение и этнография
   Краткое содержание произведе
   Криминалистика
   Криминология
   Криптология
   Кулинария
   Культура и искусство
   Культурология
   Литература : зарубежная
   Литература и русский язык
   Логика
   Логистика
   Маркетинг
   Математика
   Медицина, здоровье
   Медицинские науки
   Международное публичное прав
   Международное частное право
   Международные отношения
   Менеджмент
   Металлургия
   Москвоведение
   Музыка
   Муниципальное право
   Налоги, налогообложение
   Наука и техника
   Начертательная геометрия
   Оккультизм и уфология
   Остальные рефераты
   Педагогика
   Политология
   Право
   Право, юриспруденция
   Предпринимательство
   Прикладные науки
   Промышленность, производство
   Психология
   психология, педагогика
   Радиоэлектроника
   Реклама
   Религия и мифология
   Риторика
   Сексология
   Социология
   Статистика
   Страхование
   Строительные науки
   Строительство
   Схемотехника
   Таможенная система
   Теория государства и права
   Теория организации
   Теплотехника
   Технология
   Товароведение
   Транспорт
   Трудовое право
   Туризм
   Уголовное право и процесс
   Управление
   Управленческие науки
   Физика
   Физкультура и спорт
   Философия
   Финансовые науки
   Финансы
   Фотография
   Химия
   Хозяйственное право
   Цифровые устройства
   Экологическое право
   Экология
   Экономика
   Экономико-математическое мод
   Экономическая география
   Экономическая теория
   Этика
   Юриспруденция
   Языковедение
   Языкознание, филология

Главная > Тех. дипломные работы > автоматизация
Название:
Программный комплекс автоматизированного учета и инвентаризации компьютерной техники

Тип: Дипломные работы
Категория: Тех. дипломные работы
Подкатегория: автоматизация

Цена:
0 руб



Подробное описание:

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

ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)

Кафедра автоматизированных систем управления (АСУ)

УТВЕРЖДАЮ
Заведующий кафедрой АСУ
Д-р техн. наук, проф.
___________ А.М. Кориков
"____"_________200_г.

ЗАДАНИЕ
по дипломному проектированию студенту__________________
группа _____ факультет ______________________
1. Тема проекта: Программный комплекс автоматизированного учета и инвентаризации компьютерной техники
(утверждена приказом по ВУЗу от "__"_______200__г. № ____
2. Срок сдачи студентом законченного проекта __________
3. Исходные данные к проекту _______________________
4. Содержание расчетно-пояснительной записки /перечень
подлежащих разработке вопросов:
4.1. __________________________
4.2. __________________________
5. Перечень графического материала (c точным указанием обязательных листов презентации) 1)__________, 2)______ …
6. Консультанты по проекту (с указанием относящихся к ним
разделов проекта)_______________________________
7. Дата выдачи задания «___» ______________ 200__ г.

Руководитель дипломного проекта
(должность, ученая степень, звание) __________И.О. Фамилия
Задание принято к исполнению
«___» ______________ 200__ г _________И.О. Фамилия


Реферат

Пояснительная записка к дипломному проекту страницы, рисунков, таблиц, источников, листов графического материала.
ПРОГРАММНЫЙ КОМПЛЕКС, АВТОМАТИЗИРОВАННЫЙ УЧЕТ, ИНВЕНТАРИЗАЦИЯ КОМПЬЮТЕРНОЙ ТЕХНИКИ, БАЗА ДАННЫХ, ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ, DELPHI, ACCESS
Объектом разработки является программное обеспечение для накопления, доступа, обработки и администрирования информации, хранящейся в базе данных отдела по информационным технологиям (IT-отдела) предприятия.
Цель работы – разработать программное обеспечение для IT-отдела предприятия, автоматизирующее работу сотрудника данного отдела в части учета и инвентаризации компьютерной техники организации.
В результате проделанной работы разработан программный комплекс автоматизированного учета и инвентаризации компьютерной техники.
Степень внедрения: система находится на стадии тестирования с последующим внедрением в указать предприятие.
Область применения: разработанная система после незначительной доработки может использоваться в IT-отделе любой организации для учета и инвентаризации компьютерной техники организации.

 


Содержание
1 Анализ предметной области 9
1.1 Описание предметной области 9
1.2 Обзор существующих программных продуктов 10
1.3 Выбор и обоснование варианта реализации задачи 16
1.4 Цели и задачи автоматизации 19
2 Техническое задание 21
2.1 Основание для разработки 21
2.2 Назначение разработки 21
2.3 Требования к программе 21
2.3.1 Требования к функциональным характеристикам 21
2.3.3 Требования к составу и параметрам технических средств 23
2.3.4 Требования к информационной и программной совместимости 23
2.4 Требования к программной документации 23
2.5 Стадии и этапы разработки 24
2.6 Порядок контроля и приемки 24
3 Проектирование системы 25
3.1 Инфологическое проектирование системы 25
3.1.1 Логическое проектирование 29
3.1.2 Физическое проектирование 32
3.2 Обоснование проектных решений по информационному обеспечению 36
3.3 Проектирование интерфейса пользователя 40
3.4 Разработка алгоритмов 41
3.5 Описание выходных документов 42
4 Анализ целесообразности использования заданных средств разработки 44
4.1 Обоснование выбора СУБД 44
4.2 Обоснование выбора языка программирования 51
5 Описание применения 57
5.1 Назначение программы 57
5.2 Условия применения 57
5.3 Описание задачи 57
5.4 Входные и выходные данные 59
6 Оценка экономической эффективности инвестиционного проекта. 61
6.1 Расчет затрат на разработку системы 61
6.2 Формирование денежного потока 66
6.2.1 Расчет поступлений денежных средств 66
6.2.2 Финансирование проекта по этапам разработки 68
7 Безопасность жизнедеятельности 70
Заключение 76
Список использованных источников 78
ТЕКСТ ПРОГРАММЫ 79
ЭКРАННЫЕ ФОРМЫ 102
ФОРМЫ ВХОДНЫХ И ВЫХОДНЫХ 110



Введение

В настоящее время ЭВМ широко применяются во многих отраслях деятельности человека. Ни одна фирма не может обойтись в своей работе без применения компьютеров, которые с успехом заменяют рутинную работу, выполнявшуюся ранее в ручную, повышая эффективность работы любой фирмы. Сфера использования ЭВМ в настоящее время настолько широка, что нет такой области, где применение ЭВМ было бы нецелесообразным. Особенно важна роль ЭВМ для развития науки, роста промышленного производства и повышения эффективности управления.
Исходя из современных требований, предъявляемых к качеству работы отдела по информационным технологиям (IT-отдела) любого крупного предприятия, нельзя не отметить, что эффективная работа его всецело зависит от уровня оснащения компании информационными средствами на базе компьютерных систем автоматизированного учета материальных ценностей в рамках работы данного отдела, а именно  учета компьютерной техники на предприятии.
В этом ряду особое место занимают базы данных и другое программное обеспечение, связанное с их использованием в качестве инструмента для автоматизации учета, инвентаризации и рационализации труда сотрудников IT-отдела. Их использование позволяет сократить время, требуемое на определение морально устаревшей техники, поиска конкретных моделей техники на рабочих местах, уменьшить затраты при планировании закупок компьютерной техники и риски выхода из строя отдельных рабочих мест, исключить возможность появления ошибок в подготовке бухгалтерской документации, что дает прямой экономический эффект.
Разумеется, для раскрытия всех потенциальных возможностей, которые несет в себе использование баз данных, необходимо применять в работе комплекс программных и аппаратных средств максимально соответствующий поставленным задачам. Поэтому в настоящее время велика потребность предприятий в компьютерных программах, поддерживающих и согласующих работу IT-отдела, а также в информации о способах оптимального использования имеющегося у компании компьютерного оборудования.
В рамках работы указать наименование предприятия необходима система, выполняющая следующие основные функции:
 учет компьютерного оборудования по рабочим местам, рабочих мест по подразделениям, производителей, а также поставщиков компьютерной техники;
 оформление и учет прихода компьютерной техники;
 перемещение компьютерного оборудования с одного рабочего места на другое;
 ведение истории обслуживания рабочего места;
 ведение истории обслуживания и истории перемещения по рабочим местам каждого комплектующего;
 учет компьютерного оборудования на складе и списанного, а также оборудования общего пользования (копиры, принтеры и т.д.);
 быстрый поиск данных о выбранном комплектующем на рабочем месте;
 задание для каждого комплектующего произвольного набора характеристик и параметров;
 формирование следующей отчетности:
 паспорт устройства;
 список инвентарных номеров;
 список компьютерной техники по рабочим местам;
 накладная на внутреннее перемещение объектов основных средств;
 список рабочих мест;
 список оборудования на рабочем месте;
 история обслуживания рабочего места;
 история обслуживания комплектующего;
 история перемещения комплектующего.
Программа должна быть разработана как Windows-приложение.
В дальнейшем система может быть использована для автоматизации работы в IT-отделе любой организации для учета и инвентаризации компьютерной техники организации.


1 Анализ предметной области

1.1 Описание предметной области

Учет компьютеров жизненно необходим руководителям отделов компьютеризации, администраторам сетей, а также другим ответственным лицам. При учете компьютерной техники выполняются основные операции, описанные ниже.
На каждое устройство заводится паспорт, в котором отражается информация о его покупке, технических параметрах, истории его перемещений по рабочим местам и обслуживания. По каждому из устройств хранится информация с бухгалтерскими реквизитами, его тип и модель, серийный номер и прочее.
Ведется учет любых работ по обслуживанию устройств и рабочих мест: ремонт, профилактика и прочее. Фиксируются все обстоятельства работ, на основе чего могут строиться отчеты по выполненным работам IT-отделом и его сотрудниками.
Для контроля и планирования сервисного обслуживания по каждому устройству ведется история работ с указанием их типа, времени начала и завершения, лица, проводившего работу, и прочей информации.
Запись об обслуживании (ремонте) формируется по каждому устройству в отдельности. Также ведется учет проведенных работ не только для отдельных устройств, но и для рабочих мест целиком. Примером таких работ может быть переинсталляция ПО на компьютере, обучение пользователя и так далее.
Объекты учета могут перемещаться между рабочими местами. При этом факт перемещения заносится в историю каждого устройства. При перемещении устройств печатается накладная на внутреннее перемещение.

 

1.2 Обзор существующих программных продуктов

В настоящее время существует множество готовых решений в области автоматизации инвентарного учета на предприятии. Среди них можно выделить подмножество систем, разработанных на базе 1С:Предприятие, например, программа «Склад» от компании «БухСофт». Существуют также специализированные системы для автоматизации учета компьютерное техники. Рассмотрим более подробно программный продукт Hardware Inspector компании Database Harbor Software (www.hwinspector.com), предназначенный для автоматизированного учета компьютеров. Он позволяет всегда быть в курсе всей информации о компьютерном парке, получать разнообразные отчеты, планировать его обслуживание, ремонт и обновление.
Hardware inspector решает задачи автоматизации инвентарного учета компьютерной техники и комплектующих, с возможностью хранения всей истории перемещений и обслуживания. Механизм ревизий рабочих мест предохраняет компьютеры и комплектующие от хищения и подмены. Детальный контроль за параметрами конфигурации компьютера обеспечивает свободу и оперативность действий по планированию модернизации и перераспределения устройств. Отчетность перед материальной бухгалтерией перестает быть проблемой. Отличительными особенностями программного продукта являются:
 легкость внедрения и эксплуатации. Одна лицензия дает право эксплуатировать программу на любом количестве компьютеров внутри одной организации;
 сильная команда разработчиков и техподдержки;
 учет именно отдельных комплектующих, а не просто описание текущих параметров компьютеров;
 учет лицензий на программное обеспечение;
 планирование и учет расходных материалов;
 отслеживание истории перемещения устройств, их ремонта и профилактики;
 гибкое разграничение доступа к функционалу и дереву рабочих мест. Обширный перечень прав доступа к функциям и данным позволяет очень гибко настроить возможности каждого оператора базы данных.
Кроме того, возможно распределение прав доступа к деревьям оргструктуры и карты. Например, можно запретить сотрудникам доступ к складу IT-отдела;
 поддержка многопользовательской работы с базой данных в сети;
 автоматизированное заполнение подробнейшей информации об устройствах, полученной на аппаратном уровне;
 мощные механизмы поиска информации. В программе предусмотрены отдельные механизмы для поиска по фильтру устройств, расходных материалов. Кроме того, имеется инструмент «Запросы к БД»" для более гибкого поиска различной информации по комбинации условий отбора данных;
 широкий выбор встроенных отчетов со встроенным визуальным дизайнером;
 бесплатные обновления версии программы в течение года после покупки, а также оперативная русскоязычная поддержка.
Другой пример информационной системы учета компьютерной техники  FlyDoc (www.flydoc.ru), которая позволяет наладить учет и планирование работ с компьютерной техникой. Системный администратор может использовать FlyDoc в локальном варианте (теоретически систему можно разместить и запускать даже с флэшки размером от 128М), но если у него в подчинении есть парочка сотрудников, то FlyDoc позволит воспользоваться всеми преимуществами многопользовательской системы управления делами.
FlyDoc позволяет легко и удобно решить задачи, стоящие перед многими ИТ-специалистами:
 каталогизировать оборудование с необходимой для работы детализацией данных. Записи структурируются в дерево неограниченной глубины;
 планировать и контролировать закупки, регламентные и ремонтные работы. Принтеры больше не останутся без тонера;
 учитывать обращения пользователей в службу поддержки. Можно даже научить пользователей вносить заявки в базу данных;
 учитывать затраты рабочего времени. Всегда будет можно объяснить, чем сисадмин занимался последние полгода;
 использовать в работе лицензионно чистое программное обеспечение. FlyDoc работает на J2SE и MySQL.
Больше нет необходимости ни налаживать учет компьютерной техники в 1С. Доступный кроссплатформенный коллективный органайзер FlyDoc решает все задачи учета и планирования работ с персональными компьютерами, серверами, копирами, принтерами и любым другим оборудованием.
FlyDoc можно использовать также для создания каталога технической литературы, ведения рабочих записей и даже для мгновенного обмена сообщениями. Структура документов FlyDoc при необходимости расширяется и настраивается самими пользователями.
Раассмотрим последний пример  пограммный продукт, в основе которого 1С  Учет компьютеров версия Prof для 1С 7.7 (http://tunesoft.ru/). В настоящее время в данной конфигурации ведется учет на предприятиях самых различных областей деятельности начиная от заводов, торговых предприятиятий до банков и аэропортов, с парком компьютеров от 30 до 500.
Полная конфигурация предназначена для учета сведений по компьютерам и оргтехнике в организации. И плюс к этому, учитывает многие другие моменты деятельности отдела АСУ, позволяя как можно более полно и удобно вести учет на предприятии в требуемой аналитике.
Конфигурации построена таким образом, чтобы однотипная информация могла быть доступна из одного места. Например, прямо из справочника рабочих мест можно посмотреть, что находится на рабочих местах, отсюда же можно ввести новые документы, сформировать отчеты по рабочим местам, комплектам и комплектующим.
В журнале учета комплектующих, можно осуществить все операции с комплектующими и расходными материалами, кроме того, осуществить отбор по основным параметрам документов: Рабочим местам, комплектам, комплектующим.
Конфигурация обеспечивает ведение учета в разрезе документов. Имеются все необходимые документы: Поступление, перемещение, списание, инвентаризация (кроме стандартных есть еще и специфические документы, например начало, конец внешнего ремонта, обмен комплектующих, списание расходных материалов). Возможна как распечатка стандартных бланков этих документов, так и подключение внешних печатных форм.
Партионный учет, который используется в конфигурации позволяет различать комплектующие, которые заведены разными документами, даже строками документов. У каждой комплектующей благодаря этому механизму могут быть собственные уникальные свойства.
Комплектующие находящиеся на рабочем месте разделяются на комплекты, что позволяет более удобно работать с ними группами, а так же учитывать инвентарные номера группы комплектующих, таких как системный блок.
Импорт данных о комплектующих компьютеров из программы сбора данных Everest (в прошлом Aida32). Программа Эверест очень точно определяет начинку компьютера, опережая по практически всем параметрам многие конкурирующие программы и механизмы (например WMI), а встроенный в конфигурацию механизм синонимов комплектующих позволяет еще более гибко настроить импорт.
В крупных ИТ отделах возникает задача бюджетирования и планирования расходов на покупку, ремонт оргтехники.
В конфигурации бюджетирование составляется помесячно в разрезе статей расхода, которые можно настроить под потребности учета в Вашем отделе. С помощью данного блока можно ввест бюджет за выбранный период, и после проконтролировать его выполнение постатейно с помощью специального отчета.
Расходные материалы учитываются также как оборудование и комплектующие, то есть поступление и перемещение осуществляется теми же документами. Различия в их списании, для этого есть отдельный документ списания, в котором дополнительно можно выбрать аналитику для списания расходных материалов. Аналитика вводится по желанию, то есть пользователь сам выбирает, какой аналитикой он будет пользоваться.
В конфигурации можно вести учет оборудования находящегося как во внутреннем так и во внешнем ремонте. Для этого существуют документы: Начало ремонта (комплектующие уходят во ремонт, который осуществляет выбранный подрядчик, или на внутренний склад ремонта), Окончание ремонта (возврат отремонтированных комплектующих), причем при быстром ремонте для регистрации возможен ввод только документа окончания.
Для отслеживания комплектующих находящихся или бывших в ремонте, предназначен отчет по ремонту, в котором можно отследить как оборудование находящееся в ремонте, так и суммы потраченные на внешний ремонт.
Для реализации потребности ИТ отдела в отслеживании заказов на приобретение оборудования, в конфигурацию включен контур по заказам поставщикам. Для ввода заявок в конфигурации используется документ заявки поставщикам, который может быть трех видов:
ИТ заявка: предназначена для учета потребностей в покупке оборудования.
Заявка поставщикам: документ начала тендера по закупке комплектующих, отправляется участвующим в тендере поставщикам.
Утвержденная заявка: заявка конкретному поставщику на покупку комплектующих.
Заявки могут быть зарегистрированы на комплектующие, расходные материалы или услуги. Для отслеживания выполнения заявок поставщиками используется специальный отчет.
Для учета пользователей в программе разработан блок документов назначения, перевода, и выбытия пользователей. Если строгий документированный учет пользователей не нужен, то можно изменять пользователей у рабочих мест вручную.
Учет заявок пользователей одна из важных задач ИТ отдела, для их учет и был специально разработан этот блок, с помощью которого можно учитывать заявки поступившие от пользователей, а также следить за их исполнением.
Для многих объектов системы актуально учитывать их дополнительные свойства, которые могут быть определены самим пользователем. Например, элемент справочника комплектующие типа монитор может имеет свойства диагональ, стандарты безопасности, у жестких дисков полезно знать их размер и скорость вращения дисков. Для того чтобы сделать конфигурацию гибкой и удобной был реализован механизм дополнительных свойств.
Взаимодействия с контрагентами в конфигурации, такие как покупка, заявки на поставку, ремонт, можно учитывать в разрезе договоров.
Данная возможность используется для печати в актах документов списания, поступления и перемещения. Можно ввести документ "Назначение комиссии", чтобы при печати актов, члены комиссии бралась из него.
Выгрузки данных осуществляется в файлы экспорта данных DBF (данный формат был выбран благодаря тому, что его понимают большинство программ работающих с базами данных, для просмотра используйте Excel), что можно использовать для анализа данных во внешних программах, а также при необходимости перехода на другие программы учета позволит легко выгрузить всю необходимую информацию из конфигурации.
Загрузка прайс-листов поставщиков. После того как прайс лист загружен, номенклатуру из него можно подбирать в документы поступление и заказ поставщику. При подборе можно выбирать тип цены, по которой товары покупаются у поставщика.
Множество других решений реализовано в программе, вот только некоторые из них:
 механизм регистрации печатных форм. Не изменяя конфигурации можно добавить практически любую печатную форму на справочник (элемент или форму списка), документ или журнал;
 удобный поиск в справочниках конфигурации по наиболее важным реквизитам, который в отличие от стандартного поиска показывает сразу все элементы, которые удовлетворяют строке поиска;
 настройка колонок форм списков справочников, табличных частей документов и журналов. Пользователь сам может настраивать список отображаемых колонок, а также выбирать какая колонка будет активной при открытии.

1.3 Выбор и обоснование варианта реализации задачи

Так или иначе, всем приходится сталкиваться с задачей учета компьютерной техники в своей компании. Решить эту проблему можно по-разному.
Вариант первый – не учитывать совсем. При кажущейся простоте решения это чревато проблемами в дальнейшем. Во-первых, рано или поздно придется отчитываться за имеющиеся в наличии материальные ценности. Во-вторых, владение актуальной информацией об используемом аппаратном и программном обеспечении позволяет вовремя выполнять замену устаревшего и вышедшего из строя оборудования, планировать закупку техники и программных лицензий, быстрее выполнять работы по обслуживанию заявок, поступающих от пользователей в отдел IT.
Вариант второй – использовать для учета средства офисных приложений. Например, вести таблицу в MS Excel или другом табличном редакторе. Плюсы: тривиальное решение, требующее только навыков в использовании табличного редактора. Минусы: необходимость вводить все данные вручную, трудности при обновлении, отслеживании изменений в конфигурации оборудования. Хорошо, если в сети 10-20 компьютеров. Гораздо хуже обстоит дело, если имеется крупная сеть свыше 500 компьютеров. В этом случае отследить все производимые изменения затруднительно.
Несколько лучше обстоят дела, когда вместо табличного редактора используется программа на базе популярной системы управления базами данных, например 1С. В этом случае значительно облегчен поиск данных, производится проверка дублирования записей, имеются средства построения различных отчетов. Но в целом эта система не избавлена от главного недостатка – необходимости вручную собирать информацию.
И, наконец, третий вариант – воспользоваться программой для автоматического сбора информации об аппаратной конфигурации компьютеров с последующим занесением в базу данных. Этот вариант имеет следующие преимущества: сбор конфигурации производится автоматически и требует лишь небольшого редактирования в дальнейшем. Хранение информации в формате базы данных значительно облегчает последующее построение отчетов. Автоматическое обновление информации о конфигурациях компьютеров позволяет повысить оперативность при работе с базой данных.
АИС обычно приобретаются на достаточно долгий срок (среднее время «жизни» АИС – около 10 лет, но это не предел – во многих компаниях используются системы с гораздо большим «стажем» работы, правда, и обрастающими за это время новыми возможностями). Чтобы система автоматизации приносила ожидаемый эффект, она должна соответствовать данному предприятию – его возможностям, уровню развития и т.д. Стоимость АИС для небольшой фирмы не так уж и мала.
Несмотря на то, что в настоящее время существует множество готовых решений в области автоматизации инвентарного учета на предприятии и даже специализированные системы для автоматизации учета компьютерное техники, в этих системах реализованы также десятки других задач, которые не все найдут свое применение на конкретном предприятии в силу специфики его деятельности.
Критериев выбора систем автоматизации, как и многих других достаточно сложных и дорогих товаров (например, автомобилей), существует, конечно же, много. Какие-то из них крайне важны, какие-то могут отражать очень индивидуальные потребности. В подобных ситуациях следует во многом ориентироваться на «здравый смысл», а также иметь в виду некоторые ключевые моменты, носящие специальный характер.
Выбирая систему автоматизации, стоит обратить внимание на следующее:
 что система автоматизации может делать, или какова ее функциональность;
 во что обойдется приобретение системы, запуск ее в эксплуатацию и поддержание в рабочем состоянии, т.е. какова ее совокупная стоимость владения (крайне важно знать именно общую стоимость, а не просто цену программного обеспечения).
 есть ли гарантии успешного завершения проекта внедрения и полноценного ввода системы в эксплуатацию;
 что у системы «внутри» и, следовательно, насколько она надежна, долговечна, производительна, в конце концов, современна;
 какова эффективность и возможные сроки окупаемости системы;
 уровень и качество сервиса в послепродажный период;
 возможность сопровождать и развивать систему силами специалистов самой фирмы;
 каковы перспективы системы, будет ли она развиваться и поддерживаться поставщиком в будущем [1].
Очень важно сначала выявить реальные потребности фирмы.
Определить реальные потребности фирмы в автоматизации – дело не простое. Очень хорошо, если на фирме разработан план развития на несколько лет вперед, в котором определена роль информационных технологий и описана последовательность создания корпоративной автоматизированной системы управления. Такой продуманный подход дает наибольшую отдачу, существенно снижает риск выбрать «не ту» АИС и избежать проблем так называемой «лоскутной» автоматизации. При этом в качестве первоочередных задач может рассматриваться автоматизация наиболее критичных на данном этапе видов деятельности («узких» мест, от которых существенно зависит жизнь фирмы) или наиболее трудоемких при обработке традиционным способом (среди последних – например, бухгалтерский и налоговый учет, бюджетирование, расчет зарплаты, и др.) [2].
Таким образом, для реализации задачи учета компьютерной техники выбран вариант реализации посредством разработки программного комплекса автоматизированного учета и инвентаризации компьютерной техники, который учитывает специфику процесса обработки информации в указать организацию.

1.4 Цели и задачи автоматизации

Назначением реализации программного комплекса является автоматизированный учет и инвентаризация компьютерной техники, в рамках данного дипломного проекта подлежат разработке следующие функции:
 учет компьютерного оборудования по рабочим местам, рабочих мест по подразделениям, производителей, а также поставщиков компьютерной техники;
 оформление и учет прихода компьютерной техники;
 перемещение компьютерного оборудования с одного рабочего места на другое;
 ведение истории обслуживания рабочего места;
 ведение истории обслуживания и истории перемещения по рабочим местам каждого комплектующего;
 учет компьютерного оборудования на складе и списанного, а также оборудования общего пользования (копиры, принтеры и т.д.);
 быстрый поиск данных о выбранном комплектующем на рабочем месте;
 задание для каждого комплектующего произвольного набора характеристик и параметров;
 формирование следующей отчетности:
 паспорт устройства;
 список инвентарных номеров;
 список компьютерной техники по рабочим местам;
 накладная на внутреннее перемещение объектов основных средств;
 список рабочих мест;
 список оборудования на рабочем месте;
 история обслуживания рабочего места;
 история обслуживания комплектующего;
 история перемещения рабочего места.


2 Техническое задание

2.1 Основание для разработки

Разработка программного обеспечения производится на основании заказа от указать предприятие. На основании этого была сформулирована тема дипломного проектирования, в последствии утвержденная кафедрой АСУ ТУСУР.

2.2 Назначение разработки

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

2.3 Требования к программе

2.3.1 Требования к функциональным характеристикам

Необходимо разработать программный комплекс автоматизированного учета и инвентаризации компьютерной техники.
Данная система должна обеспечивать следующие основные функции:
 учет компьютерного оборудования по рабочим местам, рабочих мест по подразделениям, производителей, а также поставщиков компьютерной техники;
 оформление и учет прихода компьютерной техники;
 перемещение компьютерного оборудования с одного рабочего места на другое;
 ведение истории обслуживания рабочего места;
 ведение истории обслуживания и истории перемещения по рабочим местам каждого комплектующего;
 учет компьютерного оборудования на складе и списанного, а также оборудования общего пользования (копиры, принтеры и т.д.);
 быстрый поиск данных о выбранном комплектующем на рабочем месте;
 задание для каждого комплектующего произвольного набора характеристик и параметров;
 формирование следующей отчетности:
 паспорт устройства;
 список инвентарных номеров;
 список компьютерной техники по рабочим местам;
 накладная на внутреннее перемещение объектов основных средств;
 список рабочих мест;
 список оборудования на рабочем месте;
 история обслуживания рабочего места;
 история обслуживания комплектующего;
 история перемещения комплектующего.
Автоматизированная система должна быть реализована в рамках локальной архитектуры.
Система должна иметь удобный интерфейс, предоставляющий наиболее гибкий способ просмотра, добавления, редактирования и удаления данных.

2.3.2 Требования к надежности

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

2.3.3 Требования к составу и параметрам технических средств

Минимальные необходимые требования для нормального функционирования системы: персональный компьютер на базе процессора Intel Celeron с тактовой частотой 400MHz, 256 МБ оперативной памяти, жесткий диск 10 Гб, VGA-совместимый дисплей (рекомендуется SVGA-дисплей).

2.3.4 Требования к информационной и программной совместимости

Программа должна быть разработана, как Windows-приложение. Файл данных создаётся в формате Microsoft Access 2000.
Сама разработка ведётся в среде визуального программирования Delphi 7.0, обеспечивающей создание надёжного приложения для работы в операционных системах Windows 98 и выше.

2.4 Требования к программной документации


Разрабатываемый проект должен сопровождаться документацией, в составе которой будут учтены следующие пункты:
– техническое задание;
– описание программы;
– описание применения;
– листинги программ, результаты работы.
2.5 Стадии и этапы разработки

Автоматизированная система должна разрабатываться в следующем порядке:
а) анализ предметной области;
б) разработка технического задания;
в) освоение программных средств;
г) проектирование системы;
д) разработка приложения;
е) оформление пояснительной записки.

2.6 Порядок контроля и приемки

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

3 Проектирование системы

3.1 Инфологическое проектирование системы

Технология создания информационных систем предъявляет особые требования к методикам реализации и программным инструментальным средствам. Реализацию проектов по созданию информационных систем принято разбивать на стадии анализа (прежде чем создавать информационных систем, необходимо понять и описать бизнес-логику предметной области), проектирования (необходимо определить модули и архитектуру будущей системы), непосредственного кодирования, тестирования и сопровождения [3].
Сущность структурного подхода к разработке информационных систем заключается в ее декомпозиции (разбиении) на автоматизируемые функции: система разбивается на функциональные подсистемы, которые в свою очередь делятся на подфункции, подразделяемые на задачи и так далее. Процесс разбиения продолжается вплоть до конкретных процедур. При этом автоматизируемая система сохраняет целостное представление, в котором все составляющие компоненты взаимоувязаны. Основные этапы, на которые разбивается процесс проектирования информационной системы, следующие:
– Концептуальное проектирование – сбор, анализ и редактирование требований к данным (обследование предметной области, изучение ее информационной структуры, выявление всех фрагментов, каждый из которых характеризуется пользовательским представлением, информационными объектами и связями между ними, процессами над информационными объектами, моделирование и интеграция всех представлений).
– Логическое проектирование – преобразование требований к данным в структуры данных. На выходе получаем СУБД-ориентированную структуру базы данных и спецификации прикладных программ.
– Физическое проектирование – определение особенностей хранения данных, методов доступа и т.д. [4]
Основными конструктивными элементами моделей являются сущности, связи между ними и их свойства (атрибуты). Сущность – любой различимый объект (объект, который мы можем отличить от другого), информацию о котором необходимо хранить в базе данных. Логическая структура базы данных – это описание состава, типа и длины информационных единиц базы данных и связей между ними.
Сущности и связи модели данных представляются в виде реляционной таблицы (отношения). Отношение, соответствующее сущности, содержит атрибуты (столбцы), являющиеся атрибутами сущности и описывающие сущность (объект). Атрибут или множество атрибутов, которые однозначно определяют объект называются ключом.
Удобно представлять отношение как таблицу, где каждая строка есть кортеж, и каждый столбец соответствует одному компоненту. Столбцы при этом называются атрибутами и им присваивают имена. Список имён атрибутов называется схемой отношения. Совокупность схем отношений, используемых для представления информации, называются схемой базы данных, а текущие значения соответствующих отношений – базой данных [5].
Процесс построения инфологической модели состоит из следующих шагов:
– определение сущностей;
– определение зависимостей между сущностями;
– задание первичных и альтернативных ключей;
– определение атрибутов сущностей;
– приведение модели к требуемому уровню нормальной формы.
Логический уровень представления модели – это абстрактный взгляд на данные, на нем данные представляются так, как выглядят в реальном мире. Логическая модель данных является универсальной и никак не связана с конкретной реализацией СУБД. Физическая модель данных, напротив, зависит от конкретной СУБД, фактически являясь отображением системного каталога. В физической модели содержится информация о всех объектах БД. Поскольку стандартов на объекты БД не существует (например, нет стандарта на типы данных), физическая модель зависит от конкретной реализации СУБД. Следовательно, одной и той же логической модели могут соответствовать несколько разных физических моделей [5].
Современные объектно-ориентированные CASE-средства позволяют эффективно решать задачи проектирования приложений. Среди таких пакетов – Rational Rose, Together Control Center, BPWin, ERWin, Model Mart, Silverrun Business Process Modeller, Process Analyst.
Для инфологического проектирования базы данных было выбрано CASE средство Computer Associates ERwin 4.0.
Создание модели данных, как правило, начинается с создания логической модели. После описания логической модели, проектировщик может выбрать необходимую СУБД и ERwin автоматически создаст соответствующую физическую модель. На основе физической модели ERwin может сгенерировать системный каталог СУБД или соответствующий SQL-скрипт. Этот процесс называется прямым проектированием (Forward Engineering). Тем самым достигается масштабируемость – создав одну логическую модель данных, можно сгенерировать физические модели под любую поддерживаемую ERwin СУБД. С другой стороны, ERwin способен по содержимому системного каталога или SQL-скрипту воссоздать и физическую, и логическую модель данных (Reverse Engineering). На основе полученной логической модели данных можно сгенерировать физическую модель для другой СУБД и затем сгенерировать ее системный каталог. Следовательно, ERwin позволяет решить задачу по переносу структуры данных с одного сервера на другой [4].
Различают три уровня логической модели, отличающихся по глубине представления информации о данных:
– диаграмма сущность-связь (Entity Relationship Diagram, ERD);
– модель данных, основанная на ключах (Key Based model, KB);
– полная атрибутивная модель (Fully Attributed model, FA).
Диаграмма сущность-связь представляет собой модель данных верхнего уровня. Она включает сущности и взаимосвязи, отражающие основные бизнес-правила предметной области. Такая диаграмма не слишком детализирована, в нее включаются основные сущности и связи между ними, которые удовлетворяют основным' требованиям, предъявляемым к ИС.
Диаграмма сущность-связь может включать связи многие-ко-многим и не включать описание ключей. Как правило, ERD используется для презентаций и обсуждения структуры данных с экспертами предметной области.
Модель данных, основанная на ключах, – более подробное представление данных. Она включает описание всех сущностей и первичных ключей и предназначена для представления структуры данных и ключей, которые соответствуют предметной области.
Полная атрибутивная модель – наиболее детальное представление структуры данных: представляет данные в третьей нормальной форме и включает все сущности, атрибуты и связи.
Различают два уровня физической модели:
– трансформационная модель (Transformation Model);
– модель СУБД (DBMS Model).
Физическая модель содержит всю информацию, необходимую для реализации конкретной БД. Трансформационная модель содержит информацию для реализации отдельного проекта, который может быть частью общей ИС и описывать подмножество предметной области. ERwin поддерживает ведение отдельных проектов, позволяя проектировщику выделять подмножество модели в виде предметных областей (Subject Area). Трансформационная модель позволяет проектировщикам и администраторам БД лучше представлять, какие объекты БД хранятся в словаре данных, и проверить, насколько физическая модель данных удовлетворяет требованиям к ИС [4].
Модель СУБД автоматически генерируется из трансформационной модели и является точным отображением системного каталога СУБД. ERwin непосредственно поддерживает эту модель путем генерации системного каталога.
В проектируемой модели использовалась логико-физическая модель.

3.1.1 Логическое проектирование

В разрабатываемой системе можно выделить следующие сущности: Типы, Модели, Производители, Параметры, ПараметрыМодели, Устройства, Размещение, Приход, Поставщики, Сотрудники, Подразделения, РабМесто, ИсторияОбслужРабМеста, ИсторияОбслужУстройства. ER-диаграмма системы на логическом уровне представлена на рисунке 3.1


Рисунок 3.1 – ER-диаграмма системы на логическом уровне

Данные в базе должны обладать свойством целостности. Под целостностью понимается правильность данных в любой момент времени. Поддержание целостности базы данных может рассматриваться как защита данных от неверных изменений или разрушения (этот вопрос не относится к незаконным изменениям и разрушениям, которые являются проблемой безопасности).
Выделяют три группы правил целостности [6].
1. Целостность по сущностям. Объекту или сущности реального мира в реляционных базах данных соответствуют кортежи отношений. Требование состоит в том, что любой кортеж любого отношения отличим от любого другого кортежа этого отношения, т.е. другими словами, любое отношение должно обладать первичным ключом. Это требование автоматически удовлетворяется, если в системе не нарушаются базовые свойства отношений. Первичный ключ – это минимальный набор атрибутов, по значениям которых можно однозначно найти требуемый экземпляр сущности.
2. Целостность по ссылкам. База данных не должна содержать несогласованных значений внешних ключей. Правило утверждает, что если В ссылается на А, тогда А должно существовать. Говорят, что отношение, в котором определен внешний ключ, ссылается на соответствующее отношение, в котором такой же атрибут является первичным ключом. Требование целостности по ссылкам, или требование внешнего ключа состоит в том, что для каждого значения внешнего ключа, появляющегося в ссылающемся отношении, в отношении, на которое ведет ссылка, должен найтись кортеж с таким же значением первичного ключа, либо значение внешнего ключа должно быть неопределенным (т.е. ни на что не указывать).
3. Целостность, определяемая пользователем. У пользователя (или у разработчика) базы данных должна быть возможность определить, какие операции должны быть запрещены, а какие разрешены, нужны ли для разрешенных операций компенсирующие, и если да, то какие (т.е. возможность каскадного удаления).
В разрабатываемой структуре базы данных учтены основные правила целостности. Каждая сущность идентифицируется уникальным ключом, и разработана система внешних ключей. База данных не содержит несогласованных значений внешних ключей, то есть при работе с записями происходит каскадное обновление связанных полей и каскадное удаление связанных записей.
Целостность, определяемая пользователем, поддерживается ограничениями в таблицах базы данных на ввод неотрицательных значений, а также обеспечением выбора значений внешних ключей из списков без разрешения варианта ввода недопустимого значения.
Нормализация предусматривает определение требуемых атрибутов с последующим созданием из них нормализованных таблиц, основанных на функциональных зависимостях между этими атрибутами. Отношение, в котором на пересечении каждой строки и каждого столбца содержится атомарное (или единственное) значение, находится в 1-й нормальной форме. При этом необходимо, чтобы отношение имело первичный ключ.
Вторая нормальная форма применяется к отношениям с составными ключами, т.е. к таким отношениям, первичный ключ которых состоит из двух или больше атрибутов. Отношение с первичным ключом на основе единственного атрибута всегда находится в 2-й нормальной форме. Отношение, которое находится в 1-й нормальной форме и каждый атрибут которого, не входящий в состав первичного ключа, зависит только от полного значения ключа и не зависит ни от какого отдельного атрибута, входящего в состав первичного ключа, имеет вторую нормальную форму (каждый неключевой атрибут функционально полно зависит от ключа).
Отношение находится в 3-й нормальной форме, если оно представлено в 2-й нормальной форме и не имеет не входящих в первичный ключ атрибутов, которые находились бы в транзитивной функциональной зависимости от этого первичного ключа.
Разработанная модель находится в 3-й нормальной форме, так как:
– атрибуты сущностей являются атомарными;
– каждый неключевой атрибут функционально полно зависит от первичного ключа;
– в модели отсутствуют транзитивные зависимости неключевых атрибутов от ключа.

3.1.2 Физическое проектирование

Этап физического проектирования базы данных предусматривает принятие разработчиком окончательного решения о способах реализации создаваемой базы. Поэтому физическое проектирование обязательно производится с учетом всех особенностей выбранной СУБД.
В качестве СУБД выбран Microsoft Access 2000.
ER-диаграмма системы на физическом уровне представлена на рисунке 3.2.


Рисунок 3.2 – ER-диаграмма системы на физическом уровне

Физическое описание модели удобнее всего представить в виде таблиц. База данных проекта содержит таблицы, названия которых соответствуют именам сущностей инфологической модели. Структура БД описана в таблице 3.1.
Таблица 3.1  Описание таблиц базы данных

ИсторияОбслужРабМеста
Наименование Тип Первичный ключ Внешний ключ
Тип Text(50) Нет Нет
СотрудникID Long Integer Нет Да
Описание Text(255) Нет Нет
ID AutoNumber Да Нет
Дата Date/Time Нет Нет
РабМестоID Long Integer Нет Да

ИсторияОбслужУстройства
Наименование Тип Первичный ключ Внешний ключ
Тип Text(50) Нет Нет
СотрудникID Long Integer Нет Да
Описание Text(255) Нет Нет
ID AutoNumber Да Нет
Дата Date/Time Нет Нет
ИнвN Text(20) Нет Да

Модели
Наименование Тип Первичный ключ Внешний ключ
ПроизводительID Long Integer Нет Да
Профилактика Text(15) Нет Нет
Амортизация Text(15) Нет Нет
ID AutoNumber Да Нет
Наименование Text(255) Нет Нет
ТипID Long Integer Нет Да

 


Продолжение таблицы 3.1

Параметры
Наименование Тип Первичный ключ Внешний ключ
Наименование Text(100) Нет Нет
ID AutoNumber Да Нет

ПараметрыМодели
Наименование Тип Первичный ключ Внешний ключ
ПараметрID Long Integer Да Да
Значение Text(100) Нет Нет
МодельID Long Integer Да Да

Подразделения
Наименование Тип Первичный ключ Внешний ключ
Наименование Text(50) Нет Нет
Склад Да/Нет Нет Нет
ID AutoNumber Да Нет

Поставщики
Наименование Тип Первичный ключ Внешний ключ
Реквизиты Text(100) Нет Нет
Телефоны Text(30) Нет Нет
ИНН Text(15) Нет Нет
КПП Text(15) Нет Нет
Шифр AutoNumber Да Нет
Адрес Text(100) Нет Нет
Наименование Text(100) Нет Нет

 

 

 

 


Продолжение таблицы 3.1

Приход
Наименование Тип Первичный ключ Внешний ключ
СчетФактураДата Date/Time Нет Нет
СчетФактура Text(5) Нет Нет
Накладная Text(5) Нет Нет
НакладнаяДата Date/Time Нет Нет
СотрудникID Long Integer Нет Да
Шифр AutoNumber Да Нет
СчетДата Date/Time Нет Нет
ПоставщикID Long Integer Нет Да
Счет Text(5) Нет Нет

Производители
Наименование Тип Первичный ключ Внешний ключ
Производитель Text(50) Нет Нет
Сайт Text(100) Нет Нет
ID AutoNumber Да Нет

РабМесто
Наименование Тип Первичный ключ Внешний ключ
IPАдрес Text(15) Нет Нет
СетевоеИмя Text(50) Нет Нет
Домен Text(15) Нет Нет
ПО Text(255) Нет Нет
ID AutoNumber Да Нет
СотрудникID Long Integer Нет Да
ПодразделениеID Long Integer Нет Да
Наименование Text(255) Нет Нет

 

 

 

Продолжение таблицы 3.1

Размещение
Наименование Тип Первичный ключ Внешний ключ
ИнвN Text(20) Да Да
Дата Date/Time Да Нет
РабМестоID Long Integer Да Да

Сотрудники
Наименование Тип Первичный ключ Внешний ключ
ФИО Text(30) Нет Нет
ID AutoNumber Да Нет

Типы
Наименование Тип Первичный ключ Внешний ключ
Наименование Text(50) Нет Нет
ID AutoNumber Да Нет

Устройства
Наименование Тип Первичный ключ Внешний ключ
Дата Date/Time Нет Нет
ПриходID Long Integer Нет Да
Цена Currency Нет Нет
ИнвN Text(20) Да Нет
СерийныйN Text(25) Нет Нет
МодельID Long Integer Нет Да


3.2 Обоснование проектных решений по информационному обеспечению

Для обеспечения хранения данных можно использовать локальную или распределенную базу данных. В данном дипломном проекте целесообразнее использовать локальную базу данных, применение которой позволит уменьшить время работы с базой данных и уменьшить сложность настройки прикладного программного обеспечения.
Для обновления данных, хранящихся в базе и поддержания целостности данных целесообразно использовать типовые процедуры обновления данных. Их преимущество состоит в том, что они функционируют непосредственно в базе данных, то есть в серверной части приложения, поэтому скорость их работы достаточно высока. При изменении пользователем каких-либо связных полей в клиентской части системы (в программе), в серверной части системы (базе данных) запускаются типовые процедуры обновления данных, поддерживающие целостность базы.
Предполагаются следующие информационные решения, касающиеся разрабатываемого программного средства:
 сбор исходной информации, вводимой в базу данных, осуществляется локально, т.е. информация для базы данных может быть введена с одного АРМ, где установлена программа;
 ввод информации в базу данных осуществляется вручную с бумажных носителей. Информация записывается в базу автоматически;
 обработка данных осуществляется в диалоговом режиме;
 пользователь получает информацию из базы данных на экран ПЭВМ, кроме того, информация может выдаваться на принтер в случае распечатки различных стандартных форм;
 резервирование базы данных осуществляется при помощи сохранения базы данных на каком-либо магнитном носителе, а восстановление – при помощи копирования базы данных с магнитного носителя на сервер в ту папку, где должна находиться база данных;
 база данных состоит из одного файла, имеющего расширение «.mdb» (формат Microsoft Access 2000).
Структура пакета прикладных программ следующая [2]:
 Управляющий модуль, который предназначен для преобразования программы на входном языке (ПВЯ) в последовательность вызовов обрабатывающих модулей  формирование меню пользователя и обеспечение соединения пунктов меню с обрабатывающими и обслуживающими модулями;
 Обрабатывающие и одновременно обслуживающие модули, которые предназначены для взаимодействия пользователя с пакетом управляющих модулей, а также для реализации алгоритма решения задач, т.е. для преобразования данных, составляющих информационную базу пакетов.
Обрабатывающие модули, для реализации алгоритма решения задач, т.е. для преобразования данных, составляющих информационную базу пакетов.
Структура пакета прикладных программ представлена на рисунке 3.3.

 

 

 

 

 

 

 

Рисунок 3.3  Структура пакета прикладных программ

Технология внутримашинной организации задается последовательностью реализуемых процедур  схем взаимосвязи программных модулей и информационных массивов. Такая схема представляет собой декомпозицию общего процесса решения задачи на отдельные процедуры преобразования массивов, именуемыми модулями (это  ввод, контроль, перезапись информации с одного носителя на другой, сортировка, уплотнение данных, редактирование, накопление, вывод на печать и т.п.). Структуру программ можно описать основными блоками, представленными на рисунке 3.4 [2].

 

 

 

 


Рисунок 3.4  Схема основных модулей программы

Модуль «Главное меню» предназначен для запуска основных процедур программы и завершения работы с программой.
Модуль работы со справочниками включает в себя справочники:
 типы устройств;
 параметры устройств;
 сотрудники;
 поставщики.
Назначение данного модуля является поиск и подготовка справочной информации.
Модуль «Формирование входной информации» предназначен для ввода первичных данных и просмотра ранее занесенных. Данный модуль реализует задачи формирования номенклатуры компьютерной техники и ее прихода с помощью специальных форм.
Модуль «Формирование документов» выполняет функции формирования печатных форм. Отчеты формируются используя запросы, которые обрабатывают исходную информацию в соответствии с заданными параметрами пользователя.

3.3 Проектирование интерфейса пользователя

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


Рисунок 3.5 – Граф переходов экранных форм

3.4 Разработка алгоритмов

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


Рисунок 3.6  Приблизительный алгоритм ввода данных в базу.

3.5 Описание выходных документов

Формы выходных документов представлены в Приложении В.
Документ «Паспорт устройства» формируется для любого выбранного устройства и содержит данные о закупке данного компьютерного оборудования и его перемещении по рабочим местам пользователей.
Документ «Список инвентарных номеров» формируется на основе полного списка компьютерной техники, заданного пользователем, с учетом подразделения и рабочего места.
Документ «Список компьютерной техники по рабочим местам» формируется на основе полного списка компьютерной техники, заданного пользователем, с группировкой по рабочим местам.
Документ «Накладная на внутреннее перемещение объектов основных средств» формируется при перемещении выбранного устройства с одного рабочего места или склада на другое рабочее место, либо в списанное оборудование. Документ соответствует форме, утвержденной постановление Госкомстата России от 21.01.2003 №7.
Документ «Список рабочих мест» формируется на основе данных, введенных пользователем и включает все рабочие места в организации с указанием ip-адреса компьютера, домена/рабочей группы и сетевого имени компьютера.
Документ «Список оборудования на рабочем месте» формируется для выбранного рабочего места и включает полный список компьютерной техники, приписанной к данному месту.
Документ «История обслуживания рабочего места» содержит данные о выполненных работах и результатах с указанием сотрудника, выполнившего работу, для выбранного рабочего места.
Документ «История обслуживания комплектующего» содержит данные о перемещениях выбранного устройства, начиная со склада, по рабочим местам с указанием рабочего места, подразделения и даты перемещения.

4 Анализ целесообразности использования заданных средств разработки

4.1 Обоснование выбора СУБД

На сегодняшний день известно более двух десятков форматов данных настольных СУБД, однако наиболее популярными следует признать dBase, Paradox, FoxPro и Access.
Рассмотрим каждую из этих СУБД в отдельности.

dBase и Visual dBase

Первая промышленная версия СУБД dBase — dBase II (принадлежащая тогда компании Ashton-Tate, приобретенной позже компанией Borland) появилась в начале 80-х годов. Благодаря простоте в использовании, нетребовательности к ресурсам компьютера и, что не менее важно, грамотной маркетинговой политике компании-производителя этот продукт приобрел немалую популярность [7].
Хранение данных в dBase основано на принципе «одна таблица — один файл» (эти файлы обычно имеют расширение *.dbf). MEMO-поля и BLOB-поля (доступные в поздних версиях dBase) хранятся в отдельных файлах (обычно с расширением *.dbt). Индексы для таблиц также хранятся в отдельных файлах. При этом в ранних версиях этой СУБД требовалась специальная операция реиндексирования для приведения индексов в соответствие с текущим состоянием таблицы.
Формат данных dBase является открытым, что позволило ряду других производителей заимствовать его для создания dBase-подобных СУБД, частично совместимых с dBase по форматам данных. Например, весьма популярная некогда СУБД FoxBase (разработанная Fox Software, Inc. и ныне принадлежащая Microsoft) использовала формат данных dBase для таблиц, однако форматы для хранения MEMO-полей и индексов были своими собственными, несовместимыми с dBase.
После покупки dBase компанией Borland этот продукт, получивший впоследствии название Visual dBase, приобрел набор дополнительных возможностей, характерных для средств разработки этой компании и для имевшейся у нее другой настольной СУБД – Paradox. Среди этих возможностей были специальные типы полей для графических данных, поддерживаемые индексы, хранение правил ссылочной целостности внутри самой базы данных, а также возможность манипулировать данными других форматов, в частности серверных СУБД, за счет использования BDE API и SQL Links [6].
В настоящее время Visual dBase принадлежит компании dBase, Inc. Его последняя версия — Visual dBase 7.5 имеет следующие возможности:
- Средства манипуляции данными dBase и FoxPro всех версий.
- Ядро доступа к данным Advantage Database Server фирмы Extended Systems и ODBC-драйвер для доступа к данным этой СУБД.
- Средства визуального построения запросов.

Paradox

В конце 80-х — начале 90-х годов Paradox, принадлежавший тогда компании Borland International, был весьма популярной СУБД, в том числе и в нашей стране, где он одно время занимал устойчивые позиции на рынке средств разработки настольных приложений с базами данных [6].
Принцип хранения данных в Paradox сходен с принципами хранения данных в dBase — каждая таблица хранится в своем файле (расширение *.db), MEMO- и BLOB-поля хранятся в отдельном файле (расширение *.md), как и индексы (расширение *.px).
Однако, в отличие от dBase, формат данных Paradox не является открытым, поэтому для доступа к данным этого формата требуются специальные библиотеки. Например, в приложениях, написанных на C или Pascal, использовалась некогда популярная библиотека Paradox Engine, ставшая основой Borland Database Engine (BDE). Эта библиотека используется ныне в приложениях, созданных с помощью средств разработки Borland (Delphi, C++Builder), в некоторых генераторах отчетов (например, Crystal Reports) и в самом Paradox. Существуют и ODBC-драйверы к базам данных, созданным различными версиями этой СУБД.

Microsoft FoxPro и Visual FoxPro

FoxPro ведет свое происхождение от настольной СУБД FoxBase фирмы Fox Software. Разрабатывая FoxBase в конце 80-х годов, эта компания преследовала цель создать СУБД, функционально совместимую с dBase с точки зрения организации файлов и языка программирования, но существенно превышающую ее по производительности. Одним из способов повышения производительности являлась более эффективная организация индексных файлов, нежели в dBase, – по формату индексных файлов эти две СУБД несовместимы между собой [7].
По сравнению с аналогичными версиями dBase, FoxBase и более поздняя версия этого продукта, получившая название FoxPro, предоставляли своим пользователям несколько более широкие возможности, такие как использование деловой графики, генерация кода приложений, автоматическая генерация документации к приложениям и т.д.
Впоследствии этот продукт был приобретен компанией Microsoft. Его последние версии (начиная с версии 3.0, выпущенной в 1995 году) получили название Visual FoxPro. С каждой новой версией этот продукт оказывался все более и более интегрирован с другими продуктами Microsoft, в частности с Microsoft SQL Server, – в состав Visual FoxPro в течение нескольких последних лет входят средства переноса данных FoxPro в SQL Server и средства доступа к данным этого сервера из Visual FoxPro и созданных с его помощью приложений.
Последняя версия этого продукта — Visual FoxPro 6.0, доступна и отдельно, и как составная часть Microsoft Visual Studio 6.0. Отличительной особенностью этой настольной СУБД от двух рассмотренных выше является интеграция этого продукта с технологиями Microsoft, в частности поддержка COM (Component Object Model — компонентная объектная модель, являющаяся основой функционирования 32-разрядных версий Windows и организации распределенных вычислений в этой операционной системе), интеграция с Microsoft SQL Server, возможности создания распределенных приложений, основанных на концепции Windows DNA (Distributed interNet Applications).
Visual Fox Pro 6.0 предоставляет следующие возможности:
- Средства создания COM-объектов и объектов для Microsoft Transaction Server, позволяющих создавать масштабируемые многозвенные приложения для обработки данных.
- Средства доступа к данным серверных СУБД, базирующиеся на использовании OLE DB (набор COM-интерфейсов, позволяющий осуществить унифицированный доступ к данным из разнообразных источников, в том числе из нереляционных баз данных и иных источников, например Microsoft Exchange).
- Средства доступа к данным Microsoft SQL Server и Oracle, включая возможность создания и редактирования таблиц, триггеров, хранимых процедур
- Средства отладки хранимых процедур Microsoft SQL Server.
- Средство визуального моделирования компонентов и объектов, являющиеся составными частями приложения – Visual Modeller.
- Средство для управления компонентами приложений, позволяющее осуществлять их повторное использование.
Итак, тенденции развития этого продукта очевидны: из настольной СУБД Visual FoxPro постепенно превращается в средство разработки приложений в архитектуре «клиент/сервер» и распределенных приложений в архитектуре Windows DNA. Впрочем, эти тенденции в определенной степени характерны для всех наиболее популярных настольных СУБД – мы уже убедились, что и dBase, и Paradox также позволяют осуществлять доступ к наиболее популярным серверным СУБД.

Microsoft Access

В отличие от Visual FoxPro, фактически превратившегося в средство разработки приложений, Access ориентирован в первую очередь на пользователей Microsoft Office, в том числе и не знакомых с программированием. Это, в частности, проявилось в том, что вся информация, относящаяся к конкретной базе данных, а именно таблицы, индексы (естественно, поддерживаемые), правила ссылочной целостности, бизнес-правила, список пользователей, а также формы и отчеты хранятся в одном файле, что в целом удобно для начинающих пользователей.
Последняя версия этой СУБД – Access 2003 входит в состав Microsoft Office 2003 Professional, а также доступна как самостоятельный продукт. В состав Access 2003 входят [8]:
- Средства манипуляции данными Access и данными, доступными через ODBC (последние могут быть «присоединены» к базе данных Access).
- Средства создания форм, отчетов и приложений; при этом отчеты могут быть экспортированы в формат Microsoft Word или Microsoft Excel, а для создания приложений используется Visual Basic for Applications, общий для всех составных частей Microsoft Office.
- Средства доступа к данным серверных СУБД через OLE DB.
- Средства создания клиентских приложений для Microsoft SQL Server.
- Средства администрирования Microsoft SQL Server.
Access – это, прежде всего, система управления базами данных (СУБД). Как и другие продукты этой категории, она предназначена для хранения и поиска данных, представления информации в удобном виде и автоматизации часто повторяющихся операций (таких, как ведение счетов, учет, планирование и т.п.). С по¬мощью Access можно разрабатывать простые и удобные формы ввода данных, а также осуществлять обработку данных и выдачу сложных отчетов.
Access  мощное приложение Windows. Впервые производительность СУБД органично сочетается с теми удобствами, которые имеются в распоряжении пользователей Microsoft Windows. С помощью объектов OLE и компонентов Microsoft Office (Excel, Word, PowerPoint и Outlook) можно превратить Access в настоящую операционную среду баз данных. С помощью новых расширений для Internet можно создавать формы, которые будут напрямую взаимодействовать с данными из World Wide Web, и транслировать их в представление на языке HTML, обеспечивающее работу с та¬кими продуктами, как Internet Explorer и Netscape Navigator [8].
При всем этом Access  не просто СУБД. Как реляционная СУБД Access обеспечивает доступ ко всем типам данных и позволяет использовать одновременно несколько таблиц базы данных. При этом можно существенно упростить структуру данных, облегчая тем самым выполнение поставленных задач. Таблицу Access можно связать с данными, хранящимися на большой ЭВМ или на сервере. С дру¬гой стороны, можно использовать таблицы, созданные в среде Paradox или dBASE. Полученные результаты можно быстро и легко связать и объединить с данными из электронных таблиц Excel. Работая в среде Microsoft Office, пользователь получает в свое распоряжение полностью совместимые между собой Access и Word, Excel и PowerPoint.
Система Access  это набор инструментов конечного пользователя для управления базами данных. В ее состав входят конструкторы таблиц, форм, запросов и отчетов. Эту систему можно рассматривать и как среду разработки приложений. Используя макросы или модули для автоматизации решения задач, можно создавать ориентированные на пользователя приложения такими же мощными, как и приложения, написанные непосредственно на языках программирования. При этом они будут включать кнопки, меню и диалоговые окна.
В Access в полной мере реализовано управление реляционными базами данных. Система поддерживает первичные и внешние ключи и обеспечивает целостность данных на уровне ядра (что предотвращает несовместимые операции обновления или удаления данных). Кроме того, таблицы в Access снабжены средствами проверки допустимости данных, пре¬дотвращающими некорректный ввод вне зависимости от того, как он осуществляется, а каждое поле таблицы имеет свой формат и стандартные описания, что существенно облегчает ввод данных. Access поддерживает все необходимые типы полей, в том числе текстовый, числовой, счетчик, денежный, дата/время, MEMO, логический, гиперссылка и поля объектов OLE. Если в процессе специальной обработки в полях не оказывается никаких значений, система обеспечивает полную поддержку пустых значений.
Access специально спроектирован для создания многопользовательских приложений, где файлы базы данных являются разделяемыми ресурсами в сети.
Система Access поддерживает обработку транзакций с гарантией их целостности. Кроме того, предусмотрена защита на уровне пользователя, что позволяет контролировать доступ к данным отдельных пользователей и целых групп.
Одна из самых мощных возможностей Access одновременно является и наиболее важной. Отношения позволяют связать таблицы графически. Можно даже связывать таблицы, представляющие файлы разных типов (например, таблицу Access и таблицу dBASE). После подобного связывания таблицы выступают уже как одно целое, и теперь можно строить запросы применительно к любым данным в них. Можно выбирать конкретные поля, определять порядок сортировки, создавать вычисляемые выражения и вводить критерии отбора нужных записей. Можно отображать результаты выполнения запроса в виде таблицы, формы или отчета. От пользователя не требуется предварительной установки связей: вместо этого достаточно войти в конструктор запросов (например, когда требуется построить определенный отчет).
Основываясь на изложенных выше данных в качестве СУБД разрабатываемой системы был выбран Microsoft Access 2000.


4.2 Обоснование выбора языка программирования

Разработка интерфейса всегда являлась трудоемкой задачей отнимающей много времени у разработчиков. Однако в последние годы появились так называемые средства визуальной разработки приложений в значительной мере упростившие задачу разработки графического интерфейса пользователя. Сейчас на рынке программных продуктов предлагается довольно много разнообразных средств визуальной разработки приложений, ориентированных на разработку информационных систем. Все их можно условно разделить на два класса:
 специализированные средства — ориентированные исключительно на работу с вполне определенной СУБД и не предназначенные для разработки обычных приложений. не использующих базы данных. Примером средств такого рода может служить система Power Builder фирмы Sybase;
 универсальные средства, которые могут использоваться как для разработки информационных приложений, взаимодействующих с базами данных, так и для разработки любых других приложений, не использующих базы данных.
Из таких средств наибольшей известностью пользуются системы Borland Dеlрhi фирмы Borland‚ Visual Basic, Visual C++ фирмы Microsoft. Каждый из указанных классов имеет свои достоинства и недостатки, поэтому в общем случае трудно отдать предпочтение одному из них. В предлагаемом дипломном проекте в качестве средства разработки выбран продукт Borland Delphi, пользующийся большой популярностью. Delphi базируется на объектно-ориентированном языке Object Раsсal, который наилучшим образом подходит для учебных целей вследствие своей строгости и простоты. Кроме того, в Object Pascal в полной мере реализованы все основные концепции объектно-ориентированного программирования. О6ъектно-ориентированное программирование позволяет сделать любую систему более гибкой и динамичной, исключив необходимость в постоянном переписывании структуры базы данных и приложений. Главное достоинство объектно-ориентированного проектирования заключается в возможности повторно использовать ранее написанный код. Кроме того, объектные системы несут в себе возможность модификации и развития. Это положение позволяет начать проектирование будущей системы, не имея исчерпывающего представления о предметной области. Поскольку получение детальной информации о предметной области  процесс весьма трудоемкий, то применение объектно-ориентированного подхода позволит сократить сроки и уменьшить стоимость разработки системы [9].
Delphi  это комбинация нескольких важнейших технологий:
 высокопроизводительный компилятор в машинный код;
 объектно-ориентированная модель компонент;
 визуальное (а, следовательно, и скоростное) построение приложений из программных прототипов;
 масштабируемые средства для построения баз данных;
Компилятор, встроенный в Delphi, обеспечивает высокую производительность, необходимую для построения приложений. Еще до компиляции разработчик видит результаты своей работы  после подключения к источнику данных их можно видеть отображенными на форме, можно перемещаться по данным, представлять их в том или ином виде [9].
Основной упор объектно-ориентированной модели программных компонент в Delphi делается на максимальном использовании кода. Это позволяет разработчикам строить приложения весьма быстро из заранее подготовленных объектов, а также дает им возможность создавать свои собственные объекты для среды Delphi. Никаких ограничений по типам объектов, которые могут создавать разработчики, не существует. Все в Delphi написано на нем же, поэтому разработчики имеют доступ к тем же объектам и инструментам, которые использовались для создания среды разработки. В результате нет никакой разницы между объектами, поставляемыми Borland или третьими фирмами, и объектами, которые вы можете создать [9].
Cреда Delphi включает в себя полный набор визуальных инструментов для скоростной разработки приложений VCL  библиотека визуальных компонент, включает в себя стандартные объекты построения пользовательского интерфейса, объекты управления данными, графические объекты, объекты мультимедиа, диалоги и объекты управления файлами.
Объекты БД в Delphi основаны на SQL. В состав Delphi также включен Borland SQL Link, поэтому доступ к СУБД Oracle, Sybase, Informix и InterBase происходит с высокой эффективностью. Кроме того, Delphi включает в себя локальный сервер Interbase для того, чтобы можно было разработать расширяемые на любые внешние SQL-сервера приложения в офлайновом режиме.
Благодаря открытой компонентной архитектуре приложения, изготовленные при помощи Delphi, работают надежно и устойчиво. Delphi поддерживает использование уже существующих объектов, включая DLL, написанные на С и С++. Из готовых компонент работающие приложения собираются очень быстро. Кроме того, поскольку Delphi имеет полностью объектную ориентацию, разработчики могут создавать свои повторно используемые объекты для того, чтобы уменьшить затраты на разработку.
Delphi использует структурный объектно-ориентированный язык (Object Pascal), который сочетает с одной стороны выразительную мощь и простоту программирования. Программисты немедленно могут начать производить работающие приложения, и им не придется для этого изучать особенности программирования событий в Windows. Delphi полностью поддерживает передовые программные концепции включая инкапсуляцию, наследование, полиморфизм и управление событиями.
Delphi обладает мощнейшим, встроенным в редактор графическим отладчиком, позволяющим находить и устранять ошибки в коде. Можно устанавливать точки останова, проверить и изменить переменные, при помощи пошагового выполнения в точности понять поведение программы. Если же требуются возможности более тонкой отладки.
Компоненты, используемые при разработке в Delphi, встроены в среду разработки приложений и представляют из себя набор типов объектов, используемых в качестве фундамента при строительстве приложения. Этот костяк называется Visual Component Library (VCL). В VCL есть такие стандартные элементы управления, как строки редактирования, статические элементы управления, строки редактирования со списками, списки объектов. Еще имеются такие компоненты, которые ранее были доступны только в библиотеках третьих фирм: табличные элементы управления, закладки, многостраничные записные книжки. Все объекты разбиты на страницы по своей функциональности и представлены в палитре компонент.
VCL содержит специальный объект, предоставлющий интерфейс графических устройств Windows, и позволяющий разработчикам рисовать, не заботясь об обычных для программирования в среде Windows деталях.
Ключевой особенностью Delphi является возможность не только использовать визуальные компоненты для строительства приложений, но и создание новых компонент. Такая возможность позволяет разработчикам не переходить в другую среду разработки, а наоборот, встраивать новые инструменты в существующую среду. Кроме того, можно улучшить или полностью заменить существующие по умолчанию в Delphi компоненты.
Здесь следует отметить, что обычных ограничений, присущих средам визуальной разработки, в Delphi нет. Сам Delphi написан при помощи Delphi, что говорит об отсутствии таких ограничений.
Классы объектов построены в виде иерархии, состоящей из абстрактных, промежуточных, и готовых компонент. Разработчик может пользоваться готовыми компонентами, создавать собственные на основе абстрактных или промежуточных, а также создавать собственные объекты.
Предусмотрены специальные наборы компонент, отвечающих за доступ к данным, и компонент, отображающих данные. Компоненты доступа к данным позволяют осуществлять соединения с БД, производить выборку, копирование данных, и т.п.
Компоненты визуализации данных позволяют отображать данные виде таблиц, полей, списков. Отображаемые данные могут быть текстового, графического или произвольного формата.
В состав пакета Delphi также входит множество утилит для работы и управления базами данных.
В Delphi 7 можно создавать проекты различного вида: обычные приложения Windows, новые компоненты, консольные приложения, пакеты компонентов, новые формы, DLL – библиотеки и др. Пакет Delphi предназначен для разработки больших программ, которые неудобно размещать в одном файле.
В состав проекта обычного приложения Windows, разрабатываемого в Delphi 7, обязательно входят файлы со следующими расширениями:
 .dpr – главный файл проекта. Содержит исходный код инициализации приложения и создания форм.
 .pas – файлы программных модулей, содержащих исходный код на языке Object Pascal. Для каждой формы, входящей в состав проекта, создается отдельный программный модуль. В исходном тексте такого модуля содержится объявление класса формы. При размещении на форме компонентов конструктор форм Delphi автоматически вносит необходимые изменения в объявления класса этой формы. То же самое происходит и при создании обработчиков событий. Таким образом, Delphi выполняет большой объем «черновой работы» по модификации исходного кода класса формы, позволяя разработчику сосредоточиться только на создании программного кода, определяющего функциональность формы.
 .dfm – файлы форм. Практически все операции, выполняемые в конструкторе форм при визуальной разработке, записываются в файл формы соответствующего программного модуля. В этот файл помещаются конкретные значения свойств формы и ее компонентов, в отличие от самого модуля, в котором хранятся только объявления элементов формы и их программный код.
 .res – файл ресурсов проекта. Содержит пиктограмму, которая затем сохраняется в выполняемом файле приложения, и другие ресурсы.
После сохранения и компиляции проекта, в одном каталоге с ним создается еще несколько файлов, которые являются вспомогательными.


5 Описание применения

5.1 Назначение программы

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

5.2 Условия применения

Минимальные необходимые требования для нормального функционирования системы: персональный компьютер на базе процессора Intel Celeron с тактовой частотой 400MHz, 256 МБ оперативной памяти, жесткий диск 10 Гб, VGA-совместимый дисплей (рекомендуется SVGA-дисплей).

5.3 Описание задачи

Экранные формы приложения приведены в Приложении Б.
Для загрузки программы следует запустить на выполнение исполняемый файл Inventory.exe и далее работать с ним в соответствии с данным описанием.
После запуска программы на экране появляется главная форма, на которой отображено дерево подразделений организации и рабочих мест в них. При выборе конкретного рабочего места в правой части формы выводится список компьютерной техники на данном рабочем месте. В зависимости от того, есть ли компьютерная техника на выбранном месте, а также от того, что выбрано на дереве – подразделение или рабочее место, доступны те или иные пункты меню и горячие кнопки в программе. Все кнопки с пиктограммами снабжены всплывающими подсказками. Для перемещения устройства следует вызвать пункт меню «Операции|Переместить устройство», на открывшейся форме выбраться новое рабочее место и нажать кнопку «Переместить». После этого автоматически сформируется накладная на внутреннее перемещение.
Для редактирования данных справочников подразделений и рабочих мест, типов или параметров устройств, сотрудников, поставщиков или производителей следует выбрать соответствующий пункт меню «Справочники» главного меню программы. Далее принципы работы с любой из этих форм одинаковы и соответствуют описанному ниже.
Для добавления новой записи следует нажать кнопку «+», после чего появится новая пустая строка в таблице данных на форме. Для изменения данных следует выбрать необходимую строку в таблице и ввести в нее новые значения полей. После добавления или изменения следует нажать кнопку с галочкой для сохранения введенных данных, либо кнопку «х» для отмены произведенных изменений. Для удаления выбранной в таблице на форме записи следует нажать кнопку «».
Для оформления прихода комплектующих следует внести данные о новом приходе на форме, вызываемой пунктом меню «Учет|Приход» главной формы.
Все модели устройств регистрируются на форме «Инвентарный учет», вызываемой одноименным пунктом меню «Учет». Для каждой модели устройств можно задать произвольный набор параметров – характеристик комплектующего, например, объем памяти, слот, интерфейс, частота и т.д. Также для каждой модели ведется список инвентарных номеров данной модели. После добавления нового инвентарного номера он автоматически регистрируется на складе. Собственно строка инвентарного номера должна быть уникальной. Для удобства поиска информации создан фильтр по дате регистрации инвентарного номера. Для отбора данных следует задать диапазон дат.
При выборе устройства на рабочем месте на главной форме и вызове пункта меню «Операции|Поиск устройства» соответствующее устройство ищется и отображается на появившейся форме «Инвентарный учет».
Для просмотра и изменения данных об истории обслуживания рабочего места, истории обслуживания комплектующего или истории перемещения комплектующего следует выбрать соответствующий пункт меню «Учет» главной формы. Истории обслуживания рабочего места или комплектующего можно редактировать, история перемещения устройства комплектующего автоматически по мере перемещения устройств по рабочим местам. Для того чтобы распечатать данные, следует нажать кнопку «Печать», после чего на экране появится сформированный отчет в формате MS Excel, который можно либо просто просмотреть, либо отправить на печать.
Для просмотра списка инвентарных номеров следует выбрать пункт главного меню «Учет|Список инвентарных номеров». В открывшейся форме можно просмотреть все данные и распечатать их при необходимости.
Для просмотра списка рабочих мест следует выбрать пункт главного меню «Учет|Список рабочих мест». В открывшейся форме можно просмотреть все данные и распечатать их при необходимости.
Для формирования паспорта выбранного устройства следует вызвать одноименный пункт меню «Отчеты» главной формы, либо нажать одноименную кнопку на форме «Инвентарный учет».

5.4 Входные и выходные данные

Входными данными для системы являются:
 данные о типах, моделях и параметрах комплектующих;
 данные о приходе;
 данные о перемещении устройств;
 данные об обслуживании рабочих мест и устройств.
Выходными данными для системы являются:
 паспорт устройства;
 список инвентарных номеров;
 список компьютерной техники по рабочим местам;
 накладная на внутреннее перемещение объектов основных средств;
 список рабочих мест;
 список оборудования на рабочем месте;
 история обслуживания рабочего места;
 история обслуживания комплектующего;
 история перемещения комплектующего.


6 Оценка экономической эффективности инвестиционного проекта.

6.1 Расчет затрат на разработку системы
Для разработки системы необходимо привлечение следующих специалистов:
а) руководитель проекта, знающий предметную область, фор-мулирующий техническое задание на разработку;
б) бизнес-аналитик, выпол¬няющий функции менеджера проекта;
в) программист, непосредственно занимающийся разработкой ИТ и технической доку¬ментации.
Для расчета затрат на разработку системы необходимо разбить процесс раз-работки на этапы. На каждом этапе требуется определенное количество исполнителей. Перечень этапов разработки системы и исполнителей представлен в таблице 6.1.

 

 

 

 

 

 


Таблица 6.1  Перечень этапов разработки системы и исполнителей
Этап разработки Исполнители Период
1.Анализ предметной области и существующих систем Руководитель проекта 3
Бизнес-аналитик 3
2. Разработка требований к создаваемой системе Руководитель проекта 2
Бизнес-аналитик 2
3. Проектирование системы Руководитель проекта 3
Бизнес-аналитик 4
Программист 3
4. Проектирование БД (разработка структуры БД, входных и выходных данных) Руководитель проекта 3
Бизнес-аналитик 4
Программист 3
5.Кодирование системы Руководитель проекта 2
Программист 5
6.Тестирование Руководитель проекта 3
Программист 3
7.Доводка системы (устранение выявленных недостатков) Руководитель проекта 1
Программист 3
8.Тестирование и анализ результатов Руководитель проекта 2
Бизнес-аналитик 2
Программист 1
9.Разработка документации Руководитель проекта 1
Программист 2
10.Установка и внедрение системы Руководитель проекта 2
Программист 2

Срок разработки системы составляет 30 дней. Календарный график работ приведен на рисунке 6.1.
Дневная заработная плата специалистов, участвующих в разработке системы, приведена в таблице 6.2. Среднее количество рабочих дней в месяце  22 дня.

Таблица 6.2  Исходные данные для расчета заработной платы исполнителей
Специалист Месячная зарплата, руб. Дневная зарплата, руб.
Руководитель проекта 9 000 409,09
Бизнес-аналитик 4 000 181,82
Программист 6 000 272,73

 


Рисунок 6.1 – Календарный график работ

Расчет заработной платы участников разработки приведен в таблице 6.3.

Таблица 6.3  Расчет заработной платы
Специалист Время работы, дни Сумма оплаты, руб. ЕСН, руб. Зарплата и отчисления, руб.
Руководитель 22 8 999,98 2 339,99 11 339,97
Бизнес-аналитик 15 2 727,30 709,10 3 436,40
Программист 22 6 000,06 1 560,02 7 560,08
Итого 17 727,34 4 609,11 22 336,45

Таким образом, расходы на оплату труда составляют 22 336,45 рублей.
Отчисления в фонд единого социального налога составляют 26% от суммы оплаты труда. Накладные расходы составляют 20% от затрат на оплату труда, не учиты¬вая отчисления в фонд единого социального налога. Они равны 3 545,47 рублей.
При разработке системы были использованы 3 компьютера стоимостью 20 000 рублей каждый, помимо них в помещении будут работать и другие устройства, потребляющие 200-300 КВт в месяц.
Компьютеры и устройства принадлежат заказчику. Годовая норма амортизации компьютеров 24%. Расходы на обслуживание обору¬дования составляют 25% амортизационных отчислений.
Энергопотребление каждого компьютера составляет 200 Вт/ч. Стоимость одного кВт/час электроэнергии составляет 1,83 рублей. Компьютеры работают 8 ча¬сов в день. Разработка ведется в помещениях и на оборудовании заказчика. Рас-ходы на оплату машинного времени (амортизация), обслуживание оборудования, электроэнергию, зарплату разработчикам, накладные расходы несет заказчик.
Стоимостная оценка затрат машинного времени определяется на основе амортизационных отчислений. В качестве метода начисления амортизации используется линейный способ. Он предполагает равномерное начисление амортизации в течение всего срока полезного использования.
Так как работы велись при пятидневной рабочей неделе, то в году получается 251 рабочий день. Тогда при годовой сумме аморти¬зации одного компьютера, равной 20 000 * 0,24 = 4 800 рублей, дневная сумма амор¬тизации 4800/251 = 19,12 рублей. Таким образом, стоимость машинного времени, например, для руководителя равна 22 * 19,12 = 422,40 рублей.
Данные о затратах машинного времени приведе¬ны в таблице 6.4.

Таблица 6.4 – Затраты машинного времени
Специалист Время работы, дни Стоимость машинного времени, руб.
Руководитель 22 420,64
Бизнес-аналитик 15 286,80
Программист 22 420,64
Всего 1 128,08
Таким образом, сумма затрат на машинное время равна 1 128,08 рублей.
Затраты на обслуживание оборудования составляют 25% от стоимости ма-шинного времени и равны 1 128,08* 0,25 = 282,02 рублей.
Затраты на электроэнергию определяются на основе энергопотребления каж-дого компьютера. При этом, считаем, что каждый специалист, участвующий в разработке системы, использует отдельный компьютер и затраты на электроэнер¬гию зависят от времени работы специалиста. Эти затраты описаны в таблице 6.5 .

Таблица 6.5 – Затраты на электроэнергию
Специалист № компьютера Время работы, дни Расходы на электроэнергию, руб.
Руководитель 1 22 64,42
Бизнес-аналитик 2 15 43,92
Программист 3 22 64,42
Всего 172,75

Затраты на электроэнергию, потребляемую компьютерами, составляют 172,75 рублей. Стоимость электроэнергии, потребляемой другими приборами за месяц, составляет 250*1,83=457,50 рублей. Таким образом затраты на электроэнергию составляют 630,25 рублей.
Общая сумма затрат на разработку приведена в таблице 6.6.

Таблица 6.6 – Затраты на разработку
Статья затрат Сумма, руб.
Зарплата и отчисления 22 336,45
Стоимость машинного времени 1 128,08
Затраты на обслуживание 282,02
Затраты на электроэнергию 172,75
Накладные расходы 3 545,47
Всего 27 464,77


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

6.2 Формирование денежного потока

6.2.1 Расчет поступлений денежных средств

Разработка программного комплекса автоматизированного учета и инвентаризации компьютерной техники осуществлялась по заказу указать предприятие, поэтому все права на владение принадлежат этому предприятию. Необ¬ходимо оценить эффективность внедрения такой системы для единственного за¬казчика.
Для оценки эффективности был использован метод внедрения информаци-онной технологии как инвестиционного проекта. В соответствии с этим методом для оценки эффективности были проведены следующие мероприятия:
а) руководство предприятия подготовило техническое предложение по разработке системы;
б) специалисты по информатизации проанализировали это предложение и вынесли заключение о необходимости и возможности разработки автоматизиро-ванной системы;
в) специалисты по информатизации выявили исчисляемые и неисчисляемые эффекты от внедрения системы.
Исчисляемые эффекты:
– отсутствие временных затрат на создание или оформление первичных и отчетных документов (накладная на внутреннее перемещение, паспорт устройства, список инвентарных номеров, список компьютерной техники по рабочим местам, список рабочих мест, список оборудования на рабочем месте, история обслуживания рабочего места, история обслуживания комплектующего, история перемещения комплектующего), которые теперь формируются автоматически. Благодаря полному и обстоятельному учету всех компьютерной техники сотрудник IT-отдела может легко определить, какое оборудование нуждается в профилактике или подлежит списанию, когда и кем обслуживалось то или иное рабочее место или комплектующее, какое программное обеспечение установлено на рабочем месте и т.п. Дневная экономия рабочего времени сотрудника IT-отдела составит в среднем 2 часа. Таким образом, при зарплате (куда входят 26% отчислений на единый социальный налог) сотрудника IT-отдела в 9489,92 рублей в месяц, 8-часовом рабочем дне и 5-дневной рабо¬чей неделе (в среднем 22 рабочих дня в месяц) сумма дневной экономии составит:
9489,92/(22*8) * 2 = 107,84 рублей.
Для четырех сотрудников получаем 431,36 рублей. Таким образом, от внедрения системы каждый день экономится 431,36 рублей.
Неисчисляемые эффекты:
а) повышение уровня автоматизации и качества обработки информации. Компьютер точно и безошибочно производит необходимые вычисления, следова-тельно, во всех случаях, когда вместо человека работает ПЭВМ, статические ошиб-ки исключены;
б) целостность и актуальность информации. Информация хранится в общей базе данных с наличием логических связей между отдельными ее элементами. Исключена избыточность информации;
в) упрощение поиска и допуска к информации, не¬обходимой для составления отчетной документации;
г) возникновение принципиально новых возможностей для работы пользова-телей системы, например, работа с общей информационной базой;
д) отсутствие необходимости хранения информации на бумажных носителях.
На основе получаемых при внедрении автоматизированной системы исчис-ляемых эффектов был выявлен срок окупаемости проекта. Он равен отношению затрат на разработку к сумме ежедневной прямой экономии: 27464,77 / 431,36 = 64 дня. Дальнейшее использование информационной системы несет заказчику при-быль. На основании этого руководитель проектной организации утвердил оконча-тельное решение о разработке системы. Был утвержден срок разработки проекта – 30 рабочих дней.
6.2.2 Финансирование проекта по этапам разработки

Целесообразно представить финансирование проекта по этапам разработки, описанным в таблице 3. Сумма средств, направленных на финансирование каж¬дого этапа складывается из средств на оплату труда, затрат на машинное время и обслуживание оборудования, накладных расходов, а также электроэнергию (см. таблица 6.7).

Таблица 6.7 – Финансирование проекта по этапам разработки
Содержание работы Исполнители Время выполнения, дни Зарплата и отчисления, руб. Машинное время
и обслуживание, руб. Электроэнергия, руб. Накладные расходы, руб. Всего затрат, руб.
1. Анализ предметной области и существующих систем Руководитель, бизнес-аналитик 3 2 233,64 143,40 17,57 354,55 2 749,15
2. Разработка требований к создаваемой системе Руководитель, бизнес-аналитик 2 1 489,09 95,60 11,71 236,36 1 832,77
3. Проектирование системы Руководитель, бизнес-аналитик, программист 4 3 493,65 239,00 29,28 554,55 4 316,48
4. Проектирование БД Руководитель, бизнес-аналитик, программист 4 3 493,65 239,00 29,28 554,55 4 316,48
5. Кодирование системы Руководитель, программист 5 2 749,11 167,30 20,50 436,37 3 373,27
6. Тестирование Руководитель, программист 3 2 577,28 143,40 17,57 409,09 3 147,34
7. Доводка системы (устранение выявленных недостатков) Руководитель, программист 3 1 546,37 95,60 11,71 245,46 1 899,14
8. Тестирование и анализ результатов Руководитель, бизнес-аналитик, программист 2 1 832,73 119,50 14,64 290,91 2 257,78
9. Разработка документации Руководитель, программист 2 1 202,73 71,70 8,78 190,91 1 474,13
10. Установка и внедрение системы Руководитель, программист 2 1 718,19 95,60 11,71 272,73 2 098,23
Всего 30 22 336,45 1 410,10 172,75 3 545,47 27 464,77
График финансирования проекта по этапам разработки представлен на ри-сунке 6.1.

 

 

 

 

 

Рисунок 6.1 – Финансирование проекта по этапам разработки

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


7 Безопасность жизнедеятельности

Организация рабочих мест пользователей ПЭВМ с учетом эргономических рекомендаций

Проектирование рабочих мест, снабженных видеотерминалами, относится к числу важных проблем эргономического проектирования в области вычислительной тех¬ники. Эргономика – прикладная наука целью, которой является приспособление труда к физиологическим и психическим возможностям человека для обеспечения наиболее эффективной работы, которая не создаёт угрозы здоровью человека. Практика показывает, что планировка рабочего места должна удовлетворять требованиям удобства выполняемых работ и экономии энергии, и времени оператора, рационального использования производственных площадей и удобства обслуживания устройств ПЭВМ. При планировке рабочего места необходимо учитывать удобство расположения дисплеев, принтеров, пульта ПЭВМ, а также зоны досягаемости рук оператора. Эти зоны, установленные на основании антропометрических данных тела человека, дают возможность рационально разместить компьютер, его клавиатуру и дисплей [10].
Рабочее место и взаимное расположение всех его элементов должно соответство¬вать антропометрическим, физическим и психологическим требованиям. Большое зна¬чение имеет также характер работы. В частности, при организации рабочего места програм¬миста должны быть соблюдены следующие основные условия: оптимальное размеще¬ние оборудования, входящего в состав рабочего места и достаточное рабочее простран¬ство, позволяющее осуществлять все необходимые движения и перемещения.
Эргономическими аспектами проектирования видеотерминальных рабочих мест, в частности, являются: высота рабочей поверхности, размеры пространства для ног, тре¬бования к расположению документов на рабочем месте (наличие и размеры под¬ставки для документов, возможность различного размещения документов, расстояние от глаз пользователя до экрана, документа, клавиатуры и т.д.), характеристики рабочего кресла, требования к поверхности рабочего стола, регулируемость элемен¬тов рабочего места.
Главными элементами рабочего места программиста являются стол и кресло. Осно¬в¬ным рабочим положением является положение сидя. Рабочая поза сидя вызывает минимальное утомление программиста. Рациональная планировка рабочего места предусматривает четкий порядок и постоянство размеще¬ния предметов, средств труда и документации. То, что требуется для выполнения ра¬бот ча¬ще, расположено в зоне легкой досягаемости рабочего пространства [10].
Моторное поле – пространство рабочего места, в котором могут осуществляться дви¬гательные действия человека.
Максимальная зона досягаемости рук – это часть моторного поля рабочего места, ограниченного дугами, описываемыми максимально вытянутыми руками при движе¬нии их в плечевом суставе.
Оптимальная зона – часть моторного поля рабочего места, ограниченного дугами, описываемыми предплечьями при движении в локтевых суставах с опорой в точке локтя и с относительно неподвижным плечом. На рисунке 7.1 приведены зоны досягаемости рук в горизонтальной плоскости.

Рисунок 7.1  Зоны досягаемости рук в горизонтальной плоскости

Оптимальное размещение предметов труда и документации в зонах досягаемости:
а) ДИСПЛЕЙ размещается в зоне а (в центре);
б) СИСТЕМНЫЙ БЛОК размещается в предусмотренной нише стола;
в) КЛАВИАТУРА – в зоне г/д;
г) «МЫШЬ» – в зоне в справа;
д) СКАНЕР в зоне а/б (слева);
е) ПРИНТЕР находится в зоне а (справа);
ж) ДОКУМЕНТАЦИЯ: необходимая при работе – в зоне легкой досягаемости ладони – в, а в выдвижных ящиках стола – литература, не используемая постоянно.
1 – сканер 4 – поверхность рабочего стола
2 – монитор 5 – клавиатура
3 – принтер 6 – манипулятор типа «мышь»
На рисунке 7.2 показан пример размещения основных и периферийных составляющих ПЭВМ на рабочем столе программиста.
Рисунок 7.2  Размещение основных и периферийных составляющих ПЭВМ

В случае, когда в помещении находится несколько ПЭВМ, расстояние между рабочими столами с видеомониторами (в направлении тыла поверхности одного видеомонитора и экрана другого видеомонитора), должно быть не менее 2 м, а расстояние между боковыми поверхностями видеомониторов – не менее 1,2 м. Также рекомендуется разделение рабочих мест перегородками высотой 150-200 см.
Для комфортной работы оснащение рабочего места должно удовлетворять следующим условиям (на основании СанПин 2.2.2/2.4.1340-03):
а) высота стола должна быть выбрана с учетом возможности сидеть свободно, в удоб¬ной позе, при необходимости опираясь на подлокотники;
б) нижняя часть стола должна быть сконструирована так, чтобы программист мог удоб¬но сидеть, не был вынужден поджимать ноги. Рабочий стол должен иметь пространство для ног высотой не менее 600 мм, шириной не менее 500 мм, глубиной на уровне колен не менее 450 мм и на уровне вытянутых ног не менее 650 мм;
в) поверхность стола должна обладать свойствами, исключающими появление бликов в поле зрения программиста;
г) конструкция стола должна предусматривать наличие выдвижных ящиков (не менее 3 для хранения документации, листингов, канцелярских принадлежностей).
д) высота рабочей поверхности рекомендуется в пределах 680-800мм. Высота по¬верхности, на которую устанавливается клавиатура, должна быть около 650мм.
Большое значение придается характеристикам рабочего кресла:
а) рекомендуемая высота сиденья над уровнем пола находится в пределах 400-550мм;
б) поверхность си¬денья мягкая, передний край закругленный; подъемно-поворотный механизм, регулируемый по высоте и углам наклона сиденья и спинки, а также расстоянию спинки от переднего края сиденья.
в) угол наклона спинки – регулируемый в пределах 30;
г) подлокотники регулируются по высоте над сиденьем в пределах 23030 мм, внутреннее расстояние между подлокотниками – в пределах 350-500 мм.
Рабочее место пользователя ПЭВМ рекомендуется оборудовать подставкой для ног, имеющей ширину не менее 300 мм, регулировку по углу наклона опорной поверхности подставки до 20°.
Необходимо предусматривать при проектировании возможность различного разме¬ще¬ния документов: сбоку от видеотерминала, между монитором и клавиатурой и т.п.
Положение экрана определяется:
а) расстоянием считывания (0,6…0,7м);
б) углом считывания, направлением взгляда на 20 ниже горизонтали к центру экрана, причем экран перпендикулярен этому направлению.
Должна также предусматриваться возможность регулирования экрана:
а) по высоте +3 см;
б) по наклону от –10 до +20 относительно вертикали;
в) в левом и правом направлениях.
Большое значение также придается правильной рабочей позе пользователя. При не¬удобной рабочей позе могут появиться боли в мышцах, суставах и сухожилиях. Требо¬ва¬ния к рабочей позе пользователя видеотерминала следующие:
а) голова не должна быть нак¬лонена более чем на 20,
б) плечи должны быть расслаблены,
в) локти – под углом 80…100,
г) предплечья и кисти рук - в горизонтальном положении.
Причина неправильной позы пользователей обусловлена следующими факторами: нет хорошей подставки для документов, клавиатура находится слишком высоко, а до¬кумен¬ты – низко, некуда положить руки и кисти, недос¬таточно пространство для ног.
Специалисты считают, что верх¬няя часть видео¬дисплея должна быть на уровне глаз или чуть ниже. Когда человек смотрит прямо пе¬ред собой, его глаза открываются шире, чем когда он смотрит вниз. За счет этого пло¬щадь обзора значительно увеличивается, вызывая обезвоживание глаз. К тому же если экран установ¬лен высоко, а глаза широко открыты, нарушается функция морга¬ния. Это зна¬чит, что глаза не закрываются полностью, не омываются слезной жидко¬стью, не получают доста¬точного увлажнения, что приводит к их быстрой утомляе¬мости.
Создание благоприятных условий труда и правильное эстетическое оформление ра¬бо¬чих мест имеет большое значение как для облегчения труда, так и для повышения его привлекательности, положительно влияющей на производитель-ность труда.

Заключение

В ходе выполнения дипломного проекта были изучены принципы учета и инвентаризации компьютерной техники на указать предприятие.
В ходе работы были разработаны, созданы и отлажены все компоненты системы и проведена следующая работа:
 описана существующая система обработки информации на предприятии;
 представлены обоснование выбора обеспечивающих технологий и проектных решений по программному и информационному обеспечению;
 продуман пользовательский интерфейс, обозначены возможные пути расширения системы;
 приведена характеристика нормативно-справочной информации, входной оперативной информации, результатной информации, приведена информационная модель и представлено ее описание;
 описана организация технологии сбора, передачи, обработки и выдачи информации.
В результате был спроектирован и разработан программный комплекс автоматизированного учета и инвентаризации компьютерной техники.
Кроме того, в процессе работы были подсчитаны экономические характеристики разработки.
В рамках настоящей работы реализованы следующие функции:
 учет компьютерного оборудования по рабочим местам, рабочих мест по подразделениям, производителей, а также поставщиков компьютерной техники;
 оформление и учет прихода компьютерной техники;
 перемещение компьютерного оборудования с одного рабочего места на другое;
 ведение истории обслуживания рабочего места;
 ведение истории обслуживания и истории перемещения по рабочим местам каждого комплектующего;
 учет компьютерного оборудования на складе и списанного, а также оборудования общего пользования (копиры, принтеры и т.д.);
 быстрый поиск данных о выбранном комплектующем на рабочем месте;
 задание для каждого комплектующего произвольного набора характеристик и параметров;
 формирование отчетности, например паспорт устройства.
Область применения: разработанная система после незначительной доработки может использоваться в IT-отделе любой организации для учета и инвентаризации компьютерной техники организации.
Программный комплекс автоматизированного учета и инвентаризации компьютерной техники находится на стадии тестирования с последующим внедрением в указать предприятие.

Список использованных источников

1. Мишенин, А.И. Теория экономических информационных систем: Учеб. для вузов / А.И. Мишенин.- 4-е изд., доп. и перераб. -М. : Финансы и статистика, 2001. - 240 с. : ил.
2. Паронжанов С. Объектно-ориентированные средства анализа, проектирования и реинжениринга информационных систем. – М.: Учебные материалы конференции «Индустрия программирования 96». 1996 г. с.117-123.
3. Липаев В.В Управление разработкой программных средств. Методы, стандарты, технология. – М.: Финансы и статистика, 1993.
4. Вендров А.М. CASEтехнологии. Современные методы и средства проектирования информационных систем.  М.: Финансы и статистика, 2000
5. Дейт К. Введение в системы баз данных/Пер. с англ. М.:Наука, 1980. 463 с.
6. Фуфаев Д.Э., Фуфаев Э.В. Базы данных. – М.: “Академия”, 2005. – 320 с.
7. Оскерко В.С., Пунчик З.В. Практикум по технологиям баз данных. – Мн.: “БГЭУ”, 2004. – 170 с.
8. Ирвин М., Праг К. Access 2000. Библия пользователя. – М.: “Диалектика”, 2000. – 1040 с.
9. Архангельский А.Я. Программирование в Delphi 7 М.:Бином, 2004.
10. СанПиН 2.2.2/2.4.1340-03. Санитарно-эпидемиологические правила и нормативы. Гигиенические требования к персональным электронно-вычислительным машинам и организации работы. – М: Издательство стандартов, 2003.

 

 

 

 

 

 

 

 

 

 

 

 

ТЕКСТ ПРОГРАММЫ
Приложение А
(обязательное)

 

 

 

 

 

 

 

program Inventory;

uses
Forms,
uMain in 'uMain.pas' {fmMain},
uParameters in 'uParameters.pas' {fmParameters},
uDM in 'uDM.pas' {DM: TDataModule},
uTypes in 'uTypes.pas' {fmType},
uDepartments in 'uDepartments.pas' {fmDepartments},
uEmployees in 'uEmployees.pas' {fmEmployees},
uInventory in 'uInventory.pas' {fmInventory},
uDeviceMove in 'uDeviceMove.pas' {fmDeviceMove},
uHistoryPlace in 'uHistoryPlace.pas' {fmHistoryPlace},
uHistoryMove in 'uHistoryMove.pas' {fmHistoryMove},
uHistoryDevice in 'uHistoryDevice.pas' {fmHistoryDevice},
uRep in 'uRep.pas',
uSellers in 'uSellers.pas' {fmSellers},
uIncome in 'uIncome.pas' {fmIncome},
uInventList in 'uInventList.pas' {fmInventList},
uProducers in 'uProducers.pas' {fmProducers},
uPlacesList in 'uPlacesList.pas' {fmPlacesList};

{$R *.res}

begin
Application.Initialize;
Application.CreateForm(TfmMain, fmMain);
Application.CreateForm(TfmParameters, fmParameters);
Application.CreateForm(TDM, DM);
Application.CreateForm(TfmType, fmType);
Application.CreateForm(TfmDepartments, fmDepartments);
Application.CreateForm(TfmEmployees, fmEmployees);
Application.CreateForm(TfmInventory, fmInventory);
Application.CreateForm(TfmDeviceMove, fmDeviceMove);
Application.CreateForm(TfmHistoryPlace, fmHistoryPlace);
Application.CreateForm(TfmHistoryMove, fmHistoryMove);
Application.CreateForm(TfmHistoryDevice, fmHistoryDevice);
Application.CreateForm(TfmSellers, fmSellers);
Application.CreateForm(TfmIncome, fmIncome);
Application.CreateForm(TfmInventList, fmInventList);
Application.CreateForm(TfmProducers, fmProducers);
Application.CreateForm(TfmPlacesList, fmPlacesList);
Application.Run;
end.


unit uDepartments;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Buttons, DBCtrls, Grids, DBGrids;

type
TfmDepartments = class(TForm)
Panel1: TPanel;
DBNavigator1: TDBNavigator;
bbtExit: TBitBtn;
DBGrid1: TDBGrid;
DBGrid2: TDBGrid;
Splitter1: TSplitter;
bbtEmployee: TBitBtn;
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure DBGrid1Enter(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
fmDepartments: TfmDepartments;

implementation

uses uDM, uMain, uPlacesList;

{$R *.dfm}

procedure TfmDepartments.FormShow(Sender: TObject);
begin
DM.dstDepartments.Open;
DM.dstPlaces.Open;
DM.dstDepartments.Sort := '═ршьхэютрэшх';
end;

procedure TfmDepartments.FormClose(Sender: TObject; var Action: TCloseAction);
begin
DM.dstPlaces.Close;
//═рсюЁ фрээ√ї юёЄрхЄё юЄъЁ√Є√ь, хёыш юЄъЁ√Є√ ЇюЁь√, уфх юэ шёяюы№чєхЄё :
if not fmPlacesList.Showing then
DM.dstDepartments.Close;
end;

//DBNavigator1 яЁшт ч√трхЄё ъ т√сЁрээюьє DBGrid'є ш ёююЄтхЄёЄтє■∙хьє эрсюЁє фрээ√ї:
procedure TfmDepartments.DBGrid1Enter(Sender: TObject);
begin
DBNavigator1.DataSource := (Sender as TDBGrid).DataSource;
end;

end.

 

unit uDeviceMove;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ComCtrls, ExtCtrls;

type
TfmDeviceMove = class(TForm)
Panel1: TPanel;
Label1: TLabel;
TreeView1: TTreeView;
Panel2: TPanel;
bbtGo: TBitBtn;
bbtExit: TBitBtn;
procedure FormShow(Sender: TObject);
procedure bbtGoClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
fmDeviceMove: TfmDeviceMove;

implementation

uses uDM, uRep, uMain, DB;

{$R *.dfm}

procedure TfmDeviceMove.FormShow(Sender: TObject);

//Добавление вершин - рабочих мест по подразделению:
procedure AddChild(Node: TTreeNode);
var
Child: TTreeNode;
Caption: string;
begin
DM.dstPlaces.Open;
DM.dstPlaces.First;
while not DM.dstPlaces.Eof do
begin
//Добавление вершины - раб. места:
Caption := DM.dstPlaces.FieldByName('Наименование').AsString;
if DM.dstPlaces.FieldByName('СетевоеИмя').AsString <> '' then
Caption := Caption + ' (' + DM.dstPlaces.FieldByName('СетевоеИмя').AsString + ')';
Child := TreeView1.Items.AddChild(Node, Caption);
//Data указывает на ID категории/наименования товара:
Child.Data := Pointer(DM.dstPlaces.FieldByName('ID').AsInteger);
Child.ImageIndex := 1;
DM.dstPlaces.Next;
end;
end;

var
CategTreeNode: TTreeNode;
begin
TreeView1.Items.Clear;
DM.dstDepartments.Open;
DM.dstPlaces.Open;
DM.dstDepartments.Sort := 'Наименование';
DM.dstDepartments.First;
while not DM.dstDepartments.Eof do
begin
//Добавление вершины - подразделения:
CategTreeNode := TreeView1.Items.Add(nil, DM.dstDepartments.FieldByName('Наименование').AsString);
//Data указывает на ID подразделения:
CategTreeNode.Data := Pointer(DM.dstDepartments.FieldByName('ID').AsInteger);
CategTreeNode.ImageIndex := 0;
AddChild(CategTreeNode); //Добавление списка рабочих мест по текущему подразделению
DM.dstDepartments.Next;
end;
DM.dstDepartments.Close;
DM.dstPlaces.Close;
end;

//Перемещение устройства с одного раб. места на другое:
procedure TfmDeviceMove.bbtGoClick(Sender: TObject);
begin
if not Assigned(TreeView1.Selected.Parent) then
Application.MessageBox('Не выбрано рабочее место!', 'Ошибка', MB_OK+MB_ICONERROR)
else
if Application.MessageBox(PChar('Переместить выбранное устройство на рабочее место ' +
TreeView1.Selected.Text + '?'), 'Вопрос', MB_YESNO+MB_ICONQUESTION) = IDYES then
begin
DM.qrMoveDevice.Parameters.ParamByName('pRM').Value :=
Integer(TreeView1.Selected.Data);
DM.qrMoveDevice.Parameters.ParamByName('pInvN').Value :=
DM.dstDevicesAtPlace.FieldByName('ИнвN').AsString;
DM.qrMoveDevice.Parameters.ParamByName('pDate').Value := Date;
DM.qrMoveDevice.ExecSQL;

Rep_DeviceMove;
Close;
end;
end;

end.

 

unit uDM;

interface

uses
SysUtils, Classes, DB, ADODB;

type
TDM = class(TDataModule)
ADOConnection1: TADOConnection;
dstTypes: TADODataSet;
dsTypes: TDataSource;
dstParameters: TADODataSet;
dsParameters: TDataSource;
dstDepartments: TADODataSet;
dsDepartments: TDataSource;
dstEmpoyees: TADODataSet;
dsEmpoyees: TDataSource;
dstPlaces: TADODataSet;
dsPlaces: TDataSource;
dstPlacesID: TAutoIncField;
dstPlacesID2: TIntegerField;
dstPlacesDSDesigner: TWideStringField;
dstPlacesID3: TIntegerField;
dstPlacesField: TStringField;
dstPlacesDSDesigner2: TWideStringField;
dstModels: TADODataSet;
dsModels: TDataSource;
dstModelPar: TADODataSet;
dsModelPar: TDataSource;
dstModelParID: TIntegerField;
dstModelParID2: TIntegerField;
dstModelParDSDesigner: TWideStringField;
dstModelParField: TStringField;
dstDevices: TADODataSet;
dsDevices: TDataSource;
dstDevicesID: TIntegerField;
dstDevicesN2: TWideStringField;
dstDevicesDSDesigner: TDateTimeField;
dstDevicesAtPlace: TADODataSet;
dsDevicesAtPlace: TDataSource;
dstDevicesAtPlaceDSDesigner: TWideStringField;
dstDevicesAtPlaceDSDesigner2: TDateTimeField;
qrMoveDevice: TADOQuery;
dstDepartmentsID: TAutoIncField;
dstDepartmentsDSDesigner: TWideStringField;
dstDepartmentsDSDesigner2: TBooleanField;
dstDeviceSearch: TADODataSet;
dstHistoryMove: TADODataSet;
dsHistoryMove: TDataSource;
dstHistoryDevice: TADODataSet;
dsHistoryDevice: TDataSource;
dstHistoryDeviceID: TAutoIncField;
dstHistoryDeviceDSDesigner: TDateTimeField;
dstHistoryDeviceDSDesigner2: TWideStringField;
dstHistoryDeviceID2: TIntegerField;
dstHistoryDeviceDSDesigner3: TWideStringField;
dstHistoryDeviceField: TStringField;
dstHistoryPlace: TADODataSet;
dsHistoryPlace: TDataSource;
dstHistoryPlaceID: TAutoIncField;
dstHistoryPlaceID2: TIntegerField;
dstHistoryPlaceDSDesigner: TDateTimeField;
dstHistoryPlaceDSDesigner2: TWideStringField;
dstHistoryPlaceID3: TIntegerField;
dstHistoryPlaceDSDesigner3: TWideStringField;
dstHistoryPlaceStringField: TStringField;
dstAllPlaces: TADODataSet;
dstSellers: TADODataSet;
dsSellers: TDataSource;
dstSellersDSDesigner: TAutoIncField;
dstSellersDSDesigner2: TWideStringField;
dstSellersDSDesigner3: TWideStringField;
dstSellersDSDesigner4: TWideStringField;
dstSellersDSDesigner5: TWideStringField;
dstSellersDSDesigner6: TWideStringField;
dstSellersDSDesigner7: TWideStringField;
dstIncome: TADODataSet;
dsIncome: TDataSource;
dstIncomeDSDesigner: TAutoIncField;
dstIncomeID: TIntegerField;
dstIncomeID2: TIntegerField;
dstIncomeDSDesigner3: TWideStringField;
dstIncomeDSDesigner4: TDateTimeField;
dstIncomeDSDesigner5: TWideStringField;
dstIncomeDSDesigner6: TDateTimeField;
dstIncomeDSDesigner7: TWideStringField;
dstIncomeDSDesigner8: TDateTimeField;
dstIncomeField: TStringField;
dstIncomeField2: TStringField;
dstDevicesID2: TIntegerField;
dstDevicesDSDesigner2: TBCDField;
dstDevicesField: TIntegerField;
dstAllPlacesID: TAutoIncField;
dstAllPlacesID2: TIntegerField;
dstAllPlacesDSDesigner: TWideStringField;
dstAllPlacesID3: TIntegerField;
dstAllPlacesDSDesigner2: TWideStringField;
dstAllPlacesField: TStringField;
dstAllDevices: TADODataSet;
dstAllDevicesDSDesigner3: TWideStringField;
dstAllDevicesDSDesigner4: TWideStringField;
dstAllDevicesN2: TWideStringField;
dstAllDevicesDSDesigner5: TDateTimeField;
dstAllDevicesDSDesigner6: TBCDField;
dstAllDevicesDSDesigner8: TWideStringField;
dstAllDevicesDSDesigner9: TDateTimeField;
dstAllDevicesDSDesigner10: TWideStringField;
dstAllDevicesDSDesigner11: TDateTimeField;
dstAllDevicesDSDesigner12: TWideStringField;
dstAllDevicesDSDesigner13: TDateTimeField;
dstAllDevicesDSDesigner: TWideStringField;
dstAllDevicesDSDesigner2: TWideStringField;
dstAllDevicesDSDesigner7: TWideStringField;
dstAllDevicesDSDesigner14: TWideStringField;
dstAllDevicesDSDesigner15: TWideStringField;
dstAllDevicesDSDesigner16: TWideStringField;
dsAllDevices: TDataSource;
dstDevicesAtPlaceDSDesigner3: TBCDField;
dstDevicesAtPlaceDSDesigner4: TDateTimeField;
dstTypes2: TADODataSet;
dsTypes2: TDataSource;
dstProducers: TADODataSet;
dsProducers: TDataSource;
dstModelsID: TAutoIncField;
dstModelsID2: TIntegerField;
dstModelsDSDesigner: TWideStringField;
dstModelsID3: TIntegerField;
dstModelsDSDesigner2: TWideStringField;
dstModelsDSDesigner3: TWideStringField;
dstModelsField: TStringField;
dstDevicesN: TWideStringField;
dstDevicesAtPlaceN: TWideStringField;
dstHistoryDeviceN: TWideStringField;
dstAllDevicesN: TWideStringField;
dstPlaces2: TADODataSet;
AutoIncField1: TAutoIncField;
IntegerField1: TIntegerField;
WideStringField1: TWideStringField;
IntegerField2: TIntegerField;
StringField1: TStringField;
WideStringField2: TWideStringField;
dsPlaces2: TDataSource;
dstPlaces2IP: TWideStringField;
dstPlaces2DSDesigner: TWideStringField;
dstPlaces2DSDesigner2: TWideStringField;
dstPlaces2WideStringField: TStringField;
dstPlacesIP: TWideStringField;
dstPlacesDSDesigner3: TWideStringField;
dstPlacesDSDesigner4: TWideStringField;
procedure DataModuleDestroy(Sender: TObject);
procedure dstDevicesBeforeDelete(DataSet: TDataSet);
procedure dstDepartmentsBeforeDelete(DataSet: TDataSet);
procedure dstDevicesAfterPost(DataSet: TDataSet);
procedure dstDevicesBeforePost(DataSet: TDataSet);
private
{ Private declarations }
public
{ Public declarations }
end;

var
DM: TDM;

implementation
uses
Forms, Windows;
var
InsertedRec: Boolean;
{$R *.dfm}

procedure TDM.DataModuleDestroy(Sender: TObject);
begin
ADOConnection1.Close;
end;

procedure TDM.dstDevicesBeforeDelete(DataSet: TDataSet);
begin
Application.MessageBox('Инвентарные номера удалять нельзя!', 'Информация', MB_OK+MB_ICONEXCLAMATION);
Abort;
end;

procedure TDM.dstDepartmentsBeforeDelete(DataSet: TDataSet);
begin
if DataSet.FieldByName('Склад').AsBoolean then
begin
Application.MessageBox('Подразделение "Склад" удалять нельзя!', 'Информация', MB_OK+MB_ICONEXCLAMATION);
Abort;
end;
end;

//Регистрация устройства на складе при его заведении:
procedure TDM.dstDevicesAfterPost(DataSet: TDataSet);
begin
if InsertedRec then
begin
dstDepartments.Open;
dstPlaces.Open;
if dstDepartments.Locate('Склад', True, []) then
if dstPlaces.RecordCount <=0 then
Application.MessageBox(PChar('Невозможно зарегистрировать устройство на складе!' +
Chr(13) + 'Отсутствует рабочее место "Склад".'), 'Ошибка', MB_OK+MB_ICONERROR)
else
begin
DM.qrMoveDevice.Parameters.ParamByName('pRM').Value :=
dstPlaces.FieldbyName('ID').AsInteger;
DM.qrMoveDevice.Parameters.ParamByName('pInvN').Value :=
DataSet.FieldByName('ИнвN').AsString;
DM.qrMoveDevice.Parameters.ParamByName('pDate').Value :=
DataSet.FieldByName('Дата').AsDateTime;
qrMoveDevice.ExecSQL;
end;
dstPlaces.Close;
dstDepartments.Close;
InsertedRec := False;
end;
end;

procedure TDM.dstDevicesBeforePost(DataSet: TDataSet);
begin
InsertedRec := False;
if DataSet.State = dsInsert then
//Проверка введенных данных:
if DataSet.FieldByName('ИнвN').IsNull then
begin
Application.MessageBox('Необходимо заполнить поле инв. №!', 'Ошиька', MB_OK+MB_ICONERROR);
Abort;
end
else
if DataSet.FieldByName('Дата').IsNull then
begin
Application.MessageBox('Необходимо заполнить поле даты!', 'Ошиька', MB_OK+MB_ICONERROR);
Abort;
end
else
if DataSet.FieldByName('ПриходID').IsNull then
begin
Application.MessageBox('Необходимо заполнить поле № прихода!', 'Ошиька', MB_OK+MB_ICONERROR);
Abort;
end
else
InsertedRec := True; //Установка флага, что добавлено устройство
end;

end.

 

unit uEmployees;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Buttons, DBCtrls, Grids, DBGrids;

type
TfmEmployees = class(TForm)
Panel1: TPanel;
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
bbtExit: TBitBtn;
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;

var
fmEmployees: TfmEmployees;

implementation

uses uDM, uSellers, uDepartments, uInventory, uPlacesList;

{$R *.dfm}

procedure TfmEmployees.FormShow(Sender: TObject);
begin
DM.dstEmpoyees.Open;
DM.dstEmpoyees.Sort := 'ФИО'
end;

procedure TfmEmployees.FormClose(Sender: TObject; var Action: TCloseAction);
begin
//Набор данных остается открытым, если открыты формы, где он используется:
if (not fmInventory.Showing) and (not fmDepartments.Showing) and
(not fmPlacesList.Showing) then
DM.dstEmpoyees.Close;
end;

end.

 

unit uHistoryDevice;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, StdCtrls, Buttons, DBCtrls, ExtCtrls;

type
TfmHistoryDevice = class(TForm)
Panel1: TPanel;
bbtExit: TBitBtn;
DBGrid1: TDBGrid;
Panel2: TPanel;
lbName: TLabel;
DBNavigator1: TDBNavigator;
bbtPrint: TBitBtn;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormShow(Sender: TObject);
procedure bbtPrintClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
fmHistoryDevice: TfmHistoryDevice;

implementation

uses uDM, uRep;

{$R *.dfm}

procedure TfmHistoryDevice.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
DM.dstHistoryDevice.Close;
end;

procedure TfmHistoryDevice.FormShow(Sender: TObject);
begin
DM.dstHistoryDevice.Open;
end;

procedure TfmHistoryDevice.bbtPrintClick(Sender: TObject);
begin
Rep_Universal(DBGrid1, 4, Self.Caption);
end;

end.

 

unit uHistoryMove;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, StdCtrls, Buttons, DBCtrls, ExtCtrls;

type
TfmHistoryMove = class(TForm)
Panel1: TPanel;
DBNavigator1: TDBNavigator;
bbtExit: TBitBtn;
DBGrid1: TDBGrid;
Panel2: TPanel;
lbName: TLabel;
bbtPrint: TBitBtn;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure bbtPrintClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
fmHistoryMove: TfmHistoryMove;

implementation

uses uDM, uRep;

{$R *.dfm}

procedure TfmHistoryMove.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
DM.dstHistoryMove.Close;
end;

procedure TfmHistoryMove.bbtPrintClick(Sender: TObject);
begin
Rep_Universal(DBGrid1, 4, Self.Caption);
end;

end.

 

unit uHistoryPlace;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, StdCtrls, Buttons, DBCtrls, ExtCtrls;

type
TfmHistoryPlace = class(TForm)
Panel1: TPanel;
bbtExit: TBitBtn;
DBGrid1: TDBGrid;
Panel2: TPanel;
lbName: TLabel;
DBNavigator1: TDBNavigator;
bbtPrint: TBitBtn;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormShow(Sender: TObject);
procedure bbtPrintClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
fmHistoryPlace: TfmHistoryPlace;

implementation

uses uDM, uRep;

{$R *.dfm}

procedure TfmHistoryPlace.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
DM.dstHistoryPlace.Close;
DM.dstAllPlaces.Close;
end;

procedure TfmHistoryPlace.FormShow(Sender: TObject);
begin
DM.dstHistoryPlace.Open;
end;

procedure TfmHistoryPlace.bbtPrintClick(Sender: TObject);
begin
Rep_Universal(DBGrid1, 4, Self.Caption);
end;

end.

 

unit uIncome;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Buttons, DBCtrls, Grids, DBGrids;

type
TfmIncome = class(TForm)
Panel1: TPanel;
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
bbtExit: TBitBtn;
bbtSellers: TBitBtn;
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;

var
fmIncome: TfmIncome;

implementation

uses uDM, uMain, uInventory;

{$R *.dfm}

procedure TfmIncome.FormShow(Sender: TObject);
begin
DM.dstIncome.Open;
end;

procedure TfmIncome.FormClose(Sender: TObject; var Action: TCloseAction);
begin
//Набор данных остается открытым, если открыты формы, где он используется:
if not fmInventory.Showing then
DM.dstIncome.Close;
end;

end.

 

unit uInventList;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Buttons, DBCtrls, Grids, DBGrids;

type
TfmInventList = class(TForm)
Panel1: TPanel;
DBGrid1: TDBGrid;
bbtExit: TBitBtn;
DBNavigator1: TDBNavigator;
bbtPrint: TBitBtn;
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure DBGrid1TitleClick(Column: TColumn);
procedure bbtPrintClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
fmInventList: TfmInventList;

implementation

uses uDM, uRep;

{$R *.dfm}

procedure TfmInventList.FormShow(Sender: TObject);
begin
DM.dstAllDevices.Open;
end;

procedure TfmInventList.FormClose(Sender: TObject; var Action: TCloseAction);
begin
DM.dstAllDevices.Close;
end;

//Сортировка данных по выбранному столбцу:
procedure TfmInventList.DBGrid1TitleClick(Column: TColumn);
begin
DM.dstAllDevices.Sort := Column.FieldName;
end;

procedure TfmInventList.bbtPrintClick(Sender: TObject);
begin
Rep_Universal(DBGrid1, 4, Self.Caption);
end;

end.

 

unit uInventory;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DBCtrls, StdCtrls, ExtCtrls, Grids, DBGrids, ComCtrls, Buttons;

type
TfmInventory = class(TForm)
Panel1: TPanel;
Label1: TLabel;
dblcbType: TDBLookupComboBox;
Panel2: TPanel;
Splitter1: TSplitter;
Panel3: TPanel;
DBGrid2: TDBGrid;
DBGrid3: TDBGrid;
Splitter2: TSplitter;
DBNavigator1: TDBNavigator;
bbtExit: TBitBtn;
GroupBox1: TGroupBox;
Label3: TLabel;
Label4: TLabel;
dtpDate1: TDateTimePicker;
dtpDate2: TDateTimePicker;
DBGrid1: TDBGrid;
bbtPassport: TBitBtn;
BitBtn1: TBitBtn;
bbtParam: TBitBtn;
procedure FormShow(Sender: TObject);
procedure DBGrid1Enter(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure dtpDate1Change(Sender: TObject);
procedure bbtPassportClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;

var
fmInventory: TfmInventory;

implementation

uses uDM, DB, DateUtils, uMain, uRep, uTypes;

{$R *.dfm}

procedure TfmInventory.FormShow(Sender: TObject);
begin
DM.dstTypes.Open;
if dblcbType.KeyValue = Null then
begin
DM.dstTypes.First;
dblcbType.KeyValue := DM.dstTypes.FieldByName('ID').AsInteger;
end;
DM.dstModels.Open;
DM.dstModelPar.Open;
dtpDate1Change(Self);
end;

//DBNavigator1 привязывается к выбранному DBGrid'у и соответствующему набору данных:
procedure TfmInventory.DBGrid1Enter(Sender: TObject);
begin
DBNavigator1.DataSource := (Sender as TDBGrid).DataSource;
end;

procedure TfmInventory.FormCreate(Sender: TObject);
begin
dtpDate1.Date := IncYear(Date, -3);
dtpDate2.Date := Date;
end;

procedure TfmInventory.dtpDate1Change(Sender: TObject);
begin
DM.dstDevices.Close;
//По диапазону дат ввода в эксплуатацию:
DM.dstDevices.Parameters.ParamByName('pDate1').Value := dtpDate1.Date;
DM.dstDevices.Parameters.ParamByName('pDate2').Value := dtpDate2.Date;
DM.dstDevices.Open;
end;

procedure TfmInventory.bbtPassportClick(Sender: TObject);
begin
if DM.dstDevices.RecordCount <=0 then
Application.MessageBox('Не выбрано устройство!', 'Ошиька', MB_OK+MB_ICONERROR)
else
Rep_Passport(DM.dstDevices.FieldByName('ИнвN').AsString);
end;

procedure TfmInventory.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
DM.dstModelPar.Close;
DM.dstModels.Close;
//Набор данных остается открытым, если открыты формы, где он используется:
if not fmType.Showing then
DM.dstTypes.Open;
end;

end.

 

unit uMain;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ActnList, StdActns, ImgList, ActnMan, StdCtrls, Buttons,
ExtCtrls, ComCtrls, Grids, DBGrids, ToolWin, ActnCtrls, ActnMenus,
DBCtrls;

type
TfmMain = class(TForm)
ActionManager1: TActionManager;
FileExit1: TFileExit;
acSpravTypes: TAction;
acSpravPar: TAction;
acSpravDep: TAction;
acSpravEmp: TAction;
TreeView1: TTreeView;
Panel1: TPanel;
acWorkInvent: TAction;
DBGrid1: TDBGrid;
ActionMainMenuBar1: TActionMainMenuBar;
Splitter1: TSplitter;
acDeviceMove: TAction;
acDeviceSearch: TAction;
bbtExit: TBitBtn;
acDeviceHistoryMove: TAction;
acDeviceHistoryWork: TAction;
acPlaceHistoryWork: TAction;
acSpravSellers: TAction;
acDeviceIncome: TAction;
acDevicePassport: TAction;
acDeviceList: TAction;
acInventList: TAction;
ImageList1: TImageList;
DBNavigator1: TDBNavigator;
acSpravProducers: TAction;
ToolBar1: TToolBar;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
ToolButton4: TToolButton;
ToolButton5: TToolButton;
ToolButton6: TToolButton;
ToolButton7: TToolButton;
ToolButton8: TToolButton;
ToolButton9: TToolButton;
ToolButton10: TToolButton;
ToolButton11: TToolButton;
ToolButton12: TToolButton;
ToolButton13: TToolButton;
ToolButton14: TToolButton;
ToolButton15: TToolButton;
ToolButton16: TToolButton;
ToolButton17: TToolButton;
acRMList: TAction;
ToolButton18: TToolButton;
acAllPlacesEquipment: TAction;
ToolButton19: TToolButton;
procedure acSpravTypesExecute(Sender: TObject);
procedure acSpravParExecute(Sender: TObject);
procedure acSpravDepExecute(Sender: TObject);
procedure acSpravEmpExecute(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure acWorkInventExecute(Sender: TObject);
procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
procedure acDeviceMoveExecute(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure acDeviceSearchExecute(Sender: TObject);
procedure acDeviceHistoryMoveExecute(Sender: TObject);
procedure acDeviceHistoryWorkExecute(Sender: TObject);
procedure acPlaceHistoryWorkExecute(Sender: TObject);
procedure acSpravSellersExecute(Sender: TObject);
procedure acDeviceIncomeExecute(Sender: TObject);
procedure acDevicePassportExecute(Sender: TObject);
procedure acDeviceListExecute(Sender: TObject);
procedure acInventListExecute(Sender: TObject);
procedure acSpravProducersExecute(Sender: TObject);
procedure acRMListExecute(Sender: TObject);
procedure acAllPlacesEquipmentExecute(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
fmMain: TfmMain;

implementation

uses uDepartments, uEmployees, uParameters, uTypes, uDM, uInventory,
uDeviceMove, ADODB, DB, uHistoryMove, uHistoryDevice, uHistoryPlace,
uSellers, uIncome, uRep, uInventList, uProducers, uPlacesList;

{$R *.dfm}

procedure TfmMain.acSpravTypesExecute(Sender: TObject);
begin
fmType.Show;
end;

procedure TfmMain.acSpravParExecute(Sender: TObject);
begin
fmParameters.Show;
end;

procedure TfmMain.acSpravDepExecute(Sender: TObject);
begin
fmDepartments.Show;
end;

procedure TfmMain.acSpravEmpExecute(Sender: TObject);
begin
fmEmployees.Show;
end;

procedure TfmMain.FormShow(Sender: TObject);

//Добавление вершин - рабочих мест по подразделению:
procedure AddChild(Node: TTreeNode);
var
Child: TTreeNode;
Caption: string;
begin
DM.dstPlaces.Open;
DM.dstPlaces.First;
while not DM.dstPlaces.Eof do
begin
//Добавление вершины - раб. места:
Caption := DM.dstPlaces.FieldByName('Наименование').AsString;
if DM.dstPlaces.FieldByName('СетевоеИмя').AsString <> '' then
Caption := Caption + ' (' + DM.dstPlaces.FieldByName('СетевоеИмя').AsString + ')';
Child := TreeView1.Items.AddChild(Node, Caption);
//Data указывает на ID категории/наименования товара:
Child.Data := Pointer(DM.dstPlaces.FieldByName('ID').AsInteger);
Child.ImageIndex := 1;
DM.dstPlaces.Next;
end;
end;

var
CategTreeNode: TTreeNode;
begin
TreeView1.Items.Clear;
DM.dstDepartments.Open;
DM.dstPlaces.Open;
DM.dstDepartments.Sort := 'Наименование';
DM.dstDepartments.First;
while not DM.dstDepartments.Eof do
begin
//Добавление вершины - подразделения:
CategTreeNode := TreeView1.Items.Add(nil, DM.dstDepartments.FieldByName('Наименование').AsString);
//Data указывает на ID подразделения:
CategTreeNode.Data := Pointer(DM.dstDepartments.FieldByName('ID').AsInteger);
CategTreeNode.ImageIndex := 0;
AddChild(CategTreeNode); //Добавление списка рабочих мест по текущему подразделению
DM.dstDepartments.Next;
end;
DM.dstDepartments.Close;
DM.dstPlaces.Close;
end;

procedure TfmMain.acWorkInventExecute(Sender: TObject);
begin
fmInventory.Show;
end;

//Запрос списка оборудования на выбранном раб. месте:
procedure TfmMain.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
DM.dstDevicesAtPlace.Close;
if Assigned(TreeView1.Selected.Parent) then
DM.dstDevicesAtPlace.Parameters.ParamByName('pRM').Value := Integer(Node.Data)
else
DM.dstDevicesAtPlace.Parameters.ParamByName('pRM').Value := -1;
DM.dstDevicesAtPlace.Open;
//Действия доступны только если выбрано устройство:
acDeviceMove.Enabled := DM.dstDevicesAtPlace.Recordcount > 0;
acDeviceSearch.Enabled := DM.dstDevicesAtPlace.Recordcount > 0;
acDeviceHistoryMove.Enabled := DM.dstDevicesAtPlace.Recordcount > 0;
acDeviceHistoryWork.Enabled := DM.dstDevicesAtPlace.Recordcount > 0;
acDevicePassport.Enabled := DM.dstDevicesAtPlace.Recordcount > 0;
//Действия доступны только если выбрано раб. место, а не подразделение:
acDeviceList.Enabled := Assigned(Node.Parent);
acPlaceHistoryWork.Enabled := Assigned(Node.Parent);
end;

//Перемещение устройства с раб. места:
procedure TfmMain.acDeviceMoveExecute(Sender: TObject);
begin
fmDeviceMove.ShowModal;
TreeView1Change(Self, TreeView1.Selected);
end;

procedure TfmMain.FormCreate(Sender: TObject);
begin
acDeviceMove.Enabled := False;
acDeviceSearch.Enabled := False;
acDevicePassport.Enabled := False;
acDeviceHistoryMove.Enabled := False;
acDeviceList.Enabled := False;
acPlaceHistoryWork.Enabled := False;
end;

//Поиск выбранного устройства по инвентарному номеру на форме учета:
procedure TfmMain.acDeviceSearchExecute(Sender: TObject);
begin
DM.dstDeviceSearch.Parameters.ParamByName('pInvN').Value :=
DM.dstDevicesAtPlace.FieldByName('ИнвN').AsString;
DM.dstDeviceSearch.Open;
fmInventory.Show;
if DM.dstTypes.Locate('ID', DM.dstDeviceSearch.FieldByName('ТипID').AsInteger, []) then
begin
fmInventory.dblcbType.KeyValue := DM.dstTypes.FieldByName('ID').AsInteger;
if DM.dstModels.Locate('ID', DM.dstDeviceSearch.FieldByName('МодельID').AsInteger, []) then
DM.dstDevices.Locate('ИнвN', DM.dstDeviceSearch.FieldByName('ИнвN').AsString, []);
end;
DM.dstDeviceSearch.Close;
end;

//Вывод на экран истории перемещения устройства:
procedure TfmMain.acDeviceHistoryMoveExecute(Sender: TObject);
begin
DM.dstHistoryMove.Parameters.ParamByName('pInvN').Value :=
DM.dstDevicesAtPlace.FieldByName('ИнвN').AsString;
DM.dstHistoryMove.Open;
fmHistoryMove.lbName.Caption :=
DM.dstDevicesAtPlace.FieldByName('Устройство').AsString +
'. Инв. № ' + DM.dstDevicesAtPlace.FieldByName('ИнвN').AsString;
fmHistoryMove.Caption := 'История перемещения ' + fmHistoryMove.lbName.Caption;
fmHistoryMove.Show;
end;

//Вывод на экран истории обслуживания устройства:
procedure TfmMain.acDeviceHistoryWorkExecute(Sender: TObject);
begin
fmHistoryDevice.lbName.Caption :=
DM.dstDevicesAtPlace.FieldByName('Устройство').AsString +
'. Инв. № ' + DM.dstDevicesAtPlace.FieldByName('ИнвN').AsString;
fmHistoryDevice.Caption := 'История обслуживания ' + fmHistoryDevice.lbName.Caption;
fmHistoryDevice.Show;
end;

//Вывод на экран истории обслуживания устройства:
procedure TfmMain.acPlaceHistoryWorkExecute(Sender: TObject);
begin
fmHistoryPlace.lbName.Caption := TreeView1.Selected.Text;
fmHistoryPlace.Caption := 'История обслуживания РМ ' + TreeView1.Selected.Text;
DM.dstAllPlaces.Open;
if DM.dstAllPlaces.Locate('ID', Integer(TreeView1.Selected.Data), []) then
fmHistoryPlace.Show;
end;

procedure TfmMain.acSpravSellersExecute(Sender: TObject);
begin
fmSellers.Show;
end;

procedure TfmMain.acDeviceIncomeExecute(Sender: TObject);
begin
fmIncome.Show;
end;

procedure TfmMain.acDevicePassportExecute(Sender: TObject);
begin
Rep_Passport(DM.dstDevicesAtPlace.FieldbyName('ИнвN').AsString);
end;

procedure TfmMain.acDeviceListExecute(Sender: TObject);
begin
Rep_Universal(DBGrid1, 3, 'Оборудование на РМ ' + TreeView1.Selected.Text);
end;

procedure TfmMain.acInventListExecute(Sender: TObject);
begin
fmInventList.Show;
end;

procedure TfmMain.acSpravProducersExecute(Sender: TObject);
begin
fmProducers.Show;
end;

procedure TfmMain.acRMListExecute(Sender: TObject);
begin
fmPlacesList.ShowModal;
FormShow(Self);
end;

procedure TfmMain.acAllPlacesEquipmentExecute(Sender: TObject);
begin
DM.dstDevicesAtPlace.DisableControls; //Отключаем на время отображение данных в сетке
Rep_AllPlacesEquipment;
DM.dstDevicesAtPlace.EnableControls;
TreeView1Change(Self, TreeView1.Selected);
end;

end.

 

unit uParameters;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Buttons, DBCtrls, Grids, DBGrids;

type
TfmParameters = class(TForm)
Panel1: TPanel;
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
bbtExit: TBitBtn;
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;

var
fmParameters: TfmParameters;

implementation

uses uDM, uInventory;

{$R *.dfm}

procedure TfmParameters.FormShow(Sender: TObject);
begin
DM.dstParameters.Open;
DM.dstParameters.Sort := 'Наименование'
end;

procedure TfmParameters.FormClose(Sender: TObject; var Action: TCloseAction);
begin
//Набор данных остается открытым, если открыты формы, где он используется:
if not fmInventory.Showing then
DM.dstParameters.Close;
end;

end.

 

unit uPlacesList;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Buttons, DBCtrls, Grids, DBGrids;

type
TfmPlacesList = class(TForm)
Panel1: TPanel;
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
bbtExit: TBitBtn;
bbtPrint: TBitBtn;
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure bbtPrintClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
fmPlacesList: TfmPlacesList;

implementation

uses uDM, uRep;

{$R *.dfm}

procedure TfmPlacesList.FormShow(Sender: TObject);
begin
DM.dstPlaces2.Open;
DM.dstPlaces2.Sort := '═ршьхэютрэшх';
end;

procedure TfmPlacesList.FormClose(Sender: TObject; var Action: TCloseAction);
begin
DM.dstPlaces2.Close;
end;

procedure TfmPlacesList.bbtPrintClick(Sender: TObject);
begin
Rep_Universal(DBGrid1, 7, Self.Caption);
end;

end.

 

unit uProducers;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Buttons, DBCtrls, Grids, DBGrids;

type
TfmProducers = class(TForm)
Panel1: TPanel;
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
bbtExit: TBitBtn;
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;

var
fmProducers: TfmProducers;

implementation

uses uDM, uInventory;

{$R *.dfm}

procedure TfmProducers.FormShow(Sender: TObject);
begin
DM.dstProducers.Open;
DM.dstProducers.Sort := 'Производитель';
end;

procedure TfmProducers.FormClose(Sender: TObject; var Action: TCloseAction);
begin
//Набор данных остается открытым, если открыты формы, где он используется:
if not fmInventory.Showing then
DM.dstProducers.Close;
end;

end.

 

unit uRep;
//Модуль для формирования отчетов и документов

interface
uses
Windows, SysUtils, Classes, ComObj, DB, Controls, Forms, ADODB, Math, DBGrids;

procedure Rep_Universal(ADBGrid: TDBGrid; NumCol: Integer; ACaption: string);
procedure Rep_Passport(DeviceID: string);
procedure Rep_DeviceMove;
procedure Rep_AllPlacesEquipment;

implementation
uses
uDM, DateUtils, Dialogs;

//Формирование отчета по выбранному набору данных (вывод заголовков видимых
//полей и их значений):
procedure Rep_Universal(ADBGrid: TDBGrid; NumCol: Integer; ACaption: string);
var
Excel: Variant;
i, j, Width: Integer;
begin
Excel := CreateOleObject('Excel.Application');
Screen.Cursor := crHourGlass;
try
try
Excel.Application.EnableEvents := False;
Excel.Workbooks.Add;
for i:=0 to NumCol-1 do
begin
//Вывод в шапку таблицы названий полей из DBGrid'а:
Excel.Cells[5,i+1] := ADBGrid.Columns[i].Title.Caption;
//Форматирование заголовка:
Width := Min(30, Trunc(ADBGrid.Columns[i].Width * 0.2));
Excel.Cells[5,i+1].ColumnWidth := Width;
Excel.Cells[5,i+1].Font.Bold := True;
end;

Excel.Cells[1,1] := Date;
Excel.Cells[3,1] := ACaption;
Excel.Cells[3,1].Font.Bold := True;
Excel.Cells[3,1].Font.Size := 12;
i := 5;
//Экспорт данных из таблиц БД:
with ADBGrid.DataSource.DataSet do
begin
DisableControls; //Отключаем сетку на время формирования отчета
First;
while not Eof do
begin
Inc(i);
//Выводятся NumCol первых полей таблицы, отображенных в DBGrid'е:
for j:=0 to NumCol-1 do
Excel.Cells[i,j+1] := FieldByName(ADBGrid.Columns[j].FieldName).AsString;
Next;
end;
end; //with
Excel.Application.EnableEvents := True;
Excel.Visible := True;
except
Excel.Quit;
end;
finally
ADBGrid.DataSource.DataSet.EnableControls;
Screen.Cursor := crDefault;
ADBGrid.Enabled := True;
end;
end;

//Формирование паспорта устройства:
procedure Rep_Passport(DeviceID: string);
var
Excel: Variant;
WorkbookName: string;
PosInc, i: Integer;
begin
//Шаблон хранится в папке Шаблоны:
WorkbookName := GetCurrentDir + '\Шаблоны\' + 'Паспорт устройства.xlt';
Excel := CreateOleObject('Excel.Application');
try
Excel.Workbooks.Open(WorkbookName);
//Экспорт данных из таблицы БД:
with DM do
begin
dstAllDevices.Open;
if dstAllDevices.Locate('ИнвN', DeviceID, []) then
begin
Excel.Cells[1,7] := DeviceID;
Excel.Cells[3,4] := dstAllDevices.FieldByName('Тип').AsString;
Excel.Cells[4,4] := dstAllDevices.FieldByName('Наименование').AsString;
Excel.Cells[5,4] := DeviceID;
Excel.Cells[6,4] := dstAllDevices.FieldByName('СерийныйN').AsString;
Excel.Cells[7,4] := dstAllDevices.FieldByName('Профилактика').AsString;
Excel.Cells[8,4] := dstAllDevices.FieldByName('Амортизация').AsString;
Excel.Cells[3,12] := dstAllDevices.FieldByName('Поставщик').AsString;
if not dstAllDevices.FieldByName('Счет').IsNull then
Excel.Cells[4,12] := '№ ' + dstAllDevices.FieldByName('Счет').AsString +
' от ' + dstAllDevices.FieldByName('СчетДата').AsString;
if not dstAllDevices.FieldByName('СчетФактура').IsNull then
Excel.Cells[5,12] := '№ ' + dstAllDevices.FieldByName('СчетФактура').AsString +
' от ' + dstAllDevices.FieldByName('СчетФактураДата').AsString;
if not dstAllDevices.FieldByName('Накладная').IsNull then
Excel.Cells[6,12] := '№ ' + dstAllDevices.FieldByName('Накладная').AsString +
' от ' + dstAllDevices.FieldByName('НакладнаяДата').AsString;
Excel.Cells[7,12] := dstAllDevices.FieldByName('Цена').AsFloat;

i:=0;
PosInc := 11;

//Экспорт данных из таблиц БД:
dstHistoryMove.Parameters.ParamByName('pInvN').Value := DeviceID;
dstHistoryMove.Open;
dstHistoryMove.First;
while not dstHistoryMove.Eof do
begin
//Добавление новой строки:
if i <> 0 then
begin
Excel.Rows.Item[PosInc+i].Select;
Excel.Selection.Insert;
Excel.Rows.Item[PosInc].Select;
Excel.Selection.Copy;
Excel.Rows.Item[PosInc+i].Select;
Excel.ActiveSheet.Paste;
Excel.Application.CutCopyMode := False;

end;

Excel.Cells[i+PosInc,1] := dstHistoryMove.FieldByName('Дата').AsString;
Excel.Cells[i+PosInc,3] := dstHistoryMove.FieldByName('Подразделение').AsString;
Excel.Cells[i+PosInc,8] := dstHistoryMove.FieldByName('РабМесто').AsString;
Excel.Cells[i+PosInc,13] := dstHistoryMove.FieldByName('СетевоеИмя').AsString;
dstHistoryMove.Next;
Inc(i);
end; //while
dstHistoryMove.Close;
end; //if Locate
dstAllDevices.Close;
end; //with
Excel.Visible := True;
except
Excel.Quit;
end;
end;

//Формирование накладной на внутреннее перемещение:
procedure Rep_DeviceMove;
var Excel: Variant;
WorkbookName: string;
begin
//Шаблон хранится в папке Шаблоны:
WorkbookName := GetCurrentDir + '\Шаблоны\Накладная на перемещение.xlt';
Excel := CreateOleObject('Excel.Application');
try
Excel.Workbooks.Open(WorkbookName);
//Экспорт данных из таблиц БД:
with DM do
begin
Excel.Cells[16,111] := Date;
Excel.Cells[22,11] := DM.dstDevicesAtPlace.FieldByName('Устройство').AsString;
Excel.Cells[22,60] := DM.dstDevicesAtPlace.FieldByName('ДатаВвода').AsString;
Excel.Cells[22,81] := DM.dstDevicesAtPlace.FieldByName('ИнвN').AsString;
Excel.Cells[22,118] := DM.dstDevicesAtPlace.FieldByName('Цена').AsFloat;
Excel.Cells[22,141] := DM.dstDevicesAtPlace.FieldByName('Цена').AsFloat;
Excel.Cells[56,141] := DM.dstDevicesAtPlace.FieldByName('Цена').AsFloat;
end; //with
Excel.Visible := True;
except
Excel.Quit;
end;
end;

//Формирование отчета "Устройства по рабочим местам":
procedure Rep_AllPlacesEquipment;
var
Excel: Variant;
i: Integer;
Caption: string;
begin
Excel := CreateOleObject('Excel.Application');
Screen.Cursor := crHourGlass;
try
try
Excel.Application.EnableEvents := False;
Excel.Workbooks.Add;

Excel.Cells[1,1] := Date;
Excel.Cells[3,3] := 'Устройства по рабочим местам';
Excel.Cells[3,3].Font.Bold := True;
Excel.Cells[3,3].Font.Size := 14;

i := 5;
DM.dstPlaces2.Open;
DM.dstPlaces2.Sort := 'Наименование';
DM.dstPlaces2.First;
//Цикл по раб. местам:
while not DM.dstPlaces2.Eof do
begin
//Определение списка устройств на текущем раб. месте:
DM.dstDevicesAtPlace.Close;
DM.dstDevicesAtPlace.Parameters.ParamByName('pRM').Value := DM.dstPlaces2.FieldByName('ID').AsInteger;
DM.dstDevicesAtPlace.Open;
//Данные по раб. месту выводим только если к нему приписаны какие-либо устройства:
if DM.dstDevicesAtPlace.RecordCount > 0 then
begin
Caption := DM.dstPlaces2.FieldByName('Наименование').AsString;
if DM.dstPlaces2.FieldByName('СетевоеИмя').AsString <> '' then
Caption := Caption + ' (' + DM.dstPlaces2.FieldByName('СетевоеИмя').AsString + ')';
Excel.Cells[i,1] := Caption;
Excel.Cells[i,1].Font.Bold := True;
Excel.Cells[i,1].Font.Size := 12;
Inc(i);
//Заголовки столбцов:
Excel.Cells[i,2] := 'Инв. №';
Excel.Cells[i,3] := 'Устройство';
Excel.Cells[i,4] := 'Дата размещения';
Excel.Cells[i,3].ColumnWidth := 50;
Excel.Cells[i,2].Font.Bold := True;
Excel.Cells[i,3].Font.Bold := True;
Excel.Cells[i,4].Font.Bold := True;
Inc(i);

DM.dstDevicesAtPlace.First;
//Цикл по устройствам на раб. месте:
while not DM.dstDevicesAtPlace.Eof do
begin
Excel.Cells[i,2] := DM.dstDevicesAtPlace.FieldByName('ИнвN').AsString;
Excel.Cells[i,3] := DM.dstDevicesAtPlace.FieldByName('Устройство').AsString;
Excel.Cells[i,4] := DM.dstDevicesAtPlace.FieldByName('Дата').AsString;

DM.dstDevicesAtPlace.Next;
Inc(i);
end;
Inc(i, 2);
end;
DM.dstPlaces2.Next;
end; //while
DM.dstPlaces2.Close;
Excel.Application.EnableEvents := True;
Excel.Visible := True;
except
Excel.Quit;
end;
finally
Screen.Cursor := crDefault;
end;
end;


end.

 

unit uSellers;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Buttons, DBCtrls, Grids, DBGrids;

type
TfmSellers = class(TForm)
Panel1: TPanel;
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
bbtExit: TBitBtn;
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;

var
fmSellers: TfmSellers;

implementation

uses uDM, uIncome;

{$R *.dfm}

procedure TfmSellers.FormShow(Sender: TObject);
begin
DM.dstSellers.Open;
end;

procedure TfmSellers.FormClose(Sender: TObject; var Action: TCloseAction);
begin
//Набор данных остается открытым, если открыты формы, где он используется:
if not fmIncome.Showing then
DM.dstSellers.Close;
end;

end.

 

unit uTypes;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Buttons, DBCtrls, Grids, DBGrids;

type
TfmType = class(TForm)
Panel1: TPanel;
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
bbtExit: TBitBtn;
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;

var
fmType: TfmType;

implementation

uses uDM, uInventory;

{$R *.dfm}

procedure TfmType.FormShow(Sender: TObject);
begin
DM.dstTypes2.Open;
DM.dstTypes2.Sort := '═ршьхэютрэшх'
end;

procedure TfmType.FormClose(Sender: TObject; var Action: TCloseAction);
begin
DM.dstTypes2.Close;
end;

end.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ЭКРАННЫЕ ФОРМЫ
Приложение Б
(справочное)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


ФОРМЫ ВХОДНЫХ И ВЫХОДНЫХ
ДОКУМЕНТОВ
Приложение В
(справочное)

 

 

 

 

 

 

 

 

 

 

 

 

 

 




Комментарий:

Дипломная работа - отлично!


Рекомендовать другу
50/50         Партнёрка
Отзывы