Создание базы данных магазина мобильных телефонов

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    6,01 Мб
  • Опубликовано:
    2012-08-10
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Создание базы данных магазина мобильных телефонов

 

 

 

 

 

 

 

 

 

 

 

 

Создание базы данных магазина мобильных телефонов

 

ВВЕДЕНИЕ

база данных учет

В настоящее время все труднее встретить человека, не имеющего мобильного телефона. В 21 веке развитие мобильной связи достигло огромных размеров. На 97 % территории Украины доступна мобильная связь. Последние 10-15 лет рынок мобильных телефонов развивается очень стремительно, потому что мобильной связью пользуются люди всех возрастов: от школьников до пенсионеров. Жизнь в современном мире диктует свои правила, и необходимость иметь мобильный телефон ни у кого не вызывает сомнений. Сотовые телефоны предоставляют мобильность связи, актуальность полученной информации. Благодаря этому полезному устройству появляется возможность всегда быть в курсе событий, находиться рядом с близкими для Вас людьми, увеличить успешность трудовой деятельности. Кроме того, новинки мобильных телефонов способны предоставить большое количество развлекательного контента. Разнообразные полезные приложения, игры, просмотр видео и прослушивание аудио записей не дадут заскучать в дороге и помогут скрасить досуг.

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

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

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

В качестве СУБД для курсового проектирования была выбрана реляционная локальная файл-серверная СУБД Microsoft Access 2010.

1. ОПИСАНИЕ ФУНКЦИОНИРОВАНИЯ МАГАЗИНА МОБИЛЬНЫХ ТЕЛЕФОНОВ


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

Например, потенциальный клиент Семён Петрович пришел в магазин «Звонилочка» чтобы посмотреть телефон Apple iPhone 4S и уточнить его характеристики. Менеджер Артем Тесленко сказал, что это смартфон на платформе iOS 5, который имеет сенсорный экран с поддержкой мультитач. Разрешение экрана 640x960px. Камера 8 МП, вес: 140 г, ШхВхТ: 58.6x115.2x9.3 мм. Цена этого смартфона 9000 грн.

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

Например, Клиент Дмитрий Волков определился с покупкой и попросил её оформить. Менеджер Мироненко Юлия создала новую запись в базе с номером 18547 и спросила у господина Волкова, не хочет ли он стать участником дисконтной программы. Дмитрий согласился и предоставил Юлии своё ФИО, адрес и телефон. Так как это его первая покупка, то он получил скидку 3%.

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

Например, в магазине закончились мобильные телефоны Samsung Galaxy Gio. Менеджер связывается с поставщиками, заказывает 10 новых SG Gio по цене 1100 грн. за штуку. Сделав наценку 35%, на витрину эти телефоны попадут по цене 1485 грн.

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

2. ПОСТАНОВКА ЗАДАЧИ


2.1 Общие определения


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

-       информация о продаваемых моделях телефонов;

-       информация о сотрудниках, работающих в магазине;

-       информация обо всех совершенных продажах;

-       информация о клиентах (ФИО, адрес, контактный телефон);

-       информация о поставщиках и поставках.

2.2 Цель и задачи разработки


Целью данного курсового проекта является создание базы данных «Магазин мобильных телефонов» в СУБД Microsoft Access.

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

2.3 Постановка задачи разработки программного продукта


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

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

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

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

-       содержание запросов, отчетов и форм для обработки информации, хранимой в ней;

-       контроль целостности и сохранности данных, а также достоверности хранимой информации.

3. КОНЦЕПТУАЛЬНОЕ ПРОЕКТИРОВАНИЕ СИСТЕМЫ


Концептуальное проектирование системы состоит из двух частей: концептуальное моделирование и представление концептуальной модели в терминах модели данных определенной СУБД.

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

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

-       необходимо понять, какая информация должна храниться и обрабатываться и можно ли это определить как объект;

-       присвоить этому объекту имя;

-       выявить свойства объекта и присвоить им имя;

-       определить уникальный идентификатор объекта.

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

-       то, как экземпляр одного объекта связан с экземпляром другого объекта;

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

Далее необходимо присвоить связям имена и определить тип связей.

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

3.1 Инфологическое моделирование предметной области


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

3.1.1 Построение диаграммы потоков данных

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

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

Рисунок 3.1 - Начальная контекстная диаграмма

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

Таблица 3.1 - Соответствие потоков данных на диаграммах

Потоки на диаграмме верхнего уровня

Потоки на диаграмме нулевого уровня

Информация от клиента

Данные о клиентеё сделать заказ.

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

Получить заказ.

Информация от сотрудника

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

Информация для сотрудника

Ответ на запрос о создании заказа, ответ на запрос о новых телефонах.

Информация от поставщика

Данные о телефоне, данные о поставщике, запрос новых заказов.

Информация для поставщика

Ответ на запрос о новых заказах.


На рисунке 3.2 приведена контекстная диаграмма первого уровня. На приведенной DFD диаграмме накопитель данных «магазин» является глобальным или абстрактным представлением хранилища данных.

Рисунок 3.2 -Контекстная диаграмма первого уровня

.1.2 Построение диаграммы «сущность-связь»

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

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

Диаграммы "сущность-связь" включают:

- сущности;

-       атрибуты;

-       связи.

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

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

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

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

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

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

Телефон имеет свойства: Объем аккумулятора, цвет, % наценки, модель, форм-фактор, тип камеры, операционная система, тип дисплея, характеристики дисплея, тип телефона, размер, вес, срок гарантии.

Телефон изготавливается производителем. Производитель имеет свойства: название и страна. Между телефоном и производителем отношение 1…∞ т.к. один производитель изготавливает множество телефонов.

Телефон продается сотрудником. Сотрудник имеет свойства: ФИО, телефон. Между телефоном и сотрудником отношение ∞…∞ т.к. один сотрудник может продать множество телефонов, а одна модель телефона может быть продана несколькими сотрудниками. Такое отношение также имеет свойства: дата продажи, %скидки, IMEI проданного телефона.

Телефон покупается клиентом. Клиент имеет свойства: ФИО, адрес, телефон. Между телефоном и клиентом отношение ∞…∞, т.к. множество один клиент может купить много телефонов, а одна модель телефона может быть продана разным клиентам.

Сотрудник обслуживает клиента. Между клиентом и сотрудником отношение ∞…∞ т.к. один сотрудник может обслужить множество клиентов, а один клиент может быть обслужен разными сотрудниками.

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

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

Рисунок 3.3 - Схема «Объект-отношение»

3.2 Выбор модели представления данных


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

3.2.1 Иерархическая модель данных

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

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

Достоинства иерархической модели данных:

1) высокое быстродействие;

2) эффективное использование памяти - задачи.

