Разработка информационной системы "Учет и контроль заказов фирмы "Окна Марио"

 

Введение

фирма заказ база информационный

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

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

Разрабатываемая в данном дипломном проекте информационная система является новым решением для фирмы "Окна Марио", поскольку до настоящего момента никакой автоматизации учета деятельности фирмы не проводилось.

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

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

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

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


1. Технико-экономическое обоснование


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

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

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

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

На основании вышеизложенного поставлена цель разработать информационную систему "Учет и контроль заказов фирмы "Окна Марио".

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

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

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

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

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

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

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

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

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


2. Теоретическая часть


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

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

·база данных должна обеспечивать получение требуемых данных за приемлемое время, то есть отвечать заданным требованиям производительности;

·база данных должна удовлетворять выявленным и вновь возникающим требованиям конечных пользователей;

·база данных должна легко расширяться при реорганизации и расширении предметной области;

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

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

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

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


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


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

База данных предназначена для учета деятельности фирмы, а также для хранения данных о заказчиках и сотрудниках.

Функциональные требования к программным модулям:

·учет заказов фирмы;

·хранение персональных данных о сотрудниках;

·хранение персональных данных о заказчиках;

·формирование списка предоставляемых фирмой услуг и комплектаций;

·формирование и сводных данных по сотрудниках и исполняемых ими заказах;

·формирование отчетов по заказам.

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

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

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

Данные о сотруднике:

·Фамилия, Имя, Отчество

·Серия паспорта

·Номер паспорта

·Рабочий телефон

·E-mail

·Должность

·Дата рождения

·Адрес проживания

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

Данные о заказчике:

·Наименование (ФИО)

·Адрес проживания

·Телефон 1

·Телефон 2

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

Данные об объекте:

·Адрес объекта

·Примечание

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

·Наименование услуги

·Стоимость за единицу

·Категория

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

·Наименование комплектации

·Стоимость за единицу

·Количество на складе

·Категория

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

Данные о поставщиках:

·Наименование

·Наименование товара

·Адрес поставщика

·Стоимость товара

·ИНН поставщика

·КПП поставщика

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

Данные о заказах фирмы:

·Номер заказа

·Дата заказа

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

·Дата начала работы

·Общая сумма заказа

·Предоплата

·Вид оплаты

·Проплачен заказ

·Заказчик

·Объект

·Услуга


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


Задачи которая будет решать информационная система:

·ведение учета прихода товара от поставщика, отправка (выдача) товара и предоставление услуг по установке окон клиенту, управление доходами/расходами;

·автоматическая печать документов: фирменных бланков, счетов на оплату, счетов-фактур;

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

·формирование списка предоставляемых фирмой услуг;

·формирование и сводных данных по сотрудниках и исполняемых ими заказах;

·учет движения средств по статьям доходов и расходов;

·возможность работы в сети, одновременный доступ к одной базе с разных компьютеров;

·группировка заказов в различные категории;

·встроенные функции создания резервной копии и восстановления базы данных;

В фирме "Окна Марио" клиентам предоставляются следующие документы: счет-фактура и счет на оплату.

Счёт-фактура выставляется (направляется) продавцом <#"349" src="doc_zip1.jpg" />

Рисунок 1. Бланк счёт-фактура.

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

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

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

·идентификацию пользователя;

·проверку полномочий пользователя при работе с системой;

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

Защищённая часть системы должна использовать "слепые" пароли (при наборе пароля его символы не показываются на экране либо заменяются одним типом символов; количество символов не соответствует длине пароля).

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


Рисунок 2. Бланк счет на оплату.


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


2.3 Выбор программного обеспечения


.3.1 Основы построения баз данных

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

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

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

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

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


Рисунок 3. Архитектура СУБД: однозвенная (слева); двухзвенная (в центре); трехзвенная (справа)


В зависимости от местоположения отдельных частей СУБД различают локальные и сетевые СУБД.

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

В файл-серверных СУБД все данные обычно размещаются в одном или нескольких каталогax достаточно мощной машины, специально выделенной для этих целей и постоянно подключенной к сети. Такой компьютер называется файл-сервером - отсюда название СУБД. Безусловным достоинством СУБД этого типа является относительная простота ее создания и обслуживания - фактически все сводится лишь к развертыванию локальной сети и установке на подключенных к ней компьютерах сетевых операционных систем. Используемая в дипломном проекте язык программирования C# "умеет" использовать сетевые средства самой популярной в мире ОС - Windows для создания соответствующих клиентских мест, то есть специального программного обеспечения компьютером пользователей. Нетрудно заметить, что между локальными и файл-серверными вариантами СУБД нет особых различий, так как в них все части собственно СУБД (кроме данных) находятся на компьютере клиента. По архитектуре они обычно являются однозвенными, но в некоторых случаях могут использовать сервер приложений. Недостатком файл-серверных систем является значительная нагрузка на сеть.

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

Клиент-серверные (двухзвенные) системы значительно снижают нагрузку на сеть, так как клиент общается с данными через специализированного посредника - сервер базы данных, который размещается на машине с данными. Сервер БД принимает запрос от клиента, отыскивает в данных нужную запись и передает ее клиенту. Таким образом, по сети передаются относительно короткий запрос и единственная нужная запись, даже если соответствующий файл с данными содержит сотни тысяч записей. Запрос к серверу формируется на специальном языке структурированных запросов (Structured Query Language, SQL), поэтому часто серверы БД называются SQL-серверами. Серверы БД представляют собой относительно сложные программы, разрабатываемые различными фирмами. К ним относятся, например, Microsoft SQL Server производства корпорации Microsoft, Sybase SQL Server корпорации Sybase, Oracle производства одноименной корпорации, DB2 корпорации IBM и т. д. SQL-сервером является также и сервер InterBase корпорации Borland. Клиент-серверные СУБД масштабируются до сотен и тысяч клиентских мест. Распределенные СУБД могут содержать несколько десятков и сотен серверов БД. Количество клиентских мест в них может достигать десятков и сотен тысяч. Обычно такие СУБД работают на предприятиях государственного масштаба, отдельные подразделения которых разнесены на значительной территории. К таковым, например, относятся подразделения Министерства обороны и Министерства внутренних дел. В распределенных СУБД некоторые серверы могут дублировать друг друга с целью достижения предельно малой вероятности отказов и сбоев, которые могут исказить жизненно важную информацию. Они используют собственные региональные средства связи. Интерес к распределенным СУБД возрос в связи со стремительным развитием Интернета. Опираясь на возможности Интернета, распределенные системы строят не только предприятия государственного масштаба, но и относительно небольшие коммерческие предприятия, обеспечивая своим сотрудникам работу с корпоративными данными на дому и в командировках.

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

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

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


2.3.2 SQL - язык доступа к реляционным базам данных

Аббревиатура SQL расшифровывается как structured query language, что в переводе с английского означает "язык структурированных запросов". SQL не является полноценным языком программирования; он представляет собой всего лишь подъязык данных. В нем имеются операторы только для создания и обработки баз данных. Операторы SQL можно также использовать в хранимых процедурах и триггерах, и их можно вводить в интерактивном режиме в командной оболочке СУБД.

Язык SQL был разработан фирмой IBM в конце 1970-х годов и был принят Американским национальным институтом стандартов (ANSI) в качестве национального стандарта США в 1992 году. На этом стандарте, называемом также SQL-92, базируется версия языка. Более поздняя версия стандарта, SQL3, включает в себя ряд концепций, заимствованных из объектно-ориентированного программирования. Эта последняя версия не привлекла пристального внимания со стороны фирм-разработчиков коммерческих СУБД и на настоящий момент не представляет важности с точки зрения практической работы с базами данных

Стандарт SQL-92 обширен и всеобъемлющ. Ни одна из распространенные коммерческих СУБД, таких как DB2, Oracle или SQL Server, не реализует его полном объеме. Язык SQL ориентирован на текст. Он был разработан задолго до появления графических интерфейсов пользователя, так что для работы с ним требуется лишь текстовый редактор. Разумеется, сегодня в SQL Server, Oracle, DB2 и других СУБД имеются графические средства для выполнения многих из тех задач которые ранее могли быть выполнены только с помощью SQL. Не все из того, что позволяет делать SQL, можно осуществить с помощью графических средств; более того, в ряде случаен, па пример, для динамической генерации операторов SQL в программном коде, SQI. использовать необходимо.

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


2.3.3 Выбор СУБД

Перед администратором БД, руководителем предприятия и обычным пользователем проблема выбора СУБД возникает чаще всего перед ее приобретением и при переходе на новые аппаратно-программные средства.

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

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

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

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

К числу основных показателей пригодности программных продуктов можно отнести следующие:

. Вид программного продукта.

. Категории пользователей.

. Удобство и простота использования.

. Модель представления данных.

. Качество средин разработки.

. Качество средств защиты и контроля корректности балы данных.

. Качество коммуникационных средств.

. Фирма-разработчик.

. Стоимость.

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

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

В дипломном проекте используется мощная и надежная СУБД Microsoft SQL Server Management Studio 2008. Microsoft SQL Server Management Studio представляет собой СУБД, обеспечивающую создание информационных систем с архитектурой "клиент-сервер". SQL Server удовлетворяет требованиям, предъявляемым к системам распределенной обработки информации. Эта СУБД поддерживает: тиражирование данных, параллельную обработку, создание и обработку больших баз данных на недорогих аппаратных платформах, отличается простотой управления и использования.

Преимущества СУБД Microsoft SQL Server Management Studio 2008:

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

·высокая производительность;

·надежность работы;

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


2.3.4 Выбор системы программирования

Средства разработки программ работы с БД могут использоваться для создания разновидностей следующих программ:

клиентских программ;

серверов БД и их отдельных компонентов;

пользовательских приложений.

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

К средствам разработки пользовательских приложений относятся системы программирования, разнообразные библиотеки программ для различных языков программирования, а также пакеты автоматизации разработок (в том числе систем типа клиент-сервер). В числе наиболее распространенных можно назвать следующие инструментальные системы. Delphi и Power Builder (Borland), Visual Basic (Microsoft), Visual C# (Microsoft), SILVERRUN (Computer Advisers Inc.), S-Designer (SDP и Powersoft) и ERwin (LogicWorks).

Для разработки информационной системы "Окна Марио" выберем систему программирования Microsoft Visual Studio 2012, язык программирования C# - инструмент быстрой разработки клиент-серверных приложений.

Разработка клиентских приложений в языке программирования Microsoft Visual C# для БД реализована чрезвычайно гибко и грамотно (содержит развитые средства взаимодействия с БД, с помощью которых можно осуществлять доступ к практически любым реляционным базам данных). Любая прикладная задача ложится на него легко. Время показало правильность многих заложенных в инструмент решений.

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

Microsoft Visual Studio 2012 - интегрированная среда, упрощающая создание, отладку и развертывание приложений. Система включает мощные редакторы и новейшие методы координирования совместной деятельности разработчиков и дизайнеров. Интегрированная поддержка разработки через тестирование и новые инструменты отладки позволяют быстро и без труда находить и устранять ошибки, обеспечивая высокое качество решений.

·Создание приложений для Windows 7 - Visual Studio 2012 включает встроенные инструменты разработки для Windows 7, в том числе такие компоненты пользовательского интерфейса, как мультисенсорный ввод и лента, которые составляют основу передовой технологии Windows 7.

·Простое создание приложений на базе RIA и WPF - Новая функция привязки данных перетаскиванием (в Windows Presentation Foundation) и конструкторы Silverlight упрощают и ускоряют построение приложений для специалистов по проектированию и разработке.

