Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Проектирование реализации операций бизнес-процесса «Продажи» ( ООО «Бизнеском»)

Содержание:

Введение

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

Целью работы является проектирование реализации операций бизнес-процесса «Продажи».

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

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

Аналитическая часть

Организационно-штатная структура управления ООО «Бизнеском» приведена на рисунке 1.1.

Рисунок 1.1 Организационно-штатная структура управления ООО «Бизнеском

Структурная схема технической архитектуры предприятия представлена на рисунке 1.2.

Рисунок 1.2 - Схема технической архитектуры предприятия

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

Рисунок 1.3 Схема программной архитектуры

Выбор комплекса задач

ООО «Бизнеском» характеризуется следующими бизнес-процессами:

1. Основные и обеспечивающие бизнес-процессы

1.1. Закупка товаров

1.1.1. Поиск поставщиков

1.1.2. Заключение договоров

1.1.3. Контроль за оформлением документов и отгрузкой товаров

1.1.4. Выработка ценовой политики по закупу

1.1.5. Работа с представительствами

1.2. Транспорт

1.2.1. Заключение договоров по аренде автомобилей

1.2.2. Заключение договоров на транспортировку грузов

1.2.3. Контроль за продвижением товаров

1.2.4. Поддержка автотранспорта в технически исправном состоянии

1.2.5. Предоставление информации по транспорту для оперативного учета

1.2.6. Обеспечение сохранности автотранспорта

1.3. Хранение

1.3.1. Организация хранения товаров

1.3.2. Обеспечение сохранности товарно-материальных ценностей

1.3.3. Контроль за состоянием складов

1.4. Сбыт

1.4.1. Выработка ценовой политики по сбыту

1.4.2. Заключение договоров на продажу товаров

1.4.3. Контроль за исполнением договоров продаж

1.4.4. Контроль за качеством и сбытом

1.4.5. Предпродажная подготовка товаров

1.4.6. Доставка и установка товаров

1.4.7. Предоставление информации по сбыту для оперативного учета

1.5. Послепродажное обслуживание

1.5.1. Гарантийный ремонт

1.5.2. Прием и обмен некачественного товара

1.5.3. Контроль по срокам гарантии

1.5.4. Оформление документов по обмену и возврату

1.5.5. Предоставление информации по гарантийному ремонту для оперативного учета

1.6. Учет

1.6.1. Бухгалтерский учет

1.6.2. Оперативный учет

1.6.3. Внутренний учет для менеджеров и руководителей

Характеристика существующих бизнес –процессов

Учет продаж

Характеристика основной деятельности предприятия приведена на рисунке 1.4.

Рисунок 1.4 Характеристика основной деятельности ООО «Бизнеском»

Декомпозиция данного процесса приведена на рисунке 1.5.

Рисунок 1.5 - Декомпозиция основной деятельности

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

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

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

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

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

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

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

На рисунке 1.6 представлен бизнес процесс учета продаж ООО «Бизнеском».

Рисунок 1.6 - Бизнес процесс учет продаж

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

К задачам учета продаж продукции относятся:

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

Данный порядок отражен на схеме декомпозиции процесс продаж, приведенной на рисунке 1.7.

Рисунок 1.7 - Декомпозиция процесса продаж

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

  • отчет о продажах по товарам;
  • отчет по продажам по клиентам;
  • отчет о продажах по датам (за период);
  • общий (сводный отчет).

Оформление и учет реализации товаров в данной организации зависит от способа расчета за приобретаемый товар между покупателем и продавцом. Товары в организации реализуются как за наличный расчет, так и по безналичному расчету. Безналичные расчеты регулируются "Положением о безналичных расчетах в Российской Федерации" от 03 октября 2002г. №2-П. При оптовых поставках возможны как поступления наличных денег в кассу организации (до предельной суммы по одному платежу, ограниченной в установленном порядке), так и перечислением денежных средств на расчетный счет.

В розничных организациях денежные расчеты с населением ведутся с применением контрольно - кассовых машин в соответствии с Федеральным законом от 22.05.2003 № 54-ФЗ "О применении контрольно-кассовой техники при осуществлении наличных денежных расчетов и (или) расчетов с использованием платежных карт" и Положением об осуществлении наличных денежных расчетов и (или) расчетов с использованием платежных карт без применения контрольно-кассовой техники, утвержденным Постановлением Правительства РФ от 31.03.2005 № 171.

Сумма розничного товарооборота определяется по сумме выручки за реализованные товары основании «Сведений о показаниях счетчиков контрольно-кассовых машин и выручке организации» по форме № КМ-7, где по каждому магазину указывается сумма выручки, подтверждаемая подписью директора магазина. Этот документ составляют на основании «Справок-отчетов кассиров-операционистов» по форме № КМ-6, который в свою очередь формируется с использованием «Журнала кассиров-операционистов» по форме № КМ-4 и Журнала регистрации показаний суммирующих денежных и контрольных счетчиков контрольно-кассовых машин, работающих без кассира-операциониста» по форме № КМ-5.

Материально ответственным лицам, работающим в магазинах, выдается в одном экземпляре товарный журнал сотрудника мелкорозничной торговли по форме № ТОРГ-23. Отпуск товаров оформляется расходно-приходной накладной для мелкорозничной торговли по форме № ТОРГ-14. Данные об отпуске товаров и получении выручки отражаются в товарном журнале на основании приходно-расходных документов с выводом каждый раз нового остатка товаров. Записи в журнале производятся ответственными лицами, отпускающими товар или принимающими выручку.

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

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

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

В расходной части товарного отчета подсчитывают общую сумму расхода товаров за отчетный период.

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

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

Рассмотрим порядок учета продаж в ООО «Бизнеском».

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

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

В связи с обнаруженными недостатками в работе предприятия, в частности при учете , руководством ООО «Бизнеском» принято решение об автоматизации процессов учета продаж.

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

Сравнение основных операций при приеме заказа без применения средств автоматизации и в предлагаемом варианте по трудовым и стоимостным затратам приведено в таблице 1.1 и таблице 1.2.(с учетом средней заработной платы менеджера 25000 в месяц).

Таблица 1.1

Временные и стоимостные затраты при существующем варианте

Наименование операции

Количество, в рабочий день

Затрачиваемое время на одну, мин

Итого в рабочий день, минут

Стоимостная оценка, рублей

Сбор данных

4

10

40

99,2

Проверка данных

4

30

120

297,6

Формирование отчетов

8

40

320

793,6

Учет отчета

4

15

60

148,8

Итого:

540

1339,2

Таблица 1.2

Временные и стоимостные затрат при планируемом варианте

Наименование операции

Количество, в рабочий день

Затрачиваемое время на одну, мин

Итого в рабочий день, минут

Стоимостная оценка, рублей

Сбор данных

4

1

4

9,92

Проверка данных

4

1

4

9,92

Формирование отчетов

4

10

40

99,2

Учет отчета

4

10

40

99,2

Итого:

88

218,24

Как видно из приведенных выше таблиц, временные затраты должны сократиться на 540-88=452 минуты=7, 5 часов и 1339-218=1121 рубль в сутки. Следовательно, внедрение такой системы является однозначно выгодным с точки зрения оптимизации расхода трудовых и стоимостных ресурсов.

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

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

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

Определение, характеристика документооборота, возникающего при решении задачи

Диаграмма вариантов использования (прецедентов, use-case)

Разработка данной диаграммы преследует следующие цели:

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

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

Средства Rational Rose позволяют для описания функциональной системы воспользоваться графическим редактором для построения Use Case диаграмм (сценариев). Опишем основные элементы см. таблице 1.3.

Таблица 1.3

Условные обозначения диаграммы вариантов использования

Условное обозначение

Описание условного обозначения

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

Use case -стандартное обозначение варианта (прецедента) использования, описывающий типичное взаимодействие между пользователем и системой

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

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

связь расширение (extend)отмечает тот факт, что один из вариантов использования может присоединять к своему поведению некоторое дополнительное поведение, определенное для другого варианта использования

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

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

Диаграммы деятельности (активности)

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

Таблица 1.4

Условные обозначения диаграммы деятельности

Условное обозначение

Описание условного обозначения

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

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

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

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

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

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

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

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

Рассмотрим диаграмму активности «заказ товара»:

Рисунок 1.9 - Диаграмма активности «заказ товара»

Диаграммы взаимодействия

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

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

сообщения – запросы (interrogative) – сообщения, запрашивающие выдачу информации об объекте-получателе;

императивные (imperative) – сообщения, запрашивающие у объекта-получателя выполнение действия.

Существует два вида диаграмм взаимодействия:

  1. последовательности (sequence diagrams);
  2. кооперативные (collaboration diagrams).

На диаграмме последовательности объект изображается в виде прямоугольника на вершине пунктирной вертикальной линии. Эта вертикальная линия называется линией жизни (lifeline) объекта. Она представляет собой фрагмент жизненного цикла объекта в процессе взаимодействия.

Каждое сообщение изображается в виде стрелки между линиями жизни двух объектов. Сообщения появляются в том порядке, как они показаны на странице, сверху вниз. Каждое сообщение помечается как минимум именем сообщения; при желании можно добавить также аргументы и некоторую управляющую информацию и, кроме того, показать самоделегирование (self-delegation) -сообщение, которое объект посылает самому себе, при этом стрелка сообщения указывает на ту же самую линию жизни.

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

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

Рисунок 1.11 - Диаграмма кооперации «заказ дополнительного оборудования»

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

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

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

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

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

ОКУД - Общероссийский классификатор управленческой документации;

ОКОПФ - Общероссийский классификатор организационно-правовых форм [4].

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

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

Договор:

  • Дата ;
  • статус;
  • описание;
  • признак клиента;
  • признак сотрудника.

Пользователь системы (менеджер):

  • фамилия;
  • имя;
  • отчество;
  • дата рождения
  • дата начала работы;
  • данные для доступа к сервису;
  • E-mail.

Клиент:

  • Тип (физическое или юридическое лицо);
  • Адрес
  • ФИО контактного лица;
  • контактный телефон;
  • номер договора;
  • данные для доступа к сервису;
  • паспортные данные.

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

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

- операционные системы семейства Windows от фирмы Microsoft (Windows XP/Vista/Seven),

- операционные системы Linux/BSD семейства (UNIX подобные) от различных фирм – разработчиков [13].

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

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

Сравнение операционных систем приведено в таблице 1.5.

Таблица 1.5

Сравнение характеристик наиболее распространенных пользовательских ОС

Наименование ОС

Windows 7

Linux

Mac OS X Snow Leopard 10.6

Минимальные системные требования

Процессор

1 ГГц или выше 32- (x86) или 64-разрядный (x64)

500 МГц — 1 ГГц

300 МГц

ОЗУ

1 ГБ (32-разрядная система) / 2 Гб (64-разрядная система)

256 МБ (alternate-установка) / 384 МБ (стандартная установка)

192 МБ (32-разрядная версия) / 256 МБ (64-разрядная версия)

Свободное место на диске

16 ГБ (32-разрядная система) / 20 ГБ (64-разрядная система)

3-5 ГБ (в зависимости от разновидности)

2-3 ГБ

Видеокарта

Графический процессор DirectX 9 с драйвером WDDM 1.0 или более старшей версии

Super VGA (800x600/1024x768) из числа поддерживаемых системой

VGA (640 x 480)

Другие характеристики

Встроенное офисное ПО

-

+

-

Высокий уровень безопасности и защиты от вирусов и т.п.

-

+

-

Наличие 64-битной версии

-

+

+

Удобная работа с устройствами хранения данных

+

-

+

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

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

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

Сегодня существует много различных технологий, позволяющих создавать web-приложения разной степени сложности. К ним относятся ASP, ASP.NET, PHP, JSP и многие другие. Наиболее популярной и распространённой технологией на сегодняшний день является PHP, во многом благодаря своей бесплатности. Однако с появлением технологии ASP.NET у PHP появился серьёзный конкурент. В сообществе web-программистов идут бесконечные споры о том, какая из технологий является лучше. Однозначно на этот вопрос ответа нет, выбор технологии должен быть обусловлен, прежде всего, требованиями к разрабатываемой системе, навыками и опытом программистов в той или иной области, а также в зависимости от выбранной ОС, смежных технологий и программного обеспечения, с которым будет взаимодействовать разрабатываемое web-приложение.

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

