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

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

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 21.02.2011
Размер файла 4,4 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Формула 1.2.2

где n1, - продолжительность осуществления инвестиций;

п2 - продолжительность периода отдачи;

Кl - ежегодные инвестиции в периоде l, l =1,2,., п1;

pj - ежегодные инвестиции в периоде j, j = 1, 2,., п2.

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

Формула 1.2.3

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

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

5.3 Выбор и описание разрабатываемого и альтернативного вариантов

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

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

разработка;

производство;

эксплуатация.

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

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

разработка и отладка программного обеспечения;

эксплуатация.

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

В качестве альтернативного варианта рассмотрим проект написания данного программного продукта с помощью технологии ASP.net и языка программирования C#, а также база данных, реализованной на SQL Server 2005.

Исходные данные для расчётов приведены в таблице 5.3.1.

Таблица 5.3.1

Назначение показателей

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

Значения по вариантам

Основной

Альтернативный

Общая продолжительность этапа разработки и отладки, мес.

T

4

4

Общая численность исполнителей в период разработки, чел.

U

2

2

Среднемесячная заработная плата всех исполнителей, р. /мес.

З

40000

70000

Общая продолжительность этапа эксплуатации, лет

Тэ

2

2

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

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

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

Для разрабатываемого в данной дипломной работе программного продукта:

общая продолжительность разработки 4 месяца;

общая продолжительность эксплуатации 2 года.

В итоге, общий период составляет 2 года 4 месяца

На рисунке 1.2.1 представлено графическое изображение последовательности вложений инвестиций по годам расчётного периода:

Рис.1.2.1

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

Учитывая это и используя данные из справочных источников, находим дисконтный множитель. Дисконтный множитель при i = 10% по годам вложений представлен в таблице 5.3.2.

Таблица 5.3.2

Год вложения

1

2

Дисконтный множитель

0.9091

0.8264

5.4 Расчёт вложений на этапе разработки и отладки основного варианта

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

Календарный график выполнения работ представлен в таблице 5.3.3.

Таблица 5.3.3

Наименование этапа

Сроки начала

Сроки окончания

Всего, мес.

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

01.10.08

07.10.08

1/2

2. Определение структуры системы

08.10.08

14.10.08

1/2

3. Написание программного комплекса

15.10.08

14.12.08

2

4. Отладка

15.12.08

21.12.08

1/2

5. Подготовка документации

22.12.08

28.12.08

1/2

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

Таблица 5.3.4

Категория персонала

Кол-во чел

Основная зарплата,

тыс. руб.

Доп. Зарплата (14% от ОснЗп)

тыс. руб.

Время занятий мес.

Сумма, тыс. руб.

Старший программист

1

25

3,5

4

114

Программист

1

15

2,8

4

71,2

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

Таблица 5.3.5

Формулы для расчёта

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

С = Зо+ Зд + Зсс + Зм + Зээ + За + Зпр

Зо - основная з/п персонала, руб. /час

Зд - доп. з/п персонала, руб. /час

Зсс - отчисления на гос. страх., руб. /час

Зм - затраты на материалы, руб. /час

Зээ - затраты на потр. энергию, руб. /час

За - амортизация выч. средств, руб. /час

Зпр - прочие производ. расходы, руб. /час

Зо = Зосн / (m * 8)

Зосн - основная з/п программиста, руб. /час (см. таб.4)

m - ср. кол-во рабочих дней в месяце m=21

Зд = (Нд /100) * Зо

Нд - процент доп. з/п персонала (14%)

Зсс = (Нсс / 100) * (Зо + Зд)

Нсс - процент отчисления на соц. обеспечение (26%)

Зээ = qj * Nj * S

qj - число j-х технических средств ЭВМ

Nj - потр. мощность j-х технических средств, кВт

S - стоимость кВт/ч электроэнергии (1,85 руб.)

За=а* Sэвм / (100*8*m*12)

a - годовая норма амортизации ЭВМ (20%)

Sэвм - балансовая стоимость ЭВМ (25000 руб.)

Зпр = (Нпр / 100) * (Зо + Зээ + За)

Нпр - процент прочих произв. расходов (50%)

Основная заработная плата: Зо =40000 / (21* 8) = 238 руб. /час. Дополнительная заработная плата: Зд = (14/100) * 238 = 33,3 руб. / час. Отчисления на соцобеспечение: Зсс = (26/100) * (238 + 33,3) = 70,4 руб. / час. Затраты на электроэнергию: Зээ = 2 * 0,3 * 1,85 = 1,1 руб. /час. Амортизация: За = 20 * 25000 * 2/ (100 * 8 * 21 * 12) = 4,9 руб. /час. Прочие производственные расходы: Зпр = 50 / 100 * (238 + 1,1 + 4,9) = 122 руб. /час.

К прочим производственным расходам можно отнести затраты на материалы, лицензионное программное обеспечение и т.д.

Таким образом, себестоимость машино-часа работы ЭВМ составит: С = 238 + 33,3 + 70,4 + 1,1 + 4,9 + 122 = 469,7 руб. /час. Однако, при расчёте себестоимости машино-часа учитывались затраты лишь на ЭВМ, занятой для решения данного вопроса. Кроме этого, необходимо ещё учитывать затраты на ремонт оборудования. Затраты на ремонт составляют 10% от стоимости оборудования, т.е.:

Зр = 10 * Sэвм * 2/ (8 * m * 12 * 100);

Зр = 10 * 30000 * 2/ (8 * 21 * 12 * 100) = 3 руб. /час;

Таким образом, себестоимость машино-часа работы: С = 469,7 + 3 = 472,7 руб. /час. Зная себестоимость машино-часа работы ЭВМ, можно определить затраты на написание программного комплекса и его отладку по формуле:

Знп-о = С * t,

где t = 504 - время написания программного комплекса и его отладки и использование вычислительной машины для подготовки технической документации, час (63 рабочих дня). Получим: Знп-о = 472,7 * 504 = 238,2 тыс. руб. В целом показатели на этапе разработки характеризуются величиной стоимости работы и дисконтным множителем. Величина дисконтного множителя равна 1 (т.к. t = 3 мес. не дисконтируется).

Таким образом, величина затрат на разработку составляет 238,2 тыс. руб.

5.5 Расчёт вложений на этапе разработки и отладки альтернативного варианта

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

Таблица 5.3.6

Наименование этапа

Сроки начала

Сроки окончания

Всего, мес.

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