Недостатки иерархической модели:

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

) отсутствует механизм поддержки связи между элементами разных поддеревьев;

) четкая ориентация на определенные типы запросов;

) доступ к данным производится только через корневое отношение от предка к потомку (в одну сторону).

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

Иерархическая модель данных изображена на рисунках 3.4 - 3.7.

Рисунок 3.4 - Первый фрагмент иерархической модели данных

Рисунок 3.5 - Второй фрагмент иерархической модели данных

Рисунок 3.6 - Третий фрагмент иерархической модели данных

Рисунок 3.7 - Четвертый фрагмент иерархической модели данных

3.2.2 Сетевая модель данных

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

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

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

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

Достоинства сетевой модели данных:

)эффективное использование памяти;

) произвольность связей;

) высокое быстродействие.

Недостатки сетевой модели данных:

) сложность доступа к элементам (навигационный принцип доступа);

) сложно отследить смысл такой модели данных.

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

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

Рисунок 3.8 - Сетевая модель данных

.2.3 Реляционная модель данных

Реляционная модель данных (РМД) - логическая <#"552910.files/image009.gif">

Рисунок 3.8 - Реляционная модель данных

3.3 Нормализация таблиц


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

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

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

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

IMEI

модель

форм-фактор

ОС

Цвет

объем аккумулятора

% наценки

Разрешение камеры

Тип дисплея

Характеристики дисплея

Тип телефона

Размер

Вес

Гарантия

Название производителя

Страна произв.

ФИО сотрудника

Телефон сотрудника

Дата продажи

Скидка %

ФИО клиента

Адрес клиента

Телефон клиента

Уровень дисконта %

Дата поставки

Количество шт.

Цена

Название поставщика

Город поставщика

Страна поставщика

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

Телефон поставщика

Рисунок 3.9 - Отношение в первой нормальной форме

Таблица находится во второй нормальной форме (2НФ), если она удовлетворяет определению 1НФ и все ее поля, не входящие в первичный ключ, связаны полной функциональной зависимостью с первичным ключом.

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

Рисунок 3.10 - Диаграмма функциональных зависимостей (2НФ)

Спроектированная БД нормализована до третей нормальной формы (3НФ). Так как, по определению, если БД находится в третьей нормальной форме, то она находится и в первой и во второй нормальных формах.

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

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

Рисунок 3.11 - Диаграмма функциональных зависимостей (3НФ)

4. ПРОГРАММНАЯ РЕАЛИЗАЦИЯ СИСТЕМЫ

4.1 Обоснование выбора СУБД


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

Для реализации этой задачи была выбрана реляционная модель данных.

В качестве СУБД рассматривались несколько вариантов, с которыми был знаком разработчик. Среди них Oracle Database, Microsoft SQL Server и Microsoft Access. Oracle и MS SQL Server были отвергнуты по причине высокой сложности разработки. К тому же разрабатываемый программный продукт не требует всего функционала, предоставляемого данными СУБД.

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

4.2 Описание таблиц


При создании таблиц для БД на основе реляционной модели между ними установлены связи 1…∞. Во всех связях присутствует обеспечение целостности данных. Каскадное удаление обеспечено между таблицами «Сотрудники»-«Продажи», «Телефоны»-«Продажи», «Производители»-«Телефоны», «Поставщики»-«Поставки». Между всеми таблицами обеспечено каскадное обновление данных. Схема данных для разрабатываемой БД представлена на рисунке 4.1.


Справочная таблица «Форм-фактор». (Рисунок 4.2)

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

НазваниеФФ - название форм-фактора, размер 20 символов, тип текстовый, поле обязательное, индексированное без повторений.

Рисунок 4.2 - Справочная таблица «Форм-фактор»

Справочная таблица «ОС». (Рисунок 4.3)

Код - Код ОС, тип счетчик, первичный ключ, содержит уникальные значения без повторений.

НазваниеОС - название форм-фактора, размер 15 символов, тип текстовый, поле обязательное, индексированное без повторений.

Рисунок 4.3 - Справочная таблица «ОС»

Справочная таблица «Тип Дисплея». (Рисунок 4.4)

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

НазваниеТипаДисплея - название типа дисплея, размер 20 символов, тип текстовый, поле обязательное, индексированное без повторений.

Справочная таблица «Тип Телефона». (Рисунок 4.5)

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

НазваниеТипаТелфона - название типа телефона, размер 15 символов, тип текстовый, поле обязательное, индексированное без повторений.

Рисунок 4.4 - Справочная таблица «Тип дисплея»

Рисунок 4.5 - Справочная таблица «Тип Телефона»

Справочная таблица «Страны». (Рисунок 4.6)

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

НазваниеСтраны - название страны, размер 20 символов, тип текстовый, поле обязательное, индексированное без повторений.

Флаг - поле объекта OLE, хранит изображение флага страны, обязательный.

Рисунок 4.6 - Справочная таблица «Страны»

Таблица «Производители». (Рисунок 4.7)

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

НазваниеПроизводителя - название производителя, размер 20 символов, тип текстовый, поле обязательное, индексированное без повторений.

НазваниеСтраны - Код страны, числовое поле, подстановка из таблицы «Страны», связь по полю «КодСтраны», подпись «Страна», отображается поле «НазваниеСтраны» таблицы «Страны».

Логотип - поле объекта OLE, хранит изображение логотипа производителя, обязательный.

Рисунок 4.7 - Таблица «Производители»

Таблица «Сотрудники». (Рисунок 4.8)

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

ФИО - фамилия, имя и отчество сотрудника, размер 60 символов, тип текстовый, поле обязательное, индексированное с повторениями, т.к. у сотрудников могут быть абсолютно одинаковые ФИО.

Телефон - содержит номер телефона сотрудника, тип поля текстовый, для ввода используется маска "+"00\(000\)000\-00\-00;0; обязательное, неиндексированное.

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

Таблица «Клиенты». (Рисунок 4.9)

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

ФИО - фамилия, имя и отчество клиента, размер 60 символов, тип текстовый, поле обязательное, индексированное с повторениями, т.к. у клиентов могут быть абсолютно одинаковые ФИО.

Телефон - содержит номер телефона клиента, тип поля текстовый, для ввода используется маска "+38(0"00\)000\-00\-00;0; не обязательное, неиндексированное.

Адрес - содержит адрес клиента, размер 100 символов, тип текстовый, поле необязательное, не индексированное.

Рисунок 4.9 - Таблица «Клиенты»

Таблица «Поставщики». (Рисунок 4.10)

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

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

ТелефонПоставщика - содержит номер телефона поставщика, тип поля текстовый, для ввода используется маска "+"00\(000\)000\-00\-00;0; обязательное, неиндексированное.

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

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