Ниже приведён небольшой сравнительный анализ технологий ASP.NET и PHP. Его целью не является доказать какая технология лучше, а просто обосновать выбор для разработки конкретного web-приложения.

ASP.NET – новая технология, разработанная компанией Microsoft и являющаяся частью среды .NET Framework. Она позволяет динамически создавать документы на web-сервере, когда они запрашиваются по протоколу HTTP.

PHP – это открытая и бесплатная технология. PHP – это скриптовый язык, созданный для динамического вывода HTML.

Для реализации функций разрабатываемого web-приложения подходят обе технологии, однако, используя ASP.NET, это сделать намного проще. ASP.NET за счет использования разнообразных серверных элементов управления позволяет создавать приложения значительно быстрее. NET.Framework содержит множество функций, которых в PHP просто нет и необходимо создавать их самому. Также необходимо отметить наличие мощной среды разработки web-приложений на ASP.NET – Visual Studio, которая позволяет максимально повысить скорость разработки и отладки приложения.

Технология PHP является кроссплатформенной, а ASP.NET на сегодняшний момент реализована только для ОС Windows, что является минусом и автоматически привязывает нас к одной ОС.

Одним из важнейших факторов, влияющим на выбор той или иной технологии, является быстродействие, особенно при одновременной работе с множеством пользователей. Утверждать, что какая-то из технологий всегда выигрывает в быстродействии нельзя, необходимо рассматривать каждый конкретный случай отдельно. На быстродействие влияет и характер действий, выполняемых web-приложением, и алгоритмы, применяемые при реализации функций системы, и выбор смежного ПО, например СУБД. Приложения ASP.NET компилируются, а не интерпретируются при каждом использовании, как в PHP. Теоретически это должно давать выигрыш в быстродействии по сравнения с PHP, однако на практике часто бывает наоборот. Скорость работы обеспечивается тем, что все РНР-приложения работают в едином адресном пространстве, тогда как ASP.NET за счет сложной модели классов многократно проверяет и перепроверяет данные, удерживая каждое приложение в отдельном адресном пространстве. Первый подход более быстр, но менее надежен, второй - более надежен, но за это приходится платить. Отдельно стоит упомянуть об обеспечении быстродействия при взаимодействии с СУБД. PHP ориентирован на работу с MySQL, а ASP.NET – с MS SQL Server. Это значит, что наилучшее быстродействие будет достигаться при использовании соответствующей СУБД. При этом необходимо отметить, что MS SQL Server по функциям и производительности не превосходит MySQL.

Также при выборе технологии необходимо учитывать стоимость разработки и поддержки web-приложения. Очень часто основным доводом в пользу использования технологии PHP, а также СУБД MySQL и UNIX-cистем, приводят их бесплатность.

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

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

  • Кроссплатформенность СУБД;
  • Полная совместимость с выбранной средой разработки (PHP);
  • Простота использования и внедрения;
  • Распространенность и популярность СУБД. При использовании малораспространенной СУБД в будущем могут возникнуть проблемы с поддержкой и развитием ИС, что так же наложит дополнительные затраты на перенос накопленных данных.
  • Надежность, позволяющая обеспечить решение задачи постоянного наполнения и обеспечения сохранность данных.

Проведём анализ рынка СУБД по нескольким характеристикам.

Таблица 1.6

Сравнительные характеристики СУБД

. Размер БД

Защита данных

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

PostgreSQL

Гигабайты

Сильная

Неприхотливые

Interbase

Гигабайты

слабая

Чувствительные

MySQL

Гигабайты

Сильная

Неприхотливые

SyBase

Сотни гигабайт и больше

Сильная

Чувствительные

MS SQL Server

Сотни гигабайт и больше

Сильная

Требуют мощных серверов

Учитывая приведенные выше требования и сравнительный обзор в качестве СУБД был выбрана среда MySQL – это многопоточная, многопользовательская СУБД, основными достоинствами которой является быстрота, надежность и простота использования, а в качестве языка программирования – PHP.

Проектная часть

Информационная модель и её описание

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

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

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

Весь цикл обработки информации можно разбить на два этапа:

  1. Прием, обработка и ввод первичной входящей информации (паспортные данные, реквизиты организаций и т.д.).
  2. Формирование документов (договора продаж и закупок и т.д.).

Графическое представление информационной модели отражено на рис. 2.1.

Рисунок 2.1 Информационная модель системы учета продаж

и закупок

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

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

Характеристика нормативно-справочной, входной и оперативной информации

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

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

В данных сотрудника содержатся следующие реквизиты:

  • ФИО
  • Должность
  • Организация
  • Контакты
  • Оклад
  • Дата рождения
  • Дата поступления
  • ИНН
  • E-mail
  • Фото
  • Паспорт серия
  • Паспорт номер
  • Кем выдан
  • Дата выдачи

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

  • Название
  • Менеджер
  • Полное название
  • Адрес
  • Телефон
  • Email
  • Контактное лицо
  • Сайт
  • Деятельность
  • Дата обращения

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

Таблица 2.1

Перечень используемых справочников

№ пп

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

ответственный за ведение

средний объём справочника в записях

среднюю частоту актуализации

средний объем актуализации, %

1

Сотрудники

Администратор

100

1 раз в месяц

10

2

Товары

Администратор

50

1 раз в месяц

10

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

Таблица 2.2

Реквизитный состав справочников

№ пп

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

Перечень реквизитов

1

Сотрудники

  • ФИО
  • Должность
  • Организация
  • Контакты
  • Оклад
  • Дата рождения
  • Дата поступления
  • ИНН
  • E-mail
  • Фото
  • Паспорт серия
  • Паспорт номер
  • Кем выдан
  • Дата выдачи
  • Логин
  • Пароль
  • Группа доступа

2

Товары

  • Наименование
  • Стоимость
  • Единица измерения
  • Описание
  • Артикул

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

  • Контрагенты;
  • Контактные лица;
  • Реквизиты;
  • Товарные чеки;
  • Счета-фактуры;
  • Накладные;
  • Счета.

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

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

Характеристика результатной информации

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

  • Список сотрудников компании;
  • Данные каждого сотрудника;
  • Список контрагентов;
  • Данные каждого контрагента;
  • Отчет «Доход по компаниям»;
  • Отчет «Доход по категориям»;
  • Товарный чек;
  • Счет-фактура;
  • Накладная;
  • Счет на оплату.

Экранные формы данных документов приведены в Приложении, реквизитный состав - в таблице 2.3.

Таблица 2.3

Реквизитный состав выходных документов

№ пп

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

Реквизиты

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

Частота формирования

Способ доставки

1

Список сотрудников

  • ФИО
  • Должность
  • Организация
  • Контакты
  • оклад
  • Дата рождения
  • Дата поступления
  • ИНН
  • email
  • Сотрудники

По запросу

Экранная форма

2

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

  • ФИО
  • Должность
  • Организация
  • Контакты
  • Оклад
  • Дата рождения
  • Дата поступления
  • ИНН
  • E-mail
  • Фото
  • Паспорт серия
  • Паспорт номер
  • Кем выдан
  • Дата выдачи
  • Логин
  • Пароль
    • Группа доступа
  • Сотрудники

По запросу

Экранная форма

3

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

  • Название
  • Менеджер
  • Телефон
  • Email
  • Контактное лицо
  • Контрагенты
  • Сотрудники

По запросу

Экранная форма

4

Данные каждого контрагента

  • Название
  • Менеджер
  • Полное название
  • Адрес
  • Телефон
  • Email
  • Контактное лицо
  • Сайт
  • Деятельность
  • Дата обращения
  • Контрагенты

По запросу

Экранная форма

5

Отчет «Доход по компаниям»

  • Компания
  • Доход за 30 дней
  • Доход за 60 дней
  • Доход за заданный период
  • Заданный период
  • Контрагенты
  • Товарные чеки
  • Счет-фактуры
  • Счета на оплату

По запросу

Экранная форма

6

Отчет «Доход по категориям»

  • Категория
  • Доход за 30 дней
  • Доход за 60 дней
  • Доход за заданный период
  • Заданный период
  • Товар
  • Товарные чеки
  • Счет-фактуры
  • Счета на оплату

По запросу

Экранная форма

7

Товарный чек

  • Номер
  • Дата
  • Продавец
  • Единица измерения
  • Количество
  • Цена
  • Сумма
  • Итого
  • Итого НДС
  • Итого к оплате
  • Товар
  • Контрагенты
  • Товарные чеки

По запросу

Экранная и печатная форма

8

Счет-фактура

  • Номер
  • Дата
  • Продавец
  • ИНН/КПП
  • Грузоотправитель
  • Грузоплучатель
  • Единица измерения
  • Количество
  • Цена
  • Сумма
  • Итого
  • Итого НДС
  • Итого к оплате
  • Товар
  • Контрагенты
  • Счет-фактуры

По запросу

Экранная и печатная форма

Накладная

  • Номер
  • Дата
  • Продавец
  • ИНН/КПП
  • Грузоотправитель
  • Грузоплучатель
  • Единица измерения
  • Количество
  • Цена
  • Сумма
  • Итого
  • Итого НДС
  • Итого к оплате
  • Отпустил
  • получил
  • Товар
  • Контрагенты
  • Накладные
  • Контактные лица

По запросу

Экранная и печатная форма

Счет на оплату

  • Номер
  • Наименование
  • Единица измерения
  • Количество
  • Цена
  • Сумма
  • В том числе НДС
  • Продавец
  • Адрес
  • ИНН
  • Расчетный счет
  • Кор.счет
  • Банк
  • БИК
  • Покупатель
  • Адрес покупателя
  • ИНН покупателя
  • Расчетный счет покупателя
  • Кор.счет покупателя
  • Банк покупателя
  • БИК покупателя
  • Товар
  • Контрагенты
  • Счета
  • Контактные лица
  • Реквизиты

По запросу

Экранная и печатная форма

Характеристика базы данных

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

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

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

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

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

Рисунок 2.2 ER-модель разрабатываемой базы данных

Реквизитный состав каждой таблицы, а также наименование идентификаторов полей, их вид и длина приведены в таблицах 2.5- 2.13.

Таблица 2.5

Таблица «Контрагенты»

Наименование поля

Идентификатор поля

Тип и длина поля

Прочее

Код записи

id

int(11)

auto_increment 

Код добавившего пользователя

user_id

int(11)

Дата и время добавления

add_time

datetime

Статус

status

int(11)

Название

f773

int(11)

Менеджер

f774

varchar(255)

Полное название

f775

varchar(255)

Адрес

f776

varchar(255)

Телефон

f777

varchar(255)

Email

f778

varchar(255)

Контактное лицо

f779

varchar(255)

Сайт

f780

varchar(255)

Деятельность

f781

varchar(255)

Дата обращения

f782

varchar(255)

Таблица 2.6

Таблица «Сотрудники»

Наименование поля

Идентификатор поля

Тип и длина поля

Прочее

Код записи

id

int(11)

auto_increment 

Код добавившего пользователя

user_id

int(11)

Дата и время добавления

add_time

datetime

Статус

status

int(11)

ФИО

f483

varchar(255)

Должность

f484

varchar(255)

Организация

f485

varchar(255)

Контакты

f487

varchar(255)

оклад

f488

varchar(255)

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

f489

datetime

Дата поступления

f490

datetime

email

f553

varchar(255)

ИНН

f554

varchar(255)

Логин

f555

varchar(255)

Пароль

f556

varchar(255)

Таблица 2.7

Таблица «Товар»

Наименование поля

Идентификатор поля

Тип и длина поля

Прочее

Код записи

id

int(11)

auto_increment 

Код добавившего пользователя

user_id

int(11)

Дата и время добавления

add_time

datetime

Статус

status

int(11)

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

f848

varchar(255)

Стоимость

f849

varchar(255)

Категория

f850

varchar(255)

Артикул

f851

varchar(255)

Таблица 2.8

Таблица «Контактные лица»

Наименование поля

Идентификатор поля

Тип и длина поля

Прочее

Код записи

id

int(11)

auto_increment 

Код добавившего пользователя

user_id

int(11)

Дата и время добавления

add_time

datetime

Статус

status

int(11)

ФИО

f435

varchar(255)

Должность

f438

varchar(255)

Телефон

f439

varchar(255)

E-mail

f440

varchar(255)

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

f441

varchar(255)

Дополнительно

f442

varchar(255)

Код контрагента

f443

int(11)

Таблица 2.9

Таблица «Реквизиты»

