ПЗ Шандова (1231575), страница 3
Текст из файла (страница 3)
PHP (название является рекурсивным акронимом – PHP: Hypertext Preprocessor) – наиболее удобный язык. Он обладает автоматической сборкой мусора, динамической типизацией, что существенно повышает скорость разработки, стабильность приложения и почти лишает необходимости в использовании отладчика. К тому же использование интерпретатора не требует времени на компиляцию кода, что также уменьшает сроки разработки. Синтаксис располагает конструкциями объектно-ориентированного программирования. Однако серьезным недостатком PHP является скорость выполнения кода. Эта проблема свойственна всем интерпретируемым языкам программирования и исходит из самой природы интерпретатора.
Java — объектно-ориентированный язык программирования, разработанный компанией Sun Microsystems (в последующем приобретённой компанией Oracle). Приложения Java обычно транслируются в специальный байт-код, поэтому они могут работать на любой виртуальной Java-машине вне зависимости от компьютерной архитектуры. Дата официального выпуска — 23 мая 1995 года.[14]
Достоинством языка является то, что при выполнении программ осуществляется полная независимость байт-кода от операционной системы и оборудования, что позволяет выполнять Java-приложения на любом устройстве, для которого существует соответствующая виртуальная машина. Другой важной особенностью технологии Java является гибкая система безопасности, в рамках которой исполнение программы полностью контролируется виртуальной машиной. Любые операции, которые превышают установленные полномочия программы (например, попытка несанкционированного доступа к данным или соединения с другим компьютером), вызывают немедленное прерывание.
Часто к недостаткам концепции виртуальной машины относят снижение производительности. Ряд усовершенствований несколько увеличил скорость выполнения программ на Java.
C++ – тоже язык высокого уровня, предназначенный для объектно-ориентированного программирования [12]. Был разработан Бьерном Страуструпом в 1983 году, после чего получил широкое распространение. Является многоцелевым, лаконичным и очень популярным языком программирования (ЯП). Обладает статической типизацией, средствами метапрограммирования и высоким быстродействием. Имеет множество недостатков, среди которых существенными оказываются относительно низкий уровень выразительности и необходимость в ручной работе с памятью. Первый увеличивает сроки разработки, второй способствует частому возникновению ошибок времени выполнения, наиболее опасные из которых – утечка памяти и переполнение буфера. Такой дизайн языка перекладывает решение многих проблем на программиста, вследствие чего код на C++ требует тщательной отладки, что неминуемо снижает скорость разработки [13].
Выбор сделан в пользу языка C++, так как, несмотря на все достоинства PHP и Java, скорость исполнения последнего не отвечает первоочередным требованиям к конечному продукту. А интерпретатор PHP не в состоянии обеспечить приемлемую производительность.
2 ПРОЕКТИРОВАНИЕ системы
Для создания системы учета и работы с данными, прежде всего необходимо представить эти данные в удобной форме.
2.1 Создание базы данных
2.1.1 Нормальные формы
Одним из основополагающих принципов проектирования данных является принцип нормализации, позволяющей существенно сократить объем хранимой информации и устраняющей аномалии в организации хранения данных. Степень нормализации данных может быть различной [15].
Модель данных находится в первой нормальной форме, если все его атрибуты атомарны, то есть если ни один из его атрибуов нельзя разделить на более простые атрибуты, которые соответствуют каким-то другим свойствам описываемой сущности.
Модель данных находится во второй нормальной форме тогда и только тогда, когда она находится в первой нормальной форме и каждый его неключевой атрибут неприводимо зависим от первичного ключа.
Модель данных находится в третьей нормальной форме тогда и только тогда, когда она находится во второй нормальной форме, и отсутствуют транзитивные функциональные зависимости неключевых атрибутов от ключевых.
2.1.2 Список данных:
Список данных для создания системы:
– данные о заказе:
а) № заказа;
б) дата приема заявки;
в) комментарий;
г) выполнено/ не выполнено;
– данные о заказчике:
а) название организации заказчика;
б) имя представителя;
в) контактные данные;
г) комментарии;
д) номер счета;
е) физическое/юридическое лицо;
ж) банк заказчика;
– данные об оплате:
а) сумма заказа;
б) дата заказа;
в) сумма по факту;
г) дата по факту;
д) способ оплаты;
– продукция:
а) тип продукта;
б) количество;
в) комментарий;
– партии продуктов:
а) количество;
б) дата;
в) получено по факту;
г) сумма по факту;
д) продукт;
– расходы:
а) название расхода;
б) тип расхода;
в) дата;
г) сумма;
д) сумма оплаты;
2.1.3 Структура базы данных
Для начала следует выделить данные, которые будут использоваться в системе и объединить их в таблицы с учетом нормальных форм. Структура базы данных, отвечающая требованиям первой, второй и третьей нормальных форм будет выглядеть следующим образом:
В первую очередь необходим учет всех заказов на предприятии. Структура таблицы «Заказы» отражена в таблице 2.1.
Таблица 2.1 – Заказы
| Наименование поля | Тип |
| № заказа | UNSIGNED INT |
| Дата приема заявки | DATE |
| Комментарий | VARCHAR(300) |
| Выполнено/ не выполнено | BOOL |
| ID оплаты | UNSIGNED INT |
| ID заказчика | UNSIGNED INT |
Далее необходимо учесть данные о заказчике. Структура данных «Заказчик» отражена в таблице 2.2.
Таблица 2.2 – Заказчик
| Наименование поля | Тип |
| ID заказчика | UNSIGNED INT |
| Название предприятия | VARCHAR(80) |
| Имя представителя | VARCHAR(80) |
| Контакты | VARCHAR(100) |
| Комментарии | VARCHAR(300) |
| Банк заказчика | VARCHAR(100) |
Продолжение таблицы 2.2
| Номер счета | VARCHAR(120) |
| Физическое/юридическое лицо | VARCHAR(20) |
| ID ФИО | UNSIGNED INT |
| ID телефона | UNSIGNED INT |
Также должна быть отображена таблица «Оплата». Ее структура отражена в таблице 2.3.
Таблица 2.3 – Оплата
| Наименование поля | Тип |
| ID оплаты | UNSIGNED INT |
| Дата оплаты | DATE |
| Сумма оплаты по факту | FLOAT |
| Сумма заказа | FLOAT |
| Дата оплаты по факту | DATE |
| Способ оплаты | VARCHAR(20) |
Имена представителей организаций заказчиков хранятся в таблице «Имя представителя». Ее структура отражена в таблице 2.4.
Таблица 2.4 – Имя представителя
| Наименование поля | Тип |
| ID ФИО | UNSIGNED INT |
| Имя | VARCHAR(100) |
| Отчество | VARCHAR(100) |
| Фамилия | VARCHAR(100) |
Для учета заказов, оплата и выдача которых осуществляется частями и в установленные сроки, создана таблица «Партия». Ее структура отражена в таблице 2.5.
Таблица 2.5 – Партия
| Наименование поля | Тип |
| ID партии | UNSIGNED INT |
| Количество | UNSIGNED INT |
| Дата | DATE |
| Получено по факту | UNSIGNED INT |
| Сумма по факту | FLOAT |
| Продукт | VARCHAR(100) |
| ID продукта | UNSIGNED INT |
Таблица «Продукты» будет содержать поля для описания продукции. Ее структура отражена в таблице 2.6.
Таблица 2.6 – Продукты
| Наименование поля | Тип |
| ID продукта | UNSIGNED INT |
| Тип продукта | VARCHAR(50) |
| Количество | UNSIGNED INT |
| Комментарий | VARCHAR(300) |
| № заказа | UNSIGNED INT |
| ID тип | UNSIGNED INT |
Таблица «Телефон» отражена в таблице 2.7.
Таблица 2.7 – Телефон
| Наименование поля | Тип |
| ID телефона | UNSIGNED INT |
| Номер | UNSIGNED INT |
| Тип телефона | VARCHAR(10) |
| ID тип | UNSIGNED INT |
В таблицах «Расход» и «Статья расходов» находятся данные о расходах. Их описание представлено в таблице 2.8 и в таблице 2.9 соответственно
Таблица 2.8 – Расход
| Наименование поля | Тип |
| ID расход | UNSIGNED INT |
| Сумма | FLOAT |
| Дата | DATE |
| Сумма оплаты | FLOAT |
Таблица 2.9 – Статья расходов
| Наименование поля | Тип |
| ID статьи расхода | UNSIGNED INT |
| Название | VARCHAR(160) |
| Тип | VARCHAR(60) |
| ID расход | UNSIGNED INT |
В таблицах «Тип телефона», «Тип продукта» и «Тип статьи расходов» будут храниться типы соответствующих наименований. Их описание представлено в таблице 2.10, таблице 2.11 и таблице 2.12.
Таблица 2.10 – Тип телефона
| Наименование поля | Тип |
| ID | UNSIGNED INT |
| Наименование | VARCHAR(50) |
| Дата | TIMESTAMP |
| Контрагент | UNSIGNED INT |
| Номенклатура | UNSIGNED INT |
В таблице «Тип продукта» будет храниться информация о клиентах и партнерах предприятия (таблица 2.11).
Таблица 2.11 – Тип продукта
| Наименование поля | Тип |
| ID | UNSIGNED INT |
| Наименование | VARCHAR(160) |
| Руководитель | VARCHAR(60) |
| Адрес | VARCHAR(80) |
| Телефон | VARCHAR(12) |
| ИНН | VARCHAR(12) |
| КПП | VARCHAR(9) |
| Банковский счет | UNSIGNED INT |
Список товаров будет храниться в таблице «Тип статьи» (таблица 2.12).
Таблица 2.12 – Тип статьи
| Наименование поля | Тип |
| ID | UNSIGNED INT |
| Наименование | VARCHAR(45) |
| Количество | INT |
| Единица измерения | VARCHAR(10) |
| Цена за единицу | FLOAT |
| Общая стоимость | FLOAT |
На рисунке 2.1 отображена структура базы данных со связями всех таблиц.