НазваниеСтраны - Код страны, числовое поле, подстановка из таблицы «Страны», связь по полю «КодСтраны», подпись «Страна», отображается поле «НазваниеСтраны» таблицы «Страны».

Рисунок 4.10 - Таблица «Поставщики»

Таблица «Телефоны». (Рисунок 4.11)

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

Модель - название модели телефона, тип текстовый, размер 30 символов, поле обязательное, индексированное без повторений.

НазваниеПроизводителя - код производителя, числовое поле, подстановка из таблицы «Производители», связь по полю «КодПроизводителя», подпись «Производитель», отображается поле «НазваниеПроизводителя» таблицы «Производители».ФФ - код форм-фактора, числовое поле, подстановка из таблицы «Форм-фактор», связь по полю «КодФормФактора», подпись «Форм-Фактор», отображается поле «НазваниеФФ» таблицы «Форм-Фактор».

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

Цвет - цвет телефона, тип текстовый, размер 15 символов, поле не обязательное, не индексированное.

ТипКамеры - тип камеры телефона, тип текстовый, размер 10 символов, поле не обязательное, не индексированное.

НазваниеОС - код операционной системы, числовое поле, подстановка из таблицы «ОС», связь по полю «КодОС», подпись «ОС», отображается поле «НазваниеОС» таблицы «ОС».

НазваниеТипаДисплея - код типа дисплея, числовое поле, подстановка из таблицы «Тип Дисплея», связь по полю «КодТипаДисплея», подпись «Тип Дисплея», отображается поле «НазваниеТипаДисплея» таблицы «Тип Дисплея».

ХарактеристикиДисплея - содержит различные характеристики дисплея, как разрешение, диагональ и пр., тип текстовый, размер 25 символов, поле не обязательное, не индексированное, маска ввода 000" х "000" рх",\ 0\,0\';0;

НазваниеТипаТелефона - код типа телефона, числовое поле, подстановка из таблицы «Тип Телефона», связь по полю «КодТипаТелефона», подпись «Тип Телефона», отображается поле «НазваниеТипаТелефона» таблицы «Тип Телефона».

Размеры - содержит физические размеры телефона, тип поля текстовый, для ввода используется маска !#99.9" x "#99.9" x "#99.9;0;_ необязательное, неиндексированное.

Вес - вес телефона, тип числовой, размер 3 символа, поле не обязательное, не индексированное.

Рисунок 4.11 - Таблица «Телефоны»

Таблица «Поставки». (Рисунок 4.12)

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

КодПоставщика - код поставщика, числовое поле, подстановка из таблицы «Поставщики», связь по полю «КодПоставщика», подпись «Поставщик», отображается поле «НазваниеПоставщика» таблицы «Поставщики».

КодТелефона - код телефона, числовое поле, подстановка из таблицы «Телефоны», связь по полю «КодТелефона», подпись «Модель», отображается поле «НазваниеТелефона» таблицы «Телефоны».

ДатаПоставки - дата поставки, тип дата/время, имеет краткий формат даты, маска ввода 00.00.0000;0;_ условие на значение <=Now() (т.к. дата не может быть больше текущей), при неверном значении выводится сообщение об ошибке. Количество - количество телефонов в поставке, числовое поле, обязательное, не индексированное, условие на значение >0, при неверном вводе выводится сообщение об ошибке. НомерПоставки - номер поставки, числовое поле, обязательное, индексированное с совпадениями, маска ввода 00000.

Рисунок 4.12 - Таблица «Поставки»

Таблица «Продажи». (Рисунок 4.13)

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

КодТелефона - код телефона, числовое поле, подстановка из таблицы «Телефоны», связь по полю «КодТелефона», подпись «Модель», отображается поле «НазваниеТелефона» таблицы «Телефоны».

ДатаПродажи - дата продажи, тип дата/время, имеет полный формат даты, значение по умолчанию Now(), обязательное поле, индексированное с повторениями.

Скидка - содержит скидку на модель в процентах, тип поля числовой, значение по умолчанию - 0, условие на значение >=0, сообщение об ошибке «Скидка должна быть положительной», обязательное, не индексированное.- серийный номер телефона, тип текстовый, маска ввода !00"-"000000"-"000000"-"09;, обязательное поле, не индексированное.

КодКлиента - код клиента, числовое поле, подстановка из таблицы «Клиенты», связь по полю «КодКлиента», подпись «Клиент», отображается поле «ФИОКлиент» таблицы «Клиенты», обязательное поле, индексированное с повторениями.

КодСотрудника - код сотрудника, числовое поле, подстановка из таблицы «Сотрудники», связь по полю «КодСотрудника», подпись «Продавец», отображается поле «ФИОСотрудника» таблицы «Сотрудники», обязательное поле, индексированное с повторениями.

Сумма - вычисляемлое поле. Сумма покупки с учетом скидки, числовое поле, двойное с плавающей точкой, обязательное, не индексированное, условие на значение >0, при неверном вводе выводится сообщение об ошибке. Формат поля # ##0,00" грн.". Получает значение из формы «Добавить покупку». Рассчитывается по формуле Me.Сумма = Me.цена_Телефоны - (Me.цена_Телефоны * (Me.Скидка / 100)).

Рисунок 4.13 - Таблица «Продажи»

Таблица «users». (Рисунок 4.14)

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

КодСотрудника - код сотрудника, числовое поле, подстановка из таблицы «Сотрудники», связь по полю «КодСотрудника», подпись «Продавец», отображается поле «ФИОСотрудника» таблицы «Сотрудники», обязательное поле, индексированное с повторениями.- имя пользователя, размер 32 символа, тип текстовый, поле обязательное, неиндексированное.- пароль пользователь, размер 32 символа, тип текстовый, поле обязательное, неиндексированное, маска ввода «Пароль».- группа, к которой принадлежит пользователь, тип числовой, размер 1 символ, обязательное, не индексированное.

Рисунок 4.14 - Таблица «users»

4.3 Проектирование пользовательского интерфейса


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

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

4.3.1 Уровни доступа к БД

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

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

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

Остальные элементы интерфейса доступны в полной мере как сотруднику так и администратору БД.

4.3.2 Модель пользовательского интерфейса

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

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

4.4 Описание функционирования приложения


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

Форма «Авторизация» предназначена для авторизации пользователя для доступа к базе данных (администратор, менеджер). Внешний вид формы представлен на рисунке 4.15.