Наименование поля

Идентификатор поля

Тип и длина поля

Прочее

Код записи

id

int(11)

auto_increment 

Код добавившего пользователя

user_id

int(11)

Дата и время добавления

add_time

datetime

Статус

status

int(11)

Код контрагента

f545

int(11)

ИНН

f546

varchar(255)

Расчетный счет

f547

varchar(255)

Кор.счет

f548

varchar(255)

Банк

f549

varchar(255)

БИК

f550

varchar(255)

Таблица 2.10

Таблица «Товарные чеки»

Наименование поля

Идентификатор поля

Тип и длина поля

Прочее

Код записи

id

int(11)

auto_increment 

Код добавившего пользователя

user_id

int(11)

Дата и время добавления

add_time

datetime

Статус

status

int(11)

Номер

f825

int(11)

Дата

f826

datttime

Продавец

f827

varchar(255)

Единица измерения

f828

varchar(255)

Количество

f829

varchar(255)

Цена

f830

varchar(255)

Сумма

f831

varchar(255)

Итого

f832

varchar(255)

Итого НДС

f833

varchar(255)

Итого к оплате

f834

varchar(255)

Таблица 2.11

Таблица «Счета-фактуры»

Наименование поля

Идентификатор поля

Тип и длина поля

Прочее

Код записи

id

int(11)

auto_increment 

Код добавившего пользователя

user_id

int(11)

Дата и время добавления

add_time

datetime

Статус

status

int(11)

Номер

f807

int(11)

Дата

f808

datttime

Продавец

f809

varchar(255)

Единица измерения

f810

varchar(255)

Количество

f811

varchar(255)

Цена

f812

varchar(255)

Сумма

f813

varchar(255)

Итого

f814

varchar(255)

Итого НДС

f815

varchar(255)

Итого к оплате

f816

varchar(255)

Грузополучатель

f817

varchar(255)

Грузоотправитель

f818

varchar(255)

Код реквизитов

f819

int(11)

Таблица 2.12

Таблица «Накладные»

Наименование поля

Идентификатор поля

Тип и длина поля

Прочее

Код записи

id

int(11)

auto_increment 

Код добавившего пользователя

user_id

int(11)

Дата и время добавления

add_time

datetime

Статус

status

int(11)

Номер

f100

int(11)

Дата

F101

datttime

Продавец

F102

varchar(255)

Единица измерения

F103

varchar(255)

Количество

F104

varchar(255)

Цена

F105

varchar(255)

Сумма

F106

varchar(255)

Итого

F107

varchar(255)

Итого НДС

F108

varchar(255)

Итого к оплате

F109

varchar(255)

Грузополучатель

F110

varchar(255)

Грузоотправитель

F111

varchar(255)

Код реквизитов

F112

int(11)

Отпустил

F113

varchar(255)

Получил

f114

varchar(255)

Таблица 2.13

Таблица «Счета на оплату»

Наименование поля

Идентификатор поля

Тип и длина поля

Прочее

Код записи

id

int(11)

auto_increment 

Код добавившего пользователя

user_id

int(11)

Дата и время добавления

add_time

datetime

Статус

status

int(11)

Номер

f880

int(11)

Дата

f881

datttime

Продавец

f882

varchar(255)

Единица измерения

f883

varchar(255)

Количество

f884

varchar(255)

Цена

f885

varchar(255)

Сумма

f886

varchar(255)

Итого

f887

varchar(255)

Итого НДС

f888

varchar(255)

Итого к оплате

f889

varchar(255)

Код реквизитов продавца

f890

int(11)

Код реквизитов покупателя

f891

int(11)

Общие положения (дерево функций и сценарий диалога)

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

Рисунок 2.3 Дерево функций системы сотрудника

Сценарии диалога, формирующийся на основе дерева функций, приведен на рисунке 2.4.

Рисунок 2.4 Сценарий диалога для пользователя

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

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

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

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

Рисунок 2.5 Блок-схема основных модулей программы

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

Описание программных модулей представлено в таблице 2.14.

Таблица 2.14

Описание программных модулей

№ п/п

Наименование модуля

Функции модуля

Документы

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

Регистры

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

Отчеты и обработки

Позволяет получить отчеты по продажам и закупкам, клиентам, а также товару

Справочники и перечисления

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

Главные модули

Обеспечивает работу системы

Описание программных модулей

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

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

Программа состоит из следующих основных модулей.

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

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

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

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

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

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

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

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

Рисунок 2.6 Схема решения задачи «Ведение справочников»

Контрольный пример реализации проекта и его описание

Рисунок 2.7

Рисунок 2.8

Рисунок 2.9

Рисунок 2.10

Рисунок 2.11

Рисунок 2.12

Рисунок 2.13

Рисунок 2.14

Рисунок 2.15

Рисунок 2.16

Заключение

Проект ставил целью разработать систему для учета продажв организации ООО «Бизнеском».

Созданная система автоматизирует следующие функции:

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

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

Проектная часть посвящена информационной архитектуры разрабатываемого проекта, построена информационная модель задачи, проведено моделирование «сущность—связь» (ER—модель), описана структура полей таблиц базы данных, проанализированы все информационные потоки входной, оперативной, нормативно—справочной и результатной информации.

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

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

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

  1. ГОСТ Р ИСО/МЭК 12207/99. Государственный стандарт РФ. Информационная технология. Процессы жизненного цикла информационных систем. Издание официальное. - М., 1999
  2. Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения. ГОСТ 19.701-90 (ИСО 5807-85) / Государственный комитет СССР по управлению качеством продукции и стандартам, 01.01.1992.
  3. Автоматизированные информационные системы, базы и банки данных. Вводный курс: Учебное пособие, М.: Гелиос АРВ, 2007. - 368 с., ил
  4. Астелс, Дэвид; Миллер Гранвилл; Новак, Мирослав, Практическое руководство по экстремальному программированию, Пер. с англ. - М.: Издательский дом "Вильямс", 2008. - 320 с.: ил. - Парал. тит. англ
  5. Баженова И. Ю. , Основы проектирования приложений баз данных, Издательства: Бином. Лаборатория знаний, Интернет-университет информационных технологий, 2008 г., , 328 стр.
  6. Вендров А.М., CASE-технологии. Современные методы и средства проектирования информационных систем - М.: Финансы и статистика, 2007 г, 456 стр.
  7. Вигерс Карл, Разработка требований к программному обеспечению, Пер, с англ. - М.:Издательско-торговый дом "Русская Редакция", 2008. -576с.: ил
  8. Гашков С. Б., Э. А. Применко, М. А. Черепнев Криптографические методы защиты информации, М, Издательство: Академия, 2010 г., 304 стр.
  9. Гвоздева Т. В., Б. А. Баллод, Проектирование информационных систем, М, Издательство: Феникс, 2009 г., 512 стр.
  10. Голицына О. Л., И. И. Попов, Н. В. Максимов, Т. Л. Партыка, Информационные технологии, М, Издательство Инфра-М, 2009 г., 608 стр.
  11. Дэвид Флэнаган. JavaScript. Подробное руководство: Учебник – М.: Символ Плюс, 2008. 243 – 249 с.
  12. Емельянова Н. З., Партыка Т. Л., И. И. Попов, Проектирование информационных систем, М, Издательство: Форум, 2009 г., 432 стр.
  13. Емельянова Н. З., Т. Л. Партыка, И. И. Попов, М, Издательство Форум, 2007 г., , 416 стр.
  14. Илюшечкин В. М. , Основы использования и проектирования баз данных, М, Издательство Юрайт, 2010 г., 224 стр.
  15. Котляров В. П., Т. В. Коликова, Основы тестирования программного обеспечения, Издательства: Интернет-университет информационных технологий, Бином. Лаборатория знаний, 2009 г., 288 стр.
  16. Кузин А. В., С. В. Левонисова, Базы данных, М, Издательство: Академия, 2008 г., 320 стр.
  17. Кузнецов С. Д., Основы баз данных, М, Издательства: Бином. Лаборатория знаний, Интернет-университет информационных технологий, 2007 г., 488 стр.
  18. Молчанов А. Ю., Системное программное обеспечение, М, Издательство: Питер, 2010 г., 400 стр.
  19. Незнанов А. А., Программирование и алгоритмизация, М, Издательство: Академия, 2010 г., 304 стр.
  20. Пирогов В. Ю., Информационные системы и базы данных. М, Организация и проектирование, Издательство: БХВ-Петербург, 2009 г.528 стр.
  21. Предметно-ориентированные экономические информационные системы, М, Издательство: Финансы и статистика, 2007 г., 224 стр.
  22. Реляционные базы данных: практические приемы оптимальных решений. – СПб.: БХВ-Петербург, 2009 – 400с.:ил;
  23. Симионов Ю.Ф., Боромотов В.В. Информационный менеджмент. — Ростов н.Д: Феникс, 2008, 250с., ил.;
  24. Чипига А. Ф., Информационная безопасность автоматизированных систем, М, Издательство: Гелиос АРВ, 2010 г., 336 стр.

Приложение А - Листинг программы

//---------------------------------------------------------------------------

#ifndef ComputerTehnikaH

#define ComputerTehnikaH

//---------------------------------------------------------------------------

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

#include <DBGrids.hpp>

#include <Grids.hpp>

#include <ADODB.hpp>

#include <DB.hpp>

#include <ComCtrls.hpp>

#include <DBCtrls.hpp>

#include <Dialogs.hpp>

#include <Mask.hpp>

#include <ExtCtrls.hpp>

//---------------------------------------------------------------------------

class TFormComputerTehnika : public TForm

{

__published: // IDE-managed Components

TDBGrid *DBGridComputerTehnika;

TDataSource *DataSourceComputerTehnika;

TADODataSet *ADODataSetComputerTehnika;

TAutoIncField *ADODataSetComputerTehnikaCod;

TWideStringField *ADODataSetComputerTehnikaName;

TBCDField *ADODataSetComputerTehnikaCena;

TDateTimeField *ADODataSetComputerTehnikaDataPostup;

TMemoField *ADODataSetComputerTehnikaOpisanie;

TBlobField *ADODataSetComputerTehnikaPicture;

TIntegerField *ADODataSetComputerTehnikaCodVidTehniki;

TADODataSet *ADODataSetVidTehniki;

TDataSource *DataSourceVidTehniki;

TAutoIncField *ADODataSetVidTehnikiCod;

TWideStringField *ADODataSetVidTehnikiName;

TStringField *ADODataSetComputerTehnikaNameVidTehniki;

TBooleanField *ADODataSetComputerTehnikaProdan;

TGroupBox *GroupBox1;

TLabel *Label1;

TDBEdit *DBEditName;

TLabel *Label2;

TDBEdit *DBEditCena;

TLabel *Label3;

TDateTimePicker *DateTimePickerDataPostup;

TLabel *Label4;

TDBMemo *DBMemoOpisanie;

TLabel *Label5;

TDBLookupComboBox *DBLookupComboBoxVidTehniki;

TButton *ButtonFoto;

TDBImage *DBImageFoto;

TOpenDialog *OpenDialogFoto;

TPanel *Panel1;

TButton *ButtonAdd;

TButton *ButtonDelete;

TButton *ButtonChange;

TButton *ButtonExit;

TPanel *Panel2;

TButton *ButtonPost;

TButton *ButtonOtmen;

void __fastcall ButtonFotoClick(TObject *Sender);

void __fastcall FormShow(TObject *Sender);

void __fastcall ButtonAddClick(TObject *Sender);

void __fastcall ButtonDeleteClick(TObject *Sender);

void __fastcall ButtonChangeClick(TObject *Sender);

void __fastcall ButtonExitClick(TObject *Sender);

void __fastcall ButtonPostClick(TObject *Sender);

void __fastcall ButtonOtmenClick(TObject *Sender);

private: // User declarations

public: // User declarations

__fastcall TFormComputerTehnika(TComponent* Owner);

};

//---------------------------------------------------------------------------

extern PACKAGE TFormComputerTehnika *FormComputerTehnika;

//---------------------------------------------------------------------------

#endif

//---------------------------------------------------------------------------

#ifndef DiagrammaOkladH

#define DiagrammaOkladH

//---------------------------------------------------------------------------

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

#include <ADODB.hpp>

#include <Chart.hpp>

#include <DB.hpp>

#include <DbChart.hpp>

#include <DBGrids.hpp>

#include <ExtCtrls.hpp>