·Настройка Visual Studio соответственно собственному стилю Основное улучшение IDE - включение поддержки для множества мониторов и повышение четкости текста - делает привычную среду еще более продуктивной.

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

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

·Интегрированная система контроля версий, отслеживание дефектов и автоматизация сборки Visual Studio 2012 с MSDN включает Team Foundation Server 2010, который является идеальной системой контроля версий, отслеживания дефектов и автоматизации сборки для пользователей Visual Studio. Базовая установка Team Foundation Server превосходно подходит для использования на настольных компьютерах и для начинающих пользователей, до этого работавших с Microsoft Visual SourceSafe.


2.4 Проектирование информационной системы


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

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


.4.1 Выделение сущностей

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

·Сотрудники

·Заказчики

·Объекты

·Услуги

·Комплектации

·Поставщики

·Заказы


.4.2 Анализ связей между объектами предметной области

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

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

Связь между сущностями "заказ" и "сотрудник" характеризуется сотрудником(-ами), который(-е) выполняют данный заказ.



Связь между сущностями "заказ" и "заказчик" характеризуется наличием у заказа заказчика (только одного). Хотя один заказчик может оформить несколько заказов.



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



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



Связь между сущностями "заказ" и "объект" характеризуется объектом (только одним), на который нацелена услуга заказа. Хотя один и тот же объект может быть в нескольких заказах.



Связь между сущностями "поставщик" и "комплектация" характеризуется комплектацией, которую поставляет поставщик.



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

Правило 1: Каждое поле любой таблицы должно быть уникальным.

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

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

Правило 4: Должна иметься возможность изменять значения любого поля (не входящего в первичный ключ), и это не должно повлечь за собой изменение другого поля [8].


Рисунок 4. Информационно-логическая модель


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

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

Концептуальная модель транслируется затем в модель данных, совместимую с выбранной СУБД.


.4.3 Ограничения, накладываемы на данные

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

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

Ограничения целостности могут относиться к разным объектам БД: атрибутам (полям), записям, отношениям, связям между ними и т. п.

Для полей могут использоваться следующие виды ограничений:

·Тип и формат поля автоматически допускают ввод только данных определенного типа.

·Выбор типа поля Date в формате ДД.ММ.ГГ позволит пользователю ввести только шесть чисел. При этом первая пара цифр не сможет превысить в лучшем случае значения 31, а вторая - 12.

·Задание диапазона значений, как правило, используется для числовых полей. Диапазон допустимых значений может быть ограничен с двух сторон (закрытый диапазон), а может с какой-то одной: верхней или нижней (открытый диапазон).

·Недопустимость пустого поля позволяет избежать появления в БД "ничейных" записей, в которых пропущены какие-либо обязательные атрибуты.

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

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


3. Экспериментальная часть


Основной целью построения автоматизированной информационной системы фирмы "Окна Марио" является хранение информации о деятельности фирмы (ее заказах), о ее сотрудниках и заказчиках.

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


3.1 Разработка программных модулей


.1.1 Разработка таблиц

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

·"один-ко-многим",

·"один-к-одному",

·"многие-ко-многим".

Когда одна запись в таблице А может быть связана с 0, 1 или множеством записей в таблице B, вы имеете дело со связью один-ко-мноигм. В реляционной модели данных связь один-ко-многим использует две таблицы (Рисунок 5).


Рисунок 5 Связь один-ко-многим


Схематическое представление связи один-ко-многим. Запись в таблице имеет 0, 1 или множество ассоциированных ей записей в таблице B.

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

Связь многие-ко-многим - это связь, при которой множественным записям из одной таблицы (A) могут соответствовать множественные записи из другой (B).

Связь многие-ко-многим создается с помощью трех таблиц. Две таблицы - "источника" и одна соединительная таблица. Первичный ключ соединительной таблицы A_B - составной. Она состоит из двух полей, двух внешних ключей, которые ссылаются на первичные ключи таблиц A и B (Рисунок 6).


Рисунок 6. Связь многи ко многим


Все первичные ключи должны быть уникальными. Это подразумевает и то, что комбинация полей A и B должна быть уникальной в таблице A_B.

В нашем случае связь многие-ко-многим это

·Сотрудник-заказ (несколько сотрудников могут участвовать в одно заказе, так и один сотрудник может обслуживать несколько заказов)

·Заказ-услуга (в заказе может быть несколько услуг, так и одна и та же услуга может быть в нескольких заказах)

·Заказ-комплектация (в заказе может быть несколько Комплектаций, так и одна и та же комплектация может быть в нескольких заказах)

Рассмотрим разработанные таблицы:


Таблица Заказы (Рисунок 7)


Рисунок 7. Таблица заказы

Поля таблицы Заказы:

·Id заказа

·Id объекта установки

·Id Заказчика

·Номер заказа

·Дата заказа

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

·Вид оплаты

·Предоплата

·Заказ проплачен

·Дата начала работы


Таблица Сотрудники (Рисунок 8)


Рисунок 8. Таблица сотрудники

Поля таблицы Сотрудники:

·Фамилия

·Имя

·Отчество

·Серия паспорта

·Номер паспорта

·Телефон

·Эл почта

·Должность

·День рождение

·Адрес


Таблица Заказы - Сотрудники (Рисунок 9)


Рисунок 9. Таблицы Заказы-Сотрудники

Поля таблицы Заказы-Сотрудники

·Id сотрудник

·Id Заказа

·Человеко-часы


Таблица Объекты (Рисунок 10)


Рисунок 10. Таблица Объекты

Поля таблицы объекты:

·Id объекта

·Адрес

·Примечание (вход с торца)


Таблица Услуги (Рисунок 11)


Рисунок 11. Таблица Услуги

Поля таблицы Услуги:

·Id Услуги

·Вид услуги

·Стоимость единицы


Таблица Заказы-Услуги (Рисунок 12)


Рисунок 12. Таблица Заказы-Услуги

Поля таблицы Заказы-Услуги

·Id Услуги

·Id Заказа

·Количество услуг


Таблица Комплектация (Рисунок 13)


Рисунок 13. Таблица Комплектация

Поля таблицы Комплектация:

·Id

·Id Поставщика

·Вид Комплектации

·Цена с наценкой

·Цена поставщика


Таблица Заказы-Комплектация (Рисунок 14)


Рисунок 14. Таблица Заказы-Комплектация

Поля таблицы Заказы-Комплектация:

·Id Заказа

·Id Комплектации

·Количество


Таблица Поставщики (Рисунок 15)


Рисунок 15. Таблица Поставщики

Поля таблицы Поставщики:

·Id

·Наименование

·Адрес

·ИНН

·КПП


Таблица Заказчики (Рисунок 16)


Рисунок 16. Таблица Заказчики

Поля таблицы Заказчики:

·Id

·Фамилия

·Имя

·Отчество

·Адрес проживания

·Телефон1

·Телефон2

Схема данных разработанная на основе созданных таблиц в MS SQL Server Managment Studio изображена на рис. 17.


Рисунок 17 . Схема данных


3.1.2 Разработка форм

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

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

·Добавление новых записей в таблицы (под учетной записью администратора);

·Добавление новых записей в таблицу "Order" (для всех пользователей);

·Редактирование записей в таблицах (под учетной записью администратора);

·Удаление записей в таблицах (под учетной записью администратора).

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

В дипломном проекте используются 15 форм:

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

2.MainForm - главная форма, являющаяся родительской для форм осуществляющих ввод, изменение, удаление и просмотр данных. С помощью данной формы возможен вызов дочерних форм;

.AddConfigurationForm - форма используется для добавления данных о комплектации в заказ;

.AddServiceForm - форма используется для добавления данных об услугах в заказ;

.AddCustomerForm - форма, предназначенная для добавления заказчиков в заказ;

.AddObjectForm - форма, предназначенная для добавления объектов в заказ;

.SelectEmployeeForm - форма для выбора сотрудника, исполняющего заказ;

.InsertEmployeeForm - форма добавления, удаления и изменения сотрудника в БД;

.InsertServiceForm - форма добавления, удаления и изменения услуги в БД;

.InsertConfigurationForm - форма добавления, удаления и изменения комплектации в БД;

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

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

.SplashScreenForm - форма-заставка;

.OrderPropertiesForm - форма, позволяющая выводить параметры заказа, изменять их (только под учетной записью администратора) и формировать документы счет-фактура и счет на оплату в формате документа Excel;

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

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


Рисунок 18. Схема передачи данных от форм к БД и наоборот


3.1.3 Разработка SQL запросов

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

Для добавления, изменения, удаления записей в таблицы БД разработаны SQL запросы, которые объединены в класс SqlOperation. Их можно разбить на группы:

·Запросы для поиска данных, Например запрос поиска заказа по номеру договора:o.IdOrder

,o.[OrderNumber]

,o.[OrderDate]

,o.[TermPerfomance]

,o.[PaymentKind]

,o.[AdvancePayment]

,o.[TotalSum]

,o.[OrderPaid]

,o.[BeginWorkDate]

,c.Family

,c.Name

,c.Patronomic

,c.AddressResidence

,c.Phone1

,c.Phone2

,obj.[Address]

,obj.Note[Orders] o INNER JOIN Customer c ON (o.IdCustomer = c.Id)JOIN [Objects] obj ON (obj.Id = o.IdObjectInstallation)o.OrderNumber = {0}

·Запросы для добавления данных, Например запрос добавления заказчика:INTO Customer({0}, N'{1}',N'{2}',N'{3}','{4}','{5}','{6}')

·Запросы для получения данных, Например запрос для получения списка услуг:[Id]

,[ServicesKind]

,[Cost]

,[Category][MariosWindows].[dbo].[Services]BY Category


.1.4 Разработка отчетов

Для отчетов Счет на оплату и Счет-фактура были разработаны соответствующие шаблоны в формате документа Excel (Рисунки 19,20). Посредством находящемся в свободном доступе в сети Internet методов класса формирования и считывания Excel-документов ExcelReader эти шаблоны заполняются считанными из базы параметрами.


Рисунок 19. Шаблон отчета счет на оплату


Рисунок 20. Шаблон отчета счет-фактура


3.2 Тестирование и отладка разработанной системы


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

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

При тестировании проверялись такие функции:

·ввод новой информации о сотрудниках;

·поиск заказа по номеру договора

·просмотр и/или изменение данных об услугах

·получение отчетной документации и возможность ее дальнейшей обработки и т.д.

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


Рисунок 21. Ошибка подключения к БД.


При попытке ошибочном вводе пароля система выдает сообщение, приведенное на рисунке 22.


Рисунок 22. Ошибка ввода пароля или логина.


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


Рисунок 23. Ошибочный ввод данных.


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


Рисунок 24. Повторное добавление записи


Проведенное тестирование показало, что информационная система работоспособна и ее работа корректна.


4. Документирование разработанной системы


Для запуска программы необходимо запустить приложение "Окна Марио.exe". После запуска приложение загрузится заставка (Рисунок 25).


Рисунок 25. Заставка приложения.


Заставка исчезает через 2 секунды после запуска и загружается форма авторизации (Рисунок 26), где необходимо указать расположение, наименование БД, выбрать логин ("Администратор" или "Менеджер"), ввести соответствующий пароль и нажать кнопку "Подключение".


Рисунок 26. Подключение к базе данных.


Затем загрузится основная форма (Рисунок 27), где пользователю необходимо заполнить все необходимые поля, выбрать исполнителей, услуги и комплектацию и нажать кнопку "Добавить заказ".


Рисунок 27. Основная форма приложения.


