это быстро и бесплатно
Оформите заказ сейчас и получите скидку 100 руб.!
ID (номер) заказа
3300221
Ознакомительный фрагмент работы:
СОДЕРЖАНИЕ
TOC \o "1-3" \h \z \u ВВЕДЕНИЕ PAGEREF _Toc74619269 \h 41 Общая часть по разработке информационных систем PAGEREF _Toc74619270 \h 51.1 Теоретические сведения по разработке информационных систем PAGEREF _Toc74619271 \h 51.2 Сравнительный анализ готовых решений для автоматизации магазина канцелярских товаров PAGEREF _Toc74619272 \h 111.3 Выбор средств разработки PAGEREF _Toc74619273 \h 142 Разработка информационной системы магазина канцелярских товаров PAGEREF _Toc74619274 \h 182.1 Описание предметной области PAGEREF _Toc74619275 \h 182.2 Разработка базы данных PAGEREF _Toc74619276 \h 192.3Реализация БД в СУБД PAGEREF _Toc74619277 \h 222.4 Структура приложения PAGEREF _Toc74619278 \h 242.5 Руководство пользователя PAGEREF _Toc74619279 \h 27ЗАКЛЮЧЕНИЕ PAGEREF _Toc74619280 \h 32СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ PAGEREF _Toc74619281 \h 33ПРИЛОЖЕНИЕ А СКРИПТ БАЗЫ ДАННЫХ PAGEREF _Toc74619282 \h 34ПРИЛОЖЕНИЕ Б. ФРАГМЕНТЫ ИСХОДНОГО КОДА PAGEREF _Toc74619283 \h 44
ВВЕДЕНИЕАвтоматизация любых предприятий предполагает под собой внедрение новых информационных технологий, предназначенных для повышения эффективности работы сотрудников компании, увеличения качества выходных данных и снижения количества ошибок.
Темой настоящей курсовой работы является разработка базы данных MS SQL и приложения средствами Visual Studio для магазина канцелярских товаров.
Магазин канцелярских товаров работает как с оптовыми, так и с розничными клиентами, поэтому информационная система выполнять следующие основные функции:
учет номенклатуры товаров;
учет поставщиков и клиентов;
учет поставок и продаж товаров;
оценка текущего состояния склада;
формирование отчетов за выбранный промежуток времени.
Целью курсовой работы является разработка базы данных MS SQL и приложения средствами Visual Studio для магазина канцелярских товаров.
Задачи курсовой работы:
изучение требований задания, выявление входных и выходных данных, анализ предметной области;
разработка ER-диаграммы;
выполнение даталогического моделирования;
проектирование интерфейса пользователя;
разработка программного обеспечения.
1 Общая часть по разработке информационных систем1.1 Теоретические сведения по разработке информационных системВ настоящее время информация стала важнейшим ресурсом, а информационные системы используются практически во всех сферах деятельности.
Применение современных информационных технологий позволяет автоматизировать основную рутинную работу в любой организации, начиная от складского учета и заканчивая управления сложными агрегатами на производстве.
Благодаря огромному разнообразию задач, решаемых с помощью информационных систем, появилось огромное количество разновидностей систем со своим набором правил обработки информации.
Рассмотрим основные понятия автоматизированных информационных систем.
Наиболее важным является понятие «система», означающее совокупность множества элементов, которые находятся в заранее определенных отношениях друг с другом при соблюдении условий непротиворечивости и целостности. При этом все элементы системы представляют собой единое целое, но в некоторых случаях могут быть заменены или исключены без риска нарушения функционирования системы в целом [4].
Автоматизация – это совокупность действий или мероприятий, которые позволяют минимизировать участие человека в автоматизируемом процессе.
В рассматриваемом контексте автоматизация подразумевает применение технических средств и информационных технологий для решения поставленных задач.
На рисунке 1.1 представлен список основных задач автоматизации.
Автоматизированная система (ГОСТ 34.003.90) — это система, состоящая из совокупности структурных элементов предприятия и набора средств для автоматизации определенного вида деятельности сотрудников предприятия [4].
Компонентом автоматизированной системы является один из видов его обеспечения: информационное, программное или техническое, обеспечивающее выполнение определенной задачи автоматизированной системы [5].
Рисунок 1.1 – Основные задачи автоматизации
По характеру представления и логической организации информации различают следующие категории информационных систем [4]:
фактографические – при этом хранение данных организовано в виде набора экземпляров одного или нескольких типов объектов, каждый экземпляр данного набора описывает некоторое событие или факт. Каждый тип объекта включает в себя набор реквизитов, достаточно полно описывающих все характеристики экземпляра предметной области;
документированные – хранение данных организовано в виде неструктурированных документов. В некоторых системах реализована возможность задания иерархии подчиненности документов по заранее заданным критериям определения зависимости;
геоинформационные – хранение данных организовано в виде отдельных объектов с заранее сформированном набором реквизитов, объекты привязаны к электронной карте, которая представляет собой топографически компонент.
На рисунке 1.2 представлена классификация информационных систем (ИС) по функциональному признаку.
Рисунок 1.2 - Классификация ИС по функциональному признаку
На рисунке 1.3 представлена классификация ИС в зависимости от функционального признака с учетом уровней управления и квалификации персонала.
По уровням управления ИС разделяют на:
системы оперативного уровня;
системы специалистов;
системы тактического уровня;
стратегические системы.
Рисунок 1.3 – Классификация ИС в зависимости от функционального признака с учетом уровней управления и квалификации персонала
ИС оперативного уровня позволяют автоматизировать деятельность специалистов-исполнителей: ведение учета сделок и их движения, учет и формирование счетов, поступление товаров на склад и являются связующим звеном между компанией и внешней средой. Задачи и входные данные систем оперативного уровня структурированы и запрограммированы в соответствии с определенным алгоритмом, если ИС не выполняет своих функций на должном уровне, то компания не получает информацию из внешней среды, либо система не выдает информацию по запросу.
ИС специалистов предназначены для автоматизации работы специалистов узкого профиля. Как правило, такие системы предназначены для обработки бумажных документов, оформления документов и отчетов и т.д.
ИС специалистов можно разделить на две подгруппы: системы офисной автоматизации и обработки знаний.
ИС офисной автоматизации являются неотъемлемой часть работы офисных работников любого уровня: секретарь, бухгалтер и т.д. Основной целью таких систем является обработка данных, сокращение трудовых и временных затрат сотрудников, повышение эффективности их труда за счет автоматизации рутинных операций работы с данными: составление расписаний, учет документации, обработка текста, ведение календаря, общение по электронной почте и т.д.
ИС обработки знаний используются в своей работе юристы, научные работники, проектировщики и т.д. То есть все специалисты, которые создают новые технологии, знания или продукт. К данной категории можно отнести информационные системы по проектированию сооружений, сложной обработке видео и изображений и т.д.
ИС тактического уровня предназначены для ведения статистической и аналитической обработки информации. Например, сравнение данных за разные промежутки времени, формирование отчетов за выбранный период, получение архивных данных и т.д.
В данной категории ИС можно выделить:
системы поддержки принятия решений – имеют в своем составе мощные аналитические алгоритмы прогнозирования событий. Такие системы используют сотрудники компаний, в обязанности которых входит обоснование принятых решений и выявление зависимостей в событиях и данных: аналитики, менеджеры и т.д.;
управленческие ИС – предназначены для специалистов управленческого звена. Такие системы хранят и накапливают информацию о текущих процессах в компании.
Также существует классификация по степени автоматизации, сфере применения и характеру информации (рисунок 1.4).
Ручные информационные системы не используют современных технических средств обработки информации. Например, работа сотрудников в компании, в которой не используются компьютеры.
Автоматически информационные системы работают без участия человека.
Автоматизированные информационные системы (АИС) предполагают наличие человека в цепочке управления, но главная роль возложена на компьютер.
Рисунок 1.4 - Классификация по степени автоматизации, сфере применения и характеру информации
Структура АИС должна обеспечивать бесперебойное выполнение всех ее функций и качественное взаимодействие всех ее элементов.
На рисунке 1.5 представлена структура АИС [5].
Рисунок 1.5 - Структура АИС
1.2 Сравнительный анализ готовых решений для автоматизации магазина канцелярских товаровВ настоящее время на рынке программного обеспечения для управления продажами наиболее популярными, которые могут быть использованы для автоматизации торгового учета являются:
CRM «Мои продажи»;
Класс 365;
Bpm’online sales CRM.
Рассмотрим основные характеристики выбранных CRM-систем.
Внедрение CRM-системы «Мои продажи» позволит эффективно и прозрачно управлять каждым этапом производства и реализации продукции:
вести учет готовой продукции;
планировать запасы и контролировать дистрибуцию товаров;
управлять складскими ресурсами;
вести учет работы с клиентами;
оптимизировать ввод данных.
Благодаря автоматизации предприятия будет автоматизировать процесс взаимодействия с поставщиками и клиентами компании. С помощью инструментов аналитики «Мои продажи», руководство автоматизируемого предприятия получит доступ ко всем бизнес показателям организации и увеличит скорость принятия решений на всех уровнях управления.
«Мои продажи» позволяет формировать выходные документы: счета, товарные чеки, накладные, ТОРГ-12, ТТН, акты, счета-фактуры, кассовые ордера, отчеты комиссионера и многие другие. Также возможна автоматическая нумерация документов, массовая печать, ведение архива, отправка по электронной почте. Пользователь может настраивать шаблонов документов.
«Мои продажи» является облачной CRM-системой, которая может быть использована в любом браузере: Google Chrome, Mozilla Firefox, Яндекс.Браузер, Opera, Microsoft Internet Explorer.
Система «Класс365» предоставляет возможность вести полноценный торговый учет:
мгновенное формирование коммерческих предложений;
обработка заказов;
счета на оплату, счет-фактуры;
реализация;
возвраты;
резервирование;
назначение цен;
взаимодействие с клиентами и поставщиками;
учет поставок из производственных цехов.
«Класс365» легко настраивается под индивидуальные задачи пользователя. «Класс365» имеет встроенный модуль SMS-рассылки клиентам и сотрудникам. Формирует разнообразные аналитические отчеты в табличном и графическом виде. Позволяет хранить документы и любые файлы в базе данных.
Формирует весь пакет необходимых сопроводительных документов торгового учета. Поддерживает работу нескольких складов и производственных цехов. Позволяет организовать совместную работа и коммуникацию сотрудников.
Поддерживается работа с финансами:
формирование файла платежей для клиент-банка;
ведение учета в разных валютах;
ведомость по денежным средствам на банковских счетах и в кассах;
обороты расчётного счета по дням, неделям, месяцам.
Bpm’online sales — система для управления всем циклом продаж, от анализа потребности до заключения сделки, выполнения заказа и контроля оплат.
С помощью программного интерфейса Bpm’online sales можно отслеживать «пульс продаж» в любой момент — в систему заложены все необходимые метрики для принятия верных управленческих решений.
В Bpm’online sales можно создавать продажи и оформлять заказы всего в несколько кликов, а также гибко управлять сотрудниками, оценивая нагрузку на каждого сотрудника.
С помощью системы можно легко управлять воронкой продаж и корректировать тактику сделок, следуя характерному процессу.
Представим сравнение рассмотренных CRM-систем управления продажами в таблице 1.
Таблица 1 - Сравнение CRM-систем управления продажами
Характеристика Мои продажи Класс365 Bpm’online sales1 2 3 4
Сайт http://mysales.ru/ http://class365.ru https://terrasoft.ru
Интеграция/
синхронизация MS Office, GoogleDocs, MS Outlook, 1C Google apps. GoogleDocs, MS Outlook Gmail, FB, Twitter, 1С
Мобильная версия + + +
Пробная версия 14 дней полного функционала 14 дней полного функционала 14 дней полного функционала
Шаблоны документов с возможностью редактирования + + +
Ограничение доступа к контактам клиентов + + +
SMS-сообщения + + интеграция стороннего приложения
Учет состояния склада - + +
Поддержка учета выпуска готовой продукции - + +
Возможность учета заказов клиентов + + +
Возможность учета клиентов - - +
Расширенная система доступа к данным + + -
Поддержка работы нескольких складов + + +
Расширенная
Аналитика - - +
Графическое представление информации + + +
Продолжение таблицы 1
1 2 3 4
Наличие технической поддержки 24/7 + - -
Ограничения по объему базы данных от 500Мб до 10Гб от 500Мб до 10Гб от 1Гб до 50Гб
Количество пользователей от 1 до 10, далее дополнительная плата за каждого сотрудника от 1 до 30, далее дополнительная плата за каждого сотрудника от 1 до 10, далее дополнительная плата за каждого сотрудника
Стоимость оптимального тарифа на 10 сотрудников 6900 руб./месяц 7125 руб./месяц 9600 руб./месяц
Стоимость годового обслуживания 82 800 руб./год 85 500 руб./год 115 200 руб./год
Возможность скидки при оплате за год 15%
70 380 руб./год -
85 500 руб./год 5%
109 440 руб./год
В результате проведенного сравнительного анализа CRM-систем, которые могут быть использованы для автоматизации учета поставок и продаж канцелярских товаров очевидно, что стоимость использования рассмотренных CRM лишком велика для многих организаций с учетом необходимости ежемесячных затрат. Поэтому оптимальным вариантом для некоторых компаний будет разработка собственной информационной системы.
1.3 Выбор средств разработкиВ настоящее время для построения информационных систем применяются различные системы управления базами данных (СУБД), различающиеся как своими возможностями, так и требованиями к вычислительным ресурсам. Все многообразие применяемых СУБД, однако, можно свести к двум основным их классам: персональные и многопользовательские.
Наиболее популярными СУБД по мнению российских и зарубежных разработчиков являются:
MS SQL Server;
Oracle;
MySQL;
PostgreeSQL.
Представим сравнительный анализ представленных СУБД в таблице 1.1.
Таблица 1.1 – Сравнительная характеристика реляционных СУБД
Параметр MS SQL Server MySQL Oracle PostgreSQL
1 2 3 4 5
Общие характеристики
Официальный сайт mssqlerver.com mysql.com oracle.com postgresql.com
Год выхода последнего релиза 2016 5.7.20 (2017) 12.2 (2016) 9.6.5 (2017)
Вид лицензии проприетарная GPL+проприетарная проприетарная лицензия PostgreSQL
Размер таблицы (max) 17178821 экзабайт64Тб на одну таблицу 8 экзабайт Не вычислены
Возможность работы на нескольких платформах + + + +
Сложность администрирования по 5-ти бальной системе 5 3 2 4
Многопроцессорность + + + +
Возможность использования хранимых процедур и триггеров + + + +
Язык запросов Transact-SQL Transact-SQL PL/SQL PL/pgSQLВозможность использования бесплатной версии + + - +
Многопользовательский доступ + + + +
Механизм импорта данных ODBC - Oracle Data Migration ODBC
Среда администрирования MS SQL Management Studio MySQL-Front Oracle Data Manipulation pgAdminСтоимость лицензии
Стоимость лицензии 48 250 руб.
(версия Enterprise бесплатна) 0 руб. 575 000 руб. 0 руб.
Для разработки информационной системы автоматизации магазина канцелярских товаров выбрана СУБД MS SQL Server Express. Она является бесплатной и реализует весь необходимый функционал для создания клиент-серверного приложения.
Рассмотрим наиболее популярные в данный момент среды программирования: Embarcadero RAD Studio, Microsoft Visual Studio на платформе .NET.
Embarcadero RAD Studio - среда быстрой разработки приложений (RAD) для Microsoft Windows фирмы Embarcadero Technologies [23].
Последняя на данный момент версия Embarcadero RAD Studio XE10 Seattle объединяет Delphi XE10 и C++ Builder XE10 в единую интегрированную среду разработки [7, 9].
Microsoft Visual Studio - среда разработки программного обеспечения на базе платформы .NET Framework, которая поддерживает новые и улучшенные объекты [15, 31].
В таблице 1.2 представлены сравнительные характеристики средств разработки приложений.
Таблица 1.2 - Сравнительные характеристики средств разработки приложений
Параметр Инструментальная среда
RAD Studio Visual Studio
1 2 3
Фирма производитель. Embarcadero Technologies Microsoft
Последняя версия RAD Studio 10 Microsoft Visual Studio 2015
Поддерживаемые
операционные
системы Windows XP/Vista/8/Linux Windows XP/Vista/8
Встроенный язык Object Pascal, C++ Visual C++,C#, Visual J#,Visual Basic .NET
Поддержка ООП + Встроенный механизм автоматического создания объектной модели базы данных
Поддержка 32 и 64 битных платформ + +
Отладка «на лету» + +
Подсветка синтаксиса с интеллектуальным подбором - +
Механизмы доступа к БД BDE,ADO, Express, dbExpressADO .NET
Наличие визуальных и не визуальных компонент для работы с БД + +
Продолжение таблицы 1.2
1 2 3
Поддержка технологии Rapid Application Development + +
Утилиты для работы с БД Database Desktop, BDE Administrator, SQL Builder Интегрированная поддержка Microsoft SQL Server 2012
Сложность или простота работы с инструментальным средством Среда позволяет быстро и удобно разрабатывать эффективные приложения. Среда ориентирована на быструю разработку качественных приложений
На основе проведенного анализа средств разработки приложений в качестве средства для разработки клиентской части информационной системы магазина канцелярских товаров выбрана среда Microsoft Visual Studio, так как данная среда визуального программирования имеет широкие возможности по созданию Windows-приложений и позволяет воспользоваться провайдером MS SQL Server для платформы .NET, чтобы обеспечить удобную работу с базой данных с помощью автоматически создаваемых TableAdapters, являющихся промежуточным звеном между базой данных и приложением, предоставляя возможность удобной работы с таблицами базы данных, как с набором классов.
2 Разработка информационной системы магазина канцелярских товаров2.1 Описание предметной областиВ данной работе будет автоматизирована деятельность магазина канцелярских товаров по учету поставок товаров на склад и их последующей реализации в магазине.
Ведением складского учета занимается кладовщик, учетом продаж канцелярских товаров – сотрудник отдела продаж.
Сотрудники магазина канцтоваров руководствуются в своей деятельности: законодательством РФ; Уставом компании.
Входные данные – это данные, которые используются для ведения базы данных и формирования выходных данных.
В таблице 2.1 представлены входные данные для ведения учета деятельности магазина.
Таблица 2.1 – Характеристика входной информации
Данные Реквизиты Источники
Информация о поставщиках Наименование
ОГРН
ИНН/КПП
Адрес
Телефон
Электронная почта Регистрационные данные поставщика
Информация о товарах Наименование
Артикул
Категория
Цена продажи
Единица измерения Номенклатура товаров, накладные на поставку товаров
Сведения о поставках товаров Номер и дата накладной
Список товаров
Цена
Количество
Поставщик Накладная на поставку
Сведения об отгрузке/продаже товаров Номер и дата накладной
Список товаров
Цена
Количество
Клиент Накладная на отгрузку товаров
В информационной системе магазина должна храниться следующая информация:
сведения о сотрудниках;
сведения о товарах;
сведения о поставках товаров;
сведения о клиентах;
сведения о предварительных заказах клиентов на покупку канцтоваров;
сведения о продаже товаров.
2.2 Разработка базы данныхВ результате исследования предметной области для автоматизации работы магазина канцтоваров выделены следующие сущности [1, 6]:
сотрудник;
товар;
категория товаров;
поставка товаров;
спецификация поставки;
отпуск товаров (продажа товаров);
спецификация отпуска;
должность;
отдел;
поставщик;
клиент;
заказ (предварительный заказ на закупку товаров);
спецификация заказа.
пользователь.
В таблицах 2.2 – 2.10 представлено описание физической структуры таблиц БД.
Таблица 2.2 – Таблица «Сотрудники»
Поле Тип данных Первичный ключ (PK)/ Внешний ключ (FK) Обязательное поле
КодСотрудникаInt PK Да
Фамилия_сотрудникаVarchar (15) - Да
Имя_сотрудникаVarchar (15) - Да
Отчество_сотрудникаVarchar (17) - Да
ДатаНачалаРаботыDateTime - Нет
ДатаРожденияDateTime - Нет
Район Проживания Varchar (14) - Нет
Адрес Varchar (70) - Нет
Таблица 2.3 – Таблица «Товары»
Поле Тип данных Первичный ключ (PK)/ Внешний ключ (FK) Обязательное поле
КодТовараInt PK Да
КодКатегории Int FK Да
Наименование Varchar (100) - Да
Артикул Varchar (10) - Да
Цена продажи Int - Да
Таблица 2.4 – Таблица «Поставщики»
Поле Тип данных Первичный ключ (PK)/ Внешний ключ (FK) Обязательное поле
КодПоставщикаInt PK Да
Статус Varchar (3) - Да
НазваниеФирмыVarchar (70) - Да
Страна Varchar (30) - Нет
Город Varchar (30) - Нет
Адрес Varchar (150) - Нет
Телефон Varchar (20) - Нет
Факс Varchar (20) - Нет
Банк Varchar (50) - Нет
ИНН Varchar (11) - Нет
Расчетный счет Varchar (21) - Нет
Таблица 2.5 – Таблица «Поставка»
Поле Тип данных Первичный ключ (PK)/ Внешний ключ (FK) Обязательное поле
КодПоставкиInt PK Да
КодСотрудникаInt FK Да
НомерНакладнойVarchar (10) - Да
ДатаНакладнойDateTime - Да
КодПоставщикаInt FK Да
КодДоговораInt FK Да
Таблица 2.6 – Таблица «СпецификацияПоставки»
Поле Тип данных Первичный ключ (PK)/ Внешний ключ (FK) Обязательное поле
КодПоступленияInt PK Да
КодТовараInt FK Да
КодПоставкиInt FK Да
Количество Int - Да
ЦенаПоставкиInt - Да
КодСотрудникаInt FK Да
Таблица 2.7 – Таблица «Заказы»
Поле Тип данных Первичный ключ (PK)/ Внешний ключ (FK) Обязательное поле
Код заказа Int PK Да
НомерЗаказаVarchar(10) - Да
СрокИсполнения заказа DateTime - Да
СтатусЗаказаVarchar(20) - Нет
Таблица 2.8– Таблица «СпецификацияЗаказа»
Поле Тип данных Первичный ключ (PK)/ Внешний ключ (FK) Обязательное поле
КодСпецификацииInt PK Да
КодЗаказаInt FK Да
КодТовараInt FK Да
Количество Int - Да
Цена Int - Да
Таблица 2.9 – Таблица «КатегорииТоваров»
Поле Тип данных Первичный ключ (PK)/ Внешний ключ (FK) Обязательное поле
КодКатегорииInt PK Да
Наименование Varchar(50) - Да
Таблица 2.10 – Таблица «Пользователи»
Поле Тип данных Первичный ключ (PK)/ Внешний ключ (FK) Обязательное поле
КодПользователяInt PK Да
Логин Varchar(20) - Да
Пароль Varchar(20) - Да
КодСотрудникаInt FK Да
Физические модели баз данных определяют способы размещения данных в среде хранения и способы доступа к этим данным, которые поддерживаются на физическом уровне – уровне СУБД [8, 10].
Для разработки БД магазина канцтоваров была выбрана СУБД MS SQL Server.
На рисунке 2.1 представлена физическая модель БД для выбранной СУБД.
Рисунок 2.1 - Физическая модель базы данных
Реализация БД в СУБДНа рисунке 2.2 представлена структура БД в MS SQL Server.
Для администрирования базы данных использована стандартная среда администрирования – MS SQL Server Management Studio.
Рисунок 2.2 - Структура БД в MS SQL Server
2.4 Структура приложенияРазработанная информационная система автоматизации магазина канцтоваров разработана с использованием двухзвенной архитектуры клиент-сервер («толстый клиент») (рисунок 2.3) [2].
Рисунок 2.3 – Двухзвенная архитектура «клиент-сервер»
На рисунке 2.4 представлен список основных модулей информационной системы [5].
Рисунок 2.4 – Структура модулей системы
Выделены следующие основные модули:
авторизация в информационной системе;
контроль прав доступа;
ведение учета работы с клиентами;
редактирование справочников;
построение отчетности;
ведение учета пользователей;
экспорт данных в MS Excel;
формирование документов.
Назначение модулей информационной системы представлено в таблице 2.11.
Таблица 2.11 – Назначение программных модулей
Наименование Назначение модуля
Main Главный модуль информационной системы
Auth Модуль проверки авторизации пользователя
Clients Модуль учета сведений о клиентах
ZakazМодуль учета индивидуальных заказов клиентов
ProdajiМодуль учет продаж
DoljМодуль учета должностей сотрудников
Kat Модуль учета категорий товаров
OtdeliМодуль учета отделов организации
OtgruzМодуль учета отгрузки товаров клиентам
PolzМодуль редактирования идентификационных данных пользователей
Reports Модуль для построения отчетов
SotrМодуль учета сотрудников
TovariМодуль учета товаров
ClassDocМодуль заполнения выходных документов
ControlDataМодуль контроля доступа к данным
На рисунке 2.5 представлена взаимосвязь программных модулей информационной системы.
Основную функцию ю выполняет главный модуль системы, который связывает пользователя и другие подсистемы.
Рисунок 2.5 - Схема взаимодействия модулей
Первоначально сотрудник отдела продаж авторизуется в информационной системе путем ввода логина и пароля. Далее сотрудник может приступить к редактированию справочных данных или ассортимента реализуемой продукции. Также сотрудник может редактировать информацию о заказах клиентов на закупку канцтоваров. При этом к заказу может быть прикреплено фото желаемого изделия, необходимые документы и т.д. Для оформления реализации продукции используется соответствующая форма учета.
Доступ к данным БД реализован с помощью технологии ADO.NET.
ADO.NET разделят доступ к данным и обработку данных на дискретные компоненты, которые могут использоваться отдельно или совместно. ADO.NET включает поставщиков данных .NET Framework для соединения с базой данных, выполнения команд и получения результатов [10].
2.5 Руководство пользователяПри запуске информационной системы появится окно авторизации, представленное на рисунке 2.6.
Рисунок 2.6 — Форма авторизации
Если пользователь вводит неверный логин или пароль, пользователю будет выдано соответствующее сообщение. При правильной авторизации будет открыта главная форма, представленная на рисунке 2.7.
Рисунок 2.7 — Главная форма приложения
Рассмотрим некоторые справочники информационной системы.
На рисунке 2.8 представлен справочник категорий товаров.
Рисунок 2.8 — Справочник «Категории товаров»
Для учета сведений о сотрудниках предназначена форма, представленная на рисунке 2.10.
Рисунок 2.10 — Справочник «Сотрудники»
Для каждого вида реализуемой продукции хранится информация о категории, артикулу, цене продажи товара и фотография товара.
Форма редактирования информации о продукции представлена на рисунке 2.11. На форме реализована возможность добавить фото товара с помощью нажатия одной кнопки.
Рисунок 2.11 — Справочник «Товары»
На рисунке 2.12 представлена форма учета продаж канцтоваров.
Рисунок 2.12 — Форма «Продажи»
Магазин канцтоваров принимает предварительные заказы на закупку канцтоваров. На рисунке 2.13 представлена форма учета предварительных заказов клиентов.
Рисунок 2.13 — Форма «Товары под заказ»
Информационная система автоматизации магазина по продаже канцтоваров позволяет строить различные отчеты.
На рисунке 2.14 представлен отчет «Ведомость выполненных заказов».
Рисунок 2.14 — Отчет «Ведомость выполненных заказов»
На рисунке 2.15 представлена форма отчет по статистике заказов клиентов.
Рисунок 2.15 — Отчет «Статистика заказов»
Отчет по статистики популярности продукции представлен на рисунке 2.16.
Рисунок 2.16 — Отчет «Статистика популярности продукции»
На рисунке 2.17 представлен отчет о продажах, который может быть сформирован с помощью информационной системы.
Рисунок 32 — Отчет «Отчет по продажам»
ЗАКЛЮЧЕНИЕРезультатом курсовой работы является разработка базы данных MS SQL и приложения средствами Visual Studio для магазина канцелярских товаров.
В ходе выполнения курсовой работы решены все поставленные задачи.
Описана предметная область – деятельность магазина канцелярских товаров. Рассмотрены входные и выходные документы.
Разработаны функциональные требования к информационной системе магазина канцелярских товаров.
Рассмотрена архитектура данных информационной, приведена физическая модель базы данных. В качестве СУБД выбрана MS SQL Server, в качестве среды разработки клиентской части информационной системы выбрана MS Visual Studio (язык программирования C#).
Приведено руководство пользователя информационной системы.
Информационная система магазина канцелярских товаров достаточно проста в эксплуатации, легка в использовании, не требует дополнительного специального обучения персонала и реализует выполнение следующих функций:
идентификация пользователя в системе по логину и паролю;
хранение номенклатуры товаров по категориям;
хранение данных о поставке товаров от поставщиков;
хранение данных о продаже товаров;
хранение списка клиентов магазина;
формирование отчетов:
ведомость выполненных заказов;
ведомость невыполненных заказов;
отчет по продажам;
статистика заказов;
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВПроектирование баз данных: лабораторный практикум / Э.Г. Галиаскаров, А.Ю. Крылов; Иван. гос. хим.-технол. ун-т.- Иваново, 2012.- 96 с.
Разработка приложений баз данных: лабораторный практикум / Э.Г. Галиаскаров и др.; Иван. гос. хим.-технол. ун-т. – Иваново, 2015. – 112 с.
Алексеев А.В. Разработка информационных систем. – Москва, 2017. – 638 с.
Вейцман В.М. Проектирование информационных систем: Учебное пособие. – М.: МУБИНТ, 2017. – 214 c.
Гвоздева В. А. Информатика, автоматизированные информационные технологии и системы: учебник / В. А. Гвоздева. Москва: Форум: Инфра-М, 2015. – 541 с.
Гринченко Н.Н. Проектирование баз данных. – М: Телеком, 2016. – 613 c.
Епанешников А., Епанешников В. Практика создания приложений в MS Visual Studio. – М.: Диалог-МИФИ, 2016. – 459 с.
Илюшечкин В.М. Основы использования и проектирования баз данных. – М.:Юрайт, 2017. – 224 с.
Леонтьев В.П. ADO.NET. М.: ОЛМА–ПРЕСС, 2016. – 306 с.
Хомоненко А.Д., Цыганков В.М., Мальцев М.Г. Базы данных. - М.: Корона-век, 2016. – 736 с.
ПРИЛОЖЕНИЕ А СКРИПТ БАЗЫ ДАННЫХCREATE TABLE [dbo].[Отпуск](
[Код заказа] [int] IDENTITY(1,1) NOT NULL,
[Код сотрудника] [int] NULL,
[Номер накладной] [int] NULL,
[Дата накладной] [datetime] NULL,
[КодКлиента] [int] NULL,
[КодЗаказа] [int] NULL,
CONSTRAINT [PK_Отпуск] PRIMARY KEY CLUSTERED
(
[Код заказа] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[ОтпускСоСклада] Script Date: 04.12.2020 22:29:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[ОтпускСоСклада](
[КодОтпуска] [int] IDENTITY(1,1) NOT NULL,
[КодТовара] [int] NULL,
[КодНакладнойОтпуска] [int] NULL,
[Количество] [int] NULL,
[Цена] [money] NULL,
[Поле2] [int] NULL,
[Поле1] [int] NULL,
CONSTRAINT [PK_ОтпускСоСклада] PRIMARY KEY CLUSTERED
(
[КодОтпуска] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: View [dbo].[ОтпускСоСкладаДата] Script Date: 04.12.2020 22:29:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE VIEW [dbo].[ОтпускСоСкладаДата]
AS
SELECT dbo.ОтпускСоСклада.КодОтпуска, dbo.ОтпускСоСклада.КодТовара, dbo.ОтпускСоСклада.КодНакладнойОтпуска, dbo.ОтпускСоСклада.Количество, dbo.ОтпускСоСклада.Цена, dbo.ОтпускСоСклада.Поле2,
dbo.ОтпускСоСклада.Поле1
FROM dbo.Отпуск INNER JOIN
dbo.ОтпускСоСклада ON dbo.Отпуск.[Код заказа] = dbo.ОтпускСоСклада.КодНакладнойОтпускаGO
/****** Object: Table [dbo].[КатегорииТоваров] Script Date: 04.12.2020 22:29:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[КатегорииТоваров](
[КодКатегории] [int] IDENTITY(1,1) NOT NULL,
[Наименование] [nvarchar](255) NULL,
[Описание] [nvarchar](255) NULL,
CONSTRAINT [PK_КатегорииТоваров] PRIMARY KEY CLUSTERED
(
[КодКатегории] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[Поставки] Script Date: 04.12.2020 22:29:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Поставки](
[Код заказа] [int] IDENTITY(1,1) NOT NULL,
[Код сотрудника] [int] NULL,
[Номер накладной] [int] NULL,
[Дата накладной] [datetime] NULL,
[КодПоставшика] [int] NULL,
[КодЗаказа] [int] NULL,
CONSTRAINT [PK_Поставки] PRIMARY KEY CLUSTERED
(
[Код заказа] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[Поступление] Script Date: 04.12.2020 22:29:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Поступление](
[КодПоступления] [int] IDENTITY(1,1) NOT NULL,
[КодТовара] [int] NULL,
[КодПоставки] [int] NULL,
[Количество] [int] NULL,
[ЦенаПоставки] [money] NULL,
CONSTRAINT [PK_Поступление] PRIMARY KEY CLUSTERED
(
[КодПоступления] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[Товары] Script Date: 04.12.2020 22:29:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Товары](
[КодТовара] [int] IDENTITY(1,1) NOT NULL,
[Наименование] [nvarchar](255) NULL,
[Артикул] [nvarchar](255) NULL,
[Цена продажи] [nvarchar](255) NULL,
[ЕдиницаИзмерения] [nvarchar](255) NULL,
[КодКатегории] [int] NULL,
[Фото] [image] NULL,
[ДругиеДокументы] [image] NULL,
[СпособОплаты] [nvarchar](255) NULL,
[Размер] [nvarchar](255) NULL,
CONSTRAINT [PK_Товары] PRIMARY KEY CLUSTERED
(
[КодТовара] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
/****** Object: View [dbo].[ОтчетСписокТоваров] Script Date: 04.12.2020 22:29:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE VIEW [dbo].[ОтчетСписокТоваров]
AS
SELECT dbo.КатегорииТоваров.Наименование, dbo.Товары.Артикул, dbo.Товары.Наименование AS Expr1, dbo.Товары.ЕдиницаИзмерения, dbo.Поступление.Количество,
(SELECT SUM(Количество) AS Expr1
FROM dbo.ОтпускСоСкладаДата WHERE (КодТовара = dbo.Поступление.КодТовара)) AS отпущено, dbo.Поступление.Количество -
(SELECT SUM(Количество) AS Expr1
FROM dbo.ОтпускСоСкладаДата AS ОтпускСоСкладаДата_1
WHERE (КодТовара = dbo.Поступление.КодТовара)) AS ostalosFROM dbo.КатегорииТоваров INNER JOIN
dbo.Товары ON dbo.КатегорииТоваров.КодКатегории = dbo.Товары.КодКатегории INNER JOIN
dbo.Поставки INNER JOIN
dbo.Поступление ON dbo.Поставки.[Код заказа] = dbo.Поступление.КодПоставки ON dbo.Товары.КодТовара = dbo.Поступление.КодТовараGO
/****** Object: Table [dbo].[Продажа] Script Date: 04.12.2020 22:29:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Продажа](
[КодПродажи] [int] IDENTITY(1,1) NOT NULL,
[ДатаПродажи] [datetime] NULL,
[КодКлиента] [int] NULL,
[КодСотрудника] [int] NULL,
CONSTRAINT [PK_Продажа] PRIMARY KEY CLUSTERED
(
[КодПродажи] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[СпецПродажи] Script Date: 04.12.2020 22:29:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[СпецПродажи](
[КодСпецПродажи] [int] IDENTITY(1,1) NOT NULL,
[КодПродажи] [int] NULL,
[КодТовара] [int] NULL,
[Количество] [int] NULL,
[Цена] [money] NULL,
CONSTRAINT [PK_СпецПродажи] PRIMARY KEY CLUSTERED
(
[КодСпецПродажи] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: View [dbo].[ПредотчетСтатистика] Script Date: 04.12.2020 22:29:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE VIEW [dbo].[ПредотчетСтатистика]
AS
SELECT YEAR(dbo.Продажа.ДатаПродажи) AS Год, MONTH(dbo.Продажа.ДатаПродажи) AS Месяц, dbo.Товары.Наименование, SUM(dbo.СпецПродажи.Количество) AS [Общее количество продаж],
SUM(dbo.СпецПродажи.Цена) AS [Общая стоимост продаж]
FROM dbo.Продажа INNER JOIN
dbo.СпецПродажи ON dbo.Продажа.КодПродажи = dbo.СпецПродажи.КодПродажи INNER JOIN
dbo.Товары ON dbo.СпецПродажи.КодТовара = dbo.Товары.КодТовараGROUP BY YEAR(dbo.Продажа.ДатаПродажи), MONTH(dbo.Продажа.ДатаПродажи), dbo.Товары.НаименованиеGO
/****** Object: View [dbo].[Статистика популярности продукции] Script Date: 04.12.2020 22:29:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE VIEW [dbo].[Статистика популярности продукции]
AS
SELECT Год, Месяц, Наименование, [Общее количество продаж], [Общая стоимост продаж], [Общее количество продаж] -
(SELECT SUM([Общее количество продаж]) AS Expr1
FROM dbo.ПредотчетСтатистика AS p
WHERE (Год = dbo.ПредотчетСтатистика.Год) AND (Месяц = dbo.ПредотчетСтатистика.Месяц - 1) AND (Наименование = dbo.ПредотчетСтатистика.Наименование)) AS [Прирост продаж в пролом периоде],
[Общая стоимост продаж] -
(SELECT SUM([Общая стоимост продаж]) AS Expr1
FROM dbo.ПредотчетСтатистика AS p
WHERE (Год = dbo.ПредотчетСтатистика.Год) AND (Месяц = dbo.ПредотчетСтатистика.Месяц - 1) AND (Наименование = dbo.ПредотчетСтатистика.Наименование))
AS [Прирост стоимости продаж в пролом периоде]
FROM dbo.ПредотчетСтатистикаGO
/****** Object: Table [dbo].[Заказы] Script Date: 04.12.2020 22:29:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Заказы](
[КодЗаказа] [int] IDENTITY(1,1) NOT NULL,
[НомерЗаказа] [nvarchar](255) NULL,
[ДатаЗаказа] [datetime] NULL,
[КодКлиента] [int] NULL,
[НомерДоговора] [nvarchar](255) NULL,
[НаименованиеИзделия] [nvarchar](255) NULL,
[КодВидаРезки] [int] NULL,
[КодМатериала] [int] NULL,
[МатериалКлиента] [bit] NULL,
[СрокВыполнения] [datetime] NULL,
[Статус] [nvarchar](255) NULL,
[Макет] [image] NULL,
[ДругиеФайлы] [image] NULL,
CONSTRAINT [PK_Заказы] PRIMARY KEY CLUSTERED
(
[КодЗаказа] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
/****** Object: Table [dbo].[СпецификацияЗаказа] Script Date: 04.12.2020 22:29:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[СпецификацияЗаказа](
[КодСпецификации] [int] IDENTITY(1,1) NOT NULL,
[КодЗаказа] [int] NULL,
[Наименование] [nvarchar](255) NULL,
[Количество] [int] NULL,
[Цена] [money] NULL,
[КодВидаРезки] [int] NULL,
[КодМатериала] [int] NULL,
[МатериалКлиента] [bit] NULL,
[Макет] [image] NULL,
[Документы] [image] NULL,
CONSTRAINT [PK_СпецификацияЗаказа] PRIMARY KEY CLUSTERED
(
[КодСпецификации] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
/****** Object: View [dbo].[ПредотчетЗАказы] Script Date: 04.12.2020 22:29:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE VIEW [dbo].[ПредотчетЗАказы]
AS
SELECT YEAR(dbo.Заказы.ДатаЗаказа) AS Год, MONTH(dbo.Заказы.ДатаЗаказа) AS Месяц, SUM(dbo.Заказы.КодЗаказа) AS [Общее количество заказов],
dbo.СпецификацияЗаказа.Цена * dbo.СпецификацияЗаказа.Количество AS [Общая стоимость заказов]
FROM dbo.Заказы INNER JOIN
dbo.СпецификацияЗаказа ON dbo.Заказы.КодЗаказа = dbo.СпецификацияЗаказа.КодЗаказаGROUP BY YEAR(dbo.Заказы.ДатаЗаказа), MONTH(dbo.Заказы.ДатаЗаказа), dbo.СпецификацияЗаказа.Цена, dbo.СпецификацияЗаказа.КоличествоGO
/****** Object: View [dbo].[Статистика заказов] Script Date: 04.12.2020 22:29:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE VIEW [dbo].[Статистика заказов]
AS
SELECT Год, Месяц, SUM([Общее количество заказов]) AS [Общее количество заказов], SUM([Общая стоимость заказов]) AS [Общая стоимость заказов], SUM([Общее количество заказов]) -
(SELECT SUM([Общее количество заказов]) AS Expr1
FROM dbo.ПредотчетЗАказы AS p
WHERE (Год = dbo.ПредотчетЗАказы.Год) AND (Месяц = dbo.ПредотчетЗАказы.Месяц - 1)) AS [Прирост количества заказов]
FROM dbo.ПредотчетЗАказыGROUP BY Год, Месяц
GO
/****** Object: Table [dbo].[Клиенты] Script Date: 04.12.2020 22:29:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Клиенты](
[КодКлиента] [int] IDENTITY(1,1) NOT NULL,
[ФИО] [nvarchar](255) NULL,
[АдресДоставки] [nvarchar](255) NULL,
[Телефон] [nvarchar](255) NULL,
[РеквизитыДляДоговора] [nvarchar](255) NULL,
[ЭлектронныйАдрес] [nvarchar](255) NULL,
CONSTRAINT [PK_Клиенты] PRIMARY KEY CLUSTERED
(
[КодКлиента] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: View [dbo].[Невыданные заказы] Script Date: 04.12.2020 22:29:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE VIEW [dbo].[Невыданные заказы]
AS
SELECT dbo.Заказы.НомерЗаказа, dbo.Заказы.ДатаЗаказа, dbo.Клиенты.ФИО, dbo.Заказы.НомерДоговора, SUM(dbo.СпецификацияЗаказа.Количество) AS [Sum-Количество], SUM(dbo.СпецификацияЗаказа.Цена)
AS [Sum-Цена]
FROM dbo.Клиенты INNER JOIN
dbo.Заказы ON dbo.Клиенты.КодКлиента = dbo.Заказы.КодКлиента INNER JOIN
dbo.СпецификацияЗаказа ON dbo.Заказы.КодЗаказа = dbo.СпецификацияЗаказа.КодЗаказаWHERE (dbo.Заказы.КодЗаказа NOT IN
(SELECT КодЗаказа FROM dbo.Отпуск AS a))
GROUP BY dbo.Заказы.НомерЗаказа, dbo.Заказы.ДатаЗаказа, dbo.Клиенты.ФИО, dbo.Заказы.НомерДоговораGO
/****** Object: View [dbo].[ОтчетПродажи] Script Date: 04.12.2020 22:29:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE VIEW [dbo].[ОтчетПродажи]
AS
SELECT dbo.Товары.Артикул, dbo.Товары.Наименование, dbo.Продажа.ДатаПродажи, dbo.СпецПродажи.Количество, dbo.СпецПродажи.Цена
FROM dbo.Товары INNER JOIN
dbo.Продажа INNER JOIN
dbo.СпецПродажи ON dbo.Продажа.КодПродажи = dbo.СпецПродажи.КодПродажи ON dbo.Товары.КодТовара = dbo.СпецПродажи.КодТовараGO
/****** Object: View [dbo].[ПоступилоОтпущено] Script Date: 04.12.2020 22:29:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE VIEW [dbo].[ПоступилоОтпущено]
AS
SELECT dbo.Товары.Наименование, dbo.Товары.Артикул, SUM(dbo.Поступление.Количество) AS Поступило, SUM(dbo.Поступление.Количество * dbo.Поступление.ЦенаПоставки) AS [Стоимость поставки],
SUM(dbo.ОтпускСоСклада.Количество) AS Продано, SUM(dbo.ОтпускСоСклада.Количество * dbo.ОтпускСоСклада.Цена) AS [Стоимость продажи]
FROM dbo.ОтпускСоСклада INNER JOIN
dbo.Товары INNER JOIN
dbo.Поступление ON dbo.Товары.КодТовара = dbo.Поступление.КодТовара ON dbo.ОтпускСоСклада.КодТовара = dbo.Товары.КодТовараGROUP BY dbo.Товары.Наименование, dbo.Товары.Артикул
GO
/****** Object: View [dbo].[Состояние склада] Script Date: 04.12.2020 22:29:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE VIEW [dbo].[Состояние склада]
AS
SELECT dbo.Товары.КодТовара, dbo.КатегорииТоваров.Наименование, dbo.Товары.Артикул, dbo.Товары.Наименование + ' ' + dbo.Товары.СпособОплаты + ' ' + dbo.Товары.Размер AS Товар, dbo.Товары.ЕдиницаИзмерения,
dbo.Поступление.Количество,
(SELECT SUM(Количество) AS Expr1
FROM dbo.СпецПродажи WHERE (КодТовара = dbo.Поступление.КодТовара)) AS Отпущено, dbo.Поступление.Количество - ISNULL
((SELECT SUM(Количество) AS Expr1
FROM dbo.СпецПродажи AS СпецПродажи_1
WHERE (КодТовара = dbo.Поступление.КодТовара)), 0) AS Остаток
FROM dbo.КатегорииТоваров INNER JOIN
dbo.Товары ON dbo.КатегорииТоваров.КодКатегории = dbo.Товары.КодКатегории INNER JOIN
dbo.Поставки INNER JOIN
dbo.Поступление ON dbo.Поставки.[Код заказа] = dbo.Поступление.КодПоставки ON dbo.Товары.КодТовара = dbo.Поступление.КодТовараGO
/****** Object: Table [dbo].[Кадры] Script Date: 04.12.2020 22:29:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Кадры](
[Код сотрудника] [int] IDENTITY(1,1) NOT NULL,
[Фамилия сотрудника] [nvarchar](15) NULL,
[Имя сотрудника] [nvarchar](15) NULL,
[Отчество сотрудника] [nvarchar](17) NULL,
[Отдел] [int] NULL,
[Должность] [int] NULL,
[Дата поступления в фирму] [datetime] NULL,
[Дата рождения] [datetime] NULL,
[Район проживания] [nvarchar](14) NULL,
[Адрес] [nvarchar](70) NULL,
[Паспортные данные] [nvarchar](100) NULL,
CONSTRAINT [PK_Кадры] PRIMARY KEY CLUSTERED
(
[Код сотрудника] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: View [dbo].[СписокОтпуска] Script Date: 04.12.2020 22:29:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE VIEW [dbo].[СписокОтпуска]
AS
SELECT dbo.Кадры.[Фамилия сотрудника], dbo.Отпуск.[Дата накладной], dbo.Отпуск.[Номер накладной], dbo.Товары.Наименование, dbo.Товары.Артикул, dbo.ОтпускСоСклада.Количество
FROM dbo.КатегорииТоваров INNER JOIN
dbo.Товары INNER JOIN
dbo.ОтпускСоСклада ON dbo.Товары.КодТовара = dbo.ОтпускСоСклада.КодТовара INNER JOIN
dbo.Кадры INNER JOIN
dbo.Отпуск ON dbo.Кадры.[Код сотрудника] = dbo.Отпуск.[Код сотрудника] ON dbo.ОтпускСоСклада.КодНакладнойОтпуска = dbo.Отпуск.[Код заказа] ON
dbo.КатегорииТоваров.КодКатегории = dbo.Товары.КодКатегорииGO
/****** Object: View [dbo].[Срок выполнения заказов] Script Date: 04.12.2020 22:29:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE VIEW [dbo].[Срок выполнения заказов]
AS
SELECT dbo.Заказы.НомерЗаказа, dbo.Заказы.ДатаЗаказа, dbo.СпецификацияЗаказа.Наименование, dbo.СпецификацияЗаказа.Количество, dbo.СпецификацияЗаказа.Цена AS Стоимость,
dbo.КатегорииТоваров.Наименование AS Категория, dbo.Поставки.[Дата накладной] AS Изготовлено, dbo.Отпуск.[Дата накладной] AS Выдано, DATEDIFF(d, dbo.Заказы.ДатаЗаказа, dbo.Поставки.[Дата накладной])
AS [Срок исполнения]
FROM dbo.Поставки RIGHT OUTER JOIN
dbo.Заказы INNER JOIN
dbo.СпецификацияЗаказа ON dbo.Заказы.КодЗаказа = dbo.СпецификацияЗаказа.КодЗаказа INNER JOIN
dbo.КатегорииТоваров ON dbo.СпецификацияЗаказа.КодВидаРезки = dbo.КатегорииТоваров.КодКатегории ON dbo.Поставки.КодЗаказа = dbo.Заказы.КодЗаказа INNER JOIN
dbo.Отпуск ON dbo.Заказы.КодЗаказа = dbo.Отпуск.КодЗаказаGO
/****** Object: View [dbo].[Статистика количества и средней стоимости по видам резки] Script Date: 04.12.2020 22:29:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE VIEW [dbo].[Статистика количества и средней стоимости по видам резки]
AS
SELECT dbo.КатегорииТоваров.Наименование, COUNT(dbo.СпецификацияЗаказа.КодСпецификации) AS [Количество заказов], AVG(dbo.СпецификацияЗаказа.Цена) AS [Средняя стоимость]
FROM dbo.СпецификацияЗаказа INNER JOIN
dbo.КатегорииТоваров ON dbo.СпецификацияЗаказа.КодВидаРезки = dbo.КатегорииТоваров.КодКатегорииGROUP BY dbo.КатегорииТоваров.НаименованиеGO
/****** Object: Table [dbo].[History] Script Date: 04.12.2020 22:29:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[History](
[Id] [int] IDENTITY(1,1) NOT NULL,
[ProductId] [int] NOT NULL,
[Operation] [nvarchar](200) NOT NULL,
[CreateAt] [datetime] NOT NULL,
PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[Должности] Script Date: 04.12.2020 22:29:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Должности](
[КодДолжности] [int] IDENTITY(1,1) NOT NULL,
[Наименование] [nvarchar](255) NULL,
CONSTRAINT [PK_Должности] PRIMARY KEY CLUSTERED
(
[КодДолжности] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[Идентификация] Script Date: 04.12.2020 22:29:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Идентификация](
[Код] [int] IDENTITY(1,1) NOT NULL,
[Логин] [nvarchar](255) NULL,
[Пароль] [nvarchar](255) NULL,
[КодСотрудника] [int] NULL,
CONSTRAINT [PK_Идентификация] PRIMARY KEY CLUSTERED
(
[Код] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[Комплектация] Script Date: 04.12.2020 22:29:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Комплектация](
[КодКомплектации] [int] IDENTITY(1,1) NOT NULL,
[КодГотПрод] [int] NULL,
[КодКомпл] [int] NULL,
[Количество] [int] NULL,
[ДатаОтпуска] [datetime] NULL,
[КодОтветственного] [int] NULL,
CONSTRAINT [PK_Комплектация] PRIMARY KEY CLUSTERED
(
[КодКомплектации] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[Комплектующие] Script Date: 04.12.2020 22:29:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Комплектующие](
[КодКомпл] [int] IDENTITY(1,1) NOT NULL,
[Наименование] [nvarchar](255) NULL,
[ЦенаПоставки] [money] NULL,
[КодПоставщика] [int] NULL,
[ЕдИзмерения] [nvarchar](255) NULL,
CONSTRAINT [PK_Комплектующие] PRIMARY KEY CLUSTERED
(
[КодКомпл] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[Отделы] Script Date: 04.12.2020 22:29:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Отделы](
[КодОтдела] [int] IDENTITY(1,1) NOT NULL,
[Наименование] [nvarchar](255) NULL,
CONSTRAINT [PK_Отделы] PRIMARY KEY CLUSTERED
(
[КодОтдела] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[Поставщики] Script Date: 04.12.2020 22:29:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Поставщики](
[Код поставщика] [int] IDENTITY(1,1) NOT NULL,
[Статус] [nvarchar](3) NULL,
[Название фирмы] [nvarchar](70) NULL,
[Страна] [nvarchar](30) NULL,
[Город] [nvarchar](30) NULL,
[Адрес] [nvarchar](70) NULL,
[Номер] [nvarchar](17) NULL,
[Факс] [nvarchar](17) NULL,
[Банк] [nvarchar](16) NULL,
[ИНН] [nvarchar](11) NULL,
[Расчетный счет] [nvarchar](21) NULL,
[КоличествоПоставок] [int] NULL,
CONSTRAINT [PK_Поставщики] PRIMARY KEY CLUSTERED
(
[Код поставщика] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[ПоступлениеПоНакл] Script Date: 04.12.2020 22:29:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[ПоступлениеПоНакл](
[КодПоступления] [int] IDENTITY(1,1) NOT NULL,
[КодТовара] [int] NULL,
[КодПоставки] [int] NULL,
[Количество] [int] NULL,
[ЦенаПоставки] [money] NULL,
CONSTRAINT [PK_ПоступлениеПоНакл] PRIMARY KEY CLUSTERED
(
[КодПоступления] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
ПРИЛОЖЕНИЕ Б. ФРАГМЕНТЫ ИСХОДНОГО КОДАusing System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Sklad{
public partial class FormAuth : Form
{
public FormAuth()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
DataRow[] dt = BDDataSet.Идентификация.Select("Логин='" + textBox1.Text + "' and Пароль='" + maskedTextBox1.Text + "'");
if (dt == null || dt.Count() == 0)
{
MessageBox.Show("Неверный логин и/или пароль", "", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
else
{
Form1 f = new Form1();
f.Show();
this.Hide();
}
}
public void LoadConnection()
{
//получаем данные из файла settings.ini в массив строк
string[] strok = File.ReadAllLines("settings.ini");
//если файл есть и не пустой, значит массив будет не пустой и считываем данные
if (strok != null)
{
//переменная неопределеннного типа для доступа к файлу app.config, который содржит все настройки проекта
var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
// ищем секцию connectionStrings, которая содержит инфоормацию о подключенияъх к БД, их может быть много
var connectionStringsSection = (ConnectionStringsSection)config.GetSection("connectionStrings");
//получаем нашу строку подключения с именем DTP.Properties.Settings.DTPConnectionString и присватваем ей
//значение из переменной, полученной из файла
//чтобы подключить бд
string[] ss = strok[0].Split(';');
string cc = "Data Source = " + ss[0] + "; Initial Catalog = " + ss[1] + "; Integrated Security = True";
if (!string.IsNullOrEmpty(ss[2])) cc += "User Id=" + ss[2] + ";Password = " + ss[3] + "; ";
connectionStringsSection.ConnectionStrings["Sklad.Properties.Settings.BD1ConnectionString"].ConnectionString = cc;
config.Save();// сохранение файла app.config ConfigurationManager.RefreshSection("connectionStrings");//обновление секции connectionStrings, чтобы изменения
//вступили в силу
}
else
{
MessageBox.Show("Настройте подключение к БД", "", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
private void FormAuth_Load(object sender, EventArgs e)
{
LoadConnection();
// TODO: данная строка кода позволяет загрузить данные в таблицу "BDDataSet.Идентификация". При необходимости она может быть перемещена или удалена.
this.идентификацияTableAdapter.Fill(this.BDDataSet.Идентификация);
}
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
using Microsoft.Office.Interop.Excel;
using System.Runtime.InteropServices;
namespace Sklad{
public partial class FormSostSklad : Form
{
public FormSostSklad()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
this.Close();
}
private void LoadData()
{
}
private void FormSostSklad_Load(object sender, EventArgs e)
{
// TODO: данная строка кода позволяет загрузить данные в таблицу "bDDataSet.Состояние_склада". При необходимости она может быть перемещена или удалена.
this.состояние_складаTableAdapter.Fill(this.bDDataSet.Состояние_склада);
// TODO: данная строка кода позволяет загрузить данные в таблицу "bDDataSet.Состояние_склада". При необходимости она может быть перемещена или удалена.
this.состояние_складаTableAdapter.Fill(this.bDDataSet.Состояние_склада);
LoadData();
}
private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
}
private void toolStripButton1_Click(object sender, EventArgs e)
{
toolStripTextBox1.Text = "";
LoadData();
}
private void toolStripComboBox1_Click(object sender, EventArgs e)
{
}
private void toolStripTextBox1_TextChanged(object sender, EventArgs e)
{
LoadData();
if (toolStripTextBox1.Text == "")
{
return;
}
if (toolStripComboBox1.Text == "по наименованию")
{
for (int i = 0; i <= dataGridView1.Rows.Count - 1; i++)
if (!dataGridView1[4, i].Value.ToString().ToLower().StartsWith(toolStripTextBox1.Text))
{
dataGridView1.Rows.RemoveAt(i);
i--;
}
}
if (toolStripComboBox1.Text == "по ФИО")
{
for (int i = 0; i <= dataGridView1.Rows.Count - 1; i++)
if (!dataGridView1[2, i].Value.ToString().ToLower().StartsWith(toolStripTextBox1.Text))
{
dataGridView1.Rows.RemoveAt(i);
i--;
}
}
if (toolStripComboBox1.Text == "по номеру заказа")
{
for (int i = 0; i <= dataGridView1.Rows.Count - 1; i++)
if (!dataGridView1[0, i].Value.ToString().ToLower().StartsWith(toolStripTextBox1.Text))
{
dataGridView1.Rows.RemoveAt(i);
i--;
}
}
}
private void toolStripTextBox1_Click(object sender, EventArgs e)
{
}
public void ExportToExcel(DataGridView grid)
{
Microsoft.Office.Interop.Excel.Application Exl = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook wb;
XlReferenceStyle RefStyle = Exl.ReferenceStyle;
Exl.Visible = true;
wb = Exl.Workbooks.Add();
Worksheet ws = wb.Worksheets.get_Item(1) as Worksheet;
for (int j = 0; j < grid.Columns.Count; ++j)
{
(ws.Cells[1, j + 1] as Range).Value2 = grid.Columns[j].HeaderText;
for (int i = 0; i < grid.Rows.Count; ++i)
{
object Val = grid.Rows[i].Cells[j].Value;
if (Val != null)
(ws.Cells[i + 2, j + 1] as Range).Value2 = Val.ToString();
}
}
ws.Columns.EntireColumn.AutoFit();
Exl.ReferenceStyle = RefStyle;
Exl.Visible = true;
Marshal.ReleaseComObject(Exl);
//ReleaseExcel(Exl as Object);
}
private void button2_Click(object sender, EventArgs e)
{
ExportToExcel(dataGridView1);
}
private void panel1_Paint(object sender, PaintEventArgs e)
{
}
private void bindingNavigator1_RefreshItems(object sender, EventArgs e)
Сделайте индивидуальный заказ на нашем сервисе. Там эксперты помогают с учебой без посредников
Разместите задание – сайт бесплатно отправит его исполнителя, и они предложат цены.
Цены ниже, чем в агентствах и у конкурентов
Вы работаете с экспертами напрямую. Поэтому стоимость работ приятно вас удивит
Бесплатные доработки и консультации
Исполнитель внесет нужные правки в работу по вашему требованию без доплат. Корректировки в максимально короткие сроки
Гарантируем возврат
Если работа вас не устроит – мы вернем 100% суммы заказа
Техподдержка 7 дней в неделю
Наши менеджеры всегда на связи и оперативно решат любую проблему
Строгий отбор экспертов
К работе допускаются только проверенные специалисты с высшим образованием. Проверяем диплом на оценки «хорошо» и «отлично»
Работы выполняют эксперты в своём деле. Они ценят свою репутацию, поэтому результат выполненной работы гарантирован
Ежедневно эксперты готовы работать над 1000 заданиями. Контролируйте процесс написания работы в режиме онлайн
Составить рисковый проект (проектирование объекта по управлению рисками)
Контрольная, Проектный менеджмент
Срок сдачи к 8 дек.
Написать реферат по теме: «Государство всеобщего благоденствия»: концепция К. Мюрдаля.
Реферат, Политические и правовые учения
Срок сдачи к 8 дек.
Административно-правовое регулирования в сфере профилактики правонарушений несовершеннолетних
Диплом, Юриспруденция
Срок сдачи к 5 дек.
Конституционные основы статуса иностранцев и лиц без гражданства в России.
Курсовая, Конституционное право
Срок сдачи к 12 дек.
Физическая культура и спорт в высшем учебном заведении.
Реферат, Физическая культура
Срок сдачи к 6 дек.
Тенденции развития института участия прокурора в арбитражном судопроизводстве.
Курсовая, Прокурорский надзор
Срок сдачи к 15 дек.
Описание задания в файле, необходимо выполнить 6 вариант
Курсовая, Схемотехника
Срок сдачи к 20 янв.
Аристотель, 15 страниц, не менее 5 источников и ссылки указывающие на...
Реферат, Философия
Срок сдачи к 12 дек.
Нужен реферат на 10 листов
Реферат, Математическое Моделирование Водных Экосистем
Срок сдачи к 11 дек.
Финансовый анализ компании Wildberries - участие компании на рынке ценных бумаг и использование компанией деривативов и валюты в рамках своей деятельности
Доклад, Финансы
Срок сдачи к 11 дек.
Заполните форму и узнайте цену на индивидуальную работу!