#include <Grids.hpp>

#include <TeEngine.hpp>

#include <TeeProcs.hpp>

#include <Series.hpp>

#include <Menus.hpp>

//---------------------------------------------------------------------------

class TFormDiagrammaOklad : public TForm

{

__published: // IDE-managed Components

TDBGrid *DBGridManager;

TADODataSet *ADODataSetManager;

TDataSource *DataSourceManager;

TAutoIncField *ADODataSetManagerCod;

TWideStringField *ADODataSetManagerFIO;

TBCDField *ADODataSetManagerOklad;

TDateTimeField *ADODataSetManagerDataRozhd;

TWideStringField *ADODataSetManagerPasport;

TWideStringField *ADODataSetManagerPassword;

TIntegerField *ADODataSetManagerCodDolgnost;

TDBChart *DBChartManager;

TPieSeries *Series1;

TStringField *ADODataSetManagerFIO2;

TButton *ButtonExit;

TPopupMenu *PopupMenu1;

TMenuItem *N1;

void __fastcall FormShow(TObject *Sender);

void __fastcall ADODataSetManagerCalcFields(TDataSet *DataSet);

void __fastcall ButtonExitClick(TObject *Sender);

void __fastcall N1Click(TObject *Sender);

private: // User declarations

public: // User declarations

__fastcall TFormDiagrammaOklad(TComponent* Owner);

};

//---------------------------------------------------------------------------

extern PACKAGE TFormDiagrammaOklad *FormDiagrammaOklad;

//---------------------------------------------------------------------------

#endif

//---------------------------------------------------------------------------

#ifndef DMH

#define DMH

//---------------------------------------------------------------------------

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

#include <ADODB.hpp>

#include <DB.hpp>

//---------------------------------------------------------------------------

class TDM1 : public TDataModule

{

__published: // IDE-managed Components

TADOConnection *ADOConnection1;

private: // User declarations

public: // User declarations

__fastcall TDM1(TComponent* Owner);

};

//---------------------------------------------------------------------------

extern PACKAGE TDM1 *DM1;

//---------------------------------------------------------------------------

#endif

//---------------------------------------------------------------------------

#ifndef DolgnostH

#define DolgnostH

//---------------------------------------------------------------------------

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

#include <ADODB.hpp>

#include <DB.hpp>

#include <DBGrids.hpp>

#include <Grids.hpp>

#include <DBCtrls.hpp>

#include <ExtCtrls.hpp>

#include <Mask.hpp>

//---------------------------------------------------------------------------

class TFormDolgnost : public TForm

{

__published: // IDE-managed Components

TDBGrid *DBGridDolgnost;

TADODataSet *ADODataSetDolgnost;

TDataSource *DataSourceDolgnost;

TAutoIncField *ADODataSetDolgnostCod;

TWideStringField *ADODataSetDolgnostName;

TDataSource *DataSourceManager;

TADODataSet *ADODataSetManager;

TGroupBox *GroupBox1;

TDBEdit *DBEditName;

TPanel *Panel1;

TButton *ButtonAdd;

TButton *ButtonDelete;

TButton *ButtonChange;

TButton *ButtonExit;

TPanel *Panel2;

TButton *ButtonPost;

TButton *ButtonOtmen;

TAutoIncField *ADODataSetManagerCod;

TWideStringField *ADODataSetManagerFIO;

TBCDField *ADODataSetManagerOklad;

TDateTimeField *ADODataSetManagerDataRozhd;

TWideStringField *ADODataSetManagerPasport;

TWideStringField *ADODataSetManagerPassword;

TIntegerField *ADODataSetManagerCodDolgnost;

void __fastcall ButtonAddClick(TObject *Sender);

void __fastcall ButtonDeleteClick(TObject *Sender);

void __fastcall ButtonChangeClick(TObject *Sender);

void __fastcall ButtonExitClick(TObject *Sender);

void __fastcall ButtonPostClick(TObject *Sender);

void __fastcall ButtonOtmenClick(TObject *Sender);

void __fastcall FormShow(TObject *Sender);

void __fastcall DBEditNameKeyPress(TObject *Sender, char &Key);

private: // User declarations

public: // User declarations

__fastcall TFormDolgnost(TComponent* Owner);

};

//---------------------------------------------------------------------------

extern PACKAGE TFormDolgnost *FormDolgnost;

//---------------------------------------------------------------------------

#endif

//---------------------------------------------------------------------------

#ifndef MainAISH

#define MainAISH

//---------------------------------------------------------------------------

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

#include <Menus.hpp>

#include <ExtCtrls.hpp>

#include <jpeg.hpp>

//---------------------------------------------------------------------------

class TFormMainAIS : public TForm

{

__published: // IDE-managed Components

TMainMenu *MainMenu1;

TMenuItem *N1;

TMenuItem *N2;

TMenuItem *N3;

TMenuItem *N4;

TMenuItem *N5;

TMenuItem *N6;

TMenuItem *N7;

TMenuItem *N8;

TPopupMenu *PopupMenu1;

TMenuItem *N9;

TMenuItem *N10;

TMenuItem *N12;

TMenuItem *N13;

TMenuItem *N14;

TMenuItem *N11;

TMenuItem *N15;

TImage *Image1;

void __fastcall N8Click(TObject *Sender);

void __fastcall N4Click(TObject *Sender);

void __fastcall N5Click(TObject *Sender);

void __fastcall N3Click(TObject *Sender);

void __fastcall N6Click(TObject *Sender);

void __fastcall N9Click(TObject *Sender);

void __fastcall N10Click(TObject *Sender);

void __fastcall N12Click(TObject *Sender);

void __fastcall N13Click(TObject *Sender);

void __fastcall N14Click(TObject *Sender);

void __fastcall N11Click(TObject *Sender);

void __fastcall N15Click(TObject *Sender);

private: // User declarations

public: // User declarations

__fastcall TFormMainAIS(TComponent* Owner);

};

//---------------------------------------------------------------------------

extern PACKAGE TFormMainAIS *FormMainAIS;

//---------------------------------------------------------------------------

#endif

//---------------------------------------------------------------------------

#ifndef MainComputerH

#define MainComputerH

//---------------------------------------------------------------------------

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

#include <ADODB.hpp>

#include <DB.hpp>

#include <Buttons.hpp>

//---------------------------------------------------------------------------

class TFormVxod : public TForm

{

__published: // IDE-managed Components

TLabel *Label1;

TComboBox *ComboBoxManager;

TLabel *Label2;

TEdit *EditPassword;

TBitBtn *BitBtnExit;

TButton *ButtonVxod;

TADODataSet *ADODataSetManager;

TAutoIncField *ADODataSetManagerCod;

TWideStringField *ADODataSetManagerFIO;

TBCDField *ADODataSetManagerOklad;

TDateTimeField *ADODataSetManagerDataRozhd;

TWideStringField *ADODataSetManagerPasport;

TWideStringField *ADODataSetManagerPassword;

TIntegerField *ADODataSetManagerCodDolgnost;

void __fastcall FormShow(TObject *Sender);

void __fastcall BitBtnExitClick(TObject *Sender);

void __fastcall ButtonVxodClick(TObject *Sender);

void __fastcall EditPasswordKeyPress(TObject *Sender, char &Key);

private: // User declarations

public: // User declarations

__fastcall TFormVxod(TComponent* Owner);

};

//---------------------------------------------------------------------------

extern PACKAGE TFormVxod *FormVxod;

extern int TekManager;

//---------------------------------------------------------------------------

#endif

//---------------------------------------------------------------------------

#ifndef ManagerH

#define ManagerH

//---------------------------------------------------------------------------

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

#include <ADODB.hpp>

#include <ComCtrls.hpp>

#include <DB.hpp>

#include <DBCtrls.hpp>

#include <DBGrids.hpp>

#include <ExtCtrls.hpp>

#include <Grids.hpp>

#include <Mask.hpp>

#include <Menus.hpp>

//---------------------------------------------------------------------------

class TFormManager : public TForm

{

__published: // IDE-managed Components

TDBGrid *DBGridFormManager;

TDataSource *DataSourceManager;

TADODataSet *ADODataSetManager;

TAutoIncField *ADODataSetManagerCod;

TWideStringField *ADODataSetManagerFIO;

TBCDField *ADODataSetManagerOklad;

TDateTimeField *ADODataSetManagerDataRozhd;

TWideStringField *ADODataSetManagerPasport;

TWideStringField *ADODataSetManagerPassword;

TIntegerField *ADODataSetManagerCodDolgnost;

TADODataSet *ADODataSetDolgnost;

TAutoIncField *ADODataSetDolgnostCod;

TWideStringField *ADODataSetDolgnostName;

TStringField *ADODataSetManagerNameDolgnost;

TGroupBox *GroupBox1;

TLabel *Label1;

TDBEdit *DBEditFIO;

TLabel *Label2;

TDBLookupComboBox *DBLookupComboBoxDolgnost;

TDataSource *DataSourceDolgnost;

TLabel *Label3;

TDBEdit *DBEditOklad;

TLabel *Label4;

TDBEdit *DBEditPasport;

TLabel *Label5;

TDBEdit *DBEditPassword;

TLabel *Label6;

TDateTimePicker *DateTimePicker1;

TPanel *Panel1;

TButton *ButtonAdd;

TButton *ButtonDelete;

TButton *ButtonChange;

TButton *ButtonExit;

TPanel *Panel2;

TButton *ButtonPost;

TButton *ButtonOtmen;

TPopupMenu *PopupMenu1;

TMenuItem *N1;

void __fastcall FormShow(TObject *Sender);

void __fastcall ButtonAddClick(TObject *Sender);

void __fastcall ButtonDeleteClick(TObject *Sender);

void __fastcall ButtonChangeClick(TObject *Sender);

void __fastcall ButtonExitClick(TObject *Sender);

void __fastcall ButtonPostClick(TObject *Sender);

void __fastcall ButtonOtmenClick(TObject *Sender);

void __fastcall N1Click(TObject *Sender);

private: // User declarations

public: // User declarations

__fastcall TFormManager(TComponent* Owner);

};

//---------------------------------------------------------------------------

extern PACKAGE TFormManager *FormManager;

//---------------------------------------------------------------------------

#endif

//---------------------------------------------------------------------------

#ifndef OtchetManagerH

#define OtchetManagerH

//---------------------------------------------------------------------------

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

#include <ADODB.hpp>

#include <DB.hpp>

#include <DBGrids.hpp>

#include <Grids.hpp>

#include <Menus.hpp>

//---------------------------------------------------------------------------

class TFormOtchetManager : public TForm

{

__published: // IDE-managed Components

TDBGrid *DBGridManager;

TADODataSet *ADODataSetManager;

TDataSource *DataSourceManager;

TADODataSet *ADODataSetDolgnost;

TDataSource *DataSourceDolgnost;

TADODataSet *ADODataSetComputerTehnika;

TDataSource *DataSourceComputerTehnika;

TADODataSet *ADODataSetHistory;

TDataSource *DataSourceHistory;

TPopupMenu *PopupMenu1;

TMenuItem *N1;

TButton *ButtonExit;

void __fastcall FormShow(TObject *Sender);

void __fastcall N1Click(TObject *Sender);

void __fastcall ButtonExitClick(TObject *Sender);

private: // User declarations

public: // User declarations

__fastcall TFormOtchetManager(TComponent* Owner);

};

//---------------------------------------------------------------------------

extern PACKAGE TFormOtchetManager *FormOtchetManager;

//---------------------------------------------------------------------------

#endif

//---------------------------------------------------------------------------

#ifndef ProdanoH

#define ProdanoH

//---------------------------------------------------------------------------

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

#include <ADODB.hpp>

#include <DB.hpp>

#include <DBGrids.hpp>

#include <Grids.hpp>

#include <DBCtrls.hpp>

#include <Menus.hpp>

//---------------------------------------------------------------------------

class TFormProdano : public TForm

