Файл: 1. 1 Техникоэкономическая характеристика предметной области и предприятия 5.doc

ВУЗ: Не указан

Категория: Реферат

Дисциплина: Не указана

Добавлен: 03.12.2023

Просмотров: 127

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.


Рисунок 23 - Структурная схема системы
Благодаря президенту Microsoft Б.Гейтсу, Basic стал первым языком программирования для персональных компьютеров. Язык приобрел огромную популярность во всем мире в силу своей простоты и ориентации на диалоговый режим. Разработан стандарт минимального подмножества языка Basic, утвержденный в 1976 г. Сегодня наибольшее распространение получил Visual Basic, и в первую очередь Visual Basic for Applications (VBA), обслуживающий все приложения Microsoft Office.

Как и все языки высокого уровня, Basic строится в соответствии с концепцией процедурного программирования. Процедурный подход основан на алгоритмической декомпозиции решаемой проблемы и реализуется посредством решения очевидных формализуемых задач. Правило «разделяй и властвуй» ориентирует на представление проблемы набором самостоятельных блоков данных. процедур таким образом, чтобы, выполнив каждую из них, можно было прийти к решению всей проблемы. «Благодаря процедурам, лучше прослеживается структура больших и сложных программ; они обеспечивают логическую сегментацию всей задачи и облегчают отладку», утверждает автор «Искусства программирования» Д.Кнут.

Текст программного кода на языке VBA приведен в Приложении.

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

  • идентификация сущностей и их атрибутов;

  • идентификация отношений между сущностями и указания типов отношений;

  • разрешения не специфических видов отношений.

ER-модель принято отображать с помощью графического образа – ER-диаграммы.

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

Основными сущностями являются: «Договоры клиентов по товарам», «Товар», «Цены», «Договоры клиентов по ценам», «Товары по ценам», «Оплаты по договорам», «Договоры клиентов», «Клиенты». Для связывания сущностей Цены и Клиенты используется сущность «Договоры клиентов по ценам»; «Договоры клиентов» и «Товар» – сущность «Товары по ценам» и «Оплаты по договорам». Для связывания сущностей используется связь «многие-к-одному», которая является основным видом связи при построении ER-диаграммы. На рисунке отражены сущности и связи между ними.




Рисунок - Сущности и их связи ИС товарах и клиентах
Для построения ER-диаграммы также необходимо выделить атрибуты сущностей и подтипы сущностей.

С помощью пакета AllFusion Erwin DataModeler by CA сделана модель базы данных, которая приведена на рис. Модель отражает таблицы, формы и запросы, созданные в БД.
.

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

Проверка качества сущностей:

  • Имена сущностей – существительное в единственном числе или записаны компактным словосочетанием.

  • Смысл каждой сущности отражен в ее имени.

  • Описание сущности является достаточно кратким и смысловым.

  • Сущности не являются разновидностью другой сущности с упущенной рекурсивной связью.

  • Каждая сущность согласуется с принципами нормализации отношений.

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

  • Ключ сущности действительно минимален.

Проверка атрибутов:

  • Имя атрибутов – существительное в единственном числе.

  • Смысл атрибута отражен в его имени.

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

  • Атрибуты не представляют упущенную связь.

  • Атрибуты не являются агрегатами других данных.

  • Значение обязательного атрибута всегда известно.

Проверка связей:

Связи действительно необходимы.

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

После проверки качества ER –модели можно перейти к разработке структуры базы данных.
2.3.4 Описание программных модулей
Созданная система состоит из файла БД с названием technolayt.mdb и файла формата Microsoft Word с названием договор.doc.

Программные модули определяются следующими формами: Form_Выходная информация, Form_Кнопочная форма, Form_Нормативно-справочная информация, Form_Оперативная информация, Form_Форма Договоры клиентов по ценам, Form_ Форма Договоры клиентов по товарам.

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



With Me.[Текст договора]

.Class = "Word.Document"

.SourceDoc = Application.CurrentProject.Path & "\договор.doc"

.Action = acOLECreateEmbed

End With

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

1. Запрос для определения количества договоров, заключенных каждым клиентом

SELECT Клиенты.[Название клиента], Count(*) AS [Количество договоров]

FROM Клиенты INNER JOIN [Договоры клиентов] ON Клиенты.[Код клиента] = [Договоры клиентов].[Код клиента]

GROUP BY Клиенты.[Название клиента];

В данном запросе используется агрегирующая функция Count(*) и соответственно конструкция GROUP BY.

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

SELECT Товар, count(*)