Кнопка «ОК на форме служит для проверки введенного пароля. Пароль храниться на форме в текстовом поле, не доступном для отображения пользователю и сверяется с таблицей “users” при помощи модуля (Приложение В.1). При совпадении пароля с текстовым полем открывается форма «Главное окно», с теми элементами интерфейса, которые соответствуют группе вошедшего пользователя. В случае несовпадения паролей выдается сообщение «Неверный пароль», либо, если пользователь с таким логином не найден в базе, то будет выведено сообщение «Пользователь не найден». При нажатии кнопки «Отмена» происходить закрытие базы данных.

Рисунок 4.14 - Диаграмма последовательности форм

Рисунок 4.15 - Форма «Авторизация»

Форма «Главное окно» предназначена для навигации по всем формам в БД. Внешний вид формы представлен на рисунке 4.16.

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

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

Рисунок 4.16 - Форма «Главное окно»

Кнопка «Новая покупка» позволяет создать запись о покупке без начальной привязки к клиенту (например, если клиент еще не добавлен в базу). При вводе ФИО Клиента, отсутствующего в базе будет предложено создать такую запись.

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

На данной форме расположены такие кнопки:

«Новый клиент» отображает пустые поля для добавления нового клиента.

«Печать» используется для печати списка покупок текущего клиента. Список покупок является простым отчетом. Источник записей для данного отчета: Клиенты.КодКлиента, Клиенты.ФИОКлиента, Клиенты.ТелефонКлиента, Клиенты.АдресКлиента, Продажи.КодНакладной, Продажи.МодельТелфона, Продажи.ДатаПродажи, Продажи.Скидка, Продажи.IMEI, Продажи.ФИОКлиента AS ФИОКлиента_Продажи, Продажи.ФИОСотрудника, Продажи.Сумма FROM Клиенты INNER JOIN Продажи ON Клиенты.КодКлиента = Продажи.ФИОКлиента (((Клиенты.ФИОКлиента)=[Формы]![Клиенты]![ФИОКлиента]));

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

кнопка «Удалить клиента» удаляет всю информацию о клиенте и о его покупках.

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

Рисунок 4.17 - Форма «Клиенты»

«Добавить покупку» используется для добавления записи о покупке текущему клиенту. При нажатии на эту кнопку появляется окно с выбором названия производителя мобильного телефона. Данное окно изображено на рисунке 4.18. Форма добавления покупки изображена на рисунке 4.19. Источник данных для формы добавления покупки:Продажи.*, Телефоны.НазваниеПроизводителя, Телефоны.Модель, Телефоны.цена AS цена_Телефоны, Производители.КодПроизводителя, Производители.НазваниеПроизводителя AS НазваниеПроизводителя_Производители(Производители INNER JOIN Телефоны ON Производители.КодПроизводителя = Телефоны.НазваниеПроизводителя) INNER JOIN Продажи ON Телефоны.КодТелефона = Продажи.МодельТелфона(((Производители.КодПроизводителя)=[Формы]![Изготовитель]![ПолеСоСписком2]));

«Редактировать покупку» используется для изменения информации о покупке, например для изменения процента скидки.

«Удалить запись» используется для удаления выделенной записи.

«Печать» возле каждой записи. Используется для печати чека (Приложение Б.1). Источником данных для чека является SQL-запрос: Продажи.КодНакладной, Клиенты.ФИОКлиента, Клиенты.ТелефонКлиента, Клиенты.АдресКлиента, Продажи.МодельТелфона, Телефоны.НазваниеПроизводителя, Телефоны.IDФФ, Телефоны.Цвет, Телефоны.[Тип камеры], Телефоны.НазваниеОС, Телефоны.НазваниеТипаДисплея, Телефоны.ХарактеристикиДисплея, Телефоны.НазваниеТипаТелефона, Телефоны.Размер, Телефоны.Вес, Телефоны.цена, Продажи.ДатаПродажи, Продажи.Скидка, Продажи.IMEI, Продажи.ФИОСотрудника, Продажи.Сумма FROM Телефоны INNER JOIN (Клиенты INNER JOIN Продажи ON Клиенты.КодКлиента = Продажи.ФИОКлиента) ON Телефоны.КодТелефона = Продажи.МодельТелфона (((Продажи.КодНакладной)=[Формы]![Клиенты]![Подчиненные продажи].[Form]![КодНакладной]));

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

Рисунок 4.18 - Форма «Выбор производителя»

Рисунок 4.19 - Форма «Добавление записи»

Кнопка «Поставщики» на главной форме открывает форму со списком поставщиков и их поставками (Рисунок 4.20).

На данной форме расположены такие кнопки:

«Новый поставщик» отображает пустые поля для добавления нового поставщика.

«Удалить поставщика» удаляет всю информацию о поставщике и о его поставках.

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

«Добавить поставку» открывает форму добавления поставки для текущего поставщика (Рисунок 4.21).

Источник данных для формы «Поставщики»:Поставщики.КодПоставщика, Поставщики.НазваниеПоставщика, Поставщики.ТелефонПоставщика, Поставщики.ГородПоставщика, Поставщики.АдресПостащика, Поставщики.НазваниеСтраныПоставщики;

Рисунок 4.20 - Форма «Поставщики»

«Поставки» открывает форму, содержащую список поставок текущего поставщика (Рисунок 4.22). Кнопка «Добавить поставку» также доступна на этой форме. Источник данных для формы «Поставки»: Поставки.КодПоставки, Поставки.НазваниеПоставщика, Поставки.МодельТелефона, Поставки.ДатаПоставки, Поставки.Количество, Поставки.[Номер поставки]ПоставкиBY Поставки.[Номер поставки];

кнопка со значком «Отчет» - полный отчет обо всех поставщиках (Приложение Б.2). Источником данных для отчета является SQL запрос: Поставщики.*, Поставки.КодПоставки, Поставки.МодельТелефона, Поставки.ДатаПоставки, Поставки.Количество, Поставки.[Номер поставки] FROM Поставщики INNER JOIN Поставки ON Поставщики.КодПоставщика = Поставки.НазваниеПоставщика;

В отчете осуществляется группировка по названию поставщика и сортировка по номеру поставки (от минимального к максимальному).

Рисунок 4.21 - Форма «Добавить поставку»

Рисунок 4.22 - Форма «Поставки»

Кнопка «Производители» на главной форме открывает форму «Производители», в которой содержится название производителя, логотип, страна и её флаг (Рисунок.4.23). Также данная форма содержит «подчиненная форма Телефоны». Источник данных для данной формы: Производители.*, Страны.флагСтраны INNER JOIN Производители ON Страны.КодСтраны = Производители.НазваниеСтраны;

На данной форме расположены такие кнопки:

- «Новый производитель» форму для добавления нового поставщика (Рисунок 4.24).

«Удалить производителя» удаляет всю информацию о производителе и о производимых им телефонах.

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