{

__published: // IDE-managed Components

TDBGrid *DBGridComputerTehnika;

TADODataSet *ADODataSetComputerTehnika;

TDataSource *DataSourceComputerTehnika;

TAutoIncField *ADODataSetComputerTehnikaCod;

TWideStringField *ADODataSetComputerTehnikaName;

TBCDField *ADODataSetComputerTehnikaCena;

TBooleanField *ADODataSetComputerTehnikaProdan;

TDateTimeField *ADODataSetComputerTehnikaDataPostup;

TMemoField *ADODataSetComputerTehnikaOpisanie;

TBlobField *ADODataSetComputerTehnikaPicture;

TIntegerField *ADODataSetComputerTehnikaCodVidTehniki;

TDataSource *DataSourceVidTehniki;

TADODataSet *ADODataSetVidTehniki;

TStringField *ADODataSetComputerTehnikaNameVidTehniki;

TDBImage *DBImageFoto;

TDBMemo *DBMemoOpisanie;

TButton *ButtonExit;

TButton *ButtonPrint;

TPopupMenu *PopupMenu1;

TMenuItem *N1;

TMenuItem *N2;

TDataSource *DataSourceHistory;

TADODataSet *ADODataSetHistory;

TAutoIncField *ADODataSetHistoryCod;

TIntegerField *ADODataSetHistoryCodComputerTehnika;

TIntegerField *ADODataSetHistoryCodManager;

TDateTimeField *ADODataSetHistoryDataProdazhi;

TBCDField *ADODataSetHistoryCena;

TDateField *ADODataSetComputerTehnikaDataProdazhi;

void __fastcall ButtonExitClick(TObject *Sender);

void __fastcall DBGridComputerTehnikaCellClick(TColumn *Column);

void __fastcall FormShow(TObject *Sender);

void __fastcall ButtonPrintClick(TObject *Sender);

void __fastcall N1Click(TObject *Sender);

void __fastcall N2Click(TObject *Sender);

private: // User declarations

public: // User declarations

__fastcall TFormProdano(TComponent* Owner);

};

//---------------------------------------------------------------------------

extern PACKAGE TFormProdano *FormProdano;

//---------------------------------------------------------------------------

#endif

//---------------------------------------------------------------------------

#ifndef ProdazhaH

#define ProdazhaH

//---------------------------------------------------------------------------

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

#include <ComCtrls.hpp>

#include <ADODB.hpp>

#include <DB.hpp>

#include <DBCtrls.hpp>

#include <DBGrids.hpp>

#include <Grids.hpp>

#include <Menus.hpp>

//---------------------------------------------------------------------------

class TFormProdazha : public TForm

{

__published: // IDE-managed Components

TLabel *Label1;

TDateTimePicker *DateTimePickerDataProdazhi;

TGroupBox *GroupBox1;

TDBGrid *DBGridComputerTehnika;

TADODataSet *ADODataSetComputerTehnika;

TDataSource *DataSourceComputerTehnika;

TAutoIncField *ADODataSetComputerTehnikaCod;

TWideStringField *ADODataSetComputerTehnikaName;

TBCDField *ADODataSetComputerTehnikaCena;

TBooleanField *ADODataSetComputerTehnikaProdan;

TDateTimeField *ADODataSetComputerTehnikaDataPostup;

TMemoField *ADODataSetComputerTehnikaOpisanie;

TBlobField *ADODataSetComputerTehnikaPicture;

TIntegerField *ADODataSetComputerTehnikaCodVidTehniki;

TButton *ButtonProdat;

TGroupBox *GroupBoxOpisanie;

TDBMemo *DBMemoOpisanie;

TDBImage *DBImageFoto;

TButton *ButtonExit;

TADODataSet *ADODataSetHistory;

TDataSource *DataSourceHistory;

TAutoIncField *ADODataSetHistoryCod;

TIntegerField *ADODataSetHistoryCodComputerTehnika;

TIntegerField *ADODataSetHistoryCodManager;

TDateTimeField *ADODataSetHistoryDataProdazhi;

TBCDField *ADODataSetHistoryCena;

TPopupMenu *PopupMenu1;

TMenuItem *N1;

TMenuItem *N2;

void __fastcall FormShow(TObject *Sender);

void __fastcall DBGridComputerTehnikaCellClick(TColumn *Column);

void __fastcall ButtonProdatClick(TObject *Sender);

void __fastcall ButtonExitClick(TObject *Sender);

void __fastcall N1Click(TObject *Sender);

void __fastcall N2Click(TObject *Sender);

private: // User declarations

public: // User declarations

__fastcall TFormProdazha(TComponent* Owner);

};

//---------------------------------------------------------------------------

extern PACKAGE TFormProdazha *FormProdazha;

//---------------------------------------------------------------------------

#endif

//---------------------------------------------------------------------------

#ifndef SpravkaH

#define SpravkaH

//---------------------------------------------------------------------------

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

//---------------------------------------------------------------------------

class TFormSpravka : public TForm

{

__published: // IDE-managed Components

TMemo *MemoSpravka;

TMemo *Memo1;

TButton *ButtonExit;

void __fastcall ButtonExitClick(TObject *Sender);

private: // User declarations

public: // User declarations

__fastcall TFormSpravka(TComponent* Owner);

};

//---------------------------------------------------------------------------

extern PACKAGE TFormSpravka *FormSpravka;

//---------------------------------------------------------------------------

#endif

//---------------------------------------------------------------------------

#ifndef UnitReportH

#define UnitReportH

//---------------------------------------------------------------------------

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

#include <DB.hpp>

#include <DBTables.hpp>

#include <ExtCtrls.hpp>

#include <QRCtrls.hpp>

#include <QuickRpt.hpp>

#include <ADODB.hpp>

//---------------------------------------------------------------------------

class TFormReport : public TForm

{

__published: // IDE-managed Components

TQuickRep *QuickRep1;

TQRBand *QRBand1;

TQRLabel *QRLabel1;

TQRBand *QRBand2;

TQRBand *QRBand3;

TQRLabel *QRLabel2;

TQRLabel *QRLabel3;

TQRLabel *QRLabel4;

TDataSource *DataSourceComputerTehnika;

TQRLabel *QRLabel5;

TQRBand *QRBand4;

TQRDBText *QRDBText1;

TQRDBText *QRDBText2;

TQRDBText *QRDBText3;

TQRDBText *QRDBText4;

TADODataSet *ADODataSetComputerTehnika;

TAutoIncField *ADODataSetComputerTehnikaCod;

TWideStringField *ADODataSetComputerTehnikaName;

TBCDField *ADODataSetComputerTehnikaCena;

TBooleanField *ADODataSetComputerTehnikaProdan;

TDateTimeField *ADODataSetComputerTehnikaDataPostup;

TMemoField *ADODataSetComputerTehnikaOpisanie;

TBlobField *ADODataSetComputerTehnikaPicture;

TIntegerField *ADODataSetComputerTehnikaCodVidTehniki;

TADODataSet *ADODataSetVidTehniki;

TDataSource *DataSourceVidTehniki;

TAutoIncField *ADODataSetVidTehnikiCod;

TWideStringField *ADODataSetVidTehnikiName;

TStringField *ADODataSetComputerTehnikaNameVidTehniki;

void __fastcall QuickRep1AfterPreview(TObject *Sender);

void __fastcall FormActivate(TObject *Sender);

void __fastcall FormShow(TObject *Sender);

private: // User declarations

public: // User declarations

__fastcall TFormReport(TComponent* Owner);

};

//---------------------------------------------------------------------------

extern PACKAGE TFormReport *FormReport;

//---------------------------------------------------------------------------

#endif

//---------------------------------------------------------------------------

#ifndef UnitReport2H

#define UnitReport2H

//---------------------------------------------------------------------------

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

#include <DB.hpp>

#include <DBTables.hpp>

#include <ExtCtrls.hpp>

#include <QRCtrls.hpp>

#include <QuickRpt.hpp>

#include <ADODB.hpp>

//---------------------------------------------------------------------------

class TFormReport2 : public TForm

{

__published: // IDE-managed Components

TQuickRep *QuickRep1;

TQRBand *QRBand1;

TQRLabel *QRLabel1;

TQRBand *QRBand2;

TQRBand *QRBand3;

TQRLabel *QRLabel2;

TQRLabel *QRLabel3;

TQRLabel *QRLabel4;

TDataSource *DataSourceComputerTehnika;

TQRLabel *QRLabel5;

TQRBand *QRBand4;

TQRDBText *QRDBText1;

TQRDBText *QRDBText2;

TQRDBText *QRDBText3;

TQRDBText *QRDBText4;

TADODataSet *ADODataSetComputerTehnika;

TAutoIncField *ADODataSetComputerTehnikaCod;

TWideStringField *ADODataSetComputerTehnikaName;

TBCDField *ADODataSetComputerTehnikaCena;

TBooleanField *ADODataSetComputerTehnikaProdan;

TDateTimeField *ADODataSetComputerTehnikaDataPostup;

TMemoField *ADODataSetComputerTehnikaOpisanie;

TBlobField *ADODataSetComputerTehnikaPicture;

TIntegerField *ADODataSetComputerTehnikaCodVidTehniki;

TADODataSet *ADODataSetVidTehniki;

TDataSource *DataSourceVidTehniki;

TAutoIncField *ADODataSetVidTehnikiCod;

TWideStringField *ADODataSetVidTehnikiName;

TStringField *ADODataSetComputerTehnikaNameVidTehniki;

TDataSource *DataSourceHistory;

TADODataSet *ADODataSetHistory;

TAutoIncField *ADODataSetHistoryCod;

TIntegerField *ADODataSetHistoryCodComputerTehnika;

TIntegerField *ADODataSetHistoryCodManager;

TDateTimeField *ADODataSetHistoryDataProdazhi;

TBCDField *ADODataSetHistoryCena;

TDateField *ADODataSetComputerTehnikaDataProdazhi;

void __fastcall QuickRep1AfterPreview(TObject *Sender);

void __fastcall FormActivate(TObject *Sender);

void __fastcall FormShow(TObject *Sender);

private: // User declarations

public: // User declarations

__fastcall TFormReport2(TComponent* Owner);

};

//---------------------------------------------------------------------------

extern PACKAGE TFormReport2 *FormReport2;

//---------------------------------------------------------------------------

#endif

//---------------------------------------------------------------------------

#ifndef VidTehnikiH

#define VidTehnikiH

//---------------------------------------------------------------------------

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

#include <ADODB.hpp>

#include <DB.hpp>

#include <DBGrids.hpp>

#include <Grids.hpp>

#include <DBCtrls.hpp>

#include <ExtCtrls.hpp>

#include <Mask.hpp>

//---------------------------------------------------------------------------

class TFormVidTehniki : public TForm

{

__published: // IDE-managed Components

TDBGrid *DBGridVidTehniki;

TADODataSet *ADODataSetVidTehniki;

TDataSource *DataSourceVidTehniki;

TDataSource *DataSourceManager;

TADODataSet *ADODataSetComputerTehnika;

TGroupBox *GroupBox1;

TDBEdit *DBEditName;

TPanel *Panel1;

TButton *ButtonAdd;

TButton *ButtonDelete;

TButton *ButtonChange;

TButton *ButtonExit;

TPanel *Panel2;

TButton *ButtonPost;

TButton *ButtonOtmen;

TAutoIncField *ADODataSetVidTehnikiCod;

TWideStringField *ADODataSetVidTehnikiName;

TAutoIncField *ADODataSetComputerTehnikaCod;

TWideStringField *ADODataSetComputerTehnikaName;

TBCDField *ADODataSetComputerTehnikaCena;

TDateTimeField *ADODataSetComputerTehnikaDataPostup;

TMemoField *ADODataSetComputerTehnikaOpisanie;

TBlobField *ADODataSetComputerTehnikaPicture;

TIntegerField *ADODataSetComputerTehnikaCodVidTehniki;

TBooleanField *ADODataSetComputerTehnikaProdan;

void __fastcall ButtonAddClick(TObject *Sender);

void __fastcall ButtonDeleteClick(TObject *Sender);

void __fastcall ButtonChangeClick(TObject *Sender);

void __fastcall ButtonExitClick(TObject *Sender);

void __fastcall ButtonPostClick(TObject *Sender);

void __fastcall ButtonOtmenClick(TObject *Sender);

void __fastcall FormShow(TObject *Sender);

void __fastcall DBEditNameKeyPress(TObject *Sender, char &Key);

private: // User declarations

public: // User declarations

__fastcall TFormVidTehniki(TComponent* Owner);

};

//---------------------------------------------------------------------------

extern PACKAGE TFormVidTehniki *FormVidTehniki;

//---------------------------------------------------------------------------

#endif

//---------------------------------------------------------------------------

#ifndef VnalichiiH

#define VnalichiiH

//---------------------------------------------------------------------------

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

#include <ADODB.hpp>