Добавление заказчика осуществляется кнопкой "…" или заказчик выбирается из сформированного списка, если он уже заказывал работы либо услуги. После нажатия на кнопку "…" загружается форма добавления заказчика (Рисунок 28).


Рисунок 28. Добавление Заказчика.


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

Добавление объекта осуществляется кнопкой "…" или объект выбирается из сформированного списка, если на этом объекте уже работали сотрудники. После нажатия на кнопку "…" загружается форма добавления объекта (Рисунок 29).

Рисунок 29. Добавление Объекта.


На этой форме необходимо ввести основные реквизиты для объекта нажать кнопку "Добавить на форму" или кнопку "Отмена" в противном случае. Если поле "Адрес" не введено, то объект не добавится, а незаполненное поле выделится красным цветом.

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


Рисунок 30. Выбор услуг.


Двойным щелчком мыши в таблице выбранные услуги устанавливается количество выбранной услуги (Рисунок31). Далее необходимо нажать кнопку "Добавить услугу".


Рисунок 31. Ввод количества.

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


Рисунок 32. Выбор комплектации.


Двойным щелчком мыши в таблице выбранные комплектации устанавливается количество выбранной комплектации (Рисунок33).


Рисунок 33. Ввод количества.


После заполнения всех полей необходимо на основной форме нажать кнопку "Рассчитать сумму", для расчета общей суммы комплектаций и услуг и нажать кнопку "Добавить заказ". Если ошибок в заполнении нет, то система выдаст сообщение (Рисунок 34), о печати счета. Если пользователь нажмет кнопку "Да", то сформируется отчет (Рисунок 35).


Рисунок 34. Сообщение о добавлении заказа.

Рисунок 35. Сформированный отчет на основе заказа.


Для поиска заказа необходимо нажать кнопку "Файл"=> "Поиск заказа", в результате загружается форма поиска заказов по различным параметрам и условиям поиска (Рисунок 36).


Рисунок 36. Форма для поиска заказов.


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


Рисунок 37. Свойства заказа


Из этой формы можно осуществлять печатать счета на оплату и счет-фактуру (Рисунок 38).


Рисунок 38 Счет-фактура для найденного заказа


5. Экономическая часть


5.1 Планирование процесса разработки


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

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


Tn= (1),


где -трудоемкость работ, человеко-дни;

-численность исполнителей.

Составим календарный график разработки, где выполняются следующие работы:

1.Разработка и согласование задания на разработку;

.Изучение задания на разработку;

.Подбор и изучение литературы;

.Разработка функциональной модели ИС;

.Разработка модели данных ИС;

.Изучение средств разработки ИС;

.Проектирование базы данных;

.Разработка клиентского приложения;

.Отладка клиентского приложения;

.Тестирование ИС;

.Подготовка материалов для защиты;

.Разработка документации;

.Утверждение проекта;

.Сдача работы заказчику.

Трудоемкость выполнения всей проектной разработки определяется по сумме трудоемкостей этапов и видов работ,оцениваемых экспертным путем в человеко-днях.В соотвествии с приведенным выше перечнем оценим трудоемкость отдельных видов работ следующим образом:=4 чел.-дн.,=2 чел.-дн.,=5 чел.-дн.,=5 чел.-дн.,=4 чел.-дн.,=4 чел.-дн.,=5 чел.-дн.,=16 чел.-дн.,=2 чел.-дн.,=5 чел.-дн.,=4 чел.-дн.,=4 чел.-дн.

Исходя из формулы (1) получим следующие продолжительности видов работ (см. таблицу 5.1)


Таблица 5.1Продолжительность разработки

№Виды работИсполнителиПродолжит.,дн.1Разработка и согласование задания на разработкуРуководитель, Инженер2 22Изучение задания на разработкуИнженер23Подбор и изучение литературыРуководитель, Инженер2 54Разработка функциональной модели ИСИнженер75Разработка модели данных ИСРуководитель, Инженер3 56Изучение средств разработки ИСИнженер47Проектирование базы данныхИнженер58Разработка клиентского приложенияИнженер189Отладка клиентского приложенияРуководитель, Инженер2 410Тестирование ИСИнженер511Подготовка материалов для защитыРуководитель, Инженер1 412Разработка документацииИнженер413Утверждение проектаРуководитель 114Сдача работы заказчикуРуководитель, Инженер1 1Итого:67

Общую продолжительность работ Tn_общ получили суммированием продолжительности всех работ всех видов:


Tn_общ=å (2)_общ=2+2+5+7+5+4+5+18+4+5+4+4+1+1=67


На основании этих расчетов можно спланировать процесс разработки комплекса сервисных программ, что и показано на ленточном графике (рисунок 5.1):


Рис. 5.1 "Ленточный график"


5.2 Расчет сметы затрат на разработку программного продукта


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

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

Перечень затрат, включаемых в себестоимость продукции, определяется главой 25НК РФ.

Согласно главе 25НК РФ затраты, образующие себестоимость продукции (работ, услуг), группируются в соответствии с их экономическим содержанием по следующим элементам:

.Затрат на оплату труда;

.Материальные затраты (за счетом стоимости возвратных отходов);

.Единый социальный налог;

.Амортизация основных фондов;

.Затраты на электроэнергию

.Прочие затрат.

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


Здн = ,


где Здн - дневная ставка;

Змес - месячная ставка;мес - число рабочих дней в месяце.

В итоге получаем:

для руководителя


Здн=15000/21=714,29 руб.,


для разработчика


Здн=6500/21=309,52 руб.


Все расходы на основную заработную плату сведены в таблице 5.2:


Таблица 5.2 Расходы на основную заработную плату

Дневная ставкаПродолжит.днСумма,рубРуководитель714,29128571,48Инженер309,526620428,32

Итак, расходы на основную заработную плату составили:


Фзп=8571,48+20428,32=28 999,8 руб

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


Таблица 5.4 Отчисления на страховые взносы

Наименование% отчисленияСумма, рубОтчисления на единый социальный налог и обязательное страхование от несчастных случаев30,28758

. Затраты на амортизацию основных фондов - являются на полное восстановление основных производственных фондов. Рассчитываются на основе балансовой стоимости основных фондов и норм амортизации. На данный момент нормы отчислений на реновацию составляют -25%.Отчисления на реновацию вычисляются по следующей формуле:


А=((Ц*0,25)/nгод)*n,


где ЦПЭВМ - первоначальная балансовая стоимость оборудования без НДС;год - число рабочих дней в году;число рабочих дней разработки.

Получаем сумму отчислений на реновацию:

ПЭВМ:


ЦПЭВМ=42480-(42480*0,25)=31 860 (руб.),


Где 42480-цена приобретения компьютера с НДС.


АПЭВМ=((31 860 *0,25)/248)*66= 120,69(руб.)


Сумма отчислений на амортизацию основных фондов составляет:

А=445 руб.

Сведем полученные данные в таблицу 6.5:


Таблица 6.5 Расходы на амортизацию

Наименование оборудованияСтоимость, рубВремя использ.,часНорма амортизации,%Сумма амортизации, рубПЭВМ ADM(2000МГц)2248039625120,69Итог расходов:120,69

. Затраты на электрознергию считаются по формуле:


Зэл=Р*Цэл*Ти ,


где Р-потребляемая мощность оборудования. кВт/ч,

Цэл - стоимость I кВт/ч;

Ти - время использования оборудования при проведении работ, ч.

При работе над НИР был использован компьютер потребляемой мощностью 120 Вт. Время роботы компьютера составило 66 дней по 6 часов.

Стоимость 1 кВт/ч составляет


,74 руб. = 3.74 (0,12 66 6) = 177,72руб


. Прочие расходы берутся из величины прямых общих затрат в установленном размере. Для разработки программного продукта они составят (20%):

Общие прямые затраты составят следующую сумму:


Зпрям=Фз+Зм+А+ЕСН=28 999,8 +8758+120,69+177,72=29 177,52 руб.

Зпрочие= Зпрям*0,2=29 177,52 *0,2=5 835,50 руб


Сведем все затраты на разработку в таблицу 5.7:


Таблица 5.7 смета затрат на разработку комплекса сервисных программ

Наименование калькуционных статей расходовСумма, руб.Удельный вес,%Заработная плата28 999,870,7Отчисления на соц. нужды875821,4Амортизация120,690,3Затраты на электроэнергию177,72 0,48Прочие расходы 5 835,507,12Итого:43 891,71100

5.3 Расчет цены НИР


Произведем расчет цены научно-исследовательской работы:


С=S+НДС+П,


Где С - цена продукта, S-смета затрат,

НДС-18% от (П+S)

П- 20% от S

В данной работе:= 43891,71 руб.,


П=0,2*43 891,71=8 778,34 руб.

НДС=(43 891,71 +8 778,34) * 0,18=9480 руб.

С=43 891,71 +8 778,34 +9480 =62 150,05 руб.


В итоге мы получаем что цена работ составила: 62150,05 руб.

5.4 Экономическая эффективность проекта


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

Экономический эффект проявляется в следующем. Каждый месяц оконное учреждение предоставляет отчетные реестры в налоговую.

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

Разработанная автоматизированная система позволит:

·Сократить временные затраты на оформление документов: форменных бланков, товарных чеков, счетов-фактур, а так же существенно снизить количество ошибок,

·Повысить качество выдаваемой информации(информация о стоимости услугу, о заказе клиента, о сроках выполнения)

·Повысить сохранность .


6. Безопасность и экологичность проекта


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

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

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

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


.1 Анализ условий труда в рабочем кабинете


В кабинете предусмотрено два рабочих места, каждое из которых оборудовано современной ПЭВМ на базе процессора Intel Pentium 4, дисплеем фирмы Samsung на электроннолучевой трубке (ЭЛТ) и лазерным принтером HP 1020. За каждым рабочим местом закреплен свой оператор. Для питания ПЭВМ используется сеть трехфазного переменного тока напряжением 220В/380В частотой 50Гц с глухозаземленной нейтралью источника.

Размеры кабинета: длина 4м, ширина 4,2 м, высота 3 м. Общая площадь равна 16,8 м, объем равен 50,4 м, что соответствует СанПиН 2.2.2/2.4.1340-03 "Гигиенические требования к персональным электронно- вычислительным машинам и организации работы которые устанавливают на одного работающего площадь помещения не менее 6м2 (в помещении работают 2 сотрудника), при наличии на рабочем месте оператора,ПЭВМ дисплея на ЭЛТ или периферийныхустройств (принтер).



В кабинете в течение всего года поддерживаются нормальные значения температуры, влажности воздуха, и скорости движения воздуха, благодаря соответствующим мерам. Для повышения влажности в помещении на расстоянии 1,5м от компьютера размещены цветы. Снижение уровня шума, проникающего в помещение извне, достигнуто увеличением звукоизоляции ограждающих конструкций, уплотнением по периметру притворов окон, дверей. Рациональное цветовое оформление направленно на улучшение санитарно- гигиенических условий труда, повышение его производительности и безопасности. Окраска стен бледно-розовая, потолка - белая, пол - светло- коричневый. Цветовое оформление выполнено с учетом рекомендаций СИ 181-70 "Указания по проектированию цветовой отделки интерьеров производственных зданий промышленных предприятий

Искусственное освещение в кабинете осуществляется системой общего равномерного освещения. Источник света - 4 светильника (ЛП046-2х40, габариты 90x236x1270 мм) с зеркализованными решетками, укомплектованными высокочастотными пускорегулирующими аппаратами (ВПА), каждый из которых состоит из двух ламп ЛБ-40 мощностью 40 Вт. Высота подвеса светильников равна 2,9 м, а расстояние между светильниками -1,5м.

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

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