01.10.08

07.10.08

1/4

2. Определение структуры системы

08.10.08

14.10.08

1/4

3. Написание программного комплекса

15.10.08

14.12.08

2

4. Отладка

15.12.08

21.12.08

1/4

5. Подготовка документации

22.12.08

28.12.08

1/4

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

Таблица 5.3.7

Категория персонала

Кол-во человек

Основная зарплата

тыс. руб.

Доп. Зарплата (14% от ОснЗп)

тыс. руб.

Время занятий, мес.

Сумма, тыс. руб.

Разработчик

1

35,0

4,9

3

119,7

Инженер-программист

1

25,0

3,5

3

85,5

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

Основная заработная плата: Зо = 60000 / (21* 8) = 357,1 руб. /час. Дополнительная заработная плата: Зд = (14/100) * 357,1 = 50 руб. /час. Отчисления на соцобеспечение: Зсс = (26/100) * (357,1 + 50) = 105,9 руб. /час. Затраты на электроэнергию: Зээ = 2 * 0,3 * 1,85 = 1,1 руб. /час. Амортизация: За = 20 * 30000 * 2/ (100 * 8 * 21 * 12) = 6 руб. /час. Прочие производственные расходы: Зпр = 50 / 100 * (357,1 + 1,1 + 6) = 182,1 руб. /час. Таким образом, себестоимость машино-часа работы ЭВМ составит: = 357,1 + 50 + 105,9 + 1,1 + 6 + 182,1 = 702,2 руб. /час.

Однако, при расчёте себестоимости машино-часа учитывались затраты лишь на ЭВМ, занятой для решения данного вопроса. А нам необходимо ещё учитывать затраты на ремонт оборудования. Затраты на ремонт составляют 10% от стоимости оборудования, т.е.:

Зр = 10 * Sэвм * 2/ (8 * m * 12 * 100);

Зр = 10 * 30000 * 2/ (8 * 21 * 12 * 100) = 3 руб. /час;

Таким образом, себестоимость машино-часа работы:

С = 702,2 + 3 = 705,2 руб. /час;

Зная себестоимость машино-часа работы ЭВМ, можно определить затраты на написание программного комплекса и его отладку по формуле:

Знп-о = С * t,

где t = 504 - время написания и отладки программного комплекса и использования вычислительной техники для подготовки технической документации, час (63 рабочих дня).

Знп-о = 705,2 * 504 = 355,4 тыс. руб.

Таким образом, величина затрат на разработку составляет 355,4 тыс. руб.

5.6 Расчёт вложений по годам этапа эксплуатации

Общая продолжительность этапа эксплуатации равна 2 года. Годовые текущие (эксплуатационные) затраты на обработку информации в ИТ-проекте рассчитываются как сумма следующих слагаемых:

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

Отчисления на социальные отчисления;

Амортизация технических средств и вспомогательного оборудования;

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

Затраты на электроэнергию, потребляемую оборудованием и расходуемую на освещение;

Расходные материалы (носители информации) и прочие расходы.

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

Общие эксплуатационные издержки потребителя составят:

И = (Зп + Зд + Зс + Зр + За + Зээ) * t,

где t - время эксплуатации (4032 часов); Зп - совокупная основная заработная плата пользователей, руб. /час. Для эксплуатации комплекса потребуется администратор. Поэтому при расчете необходимо учитывать заработную плату администратора - 30000 р.

Тогда, Зп = 30000 / 21/8 = 178,6 руб. /час; Зд - совокупная дополнительная заработная плата пользователей, руб. /час. (14% от основной зарплаты).

Зд = Зп*0,14 = 178,6*0,14 = 25 руб. /час;

Зс - отчисления на социальное страхование.

Зс = 0,26* (Зп + Зд) = 53 руб. /час;

Зр - затраты на ремонт (10% от стоимости оборудования).

Зр = 0,1* 1*30000/ 8/21/ 12 = 1,49 руб. /час;

За - затраты на амортизацию (20% от стоимости оборудования).

Зр = 0,2* 1*30000/ 8/21/ 12 = 2,98 руб. /час;

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

Зээ = 1,85 * 0.3 * 1 = 0,55 руб. /час;

Тогда при основном варианте и альтернативном варианте:

И = (178,6 + 25 + 53 + 1,49 + 2,98 + 0,55) * 4032 = 1 054,8 тыс. руб.

5.7 Итоговые показатели технико-экономической эффективности

Динамика показателей на этапе эксплуатации для основного и альтернативного варианта приведены в таблице 1.2.8

В результате современная величина затрат на этапе эксплуатации составит для основного варианта и альтернативного вариантов: за первый год эксплуатации (0.9091) * 1 054,8 тыс. руб. / 2 = 479,5 тыс. руб.; за второй год эксплуатации (0.8264) * 1 054,8 тыс. руб. / 2 = 435,8 тыс. руб. Показатель итоговой величины затрат: для основного варианта: 238,2 тыс. руб. + 915,3 тыс. руб. = 1 153,3 тыс. руб.; для альтернативного варианта: 355,4 тыс. руб. + 915,3 тыс. руб. = 1 270,7 тыс. руб.

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

Таблица 5.3.8

Наименование показателей

Значения показателей по вариантам

Основной

Альтернативный

Технико-эксплуатационные

Рекомендуемый объём ОЗУ, Мбайт

2048

4096

Рекомендуемый тип процессора

AMD Athlon 64 X2

AMD Athlon 64 X2

Язык программирования

PHP

С#

Экономические показатели

Период разработки и отладки, мес.

4

4

Количество исполнителей

2

2

Период эксплуатации, мес.

28

24

Современная величина затрат на разработку и отладку ПП, тыс. руб.

238,2

355,4

Современная величина затрат на эксплуатацию ПП, тыс. руб.

915,3

915,3

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

1 153,3

1 270,7

Выводы

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

Заключение

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

В рамках модульного проектирования была использована система управления базами данных (СУБД), в основе которой заложена архитектура "клиент-сервер". Проектирование велось с использование CASE средства Rational Rose совместно с Data Modeler. После чего спроектированная база данных была успешна перенесена на сервер СУБД MySQL, отличающейся высокой производительностью, и основывающейся на организации удаленного доступа к базам данных. На ее базе был разработан пользовательский интерфейс взаимодействия с системой. Разработка клиентской части велась с использованием языка PHP, работающем на WEB-сервере Apache.

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

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

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