#include <DB.hpp>

#include <DBGrids.hpp>

#include <Grids.hpp>

#include <DBCtrls.hpp>

#include <Menus.hpp>

//---------------------------------------------------------------------------

class TFormVnalichii : public TForm

{

__published: // IDE-managed Components

TDBGrid *DBGridComputerTehnika;

TADODataSet *ADODataSetComputerTehnika;

TDataSource *DataSourceComputerTehnika;

TAutoIncField *ADODataSetComputerTehnikaCod;

TWideStringField *ADODataSetComputerTehnikaName;

TBCDField *ADODataSetComputerTehnikaCena;

TBooleanField *ADODataSetComputerTehnikaProdan;

TDateTimeField *ADODataSetComputerTehnikaDataPostup;

TMemoField *ADODataSetComputerTehnikaOpisanie;

TBlobField *ADODataSetComputerTehnikaPicture;

TIntegerField *ADODataSetComputerTehnikaCodVidTehniki;

TDataSource *DataSourceVidTehniki;

TADODataSet *ADODataSetVidTehniki;

TStringField *ADODataSetComputerTehnikaNameVidTehniki;

TDBImage *DBImageFoto;

TDBMemo *DBMemoOpisanie;

TButton *ButtonExit;

TButton *ButtonPrint;

TPopupMenu *PopupMenu1;

TMenuItem *N1;

TMenuItem *N2;

void __fastcall ButtonExitClick(TObject *Sender);

void __fastcall DBGridComputerTehnikaCellClick(TColumn *Column);

void __fastcall FormShow(TObject *Sender);

void __fastcall ButtonPrintClick(TObject *Sender);

void __fastcall N1Click(TObject *Sender);

void __fastcall N2Click(TObject *Sender);

private: // User declarations

public: // User declarations

__fastcall TFormVnalichii(TComponent* Owner);

};

//---------------------------------------------------------------------------

extern PACKAGE TFormVnalichii *FormVnalichii;

//---------------------------------------------------------------------------

#endif

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "ComputerTehnika.h"

#include "DM.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TFormComputerTehnika *FormComputerTehnika;

//---------------------------------------------------------------------------