Корпус дисплея и ПЭВМ, клавиатура и другие блоки имеют матовую поверхность одного цвета и не имеют блестящих деталей, способных создавать блики, что соответствует требованиям, содержащимся в СанПиН 2.2.2/2.4.1340-03, к покрытиям и материалам, из которых изготавливаются корпуса ПК и дисплеев.

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

В кабинете установлены столы с высотой рабочей поверхности 725 мм, а также стулья с подъемно-поворотным устройством. Конструкция стульев обеспечивает регулировку высоты опорной поверхности сиденья в пределах 400-500 мм угла наклона сиденья и спинки. Стулья оборудованы подлокотниками, что сводит к минимуму неблагоприятное воздействие на кистевые суставы рук. Рабочий стол имеет пространство для ног высотой 700 мм, шириной - 520 мм, глубиной на уровне колен - 450 мм и на уровне вытянутых ног - 660 мм. Конструкция рабочего стола обеспечивает оптимальное размещение на рабочей поверхности используемого оборудования с учетом его количества и конструктивных особенностей, характера выполняемой работы.

Периферийные устройства расположены в зоне досягаемости работающего. Организация и оборудование рабочего места соответствует требованиям, приведенным в ГОСТ Р 50923-96 "Дисплеи. Рабочее место оператора. Общие эргономические требования и требования к производственной среде. Методы измерения", ГОСТ Р 50948-2001 "Средства отображения информации индивидуального пользования. Общие эргономические требования и требования безопасности", ГОСТ Р 51658- 2000 "Фильтры-экраны защитные для средств отображения информации. Типы, основные параметры и методы измерений".

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


.2 Анализ опасных и вредных факторов в рабочем кабинете


Опасные и вредные факторы, действующие на организм человека, определяются согласно ГОСТ 12.0.003-74 ССБТ "Опасные и вредные производственные факторы. Классификация". К ним относятся;

-физические;

-химические;

-психофизиологические.

В данном помещении на оператора ПЭВМ могут негативно действовать следующие физические факторы:

-повышенная и пониженная температура воздуха;

-чрезмерная запыленность и загазованность воздуха;

-повышенная и пониженная влажность воздуха;

недостаточная освещенность рабочего места;

-превышающий допустимые нормы шум;

-повышенное содержание положительных аэроионов в воздухе рабочей зоны;

-пониженное содержание отрицательных аэроионов;

-повышенный уровень электромагнитных полей;

-повышенный уровень статического электричества;

-опасность поражения электрическим током;

-повышенная пульсация светового потока источников света;

-повышенная яркость фрагментов светового изображения или света, падающего в поле зрения пользователя;

-повышенная внешняя освещенность экрана;

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

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

К химически опасным и вредным факторам, постоянно действующим на оператора ПЭВМ, относятся следующие:

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

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

-нервно-эмоциональные перегрузки;

-умственное напряжение;

-перенапряжение зрительного анализатора.

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


.3 Характеристика наиболее опасных и вредных факторов


. Требования к параметрам воздушной среды в помещениях с ПЭВМ.