Кнопка «Все производители» открывает отчет, содержащий информацию обо всех производителям и моделях телефонов этого производителя, продаваемых в магазине (Приложение Б.3). Источником данных для данного отчета является SQL-запрос: Производители.*, Телефоны.Модель, Телефоны.цена, Страны.флаг FROM Страны INNER JOIN (Производители INNER JOIN Телефоны ON Производители.КодПроизводителя = Телефоны.НазваниеПроизводителя) ON Страны.КодСтраны = Производители.НазваниеСтраны;

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

Рисунок 4.23 - Форма «Производители»

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

Кнопка «Телефоны» на главной форме открывает форму «Телефоны», содержащую все модели телефонов продающихся, либо продававшихся в магазине (Рисунок 4.25).

Источник данных для данной формы: Телефоны.*, Производители.НазваниеПроизводителя, Телефоны.МодельПроизводители INNER JOIN Телефоны ON Производители.КодПроизводителя = Телефоны.НазваниеПроизводителяBY Производители.НазваниеПроизводителя, Телефоны.Модель;

На данной форме расположены такие кнопки:

«Добавить телефон» отображает пустые поля для добавления нового производителя.

«Удалить телефон» удаляет всю информацию о телефоне.

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

кнопка «Все телефоны» открывает отчет, содержащий информацию обо всех моделях телефонов (Приложение Б.4). Источником данных для отчета является SQL-запрос: Телефоны.*, Производители.НазваниеПроизводителя AS НазваниеПроизводителя_Производители FROM Производители INNER JOIN Телефоны ON Производители.КодПроизводителя = Телефоны.НазваниеПроизводителя;

Данные в отчете сгруппированы по названию производителя. Внутри групп осуществляется сортировка по названию модели в алфавитном порядке.

кнопка «Популярные за период» открывает отчет, содержащий информацию о самых продаваемых телефонах за введенный период (Приложение Б.5). Источником данных для отчета является SQL-запрос:Продажи.МодельТелфона, Продажи.ДатаПродажи, Телефоны.НазваниеПроизводителя, Count(Продажи.КодНакладной) AS [Count-КодНакладной]Телефоны INNER JOIN Продажи ON Телефоны.КодТелефона = Продажи.МодельТелфонаBY Продажи.МодельТелфона, Продажи.ДатаПродажи, Телефоны.НазваниеПроизводителя(((Продажи.ДатаПродажи) Between [Формы]![Открыть отчет]![Поле73] And [Формы]![Открыть отчет]![Поле75]))BY Count(Продажи.КодНакладной) DESC;

Данные в отчете сгруппированы по дням и отсортированы по количеству продаж.

кнопка «Все телефоны по популярности» открывает отчет, содержащий информацию о самых продаваемых телефонах за все время (Приложение Б.6). Источником данных для отчета является SQL-запрос: Продажи.МодельТелфона, Count(Продажи.КодНакладной) AS [Count-КодНакладной]ПродажиBY Продажи.МодельТелфонаBY Count(Продажи.КодНакладной) DESC;

Данные в отчете отсортированы по количеству продаж.

кнопка «Печать» печатает отчет, содержащий информацию обо всех моделях телефонов (Приложение Б.4).

Рисунок 4.25 - Форма «Телефоны»

Источник данных для данной формы: Сотрудники.ФИОСотрудника, Сотрудники.ТелефонСотрудника, Сотрудники.КодСотрудника Сотрудники;

На данной форме расположены такие кнопки:

«Добавить сотрудника» отображает пустые поля для добавления нового сотрудника.

Рисунок 4.26 - Форма «Сотрудники»

«Удалить сотрудника» удаляет всю информацию о сотруднике.

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

кнопка «Продажи» открывает форму, содержащую список продаж выбранного сотрудника (Рисунок 4.27).

Источник данных для данной формы:Продажи.ФИОСотрудника, Продажи.КодНакладной, Продажи.МодельТелфона, Продажи.ДатаПродажи, Продажи.Скидка, Продажи.IMEI, Продажи.ФИОКлиента, Продажи.СуммаПродажи(((Продажи.ФИОСотрудника)=[Формы]![Сотрудники]![КодСотрудника]));

кнопка «Отчет» на формах «Сотрудники» и «Продажи» открывает отчет о продажах, совершенных выбранным сотрудником (Приложение Б.7). Источником данных для отчета является SQL-запрос:Клиенты.КодКлиента, Клиенты.ФИОКлиента, Клиенты.ТелефонКлиента, Клиенты.АдресКлиента, Продажи.КодНакладной, Продажи.МодельТелфона, Продажи.ДатаПродажи, Продажи.IMEI, Продажи.ФИОСотрудника, Телефоны.Модель, Производители.НазваниеПроизводителя, Сотрудники.ФИОСотрудника AS ФИОСотрудника_Сотрудники, Продажи.Сумма FROM (Производители INNER JOIN Телефоны ON Производители.КодПроизводителя = Телефоны.НазваниеПроизводителя) INNER JOIN (Сотрудники INNER JOIN (Клиенты INNER JOIN Продажи ON Клиенты.КодКлиента = Продажи.ФИОКлиента) ON Сотрудники.КодСотрудника = Продажи.ФИОСотрудника) ON Телефоны.КодТелефона = Продажи.МодельТелфона WHERE (((Продажи.ФИОСотрудника)=[Формы]![Сотрудники]![КодСотрудника]));

         Данные в отчете сгруппированы по дате продажи (от минимального к максимальному) и по ФИО сотрудника.

Рисунок 4.27 - Форма «Продажи»

Кнопка «Отчеты» на главной форме открывает форму «Отчеты» в которой содержится список непараметрических отчетов, таких как «Все телефоны» (Приложение Б.4), «Список клиентов и покупок» (Приложение Б.8), «Все поставщики» (Приложение Б.2), «Все производители» (Приложение Б.3) и отчет-бланк (Рисунок 4.28).

Рисунок 4.28 - Форма «Отчеты»

Кнопка «Архив клиентов» на главной форме открывает форму «Архив клиентов», записи о клиентах, которые давно не совершали покупок в магазине. При помощи этой формы пользователь может извлечь вручную либо удалить данные из архива окончательно (Рисунок 4.29). Источник данных данной формы: Архив_Клиенты.*Архив_Клиенты;

Рисунок 4.29 - Форма «Архивы» вкладка «Клиенты»

На данной форме присутствуют такие кнопки:

кнопка «Восстановить» перемещает телефон/клиента в основную таблицу и удаляет его из архива. Восстановление происходит посредством запроса: INTO КлиентыАрхив_Клиенты.*Архив_Клиенты(((Архив_Клиенты.КодКлиента)=[Формы]![архив_Клиенты]![КодКлиента]));

Удаление записи из архива при восстановлении происходит стандартными средствами Access.