__fastcall TFormComputerTehnika::TFormComputerTehnika(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TFormComputerTehnika::ButtonFotoClick(TObject *Sender)

{ char *s;

OpenDialogFoto->InitialDir= ExtractFileDir(Application->ExeName);

if(OpenDialogFoto->Execute()==true) //вызов диалога выбора файла

{DBImageFoto->Visible=true;

s= OpenDialogFoto->FileName.c_str(); //получить наименование выбранного файла с полным путем

DBImageFoto->Picture->LoadFromFile(s);

}

else

{if(ADODataSetComputerTehnikaPicture->Value=="")

DBImageFoto->Visible=false;

}

}

//---------------------------------------------------------------------------

void __fastcall TFormComputerTehnika::FormShow(TObject *Sender)

{

ADODataSetComputerTehnika->Close();

ADODataSetComputerTehnika->Open();

ADODataSetVidTehniki->Close();

ADODataSetVidTehniki->Open();

}

//---------------------------------------------------------------------------

//Выполняется при нажатии кнопки Добавить

void __fastcall TFormComputerTehnika::ButtonAddClick(TObject *Sender)

{

if(ADODataSetComputerTehnika->State==dsBrowse)

{ADODataSetComputerTehnika->Insert();

Panel1->Visible=false;

Panel2->Visible=true;

GroupBox1->Visible=true;

DateTimePickerDataPostup->Date= Date();

DBEditName->SetFocus();

}

}

//---------------------------------------------------------------------------

//Выполняется при нажатии кнопки Удалить

void __fastcall TFormComputerTehnika::ButtonDeleteClick(TObject *Sender)

{

if(ADODataSetComputerTehnika->RecordCount==0) //есть ли данные в БД

{ButtonChange->Enabled=false;//сделать кнопку Изменить недоступной

ButtonDelete->Enabled=false;//сделать кнопку Удалить недоступной

ShowMessage("Данные отсутствуют в БД!"); //вывести сообщение в виде окошка

return;//выход из формы

}

if(ADODataSetComputerTehnika->State==dsBrowse)

if(Application->MessageBoxA("Подтвердите удаление записи

!","Внимание",MB_ICONWARNING+MB_YESNO)==IDYES)

ADODataSetComputerTehnika->Delete();//удалить запись из таблицы БД

}

//---------------------------------------------------------------------------

//Выполняется при нажатии кнопки Изменить

void __fastcall TFormComputerTehnika::ButtonChangeClick(TObject *Sender)

{

if(ADODataSetComputerTehnika->RecordCount==0) //есть ли данные в БД - кол-во записей в таблице БД

{ShowMessage("Данные отсутствуют в БД!");//вывести сообщение в виде окошка

return;//выход из формы

}

if(ADODataSetComputerTehnika->State==dsBrowse)

ADODataSetComputerTehnika->Edit();//перевести таблицу БД в режим редактирования

Panel1->Visible=false;//сделать панель невидимой

Panel2->Visible=true;//сделать панель видимой

GroupBox1->Visible=true;//сделать панель видимой

DateTimePickerDataPostup->Date= ADODataSetComputerTehnikaDataPostup->Value;

DBEditName->SetFocus(); //установить фокус в поле для ввода

}

//---------------------------------------------------------------------------

//Выполняется при нажатии кнопки Выход

void __fastcall TFormComputerTehnika::ButtonExitClick(TObject *Sender)

{

Close();

}

//---------------------------------------------------------------------------

//------Выполняется при нажатии кнопки Запомнить

void __fastcall TFormComputerTehnika::ButtonPostClick(TObject *Sender)

{

//------проверка всех введенных данных

if(DBEditName->Text=="" )//проверка введенных данных

{ShowMessage("Введите название !");//вывод диалогового окна с сообщением

return;//выход из процедуры

}

if(DBEditCena->Text=="" )//проверка введенных данных

{ShowMessage("Введите цену !");//вывод диалогового окна с сообщением

return;//выход из процедуры

}

if(DBMemoOpisanie->Text=="" )//проверка введенных данных

{ShowMessage("Введите описание !");//вывод диалогового окна с сообщением

return;//выход из процедуры

}

if(ADODataSetComputerTehnikaCodVidTehniki->Value==0 )//проверка введенных данных

{ShowMessage("Введите вид товара!");//вывод диалогового окна с сообщением

return;//выход из процедуры

}

//-----------

ADODataSetComputerTehnikaDataPostup->Value= DateTimePickerDataPostup->Date;

ADODataSetComputerTehnika->Post();//запомнить все изменения в таблице БД

Panel1->Visible=true;//сделать панель видимой

Panel2->Visible=false;//сделать панель невидимой

GroupBox1->Visible=false;//сделать панель невидимой

ButtonChange->Enabled=true;//сделать кнопку Изменить доступной

ButtonDelete->Enabled=true;//сделать кнопку Удалить доступной

}

//---------------------------------------------------------------------------

//Выполняется при нажатии кнопки Отменить

void __fastcall TFormComputerTehnika::ButtonOtmenClick(TObject *Sender)

{

ADODataSetComputerTehnika->Cancel();//отменить все изменения - данные в таблице БД не сохраняются

Panel1->Visible=true;//сделать панель видимой

Panel2->Visible=false;//сделать панель невидимой

GroupBox1->Visible=false;//сделать панель невидимой

}

//---------------------------------------------------------------------------

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "DiagrammaOklad.h"

#include "DM.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TFormDiagrammaOklad *FormDiagrammaOklad;

//---------------------------------------------------------------------------

__fastcall TFormDiagrammaOklad::TFormDiagrammaOklad(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TFormDiagrammaOklad::FormShow(TObject *Sender)

{

ADODataSetManager->Close();

ADODataSetManager->Open();

}

//---------------------------------------------------------------------------

void __fastcall TFormDiagrammaOklad::ADODataSetManagerCalcFields(

TDataSet *DataSet)

{

ADODataSetManagerFIO2->Value= ADODataSetManagerFIO->Value;

}

//---------------------------------------------------------------------------

void __fastcall TFormDiagrammaOklad::ButtonExitClick(TObject *Sender)

{

Close();

}

//---------------------------------------------------------------------------

void __fastcall TFormDiagrammaOklad::N1Click(TObject *Sender)

{

ButtonExitClick(Sender);

}

//---------------------------------------------------------------------------

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "DM.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TDM1 *DM1;

//---------------------------------------------------------------------------

__fastcall TDM1::TDM1(TComponent* Owner)

: TDataModule(Owner)

{

}

//---------------------------------------------------------------------------

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "Dolgnost.h"

#include "DM.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TFormDolgnost *FormDolgnost;

//---------------------------------------------------------------------------

__fastcall TFormDolgnost::TFormDolgnost(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

//Выполняется при нажатии кнопки Добавить

void __fastcall TFormDolgnost::ButtonAddClick(TObject *Sender)

{

if(ADODataSetDolgnost->State==dsBrowse)

{ADODataSetDolgnost->Insert();

Panel1->Visible=false;

Panel2->Visible=true;

GroupBox1->Visible=true;

DBEditName->SetFocus();

}

}

//---------------------------------------------------------------------------

//Выполняется при нажатии кнопки Удалить

void __fastcall TFormDolgnost::ButtonDeleteClick(TObject *Sender)

{

if(ADODataSetDolgnost->RecordCount==0) //есть ли данные в БД

{ButtonChange->Enabled=false;//сделать кнопку Изменить недоступной

ButtonDelete->Enabled=false;//сделать кнопку Удалить недоступной

ShowMessage("Данные отсутствуют в БД!"); //вывести сообщение в виде окошка

return;//выход из формы

}

if(ADODataSetDolgnost->State==dsBrowse)

if(Application->MessageBoxA("Подтвердите удаление записи !","Внимание",MB_ICONWARNING+MB_YESNO)==IDYES)

{ADODataSetManager->Close();

ADODataSetManager->CommandText= "select * from TablManager where CodDolgnost="+IntToStr(ADODataSetDolgnostCod->Value);

ADODataSetManager->Open();

if(ADODataSetManager->RecordCount>0)

{ShowMessage("Ошибка при удалении! В таблице 'TablManager' имеются связанные записи!"); //вывести сообщение в виде окошка

return;//выход из процедуры

}

ADODataSetDolgnost->Delete();//удалить запись из таблицы БД

}

}

//---------------------------------------------------------------------------

//Выполняется при нажатии кнопки Изменить

void __fastcall TFormDolgnost::ButtonChangeClick(TObject *Sender)

{

if(ADODataSetDolgnost->RecordCount==0) //есть ли данные в БД - кол-во записей в таблице БД

{ShowMessage("Данные отсутствуют в БД!");//вывести сообщение в виде окошка

return;//выход из формы

}

if(ADODataSetDolgnost->State==dsBrowse)

ADODataSetDolgnost->Edit();//перевести таблицу БД в режим редактирования

Panel1->Visible=false;//сделать панель невидимой

Panel2->Visible=true;//сделать панель видимой

GroupBox1->Visible=true;//сделать панель видимой

DBEditName->SetFocus(); //установить фокус в поле для ввода

}

//---------------------------------------------------------------------------

//Выполняется при нажатии кнопки Выход

void __fastcall TFormDolgnost::ButtonExitClick(TObject *Sender)

{

Close();

}

//---------------------------------------------------------------------------

//------Выполняется при нажатии кнопки Запомнить

void __fastcall TFormDolgnost::ButtonPostClick(TObject *Sender)

{

//------проверка всех введенных данных

if(DBEditName->Text=="" )//проверка введенных данных

{ShowMessage("Введите название!");//вывод диалогового окна с сообщением

return;//выход из процедуры

}

//-----------

ADODataSetDolgnost->Post();//запомнить все изменения в таблице БД

Panel1->Visible=true;//сделать панель видимой

Panel2->Visible=false;//сделать панель невидимой

GroupBox1->Visible=false;//сделать панель невидимой

ButtonChange->Enabled=true;//сделать кнопку Изменить доступной

ButtonDelete->Enabled=true;//сделать кнопку Удалить доступной

}

//---------------------------------------------------------------------------

//Выполняется при нажатии кнопки Отменить

void __fastcall TFormDolgnost::ButtonOtmenClick(TObject *Sender)

{

ADODataSetDolgnost->Cancel();//отменить все изменения - данные в таблице БД не сохраняются

Panel1->Visible=true;//сделать панель видимой

Panel2->Visible=false;//сделать панель невидимой

GroupBox1->Visible=false;//сделать панель невидимой

}

//---------------------------------------------------------------------------

void __fastcall TFormDolgnost::FormShow(TObject *Sender)

{

ADODataSetDolgnost->Close();

ADODataSetDolgnost->Open();

ADODataSetManager->Close();

ADODataSetManager->Open();

}

//---------------------------------------------------------------------------

void __fastcall TFormDolgnost::DBEditNameKeyPress(TObject *Sender,

char &Key)

{

if(Key==13)

ButtonPostClick(Sender);

}

//---------------------------------------------------------------------------

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "MainAIS.h"

#include "Dolgnost.h"

#include "VidTehniki.h"

#include "Manager.h"

#include "ComputerTehnika.h"

#include "Prodazha.h"

#include "Vnalichii.h"

#include "Prodano.h"

#include "OtchetManager.h"

#include "DiagrammaOklad.h"

#include "Spravka.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TFormMainAIS *FormMainAIS;

//---------------------------------------------------------------------------

__fastcall TFormMainAIS::TFormMainAIS(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TFormMainAIS::N8Click(TObject *Sender)

{

Close();

}

//---------------------------------------------------------------------------

void __fastcall TFormMainAIS::N4Click(TObject *Sender)

{

Application->CreateForm(__classid(TFormDolgnost), &FormDolgnost);

FormDolgnost->ShowModal();

}

//---------------------------------------------------------------------------

void __fastcall TFormMainAIS::N5Click(TObject *Sender)

{

Application->CreateForm(__classid(TFormVidTehniki), &FormVidTehniki);

FormVidTehniki->ShowModal();

}

//---------------------------------------------------------------------------

void __fastcall TFormMainAIS::N3Click(TObject *Sender)

{

Application->CreateForm(__classid(TFormManager), &FormManager);

FormManager->ShowModal();

}

//---------------------------------------------------------------------------

void __fastcall TFormMainAIS::N6Click(TObject *Sender)

{

Application->CreateForm(__classid(TFormComputerTehnika), &FormComputerTehnika);

FormComputerTehnika->ShowModal();

}

//---------------------------------------------------------------------------

void __fastcall TFormMainAIS::N9Click(TObject *Sender)

{

N8Click(Sender);

}

//---------------------------------------------------------------------------

void __fastcall TFormMainAIS::N10Click(TObject *Sender)

{

Application->CreateForm(__classid(TFormProdazha), &FormProdazha);

FormProdazha->ShowModal();

}

//---------------------------------------------------------------------------

void __fastcall TFormMainAIS::N12Click(TObject *Sender)

{

Application->CreateForm(__classid(TFormVnalichii), &FormVnalichii);

FormVnalichii->ShowModal();

}

//---------------------------------------------------------------------------

void __fastcall TFormMainAIS::N13Click(TObject *Sender)

{

Application->CreateForm(__classid(TFormProdano), &FormProdano);

FormProdano->ShowModal();

}

//---------------------------------------------------------------------------

void __fastcall TFormMainAIS::N14Click(TObject *Sender)

{

Application->CreateForm(__classid(TFormOtchetManager), &FormOtchetManager);

FormOtchetManager->ShowModal();

}

//---------------------------------------------------------------------------

void __fastcall TFormMainAIS::N11Click(TObject *Sender)

{

Application->CreateForm(__classid(TFormDiagrammaOklad), &FormDiagrammaOklad);

FormDiagrammaOklad->ShowModal();

}

//---------------------------------------------------------------------------

//Вызов справки

void __fastcall TFormMainAIS::N15Click(TObject *Sender)

{

Application->CreateForm(__classid(TFormSpravka), &FormSpravka);

FormSpravka->ShowModal();

}

//---------------------------------------------------------------------------

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "MainComputer.h"

#include "DM.h"

#include "MainAIS.h"

#include "string.h"

#include "stdio.h"

#include <algorithm>

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TFormVxod *FormVxod;

int TekManager;

//---------------------------------------------------------------------------

__fastcall TFormVxod::TFormVxod(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TFormVxod::FormShow(TObject *Sender)

{

ComboBoxManager->Clear();

ADODataSetManager->Close();

ADODataSetManager->Open();

ADODataSetManager->First();

while(!ADODataSetManager->Eof)

{ComboBoxManager->Items->Add(ADODataSetManagerFIO->Value);

ADODataSetManager->Next();

}

}

//---------------------------------------------------------------------------

void __fastcall TFormVxod::BitBtnExitClick(TObject *Sender)

{

Close();

}

//---------------------------------------------------------------------------

void __fastcall TFormVxod::ButtonVxodClick(TObject *Sender)

{

ADODataSetManager->Close();

ADODataSetManager->CommandText= "select * from TablManager where FIO="+QuotedStr(ComboBoxManager->Text);

ADODataSetManager->Open();

if(ADODataSetManagerPassword->Value==EditPassword->Text)

{TekManager= ADODataSetManagerCod->Value;

Application->CreateForm(__classid(TFormMainAIS), &FormMainAIS);

FormMainAIS->ShowModal();

Close();

}

else ShowMessage("Неверный пароль!");

}

//---------------------------------------------------------------------------

void __fastcall TFormVxod::EditPasswordKeyPress(TObject *Sender, char &Key)

{

if(Key==13)

ButtonVxodClick(Sender);

}

//---------------------------------------------------------------------------

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "Manager.h"

#include "DM.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TFormManager *FormManager;

//---------------------------------------------------------------------------

__fastcall TFormManager::TFormManager(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TFormManager::FormShow(TObject *Sender)

{

ADODataSetManager->Close();

ADODataSetManager->Open();

ADODataSetDolgnost->Close();

ADODataSetDolgnost->Open();

}

//---------------------------------------------------------------------------

//Выполняется при нажатии кнопки Добавить

void __fastcall TFormManager::ButtonAddClick(TObject *Sender)

{

if(ADODataSetManager->State==dsBrowse)

{ADODataSetManager->Insert();

Panel1->Visible=false;

Panel2->Visible=true;

GroupBox1->Visible=true;

DateTimePicker1->Date= Date();

DBEditFIO->SetFocus();

}

}

//---------------------------------------------------------------------------

//Выполняется при нажатии кнопки Удалить

void __fastcall TFormManager::ButtonDeleteClick(TObject *Sender)

{

if(ADODataSetManager->RecordCount==0) //есть ли данные в БД

{ButtonChange->Enabled=false;//сделать кнопку Изменить недоступной

ButtonDelete->Enabled=false;//сделать кнопку Удалить недоступной

ShowMessage("Данные отсутствуют в БД!"); //вывести сообщение в виде окошка

return;//выход из формы

}

if(ADODataSetManager->State==dsBrowse)

if(Application->MessageBoxA("Подтвердите удаление записи !","Внимание",MB_ICONWARNING+MB_YESNO)==IDYES)

ADODataSetManager->Delete();//удалить запись из таблицы БД

}

//---------------------------------------------------------------------------

//Выполняется при нажатии кнопки Изменить

void __fastcall TFormManager::ButtonChangeClick(TObject *Sender)

{

if(ADODataSetManager->RecordCount==0) //есть ли данные в БД - кол-во записей в таблице БД

{ShowMessage("Данные отсутствуют в БД!");//вывести сообщение в виде окошка

return;//выход из формы

}

if(ADODataSetManager->State==dsBrowse)

ADODataSetManager->Edit();//перевести таблицу БД в режим редактирования

Panel1->Visible=false;//сделать панель невидимой

Panel2->Visible=true;//сделать панель видимой

GroupBox1->Visible=true;//сделать панель видимой

DateTimePicker1->Date= ADODataSetManagerDataRozhd->Value;

DBEditFIO->SetFocus(); //установить фокус в поле для ввода

}

//---------------------------------------------------------------------------

//Выполняется при нажатии кнопки Выход

void __fastcall TFormManager::ButtonExitClick(TObject *Sender)

{

Close();

}

//---------------------------------------------------------------------------

//------Выполняется при нажатии кнопки Запомнить

void __fastcall TFormManager::ButtonPostClick(TObject *Sender)

{

//------проверка всех введенных данных

if(DBEditFIO->Text=="" )//проверка введенных данных

{ShowMessage("Введите Ф.И.О. !");//вывод диалогового окна с сообщением

return;//выход из процедуры

}

if(DBEditPasport->Text=="" )//проверка введенных данных

{ShowMessage("Введите паспорт !");//вывод диалогового окна с сообщением

return;//выход из процедуры

}

if(DBEditOklad->Text=="" )//проверка введенных данных

{ShowMessage("Введите оклад !");//вывод диалогового окна с сообщением

return;//выход из процедуры

}

if(DBEditPassword->Text=="" )//проверка введенных данных

{ShowMessage("Введите пароль !");//вывод диалогового окна с сообщением

return;//выход из процедуры

}

if(ADODataSetManagerCodDolgnost->Value==0 )//проверка введенных данных

{ShowMessage("Введите должность !");//вывод диалогового окна с сообщением

return;//выход из процедуры

}

//-----------

ADODataSetManagerDataRozhd->Value= DateTimePicker1->Date;

ADODataSetManager->Post();//запомнить все изменения в таблице БД

Panel1->Visible=true;//сделать панель видимой

Panel2->Visible=false;//сделать панель невидимой

GroupBox1->Visible=false;//сделать панель невидимой

ButtonChange->Enabled=true;//сделать кнопку Изменить доступной

ButtonDelete->Enabled=true;//сделать кнопку Удалить доступной

}

//---------------------------------------------------------------------------

//Выполняется при нажатии кнопки Отменить

void __fastcall TFormManager::ButtonOtmenClick(TObject *Sender)

{

ADODataSetManager->Cancel();//отменить все изменения - данные в таблице БД не сохраняются

Panel1->Visible=true;//сделать панель видимой

Panel2->Visible=false;//сделать панель невидимой

GroupBox1->Visible=false;//сделать панель невидимой

}

//---------------------------------------------------------------------------

void __fastcall TFormManager::N1Click(TObject *Sender)

{

ButtonExitClick(Sender);

}

//---------------------------------------------------------------------------

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "OtchetManager.h"

#include "DM.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TFormOtchetManager *FormOtchetManager;

//---------------------------------------------------------------------------

__fastcall TFormOtchetManager::TFormOtchetManager(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TFormOtchetManager::FormShow(TObject *Sender)

{ char *s;

ADODataSetComputerTehnika->Close();

ADODataSetComputerTehnika->Open();

ADODataSetHistory->Close();

ADODataSetHistory->Open();

ADODataSetDolgnost->Close();

ADODataSetDolgnost->Open();

ADODataSetManager->Close();

ADODataSetManager->CommandText= "select TablManager.FIO as 'ФИО менеджера',TablDolgnost.name as 'Должность',TablHistory.cena as 'Цена',TablComputerTehnika.name as 'Название товара' from TablManager,TablHistory,TablDolgnost,TablComputerTehnika where (TablManager.Cod=TablHistory.CodManager)and(TablDolgnost.Cod=TablManager.CodDolgnost)and(TablHistory.CodComputerTehnika=TablComputerTehnika.Cod)";

ADODataSetManager->Open();

DBGridManager->Columns->Items[0]->Width=290;

DBGridManager->Columns->Items[1]->Width=160;

DBGridManager->Columns->Items[2]->Width=60;

DBGridManager->Columns->Items[3]->Width=410;

}

//---------------------------------------------------------------------------

void __fastcall TFormOtchetManager::N1Click(TObject *Sender)

{

ButtonExitClick(Sender);

}

//---------------------------------------------------------------------------

void __fastcall TFormOtchetManager::ButtonExitClick(TObject *Sender)

{

Close();

}

//---------------------------------------------------------------------------

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "Prodano.h"

#include "DM.h"

#include "UnitReport2.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TFormProdano *FormProdano;

//---------------------------------------------------------------------------

__fastcall TFormProdano::TFormProdano(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TFormProdano::ButtonExitClick(TObject *Sender)

{

Close();

}

//---------------------------------------------------------------------------

void __fastcall TFormProdano::DBGridComputerTehnikaCellClick(

TColumn *Column)

{

if(ADODataSetComputerTehnikaPicture->Value=="")

DBImageFoto->Visible=false;

else DBImageFoto->Visible=true;

if(ADODataSetComputerTehnika->RecordCount==0)

{DBImageFoto->Visible=false;

DBMemoOpisanie->Visible=false;

}

}

//---------------------------------------------------------------------------

void __fastcall TFormProdano::FormShow(TObject *Sender)

{ TColumn *Column;

ADODataSetComputerTehnika->Close();

ADODataSetComputerTehnika->Open();

ADODataSetVidTehniki->Close();

ADODataSetVidTehniki->Open();

DBGridComputerTehnikaCellClick(Column);

}

//---------------------------------------------------------------------------

//Выполняется при нажатии кнопки Печать

void __fastcall TFormProdano::ButtonPrintClick(TObject *Sender)

{

Application->CreateForm(__classid(TFormReport2), &FormReport2);

FormReport2->ShowModal();

}

//---------------------------------------------------------------------------

void __fastcall TFormProdano::N1Click(TObject *Sender)

{

ButtonPrintClick(Sender);

}

//---------------------------------------------------------------------------

void __fastcall TFormProdano::N2Click(TObject *Sender)

{

ButtonExitClick(Sender);

}

//---------------------------------------------------------------------------

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "Prodazha.h"

#include "DM.h"

#include "MainComputer.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TFormProdazha *FormProdazha;

//---------------------------------------------------------------------------

__fastcall TFormProdazha::TFormProdazha(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

//Выполняется при отображении формы

void __fastcall TFormProdazha::FormShow(TObject *Sender)

{ TColumn *Column;

DateTimePickerDataProdazhi->Date= Date();

ADODataSetComputerTehnika->Close();

ADODataSetComputerTehnika->Open();

ADODataSetHistory->Close();

ADODataSetHistory->Open();

DBGridComputerTehnikaCellClick(Column);

}

//---------------------------------------------------------------------------

void __fastcall TFormProdazha::DBGridComputerTehnikaCellClick(

TColumn *Column)

{

if(ADODataSetComputerTehnikaPicture->Value=="")

DBImageFoto->Visible=false;

else DBImageFoto->Visible=true;

if(ADODataSetComputerTehnika->RecordCount==0)

{DBImageFoto->Visible=false;

GroupBoxOpisanie->Visible= false;

}

else

GroupBoxOpisanie->Visible=true;

}

//---------------------------------------------------------------------------

void __fastcall TFormProdazha::ButtonProdatClick(TObject *Sender)

{TColumn *Column;

if(Application->MessageBoxA("Подтвердите продажу товара !","Внимание",MB_ICONWARNING+MB_YESNO)==IDYES)

{if(ADODataSetComputerTehnika->RecordCount==0)

{ShowMessage("Товар отсутствует в продаже!");

return;

}

ADODataSetComputerTehnika->Edit();

ADODataSetComputerTehnikaProdan->Value=1;

ADODataSetComputerTehnika->Post();

ADODataSetComputerTehnika->Refresh();

ADODataSetHistory->Insert();

ADODataSetHistoryCodComputerTehnika->Value= ADODataSetComputerTehnikaCod->Value;

ADODataSetHistoryCodManager->Value= TekManager;

ADODataSetHistoryDataProdazhi->Value= DateTimePickerDataProdazhi->Date;

ADODataSetHistoryCena->Value= ADODataSetComputerTehnikaCena->Value;

ADODataSetHistory->Post();

ADODataSetComputerTehnika->Close();

ADODataSetComputerTehnika->Open();

DBGridComputerTehnikaCellClick(Column);

}

}

//---------------------------------------------------------------------------

void __fastcall TFormProdazha::ButtonExitClick(TObject *Sender)

{

Close();

}

//---------------------------------------------------------------------------

void __fastcall TFormProdazha::N1Click(TObject *Sender)

{

ButtonProdatClick(Sender);

}

//---------------------------------------------------------------------------

void __fastcall TFormProdazha::N2Click(TObject *Sender)

{

ButtonExitClick(Sender);

}

//---------------------------------------------------------------------------

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

//---------------------------------------------------------------------------

USEFORM("MainComputer.cpp", FormVxod);

USEFORM("DM.cpp", DM1); /* TDataModule: File Type */

USEFORM("Dolgnost.cpp", FormDolgnost);

USEFORM("MainAIS.cpp", FormMainAIS);

USEFORM("VidTehniki.cpp", FormVidTehniki);

USEFORM("Manager.cpp", FormManager);

USEFORM("ComputerTehnika.cpp", FormComputerTehnika);

USEFORM("Prodazha.cpp", FormProdazha);

USEFORM("Vnalichii.cpp", FormVnalichii);

USEFORM("UnitReport.cpp", FormReport);

USEFORM("Prodano.cpp", FormProdano);

USEFORM("UnitReport2.cpp", FormReport2);

USEFORM("OtchetManager.cpp", FormOtchetManager);

USEFORM("DiagrammaOklad.cpp", FormDiagrammaOklad);

USEFORM("Spravka.cpp", FormSpravka);

//---------------------------------------------------------------------------

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)

{

try

{

Application->Initialize();

Application->CreateForm(__classid(TFormVxod), &FormVxod);

Application->CreateForm(__classid(TDM1), &DM1);

Application->Run();

}

catch (Exception &exception)

{

Application->ShowException(&exception);

}

catch (...)

{

try

{

throw Exception("");

}

catch (Exception &exception)

{

Application->ShowException(&exception);

}

}

return 0;

}

//---------------------------------------------------------------------------

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "Spravka.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TFormSpravka *FormSpravka;

//---------------------------------------------------------------------------

__fastcall TFormSpravka::TFormSpravka(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TFormSpravka::ButtonExitClick(TObject *Sender)

{

Close();

}

//---------------------------------------------------------------------------

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "UnitReport.h"

#include "DM.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TFormReport *FormReport;

bool Pr;

//---------------------------------------------------------------------------

__fastcall TFormReport::TFormReport(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

//выполняется после закрытия окна просмотра отчета

void __fastcall TFormReport::QuickRep1AfterPreview(TObject *Sender)

{

FormReport->Close(); //закрыть форму

}

//---------------------------------------------------------------------------

//выполняется при активации формы

void __fastcall TFormReport::FormActivate(TObject *Sender)

{

if(Pr==false)

Pr=true;

else

{Pr=false;

FormReport->Close();

return;

}

QuickRep1->Visible=false;

QuickRep1->Preview();//показать окно предварительного просмотра отчета

}

//---------------------------------------------------------------------------

//выполняется при отображении формы

void __fastcall TFormReport::FormShow(TObject *Sender)

{

ADODataSetComputerTehnika->Close();

ADODataSetComputerTehnika->Open();

}

//---------------------------------------------------------------------------

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "UnitReport2.h"

#include "DM.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TFormReport2 *FormReport2;

bool Pr;

//---------------------------------------------------------------------------

__fastcall TFormReport2::TFormReport2(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

//выполняется после закрытия окна просмотра отчета

void __fastcall TFormReport2::QuickRep1AfterPreview(TObject *Sender)

{

FormReport2->Close(); //закрыть форму

}

//---------------------------------------------------------------------------

//выполняется при активации формы

void __fastcall TFormReport2::FormActivate(TObject *Sender)

{

if(Pr==false)

Pr=true;

else

{Pr=false;

FormReport2->Close();

return;

}

QuickRep1->Visible=false;

QuickRep1->Preview();//показать окно предварительного просмотра отчета

}

//---------------------------------------------------------------------------

//выполняется при отображении формы

void __fastcall TFormReport2::FormShow(TObject *Sender)

{

ADODataSetComputerTehnika->Close();

ADODataSetComputerTehnika->Open();

ADODataSetVidTehniki->Close();

ADODataSetVidTehniki->Open();

ADODataSetHistory->Close();

ADODataSetHistory->Open();

}

//---------------------------------------------------------------------------

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "VidTehniki.h"

#include "DM.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TFormVidTehniki *FormVidTehniki;

//---------------------------------------------------------------------------

__fastcall TFormVidTehniki::TFormVidTehniki(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

//Выполняется при нажатии кнопки Добавить

void __fastcall TFormVidTehniki::ButtonAddClick(TObject *Sender)

{

if(ADODataSetVidTehniki->State==dsBrowse)

{ADODataSetVidTehniki->Insert();

Panel1->Visible=false;

Panel2->Visible=true;

GroupBox1->Visible=true;

DBEditName->SetFocus();

}

}

//---------------------------------------------------------------------------

//Выполняется при нажатии кнопки Удалить

void __fastcall TFormVidTehniki::ButtonDeleteClick(TObject *Sender)

{

if(ADODataSetVidTehniki->RecordCount==0) //есть ли данные в БД

{ButtonChange->Enabled=false;//сделать кнопку Изменить недоступной

ButtonDelete->Enabled=false;//сделать кнопку Удалить недоступной

ShowMessage("Данные отсутствуют в БД!"); //вывести сообщение в виде окошка

return;//выход из формы

}

if(ADODataSetVidTehniki->State==dsBrowse)

if(Application->MessageBoxA("Подтвердите удаление записи !","Внимание",MB_ICONWARNING+MB_YESNO)==IDYES)

{ADODataSetComputerTehnika->Close();

ADODataSetComputerTehnika->CommandText= "select * from TablComputerTehnika where CodVidTehniki="+ADODataSetVidTehnikiCod->AsString;

ADODataSetComputerTehnika->Open();

if(ADODataSetComputerTehnika->RecordCount>0)

{ShowMessage("Ошибка при удалении! В таблице 'TablComputerTehnika' имеются связанные записи!"); //вывести сообщение в виде окошка

return;//выход из процедуры

}

ADODataSetVidTehniki->Delete();//удалить запись из таблицы БД

}

}

//---------------------------------------------------------------------------

//Выполняется при нажатии кнопки Изменить

void __fastcall TFormVidTehniki::ButtonChangeClick(TObject *Sender)

{

if(ADODataSetVidTehniki->RecordCount==0) //есть ли данные в БД - кол-во записей в таблице БД

{ShowMessage("Данные отсутствуют в БД!");//вывести сообщение в виде окошка

return;//выход из формы

}

if(ADODataSetVidTehniki->State==dsBrowse)

ADODataSetVidTehniki->Edit();//перевести таблицу БД в режим редактирования

Panel1->Visible=false;//сделать панель невидимой

Panel2->Visible=true;//сделать панель видимой

GroupBox1->Visible=true;//сделать панель видимой

DBEditName->SetFocus(); //установить фокус в поле для ввода

}

//---------------------------------------------------------------------------

//Выполняется при нажатии кнопки Выход

void __fastcall TFormVidTehniki::ButtonExitClick(TObject *Sender)

{

Close();

}

//---------------------------------------------------------------------------

//------Выполняется при нажатии кнопки Запомнить

void __fastcall TFormVidTehniki::ButtonPostClick(TObject *Sender)

{

//------проверка всех введенных данных

if(DBEditName->Text=="" )//проверка введенных данных

{ShowMessage("Введите название!");//вывод диалогового окна с сообщением

return;//выход из процедуры

}

//-----------

ADODataSetVidTehniki->Post();//запомнить все изменения в таблице БД

Panel1->Visible=true;//сделать панель видимой

Panel2->Visible=false;//сделать панель невидимой

GroupBox1->Visible=false;//сделать панель невидимой

ButtonChange->Enabled=true;//сделать кнопку Изменить доступной

ButtonDelete->Enabled=true;//сделать кнопку Удалить доступной

}

//---------------------------------------------------------------------------

//Выполняется при нажатии кнопки Отменить

void __fastcall TFormVidTehniki::ButtonOtmenClick(TObject *Sender)

{

ADODataSetVidTehniki->Cancel();//отменить все изменения - данные в таблице БД не сохраняются

Panel1->Visible=true;//сделать панель видимой

Panel2->Visible=false;//сделать панель невидимой

GroupBox1->Visible=false;//сделать панель невидимой

}

//---------------------------------------------------------------------------

void __fastcall TFormVidTehniki::FormShow(TObject *Sender)

{

ADODataSetVidTehniki->Close();

ADODataSetVidTehniki->Open();

ADODataSetComputerTehnika->Close();

ADODataSetComputerTehnika->Open();

}

//---------------------------------------------------------------------------

void __fastcall TFormVidTehniki::DBEditNameKeyPress(TObject *Sender,

char &Key)

{

if(Key==13)

ButtonPostClick(Sender);

}

//---------------------------------------------------------------------------