Микроклимат помещений - это климат внутренней среды этих помещений, который определяется действующими на организм человека сочетаниями температуры, влажности и скорости движения воздуха (СанПин 2.2.4.1294-03 "Гигиенические требования к аэроионному составу воздуха производственных и общественных помещений'').

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


Таблица 6.1.: Оптимальные (допустимые) нормы микроклимата для помещений с ПЭВМ.

Период годаКатегория работТемпература воздуха, СОтносительная влажность воздуха, %Скорость движения воздуха, м/сХолодныйЛегкая -1 а22-24 (21-26)40-60 (75)0,1ТеплыйЛегкая- 1а23-25 (22-28)40-600,1 (0,2)

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

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

Системы вентиляции, кондиционирования и отопления помещения должны соответствовать СНиП 2.04.05-91 "Отопление, вентиляция и кондиционирование

. Влияние электромагнитных полей на организм человека

Основным источником электромагнитных волн в кабинете являются дисплеи (мониторы). Они представляют собой источники наиболее вредных излучений, неблагоприятно влияющих на здоровье оператора.опеОсновным документом, регламентирующим предельно допустимые параметры ЭМП, является СанПиН 2.2.2/2.4.1340-03 "Гигиенические требования к персональным электронно-вычислительным машинам и организации работы". Данные нормы приведены ниже к таблице 6.2.


Таблица 6.2: Временные предельно допустимые значения характеристик ЭМП нарабочем месте оператора ПЭВМ.

Наименование параметровВДУНапряженность электрического поляв диапазоне частот 5 Гц - 2 кГц25 В/мв диапазоне частот 2 кГц - 400 кГц2,5 В/мПлотность магнитного потокав диапазоне частот 5 Гц - 2 кГц250 нТлв диапазоне частот 2 кГц - 400 кГц25 нТлНапряженность электростатического поля15 кВ/м

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

Для предупреждения внедрения опасной техники нее дисплеи должны проходить испытания на соответствие требованиям безопасности (международные стандарты MRP 2, ТСО 99, ТСО 03). В данном помещении используются мониторы фирмы Samsung, которые сертифицированы и соответствии со стандартом ТСО 99 и не требуют дополнительных защитных экранов.

. Анализ шума на рабочем месте.

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

Согласно СанIIuII 2.2.4/2.1.8.10-32-2002 "Шум на рабочих местах, в помещениях жилых, общественных зданий и на территории жилой застройки" эквивалентный уровень звука для дайною помещения не должен превышать 50 дБА.

В качестве мер по снижению шума можно предложить следующее:

облицовка потолка и стен звукопоглощающим материалом (снижает шум на 6-8 дб);

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

Защита от шума, а также звукоизоляция ограждающих конструкций должна соответствовать СНиП 23-03-2003 "Защиита от шумап. 4 Анализ электробезопасности на рабочем месте.

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

Для питания ПЭВМ используется одна из фаз сети трехфазного переменного тока напряжением 220В/380В частотой 50Гц с глухозаземленной нейтралью источника. В такой сети в соответствии с ГОСТ р МЭК 60065-2002 "Радиоэлектронная аппаратура. Требования безопасности" основной мерой защиты является защитное зануление, использование двойной и усиленной изоляции, а также использование сетевых розеток снабженных клеммой защитного заземления.

Выходные цепи блока питания ПЭВМ составляют ±15, ± 5В. Следовательно, согласно ПУЭ 1.1.3 (7-е издание) устройство относится к установкам с рабочим напряжением до 1000В.

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

Электробезопасность в рабочем помещении обеспечивается техническими способами и средствами защиты, а так же организационными и техническими мероприятиями. Для защиты от поражения электрическим током все токоведущие части защищены от случайных прикосновений кожухами (ПУЭ 7.1.37), корпус каждого устройства заземлен (занулен). Заземление выполнено изолированным медным проводом сечением 1,5 мм (ПУЭ 1.7.78), который присоединяется к общей шине заземления с общим сечением 48 м2 при помощи сварки. Общая шина присоединяется к заземлению, сопротивление которого не превышает 40м и постоянно контролируется (ПУЭ 1.7.65). Питание устройств ПЭВМ осуществляется от силового щита через автоматический выключатель, совмещенный с УЗО, которое реагирует на дифференциальный ток (до ЗОмА).

Рассмотрим основные причины поражения человека электрическим током на рабочем месте:

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

-нарушение требований эксплуатации оборудования;

отсутствие инструктажа сотрудников по правилам электробезопасности.

Согласно требованиям ГОСТ 12.1.038-82 "ССБТ. Электробезопасность предельно допустимые уровни напряжений прикосновения и токов" при нормальном режиме электроустановки напряжение прикосновения в сети переменного тока частотой 50Гц и времени воздействия не более 10 минут в сутки не превышает 2В, значение тока, протекающего через тело человека, 0.3 мА.

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

. Анализ условий зрительной работы.

По СанПиН 2.2.1/2.1.1.1278-03 "Гигиенические требования к естественному, искусственному и совмещенному освещению жилых и общественных зданий" помещения с ПЭВМ должны иметь естественное и искусственное освещение. Естественное освещение должно осуществляться через светопроемы, ориентированные преимущественно на север и север- восток и обеспечивать коэффициент естественной освещенности (КЕО) не ниже 1,5%. Искусственное освещение в помещениях эксплуатации ПЭВМ должно осуществляться системой общего равномерного освещения.

В соответствии с СанПиН 2.2.2/2.4.1340-03 в помещении должны выполняться следующие требования:

·освещенность на поверхности стола в зоне размещения рабочего документа должна быть 300 - 500 лк. Освещение не должно создавать бликов на поверхности экрана. Освещенность поверхности экрана не должна быть более 300 лк;

·следует ограничивать прямую блесткость от источников освещения, при этом яркость светящихся поверхностей (окна, светильники и др.), находящихся в поле зрения, должна быть не более 200 кд/м ;

·следует ограничивать отраженную блесткость на рабочих поверхностях (экран, стол, клавиатура и др.) за счет правильного выбора типов светильников и расположения рабочих мест по отношению к источникам естественного и искусственного освещения, при этом яркость бликов на экране ПЭВМ не должна превышать 40 кд/м и яркость потолка не должна превышать 200 кд/м2;

·яркость светильников общего освещения в зоне углов излучения от 50 До 90 градусов с вертикалью в продольной и поперечной плоскостях должна составлять не более 200 кд/м, защитный угол светильников должен быть не менее 40 градусов;

·следует ограничивать неравномерность распределения яркости в поле зрения пользователя ПЭВМ, при этом соотношение яркости между рабочими поверхностями не должно превышать 3:1-5:1, а между рабочими поверхностями и поверхностями стен и оборудования 10:1;

·в качестве источников света при искусственном освещении следует применять преимущественно люминесцентные лампы типа ЛБ и компактные люминесцентные лампы (KJIJI);

·для освещения помещений с ПЭВМ следует применять светильники с зеркальными параболическими решетками, укомплектованными электронными пускорегулирующими аппаратами (ЭПРА);

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

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

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

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

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

Нормы освещенности, указанны в СНиП 23-05-95 "Естественное и искусственное освещение".

Для определения количества светильников определим световой поток,

падающий на поверхность по формуле:

=E*K*S*Z / n,


где- рассчитываемый световой поток, лм;

Е - нормированная минимальная освещенность, Лк (Е = 300);- площадь освещаемого помещения (в нашем случае S = 16,8 м2);- отношение средней освещенности к минимальной (Z = 1.1);

К - коэффициент запаса (К = 1.4);

п - коэффициент использования (выражается отношением светового потока, падающего на расчетную поверхность, к суммарному потоку всех ламп и исчисляется в долях единицы; зависит от характеристик светильника, размеров помещения, окраски стен и потолка, характеризуемых коэффициентами отражения от стен (Рс) и потолка (Рп)), значение коэффициентов Рс и Рп определим по таблице зависимостей коэффициентов отражения от характера поверхности: Рс=30%, Рп=50%. Значение п определим по таблице коэффициентов использования различных светильников. Для этого вычислим индекс помещения по формуле:

=S/h*(A+B),


где- площадь помещения, S = 16,8 м2;- высота подвеса, h = 2.9 м;

А - ширина помещения, А = 4 м;

В - длина помещения, В = 4,2 м.

Д П.220301.03612. П 3-08*>

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

I=16,8/2,9*(4+4,2)=0,706


Зная индекс помещения I, Рс и Рп, по таблице находим n=0.28. Подставим все значения в формулу для определения светового потока F:

=300*1,5*16,8*1,1/ 0,28=29700 лм


Для освещения выбираем светильники ЛПО-46 (габариты 90x236x1270 мм) с зеркализованными решетками и ВПА, состоящие из двух люминесцентных ламп типа ЛБ-40 мощностью 40Вт, световой поток которых F = 4320 лм.

Рассчитаем необходимое количество ламп по формуле:

=F/Fл,


где- определяемое число ламп;- световой поток, F = 29700 лм;

Рл- световой поток лампы, Рл = 4320 лм.

=29700/4320=7 шт


В каждом светильнике используется 2 лампы. Выбираем общее число светильников равное 4.

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

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

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


.3 Обеспечение требований пожарной безопасности в кабинете


В соответствии с НПБ 105-03 "Определение категорий помещений, зданий и наружных установок по взрывопожарной и пожарной опасности" здание, в котором находится помещение, по пожарной опасности строительных конструкций относится к категории "Д".


.4 0беспечение требований пожарной безопасности в кабинете


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

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


.4.1 Основные причины возникновения пожара

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

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

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

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

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

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

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

отсутствие в РЭУ устройств защиты от перегрузок по току и напряжению, а также тепловой защиты элементов;

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

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

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

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

Основным документом, регламентирующим соблюдение правил пожарной безопасности, является ГОСТ 12.1.004-91 "ССБТ. Пожарная безопасность. Общие требованиясогласно которому необходимо предусмотреть систему пожарной защиты и автоматическую пожарную сигнализацию.


.4.2 Огнетушащие вещества и средства пожаротушения

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

-В помещении обязательно должен находиться углекислотный огнетушитель типа ОУ-5.

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

-Для непрерывного контроля помещения и всего здания необходимо установить пожарную сигнализацию [4]. Согласно НПБ 88-2001 "Установки пожаротушения и сигнализации. Нормы и правила проектирования" в кабинете допускается использование пожарных извещателей либо дымового, либо теплового типов. Будем использовать извещатели дымового типа ИП 212-18СИ в количестве равным двум. Извещатели разместим на потолке.


План эвакуации при пожаре


Пользователи допускаются к работе на персональных ПЭВМ только после прохождения инструктажа по безопасности труда и пожарной безопасности.

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


.5 Экологичность проекта


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

В целях снижения расхода энергопотребления нужно использовать устройства, поддерживающие технологию "Energy Star" [3]. Эта технология предусматривает ряд аппаратных нововведений в конструкцию периферийных и обслуживающих устройств ПЭВМ, предназначенных для снижения энергозатрат. Суть технологии весьма проста: при отсутствии воздействия на компьютер в течение заданного времени, некоторые его устройства отключаются или переходят в так называемый "ждущий режим", потребляя при этом энергии в несколько раз меньше, чем при их нормальной работе.

В связи с быстрой сменой поколений ПЭВМ необходимо уделить особое внимание утилизации устаревшего оборудования, так как в элементах ПЭВМ в минимальных количествах находятся токсичные материалы [3]. К таким материалам относятся следующие: свинец (в ЭЛТ и паяных соединениях компонентов), кадмий (в батареях питания), сурьма (в средствах подавления пламени, герметиках и в припое стеклянных панелей ЭЛТ), бериллий (в ПЭВМ ранних моделей), хром (в металлических покрытиях), ртуть (в малых количествах в индикаторных лампах плоских дисплеев). В настоящее время во всем мире разрабатываются программы, направленные на созданиетехнологии утилизации электронных устройств. Существуют две основные модели утилизации электронных устройств: муниципальная и через розничную торговлю. В рамках первой модели местные власти должны собирать использованную аппаратуру при помощи службы вывоза мусора или центров сбора вторсырья. По второй - это должна делать розничная торговая сеть при помощи акций или программ замены старой аппаратуры на новую.

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


Заключение


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

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

Информационная система позволяет оформлять заказы, автоматически формировать счета.

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


Список используемой литературы


1.Петров В.Н. Информационные системы СПб.: Питер, 2002. - 688 с.

.Андрей Зиборов "Visual C# 2010"

.Либерти Д. Программирование на C#, 423 с.

.Прайс Дж., Гандерлой М. Visual C#.Net Полное руководство. 2004.

.Петкович Д. Microsoft SQL Server 2008. Руководство для начинающих БХВ-Петербург, 2009. - 753 с.

.Microsoft Corporation. Проектирование и реализация баз данных Microsoft SQL Server. Учебный курс MCAD/ MCSE, MCDBA PDF - 3-е изд., испр. - М.: Издательско-торговый дом "Русская Редакция", 2009. - 512 с

.Дейтл, Х. C#: Пер. с англ. / Дейтл Х., Дейтл П., Листфилд Дж., Нието Т., Йегер Ш., Здаткина М. - Спб.: БХВ-Петербург, 2006. - 1056 с.

.Мак-Дональд, Мэтью, Фримен, Адам, Шпушта, Марио Microsoft Asp.Net 4 с примерами на C# 2010 для профессионалов 4-е изд. - М.: ООО "И.Д. Вильямс", 2011. - 1424 c.

.Экономические вопросы проектирования: Метод. указания по дипломному проектированию / РГРТА; Сост.: Е.В. Мисник, Ю.Н. Прудников. Рязань, 1994.

.Болтнев В.Е. "Безопасность жизнедеятельности. Учебное пособие" / под ред. Ю.В. Зайцева. - Рязань: РГРТА, 2002. - 100 с.

.Болтнев В.Е., Юдаева Л.Н. "Искусственное освещение: Методические указания к дипломному проектированию". ? Рязань: РГРТА, 2002. - 32 с.

.Весёлкин, Н.В. Обеспечение пожарной безопасности: Методические указания для дипломников / сост.: Н.В. Весёлкин, В.А. Крысанов.- Рязань: РГРТУ, 2011. - 20 с.


Приложение


Текст класса Program


using System;System.Windows.Forms;MariosWindows

{static class Program

{

/// <summary>

/// Главная точка входа для приложения.

/// </summary>

[STAThread]static void Main()

{.EnableVisualStyles();.SetCompatibleTextRenderingDefault(false);splashScreen = new SplashScreenForm();end = DateTime.Now + TimeSpan.FromSeconds(2);.Show();(end > DateTime.Now)

{.DoEvents();

}.Close();.Dispose();authorizationForm = new AuthorizationAndSelectDBForm();.Visible = true;(authorizationForm.selectDB == false && authorizationForm.close == false)

{.DoEvents();

}mainForm = new MainForm();(authorizationForm.comboBoxLogin.Text == "Администратор" && authorizationForm.textBoxPassword.Text == "adm")

{.admin = true;

}

{(authorizationForm.comboBoxLogin.Text == "Менеджер" && authorizationForm.textBoxPassword.Text == "men")

{.admin = false;

}

{.Show("Ошибка пароля или логина", "Вход запрещен", MessageBoxButtons.OK, MessageBoxIcon.Error);;

}

}(authorizationForm.close);.Run(mainForm);

}

}

}

Текст модуля SQLOperations

System;System.Collections.Generic;System.Data.SqlClient;System.Windows.Forms;MariosWindows

{SqlOperation

{

// Соединение с БД T-FLEX DOCs (SQL-аутентификация)SqlConnection GetConnection(string source)

{connection = null;sqlConStringBuilder = new SqlConnectionStringBuilder();.DataSource = source;.InitialCatalog = "MariosWindows";.Password = Decoder.decode("36-57-300-192-300-136-201-57-36-", "377", "121");.UserID = "admin";= new SqlConnection(sqlConStringBuilder.ToString());

{= new SqlConnection(sqlConStringBuilder.ToString());.ClearPool(connection);.Open();connection;

}(Exception exc)

{.Show(exc.Message);

}connection;

}

// Соединение с БД T-FLEX DOCs (SQL-аутентификация)

public void CheckConnection(string source)

{connection = null;sqlConStringBuilder = new SqlConnectionStringBuilder();.DataSource = source;.InitialCatalog = "MariosWindows";.Password = Decoder.decode("36-57-300-192-300-136-201-57-36-", "377", "121");.UserID = "admin";= new SqlConnection(sqlConStringBuilder.ToString());= new SqlConnection(sqlConStringBuilder.ToString());.ClearPool(connection);.Open();.Close();

}

// Получить сотрудниковList<Employee> GetEmployees(string source)

{employees = new List<Employee>();connection = GetConnection(source);specificationsQuery = String.Format(

@"SELECT Id,,,,,,,,,

[Address],Employees");specificationsCommand = new SqlCommand(specificationsQuery, connection);.CommandTimeout = 0;reader = specificationsCommand.ExecuteReader();(reader.Read())

{employee = new Employee();.Id = Convert.ToInt32(reader[0].ToString());.Surname = reader[1].ToString();.Name = reader[2].ToString();.Patronomic = reader[3].ToString();.BusinessPhone = reader[4].ToString();.Email = reader[5].ToString();.PasportName = reader[6].ToString();.PasportSeries = reader[7].ToString();.Profession = reader[8].ToString();.Address = reader[9].ToString();.Birthday = Convert.ToDateTime(reader[10]).Date;.Add(employee);

}.Close();.Close();employees;

}

// Получить список услугDictionary<string,List<Service>> GetServices(string source)

{categoryServices = new Dictionary<string, List<Service>>();services = new List<Service>();connection = GetConnection(source);specificationsQuery = String.Format(

@"SELECT [Id]

,[ServicesKind]

,[Cost]

,[Category][MariosWindows].[dbo].[Services]BY Category");specificationsCommand = new SqlCommand(specificationsQuery, connection);.CommandTimeout = 0;reader = specificationsCommand.ExecuteReader();key = string.Empty;(reader.Read())

{service = new Service();.Id = Convert.ToInt32(reader[0]);.Name = reader[1].ToString();.Cost = Convert.ToDouble(reader[2].ToString());.Category = reader[3].ToString();(key != service.Category && key != string.Empty)

{.Add(key,services);= new List<Service>();.Add(service);

}

{.Add(service);

}= service.Category;

}.Add(key, services);.Close();.Close();categoryServices;

}

// Получить список комплектацийDictionary<string, List<Configuration>> GetConfiguration(string source)

{categoryConfiguration = new Dictionary<string, List<Configuration>>();configurations = new List<Configuration>();connection = GetConnection(source);specificationsQuery = String.Format(

@"SELECT [Id]

,[ConfigurationKind]

,[PriceWithMargin]

,[PriceSupplier]

,[CountStore]

,[Category][MariosWindows].[dbo].[Configuration]BY Category");specificationsCommand = new SqlCommand(specificationsQuery, connection);.CommandTimeout = 0;reader = specificationsCommand.ExecuteReader();key = string.Empty;(reader.Read())

{configuration = new Configuration();.Id = Convert.ToInt32(reader[0]);.Name = reader[1].ToString();.PriceWithMargin = Convert.ToDouble(reader[2].ToString());.PriceSupplier = Convert.ToDouble(reader[3].ToString());.CountStore = Convert.ToInt32(reader[4].ToString());.Category = reader[5].ToString();(key != configuration.Category && key != string.Empty)

{.Add(key, configurations);= new List<Configuration>();.Add(configuration);

}

{.Add(configuration);

}= configuration.Category;

}.Add(key, configurations);.Close();

.Close();categoryConfiguration;

}

// Добавление заказчикаCustomer SetCustomer(Customer cust, string source)

{connection = GetConnection(source);maxNumberQuery = String.Format(@"SELECT MAX(Id)[MariosWindows].[dbo].[Customer]");maxNumberCommand = new SqlCommand(maxNumberQuery, connection);.CommandTimeout = 0;incrMaxNumber =Convert.ToInt32(maxNumberCommand.ExecuteScalar())+1;specificationsQuery = String.Format(

@"INSERT INTO Customer({0}, N'{1}',N'{2}',N'{3}','{4}','{5}','{6}')", incrMaxNumber, cust.Surname.Trim(), cust.Name.Trim(),.Patronomyc, cust.Address, cust.Phone1.Trim(), cust.Phone2);specificationsCommand = new SqlCommand(specificationsQuery, connection);.CommandTimeout = 0;reader = specificationsCommand.ExecuteReader();.Id = incrMaxNumber;.Close();.Close();cust;

}

// Добавление поставщикаSupplier SetSupplier(Supplier supplier, string source)

{connection = GetConnection(source);maxNumberQuery = String.Format(@"SELECT MAX(Id)[MariosWindows].[dbo].[Suppliers]");maxNumberCommand = new SqlCommand(maxNumberQuery, connection);.CommandTimeout = 0;incrMaxNumber = Convert.ToInt32(maxNumberCommand.ExecuteScalar()) + 1;specificationsQuery = String.Format(

@"INSERT INTO Suppliers({0}, N'{1}',N'{2}',N'{3}',N'{4}')", incrMaxNumber, supplier.Name.Trim(), supplier.Address.Trim(),.INN, supplier.KPP);specificationsCommand = new SqlCommand(specificationsQuery, connection);.CommandTimeout = 0;reader = specificationsCommand.ExecuteReader();.Id = incrMaxNumber;.Close();.Close();supplier;

}

// Добавление комплектацииvoid SetConfiguration(Configuration configuration, string source)

{connection = GetConnection(source);maxNumberQuery = String.Format(@"SELECT MAX(Id)[MariosWindows].[dbo].[Configuration]");maxNumberCommand = new SqlCommand(maxNumberQuery, connection);.CommandTimeout = 0;incrMaxNumber = Convert.ToInt32(maxNumberCommand.ExecuteScalar()) + 1;specificationsQuery = String.Format(

@"INSERT INTO Configuration({0}, {1},N'{2}',{3},{4}, {5}, N'{6}', null)", incrMaxNumber,configuration.IdSuppliers,.Name.Trim(),.PriceWithMargin, configuration.PriceSupplier, configuration.CountStore, configuration.Category);specificationsCommand = new SqlCommand(specificationsQuery, connection);.CommandTimeout = 0;reader = specificationsCommand.ExecuteReader();.Close();.Close();

}

// Добавление услугиvoid SetService(Service service, string source)

{connection = GetConnection(source);maxNumberQuery = String.Format(@"SELECT MAX(Id)[MariosWindows].[dbo].[Services]");maxNumberCommand = new SqlCommand(maxNumberQuery, connection);.CommandTimeout = 0;incrMaxNumber = Convert.ToInt32(maxNumberCommand.ExecuteScalar()) + 1;specificationsQuery = String.Format(

@"INSERT INTO Services({0}, N'{1}',{2},N'{3}')", incrMaxNumber, service.Name,.Cost, service.Category);specificationsCommand = new SqlCommand(specificationsQuery, connection);.CommandTimeout = 0;reader = specificationsCommand.ExecuteReader();.Close();.Close();

}

// Добавление сотрудниковvoid SetEmployee(Employee employee, string source)

{connection = GetConnection(source);maxNumberQuery = String.Format(@"SELECT MAX(Id)[MariosWindows].[dbo].[Employees]");maxNumberCommand = new SqlCommand(maxNumberQuery, connection);.CommandTimeout = 0;incrMaxNumber = Convert.ToInt32(maxNumberCommand.ExecuteScalar()) + 1;specificationsQuery = String.Format(

@"INSERT INTO Employees({0}, N'{1}',N'{2}',N'{3}',N'{4}',N'{5}',N'{6}',N'{7}',N'{8}',N'{9}',N'{10}')", incrMaxNumber, employee.Name,.Surname, employee.Patronomic,employee.PasportSeries, employee.PasportName,.BusinessPhone, employee.Email, employee.Profession, employee.Birthday,employee.Address);specificationsCommand = new SqlCommand(specificationsQuery, connection);.CommandTimeout = 0;reader = specificationsCommand.ExecuteReader();.Close();.Close();

}

// Поиск всех объектовList<PlaceWork> GetPlaceWork(string source)

{connection = GetConnection(source);placeWorks = new List<PlaceWork>();specificationsQuery = String.Format(

@"SELECT [Id]

,[Address]

,[Note][MariosWindows].[dbo].[Objects]BY [Address]");specificationsCommand = new SqlCommand(specificationsQuery, connection);.CommandTimeout = 0;reader = specificationsCommand.ExecuteReader();(reader.Read())

{placeWork = new PlaceWork();.Id = Convert.ToInt32(reader[0]);.Address = reader[1].ToString();(reader[2] != null).Note = reader[2].ToString();.Note = string.Empty;.Add(placeWork);

}.Close();.Close();placeWorks;

}

// Поиск всех заказчиковList<Customer> GetCustomer(string source)

{connection = GetConnection(source);customers = new List<Customer>();specificationsQuery = String.Format(

@"SELECT [Id]

,[Family]

,[Name]

,[Patronomic]

,[AddressResidence]

,[Phone1]

,[Phone2][MariosWindows].[dbo].[Customer]BY [Family],[Name]");specificationsCommand = new SqlCommand(specificationsQuery, connection);.CommandTimeout = 0;reader = specificationsCommand.ExecuteReader();(reader.Read())

{cust = new Customer();.Id = Convert.ToInt32(reader[0]);.Surname = reader[1].ToString();.Name = reader[2].ToString();(reader[3] != null).Patronomyc = reader[3].ToString();.Patronomyc = string.Empty;(reader[4] != null).Address = reader[4].ToString();.Address = string.Empty;.Phone1 = reader[5].ToString();(reader[6] != null).Phone2 = reader[6].ToString();.Phone2 = string.Empty;.Add(cust);

}.Close();.Close();customers;

}

// Добавление места работыPlaceWork SetPlaceWork(PlaceWork placeWork, string source)

{connection = GetConnection(source);maxNumberQuery = String.Format(@"SELECT MAX(Id)[MariosWindows].[dbo].[Objects]");maxNumberCommand = new SqlCommand(maxNumberQuery, connection);.CommandTimeout = 0;incrMaxNumber = Convert.ToInt32(maxNumberCommand.ExecuteScalar()) + 1;specificationsQuery = String.Format(

@"INSERT INTO Objects({0}, N'{1}',N'{2}')", incrMaxNumber, placeWork.Address.Trim(),.Note);specificationsCommand = new SqlCommand(specificationsQuery, connection);.CommandTimeout = 0;reader = specificationsCommand.ExecuteReader();.Id = incrMaxNumber;.Close();.Close();placeWork;

}void AddOrder(Order order, List<Service> services, List<Configuration> configurations, List<Employee> employees, string source)

{connection = GetConnection(source);maxNumberQuery = String.Format(@"SELECT MAX(IdOrder)[MariosWindows].[dbo].[Orders]");maxNumberCommand = new SqlCommand(maxNumberQuery, connection);.CommandTimeout = 0;incrMaxNumber = Convert.ToInt32(maxNumberCommand.ExecuteScalar()) + 1;specificationsQuery = String.Format(

@"INSERT INTO [MariosWindows].[dbo].[Orders]

([IdOrder]

,[IdObjectInstallation]

,[IdCustomer]

,[OrderNumber]

,[OrderDate]

,[TermPerfomance]

,[PaymentKind]

,[AdvancePayment]

,[TotalSum]

,[OrderPaid]

,[BeginWorkDate])({0}, {1},{2},'{3}','{4}','{5}','{6}',{7},{8},{9},'{10}')", incrMaxNumber, order.IdObjectInstallation,order.IdCustomer,order.Number,.Date.ToShortDateString(), order.TermPerfomance, order.PaymentKind, order.PaymentAdvance, order.TotalSum, Convert.ToInt32(order.OrderPaid), order.BeginWorkDate.ToShortDateString());specificationsCommand = new SqlCommand(specificationsQuery, connection);.CommandTimeout = 0;reader = specificationsCommand.ExecuteReader();

// cust.Id = incrMaxNumber;.Close();(var service in services)

{specificationsQueryOrderService = String.Format(

@" INSERT INTO [MariosWindows].[dbo].[OrdersServices]

([idServices]

,[idOrder]

,[Count])({0}, {1},{2})", service.Id, incrMaxNumber, service.Count);specificationsCommandOrderService = new SqlCommand(specificationsQueryOrderService, connection);.CommandTimeout = 0;reader2 = specificationsCommandOrderService.ExecuteReader();.Close();

}(var configuration in configurations)

{specificationsQueryOrderConfiguration = String.Format(

@" INSERT INTO [MariosWindows].[dbo].[OrdersConfigurations]

([idConfiguration]

,[idOrder]

,[Count])({0}, {1},{2})", configuration.Id, incrMaxNumber, configuration.Count);specificationsCommandOrderConfiguration = new SqlCommand(specificationsQueryOrderConfiguration, connection);.CommandTimeout = 0;reader3 = specificationsCommandOrderConfiguration.ExecuteReader();.Close();

}(var employee in employees)

{specificationsQueryOrderEmployee = String.Format(

@" INSERT INTO [MariosWindows].[dbo].[EmployeesOrders]

([idEmployee]

,[idOrder])({0}, {1})", employee.Id, incrMaxNumber);specificationsCommandOrderEmployee = new SqlCommand(specificationsQueryOrderEmployee, connection);.CommandTimeout = 0;reader4 = specificationsCommandOrderEmployee.ExecuteReader();.Close();

}.Close();

}int IncrementNumberOrder(string source)

{connection = GetConnection(source);

maxNumberQuery = String.Format(@"SELECT MAX(OrderNumber)[MariosWindows].[dbo].[Orders]");maxNumberCommand = new SqlCommand(maxNumberQuery, connection);.CommandTimeout = 0;Convert.ToInt32(maxNumberCommand.ExecuteScalar()) + 1;

}

// Поиск заказовList<Order> GetOrder(string val, string source)

{connection = GetConnection(source);orders = new List<Order>();specificationsCommand = new SqlCommand(val, connection);.CommandTimeout = 0;reader = specificationsCommand.ExecuteReader();(reader.Read())

{order = new Order();.IdOrder = Convert.ToInt32(reader[0]);.Number = Convert.ToInt32(reader[1]);.Date = Convert.ToDateTime(reader[2]);.TermPerfomance = reader[3].ToString();.PaymentKind = reader[4].ToString();.PaymentAdvance = Convert.ToInt32(reader[5]);.TotalSum = Convert.ToInt32(reader[6]);.OrderPaid = Convert.ToBoolean(reader[7]);.BeginWorkDate = Convert.ToDateTime(reader[8]);customer = new Customer();.Surname = reader[9].ToString();.Name = reader[10].ToString();.Patronomyc = reader[11].ToString();.Address = reader[12].ToString();.Phone1 = reader[13].ToString();.Phone2 = reader[14].ToString();.customer = customer;placeWork = new PlaceWork();.Address = reader[15].ToString();.Note = reader[16].ToString();.placeWork = placeWork;.Add(order);

}.Close();(var order in orders)

{employees = new List<Employee>();query = String.Format(@"SELECT.Id,.Surname,.Name,.Patronymic,.BusinessPhone,.EMail,.PassportNumber,.PassportSeries,.Profession,.[Address],.Birthday,.PersonHourEmployees em INNER JOIN EmployeesOrders eo ON (em.Id = eo.IdEmployee)eo.IdOrder = {0}" , order.IdOrder);specificationsEmployeesCommand = new SqlCommand(query, connection);.CommandTimeout = 0;reader2 = specificationsEmployeesCommand.ExecuteReader();(reader2.Read())

{employee = new Employee();.Id = Convert.ToInt32(reader2[0].ToString());.Surname = reader2[1].ToString();.Name = reader2[2].ToString();.Patronomic = reader2[3].ToString();.BusinessPhone = reader2[4].ToString();.Email = reader2[5].ToString();.PasportName = reader2[6].ToString();.PasportSeries = reader2[7].ToString();.Profession = reader2[8].ToString();.Address = reader2[9].ToString();.Birthday = Convert.ToDateTime(reader2[10]).Date;(reader2[11] != DBNull.Value).PersonHour = Convert.ToDouble(reader2[11]);.PersonHour = 0;.Add(employee);

}.Employees = employees;.Close();services = new List<Service>();specificationsServiceQuery = String.Format(

@"SELECT s.[Id]

,s.[ServicesKind]

,s.[Cost]

,s.[Category]

,so.Count[Services] s INNER JOIN OrdersServices so ON (s.Id = so.idServices)so.IdOrder = {0}BY Category", order.IdOrder);

var specificationsServiceCommand = new SqlCommand(specificationsServiceQuery, connection);

specificationsServiceCommand.CommandTimeout = 0;reader3 = specificationsServiceCommand.ExecuteReader();(reader3.Read())

{service = new Service();.Id = Convert.ToInt32(reader3[0]);.Name = reader3[1].ToString();.Cost = Convert.ToDouble(reader3[2].ToString());.Category = reader3[3].ToString();.Count = Convert.ToInt32(reader3[4]);.Add(service);

}.Services = services;.Close();

var configurations = new List<Configuration>();

string specificationsConfigurationQuery = String.Format(

@"SELECT conf.[Id]

,conf.[ConfigurationKind]

,conf.[PriceWithMargin]

,conf.[PriceSupplier]

,conf.[CountStore]

,conf.[Category]

,oc.Count[MariosWindows].[dbo].[Configuration] conf INNER JOIN OrdersConfigurations oc ON(conf.Id = oc.IdConfiguration)oc.IdOrder = {0}BY Category", order.IdOrder);

var specificationsConfigurationCommand = new SqlCommand(specificationsConfigurationQuery, connection);

specificationsConfigurationCommand.CommandTimeout = 0;reader4 = specificationsConfigurationCommand.ExecuteReader();(reader4.Read())

{configuration = new Configuration();.Id = Convert.ToInt32(reader4[0]);.Name = reader4[1].ToString();.PriceWithMargin = Convert.ToDouble(reader4[2].ToString());.PriceSupplier = Convert.ToDouble(reader4[3].ToString());.CountStore = Convert.ToInt32(reader4[4].ToString());.Category = reader4[5].ToString();.Count = Convert.ToInt32(reader4[6]);.Add(configuration);

}.Configurations = configurations;.Close();

}.Close();orders;

}

// Получить список ПоставщиковList<Supplier> GetSuppliers(string source)

{listSuppliers = new List<Supplier>();

SqlConnection connection = GetConnection(source);specificationsQuery = String.Format(

@"SELECT [Id]

,[Name]

,[Address]

,[INN]

,[KPP][MariosWindows].[dbo].[Suppliers]By Name");

var specificationsCommand = new SqlCommand(specificationsQuery, connection);

specificationsCommand.CommandTimeout = 0;reader = specificationsCommand.ExecuteReader();(reader.Read())

{supplier = new Supplier();.Id = Convert.ToInt32(reader[0]);.Name = reader[1].ToString();.Address = reader[2].ToString();.INN = reader[3].ToString();.KPP = reader[4].ToString();.Add(supplier);

}.Close();.Close();listSuppliers;

}

}SqlFindOrder

{static string FindOrder = String.Format(@"SELECT o.IdOrder

,o.[OrderNumber]

,o.[OrderDate]

,o.[TermPerfomance]

,o.[PaymentKind]

,o.[AdvancePayment]

,o.[TotalSum]

,o.[OrderPaid]

,o.[BeginWorkDate]

,c.Family

,c.Name

,c.Patronomic

,c.AddressResidence

,c.Phone1

,c.Phone2

,obj.[Address]

,obj.Note

FROM [Orders] o INNER JOIN Customer c ON (o.IdCustomer = c.Id)

INNER JOIN [Objects] obj ON (obj.Id = o.IdObjectInstallation)");string Number = FindOrder + " WHERE o.OrderNumber";string Date = FindOrder + " WHERE o.[OrderDate]";string TermPerfomance = FindOrder + " WHERE o.[TermPerfomance]";string PaymentKind = FindOrder + " WHERE o.[PaymentKind]";string AdvancePayment = FindOrder + " WHERE o.[AdvancePayment]";string TotalSum = FindOrder + " WHERE o.TotalSum";string Address = FindOrder + " WHERE c.AddressResidence";string Surname = FindOrder + " WHERE c.Family";string BeginWorkDate = FindOrder + " WHERE o.[BeginWorkDate]";

}

}

Текст модуля MainForm

using System;System.Collections.Generic;System.Drawing;System.Windows.Forms;MariosWindows

{partial class MainForm : Form

{MainForm()

{();

}bool admin = false;SqlOperation sqlOperation = new SqlOperation();SelectEmployeeForm selectEmployeeForm;AddServiceForm addServiceForm;AddConfigurationForm addConfigurationForm;AddCustomerForm addCustomerForm;AddObjectForm addObjectForm;FindOrderForm findOrderForm;AuthorizationAndSelectDBForm selectDBForm;

private Order order = new Order();

private string source = "";

private void buttonAddOrder_Click(object sender, EventArgs e)

{errorAdd = false;

if (comboBoxPaymentKind.Text == string.Empty)

{.Text = "Вид оплаты:*";.ForeColor = Color.Red;= true;

}

{.Text = "Вид оплаты:";.ForeColor = Color.Black;

}

if (textBoxAdvancePayment.Text == string.Empty)

{.Text = "Предоплата:*";.ForeColor = Color.Red;= true;

}

{.Text = "Предоплата:";.ForeColor = Color.Black;

}

if (textBoxTermPerfomance.Text == string.Empty)

{.Text = "Срок выполнения:*";.ForeColor = Color.Red;= true;

}

{.Text = "Срок выполнения:";.ForeColor = Color.Black;

}(listViewServices.Items.Count == 0)

{.Text = "Услуги*";.ForeColor = Color.Red;= true;

}

{.Text = "Услуги";.ForeColor = Color.Black;

}(listViewConfiguration.Items.Count == 0)

{.Text = "Комплектация*";.ForeColor = Color.Red;= true;

}

{.Text = "Комплектация";.ForeColor = Color.Black;

}(listViewEmployees.Items.Count == 0)

{.Text = "Исполнители*";.ForeColor = Color.Red;= true;

}

{.Text = "Исполнители";.ForeColor = Color.Black;

}

if (comboBoxCustomer.Text == string.Empty)

{.Text = "Заказчик:*";.ForeColor = Color.Red;= true;

}

{.Text = "Заказчик:";.ForeColor = Color.Black;

}

if (comboBoxObject.Text == string.Empty)

{.Text = "Объект:*";.ForeColor = Color.Red;= true;

}

{.Text = "Объект:";.ForeColor = Color.Black;

}(errorAdd)

{.Show("Ошибка ввода данных", "Нельзя добавить заказ", MessageBoxButtons.OK,.Information);;

}

var services = new List<Service>();

var configurations = new List<Configuration>();employees = new List<Employee>();.Number = Convert.ToInt32(textBoxNumberOrder.Text.Trim());.OrderPaid = checkBoxOrderPaid.Checked;

{.PaymentAdvance = Convert.ToDouble(textBoxAdvancePayment.Text);

}(Exception)

{.Text = "Предоплата:*";.ForeColor = Color.Red;.Show("Неверный формат записи в поле 'Предоплата'! Введите число!", "Ошибка!", MessageBoxButtons.OK,.Error);;

}.PaymentKind = comboBoxPaymentKind.Text;.TermPerfomance = textBoxTermPerfomance.Text;.TotalSum = Convert.ToDouble(textBoxSummaryCost.Text);(order.TotalSum == 0)

{.Show("Ошибка ввода данных. Сумма заказа не может быть равна 0", "Нельзя добавить заказ", MessageBoxButtons.OK,.Information);;

}(order.TotalSum - order.PaymentAdvance<0)

{.Show("Ошибка ввода данных. Сумма заказа не может быть меньше предоплаты", "Нельзя добавить заказ", MessageBoxButtons.OK,.Information);;

}.Date = Convert.ToDateTime(dateTimePickerOrder.Text);.BeginWorkDate = Convert.ToDateTime(dateTimePickerBeginWork.Text);(ListViewItem item in listViewServices.Items)

{.Add((Service)item.Tag);

}.Services = services;

foreach (ListViewItem item in listViewConfiguration.Items)

{.Add((Configuration)item.Tag);

}.Configurations = configurations;

foreach (ListViewItem item in listViewEmployees.Items)

{.Add((Employee)item.Tag);

}.Employees = employees;

sqlOperation.AddOrder(order, services, configurations, employees, source);

if(MessageBox.Show("Заказ успешно добавлен. Сформировать счет на оплату?", "Заказ сформирован", MessageBoxButtons.YesNo,MessageBoxIcon.Asterisk) == DialogResult.Yes)

{excelAppShet = new ExcelReader(@"C:\шаблоны\schet-na-oplatu.xls");fileShet = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments),

"schet-na-oplatu.xls");reportClass = new ReportClass();.MakeReportShetNaOplatu(excelAppShet, order);.SaveDocument(fileShet);.Diagnostics.Process.Start(fileShet);

}

}void buttonAddMaker_Click(object sender, EventArgs e)

{= new SelectEmployeeForm();.Start();.GetConnection(source);employees = sqlOperation.GetEmployees( source);.Visible = true;.listViewObjectsMakes.Items.Clear();

for (int i= 0; i<employees.Count; i++)

{item = new ListViewItem((i+1).ToString());.SubItems.Add(employees[i].Surname + " " + employees[i].Name + " " + employees[i].Patronomic);.SubItems.Add(employees[i].Profession);.SubItems.Add(employees[i].BusinessPhone);.Tag = employees[i];.listViewFindObjects.Items.Add(item);.listViewFindObjects.Refresh();

}

}void addEmployeeTimer_Tick(object sender, EventArgs e)

{(selectEmployeeForm != null)

{(selectEmployeeForm.addEmployee && !selectEmployeeForm.Visible)

{.addEmployee = false;

for (int i = 0; i < selectEmployeeForm.listViewObjectsMakes.Items.Count; i++)

{item = new ListViewItem((listViewEmployees.Items.Count + 1).ToString());.SubItems.Add(selectEmployeeForm.listViewObjectsMakes.Items[i].SubItems[1].Text);.Tag = selectEmployeeForm.listViewObjectsMakes.Items[i].Tag;.Items.Add(item);.Refresh();

}.Close();.Stop();

}

}

}

private void buttonAddService_Click(object sender, EventArgs e)

{= new AddServiceForm();.Start();.GetConnection(source);servicesCategory = sqlOperation.GetServices( source);.Visible = true;.listViewObjectsServices.Items.Clear();.categoryService = servicesCategory;

foreach (var listServices in servicesCategory.Values)

{(var service in listServices)

{item = new ListViewItem((addServiceForm.listViewFindObjects.Items.Count + 1).ToString());.SubItems.Add(service.Name);.SubItems.Add(service.Cost.ToString());.Tag = service;.listViewFindObjects.Items.Add(item);.listViewFindObjects.Refresh();

}

}(var category in servicesCategory.Keys)

{.comboBoxCategory.Items.Add(category);

}(listViewServices.Items.Count > 0)(ListViewItem item in listViewServices.Items)

{itx = new ListViewItem((addServiceForm.listViewObjectsServices.Items.Count + 1).ToString());.SubItems.Add(((Service)item.Tag).Name);.SubItems.Add(((Service)item.Tag).SummaryCost.ToString());.SubItems.Add(((Service)item.Tag).Count.ToString());.Tag = (Service)item.Tag;.listViewObjectsServices.Items.Add(itx);

}

}void addServiceTimer_Tick(object sender, EventArgs e)

{(addServiceForm != null)

{(addServiceForm.addService && !addServiceForm.Visible)

{.addService = false;.Items.Clear();(int i = 0; i < addServiceForm.listViewObjectsServices.Items.Count; i++)

{item = new ListViewItem((listViewServices.Items.Count + 1).ToString());.SubItems.Add(((Service)addServiceForm.listViewObjectsServices.Items[i].Tag).Name);.SubItems.Add(((Service)addServiceForm.listViewObjectsServices.Items[i].Tag).SummaryCost.ToString());.SubItems.Add(((Service)addServiceForm.listViewObjectsServices.Items[i].Tag).Count.ToString());.Tag = addServiceForm.listViewObjectsServices.Items[i].Tag;.Items.Add(item);.Refresh();

}.Close();.Stop();

}

}

}

private void buttonAddConfiguration_Click(object sender, EventArgs e)

{= new AddConfigurationForm();.Start();.GetConnection(source);configurationCategory = sqlOperation.GetConfiguration( source);.Visible = true;.listViewObjectsConfigurations.Items.Clear();.categoryConfiguration = configurationCategory;

foreach (var listConfiguration in configurationCategory.Values)

{(var configuration in listConfiguration)

{item = new ListViewItem((addConfigurationForm.listViewFindObjects.Items.Count + 1).ToString());.SubItems.Add(configuration.Name);.SubItems.Add(configuration.PriceWithMargin.ToString());.Tag = configuration;.listViewFindObjects.Items.Add(item);.listViewFindObjects.Refresh();

}

}(var category in configurationCategory.Keys)

{.comboBoxCategory.Items.Add(category);

}(listViewConfiguration.Items.Count > 0)(ListViewItem item in listViewConfiguration.Items)

{itx = new ListViewItem((addConfigurationForm.listViewObjectsConfigurations.Items.Count + 1).ToString());.SubItems.Add(((Configuration)item.Tag).Name);.SubItems.Add(((Configuration)item.Tag).SummaryCost.ToString());.SubItems.Add(((Configuration)item.Tag).Count.ToString());.Tag = (Configuration)item.Tag;.listViewObjectsConfigurations.Items.Add(itx);

}

}void addConfigurationTimer_Tick(object sender, EventArgs e)

{(addConfigurationForm != null)

{(addConfigurationForm.addConfiguration && !addConfigurationForm.Visible)

{.addConfiguration = false;.Items.Clear();(int i = 0; i < addConfigurationForm.listViewObjectsConfigurations.Items.Count; i++)

{item = new ListViewItem((listViewConfiguration.Items.Count + 1).ToString());.SubItems.Add(((Configuration)addConfigurationForm.listViewObjectsConfigurations.Items[i].Tag).Name);.SubItems.Add(((Configuration)addConfigurationForm.listViewObjectsConfigurations.Items[i].Tag).SummaryCost.ToString());.SubItems.Add(((Configuration)addConfigurationForm.listViewObjectsConfigurations.Items[i].Tag).Count.ToString());.Tag = addConfigurationForm.listViewObjectsConfigurations.Items[i].Tag;.Items.Add(item);.Refresh();

}.Close();.Stop();

}

}

}

private void buttonCalculateCost_Click(object sender, EventArgs e)

{summaryCost = 0;(listViewConfiguration.Items.Count > 0)(ListViewItem item in listViewConfiguration.Items)

{+= ((Configuration)item.Tag).SummaryCost;

}

{.Show("Не задана комплектация", "Некорректная сумма", MessageBoxButtons.OK,.Information);

}(listViewServices.Items.Count > 0)(ListViewItem item in listViewServices.Items)

{+= ((Service)item.Tag).SummaryCost;

}

{.Show("Не заданы услуги", "Некорректная сумма", MessageBoxButtons.OK,.Information);

}.Text = summaryCost.ToString();

}

private void buttonSelectCustomer_Click(object sender, EventArgs e)

{.Start();= new AddCustomerForm();.source = source;.Visible = true;

}void MainForm_Load(object sender, EventArgs e)

{();

{.CheckConnection(source);

}(Exception)

{= new AuthorizationAndSelectDBForm();.Visible = true;.Start();.Show("Не удалось подключиться к БД. Введите имя другой БД", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Error);;

}();.Visible = true;(admin)

операцииToolStripMenuItem.Visible = true;

операцииToolStripMenuItem.Visible = false;

var customers = sqlOperation.GetCustomer(source);

foreach(var customer in customers)

{.Items.Add(customer.Surname.Trim() +" "+ customer.Name.Trim() + " "+customer.Patronomyc.Trim());.Tag = customers;

}

var placeWorks = sqlOperation.GetPlaceWork( source);

foreach (var placeWork in placeWorks)

{.Items.Add(placeWork.Address.Trim());.Tag = placeWorks;

}.Text = sqlOperation.IncrementNumberOrder( source).ToString();

}

private void addCustomerTimer_Tick(object sender, EventArgs e)

{(addCustomerForm != null)

{(addCustomerForm.addCustomer && !addCustomerForm.Visible)

{.addCustomer = false;.Items.Clear();customers = sqlOperation.GetCustomer( source);(int i = 0; i < customers.Count; i++)

{.Items.Add(customers[i].Surname.Trim() + " " + customers[i].Name.Trim() + " " +[i].Patronomyc.Trim());

}.Text = addCustomerForm.customer.Surname.Trim() + " " + addCustomerForm.customer.Name.Trim() + " " + addCustomerForm.customer.Patronomyc;.IdCustomer = addCustomerForm.customer.Id;.customer = addCustomerForm.customer;.Close();.Stop();

}

}

}

private void buttonSelectObject_Click(object sender, EventArgs e)

{.Start();= new AddObjectForm();.source = source;.Visible = true;

}

private void addObjectTimer_Tick(object sender, EventArgs e)

{(addObjectForm != null)

{(addObjectForm.addPlaceWork && !addObjectForm.Visible)

{.addPlaceWork = false;.Items.Clear();placeWorks = sqlOperation.GetPlaceWork(source);(int i = 0; i < placeWorks.Count; i++)

{.Items.Add(placeWorks[i].Address.Trim());

}.Text = addObjectForm.placeWork.Address.Trim();.IdObjectInstallation = addObjectForm.placeWork.Id;.placeWork = addObjectForm.placeWork;.Close();.Stop();

}

}

}

private void comboBoxCustomer_SelectedIndexChanged(object sender, EventArgs e)

{(Customer cust in (List<Customer>)comboBoxCustomer.Tag)

{((cust.Surname.Trim() + " " + cust.Name.Trim() + " " + cust.Patronomyc) == comboBoxCustomer.Text)

{.IdCustomer = cust.Id;.customer = cust;

}

}

}

private void comboBoxObject_SelectedIndexChanged(object sender, EventArgs e)

{(PlaceWork placeWork in (List<PlaceWork>)comboBoxObject.Tag)

{((placeWork.Address.Trim() == comboBoxObject.Text))

{.IdObjectInstallation = placeWork.Id;.placeWork = placeWork;

}

}

}

private void ToolStripMenuItemClose_Click(object sender, EventArgs e)

{.Close();

}

private void ToolStripMenuItemNewOrder_Click(object sender, EventArgs e)

{.Text = string.Empty;.Text = sqlOperation.IncrementNumberOrder(source).ToString();.Text = string.Empty;.Text = string.Empty;.Text = string.Empty;.Text = string.Empty;.Text = string.Empty;.Items.Clear();.Items.Clear();.Items.Clear();.CheckState = CheckState.Unchecked;

}void ToolStripMenuItemFindOrder_Click(object sender, EventArgs e)

{= new FindOrderForm();.source = source;.Visible = true;

}

private void toolStripTextBox1_Click(object sender, EventArgs e)

{

}void toolStripMenuItem2_Click(object sender, EventArgs e)

{.Start();= new AuthorizationAndSelectDBForm();.Visible = true;

}

private void timerSelectDB_Tick(object sender, EventArgs e)

{(selectDBForm != null)

{(selectDBForm.selectDB && !selectDBForm.Visible)

{();= selectDBForm.textBoxSelectDB.Text.Trim();customers = sqlOperation.GetCustomer(source);(var customer in customers)

{.Items.Add(customer.Surname.Trim() + " " + customer.Name.Trim() + " " +.Patronomyc.Trim());.Tag = customers;

}

var placeWorks = sqlOperation.GetPlaceWork(source);

foreach (var placeWork in placeWorks)

{.Items.Add(placeWork.Address.Trim());.Tag = placeWorks;

}.Text = sqlOperation.IncrementNumberOrder(source).ToString();.Stop();.Visible = true;

}

}

}InsertSupplierForm insertSupplierForm;void добавитьПоставщикаToolStripMenuItem_Click(object sender, EventArgs e)

{= new InsertSupplierForm();.Start();.source = source;.Visible = true;

}

private void timerInsertSupliers_Tick(object sender, EventArgs e)

{(insertSupplierForm != null)

{(insertSupplierForm.insertSupplier && !insertSupplierForm.Visible)

{.Close();.Stop();

}

}

}InsertConfigurationForm insertConfigurationForm;

private void добавитьКомплектациюToolStripMenuItem_Click(object sender, EventArgs e)

{= new InsertConfigurationForm();.Start();.source = source;.Visible = true;configurationCategory = sqlOperation.GetConfiguration(source);(var category in configurationCategory.Keys)

{.comboBoxCategory.Items.Add(category);

}configurationSuppliers = sqlOperation.GetSuppliers(source);(var sup in configurationSuppliers)

{.comboBoxSuppliers.Items.Add(sup.Id +"."+sup.Name);

}

}void timerInsertConfiguration_Tick(object sender, EventArgs e)

{(insertConfigurationForm != null)

{(insertConfigurationForm.insertConfiguration && !insertConfigurationForm.Visible)

{.Close();.Stop();

}

}

}InsertServiceForm insertServiceForm;

private void добавитьУслугуToolStripMenuItem_Click(object sender, EventArgs e)

{= new InsertServiceForm();.source = source;.Visible = true;cserviceCategory = sqlOperation.GetServices(source);(var category in cserviceCategory.Keys)

{.comboBoxCategory.Items.Add(category);

}

}

public InsertEmployeeForm insertEmployeeForm;void добавитьСотрудникаToolStripMenuItem_Click(object sender, EventArgs e)

{= new InsertEmployeeForm();.source = source;.Visible = true;

}

}

}



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

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