Создание автоматизированного рабочего места оператора сервисного центра

  • Вид работы:
    Дипломная (ВКР)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    912,06 Кб
  • Опубликовано:
    2013-02-16
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Создание автоматизированного рабочего места оператора сервисного центра

Содержание

Введение

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

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

.1 Общие сведения

.2 Структура предприятия

.3 Особенности работы оператора сервисного центра

. Обзор аналогичного существующего ПО

. Требования к разрабатываемому ПО

.1 Требования к информационному обеспечению

.2 Требования к программному обеспечению

.3 Требования к техническому обеспечению

. Разработка моделей данных

.1 Схема базы данных

.2 Концептуальная модель данных

. Разработка модулей и структуры системы

.1 Разработка структуры системы

.2 Разработка схемы базы данных

. Проектирование и разработка интерфейса

.1 Выбор языка программирования

.2 Схема функционирования модулей

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

. Экономическое обоснование стоимости программного продукта

. Охрана труда и окружающей среды

.1 Потенциально опасные и вредные производственные факторы

.2 Обеспечение электробезопасности

.3 Обеспечение санитарно-гигиенических требований к помещениям и рабочим местам программистов

.4 Противопожарная защита

Заключение

Список используемых источников

Приложения

Введение


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

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

В таких системах АРМ является главным инструментом общения человека с вычислительных системах, используемый для контроля производственно-хозяйственной деятельности, изменения значений отдельных данных в АИС для решения текущих задач и анализа функций управления.

Эффективность АРМ следует рассматривать как интегральный показатель уровня реализации приведенных выше принципов, отнесенного к затратам по созданию и эксплуатации системы.

Функционирование АРМ может дать эффект только при условии правильного распределения функций и нагрузки между человеком и машинными средствами обработки информации, ядром которых является ЭВМ. Лишь тогда АРМ станет средством повышения не только производительности труда и эффективности управления, но и социальной комфортности специалистов.

В основу классификации АРМ может быть положен ряд классификационных признаков. С учетом областей применения возможна классификация АРМ по функциональному признаку:

АРМ административно - управленческого персонала;

АРМ проектировщика радиоэлектронной аппаратуры, автоматизированных систем управления и т.д.

АРМ специалиста в области экономики, математики, физики, и т. д.

АРМ производственно - технологического назначения.

Важным классификационным признаком АРМ является режим его эксплуатации, по которому выделяются одиночный, групповой и сетевой режимы эксплуатации.

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

 

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


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

На современном этапе автоматизации управления общественным производством наиболее перспективным является автоматизация планово-управленческих функций на базе персональных ЭВМ, установленных непосредственно на рабочих местах специалистов.

Эти системы получили широкое распространение в организационном управлении под названием автоматизированных рабочих мест (АРМ).

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

Целью дипломного проекта является разработка программного приложения для автоматизации процесс хранения и обработки данных «автоматизированное рабочее место оператора сервисного центра»

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

Возможность хранения списка клиентов в файле на жестком диске

Возможность добавления новых записей к базе данных

Возможность формирования отчетов по заданной записи

Возможность резервного копирования и восстановления базы данных

Отображение актуальной информации в главном окне программы

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

Список фирм клиентов

Список адресов клиентов

Список контактных лиц

Список заявок клиентов

Список оборудования, заявленное клиентом как неисправное

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

Список выполненных ремонтов

Список штатных инженеров

Служебная информация штатных инженеров

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

Тип оборудования.

Марка и модель.

Серийный номер.

Описание неисправности со слов клиента.

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

Номер гарантийного талона, дата выдачи и срок действия (если такой иметься).

Дата ремонта, описание выполненных работ (если ремонт производился).

Марка, модель и серийный номер нового оборудования (если ремонт был признан нерентабельным, и была произведена замена оборудования).

Стоимость произведенного сервисного обслуживания.

Также должна быть возможность вывода формирования отчета по серийному номеру оборудования. В таком отчете должно быть только описание ремонта оборудования (информация о клиенте не обязательно).

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

Резервное копирование необходимо для возможности быстрого и недорогого восстановления информации (документов, программ, настроек и т. д.) в случае утери рабочей копии информации по какой-либо причине.

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

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

 

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

 

.1 Общие сведения


Разрабатываемое мною программное обеспечение предназначено для развивающейся компании «Синтал».

ООО "СИНТАЛ" оказывает следующие услуги:

1.      Гарантийное обслуживание компьютерного оборудования

2.      Послегарантийный ремонт и сервисное обслуживание

а также:

Диагностика неисправности

Замена неисправных запчастей

Ремонт

Обеспечение необходимой документацией

Диагностика компьютера - процесс сложный и ответственный, только диагностика и ремонт компьютера, проведённые специалистом ООО "СИНТАЛ" гарантирует качество и стабильность в работе компьютера и сохранность информации.

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

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

Качественная диагностика неисправностей компьютера - это не только большой опыт, но и профессиональные знания, которые были не раз проверены нашими клиентами.

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

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

 

.2 Структура предприятия


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

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

Рисунок 2.1 - Структура организации.

Достоинства линейно - штабной структуры:

         более глубокая, чем в линейной, проработка стратегических вопросов; некоторая разгрузка высших руководителей;

         привлечения внешних консультантов и экспертов;

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

2.3 Особенности работы оператора сервисного центра


Оперативный и качественный сервис - это залог успешной деятельности Сервисного Центра и гарантия долговременных взаимовыгодных отношений с клиентами.

Оперативность и качество сервисного обслуживания обеспечиваются:

высокой квалификацией технического персонала Сервисного Центра;

наличием единой информационной базы;

отлаженной системой обработки поступаемых заявок;

эффективным использованием транспорта и мобильной связи;

наличием хорошей материально-технической базы (запчасти, технологическое и контрольно-поверочное оборудование, инструмент);

Основными операциями, выполняемыми оператором сервисного центра являются:

Прием заявок от клиентов

Сохранение заявок в базе данных

Слежение за ходом ремонта и занесения в базу данных свежих сведений о проведенных диагностиках или ремонтах

Формирование отчетов о выполненной работе для фирм-клиентов

 

3. Обзор аналогичного существующего ПО


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

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

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

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

Мини-Сервис-Центр 1.1 является одной из таких оболочек.

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

Основные возможности программы "Мини-Сервис-Центр":

Учет основных действий в Сервис-Центре: оформление заказов-нарядов, отслеживание этапов выполнения работ и оплат.

8 категорий цен для работ и 8 категорий цен на детали.

Одновременный учет в рублях и долларах с возможностью изменения курсов валют.

Печать основных форм документов: заказ-наряд, акт.

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

 

4. Требования к разрабатываемому ПО

 

.1 Требования к информационному обеспечению


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

Заявка <#"601413.files/image003.gif">

Рисунок 5.1 - Схема базы данных.

 

5.2 Концептуальная модель данных


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

Рисунок 5.2 - Концептуальная модель данных.

 

6. Разработка модулей и структуры системы

 

.1 Разработка структуры системы


Структуру системы можно наглядно показать на диорамах Use case.

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

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

Рисунок 6.1 - Диаграмма прецедентов.

Рисунок 6.2 - Диаграмма сотрудничества. Диагностика.

Рисунок 6.3 - Диаграмма сотрудничества. Добавление заявки.

Рисунок 6.4 - Диаграмма сотрудничества. Добавление расписки.

Рисунок 6.5 - Диаграмма сотрудничества. Обновление элементов расписки.

Рисунок 6.6 - Диаграмма сотрудничества. Отчет по заявке.

Рисунок 6.7 - Диаграмма сотрудничества. Отчет по ремонту.

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

Рисунок 6.8 - Диаграмма классов.

Рисунок 6.9 - Диаграмма последовательности. Диагностика.

Рисунок 6.10 - Диаграмма последовательности. Добавление расписки.

Рисунок 6.11 - Диаграмма последовательности. Добавление заявки.

Рисунок 6.12 - Диаграмма последовательности. Обновление элементов расписки.

Рисунок 6.13 - Диаграмма последовательности. Отчет по заявке.

Рисунок 6.14 - Диаграмма последовательности. Отчет по ремонту.

Рисунок 6.15 - Диаграмма схем состояний. Диагностика.

Рисунок 6.16 - Диаграмма схем состояний. Добавление заявки.

Рисунок 6.17 - Диаграмма схем состояний. Добавление расписки.

Рисунок 6.18 - Диаграмма схем состояний. Обновление элемента расписки.

Рисунок 6.19 - Диаграмма схем состояний. Отчет по заявке.

 

.2 Разработка схемы базы данных


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

Главной таблицей будет таблица “Заявка ”. Она будет содержать номер заявки, данные о клиенте, код контактного лица, даты и состояние заявки. Список свойств таблицы приведен в таблице 6.1.

Таблица 6.1 - Список свойств таблицы «Заявка»

Идентификатор

Тип значения

Длина поля

Уникальное

Обязательное

Ключевое

Примечание

Номер_заявки

Целое

5

Да

Да

Да

Номер заявки

Код_клиента

Целое

5

Нет

Да

Нет

Код клиента для связи таблиц

Код_контактного_лица

Целое

5

Нет

Да

Нет

Код контактного лица клиента для связи таблиц

Дата_получения

Текст

8

Нет

Да

Нет

Дата получения заказа

Срок_выполнения

Текст

8

Нет

Нет

Нет

Желаемый срок выполнения заказа, указанный в заявке

Дата_закрытия

Текст

8

Нет

Нет

Нет

Дата ремонта последнего оборудования


Второй по значимости является таблица ремонт оборудования. Она будет содержать номер заявки, к которой она принадлежит, дату приема оборудования, логическую переменную, сведетельствующую о выполнении ремонта и переменные, служащие для связи с остальными таблицами. Список свойств таблицы приведен в таблице 6.2.

Таблица 6.2. - Список свойств таблицы «Ремонт оборудования»

Идентификатор

Тип значения

Длина поля

Уникальное

Обязательное

Ключевое

Примечание

Номер расписки

Целое

5

Да

Да

Да

Номер расписки, выданной при приеме данного оборудования

Код заявки

Целое

5

Нет

Да

Нет

Код заявки, в которой было заявлено о неисправности данного оборудования. Служит для связи таблиц

Оборудование