кнопка «Удалить клиента» удаляет запись из архива без возможности восстановления.

Кнопка «Архив телефонов» на главной форме открывает форму «Архив телефонов», содержащей записи о телефонах, которые давно не продавались. При помощи этой формы пользователь может извлечь вручную либо удалить данные из архива окончательно (Рисунок 4.30).

Рисунок 4.30 - Форма «Архивы» вкладка «Телефоны»

Источник данных данной формы: Архив_Телефоны.*Архив_Телефоны;

На данной форме присутствуют такие кнопки:

кнопка «Восстановить» перемещает телефон/клиента в основную таблицу и удаляет его из архива. Восстановление происходит посредством запроса: INTO ТелефоныАрхив_Телефоны.*Архив_Телефоны(((Архив_Телефоны.КодТелефона)=[Формы]![архив_Телефоны]![КодТелефона]));

Удаление записи из архива при восстановлении происходит стандартными средствами Access.

кнопка «Удалить» удаляет запись из архива без возможности восстановления.

Формы, описанные ниже, доступны только администраторам системы.

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

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

)        для телефонов:INTO Архив_ТелефоныТелефоны.*[Последняя дата продажи телефона] INNER JOIN Телефоны ON [Последняя дата продажи телефона].КодТелефона = Телефоны.КодТелефона(((Телефоны.КодТелефона)=[Последняя дата продажи телефона]![КодТелефона]));

)        для клиентов:INTO Архив_Клиенты ( КодКлиента, ФИОКлиента, ТелефонКлиента, АдресКлиента )Клиенты.КодКлиента, Клиенты.ФИОКлиента, Клиенты.ТелефонКлиента, Клиенты.АдресКлиентаКлиенты INNER JOIN Продажи ON Клиенты.КодКлиента = Продажи.ФИОКлиентаBY Клиенты.КодКлиента, Клиенты.ФИОКлиента, Клиенты.ТелефонКлиента, Клиенты.АдресКлиента(((Last(Продажи.ДатаПродажи))<[Формы]![Архивация]![Поле4]));

)        для продаж:INTO Архив_Продажи ( ДатаПродажи, КодНакладной, МодельТелфона, Скидка, IMEI, ФИОКлиента, ФИОСотрудника, Сумма )Продажи.ДатаПродажи, Продажи.КодНакладной, Продажи.МодельТелфона, Продажи.Скидка, Продажи.IMEI, Продажи.ФИОКлиента, Продажи.ФИОСотрудника, Продажи.СуммаПродажи(((Продажи.ДатаПродажи)<[Формы]![Архивация]![Поле4]));

)        для поставок: INTO Архив_Поставки ( ДатаПоставки, КодПоставки, НазваниеПоставщика, МодельТелефона, Количество, [Номер поставки] )Поставки.ДатаПоставки, Поставки.КодПоставки, Поставки.НазваниеПоставщика, Поставки.МодельТелефона, Поставки.Количество, Поставки.[Номер поставки]Поставки(((Поставки.ДатаПоставки)<[Формы]![Архивация]![Поле4]));

Вторым шагом при архивации является удаление записи из исходной таблицы. Для этого используются следующие SQL-запросы:

)        для телефонов:DISTINCTROW Телефоны.*, Телефоны.КодТелефонаТелефоны INNER JOIN арх_телефоны ON Телефоны.КодТелефона = арх_телефоны.КодТелефона(((Телефоны.КодТелефона)=[арх_телефоны]![КодТелефона]));

)        для клиентов:DISTINCTROW Клиенты.*, Клиенты.КодКлиентаарх_клиенты INNER JOIN Клиенты ON арх_клиенты.КодКлиента = Клиенты.КодКлиента(((Клиенты.КодКлиента)=[арх_клиенты]![КодКлиента]));

)        для продаж:Продажи.*, Продажи.ДатаПродажиПродажи(((Продажи.ДатаПродажи)<[Формы]![Архивация]![Поле4]));

)        для поставок:Поставки.*, Поставки.ДатаПоставкиПоставки(((Поставки.ДатаПоставки)<[Формы]![Архивация]![Поле4]));

Кнопка «Восстановление» на главной форме открывает форму «Восстановление», при помощи которой можно переместить записи из архива обратно в таблицы. Переместить можно записи из всех таблиц сразу либо из таблицы по выбору.

Через форму восстановления можно вернуть из архива все телефоны или всех клиентов сразу. SQL-запросы для восстановления клиентов и телефонов:

)        для телефонов:INTO ТелефоныАрхив_Телефоны.*Архив_Телефоны;

)        для клиентов:INTO КлиентыАрхив_Клиенты.*Архив_Клиенты;

Единичное восстановление осуществляется посредством форм «Архив телефонов» и «Архив клиентов».

Восстановление продаж и поставок осуществляется в зависимости от даты, введенной в форме восстановления. SQL-запросы на восстановление поставок и продаж:

)        для продаж:INTO ПродажиАрхив_Продажи.*Архив_Продажи(((Архив_Продажи.ДатаПродажи)>[Формы]![Восстановление]![Поле4]));

)        для поставок:INTO Поставки ( ДатаПоставки, КодПоставки, НазваниеПоставщика, МодельТелефона, Количество, [Номер поставки] )Архив_Поставки.ДатаПоставки, Архив_Поставки.КодПоставки, Архив_Поставки.НазваниеПоставщика, Архив_Поставки.МодельТелефона, Архив_Поставки.Количество, Архив_Поставки.[Номер поставки]Архив_Поставки(((Архив_Поставки.ДатаПоставки)>[Формы]![Восстановление]![Поле4]));

Формы архивации и восстановления изображены на рисунке 4.31.

Рисунок 4.31 - Формы «Архивация» и «Восстановление»

Кнопка «Справочные таблицы» открывает форму «Справочные таблицы» представляющую собой навигационную форму с горизонтальными вкладками (Рисунок 4.32).

Данная форма состоит из пяти вкладок, каждая из которых представляет собой вспомогательную форму для редактирования справочных таблиц, таких как: ОС (Рисунок 4.33), Страны (Рисунок 4.34), Тип дисплея (Рисунок 4.35), Тип телефона (Рисунок 4.36), Форм-фактор (Рисунок 4.37). Все вспомогательные формы являются ленточными с возможностью добавления новых записей без дополнительных форм. Возле каждой записи во вспомогательных формах находится кнопка удаления.

Кнопка «Пользователи» открывает таблицу «Пользователи», содержащую логины, пароль, а также уровни доступа пользователей в базу (Рисунок 4.38). В шапке формы содержится подсказка относительно групп пользователей. Возле каждой записи есть кнопка удаления.