Приложение 1Скрипт создания БД в MYSQL

Структура таблиц

CREATE DATABASE `building` DEFAULT CHARACTER SET cp1251 COLLATE cp1251_general_ci;

USE `building`;

Структура таблицы `building`

-

DROP TABLE IF EXISTS `building`;

CREATE TABLE IF NOT EXISTS `building` (

`eNo` int (11) NOT NULL,

`oNo` int (11) NOT NULL,

KEY `eNo` (`eNo`),

KEY `oNo` (`oNo`)

) ENGINE=InnoDB DEFAULT CHARSET=cp1251;

INSERT INTO `building` (`eNo`, `oNo`) VALUES (16, 18

-

Структура таблицы `client`

-

DROP TABLE IF EXISTS `client`;

CREATE TABLE IF NOT EXISTS `client` (

`iNo` int (11) NOT NULL auto_increment,

`iName` varchar (255) NOT NULL,

`iPost` char (10) NOT NULL,

`iPhone` varchar (255) NOT NULL,

PRIMARY KEY (`iNo`,`iPost`)

) ENGINE=InnoDB DEFAULT CHARSET=cp1251 AUTO_INCREMENT=5;

INSERT INTO `client` (`iNo`, `iName`, `iPost`, `iPhone`) VALUES (1, 'Бизнес-Профит', 'Investor', '233-44-34'

-

Структура таблицы `delivery`

-

DROP TABLE IF EXISTS `delivery`;

CREATE TABLE IF NOT EXISTS `delivery` (

`mNo` int (11) NOT NULL,

`oNo` int (11) NOT NULL,

`count` decimal (8,0) NOT NULL,

KEY `mNo` (`mNo`),

KEY `oNo` (`oNo`)

) ENGINE=InnoDB DEFAULT CHARSET=cp1251;

INSERT INTO `delivery` (`mNo`, `oNo`, `count`) VALUES (10, 18, '10'

-------------------------------------------------------

-

Структура таблицы `employee`

-

DROP TABLE IF EXISTS `employee`;

CREATE TABLE IF NOT EXISTS `employee` (

`eNo` int (11) NOT NULL auto_increment,

`eName` varchar (255) NOT NULL,

`ePost` char (10) NOT NULL default '',

`eState` enum ('free','busy') NOT NULL default 'free',

`eSalary` decimal (8,0) NOT NULL,

PRIMARY KEY (`eNo`,`ePost`)

) ENGINE=InnoDB DEFAULT CHARSET=cp1251 AUTO_INCREMENT=25;

INSERT INTO `employee` (`eNo`, `eName`, `ePost`, `eState`, `eSalary`) VALUES (1, 'Андрей', 'Director', 'busy', '100000'

-------------------------------------------------------

-

Структура таблицы `investing`

-

DROP TABLE IF EXISTS `investing`;

CREATE TABLE IF NOT EXISTS `investing` (

`iNo` int (11) NOT NULL,

`oNo` int (11) NOT NULL,

`sum` decimal (8,0) NOT NULL,

UNIQUE KEY `iNo` (`iNo`,`oNo`),

KEY `oNo` (`oNo`)

) ENGINE=InnoDB DEFAULT CHARSET=cp1251;

INSERT INTO `investing` (`iNo`, `oNo`, `sum`) VALUES (1, 6, '20000')

-------------------------------------------------------

-

Структура таблицы `material`

-

DROP TABLE IF EXISTS `material`;

CREATE TABLE IF NOT EXISTS `material` (

`mNo` int (11) NOT NULL auto_increment,

`mName` varchar (255) NOT NULL,

`mCost` decimal (8,0) NOT NULL,

PRIMARY KEY (`mNo`)

) ENGINE=InnoDB DEFAULT CHARSET=cp1251 AUTO_INCREMENT=12;

INSERT INTO `material` (`mNo`, `mName`, `mCost`) VALUES (3, 'арматура', '1000')

-

Структура таблицы `object`

-

DROP TABLE IF EXISTS `object`;

CREATE TABLE IF NOT EXISTS `object` (

`oNo` int (11) NOT NULL auto_increment,

`oAddress` varchar (255) NOT NULL,

`oFloreys` int (11) NOT NULL,

`oState` enum ('сдан','не сдан') NOT NULL,

`oDate` date NOT NULL,

`oCost` decimal (8,0) NOT NULL,

`eNO` int (11) default NULL,

PRIMARY KEY (`oNo`),

KEY `eNO` (`eNO`)

) ENGINE=InnoDB DEFAULT CHARSET=cp1251 AUTO_INCREMENT=19;

INSERT INTO `object` (`oNo`, `oAddress`, `oFloreys`, `oState`, `oDate`, `oCost`, `eNO`) VALUES (4, 'ул. Белинского', 12, 'сдан', '2005-05-08', '2000',

3)

-------------------------------------------------------

-

Структура таблицы `users`

-

DROP TABLE IF EXISTS `users`;

CREATE TABLE IF NOT EXISTS `users` (

`uNo` int (11) NOT NULL,

`uPost` char (10) NOT NULL,

`uName` varchar (255) NOT NULL,

`uPassword` varchar (255) NOT NULL,

UNIQUE KEY `uNo` (`uNo`,`uPost`)

) ENGINE=InnoDB DEFAULT CHARSET=cp1251;

INSERT INTO `users` (`uNo`, `uPost`, `uName`, `uPassword`) VALUES (1, 'Director', 'bdron', '8fc88460a8f78875f25f7b3249e49a3cce1be97a')

-------------------------------------------------------

Схема данных и обеспечение целостности данных

Ограничения для таблицы `building`

-

ALTER TABLE `building`

ADD CONSTRAINT `building_ibfk_1` FOREIGN KEY (`eNo`) REFERENCES `employee` (`eNo`) ON DELETE CASCADE ON UPDATE CASCADE,

ADD CONSTRAINT `building_ibfk_2` FOREIGN KEY (`oNo`) REFERENCES `object` (`oNo`) ON DELETE CASCADE ON UPDATE CASCADE;

-

Ограничения для таблицы `delivery`

-

ALTER TABLE `delivery`

ADD CONSTRAINT `delivery_ibfk_1` FOREIGN KEY (`mNo`) REFERENCES `material` (`mNo`) ON DELETE CASCADE ON UPDATE CASCADE,

ADD CONSTRAINT `delivery_ibfk_2` FOREIGN KEY (`oNo`) REFERENCES `object` (`oNo`) ON DELETE CASCADE ON UPDATE CASCADE;

-

Ограничения для таблицы `investing`

-

ALTER TABLE `investing`

ADD CONSTRAINT `investing_ibfk_1` FOREIGN KEY (`iNo`) REFERENCES `client` (`iNo`) ON DELETE CASCADE ON UPDATE CASCADE,

ADD CONSTRAINT `investing_ibfk_2` FOREIGN KEY (`oNo`) REFERENCES `object` (`oNo`) ON DELETE CASCADE ON UPDATE CASCADE;

-

Ограничения для таблицы `object`

-

ALTER TABLE `object`

ADD CONSTRAINT `object_ibfk_1` FOREIGN KEY (`eNO`) REFERENCES `employee` (`eNo`) ON UPDATE CASCADE;

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

Строительство

create view vw_building AS

select `object`. `oAddress` AS `oAddress`

,`object`. `oFloreys` AS `oFloreys`

,`object`. `oState` AS `oState`

,`object`. `oCost` AS `oCost`

,concat (quarter (`object`. `oBeginDate`),' ът. ',year (`object`. `oBeginDate`)) AS `oBeginDate`

,concat (quarter (`object`. `oDate`),' ът. ',year (`object`. `oDate`)) AS `oDate`

from `object` where (`object`. `oState` = 'эх ёфрэ');

Триггеры

удаление пользователя перед удалением клиента

create trigger delete_client before delete on client for each row

begin

delete from users where uNo=OLD. iNo && uPost=OLD. iPost;

end

Хранимые процедуры

добавление сотрудника

create procedure addEmployee (in No int, in Name varchar (255), in Post char (10), in State char (10), in Salary decimal (10,2), in uName tinytext, in uPassword tinytext)

begin

set autocommit = 0;

insert into employee values (No, Name, Post, State, Salary);

if (Post='Director') || (Post = 'Manager') then

insert into users values (last_insert_id (), Post, uName, sha1 (uPassword));

end if;

commit;

set autocommit = 1;

end

добавление клиента

create procedure addClient (in No int, in Name varchar (255), in Post char (10), in Phone varchar (255), in uName varchar (255), in uPassword varchar (255))

begin

set autocommit = 0;

insert into client values (No, Name, Post, Phone);

if (Post='Investor') then

insert into users values (last_insert_id (), Post, uName, sha1 (uPassword));

end if;

commit;

set autocommit = 1;

end

вход в приложение

CREATE PROCEDURE login (in name varchar (255), in password varchar (255), in post char (10))

begin

if (post = 'employee') then

select uNo, uPost

from employee, users

where

uName = name && uPassword = sha1 (password) && uNo = eNo && uPost=ePost;

elseif (post = 'client') then

select uNo, uPost

from client, users

where

uName = name && uPassword = sha1 (password) && uNo = iNo && uPost=iPost;

end if;

end

проверка существования пользователя

create procedure isuser (in Name varchar (255), in Post char (10))

begin

select * from users where uName=Name && uPost = Post;

end

добавление объекта

create procedure addobject (in oNo int, in Address varchar (255), in Floreys int, in oState char (10), in oDate date, in Cost decimal (10,2), in No int)

begin

set autocommit = 0;

insert into object values (oNo, Address, Floreys, oState, curdate (), oDate, Cost, No);

if (No is not null) then

update employee set eState='busy' where eNo = No;

end if;

commit;

set autocommit = 1;

end

изменение состояния объекта

create procedure changeobject (in No int, in Address varchar (255), in Floreys int, in State char (10), in Date date, in Cost decimal (10,2), in empNo int)

begin

set autocommit = 0;

update employee set eState = 'free' where eNo = (select eNo from object where oNo = No);

update object set oAddress=Address, oFloreys=Floreys, oState = State, oDate=Date, oCost=Cost, eNo=empNo where oNo = No;

if (empNo is not null) then

update employee set eState='busy' where eNo = empNo;

end if;

if (State = 'сдан') then

update employee set eState = 'free' where eNo = (select eNo from object where oNo = No);

end if;

if (State = 'сдан') then

update employee set eState = 'free' where eNo in (select eNo from building where oNo = No);

end if;

commit;

set autocommit = 1;

end

удаление объекта

create procedure deleteobject (in No int)

begin

set autocommit=0;

update employee set eState = 'free' where eNo = (select eNo from object where oNo = No);

update employee set eState = 'free' where eNo in (select eNo from building where oNo = No);

delete from object where oNo=No;

commit;

set autocommit=1;

end

изменение данных управляющего

create procedure changemanager (in No int, in Name varchar (255), in Salary decimal (8), in objNo int)

begin

set autocommit = 0;

update object set eNo = null where eNo = No && oState = 'не сдан';

update employee set eName = Name, eSalary = Salary where eNo = No;

if (objNo is not null) then

update object set eNo = No where oNo = objNo;

update employee set eState = 'busy';

end if;

if (objNo is null) then

update employee set eState = 'free' where eNo = No;

end if;

commit;

set autocommit = 1;

end

удаление управляющего

create procedure deleteManager (in No int)

begin

set autocommit=0;

update object set eNo = null where eNo = No;

delete from employee where eNo=No;

delete from users where uNo=No && uPost='Manager';

commit;

set autocommit=1;

end

добавление связи между строителем и объектом строительства

create procedure addBuilding (in oNo int, in eNo int)

begin

set autocommit = 0;

insert into building values (eNo, oNo);

update employee set eState='busy' where employee. eNo=eNo;

commit;

set autocommit = 1;

end

Приложение 2Библиотека функций директора

<? php

class DirectorClass extends ClientClass

{

// вывод меню аккаунта Директора

public function showAccount ()

{

print <<<HERE

<div id="header">Директор</div>

<a href="? f=showObjects">объекты</a>

<a href="? f=showManagers">управляющие</a>

<a href="? f=showReports">все отчеты</a>

<a href="? f=showExit">выход</a>

HERE;

}

// вывод всех объетов

public function showObjects ()

{

echo '<div id="header">Строящиеся объекты</div>';

print <<<HERE

<table style="text-align: center">

<tr height="30">

<th>Адрес</th><th>Этажей</th><th>Готовность</th><th>Цена кв. м</th><th>Срок сдачи</th><th>Управляющий</th>

</tr>

HERE;

require ("connect. php");

$sql = "SELECT oNo, oAddress, oFloreys, oState, oCost, concat (quarter (oDate),' кв. ',year (oDate)) oDate, (select eName from employee where object. eNo = eNo) eName from object where oState='не сдан'";

$result = mysqli_query ($link,$sql);

while ($row = mysqli_fetch_assoc ($result))

{

$oAddress = $row ['oAddress'];

$oFloreys = $row ['oFloreys'];

$oState = $row ['oState'];

$oDate = $row ['oDate'];

$oNo = $row ['oNo'];

$oCost = $row ['oCost'];

$eName = $row ['eName'];

print <<<HERE

<tr>

<td><a href="? f=showChangeObject&id=$oNo">$oAddress</a></td>

<td>$oFloreys</td>

<td>$oState</td>

<td>$oCost</td>

<td>$oDate</td>

<td>$eName</td>

</tr>

HERE;

}

print <<<HERE

</table>

HERE;

echo '<br>'. '<br>'. '<a href="? f=showAddObject"> [Добавить объект] </a>';

}

// вывод управляющих

public function showManagers ()

{

echo '<div id="header">Управляющие</div>';

print <<<HERE

<table style="text-align: center">

<tr height="30">

<th>Код</th><th>Имя</th><th>Зарплата</th><th>Объект</th>

</tr>

HERE;

require ("connect. php");

$sql = "SELECT eNo, eName, eSalary, (select oAddress from object where object. eNo = employee. eNo && oState='не сдан') oAddress from employee where ePost='Manager'";

$result = mysqli_query ($link,$sql);

while ($row = mysqli_fetch_assoc ($result))

{

$eNo = $row ['eNo'];

$eName = $row ['eName'];

$eSalary = $row ['eSalary'];

$oAddress = $row ['oAddress'];

print <<<HERE

<tr>

<td>$eNo</td>

<td><a href="? f=showChangeManager&id=$eNo">$eName</a></td>

<td>$eSalary</td>

<td>$oAddress</td>

</tr>

HERE;

}

print <<<HERE

</table>

HERE;

echo '<br><br><a href="? f=showAddManager"> [Добавить управляющего] </a>';

}

// выход

public function showExit ()

{

unset ($_SESSION ['status']);

unset ($_SESSION ['uName']);

unset ($_SESSION ['uNo']);

showMessage ("Завершение работы", "Сеанс завершен");

echo "<HTML><HEAD>

<META HTTP-EQUIV='Refresh' CONTENT='2; URL=? '>

</HEAD></HTML>";

}

public function showLogin ()

{

showMessage ("Ошибка", "Данная опция не доступна");

}

// вывод формы добавления управляющего

public function showAddManager ()

{

echo '<div id="header">Добавление управляющего</div>';

$f = $_SERVER ['SCRIPT_NAME']. '? f='. $_GET ['f'];

if (isset ($_REQUEST ['uName'])) $uName = $_REQUEST ['uName'];

if (isset ($_REQUEST ['uPassword'])) $uPassword = $_REQUEST ['uPassword'];

if (isset ($_REQUEST ['eName'])) $eName = $_REQUEST ['eName'];

if (isset ($_REQUEST ['eSalary'])) $eSalary = $_REQUEST ['eSalary'];

if (isset ($_REQUEST ['uPassword2'])) $uPassword2 = $_REQUEST ['uPassword2'];

if (isset ($uName) &&! empty ($uPassword) &&! empty ($eName) &&! empty ($eSalary) && ($uPassword==$uPassword2))

addManager ($eName, $eSalary, $uName, $uPassword);

else

print<<<HERE

<form method="post" action=$f>

<table>

<tr>

<td>Имя: </td>

<td><input type="text" name="eName" maxlength="30"></td>

</tr>

<tr>

<td>Зарплата: </td>

<td><input type="text" name="eSalary" maxlength="16"></td>

</tr>

<tr>

<td>Логин: </td>

<td><input type="text" name="uName" maxlength="16"></td>

</tr>

<tr>

<td>Пароль: </td>

<td><input type="password" name="uPassword" maxlength="16"></td>

</tr>

<tr>

<td>Подтвердите пароль: </td>

<td><input type="password" name="uPassword2" maxlength="16"></td>

</tr>

<tr>

<td colspan="2" align="center"><input type="submit" value="Добавить" id="button"></td>

</tr>

</table>

</form>

HERE;

}

// вывод формы добавление объекта

public function showAddObject ()

{

echo '<div id="header">Добавление объекта</div>';

$f = $_SERVER ['SCRIPT_NAME']. '? f='. $_GET ['f'];

if (isset ($_REQUEST ['oAddress'])) $oAddress = $_REQUEST ['oAddress'];

if (isset ($_REQUEST ['oFloreys'])) $oFloreys = $_REQUEST ['oFloreys'];

if (isset ($_REQUEST ['oCost'])) $oCost = $_REQUEST ['oCost'];

if (isset ($_REQUEST ['oDate'])) $oDate = $_REQUEST ['oDate'];

if (isset ($_REQUEST ['eNo'])) $eNo = $_REQUEST ['eNo'];

if (isset ($oAddress) &&! empty ($oFloreys) &&! empty ($oCost) &&! empty ($oDate))

addObject ($oAddress, $oFloreys, $oCost, $oDate, $eNo);

else

{

print<<<HERE

<form method="post" action=$f>

<table>

<tr>

<td>Адрес: </td>

<td><input type="text" name="oAddress" maxlength="40"></td>

</tr>

<tr>

<td>Число этажей: </td>

<td><input type="text" name="oFloreys" maxlength="16"></td>

</tr>

<tr>

<td>Стоимость кв. м: </td>

<td><input type="text" name="oCost" maxlength="16"></td>

</tr>

<tr>

<td>Время сдачи: </td>

<td><input type="text" name="oDate" maxlength="16"></td>

</tr>

<tr>

<td>Управляющий: </td>

<td><select size="1" name="eNo" >

<option value="" selected="selected">не указан</option>

HERE;

require ("connect. php");

$sql = "SELECT eName, eNo from employee where ePost='Manager' && eState='free' ";

$result = mysqli_query ($link,$sql);

while ($row = mysqli_fetch_assoc ($result))

{

$eName = $row ['eName'];

$eNo = $row ['eNo'];

echo '<option value='. $eNo. '>'. $eName. '</option>';

}

print<<<HERE

</select>

</td>

</tr>

<tr>

<td colspan="2" align="center"><input type="submit" value="Добавить" id="button"></td>

</tr>

</table>

</form>

HERE;

}

}

// вывод формы изменения объекта

public function showChangeObject ()

{

echo '<div id="header">Изменение объекта</div>';

if (isset ($_GET ['id'])) $id = $_GET ['id'];

else

{

showMessage ("Неверный вызов фунцкции","Незадан параметр функции");

return;

}

$f = $_SERVER ['SCRIPT_NAME']. '? f='. $_GET ['f']. '&id='. $id;

if (isset ($_REQUEST ['oAddress'])) $oAddress = $_REQUEST ['oAddress'];

if (isset ($_REQUEST ['oFloreys'])) $oFloreys = $_REQUEST ['oFloreys'];

if (isset ($_REQUEST ['oCost'])) $oCost = $_REQUEST ['oCost'];

if (isset ($_REQUEST ['oDate'])) $oDate = $_REQUEST ['oDate'];

if (isset ($_REQUEST ['oState'])) $oState = $_REQUEST ['oState'];

if (isset ($_REQUEST ['eNo'])) $eNo = $_REQUEST ['eNo'];

if (isset ($oAddress) &&! empty ($oFloreys) &&! empty ($oCost) &&! empty ($oDate))

changeObject ($id, $oAddress, $oFloreys, $oCost, $oState, $oDate, $eNo);

else

{

require ("connect. php");

$sql = "SELECT oNo, oAddress, oFloreys, oState, oCost, oDate, eNo, (select eName from employee where object. eNo = eNo) eName from object where oNo = '$id' && oState='не сдан'";

$result = mysqli_query ($link,$sql);

if (mysqli_num_rows ($result) == 0) // объекта с таким номером не существует

{

showMessage ("Неверный вызов фунцкции", "Объекта с таким номером не существует");

return;

}

while ($row = mysqli_fetch_assoc ($result))

{

$oAddress = $row ['oAddress'];

$oFloreys = $row ['oFloreys'];

$oState = $row ['oState'];

$oDate = $row ['oDate'];

$oNo = $row ['oNo'];

$oCost = $row ['oCost'];

$eName = $row ['eName'];

$eNo = $row ['eNo'];

}

$yes = $no = '';

if ($oState == 'сдан') $yes = 'selected = "selected"';

else $no = 'selected = "selected"';

print<<<HERE

<form method="post" action=$f>

<table>

<tr>

<td>Адрес: </td>

<td><input type="text" name="oAddress" value="$oAddress" maxlength="40"></td>

</tr>

<tr>

<td>Число этажей: </td>

<td><input type="text" name="oFloreys" value="$oFloreys" maxlength="16"></td>

</tr>

<tr>

<td>Стоимость кв. м: </td>

<td><input type="text" name="oCost" value="$oCost" maxlength="16"></td>

</tr>

<tr>

<td>Время сдачи: </td>

<td><input type="text" name="oDate" value="$oDate" maxlength="16"></td>

</tr>

<tr>

<td>Управляющий: </td>

<td><select size="1" name="eNo">

<option value="" selected="selected">не указан</option>

HERE;

if (! empty ($eName))

echo '<option value='. $eNo. ' selected="selected">'. $eName. '</option>';

require ("connect. php");

$sql = "SELECT eName, eNo from employee where ePost='Manager' && eState='free' ";

$result = mysqli_query ($link,$sql);

while ($row = mysqli_fetch_assoc ($result))

{

$eName = $row ['eName'];

$eNo = $row ['eNo'];

echo '<option value='. $eNo. '>'. $eName. '</option>';

}

print<<<HERE

</select>

</td>

</tr>

<tr>

<td>Готовность: </td>

<td><select size="1" name="oState">

<option value="не сдан" $no>не сдан</option>

<option value="сдан" $yes>сдан</option>

</select>

</td>

</tr>

<tr>

<td colspan="2"><a href="? f=showDeleteObject&id=$oNo"> [удалить объект] </a></td>

<tr>

<tr>

<td colspan="2" align="center"><input type="submit" value="Сохранить" id="button"></td>

</tr>

</table>

</form>

HERE;

}

}

// вывод формы удаления объекта

public function showDeleteObject ()

{

echo '<div id="header">Удаление объекта</div>';

if (isset ($_GET ['id'])) $id = $_GET ['id'];

else

{

showMessage ("Неверный вызов фунцкции","Незадан параметр функции");

return;

}

deleteObject ($id);

}

// вывод формы изменения управляющего

public function showChangeManager ()

{

echo '<div id="header">Изменение управляющего</div>';

if (isset ($_GET ['id'])) $id = $_GET ['id'];

else

{

showMessage ("Неверный вызов фунцкции","Незадан параметр функции");

return;

}

$f = $_SERVER ['SCRIPT_NAME']. '? f='. $_GET ['f']. '&id='. $id;

if (isset ($_REQUEST ['oNo'])) $oNo = $_REQUEST ['oNo'];

if (isset ($_REQUEST ['eSalary'])) $eSalary = $_REQUEST ['eSalary'];

if (isset ($_REQUEST ['eName'])) $eName = $_REQUEST ['eName'];

if (! empty ($eSalary) &&! empty ($eName))

changeManager ($id, $eName, $eSalary, $oNo);

else

{

require ("connect. php");

$sql = "SELECT eNo, eName, eSalary, (select oAddress from object where object. eNo='$id' && oState='не сдан') oAddress, (select oNo from object where object. eNo='$id' && oState='не сдан') oNo from employee where ePost = 'Manager' && eNo='$id' ";

$result = mysqli_query ($link,$sql);

if (mysqli_num_rows ($result) == 0) // объекта с таким номером не существует

{

showMessage ("Неверный вызов фунцкции", "Управляющего с таким номером не существует");

return;

}

while ($row = mysqli_fetch_assoc ($result))

{

$oAddress = $row ['oAddress'];

$eSalary = $row ['eSalary'];

$eName = $row ['eName'];

$eNo = $row ['eNo'];

$oNo = $row ['oNo'];

}

print<<<HERE

<form method="post" action=$f>

<table>

<tr>

<td>Имя: </td>

<td><input type="text" name="eName" value="$eName" maxlength="30"></td>

</tr>

<tr>

<td>Зарплата: </td>

<td><input type="text" name="eSalary" value="$eSalary" maxlength="16"></td>

</tr>

<tr>

<td>Объект: </td>

<td><select size="1" name="oNo">

<option value="" selected="selected">не указан</option>

HERE;

if (! empty ($oAddress))

echo '<option value='. $oNo. ' selected="selected">'. $oAddress. '</option>';

require ("connect. php");

$sql = "SELECT oNo, oAddress from object where oState='не сдан' && eNo is null ";

$result = mysqli_query ($link,$sql);

while ($row = mysqli_fetch_assoc ($result))

{

$oAddress = $row ['oAddress'];

$oNo = $row ['oNo'];

echo '<option value='. $oNo. '>'. $oAddress. '</option>';

}

print<<<HERE

</select>

</td>

</tr>

<tr>

<td colspan="2"><a href="? f=showDeleteManager&id=$eNo"> [удалить управляющего] </a></td>

<tr>

<tr>

<td colspan="2" align="center"><input type="submit" value="Сохранить" id="button"></td>

</tr>

</table>

</form>

HERE;

}

}

// вывод формы удаления управляющего

public function showDeleteManager ()

{

echo '<div id="header">Удаление управляющего</div>';

if (isset ($_GET ['id'])) $id = $_GET ['id'];

else

{

showMessage ("Неверный вызов фунцкции","Незадан параметр функции");

return;

}

deleteManager ($id);

}

// вывод формы отчетов

public function showReports ()

{

echo '<div id="header">Все отчеты</div>';

echo "<br>". "<br>";

echo '<a href="? f=showReportInvesting">Отчет по инвестициям</a>'. '<br>'. '<br>';

echo '<a href="? f=showReportInvestor">Отчет по инвесторам</a>'. '<br>'. '<br>';

echo '<a href="? f=showReportDate">Отчет по времени сдачи</a>'. '<br>'. '<br>';

echo '<a href="? f=showReportManager">Отчет по управляющим</a>'. '<br>'. '<br>';

echo '<a href="? f=showReportDelivery">Отчет по поставкам</a>'. '<br>'. '<br>';

}

// отчет по инвестициям

public function showReportInvesting ()

{

echo '<div id="header">Отчет по инвестициям</div>';

print<<<HERE

<table>

HERE;

require ("connect. php");

$sql = "SELECT oNo, oAddress, oFloreys, oState, oCost, concat (quarter (oDate),' кв. ', year (oDate)) oDate from object";

$result = mysqli_query ($link,$sql);

while ($row = mysqli_fetch_assoc ($result))

{

$oAddress = $row ['oAddress'];

$oFloreys = $row ['oFloreys'];

$oState = $row ['oState'];

$oDate = $row ['oDate'];

$oNo = $row ['oNo'];

$oCost = $row ['oCost'];

$summa = 0;

print<<<HERE

<tr>

<th colspan="3" style="font-size: 14px; ">$oAddress, $oFloreys этажей, $oState, Срок сдачи: $oDate, Стоимость кв. м: $oCost</th>

</tr>

<tr align="right">

<th>Код</th><th>Имя</th><th>Сумма</th>

</tr>

HERE;

require ("connect. php");

$sql2 = "SELECT client. iNo, client. iName, sum from investing, client where investing. oNo=$oNo && investing. iNo=client. iNo";

$result2 = mysqli_query ($link,$sql2);

while ($row2 = mysqli_fetch_assoc ($result2))

{

$iNo = $row2 ['iNo'];

$iName = $row2 ['iName'];

$sum = $row2 ['sum'];

$summa += $sum;

print<<<HERE

<tr align="right">

<td>$iNo</td><td>$iName</td><td>$sum</td>

<tr>

HERE;

}

print<<<HERE

<tr align="right">

<th colspan="3">Общая сумма инвестиций: $summa</th>

</tr>

<tr>

<td colspan="3"><hr></td>

</tr>

<tr>

<td>&nbsp; </td>

</tr>

HERE;

}

print<<<HERE

</table>

HERE;

}

// отчет по инвесторам

public function showReportInvestor ()

{

echo '<div id="header">Отчет по инвесторам</div>';

print<<<HERE

<table>

HERE;

require ("connect. php");

$sql = "SELECT iNo, iName from client where iPost='Investor'";

$result = mysqli_query ($link,$sql);

while ($row = mysqli_fetch_assoc ($result))

{

$iNo = $row ['iNo'];

$iName = $row ['iName'];

$summa = 0;

print<<<HERE

<tr>

<th colspan="5" style="font-size: 14px; ">$iNo, $iName</th>

</tr>

<tr align="right">

<th>Адрес</th><th>Этажей</th><th>Готовность</th><th>Срок сдачи</th><th>Инвестирование</th>

</tr>

HERE;

require ("connect. php");

$sql2 = "SELECT oAddress, oFloreys, oState, sum, concat (quarter (oDate),' кв. ', year (oDate)) oDate from object, investing, client where investing. iNo=client. iNo && object. oNo=investing. oNo && client. iNo=$iNo";

$result2 = mysqli_query ($link,$sql2);

while ($row2 = mysqli_fetch_assoc ($result2))

{

$oAddress = $row2 ['oAddress'];

$oFloreys = $row2 ['oFloreys'];

$oState = $row2 ['oState'];

$oDate = $row2 ['oDate'];

$sum = $row2 ['sum'];

$summa += $sum;

print<<<HERE

<tr align="right">

<td>$oAddress</td><td>$oFloreys</td><td>$oState</td><td>$oDate</td><td>$sum</td>

<tr>

HERE;

}

print<<<HERE

<tr align="right">

<th colspan="5">Общая сумма инвестиций: $summa</th>

</tr>

<tr>

<td colspan="5"><hr></td>

</tr>

<tr>

<td>&nbsp; </td>

</tr>

HERE;

}

print<<<HERE

</table>

HERE;

}

// отчет по времени сдачи

public function showReportDate ()

{

echo '<div id="header">Отчет по времени сдачи</div>';

print<<<HERE

<table>

HERE;

require ("connect. php");

$sql = "SELECT distinct year (oDate) oDate from object order by oDate";

$result = mysqli_query ($link,$sql);

while ($row = mysqli_fetch_assoc ($result))

{

$oDate = $row ['oDate'];

$summa = 0;

print<<<HERE

<tr>

<th colspan="5" style="font-size: 14px; ">$oDate год</th>

</tr>

<tr align="right">

<th>Адрес</th><th>Этажей</th><th>Готовность</th><th>Срок сдачи</th><th>Стоимость кв. м</th>

</tr>

HERE;

require ("connect. php");

$sql2 = "SELECT oAddress, oFloreys, oState, oCost, oDate date, concat (quarter (oDate),' кв. ', year (oDate)) oDate from object where year (oDate) =$oDate";

$result2 = mysqli_query ($link,$sql2);

while ($row2 = mysqli_fetch_assoc ($result2))

{

$oAddress = $row2 ['oAddress'];

$oFloreys = $row2 ['oFloreys'];

$oState = $row2 ['oState'];

$oDate = $row2 ['oDate'];

$oCost = $row2 ['oCost'];

$summa += 1;

print<<<HERE

<tr align="right">

<td>$oAddress</td><td>$oFloreys</td><td>$oState</td><td>$oDate</td><td>$oCost</td>

<tr>

HERE;

}

print<<<HERE

<tr align="right">

<th colspan="5">Количество объектов в этом году: $summa</th>

</tr>

<tr>

<td colspan="5"><hr></td>

</tr>

<tr>

<td>&nbsp; </td>

</tr>

HERE;

}

print<<<HERE

</table>

HERE;

}

// отчет по управляющим

public function showReportManager ()

{

echo '<div id="header">Отчет по управляющим</div>';

print<<<HERE

<table>

HERE;

require ("connect. php");

$sql = "SELECT eNo, eName, eSalary from employee where ePost='Manager'";

$result = mysqli_query ($link,$sql);

while ($row = mysqli_fetch_assoc ($result))

{

$eNo = $row ['eNo'];

$eName = $row ['eName'];

$eSalary = $row ['eSalary'];

$summa = 0;

print<<<HERE

<tr>

<th colspan="5" style="font-size: 14px; ">$eNo, $eName, Зарплата: $eSalary</th>

</tr>

<tr align="right">

<th>Адрес</th><th>Этажей</th><th>Готовность</th><th>Срок сдачи</th><th>Стоимость кв. м</th>

</tr>

HERE;

require ("connect. php");

$sql2 = "SELECT oAddress, oFloreys, oState, oCost, concat (quarter (oDate),' кв. ', year (oDate)) oDate from object where eNo=$eNo";

$result2 = mysqli_query ($link,$sql2);

while ($row2 = mysqli_fetch_assoc ($result2))

{

$oAddress = $row2 ['oAddress'];

$oFloreys = $row2 ['oFloreys'];

$oState = $row2 ['oState'];

$oDate = $row2 ['oDate'];

$oCost = $row2 ['oCost'];

$summa += 1;

print<<<HERE

<tr align="right">

<td>$oAddress</td><td>$oFloreys</td><td>$oState</td><td>$oDate</td><td>$oCost</td>

<tr>

HERE;

}

print<<<HERE

<tr align="right">

<th colspan="5">Число объектов: $summa</th>

</tr>

<tr>

<td colspan="5"><hr></td>

</tr>

<tr>

<td>&nbsp; </td>

</tr>

HERE;

}

print<<<HERE

</table>

HERE;

}

// отчет по поставкам

public function showReportDelivery ()

{

echo '<div id="header">Отчет по поставкам</div>';

print<<<HERE

<table>

HERE;

require ("connect. php");

$sql = "SELECT oNo, oAddress, oFloreys, oState, oCost, concat (quarter (oDate),' кв. ', year (oDate)) oDate from object";

$result = mysqli_query ($link,$sql);

while ($row = mysqli_fetch_assoc ($result))

{

$oAddress = $row ['oAddress'];

$oFloreys = $row ['oFloreys'];

$oState = $row ['oState'];

$oDate = $row ['oDate'];

$oNo = $row ['oNo'];

$oCost = $row ['oCost'];

$summa = 0;

print<<<HERE

<tr>

<th colspan="5" style="font-size: 14px; ">$oAddress, $oFloreys этажей, $oState, Срок сдачи: $oDate, Стоимость кв. м: $oCost</th>

</tr>

<tr align="right">

<th>Код</th><th>Название</th><th>Стоимость</th><th>Количество</th><th>Сумма</th>

</tr>

HERE;

require ("connect. php");

$sql2 = "SELECT material. mNo, mName, mCost, count, (mCost*count) sum from material, delivery where delivery. oNo=$oNo && delivery. mNo=material. mNo";

$result2 = mysqli_query ($link,$sql2);

while ($row2 = mysqli_fetch_assoc ($result2))

{

$mNo = $row2 ['mNo'];

$mName = $row2 ['mName'];

$mCost = $row2 ['mCost'];

$count = $row2 ['count'];

$sum = $row2 ['sum'];

$summa += $sum;

print<<<HERE

<tr align="right">

<td>$mNo</td><td>$mName</td><td>$mCost</td><td>$count</td><td>$sum</td>

<tr>

HERE;

}

print<<<HERE

<tr align="right">

<th colspan="5">Общая стоимость поставки: $summa</th>

</tr>

<tr>

<td colspan="5"><hr></td>

</tr>

<tr>

<td>&nbsp; </td>

</tr>

HERE;

}

print<<<HERE

</table>

HERE;

}

}

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


Подобные документы

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

    дипломная работа [4,5 M], добавлен 09.03.2010

  • Изучение деятельности компании "Питер-Лада". Структура управления сети автосалонов. Унифицированный язык моделирования UML. Проектирование логической модели базы данных. Средства, используемые для построения системы учета. Расчёт эффективности инвестиций.

    дипломная работа [1,7 M], добавлен 05.06.2011

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

    курсовая работа [1,2 M], добавлен 26.05.2015

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

    дипломная работа [5,6 M], добавлен 29.06.2011

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

    дипломная работа [1,6 M], добавлен 22.03.2017

  • Создание информационной системы для автоматизации деятельности компании по регистрации доставки грузов транспортной компании. Анализ предметной области. Методология функционального моделирования IDEF0. Контекстная диаграмма. Стоимостный анализ в BPwin.

    контрольная работа [222,5 K], добавлен 05.02.2014

  • Понятие базы данных, модели данных. Классификация баз данных. Системы управления базами данных. Этапы, подходы к проектированию базы данных. Разработка базы данных, которая позволит автоматизировать ведение документации, необходимой для деятельности ДЮСШ.

    курсовая работа [1,7 M], добавлен 04.06.2015

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

    курсовая работа [2,8 M], добавлен 11.05.2014

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

    курсовая работа [4,6 M], добавлен 07.02.2016

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

    дипломная работа [3,0 M], добавлен 19.09.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.