Целое

5

Нет

Да

Нет

Код оборудования. Служит для связи таблиц

Код неисправности

Целое

5

Да

Да

Нет

Код неисправности. Служит для связи таблиц

Инженер

Целое

5

Нет

Нет

Нет

Код инженера. Служит для связи таблиц

Описание_ремонта

Целое

5

Да

Нет

Нет

Код ремонтных операций. Служит для связи таблиц

Дата приема

Текст

8

Нет

Да

Нет

Дата получения оборудования

Гарантия до ремонта

Целое

5

Нет

Нет

Нет

Код гарантийного талона, который был выдан до ремонта.

Гарантия после ремонта

Целое

5

Да

Нет

Нет

Код гарантийного талона, который выдает сервисный центр после ремонта. Служит для связи таблиц

Выполнено

Логическая

True\ False

Нет

Да

Нет

Переменная, показывающая отремонтировано ли оборудование


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

Таблица 6.3 - Список свойств таблицы «Оборудование»

Идентификатор

Тип значения

Длина поля

Уникальное

Обязательное

Ключевое

Примечание

Код оборудования

Целое

5

Да

Да

Нет

Код оборудования. Служит для связи таблиц.

SN

Целое

5

Да

Да

Нет

Сирийный номер оборудования

Тип оборудования

Текст

20

Нет

Да

Нет

Тип оборудования

Марка

Текст

20

Нет

Да

Нет

Марка производителя оборудования

Модель

Текст

10

Нет

Да

Нет

Модель оборудования


Неисправность, заявленная компанией-клиентом, код проведенной диагностики и переменная, хранящая ответ на вопрос распространяется ли гарантия на эту поломку, занесено в таблицу «Неисправность». Список свойств таблицы приведен в таблице 6.4.

Идентификатор

Тип значения

Длина поля

Уникальное

Обязательное

Ключевое

Примечание

Код неисправности

Целое

5

Да

Да

Да

Код неисправности. Служит для связи таблиц

Признаки неисправности

Текст

50

Нет

Да

Нет

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

Диагностика

Целое

5

Да

Нет

Нет

Код диагностики.Служит для связи таблиц.

Распространение гарантии

Логическая

True\ false

Нет

Нет

Нет

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


Номер диагностики, дата проведения и результат заносятся в таблицу «Диагностика». Список свойств таблицы приведен в таблице 6.5.

Таблица 6.5 - Список свойств таблицы «Диагностика»

Идентификатор

Тип значения

Длина поля

Уникальное

Обязательное

Ключевое

Примечание

Номер диагностики

Целое

5

Да

Да

Да

Номер проведенной диагностики

Дата проведения

Текст

8

Нет

Да

Нет

Дата, когда была проведена диагностика

Результат диагностики

Текст

50

Нет

Да

Нет

Окончательное описание поломки, полученное благодаря диагностики.


В таблице «Описание ремонта» указывается проводился ли ремонт или же оборудование было заменено. Если был проведен ремонт, то он описуется, если была проведена замена оборудования, то оно указывается в соответсвующем поле. Список свойств таблицы приведен в таблице 6.6.

Таблица 6.6 - Список свойств таблицы «Описание ремонта»

Идентификатор

Тип значения

Длина поля

Уникальное

Обязательное

Ключевое

Примечание

Код ремонта

Целое

5

Да

Да

Да

Код ремонтных операций. Служит для связи таблиц

Замена\ремонт

Логическая

True\ false

Нет

Да

Нет

Логическая переменная определяющая было ли оборудование заменено.

Описание ремонта

Текст

50

Нет

Нет

Нет

Описание выполненого над оборудованием ремонта

Новое оборудование

Целое

5

Да

Нет

Нет

Если была произведена замена, то требуется указать код нового оборудования. Служит для связи таблиц.

Стоимость ремонта

Целое

3

Нет

Да

Нет

Затраты на ремонт, потраченные фирмой.

Дата ремонта

Текст

8

Нет

Да

Нет

Дата проведения ремонта.


Информация о гарантийном талоне и описание предыдущих ремонтов содержится в таблице «Гарантии» (таблица 6.7).

Таблица 6.7 - Список свойств таблицы «Гарантии»

Идентификатор

Тип значения

Длина поля

Уникальное

Обязательное

Ключевое

Примечание

№ гарантийного талона

Целое

5

Да

Да

Да

Номер гарантийного талона. Используеться для связи таблиц.

Дата выдачи

Текст

8

Нет

Да

Нет

Дата выдачи гарантийгого талона.

Срок гарантии

Текст

8

Нет

Да

Нет

Срок окончания действия гарантийного талона.

Осуществлялись ли ремонты

Логическая

True\ false

Нет

Да

Нет

Логическая переменная, определяющая проводились ли ремонты данного оборудования

Описание ремонтов

Текст

150

Нет

Нет

Нет

Если ремонты данного оборудования проводились, то их необходимо описать в этом поле

Информация о штате инженеров, а именно его имя, фамилия, номер мобильного телефона, должность и адрес проживания находиться в таблице «Инженер». Список свойств таблицы приведен в таблице 6.8.

Таблица 6.8 - Список свойств таблицы «Инженер»

Идентификатор

Тип значения

Длина поля

Уникальное

Обязательное

Ключевое

Примечание

Код инженера

Целое

5

Да

Да

Да

Номер инженера. Служит для связания таблиц.

Ф И О

Текст

64

Да

Да

Нет

Имя, фамилия и отчество инженера

Мобильный телефон

Целое

16

Да

Да

Нет

Номер мобильного телефона инженера

Адрес

Целое

5

Да

Да

Нет

Код адреса проживания. Служит для связи таблиц

Должность

Целое

5

Да

Да

Нет

Код служебной информации о инженере. Служит для связи таблиц.


Адрес проживания инженера и номер его домашнего телефона находятся в таблице «Адрес работников» (таблица 6.9).

Таблица 6.9 - Список свойств таблицы «Адрес работников»

Идентифи -катор

Тип значения

Длина поля

Уникальное

Обязательное

Ключевое

Примечание

Код

Целое

5

Да

Да

Да

Код адреса. Служит для связи таблиц

Область

Текст

15

Нет

Да

Нет

Область, в которой проживает инженер

Город

Текст

15

Нет

Да

Нет

Город, в котором проживает инженер

Район

Текст

15

Нет

Да

Нет

Район, в котором проживает инженер

Улица

Текст

15

Нет

Да

Нет

Улица, на которой проживает инженер

Дом

Целое

3

Нет

Да

Нет

Номер дома, в котором проживает инженер

Квартира

Целое

3

Нет

Да

Нет

Квартира(если есть), в котором проживает инженер

Домашний телефон

Целое

16

Да

Да

Нет

Домашний телефон инженера


Информация о занимаемой должности, стаже работы, категории инженера хранится в таблице «Служебное». Список свойств таблицы приведен в таблице 6.10.

Таблица 6.10 - Список свойств табицы «Служебное»

Идентифи- катор

Тип значения

Длина поля

Уникальное

Обязательное

Ключевое

Примечание

Код

Целое

5

Да

Да

Да

Код инжинера. Служит для связи таблиц

Должность

Текст

15

Нет

Да

Нет

Должность, занимаемая инженером

Стаж

Целое

2

Нет

Да

Нет

Стаж работы инженера на данном предприятии

Категория

Целое

1

Нет

Да

Нет

Категория инженера


Список компаний-клиентов и их контактные телефоны приведены в таблице «Клиент». Список свойств таблицы приведе в таблице 6.11.

Таблица 6.11 - Список свойств таблицы «Клиенты»

Идентифи- катор

Тип значения

Длина поля

Уникальное

Обязательное

Ключевое

Примечание

Код_компании

Целое

5

Да

Да

Да

Код компании клиента. Служит для связи таблиц

Название

Текст

25

Да

Да

Нет

Наименование предприятия

Род_деятельности

Текст

64

Нет

Да

Нет

Род деятельности предприятия

Телефон

Целое

16

Да

Да

Нет

Телефон приемной на предприятии

ID

Текст

30

Да

Да

Нет

Идентификационный номер предприятия

Целое

5

Да

Да

Нет

Код адреса компании. Служит для связи таблиц.

Список лиц, осуществляющих работу с фирмой содержатся в таблице «Контактные лица». Список свойств таблицы приведен в таблице 6.12.

Таблица 6.12 - Список свойств таблицы «Контактные лица»

Идентифи- катор

Тип значения

Длина поля

Уникальное

Обязательное

Ключевое

Примечание

Код контактного лица

Целое

5

Да

Да

Да

Код контактного лица. Служит для связи таблиц

Код предприятия

Целое

5

Нет

Да

Нет

Код предприятия, в котором работает данное контактное лицо

ФИО

Текст

64

Да

Да

Нет

Имя, фамилия и отчесво контактного лица

Должность

Текст

20

Нет

Нет

Нет

Должность, занимаемая контактным лицом

Стаж

Целое

2

Нет

Нет

Нет

Стаж работы на данном предприятии


Адреса фирм-клиентов, хранящиеся для осуществления выезда с последующим приемом несиправного оборудования содержатся в таблице «Адреса клиентов». Список свойств таблицы приведен в таблице 6.13.

Таблица 6.13 - Список свойств таблицы «Адреса клиентов»

Идентифи- катор

Тип значения

Длина поля

Уникальное

Обязательное

Ключевое

Примечание

Код

Целое

5

Да

Да

Да

Код адреса, служащий для связи таблиц

Город

Текст

20

Нет

Да

Нет

Город

Район

Текст

20

Нет

Да

Нет

Район

Улица

Текст

20

Нет

Да

Нет

Улица, на которой находится компния-клиент

Дом

Целое

3

Нет

Да

Нет

Номер дома

Офис

Целое

3

Нет

Да

Нет

Номер офиса

 

7. Проектирование и разработка интерфейса

 

.1 Выбор языка программирования


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

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

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

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

Оболочку для своей базы данных я решил писать на языке C++.

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

Язык программирования С был разработан в лабораториях Bell Laboratories (сегодня это Американская корпорация AT&T Bell Laboratories) в США в период с 1969 по 1973 год Кеном Томпсоном и Деннисом Ритчи (практически в одно время с Паскалем).