При нажатии Ctrl+Q открывается окно позволяющее включить/выключить защиту базы от нажатия Shift при загрузке (Рисунок 4.39). Пароль для данной формы «noexit». Модуль, обеспечивающий работу данной функции, представлен в приложении В.3.

Рисунок 4.33 - Форма «Справочные таблицы» вкладка «ОС»

Логическая схема функционирования системы, описанная выше, с учетом всех компонентов приведена на рисунке 4.40.

 

.5 Комплект поставки и порядок установки


Для работы базы данных на компьютере должен быть установлен пакет Microsoft Office 2010 содержащий в себе приложение Access.

В комплект поставки входят следующие файлы:

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

Магазин Мобильных телефонов_образец.accdb - заполненная база данных, поставляемая в качестве примера. Логины и пароли для входа в качестве администратора: admin, admin. Для входа в качестве сотрудника: vova, vova;

– Курсовой.docx, Лист Задания.docx, Схема данных.docx - файлы отчета по курсовому проектированию.

Для начала работы необходимо скопировать файл Магазин Мобильных телефонов.accdb на жесткий диск и запустить его. Для входа использовать логин «admin» и пароль «admin». Прежде чем преступить к работе, необходимо заполнить справочные таблицы, если данных, поставляемых вместе с базой недостаточно. Затем добавить в систему сотрудников магазина и выдать каждому из них персональный логин и пароль. После этого пользователям доступен полный функционал базы данных. Они могут добавлять/удалять клиентов, продажи, поставки, поставщиков, телефоны, просматривать различные отчеты и работать с данными из архивов, если такие существуют. Для защиты от несанкционированного доступа к базе необходимо воспользоваться формой защиты от нажатия Shift. Данная форма вызывается по нажатию Ctrl+Q. Пароль для данной формы «noexit». Данный пароль может быть изменен администратором, внеся определенные изменения в код программного модуля.

 

Рисунок 4.40 - Схема функционирования системы

ВЫВОДЫ


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

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

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

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

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

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1. Слепцова, Л.Д. Программирование на VBA в Microsoft Office 2010. - М.: ООО «И.Д.Вильямс», 2010.-432с.: ил.

. Сергеев А. Access 2007. Новые возможности. - СПб.: Питер, 2008. - 176с.: ил.

. Гандерлой, Майк, Харкинз, Сьюзан Сейлз. Автоматизация Microsoft Access с помощью VBA.: Пер. с англ. - М.: Издательский дом «Вильямс», 2006. -416с.: ил. - Парал. тит. англ.

. Самоучитель VBA. Как это делается в Word, Excel, Access. C.A. Малышев - СПб: Наука и Техника, 2001 - 496 стр. с ил.

. Блюттман К. Access. Трюки. - СПб.: Питер, 2006. - 332 с.: ил.

. Мэтью Мак-Дональд. Access 2007. Недостающее руководство.: Пер. с англ. - СПб.: Русская Редакция, БХВ-Петербург, 2007. -586с.: ил.

ПРИЛОЖЕНИЯ

Приложение А

ТЕХНИЧЕСКОЕ ЗАДАНИЕ


А.1 Общие сведения

Задание: разработка базы данных информационной системы «Магазин мобильных телефонов»».

Дата выдачи задания: 26.01.12

Плановый срок завершения работы: 03.05.12.

А.2 Основание для разработки и цель создания работы

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

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

А.3 Требования к программному продукту

А.3.1 Требования к программному продукту в целом

В целом к программному продукту предъявляются следующие требования:

- обеспечение целостности и корректности данных;

-       обеспечение защиты данных;

-       удобный интерфейс.

А.3.2 Требования к задачам и функциям программного продукта

К задачам и функциям программного продукта предъявляются следующие требования:

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

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

-       содержание запросов, отчетов и форм для обработки информации, хранимой в ней;

-       контроль целостности и сохранности данных, а также достоверности хранимой информации.

А.3.3 Требования к видам обеспечения

А.3.3.1 Требования к программному обеспечению

К программному обеспечению (ПО) предъявляются следующие требования:

операционная система - Microsoft Windows XP и выше;

установленная прикладная программа Access из программного пакета Microsoft Office 2010.

А.3.3.2 Требования к техническому обеспечению

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

- IBM совместимый компьютер;

VGA-монитор;

процессор Intel Pentium 4 (и выше);

место на жестком диске 100 Мбайт (и больше);

клавиатура, мышь;

принтер.

А.3.3.3 Требования к организационному обеспечению

В программную документацию должны входить:

) пояснительная записка;

) приложения:

а) техническое задание;

б) руководство пользователя;

в) экранные формы и листинги запросов;

г) отчеты

А.4 График выполнения курсового проекта

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

Таблица А.1 - График выполнения курсового проекта

№ п/п

Название этапов выполнения курсового проекта

Срок выполнения курсового проекта

Примечание

1

Выдача курсового проекта

26.01.2012

Выполнено

2

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

26.01.2012 - 02.02.2012

Выполнено

3

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

02.02.2012 - 16.02.2012

Выполнено

4

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

16.02.2012 - 08.03.2012

Выполнено

5

Реализация в Microsoft Access

08.03.2012 - 05.04.2012

Выполнено

6

Написания пояснительной записки

05.04.2012 - 26.04.2012

Выполнено

7

Защита курсового проекта.

03.05.2012

Выполнено


Приложение Б

ОСНОВНЫЕ ИТОГОВЫЕ ДОКУМЕНТЫ


Рисунок Б.1 - Чек

Рисунок Б.2 - Полный отчет по поставщикам

Рисунок Б.3 - Полный отчет по производителям

Рисунок Б.4 - Все телефоны

Приложение В


ЛИСТИНГИ И ОПИСАНИЕ ПРОГРАММНЫХ МОДУЛЕЙ


В.1 Модуль авторизации

GroupID As Integer_АвторизацияSub Кнопка1_Click()table As DAO.Recordsetfind As Boolean= Falsetable = CurrentDb.OpenRecordset("users", dbOpenTable)While Not table.EOF

If table.Fields(3).Value = Me.логин.Value Then

find = True

If table.Fields(4).Value = Me.пароль.Value Then

GroupID = table.Fields(2)

UserID = table.Fields(1)

Me.логин.Value = ""

Me.пароль.Value = ""

DoCmd.Close

DoCmd.OpenForm ("Главное окно")

Exit Sub

Else

MsgBox ("Пароль неверен")

End If

End If

table.MoveNextfind = False Then

MsgBox ("Юзверь не найден")IfSub

В.2 Макрос контекстного меню главного окна

меню_Справочные_таблицы()Error GoTo меню_Справочные_таблицы_Err

If (Forms![Главное окно]!Кнопка16.Visible) Then