FROM [SELECT Товары.Товар

FROM (Товары INNER JOIN [Товары по ценам] ON Товары.[Код товара] = [Товары по ценам].[Код товара]) INNER JOIN [Договоры клиентов по ценам] ON [Товары по ценам].[Код цены] = [Договоры клиентов по ценам].[Код цены]

UNION ALL SELECT Товары.Товар

FROM Товары INNER JOIN [Договоры клиентов по товарам] ON Товары.[Код товара]=[Договоры клиентов по товарам].[Код товара]]. AS [%$##@_Alias]

GROUP BY Товар;

Запрос содержит вложенную конструкцию (SELECT …FROM [SELECT …]), в которой имеется конструкция UNION ALL для объединения двух подзапросов. Запрос также содержит агрегирующую функцию count(*) и соответственно конструкцию GROUP BY по виду услуги.

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

SELECT Клиенты.[Название клиента], [Оплаты по договорам].[Код договора], Sum([Оплаты по договорам].[Сумма оплаты]) AS [Сумма оплаты]

FROM Клиенты INNER JOIN ([Договоры клиентов] INNER JOIN [Оплаты по договорам] ON [Договоры клиентов].[Код договора]=[Оплаты по договорам].[Код договора]) ON Клиенты.[Код клиента]=[Договоры клиентов].[Код клиента]

WHERE [Оплаты по договорам].[дата оплаты] Between Forms![Выходная информация]![дата начала] And Forms![Выходная информация]![дата окончания]

GROUP BY Клиенты.[Название клиента], [Оплаты по договорам].[Код договора];

В данном запросе используются два параметра: дата начала и окончания запрашиваемого периода. Кроме того, запрос содержит агрегирующую функцию Sum и соответственно конструкцию GROUP BY.


4. Запрос для определения сумм денежных средств по ценам

SELECT [Цены].[Код цены], [Цена].[Цена], sum(Товар.[Стоимость товара]) AS [Стоимость товара]

FROM Товары INNER JOIN ([Цена] INNER JOIN [Товары по ценам] ON [Цены].[Код цены]=[Товары по ценам].[Код цены]) ON Товары.[Код товара]=[Товары по ценам].[Код товара]

GROUP BY [Цены].[Код цены], [Цены].[Цены];

Запрос содержит агрегирующую функцию sum.

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

SELECT Клиенты.[Название клиента], 'Сумма по ценам' AS [Сумма по ценам], sum(Товары.[Стоимость товара]) AS Сумма

FROM (Клиенты INNER JOIN ([Договоры клиентов] INNER JOIN [Договоры клиентов по ценам] ON [Договоры клиентов].[Код договора] = [Договоры клиентов по ценам].[Код договора]) ON Клиенты.[Код клиента] = [Договоры клиентов].[Код клиента]) INNER JOIN (Товары INNER JOIN [Товары по услугам] ON Товары.[Код товара] = [Товары по ценам].[Код товара]) ON [Договоры клиентов по ценам].[Код цены] = [Товары по ценам].[Код цены]

GROUP BY Клиенты.[Название клиента], 'Сумма по ценам'

UNION ALL SELECT Клиенты.[Название клиента], 'Сумма по товарам' AS [Сумма по товарам], sum (Товары.[Стоимость товара]) AS Сумма

FROM Клиенты INNER JOIN (Товары INNER JOIN ([Договоры клиентов] INNER JOIN [Договоры клиентов по товарам] ON [Договоры клиентов].[Код договора] = [Договоры клиентов по товарам].[Код договора]) ON Товары.[Код товара] = [Договоры клиентов по товарам].[Код товара]) ON Клиенты.[Код клиента] = [Договоры клиентов].[Код клиента]

GROUP BY Клиенты.[Название клиента], 'Сумма по товарам';

Запрос содержит конструкцию UNION ALL и является перекрестным. Каждый из подзапросов содержит агрегирующую функцию Sum и соответственно конструкцию GROUP BY по названию клиента и виду договора.

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

SELECT Товары.Товары

FROM Товары

WHERE (((Товары.[Код товара]) not In (select [Договоры клиентов по товарам].[Код товара] from [Договоры клиентов по товарам])

and (Товары.[Код товара]) not In (select [Товары по ценам].[Код товара]

FROM [Товары по ценам] INNER JOIN [Договоры клиентов по ценам] ON [Товары по ценам].[Код цены] = [Договоры клиентов по ценам].[Код цены])));

Запрос содержит две конструкции not In (select …) для определения тех товаров, которых нет ни в одном из типе договоров.

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

SELECT day([Оплаты по договорам].[дата оплаты]) AS день, month([Оплаты по договорам].[дата оплаты]) AS месяц, year([Оплаты по договорам].[дата оплаты]) AS год, Sum([Оплаты по договорам].[Сумма оплаты]) AS [Сумма оплаты]


FROM [Оплаты по договорам]

WHERE [Оплаты по договорам].[дата оплаты] Between Forms![Выходная информация]![дата начала] And Forms![Выходная информация]![дата окончания]

GROUP BY day([Оплаты по договорам].[дата оплаты]), month([Оплаты по договорам].[дата оплаты]), year([Оплаты по договорам].[дата оплаты]);

Запрос содержит агрегирующую функцию sum. В данном запросе применены функции day, month, year для получения соответствующих частей поля таблицы, содержащего дату и время.

При загрузке БД пользователь должен ввести пароль. Если пароль введен верно, то на экране появится форма, показанная на рис. 25. Для созданной БД паролем является 123.



Рисунок 25 - Главная кнопочная форма
Для ввода и изменения нормативно-справочной информации нужно выбрать кнопку «Нормативно-справочная информация», при этом появится форма, на рис. 26.


Рисунок 26 - Форма «Нормативно-справочная информация»

Для работы с товарами, предоставляемыми пользователям, необходимо нажать кнопку «Товары», при этом пользователь увидит форму, которая показана на рис. 27. Внизу находятся кнопки для перехода по записям.



Рисунок 27 - Форма «Товары»

Для работы с тарифными планами, предоставляемыми пользователям, необходимо нажать кнопку «Цены», при этом пользователь увидит форму, которая показана на рис. 28. Внизу находятся кнопки для перехода по записям.



Рисунок 28 - Форма «Цены»

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



Рисунок 29 - Форма «Товары по ценам»

Для работы с перечнем клиентов предприятия необходимо использовать кнопку «Клиенты», при этом пользователь увидит форму, которая показана на рис. 30. Внизу находятся кнопки для перехода по записям.