Язык С++ принято считать языком объектно-ориентированного программирования. Однако, С++ произошел от С, поэтому по-прежнему сохраняет свойства структурного языка программирования.

Язык С++ - это ключ к современному объектно-ориентированному программированию. Он создан для разработки высокопроизводительного программного обеспечения и чрезвычайно популярен среди программистов.

С/С++ ценят за его эффективность; он является самым популярным языком для создания системного программного обеспечения (операционных систем, драйверов и др.). Язык С++ - один из основных языков разработки трансляторов.

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

7.2 Схема функционирования модулей


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

Работа программы и последовательность запуска её модулей можно показать благодаря алгоритму её работы.

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

Алгоритм формирования отчета приведен на рисунке 7.2. Общий алгоритм работы программы показан на рисунке 7.3. В нем показано, какие действия происходят от момента запуска программы до её закрытия.

Рисунок 7.1 - Алгоритм заполнение базы данных.

Рисунок 7.2 - Алгоритм формирования отчета.

Рисунок 7.3 - Алгоритм работы программы.

 

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


Тестирование программного обеспечения - процесс исследования программного обеспечения <#"601413.files/image027.gif">, (9.5)

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

Т пл - плановый срок службы оборудования, ч.

Срок службы оборудования рассчитывается по формуле:

Тпл = tсм * Драб * Ссл, (9.6)

где tсм - продолжительность смены, ч (tсм = 8ч);

Драб - число рабочих дней в году (Драб = 250 день в году при 40- часовой рабочей неделе с учетом праздничных дней и выходных дней);

Ссл - плановый срок службы оборудования, годы (Ссл = 5 лет).

Таким образом,

Тпл=8 ч*250*5=10000 ч

Подставив значения, получаем:

А= 6519 \10000=0,65 грн/ч

Затраты на оплату электроэнергии рассчитываются из мощности, загрузки и времени работы токоприемников (компьютеров и периферийного оборудования), а также тарифов на электроэнергию по формуле:

, (9.7)

где Аэл - тариф 1кВт-час электроэнергии, грн.;- мощность i-го токоприемника, кВт;

КПДi - коэффициент полезного действия i-го токоприемника (»0,8);

Кзагрi - коэффициент загрузки i-го токоприемника;

Величины Ni определяются по таблице характеристики используемых технических средств труда. Коэффициенты Кзагр для каждого из устройств составляют соответственно:

Кзагр для каждого из устройств составляют соответственно:

Тд=960*(1 -2/100)=940,8 (ч) - действительное время работы,

где 960 - время на непосредственную разработку программного продукта;

- процент времени на обслуживание компьютера и монитора

для компьютера с монитором- 0,98.Тариф 1кВт час электроэнергии составляет 0,56 коп. Следовательно,

Прочие издержки, связанные с обслуживанием оборудования, по факту составили 0,49 грн./ч.

Таким образом, стоимость машино-часа по формуле (9.4) равна:

См = 0,65 + 0,08 + 0,49 = 1,258грн./ч.

где Аэл - тариф 1кВт-час электроэнергии, грн.;- мощность i-го токоприемника, кВт;

КПДi - коэффициент полезного действия i-го токоприемника (»0,8);

Кзагрi - коэффициент загрузки i-го токоприемника;

Тразр - время на непосредственную разработку программного обеспечения, составило 6 недель, что при 8-ми часовом рабочем дне и 40- часовой неделе равно 240 часов.

С учетом найденных значений определяем по формуле (9.7) затраты на эксплуатацию:

Зэкспл = 1,258 * 240 = 301,9 грн.

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

Совокупные затраты на оплату труда определяются по формуле:

Зопл = mТразр + 0,3mТразр, (9.8)

где m - часовая тарифная ставка заработной платы разработчика, грн.;

Тразр - общее время разработки и реализации продукта, ч.

Оплата разработчику составляет 3700 грн., время разработки проекта составило 240 ч, т.о. часовая тарифная ставка m равна:= 3700/240 = 15,4 грн./ч.

Значит, затраты на оплату труда составляют

Зопл = 15,4*240 + 0,395*15,4*240 =5159,9 грн.

Затраты на вспомогательные материалы Звспом составили по факту 151,00 грн.

Таким образом, переменные затраты составили

Зпер = 199,2 +5159,9 +151,00 = 5510 грн.

Из полученных данных известно, что величина постоянных затрат составляет 130% от переменных затрат.

Зпост = 5159,9 *1,3 = 6707,9 грн.

Тогда, валовые издержки равны:

ВЗ = 5510+6707,9 =12217,9 грн.

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

Оптовая цена определяется по формуле:

Цопт = ВЗ + П, (9.9)

где П - прибыль, грн.;

ВЗ - валовые затраты.

Прибыль определяется выражением:

, (9.10)

где Р - уровень рентабельности продукта, %.

На предприятии уровень рентабельности должен быть равен 25%, определим:

П =12217,9 *25/100 = 3054,5 грн.

Тогда, Цопт =12217,9 +3054,5 = 15272,4 грн.

Оптово-отпускная цена (оптовая цена с учетом НДС) составит:

, (9.11)

Подставим полученные значения в формулу (), получим:

Цотп = 15272,4 +15272,4 *20/100 =5376,9 грн.

Таким образом, стоимость данного продукта составляет 18326,9грн. с учетом уровня рентабельности 25%.

10. Охрана труда и окружающей среды


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

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

10.1 Потенциально опасные и вредные производственные факторы


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

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

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

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

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

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

 

.2 Обеспечение электробезопасности


Электрический ток представляет собой скрытый тип опасности, т.к. его трудно определить в токо- и нетоковедущих частях оборудования, которые являются хорошими проводниками электричества. Смертельно опасным для жизни человека считают ток, величина которого превышает 0,05А, ток менее 0,05А - безопасен (до 1000 В). С целью предупреждения поражений электрическим током к работе должны допускаться только лица, хорошо изучившие основные правила по технике безопасности.

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

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

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

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

 

.3 Обеспечение санитарно-гигиенических требований к помещениям и рабочим местам программистов


Помещения, их размеры (площадь, объем) должны в первую очередь соответствовать количеству работающих и размещаемому в них комплекту технических средств. В них предусматриваются соответствующие параметры температуры, освещения, чистоты воздуха, обеспечивают изоляцию, от производственных шумов и т.п. Для обеспечения нормальных условий труда санитарные нормы СН 245-71 устанавливают на одного работающего, объем производственного помещения не менее 15 м3, площадь помещения выгороженного стенами или глухими перегородками не менее 4,5 м3.

Для эксплуатации ЭВМ следует предусматривать следующие помещения:

машинный зал, помещение для размещения сервисной и периферийной аппаратуры, помещение для хранения запасных деталей, инструментов, приборов (ЗИП);

помещения для размещения приточно-вытяжных вентиляторов;

помещение для персонала;

помещение для приема-выдачи информации.

Основные помещения располагаются в непосредственной близости друг от друга. Их оборудуют общеобменной вентиляцией и искусственным освещением. К помещению машинного зала и хранения магнитных носителей информации предъявляются особые требования. Площадь машинного зала должна соответствовать площади необходимой по заводским техническим условиям данного типа ЭВМ.

Высота зала над технологическим полом до подвесного потолка должна быть 33,5 м. Расстояние подвесным и основным потолками при этом должно быть 0,5-0,8 м. Высоту подпольного пространства принимают равной 0,2-0,6 м.

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

Снижение шума, создаваемого на рабочих местах ВЦ внутренними источниками, а также шума проникающего извне, является очень важной задачей. Снижение шума в источнике излучения можно обеспечить применением упругих прокладок между основанием машины, прибора и опорной поверхностью. В качестве прокладок используются резина, войлок, пробка, различной конструкции амортизаторы. Под настольные шумящие аппараты можно подкладывать мягкие коврики из синтетических материалов, а под ножки столов, на которых они установлены, - прокладки из мягкой резины, войлока, толщиной 6-8 мм. Крепление прокладок возможно путем приклейки их к опорным частям.

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

Рациональная планировка помещения, размещения оборудования является важным фактором, позволяющим снизить шум при существующем оборудовании ЭВМ.

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

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

ослабить шум самих источников (применение экранов, звукоизолирующих кожухов);

снизить эффект суммарного воздействия отраженных звуковых волн (звукопоглощающие поверхности конструкций);

применять рациональное расположение оборудования;

использовать архитектурно-планировочные и технологические решения изоляций источников шума.

 

.4 Противопожарная защита


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

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

Пожары представляют особую опасность, так как сопряжены с большими материальными потерями.

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

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

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

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

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

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

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

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

Газовые огнетушители применяются для тушения жидких и твердых веществ, а также электроустановок, находящихся под напряжением.

 

Заключение

сервисный центр программный информационный

В ходе выполнения данной дипломной работы была разработана программа на языке высокого уровня Visual C++. А также изучены возможности данного языка. Было изучено взаимодействие программ, написанных на C++ с базами данных под управленим MS Access.

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

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

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

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

 

Список используемых источников


1.   Брудник С.С. и др. "Экономическое содержание дипломных проектов", М.: ГАНГ, 1990г, 200 с.

.     С. Гилберт, Б.Маккарти “Самоучитель Visual C++ 6 в примерах”. Издательство «ДиаСофт», 2002 г, 496 стр.

3.      В. Давыдов “Visual C++”; Петербург, 2008 г, 576 стр.

.        Майкл Дж. Янг “Visual C++ 6. Полное руководство пользователя”.

“Visual C++ 6 Руководство разработчика”. Санкт-Петербург, 2000 г, 560 стр.

.     Джесс Либерти «Освой самостоятельно С++ за 21 день», - М.: Изд. Дом «Вильямс», 2004 -288 с.

6.      Назарр К., Рихтер Дж. “Windows via C/C++. Программирование на языке Visual C++ <#"601413.files/image033.gif">

Рисунок А.1 - Уведомление о том, что не заполнены все поля.

После этого происходит проверка введенной информации. На этом этапе может появиться сообщение наподобие такого, какое приведено на рисунке А.2.

Рисунок А.2 - Уведомление о некорректности вводимой информации

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

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

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

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

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

 

Приложение Б


Экранные формы

Разработанная мною программа состоит из главного окна и 4 диалоговых. Они показаны на рисунках ниже