DoCmd.OpenForm "Справочные таблицы", acNormal, "", "", , acNormal

Else

Beep

MsgBox "Доступ отстутствует", vbOKOnly, ""

End If

меню_Справочные_таблицы_Exit:

Exit Function

меню_Справочные_таблицы_Err:

MsgBox Error$

Resume меню_Справочные_таблицы_ExitFunction

меню_Пользователи()Error GoTo меню_Пользователи_Err

If (Forms![Главное окно]!Кнопка16.Visible) Then

DoCmd.OpenForm "Пользователи", acNormal, "", "", , acNormal

Else

Beep

MsgBox "Доступ отстутствует", vbOKOnly, ""

End If

меню_Пользователи_Exit:

Exit Function

меню_Пользователи_Err:

MsgBox Error$

Resume меню_Пользователи_ExitFunction

меню_Сменить_пользователя()Error GoTo меню_Сменить_пользователя_Err

DoCmd.Close , ""

DoCmd.OpenForm "Авторизация", acNormal, "", "", , acNormal

меню_Сменить_пользователя_Exit:

Exit Function

меню_Сменить_пользователя_Err:

MsgBox Error$

Resume меню_Сменить_пользователя_ExitFunction

меню_Закрыть_окно()Error GoTo меню_Закрыть_окно_Err

DoCmd.Close , ""

меню_Закрыть_окно_Exit:

Exit Function

меню_Закрыть_окно_Err:

MsgBox Error$

Resume меню_Закрыть_окно_ExitFunction

В.3 Проверка на отсутствие клиента в базе

Sub ФИОКлиента_NotInList(NewData As String, Response As Integer)strTmp As String

strTmp = "Добавить '" & NewData & "' как нового клиента?"

If MsgBox(strTmp, vbYesNo + vbDefaultButton2 + vbQuestion, "Not in list") = vbYes Then

strTmp = "INSERT INTO Клиенты([ФИОКлиента]) " & _

"VALUES ('" & NewData & "');"

DBEngine(0)(0).Execute strTmp, dbFailOnError

Response = acDataErrAdded

End IfSub

В.4 Макрос архивации

Архивация_Телефоны_арх()Error GoTo Архивация_Телефоны_арх_Err

DoCmd.OpenQuery "архивация_телефоны", acViewNormal, acEdit

DoCmd.OpenQuery "удаление_телефоны", acViewNormal, acEdit

Архивация_Телефоны_арх_Exit:

Exit Function

Архивация_Телефоны_арх_Err:

MsgBox Error$

Resume Архивация_Телефоны_арх_ExitFunction

Архивация_Клиенты_арх()Error GoTo Архивация_Клиенты_арх_Err

DoCmd.OpenQuery "архивация_клиенты", acViewNormal, acEdit

DoCmd.OpenQuery "удаление_клиенты", acViewNormal, acEdit

Архивация_Клиенты_арх_Exit:

Exit Function

Архивация_Клиенты_арх_Err:

MsgBox Error$

Resume Архивация_Клиенты_арх_ExitFunction

Архивация_Продажи_арх()Error GoTo Архивация_Продажи_арх_Err

DoCmd.OpenQuery "архивация_продажи", acViewNormal, acEdit

DoCmd.OpenQuery "удаление_продажи", acViewNormal, acEdit

Архивация_Продажи_арх_Exit:

Exit Function

Архивация_Продажи_арх_Err:

MsgBox Error$

Resume Архивация_Продажи_арх_ExitFunction

Архивация_Поставки_арх()Error GoTo Архивация_Поставки_арх_Err

DoCmd.OpenQuery "архивация_поставки", acViewNormal, acEdit

DoCmd.OpenQuery "удаление_поставки", acViewNormal, acEdit

Архивация_Поставки_арх_Exit:

Exit Function

Архивация_Поставки_арх_Err:

MsgBox Error$

Resume Архивация_Поставки_арх_ExitFunction

В.5 Макрос восстановления

Восстановление_Телефоны_вост()Error GoTo Восстановление_Телефоны_вост_Err

DoCmd.OpenQuery "вост_телефоны", acViewNormal, acEdit

DoCmd.OpenQuery "арх_удаление_телефоны", acViewNormal, acEdit

Восстановление_Телефоны_вост_Exit:

Exit Function

Восстановление_Телефоны_вост_Err:

MsgBox Error$

Resume Восстановление_Телефоны_вост_ExitFunction

Восстановление_Клиенты_вост()Error GoTo Восстановление_Клиенты_вост_Err

DoCmd.OpenQuery "вост_клиенты", acViewNormal, acEdit

DoCmd.OpenQuery "арх_удаление_клиенты", acViewNormal, acEdit

Восстановление_Клиенты_вост_Exit:

Exit Function

Восстановление_Клиенты_вост_Err:

MsgBox Error$

Resume Восстановление_Клиенты_вост_Exit

Function

Восстановление_Продажи_вост()Error GoTo Восстановление_Продажи_вост_Err

DoCmd.OpenQuery "вост_продажи", acViewNormal, acEdit

DoCmd.OpenQuery "арх_удаление_продажи", acViewNormal, acEdit

Восстановление_Продажи_вост_Exit:

Exit Function

Восстановление_Продажи_вост_Err:

MsgBox Error$

Resume Восстановление_Продажи_вост_ExitFunction

Восстановление_Поставки_вост()Error GoTo Восстановление_Поставки_вост_Err

DoCmd.OpenQuery "вост_поставки", acViewNormal, acEdit

DoCmd.OpenQuery "арх_удаление_поставки", acViewNormal, acEdit

Восстановление_Поставки_вост_Exit:

Exit Function

Восстановление_Поставки_вост_Err:

MsgBox Error$

Resume Восстановление_Поставки_вост_ExitFunction

В.6 Защита от запуска с нажатой кнопкой Shift

Password As String

Sub Кнопка3_Click()dbs As DAO.Database, prp As PropertyError GoTo Change_Err

Const conPropNotFoundError = 3270

Password = Me.Поле1

Set dbs = CurrentDb

If Password = "noexit" Then

If dbs.Properties("AllowBypassKey") = True Then

dbs.Properties("AllowBypassKey") = False

State = False

Else

dbs.Properties("AllowBypassKey") = True

State = True

End If

Else

MsgBox ("Неверный пароль")

End If

_Bye:

DoCmd.Close acForm, "ВклОтклШифт"

DoCmd.Quit acPrompt

Exit Sub_Err:

If Err = conPropNotFoundError Then

Set prp = dbs.CreateProperty("AllowBypassKey", dbBoolean, True)

dbs.Properties.Append prp

Resume Next

Else

Resume Change_Bye

End IfSub


Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!