Рисунок Б.1 - Главное окно программы.

Рисунок Б.2 - Окно добавления заявки.

Рисунок Б.3 - Окно добавления неисправного оборудования.

Рисунок Б.4 - Окно ввода результатов диагностики.

Рисунок Б.5 - Окно ввода информации о проведенных ремонтных работах.

Приложение В


Листинг программы

//Файл «АРМ оператора СЦ.cpp»

#include "stdafx.h"

#include "АМР оператора СЦ.h"

#include "fstream.h"

#include "АМР оператора СЦSet.h"

#include "АМР оператора СЦDoc.h"

#include "АМР оператора СЦView.h"

#include "WinAddZajav.h"

#include "WinAddObr.h"

#include "WinDiag.h"

#include "WinRem.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILEchar THIS_FILE[] = __FILE__;

#endifresult = TRUE;db;recset(&db);zSQL;IDZak;Buff, Buff2,tekn;izav;lpszConnect =

_T("Driver={Microsoft Access Driver (*.mdb)};DSN='';DBQ=C:\\Program Files\\АРМ оператора СЦ\\База данных.mdb;");bms2,bms;Zakaz

{public:iZajav;iKlient;KL;szKlient;szDtPriem;szDtSrok;szDtVipoln;};Oboryd

{ public:Tip;marka;model;SN;dtpriem;neisp;diagnis;stadija()

{ if (diagnis != "")

{return "Проведена диагноcтика";}(dtpriem != "")

{ return "Оборудование принято";}

{ return "Поступил заказ";}}neispravnost()

{ if(diagnis != "")

{return diagnis;}

{ return neisp;}}

};mtek,mpro,mper;m2tek, m2pro,m2per;AddToFile (CString _1)

{_2;.GetFieldValue(_1, _2);(_2 == "")

{return " *значение не задано* ";}

{ _2 = " " + _2 + " ";_2;}

};CMyView::OnButton1()

{

{ result = db.OpenEx(lpszConnect, CDatabase::noOdbcDialog);= "SELECT Заявка.Дата_закрытия, Заявка.Номер_заявки, Клиенты.Название, Заявка.Срок_выполнения FROM Клиенты INNER JOIN Заявка ON Клиенты.Код_компании = Заявка.Код_клиента;";.Open(CRecordset::forwardOnly, zSQL, CRecordset::readOnly);= true;(!recset.IsEOF())

{ recset.GetFieldValue("Дата_закрытия", Buff2);.GetFieldValue("Номер_заявки", Buff);.GetFieldValue("Срок_выполнения", mtek.szDtSrok);.GetFieldValue("Название", mtek.szKlient);.MoveNext();.iZajav = atoi(Buff);(Buff2 == "")

{ if (bms)

{ bms = false;.iZajav = mtek.iZajav;.szDtSrok = mtek.szDtSrok;.szKlient = mtek.szKlient;}

{ mpro.iZajav = mper.iZajav;.szDtSrok = mper.szDtSrok;.szKlient = mper.szKlient;.iZajav = mtek.iZajav;.szDtSrok = mtek.szDtSrok;.szKlient = mtek.szKlient;};((mper.iZajav == izav) && (mper.iZajav != mpro.iZajav))

{ Buff.Format(_T("%d"), mpro.iZajav);(IDC_EDIT1,Buff);(IDC_EDIT2,mpro.szKlient);(IDC_EDIT3,mpro.szDtSrok);= mpro.iZajav;__Kon2;}}}.iZajav = mtek.iZajav;.szDtSrok = mtek.szDtSrok;.szKlient = mtek.szKlient;.Format(_T("%d"), mpro.iZajav);(IDC_EDIT1,Buff);(IDC_EDIT2,mpro.szKlient);(IDC_EDIT3,mpro.szDtSrok);

__Kon2:.Close();a=0,b=0;.Format(_T("%d"), mpro.iZajav);= "SELECT [Ремонт оборудования].[Номер расписки]"

"FROM [Ремонт оборудования]"

"WHERE ((([Ремонт оборудования].[Код заявки])=" + Buff + "));";.Open(CRecordset::forwardOnly, zSQL, CRecordset::readOnly);(!recset.IsEOF())

{ a++;.MoveNext();}.Close();.Format(_T("%d"), mpro.iZajav);= "SELECT [Ремонт оборудования].[Номер расписки]"

"FROM [Ремонт оборудования]"

"WHERE ((([Ремонт оборудования].[Код заявки])=" + Buff + ") AND (([Ремонт оборудования].Выполнено)=true));";.Open(CRecordset::forwardOnly, zSQL, CRecordset::readOnly);(!recset.IsEOF())

{ b++;.MoveNext();}.Close();.Format(_T("%d"), b);.Format(_T("%d"), a);= "Выполнено " + Buff + " из " + Buff2;(IDC_EDIT4,Buff); }_ALL(e)

{ }_CATCH_ALL.Close();}CMyView::OnButton2()

{TRY

{ result = db.OpenEx(lpszConnect, CDatabase::noOdbcDialog);= "SELECT Заявка.Дата_закрытия, Заявка.Номер_заявки, Клиенты.Название, Заявка.Срок_выполнения FROM Клиенты INNER JOIN Заявка ON Клиенты.Код_компании = Заявка.Код_клиента;";.Open(CRecordset::forwardOnly, zSQL, CRecordset::readOnly);= true;(!recset.IsEOF())

{ recset.GetFieldValue("Дата_закрытия", Buff2);.GetFieldValue("Номер_заявки", Buff);.GetFieldValue("Срок_выполнения", mtek.szDtSrok);.GetFieldValue("Название", mtek.szKlient);.MoveNext();.iZajav = atoi(Buff);(Buff2 == "")

{ if (bms)

{= false;.iZajav = mtek.iZajav;.szDtSrok = mtek.szDtSrok;.szKlient = mtek.szKlient;}(mtek.iZajav > mpro.iZajav)

{ Buff.Format(_T("%d"), mtek.iZajav);(IDC_EDIT1,Buff);(IDC_EDIT2,mtek.szKlient);(IDC_EDIT3,mtek.szDtSrok);.iZajav = mtek.iZajav;.szDtSrok = mtek.szDtSrok;.szKlient = mtek.szKlient;= mtek.iZajav;__Kon1;}}}.iZajav = mper.iZajav;.szDtSrok = mper.szDtSrok;.szKlient = mper.szKlient;.Format(_T("%d"), mper.iZajav);(IDC_EDIT1,Buff);(IDC_EDIT2,mper.szKlient);(IDC_EDIT3,mper.szDtSrok);= mper.iZajav;

__Kon1:.Close();a=0,b=0;.Format(_T("%d"), mpro.iZajav);= "SELECT [Ремонт оборудования].[Номер расписки]"

"FROM [Ремонт оборудования]"

"WHERE ((([Ремонт оборудования].[Код заявки])=" + Buff + "));";.Open(CRecordset::forwardOnly, zSQL, CRecordset::readOnly);(!recset.IsEOF())

{ a++;.MoveNext();}.Close();.Format(_T("%d"), mpro.iZajav);= "SELECT [Ремонт оборудования].[Номер расписки]"

"FROM [Ремонт оборудования]"

"WHERE ((([Ремонт оборудования].[Код заявки])=" + Buff + ") AND (([Ремонт оборудования].Выполнено)=true));";.Open(CRecordset::forwardOnly, zSQL, CRecordset::readOnly);(!recset.IsEOF())

{ b++;.MoveNext();}.Close();.Format(_T("%d"), b);.Format(_T("%d"), a);= "Выполнено " + Buff + " из " + Buff2;(IDC_EDIT4,Buff);}_ALL(e)

{ }_CATCH_ALL.Close();}CMyView::OnButton6()

{ DeleteFile("C:\\Program Files\\АРМ оператора СЦ\\Отчет по заявке.txt");(IDC_EDIT1,Buff);

{ result = db.OpenEx(lpszConnect, CDatabase::noOdbcDialog);= "SELECT Заявка.Номер_заявки, Клиенты.Название, [Контактные лица].ФИО, [Контактные лица].Должность, Заявка.Дата_получения, Заявка.Срок_выполнения FROM Клиенты INNER JOIN ([Контактные лица] INNER JOIN Заявка ON [Контактные лица].[Код контактного лица] = Заявка.Код_контактного_лица) ON Клиенты.Код_компании = Заявка.Код_клиента WHERE (((Заявка.Номер_заявки)=" + Buff + "));";.Open(CRecordset::forwardOnly, zSQL, CRecordset::readOnly);(recset.IsEOF())

{AfxMessageBox(("Заявка не найдена"),MB_OK);}

{ofstream outfile("C:\\Program Files\\АРМ оператора СЦ\\Отчет по заявке.txt");<< "Заявка №" << AddToFile("Номер_заявки") << "\nОт " << AddToFile("Дата_получения") << ";\nКомпания " << AddToFile("Название") << "просит забрать перечисленое ниже оборудование и выполнить его ремонт.\nСдачу оборудования на фирме осуществит " << AddToFile("ФИО") << "("<< AddToFile("Должность") << ")\nРемонт оборудования необходимо выполнить до" << AddToFile ("Срок_выполнения") << "\n\n\n----------------";.Close();= "SELECT [Ремонт оборудования].*, Оборудование.*, Неисправность.[Признаки неисправности], Неисправность.[Распространение гарантии], Диагностика.*, Инженер.*, [Описание ремонта].[Описание ремонта], [Описание ремонта].[Дата ремонта], Гарантии.*, [Описание ремонта].[Стоимость ремонта]"

" FROM Гарантии RIGHT JOIN (Диагностика RIGHT JOIN (Инженер RIGHT JOIN (Неисправность RIGHT JOIN (Оборудование RIGHT JOIN ([Описание ремонта] RIGHT JOIN [Ремонт оборудования] ON [Описание ремонта].[Код ремонта] = [Ремонт оборудования].[Описание_ремонта]) ON Оборудование.[Код оборудования] = [Ремонт оборудования].Оборудование) ON Неисправность.[Код неисправности] = [Ремонт оборудования].[Код неисправности]) ON Инженер.[Код инженера] = [Ремонт оборудования].Инженер) ON Диагностика.[Номер диагностики] = Неисправность.Диагностика) ON Гарантии.[Номер гарантийного талона] = [Ремонт оборудования].[Гарантия до ремонта]"

" WHERE ((([Ремонт оборудования].[Код заявки])=" + Buff + "));";.Open(CRecordset::forwardOnly, zSQL, CRecordset::readOnly);(!recset.IsEOF())

{ outfile << "\n\n\n\nРасписка №" << AddToFile("Номер расписки") << "\n" << AddToFile("Тип оборудования") << AddToFile("Марка") << AddToFile("Модель");<< "\nДата приема:" << AddToFile("Дата приема") << "(" << AddToFile("Ф И О") << ")\n\nОписание поломки:\nЖалобы клиента:\n\t" << AddToFile("Признаки неисправности") ;.GetFieldValue("Номер диагностики", Buff2);(Buff2 != "")<< "\nРезультат диагностики(" << AddToFile("Дата проведения") << "№" << Buff << "):\n\t" <<AddToFile("Результат диагностики");<< "\nДиагностика не проводилась.";<< "\n\nОписание ремонта:\n";.GetFieldValue("Описание ремонта", Buff2);(Buff2 != "")

{ outfile << "Выполненые работы:\n\t" << Buff2 << "\nСтоимость ремонта составила " << AddToFile("Стоимость ремонта") << "грн.\n";.GetFieldValue("Гарантия до ремонта", Buff2);(Buff2 == "")

{<< "Данное оборудование было на гарантийном обслуживании (№" << Buff2 << " до " << AddToFile("Срок гарантии") << ")";

}

{<< "Данное оборудование не было на гарантийном обслуживании ";}}<< "Ремонт не проводился.\n";.MoveNext();

}

/////////////.close();.Close();(NULL, "open", "C:/Program Files/АРМ оператора СЦ/Отчет по заявке.txt",NULL, NULL, SW_SHOWNORMAL);}}_ALL(e)

{ }_CATCH_ALL.Close();}CMyView::OnButton3()

{

{ db.OpenEx(lpszConnect, CDatabase::noOdbcDialog);= "SELECT Оборудование.[Тип оборудования], Оборудование.Марка, Оборудование.Модель, Оборудование.SN, Неисправность.[Признаки неисправности], Диагностика.[Результат диагностики], [Ремонт оборудования].[Дата приема] "

"FROM (Диагностика RIGHT JOIN Неисправность ON Диагностика.[Номер диагностики] = Неисправность.Диагностика) RIGHT JOIN (Оборудование INNER JOIN ([Описание ремонта] RIGHT JOIN [Ремонт оборудования] ON [Описание ремонта].[Код ремонта] = [Ремонт оборудования].Описание_ремонта) ON Оборудование.[Код оборудования] = [Ремонт оборудования].Оборудование) ON Неисправность.[Код неисправности] = [Ремонт оборудования].[Код неисправности]"

"WHERE ((([Ремонт оборудования].Выполнено)=False));";.Open(CRecordset::forwardOnly, zSQL, CRecordset::readOnly);= true;=false;(!recset.IsEOF())

{.GetFieldValue("Тип оборудования", m2tek.Tip);.GetFieldValue("Марка", m2tek.marka);.GetFieldValue("Модель", m2tek.model);.GetFieldValue("SN", m2tek.SN);.GetFieldValue("Дата приема", m2tek.dtpriem);.GetFieldValue("Признаки неисправности", m2tek.neisp);.GetFieldValue("Результат диагностики", m2tek.diagnis);.MoveNext();(bms)

{= false;per.Tip = m2tek.Tip;per.marka = m2tek.marka;per.model = m2tek.model;per.SN = m2tek.SN;per.dtpriem = m2tek.dtpriem;per.neisp = m2tek.neisp;per.diagnis = m2tek.diagnis;

}

{= true;pro.Tip = m2per.Tip;pro.marka = m2per.marka;pro.model = m2per.model;pro.SN = m2per.SN;pro.dtpriem = m2per.dtpriem;pro.neisp = m2per.neisp;pro.diagnis = m2per.diagnis;per.Tip = m2tek.Tip;per.marka = m2tek.marka;per.model = m2tek.model;per.SN = m2tek.SN;per.dtpriem = m2tek.dtpriem;per.neisp = m2tek.neisp;per.diagnis = m2tek.diagnis;

}((m2tek.SN == tekn) && bms2)

{(IDC_EDIT5, m2pro.Tip);= m2pro.marka + " " + m2pro.model;(IDC_EDIT6, Buff);(IDC_EDIT7, m2pro.SN);(IDC_EDIT8, m2pro.neispravnost());(IDC_EDIT9, m2pro.stadija());= m2pro.SN;_m2;}}(IDC_EDIT5, m2per.Tip);= m2per.marka + " " + m2per.model;(IDC_EDIT6, Buff);(IDC_EDIT7, m2per.SN);(IDC_EDIT8, m2per.neispravnost());(IDC_EDIT9, m2per.stadija());= m2pro.SN;}

_m2:.Close();_ALL(e)

{}_CATCH_ALL.Close();

{

{ db.OpenEx(lpszConnect, CDatabase::noOdbcDialog);= "SELECT Оборудование.[Тип оборудования], Оборудование.Марка, Оборудование.Модель, Оборудование.SN, Неисправность.[Признаки неисправности], Диагностика.[Результат диагностики], [Ремонт оборудования].[Дата приема] "

"FROM (Диагностика RIGHT JOIN Неисправность ON Диагностика.[Номер диагностики] = Неисправность.Диагностика) RIGHT JOIN (Оборудование INNER JOIN ([Описание ремонта] RIGHT JOIN [Ремонт оборудования] ON [Описание ремонта].[Код ремонта] = [Ремонт оборудования].Описание_ремонта) ON Оборудование.[Код оборудования] = [Ремонт оборудования].Оборудование) ON Неисправность.[Код неисправности] = [Ремонт оборудования].[Код неисправности]"

"WHERE ((([Ремонт оборудования].Выполнено)=False));";.Open(CRecordset::forwardOnly, zSQL, CRecordset::readOnly);= true;(!recset.IsEOF())

{ recset.GetFieldValue("Тип оборудования", m2tek.Tip);.GetFieldValue("Марка", m2tek.marka);.GetFieldValue("Модель", m2tek.model);.GetFieldValue("SN", m2tek.SN);.GetFieldValue("Дата приема", m2tek.dtpriem);.GetFieldValue("Признаки неисправности", m2tek.neisp);.GetFieldValue("Результат диагностики", m2tek.diagnis);.MoveNext();(bms)

{ bms = false;per.Tip = m2tek.Tip;per.marka = m2tek.marka;per.model = m2tek.model;per.SN = m2tek.SN;per.dtpriem = m2tek.dtpriem;per.neisp = m2tek.neisp;per.diagnis = m2tek.diagnis;

}(tekn == m2tek.SN)

{(recset.IsEOF())

{_m3;

}

{.GetFieldValue("Тип оборудования", m2tek.Tip);.GetFieldValue("Марка", m2tek.marka);.GetFieldValue("Модель", m2tek.model);.GetFieldValue("SN", m2tek.SN);.GetFieldValue("Дата приема", m2tek.dtpriem);.GetFieldValue("Признаки неисправности", m2tek.neisp);.GetFieldValue("Результат диагностики", m2tek.diagnis);(IDC_EDIT5, m2tek.Tip);= m2tek.marka + " " + m2tek.model;(IDC_EDIT6, Buff);(IDC_EDIT7, m2tek.SN);(IDC_EDIT8, m2tek.neispravnost());(IDC_EDIT9, m2tek.stadija());= m2tek.SN;_m1;}}}

_m3:(IDC_EDIT5, m2per.Tip);= m2per.marka + " " + m2per.model;(IDC_EDIT6, Buff);(IDC_EDIT7, m2per.SN);(IDC_EDIT8, m2per.neispravnost());(IDC_EDIT9, m2per.stadija());= m2per.SN;}

_m1:.Close();_ALL(e)

{

}_CATCH_ALL.Close();

}CMyView::OnButton10()

{ GetDlgItemText(IDC_EDIT7,Buff);

{ result = db.OpenEx(lpszConnect, CDatabase::noOdbcDialog);= "SELECT [Ремонт оборудования].*, Оборудование.*, Неисправность.[Признаки неисправности], Неисправность.[Распространение гарантии], Диагностика.*, Инженер.*, [Описание ремонта].[Описание ремонта], [Описание ремонта].[Дата ремонта], Гарантии.*, [Описание ремонта].[Стоимость ремонта]"

" FROM Гарантии RIGHT JOIN (Диагностика RIGHT JOIN (Инженер RIGHT JOIN (Неисправность RIGHT JOIN (Оборудование RIGHT JOIN ([Описание ремонта] RIGHT JOIN [Ремонт оборудования] ON [Описание ремонта].[Код ремонта] = [Ремонт оборудования].[Описание_ремонта]) ON Оборудование.[Код оборудования] = [Ремонт оборудования].Оборудование) ON Неисправность.[Код неисправности] = [Ремонт оборудования].[Код неисправности]) ON Инженер.[Код инженера] = [Ремонт оборудования].Инженер) ON Диагностика.[Номер диагностики] = Неисправность.Диагностика) ON Гарантии.[Номер гарантийного талона] = [Ремонт оборудования].[Гарантия до ремонта]"

" WHERE (((Оборудование.SN)=" + Buff + "));";.Open(CRecordset::forwardOnly, zSQL, CRecordset::readOnly);(recset.IsEOF())

{(("Расписка не найдена"),MB_OK);

}

{outfile("C:\\Program Files\\АРМ оператора СЦ\\Отчет по неисправности.txt");<< "Расписка №" << AddToFile("Номер расписки") << "\n" << AddToFile("Тип оборудования") << AddToFile("Марка") << AddToFile("Модель");<< "\nДата приема:" << AddToFile("Дата приема") << "(" << AddToFile("Ф И О") << ")\n\nОписание поломки:\nЖалобы клиента:\n\t" << AddToFile("Признаки неисправности") ;.GetFieldValue("Номер диагностики", Buff2);(Buff2 != "")<< "\nРезультат диагностики(" << AddToFile("Дата проведения") << "№" << Buff << "):\n\t" <<AddToFile("Результат диагностики");<< "\nДиагностика не проводилась.";<< "\n\nОписание ремонта:\n";.GetFieldValue("Описание ремонта", Buff2);(Buff2 != "")

{<< "Выполненые работы:\n\t" << Buff2 << "\nСтоимость ремонта составила " << AddToFile("Стоимость ремонта") << "грн.\n";.GetFieldValue("Гарантия до ремонта", Buff2);(Buff2 == "")

{<< "Данное оборудование было на гарантийном обслуживании (№" << Buff2 << " до " << AddToFile("Срок гарантии") << ")";

}

{<< "Данное оборудование не было на гарантийном обслуживании ";

}

}<< "Ремонт не проводился.\n";.close();}}(NULL, "open", "C:/Program Files/АРМ оператора СЦ/Отчет по неисправности.txt",NULL, NULL, SW_SHOWNORMAL);.Close();_ALL(e)

{}_CATCH_ALL.Close();}CMyView::OnButton5()

{ CWinAddZajav a;.DoModal();}CMyView::OnButton7()

{a;.DoModal();

}CMyView::OnButton8()

{ CWinDiag a;.DoModal();}CMyView::OnButton9()

{a;.DoModal();}CMyView::OnButton11()

{aa = "C:/Program Files/АРМ оператора СЦ/База данных.mdb";bb = "C:/Program Files/АРМ оператора СЦ/РК/База данных.mdb";t=false;(aa, bb, t);

}CMyView::OnButton12()

{aa = "C:/Program Files/АРМ оператора СЦ/РК/База данных.mdb";bb = "C:/Program Files/АРМ оператора СЦ/База данных.mdb";t=false;(aa, bb, t);

}

//Файл «WinAddZajav.cpp»

#include "stdafx.h"

#include "АМР оператора СЦ.h"

#include "WinAddZajav.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILEchar THIS_FILE[] = __FILE__;

#endiflpszConnect =

_T("Driver={Microsoft Access Driver (*.mdb)};DSN='';DBQ=C:\\Program Files\\АРМ оператора СЦ\\База данных.mdb;");Zakaz

{:iZajav;iKlient;KL;szKlient;szDtPriem;sxDtSrok;szDtVipoln;

};CWinAddZajav::OnOK()

{zak;zSQL,Buff,Buff2;result = TRUE;db;recset(&db);

{= db.OpenEx(lpszConnect, CDatabase::noOdbcDialog);(IDC_EDIT4,zak.szDtPriem);(IDC_EDIT5,zak.sxDtSrok);(IDC_EDIT1,Buff);(Buff == "")

{(("Поле номера записи не заполнено!"),MB_OK);__Kon;

}

{= "SELECT Заявка.Номер_заявки FROM Заявка WHERE (((Заявка.Номер_заявки)=" + Buff + "));";.Open(CRecordset::forwardOnly, zSQL, CRecordset::readOnly);(!recset.IsEOF())

{(("Заявка с данным номером уже существует!"),MB_OK);__Kon;

}

}.Close();.iZajav = atoi(Buff);(IDC_EDIT2,Buff);(Buff == "")

{(("Поле компании клиента не заполнено!"),MB_OK);__Kon;

}

{= "SELECT Клиенты.[Код_компании] FROM Клиенты WHERE (((Клиенты.Название)='" + Buff + "'));";.Open(CRecordset::forwardOnly, zSQL, CRecordset::readOnly);(!recset.IsEOF()).GetFieldValue("Код_компании", Buff);

{(("Компания клиент не найдена!"),MB_OK);__Kon;

}.iKlient = atoi(Buff);

}.Close();(Buff == "")

{(("Поле контактного лица не заполнено!"),MB_OK);__Kon;

}

{= "SELECT [Контактные лица].[Код контактного лица], [Контактные лица].[Код предприятия] FROM [Контактные лица] WHERE ((([Контактные лица].ФИО)='" + Buff + "'));";.Open(CRecordset::forwardOnly, zSQL, CRecordset::readOnly);(!recset.IsEOF())

{.GetFieldValue("Код контактного лица", Buff);.GetFieldValue("Код предприятия", Buff2);

}

{(("Контактное лицо не найдено!"),MB_OK);__Kon;

}(atoi(Buff2) != zak.iKlient)

{(("Контактное лицо является представителем другой компании!"),MB_OK);__Kon;

}

{.KL = atoi(Buff);

}

}.Close();

/////////////////Добавление в базу данных.Format(_T("%d"), zak.iZajav);= "INSERT INTO Заявка (Номер_заявки,Код_клиента,Код_контактного_лица,Дата_получения,Срок_выполнения) VALUES (" + Buff + ",";.Format(_T("%d"), zak.iKlient);= zSQL + Buff + ",";.Format(_T("%d"), zak.KL);= zSQL + Buff + ",'" + zak.szDtPriem + "','" + zak.sxDtSrok + "')";.ExecuteSQL(zSQL);

}_ALL(e)

{

}_CATCH_ALL

__Kon:.Close();

}CWinAddZajav::OnCancel()

{::OnCancel();

}

//Файл «WinAddObr.cpp»

#include "stdafx.h"

#include "АМР оператора СЦ.h"

#include "WinAddObr.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILEchar THIS_FILE[] = __FILE__;

#endifBuff3, Buff4,zSQL2,Obor,Ingen;db2;recset2(&db2);bms3;lpszConnect2 =

_T("Driver={Microsoft Access Driver (*.mdb)};DSN='';DBQ=C:\\Program Files\\АРМ оператора СЦ\\База данных.mdb;");CWinAddObr::OnButton1()

{(IDC_EDIT9,Buff3);(Buff3 == "")

{AfxMessageBox(("Заполните поле серийного номера"),MB_OK);

}

{

{.OpenEx(lpszConnect2, CDatabase::noOdbcDialog);= "SELECT Оборудование.SN, Оборудование.[Тип оборудования], Оборудование.Марка, Оборудование.Модель"

" FROM Оборудование"

" WHERE (((Оборудование.SN)=" + Buff3 + "));";.Open(CRecordset::forwardOnly, zSQL2, CRecordset::readOnly);(!recset2.IsEOF())

{.GetFieldValue("Тип оборудования", Buff4);(IDC_EDIT6,Buff4);.GetFieldValue("Марка", Buff4);(IDC_EDIT7,Buff4);.GetFieldValue("Модель", Buff4);(IDC_EDIT8,Buff4);

}

{(("Оборудование не найдено"),MB_OK);(IDC_EDIT9,"");

}

}.Close();_ALL(e)

{

}_CATCH_ALL.Close();

}

}CWinAddObr::OnButton2()

{= true;(IDC_EDIT6,Buff3);(Buff3 == "")

{bms3 = false;}(IDC_EDIT7,Buff3);(Buff3 == "")

{= false;

}(IDC_EDIT8,Buff3);(Buff3 == "")

{= false;

}(IDC_EDIT9,Buff3);(Buff3 == "")

{bms3 = false;}(!bms3)

{AfxMessageBox(("Не все поля заполнены"),MB_OK);}

{

{= "SELECT Оборудование.SN"

" FROM Оборудование"

" WHERE (((Оборудование.SN)=[]));";.ExecuteSQL(zSQL2);(!recset2.IsEOF())

{.Close();(("Оборудование с данным серийным номером уже существует в базе данных.\n Для просмотра нажмите поиск."),MB_OK);

}

{.Close();.OpenEx(lpszConnect2, CDatabase::noOdbcDialog);(IDC_EDIT6,Buff3);= "INSERT INTO Оборудование ([Тип оборудования], Марка, Модель, SN) VALUES ('" + Buff3 + "','";(IDC_EDIT7,Buff3);= zSQL2 + Buff3 + "','";(IDC_EDIT8,Buff3);= zSQL2 + Buff3 + "','";(IDC_EDIT9,Buff3);= zSQL2 + Buff3 + "')";.ExecuteSQL(zSQL2);

}

}_ALL(e)

{

}_CATCH_ALL.Close();(("Оборудование добавлено"),MB_OK);

}

}CWinAddObr::OnButton3()

{(IDC_EDIT6,"");(IDC_EDIT7,"");(IDC_EDIT8,"");(IDC_EDIT9,"");

}CWinAddObr::OnButton4()

{(IDC_EDIT10,"");(IDC_EDIT11,"");(IDC_EDIT12,"");

}CWinAddObr::OnButton5()

{= true;(IDC_EDIT10,Buff3);(Buff3 == "")

{= false;

}(IDC_EDIT11,Buff3);(Buff3 == "")

{= false;

}(IDC_EDIT12,Buff3);(Buff3 == "")

{= false;

}(!bms3)

{(("Не все поля заполнены"),MB_OK);

}

{

{.OpenEx(lpszConnect2, CDatabase::noOdbcDialog);(IDC_EDIT10,Buff3);= "SELECT Гарантии.[Номер гарантийного талона] "

"FROM Гарантии "

"WHERE (((Гарантии.[Номер гарантийного талона])=" + Buff3 + "));";.Open(CRecordset::forwardOnly, zSQL2, CRecordset::readOnly);(!recset2.IsEOF())

{.Close();(("Гарантийный талон с данным номером уже существует в базе данных.\n Для просмотра нажмите поиск."),MB_OK);

}

{.Close();(IDC_EDIT10,Buff3);= "INSERT INTO Гарантии ([Номер гарантийного талона], [Дата выдачи], [Срок гарантии]) VALUES (" + Buff3 + ",'";(IDC_EDIT11,Buff3);= zSQL2 + Buff3 + "','";(IDC_EDIT12,Buff3);= zSQL2 + Buff3 + "');";.ExecuteSQL(zSQL2);(("Гарантийный талон сохранен"),MB_OK);

}

}_ALL(e)

{}_CATCH_ALL.Close();

}}CWinAddObr::OnButton6()

{

{.OpenEx(lpszConnect2, CDatabase::noOdbcDialog);(IDC_EDIT10,Buff3);(Buff3 == "")

{(("Введите номер гарантийного талона"),MB_OK);

}

{= "SELECT Гарантии.[Номер гарантийного талона], Гарантии.[Дата выдачи], Гарантии.[Срок гарантии] "

"FROM Гарантии "

"WHERE (((Гарантии.[Номер гарантийного талона])=" + Buff3 + "));";.Open(CRecordset::forwardOnly, zSQL2, CRecordset::readOnly);(recset2.IsEOF())

{(("Гарантийный талон с данным номером в базе данных не сохранен"),MB_OK);

}

{.GetFieldValue("Дата выдачи", Buff4);(IDC_EDIT11,Buff4);.GetFieldValue("Срок гарантии", Buff4);(IDC_EDIT12,Buff4);

}

}

}.Close();_ALL(e)

{

}_CATCH_ALL.Close();}CWinAddObr::OnButton7()

{

{.OpenEx(lpszConnect2, CDatabase::noOdbcDialog);(IDC_EDIT9,Buff3);(Buff3 == "")

{(("Поле серийного номера оборудования не заполненено"),MB_OK);__m6;

}= "SELECT Оборудование.[Код оборудования] "

"FROM Оборудование "

"WHERE (((Оборудование.SN)=" + Buff3 + "));";.Open(CRecordset::forwardOnly, zSQL2, CRecordset::readOnly);(recset2.IsEOF())

{(("Оборудование с данным серийным номером не найдено"),MB_OK);.Close();__m6;

}

{.GetFieldValue("Код оборудования",Obor);.Close();

}

(IDC_EDIT1,Buff3);(Buff3 == "")

{(("Поле номера расписки не заполненено"),MB_OK);__m6;

}= "SELECT [Ремонт оборудования].[Номер расписки] "

"FROM [Ремонт оборудования] "

"WHERE ((([Ремонт оборудования].[Номер расписки])=" + Buff3 + "));";.Open(CRecordset::forwardOnly, zSQL2, CRecordset::readOnly);(!recset2.IsEOF())

{(("Расписка с данным номером уже использовалась"),MB_OK);.Close();__m6;

}.Close();(IDC_EDIT2,Buff3);(Buff3 == "")

{(("Поле номера заявки не заполненено"),MB_OK);__m6;

}= "SELECT Заявка.Номер_заявки "

"FROM Заявка "

"WHERE (((Заявка.Номер_заявки)=" + Buff3 + "));";.Open(CRecordset::forwardOnly, zSQL2, CRecordset::readOnly);(recset2.IsEOF())

{(("Заявка с данным номером не существует"),MB_OK);.Close();__m6;

}.Close();(IDC_EDIT3,Buff3);(Buff3 == "")

{(("Поле фамилии инженера не заполнено"),MB_OK);__m6;

}= "SELECT Инженер.[Код инженера] "

"FROM Инженер "

"WHERE (((Инженер.[Ф И О])='" + Buff3 + "'));";.Open(CRecordset::forwardOnly, zSQL2, CRecordset::readOnly);(recset2.IsEOF())

{(("Инженер не найден"),MB_OK);.Close();__m6;

}

{.GetFieldValue("Код инженера",Ingen);.Close();

}(IDC_EDIT5,Buff3);= "INSERT INTO Неисправность ([Признаки неисправности])"

"VALUES ('" + Buff3 + "')";.ExecuteSQL(zSQL2);= "SELECT Неисправность.[Код неисправности]"

" FROM Неисправность"

" ORDER BY Неисправность.[Код неисправности] DESC;";.Open(CRecordset::forwardOnly, zSQL2, CRecordset::readOnly);.GetFieldValue("Код неисправности", Buff4);.Close();(IDC_EDIT10,Buff3);(Buff3 != "")

{(IDC_EDIT1,Buff3);= "INSERT INTO [Ремонт оборудования] ([Номер расписки], [Код заявки], Оборудование, [Код неисправности], Инженер, [Дата приема], [Гарантия до ремонта]) "

"VALUES (" + Buff3 + ",";(IDC_EDIT2,Buff3);= zSQL2 + Buff3 + "," + Obor + "," + Buff4 + "," + Ingen + ",'";(IDC_EDIT4,Buff3);(IDC_EDIT10,Buff4);= zSQL2 + Buff3 + "'," + Buff4 + ")";.ExecuteSQL(zSQL2);(("Добавлено"),MB_OK);

}

{(IDC_EDIT1,Buff3);= "INSERT INTO [Ремонт оборудования] ([Номер расписки], [Код заявки], Оборудование, [Код неисправности], Инженер, [Дата приема]) "

"VALUES (" + Buff3 + ",";(IDC_EDIT2,Buff3);= zSQL2 + Buff3 + "," + Obor + "," + Buff4 + "," + Ingen + ",'";(IDC_EDIT4,Buff3);= zSQL2 + Buff3 + "')";.ExecuteSQL(zSQL2);(("Добавлено"),MB_OK);

}

}_ALL(e)

{

}_CATCH_ALL

__m6:.Close();

}CWinAddObr::OnButton8()

{(IDC_EDIT1,"");(IDC_EDIT2,"");(IDC_EDIT3,"");(IDC_EDIT4,"");(IDC_EDIT5,"");

}CWinAddObr::OnOK()

{}CWinAddObr::OnCancel()

{::OnCancel();}CWinAddObr::OnButton9()

{

{.OpenEx(lpszConnect2, CDatabase::noOdbcDialog);(IDC_EDIT9, Buff3);(Buff3 == "")

{(("Поле серийного номера оборудования не заполненено"),MB_OK);.Close();__m5;

}= "SELECT Оборудование.SN "

"FROM Оборудование "

"WHERE (((Оборудование.SN)=" + Buff3 + "));";.Open(CRecordset::forwardOnly, zSQL2, CRecordset::readOnly);(recset2.IsEOF())

{(("Оборудование с данным серийным номером не найдено"),MB_OK);.Close();__m5;

}.Close();(IDC_EDIT1, Buff3);(Buff3 == "")

{(("Поле номера расписки не заполненено"),MB_OK);.Close();__m5;

}= "SELECT [Ремонт оборудования].[Номер расписки] "

"FROM [Ремонт оборудования] "

"WHERE ((([Ремонт оборудования].[Номер расписки])=" + Buff3 + "));";.Open(CRecordset::forwardOnly, zSQL2, CRecordset::readOnly);(!recset2.IsEOF())

{(("Расписка с данным номером уже использовалась"),MB_OK);.Close();__m5;

}.Close();(IDC_EDIT2, Buff3);(Buff3 == "")

{(("Поле номера заявки не заполненено"),MB_OK);.Close();__m5;

}= "SELECT Заявка.Номер_заявки "

"FROM Заявка "

"WHERE (((Заявка.Номер_заявки)=" + Buff3 + "));";.Open(CRecordset::forwardOnly, zSQL2, CRecordset::readOnly);(recset2.IsEOF())

{(("Заявка с данным номером не существует"),MB_OK);.Close();__m5;

}.Close();(IDC_EDIT3, Buff3);(Buff3 == "")

{(("Поле фамилии инженера не заполненено"),MB_OK);.Close();__m5;

}= "SELECT Инженер.[Ф И О] "

"FROM Инженер "

"WHERE (((Инженер.[Ф И О])='" + Buff3 + "'));";.Open(CRecordset::forwardOnly, zSQL2, CRecordset::readOnly);(recset2.IsEOF())

{(("Инженер не найден"),MB_OK);.Close();__m5;

}.Close();

}_ALL(e)

{ }_CATCH_ALL

__m5:.Close();

}

//Файл «WinDiag.cpp»

#include "stdafx.h"

#include "АМР оператора СЦ.h"

#include "WinDiag.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILEchar THIS_FILE[] = __FILE__;

#endifdb4;recset4(&db4);zSQL4,lpszConnect4 =

_T("Driver={Microsoft Access Driver (*.mdb)};DSN='';DBQ=C:\\Program Files\\АМР оператора СЦ\\База данных.mdb;");Buff8, Buff9;CWinDiag::OnButton1()

{(IDC_EDIT1,"");(IDC_EDIT2,"");(IDC_EDIT3,"");(IDC_EDIT4,"");}CWinDiag::OnButton2()

{

{.OpenEx(lpszConnect4, CDatabase::noOdbcDialog);(IDC_EDIT1, Buff8);(IDC_EDIT3, Buff9);(Buff8 == "" && Buff9 == "")

{(("Заполните поле номера расписки или серийного номера оборудования"),MB_OK);_m7;}(Buff8 != "")

{= "SELECT Оборудование.[Тип оборудования], Оборудование.Марка, Оборудование.Модель, Оборудование.SN, [Ремонт оборудования].[Номер расписки], Неисправность.[Признаки неисправности]"

" FROM Неисправность INNER JOIN (Оборудование INNER JOIN [Ремонт оборудования] ON Оборудование.[Код оборудования] = [Ремонт оборудования].Оборудование) ON Неисправность.[Код неисправности] = [Ремонт оборудования].[Код неисправности]"

" WHERE ((([Ремонт оборудования].[Номер расписки])=" + Buff8 + ") AND (([Ремонт оборудования].Выполнено)=False));";

}(Buff9 != "")

{= "SELECT Оборудование.[Тип оборудования], Оборудование.Марка, Оборудование.Модель, Оборудование.SN, [Ремонт оборудования].[Номер расписки], Неисправность.[Признаки неисправности]"

" FROM Неисправность INNER JOIN (Оборудование INNER JOIN [Ремонт оборудования] ON Оборудование.[Код оборудования] = [Ремонт оборудования].Оборудование) ON Неисправность.[Код неисправности] = [Ремонт оборудования].[Код неисправности]"

" WHERE (((Оборудование.SN)=" + Buff9 + ") AND (([Ремонт оборудования].Выполнено)=False));";

}.Open(CRecordset::forwardOnly, zSQL4, CRecordset::readOnly);(!recset4.IsEOF())

{.GetFieldValue("Тип оборудования", Buff8);= Buff8;.GetFieldValue("Марка", Buff8);= Buff9 + " " + Buff8 + " ";.GetFieldValue("Модель", Buff8);= Buff9 + Buff8;(IDC_EDIT2, Buff9);.GetFieldValue("SN", Buff8);(IDC_EDIT3, Buff8);.GetFieldValue("Номер расписки", Buff8);(IDC_EDIT1, Buff8);.GetFieldValue("Признаки неисправности", Buff8);(IDC_EDIT4, Buff8);

}

{(("Оборудование не найдено"),MB_OK);}.Close();}_ALL(e)

{}_CATCH_ALL

_m7:.Close();}CWinDiag::OnCancel()

{::OnCancel();}CWinDiag::OnOK()

{

{.OpenEx(lpszConnect4, CDatabase::noOdbcDialog);(IDC_EDIT1, Buff8);(Buff8 == "")

{(("Оборудование не выбрано"),MB_OK);

}

{= "SELECT [Ремонт оборудования].[Код неисправности]"

" FROM [Ремонт оборудования]"

" WHERE ((([Ремонт оборудования].[Номер расписки])=" + Buff8 + ") AND (([Ремонт оборудования].[Выполнено])=False));";.Open(CRecordset::forwardOnly, zSQL4, CRecordset::readOnly);(recset4.IsEOF())

{(("Данного оборудования нет в списке ожидающих ремонта"),MB_OK);.Close();

}

{.GetFieldValue("Код неисправности", Buff9);.Close();(IDC_EDIT5, Buff8);= "SELECT Диагностика.[Номер диагностики]"

" FROM Диагностика"

" WHERE (((Диагностика.[Номер диагностики])=" + Buff8 + "));";.Open(CRecordset::forwardOnly, zSQL4, CRecordset::readOnly);(!recset4.IsEOF())

{.Close();(("Диагностика с данным номером уже занесена в базу данных"),MB_OK);

}

{.Close();(IDC_EDIT5, Buff8);= "INSERT INTO Диагностика ([Номер диагностики], [Дата проведения], [Результат диагностики])"

"VALUES (" + Buff8 + ",'";(IDC_EDIT6, Buff8);= zSQL4 + Buff8 + "','";(IDC_EDIT7, Buff8);= zSQL4 + Buff8 + "')";.ExecuteSQL(zSQL4);(IDC_EDIT5, Buff8);= "UPDATE Неисправность SET Неисправность.Диагностика = " + Buff8 + ", Неисправность.[Распространение гарантии] = ";(m_b)= zSQL4 + "True";= zSQL4 + "False";= zSQL4 + " WHERE (((Неисправность.[Код неисправности])=" + Buff9 + "));";.ExecuteSQL(zSQL4);

}

}

}

}_ALL(e)

{ }_CATCH_ALL.Close();::OnCancel();}CWinDiag::OnCheck1()

{ UpdateData();}

//Файл «WinRem.cpp»

#include "stdafx.h"

#include "АМР оператора СЦ.h"

#include "WinRem.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILEchar THIS_FILE[] = __FILE__;

#endifdb3;recset3(&db3);zSQL3,lpszConnect3 =

_T("Driver={Microsoft Access Driver (*.mdb)};DSN='';DBQ=C:\\Program Files\\АРМ оператора СЦ\\База данных.mdb;");Buff5, Buff6;CWinRem::OnButton2()

{

{.OpenEx(lpszConnect3, CDatabase::noOdbcDialog);(IDC_EDIT1, Buff5);(IDC_EDIT2, Buff6);(Buff5 == "" && Buff6 == "")

{(("Заполните поле номера расписки или серийного номера оборудования"),MB_OK);_m6;

}(Buff5 != "")

{= "SELECT Оборудование.[Тип оборудования], Оборудование.Марка, Оборудование.Модель, Оборудование.SN, [Ремонт оборудования].[Номер расписки]"

" FROM Оборудование INNER JOIN [Ремонт оборудования] ON Оборудование.[Код оборудования] = [Ремонт оборудования].Оборудование"

" WHERE ((([Ремонт оборудования].[Номер расписки])=" + Buff5 + ") AND (([Ремонт оборудования].Выполнено)=False));";

}(Buff6 != "")

{= "SELECT Оборудование.[Тип оборудования], Оборудование.Марка, Оборудование.Модель, Оборудование.SN, [Ремонт оборудования].[Номер расписки]"

" FROM Оборудование INNER JOIN [Ремонт оборудования] ON Оборудование.[Код оборудования] = [Ремонт оборудования].Оборудование"

" WHERE (((Оборудование.SN)=" + Buff6 + ") AND (([Ремонт оборудования].Выполнено)=False));";

}.Open(CRecordset::forwardOnly, zSQL3, CRecordset::readOnly);(!recset3.IsEOF())

{.GetFieldValue("Тип оборудования", Buff5);= Buff5;.GetFieldValue("Марка", Buff5);= Buff6 + " " + Buff5 + " ";.GetFieldValue("Модель", Buff5);= Buff6 + Buff5;(IDC_EDIT3, Buff6);.GetFieldValue("SN", Buff5);(IDC_EDIT2, Buff5);.GetFieldValue("Номер расписки", Buff5);(IDC_EDIT1, Buff5);

}

{(("Оборудование не найдено"),MB_OK);

}.Close();

}_ALL(e)

{}_CATCH_ALL

_m6:.Close();}CWinRem::OnButton1()

{(IDC_EDIT1, "");(IDC_EDIT2, "");(IDC_EDIT3, "");

}CWinRem::OnOK()

{

{.OpenEx(lpszConnect3, CDatabase::noOdbcDialog);(IDC_EDIT1, Buff5);(IDC_EDIT4, Buff6);(Buff5 == "" && Buff6 == "")

{(("Не все поля заполнены"),MB_OK);_m0;

}= "SELECT [Ремонт оборудования].[Номер расписки]"

" FROM [Ремонт оборудования]"

" WHERE ((([Ремонт оборудования].Выполнено)=False) AND (([Ремонт оборудования].[Номер расписки])=" + Buff5 + "));";(IDC_EDIT5, Buff5);(IDC_EDIT6, Buff6);(Buff5 == "" && Buff6 == "")

{(("Не все поля заполнены"),MB_OK);_m0;

}.Open(CRecordset::forwardOnly, zSQL3, CRecordset::readOnly);(recset3.IsEOF())

{(("Выбраное оборудование не находится в очереди ожидающих ремонта"),MB_OK);.Close();_m0;

}

{.Close();

}(m_bb)

{

///Проверка заполнености полей(IDC_EDIT7, Buff5);(IDC_EDIT8, Buff6);(Buff5 == "" && Buff6 == "")

{(("Не все поля заполнены"),MB_OK);_m0;

}(IDC_EDIT9, Buff5);(IDC_EDIT10, Buff6);(Buff5 == "" && Buff6 == "")

{(("Не все поля заполнены"),MB_OK);_m0;

}

///Проверка отсутсвия этого оборудования в базе данных(IDC_EDIT10, Buff5);= "SELECT Оборудование.SN"

" FROM Оборудование"

" WHERE (((Оборудование.SN)=" + Buff5 + "));";.Open(CRecordset::forwardOnly, zSQL3, CRecordset::readOnly);(!recset3.IsEOF())

{(("Оборудование с данным серийным номером уже занесено в базу данных"),MB_OK);.Close();_m0;

}.Close();

"VALUES ('" + Buff5 + "', '" + Buff6 + "', '";(IDC_EDIT9, Buff5);(IDC_EDIT10, Buff6);= zSQL3 + Buff5 + "', " + Buff6 + ")";.ExecuteSQL(zSQL3);

///Получение кода оборудования= "SELECT Оборудование.[Код оборудования]"

" FROM Оборудование"

" ORDER BY Оборудование.[Код оборудования] DESC;";.Open(CRecordset::forwardOnly, zSQL3, CRecordset::readOnly);.IsEOF();.GetFieldValue("Код оборудования", Buff6);.Close();

///Добовление описания ремонта в базу данных(IDC_EDIT5, Buff5);= "INSERT INTO [Описание ремонта] ([Замена\\ремонт], [Описание ремонта], [Дата ремонта], [Стоимость ремонта], [Новое оборудование])"

"VALUES (True, '" + Buff5 + "', ' ";(IDC_EDIT4, Buff5);= zSQL3 + Buff5 + "', ";(IDC_EDIT6, Buff5);= zSQL3 + Buff5 + ", " + Buff6 + ")";.ExecuteSQL(zSQL3);

///Получение кода ремонта= "SELECT [Описание ремонта].[Код ремонта]"

" FROM [Описание ремонта]"

" ORDER BY [Описание ремонта].[Код ремонта] DESC;";.Open(CRecordset::forwardOnly, zSQL3, CRecordset::readOnly);.IsEOF();.GetFieldValue("Код ремонта", Buff6);.Close();

/// Добавление описания ремонта к заявке(IDC_EDIT1, Buff5);= "UPDATE [Ремонт оборудования] SET [Ремонт оборудования].Выполнено = True, [Ремонт оборудования].Описание_ремонта = " + Buff6 + "WHERE ((([Ремонт оборудования].[Номер расписки])=" + Buff5 + "));";.ExecuteSQL(zSQL3);(("Сохранено"),MB_OK);

}

{(IDC_EDIT4, Buff5);(IDC_EDIT5, Buff6);= "INSERT INTO [Описание ремонта] ([Замена\ремонт], [Описание ремонта], [Дата ремонта], [Стоимость ремонта]) "

"VALUES (False, '" + Buff6 + "', '" + Buff5 + "', ";(IDC_EDIT6, Buff5);= zSQL3 + Buff5 + ")";.ExecuteSQL(zSQL3);= "SELECT [Описание ремонта].[Код ремонта] "

"FROM [Описание ремонта] "

"ORDER BY [Описание ремонта].[Код ремонта] DESC;";.IsEOF();.GetFieldValue("Код ремонта", Buff6);.Close();(IDC_EDIT1, Buff5);= "UPDATE [Ремонт оборудования] SET [Ремонт оборудования].Описание_ремонта = '" + Buff6 + "', [Ремонт оборудования].Выполнено = True"

"WHERE ((([Ремонт оборудования].[Номер расписки])=" + Buff5 + "));";.ExecuteSQL(zSQL3);(("Сохранено"),MB_OK);

}= "";

}_ALL(e)

{ }_CATCH_ALL

_m0:.Close();::OnOK();

}CWinRem::OnCheck1()

{ SetDlgItemText(IDC_EDIT5, "Замена оборудования");();}CWinRem::OnCancel()

{ CDialog::OnCancel();}

Похожие работы на - Создание автоматизированного рабочего места оператора сервисного центра

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!