Информационная система (ИС) учета компьютерных комплектующих в магазине

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

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

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

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

Размещено на http://www.allbest.ru

СОДЕРЖАНИЕ

ВВЕДЕНИЕ

ГЛАВА 1. АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ

1.1 Анализ организации учета вкладов и кредитов в банке

1.2 Требования к разработке информационной системы

1.3 Выбор и анализ средств разработки

Выводы по главе 1

ГЛАВА 2. ПРОЕКТИРОВАНИЕ ИС

2.1 Проектирование БД

2.2 Проектирование приложения .NET Framework

Выводы по главе 2

ГЛАВА 3. РЕАЛИЗАЦИЯ ИС

3.1 Реализация БД

3.2 Реализация приложения .NET Framework

3.3 Организация взаимодействия с ИС

Выводы по главе 3

ЗАКЛЮЧЕНИЕ

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

ПРИЛОЖЕНИЕ

база данный учет информационный

Введение

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

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

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

Цель и задачи исследования. Повышение эффективности работы продавца магазина.

Задачами курсовой работы являются:

Анализ организации учета компьютерных комплектующих в магазине.

Выбор и анализ современных средств и технологий разработки распределенного программного обеспечения.

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

Структура и объем курсовой работы. Курсовая работа состоит из введения, трех глав, заключения, списка литературы из 12 наименований (из них - 4 адреса электронных ресурсов) и приложения с исходным кодом приложения .NET Framework на языке Visual C#. Она изложена на 66 страницах текста формата А4, содержит 56 рисунков, 10 таблиц и 1 приложение.

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

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

В третьей главе приводятся основные этапы реализации БД информационной системы и приложения .NET Framework. Описываются основные этапы взаимодействия с информационной системой.

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

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

В приложении приводится исходный код основных классов приложения .NET Framework на языке программирования Visual C#.

ГЛАВА 1. АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ

1.1 Анализ организации учета информации о компьютерных комплектующих в магазине

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

Основными этапами учета информации об комплектующих являются:

Поступление новых комплектующих.

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

Удаление комплектующих.

При продаже или поломке комплектующих, сотрудник магазина удаляет комплектующих из списка.

Поиск информации об комплектующих.

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

Сборка компьютера из имеющихся комплектующих.

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

Сортировка по типу комплектующих.

Производится сортировка комплектующих, которые будут выводится на экран, по их типу.

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

Формализуем предметную область с использованием принципов процессного подхода (построим диаграммы IDEF0 и IDEF3) и с использованием диаграмм потоков данных (диаграммы DFD) [1, 2].

Контекстная диаграмма и единицы работ при взаимодействии с ИС учета вкладов и кредитов в банке в нотации IDEF0 приведены на рис. 1.1-1.2 соответственно.

Как показал анализ предметной области, основными единицами работ при взаимодействии с ИС являются:

добавление новых комплектующих;

удаление комплектующих;

поиск информации об комплектующих;

сборка компьютера из имеющихся комплектующих;

сортировка по типу комплектующих.

Эти единицы работ реализуются после выбора типа взаимодействия с ИС, см. рис. 1.3. Декомпозиция единицы работы “Выбор типа взаимодействия” и декомпозиция единиц работы “Реализация взаимодействия” - “Добавление комплектующих”, “Удаление комплектующих”, “Поиск информации о комплектующих”, “Сборка компьютера из имеющихся комплектующих” и “Сотрировка комплектующих” в нотации IDEF3 показана на рис. 1.3-1.6.

Диаграмма потоков данных в нотации Гейна-Сэрсона [1] приведена на рис. 1.7.

Рис. 1.1. Контекстная диаграмма взаимодействия с ИС

Рис. 1.2. Единицы работы при взаимодействии с ИС

Рис. 1.3. Декомпозиция единицы работы “Выбор типа взаимодействия”

Рис. 1.4. Декомпозиция единицы работы “Добавление комплектующих”

Рис. 1.5. Декомпозиция единицы работы “Поиск информации о комплектующих”

Рис. 1.6. Декомпозиция единицы работы “Сортировка комплектующих”

Рис. 1.7. Диаграмма потоков данных при взаимодействии с ИС

Спецификации структур данных для приведенных на рис. 1.7 потоков информации следующие.

Поступление новых комплектующих.

Наименование.

Тип.

Поставщик.

Количество.

Цена.

Запись информации о комплектующих.

Наименование.

Тип.

Поставщик.

Количество.

Цена.

Запись информации о поставщике.

Наименование.

Адрес.

Телефон.

Считывание информации о поставщике.

Наименование.

Адрес.

Телефон.

Запись информации о заказчике

ФИО.

Контактный телефон.

E-mail.

Количество заказов.

Общая сумма заказов.

Считывание информации о заказчике.

ФИО.

Контактный телефон.

E-mail.

Количество заказов.

Общая сумма заказов.

Информация о сервисных центрах.

Название.

Адрес.

Телефон.

Спецификации структур данных указанных выше определяют следующую структуру хранилища информации ИС:

Информация о комплектующих

Тип.

Наименование.

Производитель.

Цена.

Количество.

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

Производитель.

Контактный телефон.

Адрес.

Информация о заказчике

ФИО.

Контактый телефон.

E-mail.

Количество заказов.

Сумма заказов.

Начальный вариант концептуальной модели данных, определимый структурой хранилища информации о технике, имеет следующий вид, рис. 1.8.

Рис. 1.8. Начальный вариант концептуальной модели данных ИС

Приведенные на рис. 1.3-1.6 диаграммы процессов должны определить основную функциональность ИС, а диаграмма Гейна-Сэрсона, приведенная на рис. 1.7, струтура хранилища информации о технике и начальный вариант концептуальной модели данных должны определить структуру БД.

Теперь сформулируем требования к разработке ИС.

1.2 Требования к разработке ИС

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

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

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

Минимальная конфигурация вычислительной системы - тип процессора: Pentium 4, 1ГГц и выше; минимальный объем оперативного запоминающего устройства 1024 Мб и более; минимальное место на диске - 850 МБ.

Вычислительная система должна работать под управлением операционных систем: Windows 7; Windows Server 2003 Service Pack 2; Windows Server 2008; Windows Server 2008 R2; Windows Vista Service Pack 1; Windows XP Service Pack 3. Обязательно наличие исполняющей среды .NET Framework 4.0.

Перейдем теперь к выбору СУБД, языка и среды программирования для разработки ИС.

1.3 Выбор и анализ средств разработки

Исходя из личных предпочтений, для реализации ИС банка для учета вкладов и кредитов была выбрана среда разработки Microsoft Visual Studio.

Microsoft Visual Studio является лучшей средой разработки приложений любого типа для платформы .NET Framework и имеет следующие особенности:

является интуитивно понятной, расширяемой, унифицированной средой для языков программирования высокого уровня;

предоставляет разработчикам набор модернизированных взаимодействующих языков .NET Framework, соответствующих имеющимся у разработчиков навыкам;

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

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

Разработчики, применяющие Microsoft Visual Studio, получают в свое распоряжение интегрированный продукт, включающий различные средства, необходимые для процесса разработки, тестирования, развертывания, интеграции и управления ПО. Эти средства работать с большей отдачей и затрачивать меньше усилий на решение повторяющихся задач. Следует отметить высокопроизводительные редакторы кода, поддержку технологии IntelliSense, мастеров и различных языков кодирования в одной интегрированной среде разработки, а также продукты управления жизненным циклом приложений. Постоянно появляются новые средства, позволяющие разработчикам сосредоточиться на решении основных проблем, а не на рутинной работе.

Microsoft Visual Studio 2008 - это новейшая на данный момент времени версия Visual Studio, превосходящая предыдущие версии по очень многим параметрам: она поддерживает новые и улучшенные объекты, включает среду разработки с обновленным интерфейсом и отличается интегрированной поддержкой Microsoft SQL Server 2008, позволяя создавать и развертывать проекты с применением сервера БД.

Существенной особенностью Microsoft Visual Studio 2008 является его сближение с СУБД Microsoft SQL Server 2008, полностью интегрированным с CLR. Это означает, что программист получает в распоряжение все возможности, предоставляемые .NET Framework. Разработчик БД может использовать объектно-ориентированные языки программирования, такие как Visual C# и Visual Basic, опираясь на широчайший спектр встроенных возможностей классов и методов .NET Framework. Кроме того, программист может воспользоваться компонентами, написанными сторонними компаниями. Разработчикам БД доступны два новых типа объектов агрегаты и пользовательские типы. Объекты БД, написанные с применением .NET Framework, становятся более защищенными, так как управляемый код выполняется в среде CLR. Общая среда разработки всех компонентов приложения дает возможность создавать управляемые объекты Microsoft SQL Server 2008, не покидая привычного окружения. Это позволяет использовать для создания и отладки объектов БД те же инструменты, что и для написания других компонентов и служб .NET Framework.

Таким образом, Microsoft Visual Studio 2008 это не только удобный инструмент разработки и отладки широкого спектра приложений, но и упрощенный доступ к хранилищам данных, возможность выполнения тестирования и улучшение управляемости программного проекта в целом.

Одним из языков среды разработки Visual Studio 2008 является Visual С# [3]. Современный, объектно-ориентированный язык программирования Visual С# разработан фирмой Microsoft специально для платформы .NET Framework. Visual C# относится к семейству языков с C-подобным синтаксисом, и наиболее близок к C++ и Java. Он имеет строгую типизацию, поддерживает полиморфизм, перегрузку операторов (в том числе операторов явного и неявного приведения типа), делегаты, атрибуты, события, свойства, обобщённые типы и методы, итераторы, анонимные функции с поддержкой замыканий, LINQ, исключения, комментарии в формате XML.

Выберем в качестве языка программирования для написания приложения .NET Framework язык Visual C#.

В качестве технологии доступа к источнику данных выберем ADO.NET [4]. Эта технология предоставляет набор классов, в которых реализовано взаимодействие с поставщиками данных для разных СУБД. Классы ADO.NET делятся на автономные и подключаемые. Подключаемые классы требуют соединения с источником данных (Connection, Transaction, Command, Parameter и др.). Автономные классы (DataSet, DataTable, DataRow, DataColumn и др.) соединения с источником данных не требуют, они работают с данными, размещенными на клиентском компьютере. Важным классом ADO.NET является DataAdapter, который предназначен для взаимодействия классов, требующих соединения и автономных, рис. 1.9.

Рис. 1.9. Архитектура ADO.NET

Несомненным достоинством ADO.NET является ее взаимодействие LINQ - современной технологией, расширяющей возможности синтаксисов языков C# и Visual Basic, рис. 1.10.

Рис. 1.10. Взаимосвязь технологий ADO.NET и LINQ

LINQ предоставляет возможность формирования шаблонов для запроса и изменения данных из практически любого типа их источника [5-8]. Технология LINQ позволяет писать запросы не только к объектам (LINQ to Objects), XML-документам (LINQ to XML) и др. но и к реляционным источникам данных (LINQ to SQL).

Наиболее важным классом LINQ to SQL является класс DataContext, который предоставляет широкий доступ к БД. Класс DataContext транслирует запросы сущностных классов (классов, отображенных на таблицы БД) в операторы SQL, которые выполняются на подключаемой БД. Производный от DataContext класс имяDataContext предоставляет доступ у целой группе методов базы данных, таких как ExecuteQuery, ExecuteCommand и SubmitChanges. В дополнение к этим унаследованным методам, этот будет содержать свойства типа System.Data.Linq.Table<T> для каждой таблицы T в БД, с которой предполагается использовать LINQ to SQL.

Таким образом, вся БД представляет собой объект пользовательского класса, унаследованного от класса DataContext, а таблицы БД являются свойствами этого объекта. Такое отображение базы данных в объектную модель называется объектно-реляционное проецирование.

Главные достоинства ADO.NET:

Позволяет работать с разными источниками данных. Разработчик приложения может и не знать, какое СУБД будет у БД - ему достаточно будет поменять поставщика данных;

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

Главные недостатки ADO.NET:

Ограниченные возможности работы с запросами только одного компонента DataSet.

Главные достоинства LINQ:

При определенных условиях позволяет произвести глубокую интеграцию БД и приложения;

Значительно ускоряет процесс написания запросов к БД, за счет расширения синтаксиса языков C# и Visual Basic;

Предоставляет компоненты для удобной работы не только с БД, но и объектами, XML-документами и т.д.

Главные недостатки LINQ:

Многие функциональные возможности ограниченны только СУБД SQL Server.

Обе технологии отлично сочетаются, и таким образом практически закрывают недостатки друг друга. Выберем LINQ to SQL для реализации взаимодействия с БД посредством технологии ADO.NET.

Поскольку, как было отмечено в единственном недостатке LINQ, использование этой технологии ограничивается наличием SQL Server'а, выберем эту СУБД для реализации ИС банка для учета вкладов и кредитов.

Выводы по главе 1

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

ГЛАВА 2. ПРОЕКТИРОВАНИЕ ИС

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

2.1 Проектирование БД

Учитывая проведенный в главе 1 анализ предметной области, уточненная концептуальная модель данных (см. рис. 1.8), определяемая этой структурой, приведена на рис. 2.1 [1].

Рис. 2.1. Уточненная концептуальная модель данных ИС

Выделим основные сущности и их атрибуты, которые будут присутствовать в реализуемой базе данных. (табл.1-4)

Таблица 1

Атрибуты сущности “Комплектующие”

Имя атрибута

Назначение

Тип данных

ID

Первичный ключ

int

Name

Наименование

nchar(20)

Price

Цена

int

InStore

Количество

int

Manufacturer

Производитель

nchar(15)

Type

Тип

Nchar(10)

Таблица 2

Атрибуты сущности “Заказчики”

Имя атрибута

Назначение

Тип данных

ID

Первичный ключ

int

Name

ФИО

nchar(30)

Phone

Контактный телефон

nchar(10)

Mail

E-mail

nchar(20)

Orders

Количество заказов

int

TotalPrice

Общая сумма закозов

int

Таблица 3

Атрибуты сущности “Поставщики”

Имя атрибута

Назначение

Тип данных

Manufacturer

Внешний ключ на сущность “Комплектующие”

nchar(15)

Address

Адрес

nchar(50)

Phone

Телефон

int

Таблица 4

Атрибуты сущности “Сервисы”

Имя атрибута

Назначение

Тип данных

ID

Первичный ключ

int

Name

Название

nchar(50)

Address

Адрес

nchar(50)

Phone

Телефон

int

2.2 Проектирование приложения .NET Framework

Приложение .NET Framework, реализующее взаимодействие с информацией БД, должно реализовывать следующие основные операции:

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

добавление, удаление информации о них;

поиск информации о комплектующих.

Реализация практически каждой из описанных выше операций потребует своего диалогового окна и реализующего его функциональность класса приложения .NET Framework. Соответствующие классы приложения .NET Frame-work приведены в табл. 5.

Таблица 5

Основные классы приложения .NET Framework

Имя класса

Назначение класса

Form1

Главный класс приложения

DataBaseWorker

Класс, реализующий редактирование таблиц

AddCenter

Класс, реализующий добавление сервис центра

AddManufacturer

Класс, реализующий добавление заказчика

AddComponent

Класс, реализующий добавление комплектующих

DataBaseViewer

Класс, реализующий визуализацию таблиц

На рис. 8 приведена UML диаграмма классов

Рис. 8 UML диаграмма классов.

Выводы по главе 2

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

ГЛАВА 3. РЕАЛИЗАЦИЯ АРМ

Реализация проекта заключается в реализации спроектированных выше БД и взаимодействующего с ней приложения .NET Framework.

3.1 Реализация БД

Для реализации таблиц БД воспользуемся Microsoft Visual Studio 2010. По командам его главного меню “Данные/Добавить новый источник данных…” создадим для СУБД SQL Server новую БД .

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

Рис. 3.1. Реализация таблицы “Комплектующие”

Рис. 3.2. Реализация таблицы “Заказчики”

Рис. 3.3 Реализация таблицы “Поставщики”

Рис. 3.4 Реализация таблицы “Сервисы”

Структура БД , реализованной в Microsoft Visual Studio 2010, показана на рис. 3.5

Рис. 3.5. Структура БД

3.2 Реализация приложения .NET Framework

Реализацию оконного приложения .NET Framework, осуществляющего взаимодействие с БД , начнем с добавления в проект поддержки технологии LINQ to SQL. Для этой цели выберем команды контекстно-зависимого меню проекта Microsoft Visual Studio 2010 “Добавить/Добавить новый элемент”. В появившемся вслед за этим диалоговом окне выберем элемент с именем “Классы LINQ to SQL” и укажем его имя в проекте -DataClasses.dbml

На следующем этапе выделим в обозревателе серверов таблицы БД “Db”, с которыми предполагается осуществлять взаимодействие, и перетащим их на поле редактирования объектно-реляционного проецирования. При этом классы таблиц БД будут сформированы автоматически, рис.3.6

Рис. 3.6. Сформированные технологией LINQ to SQL классы

объектно-реляционного проецирования таблиц БД .

Далее приступаем к описанию основных классов и их методов:

Класс «DataBaseViewer» (рис.3.8) содержит методы: «ShowComponents» (отображает в таблице комплектующие); «ShowCustomers» (отображает в таблице заказчиков) ; «ShowManufacture» (отображает в таблице поставщиков); «make_some_beauty» (создание разноцветных строк в таблице).

Рис. 3.7. UML-диаграмма класса «DataBaseViewer»

Класс «DataBaseWorker» (рис.3.9) содержит методы: «AddComponent», «AddCustomer», «AddManufacturer» (добавление в информации в таблицы); «GetAllComponents», «GetAllManufactures» (осуществляет добавление); «RemoveComponent» «RemoveCustomer», «RemoveManufacturer» ( удаление информации из таблиц).

Рис. 3.8. UML-диаграмма класса «DataBaseWorker»

Класс «AddCenter» (рис.3.10) содержит методы: «AddCenter» (добавление сервис-центра); «cancel_Click» (отмена добавления); «ok_Click» »(подтверждение добавления).

Рис. 3.9 UML-диаграмма класса «AddCenter»

Класс «AddManufacturerForm» (рис.3.11) содержит методы: «AddManufacturerForm» (инициализация формы добавления заказчика); «cancel_Click» (отмена добавления); «ok_Click» »(подтверждение добавления).

Рис. 3.10 UML-диаграмма класса «AddManufacturerForm»

Класс «AddComponentForm» (рис.3.12) содержит методы: «AddComponentForm_Load» (открытие формы добавления комплектующих); «f_formClosing» (закрытие формы); «AddComponentForm» (добавление комплектубщих); «cancel_Click» (отмена добавления); «ok_Click» »(подтверждение добавления).

Рис. 3.11 UML-диаграмма класса «AddComponentForm»

3.3 Организация взаимодействия с информацтонной системой

При запуске приложения появится главная форма (рис.3.12)

Рис. 3.12 Главная форма приложения.

При нажатии на кнопку «Просмотр», раскроется список таблиц («Комплектующие», «Поставщики», «Заказчики», «Сервисы»), доступных для просмотра (рис. 3.13)

Рис. 3.13 Выбор таблицы

При выборе режима просмотра определенной таблицы на экран будет выводиться соответствующая информация по данной таблице соответственно. (рис. 3.14, 3.15)

Рис 3.14. Информация о комплектующих

Рис. 3.15 Информация о заказчиках

По нажатию на кнопку «Редактирование» раскроется список с удалением или добавлением для каждой таблицы. (рис. 3.16)

Рис. 3.16 Редактирование таблиц

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

Рис. 3.17 Форма добавления комплектующих

Также, дополнительно, возможно добавление поставщиков. При нажатии на «+» возникнет новая форма добавления в которой прописывается наименование адрес и телефон поставщика. (рис 3.18)

Рис. 3.18 Форма добавления заказчиков

При нажатии на «Услуги»-- «Собрать компьютер» появится анкета заказчика (рис. 3.19). Заполнив все поля и нажав кнопку «Далее» появится список в котором можно выбрать необходимое оборудование для вашего компьютера из имеющихся в наличии комплектующих (рис. 3.20), при этом происходит суммирование стоимости всех составляющих.

Рис.3.19 Окно заполнения анкеты заказчика

Рис. 3.20 Окно выбора комплектующих для сборки компьютера.

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

Рис. 3.21 Осуществление поиска.

Выводы по главе 3

Реализована БД SQL Server, содержащая информацию о комплектующих, заказчиках, поставщиках и сервис-центрах. Реализовано приложение .NET Framework, осуществляющее взаимодействие с БД посредством СУБД SQL Server. Описаны основные этапы взаимодействия с приложением .NET Framework.

ЗАКЛЮЧЕНИЕ

ИС представляет собой распределенное приложение, и состоит из приложения .NET Framework и БД, доступ к которой осуществляется посредством СУБД Microsoft SQL Server.

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

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

реляционные БД (Microsoft SQL Server) и технология объектно-реляционного проецирования LINQ to SQL;

программирование на современных языках высокого уровня (Visual C#);

UML-моделирование;

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

Вендров А.М. Проектирование программного обеспечения экономических информационных систем: Учебник. - М.: Финансы и статистика, 2006. - 544 с.

http://itteach.ru/bpwin/ электронный ресурс, посвященный использованию AllFusion Process Modeler и стандартам IDEF0, IDEF3 и DFD.

Троелсен. Э. С# и платформа .NET. Библиотека программиста. /Пер. с англ. - СПб.: Питер, 2004. 796 с.

Вилдермьюс Ш. Практическое использование ADO.NET. - М: Изд. дом «Вильямс», 2003. - 288 с.

Фримен А. Раттц-мл. Д. LINQ. Язык интегрированных запросов в C# 2010 для профессионалов. - М: Изд. дом «Вильямс», 2011. - 656 с.

http://msdn.microsoft.com/en-us/library/bb425822.aspx англоязычный электронный ресурс, посвященный использованию технологии LINQ to SQL.

http://www.realcoding.net/article/view/6900 электронный ресурс, посвященный использованию технологии LINQ to SQL и СУБД SQL Server

http://www.intuit.ru/department/internet/mwebtech/10/4.html электронный ресурс, посвященный использованию проектирование баз данных и работа с технологиями LINQ, ADO.NET Entities и DDD.

Приложение.

Класс Form1

public partial class Form1 : Form

{

string[] filter = { "MB", "HDD", "RAM", "GPU", "Drive" };

string show = "Components";

public Form1()

{

InitializeComponent();

}

void show_customer_pan()

{

tbl.Width = 437;

customer_pan.Visible = true;

order_computers_pan.Visible = false;

for (int i = 0; i < tbl.ColumnCount; i++)

tbl.Columns[i].Width = tbl.Width / tbl.ColumnCount - 1;

}

void show_order_pan()

{

for (int i = 0; i < tbl.ColumnCount; i++)

tbl.Columns[i].Width = tbl.Width / tbl.ColumnCount - 1;

order_computers_pan.Visible = true;

customer_pan.Visible = false;

}

void cancel_order()

{

tbl.Width = 631;

for (int i = 0; i < tbl.ColumnCount; i++)

tbl.Columns[i].Width = tbl.Width / tbl.ColumnCount - 1;

customer_pan.Visible = false;

order_computers_pan.Visible = false;

ordered_before.Checked = false;

cust_name.Text = "";

cust_address.Text = "";

cust_mail.Text = "";

cust_phone.Text = "";

}

void set_filter()

{

if (show_mb.Checked) filter[0] = "MB";

else filter[0] = "";

if (show_hdd.Checked) filter[1] = "HDD";

else filter[1] = "";

if (show_ram.Checked) filter[2] = "RAM";

else filter[2] = "";

if (show_gpu.Checked) filter[3] = "GPU";

else filter[3] = "";

if (show_drive.Checked) filter[4] = "Drive";

else filter[4] = "";

}

void show_components()

{

set_filter();

DataBaseViewer.ShowComponents(tbl, filter, search_mask.Text);

}

void accept_order()

{

int price = 0;

string[] components = new string[5];

components[0] = comp_mb.Text;

components[1] = comp_hdd.Text;

components[2] = comp_gpu.Text;

components[3] = comp_ram.Text;

components[4] = comp_drive.Text;

DataBaseWorker.GetComponents(components);

price = int.Parse(comp_price.Text);

if (ordered_before.Checked)

DataBaseWorker.ChangeCustomer(customers_comdo.SelectedItem.ToString(), price);

else

DataBaseWorker.AddCustomer(cust_name.Text, cust_mail.Text, cust_address.Text, cust_phone.Text, int.Parse(comp_price.Text));

}

void component_selection()

{

#region

for (int i = 0; i < tbl.SelectedRows.Count; i++)

{

if (tbl.SelectedRows[i].Cells["Тип"].Value.ToString().Contains("HDD"))

{

if (comp_hdd.Text != "не выбрано")

for (int j = 0; j < tbl.RowCount; j++)

if (comp_hdd.Text == tbl.Rows[j].Cells["Наименование"].Value.ToString())

{

comp_price.Text = (int.Parse(comp_price.Text) - int.Parse(tbl.SelectedRows[i].Cells["Цена"].Value.ToString())).ToString();

break;

}

comp_hdd.Text = tbl.SelectedRows[i].Cells["Наименование"].Value.ToString();

comp_price.Text = (int.Parse(comp_price.Text) + int.Parse(tbl.SelectedRows[i].Cells["Цена"].Value.ToString())).ToString();

}

if (tbl.SelectedRows[i].Cells["Тип"].Value.ToString().Contains("MB"))

{

if (comp_mb.Text != "не выбрано")

for (int j = 0; j < tbl.RowCount; j++)

if (comp_hdd.Text == tbl.Rows[j].Cells["Наименование"].Value.ToString())

{

comp_price.Text = (int.Parse(comp_price.Text) - int.Parse(tbl.SelectedRows[i].Cells["Цена"].Value.ToString())).ToString();

break;

}

comp_mb.Text = tbl.SelectedRows[i].Cells["Наименование"].Value.ToString();

comp_price.Text = (int.Parse(comp_price.Text) + int.Parse(tbl.SelectedRows[i].Cells["Цена"].Value.ToString())).ToString();

}

if (tbl.SelectedRows[i].Cells["Тип"].Value.ToString().Contains("RAM"))

{

if (comp_ram.Text != "не выбрано")

for (int j = 0; j < tbl.RowCount; j++)

if (comp_hdd.Text == tbl.Rows[j].Cells["Наименование"].Value.ToString())

{

comp_price.Text = (int.Parse(comp_price.Text) - int.Parse(tbl.SelectedRows[i].Cells["Цена"].Value.ToString())).ToString();

break;

}

comp_ram.Text = tbl.SelectedRows[i].Cells["Наименование"].Value.ToString();

comp_price.Text = (int.Parse(comp_price.Text) + int.Parse(tbl.SelectedRows[i].Cells["Цена"].Value.ToString())).ToString();

}

if (tbl.SelectedRows[i].Cells["Тип"].Value.ToString().Contains("GPU"))

{

if (comp_gpu.Text != "не выбрано")

for (int j = 0; j < tbl.RowCount; j++)

if (comp_hdd.Text == tbl.Rows[j].Cells["Наименование"].Value.ToString())

{

comp_price.Text = (int.Parse(comp_price.Text) - int.Parse(tbl.SelectedRows[i].Cells["Цена"].Value.ToString())).ToString();

break;

}

comp_gpu.Text = tbl.SelectedRows[i].Cells["Наименование"].Value.ToString();

comp_price.Text = (int.Parse(comp_price.Text) + int.Parse(tbl.SelectedRows[i].Cells["Цена"].Value.ToString())).ToString();

}

if (tbl.SelectedRows[i].Cells["Тип"].Value.ToString().Contains("Drive"))

{

if (comp_drive.Text != "не выбрано")

for (int j = 0; j < tbl.RowCount; j++)

if (comp_hdd.Text == tbl.Rows[j].Cells["Наименование"].Value.ToString())

{

comp_price.Text = (int.Parse(comp_price.Text) - int.Parse(tbl.SelectedRows[i].Cells["Цена"].Value.ToString())).ToString();

break;

}

comp_drive.Text = tbl.SelectedRows[i].Cells["Наименование"].Value.ToString();

comp_price.Text = (int.Parse(comp_price.Text) + int.Parse(tbl.SelectedRows[i].Cells["Цена"].Value.ToString())).ToString();

}

}

#endregion

}

// Управляльщики панельками

#region

private void заказатьКомплектующиеToolStripMenuItem_Click(object sender, EventArgs e)

{

show_customer_pan();

show_components();

}

private void собратьКомпьютерToolStripMenuItem_Click(object sender, EventArgs e)

{

show_customer_pan();

show_components();

}

private void cancel_comp_order_Click(object sender, EventArgs e)

{

cancel_order();

}

private void accept_comp_order_Click(object sender, EventArgs e)

{

order_computers_pan.Visible = false;

tbl.Width = 630;

accept_order();

}

private void ordered_before_CheckedChanged(object sender, EventArgs e)

{

customers_comdo.Enabled = ordered_before.Checked;

if (ordered_before.Checked)

{

string db_path = @"F:\БАУМАНСКИЙ\6 Семестр\Курсач ОИС\Comps\Comps\CompDataBase.mdf";

DataClassesDataContext db = new DataClassesDataContext(db_path);

var a = from x in db.Customers

select new

{

ФИО = x.Name,

Адрес = x.Address,

Почта = x.Mail,

Телефон = x.Phone

};

customers_comdo.Items.Clear();

foreach (var s in a)

{

customers_comdo.Items.Add(s.ФИО);

}

}

else customers_comdo.Items.Clear();

}

private void customer_next_Click(object sender, EventArgs e)

{

show_order_pan();

}

private void customer_cancel_Click(object sender, EventArgs e)

{

cancel_order();

}

#endregion

// Показывальщики комплектующих

#region

private void комплектующиеToolStripMenuItem_Click(object sender, EventArgs e)

{

search_mask.Text = "";

show_components();

}

private void show_mb_CheckedChanged(object sender, EventArgs e)

{

show_components();

}

private void show_hdd_CheckedChanged(object sender, EventArgs e)

{

show_components();

}

private void show_ram_CheckedChanged(object sender, EventArgs e)

{

show_components();

}

private void show_gpu_CheckedChanged(object sender, EventArgs e)

{

show_components();

}

private void show_drive_CheckedChanged(object sender, EventArgs e)

{

show_components();

}

#endregion

private void заказчикиToolStripMenuItem_Click(object sender, EventArgs e)

{

show = "Customers";

search_mask.Text = "";

DataBaseViewer.ShowCustomers(tbl, search_mask.Text);

}

private void поставщикиToolStripMenuItem_Click(object sender, EventArgs e)

{

show = "Manufactirers";

search_mask.Text = "";

DataBaseViewer.ShowManufacturers(tbl, search_mask.Text);

}

private void customers_comdo_SelectionChangeCommitted(object sender, EventArgs e)

{

string db_path = @"F:\БАУМАНСКИЙ\6 Семестр\Курсач ОИС\Comps\Comps\CompDataBase.mdf";

DataClassesDataContext db = new DataClassesDataContext(db_path);

var a = db.Customers.SingleOrDefault(c => c.Name == customers_comdo.SelectedItem.ToString());

cust_name.Text = a.Name;

cust_mail.Text = a.Mail;

cust_phone.Text = a.Phone;

cust_address.Text = a.Address;

}

private void select_component_Click(object sender, EventArgs e)

{

component_selection();

}

private void tbl_Resize(object sender, EventArgs e)

{

for (int i = 0; i < tbl.ColumnCount; i++)

tbl.Columns[i].Width = tbl.Width / tbl.ColumnCount - 1;

}

private void добавитьToolStripMenuItem2_Click(object sender, EventArgs e)

{

AddComponentForm f = new AddComponentForm();

f.ShowDialog();

}

private void добавитьToolStripMenuItem1_Click(object sender, EventArgs e)

{

AddManufacturerForm f = new AddManufacturerForm();

f.ShowDialog();

}

private void Form1_Load(object sender, EventArgs e)

{

DataBaseViewer.ShowComponents(tbl, filter, search_mask.Text);

}

private void search_mask_TextChanged(object sender, EventArgs e)

{

if (show == "Components") show_components();

if (show == "Manufactirers") DataBaseViewer.ShowManufacturers(tbl, search_mask.Text);

if (show == "Customers") DataBaseViewer.ShowCustomers(tbl, search_mask.Text);

}

private void удалитьToolStripMenuItem2_Click(object sender, EventArgs e)

{

if (show == "Components")

if (DataBaseWorker.RemoveComponent(tbl.SelectedRows[0].Cells["Наименование"].Value.ToString()))

tbl.Rows.RemoveAt(tbl.SelectedRows[0].Index);

}

private void удалитьToolStripMenuItem1_Click(object sender, EventArgs e)

{

if (show == "Manufactirers")

if (DataBaseWorker.RemoveManufacturer(tbl.SelectedRows[0].Cells["Производитель"].Value.ToString()))

tbl.Rows.RemoveAt(tbl.SelectedRows[0].Index);

}

private void удалитьToolStripMenuItem_Click(object sender, EventArgs e)

{

if (show == "Customers")

if (DataBaseWorker.RemoveCustomer(tbl.SelectedRows[0].Cells["ФИО"].Value.ToString()))

tbl.Rows.RemoveAt(tbl.SelectedRows[0].Index);

}

}

Класс AddComponentForm

public partial class AddComponentForm : Form

{

public AddComponentForm()

{

InitializeComponent();

}

private void AddComponentForm_Load(object sender, EventArgs e)

{

new_name.Text = "";

new_manufacturer.Text = "";

count.Text = "";

price.Text = "";

DataBaseWorker.GetAllComponents(new_name);

DataBaseWorker.GetAllManufactures(new_manufacturer);

}

private void cancel_Click(object sender, EventArgs e)

{

Close();

}

private void ok_Click(object sender, EventArgs e)

{

DataBaseWorker.AddComponent(new_name.Text, new_manufacturer.Text, count.Text, price.Text, new_type.Text);

}

private void AddManufacturer_Click(object sender, EventArgs e)

{

AddManufacturerForm f = new AddManufacturerForm();

f.FormClosing += new FormClosingEventHandler(f_FormClosing);

f.ShowDialog();

}

void f_FormClosing(object sender, FormClosingEventArgs e)

{

//MessageBox.Show("Работаю");

DataBaseWorker.GetAllManufactures(new_manufacturer);

}

}

Класс AddManufactureForm

public partial class AddManufacturerForm : Form

{

public AddManufacturerForm()

{

InitializeComponent();

}

private void ok_Click(object sender, EventArgs e)

{

if (new_name.Text != "" && new_address.Text != "" && new_phone.Text != "")

{

DataBaseWorker.AddManufacturer(new_name.Text, new_address.Text, new_phone.Text);

new_name.Text = "";

new_address.Text = "";

new_phone.Text = "";

}

else

MessageBox.Show("Заполните все поля!");

}

private void cancel_Click(object sender, EventArgs e)

{

Close();

}

}

Класс DataBaseWorker

static class DataBaseWorker

{

static string db_path = @"F:\БАУМАНСКИЙ\6 Семестр\Курсач ОИС\Comps\Comps\CompDataBase.mdf";

static DataClassesDataContext db = new DataClassesDataContext(db_path);

public static void ChangeCustomer(string _name, int _price)

{

var a = db.Customers.SingleOrDefault(c => c.Name == _name);

a.Orders++;

a.TotalPrice += _price;

db.SubmitChanges();

}

public static void AddCustomer(string _name, string _mail, string _address, string _phone, int _price)

{

Customer a = new Customer()

{

Name = _name,

Mail = _mail,

Address = _address,

Phone = _phone,

Orders = 1,

TotalPrice = _price

};

db.Customers.InsertOnSubmit(a);

db.SubmitChanges();

}

public static void GetComponents(string[] _components)

{

var a = from x in db.CompComponents where _components.Contains(x.Name) select x;

foreach (var item in a)

item.InStore--;

db.SubmitChanges();

}

public static void GetAllManufactures(System.Windows.Forms.ComboBox _box)

{

List<string> manufacturers = new List<string>();

var a = from x in db.Manufacturers

select new

{

Наименование = x.Manufacturer1

};

foreach (var item in a)

{

manufacturers.Add(item.Наименование);

}

_box.Items.Clear();

_box.Items.AddRange(manufacturers.ToArray());

}

public static void GetAllComponents(System.Windows.Forms.ComboBox _box)

{

List<string> components = new List<string>();

var a = from x in db.CompComponents

select new

{

Наименование = x.Name

};

foreach (var item in a)

{

components.Add(item.Наименование);

}

_box.Items.AddRange(components.ToArray());

}

public static void AddManufacturer(string _name, string _address, string _phone)

{

Manufacturer a = new Manufacturer()

{

Manufacturer1 = _name,

Address = _address,

Phone = _phone

};

db.Manufacturers.InsertOnSubmit(a);

db.SubmitChanges();

}

public static void AddComponent(string _name, string _manufacturer, string _count, string _price, string _type)

{

CompComponent a = new CompComponent()

{

Name = _name,

Manufacturer = _manufacturer,

InStore = int.Parse(_count),

Price = int.Parse(_price),

Type = _type

};

db.CompComponents.InsertOnSubmit(a);

db.SubmitChanges();

}

public static bool RemoveComponent(string _name)

{

CompComponent _cmpnnt = db.CompComponents.FirstOrDefault(x => x.Name == _name);

try

{

db.CompComponents.DeleteOnSubmit(_cmpnnt);

db.SubmitChanges();

}

catch

{

MessageBox.Show("Удаление невозможно. \nСначала удалите связные объекты!");

return false;

}

return true;

}

public static bool RemoveManufacturer(string _name)

{

Manufacturer _mnftr = db.Manufacturers.SingleOrDefault(x => x.Manufacturer1 == _name);

try

{

db.Manufacturers.DeleteOnSubmit(_mnftr);

db.SubmitChanges();

}

catch

{

MessageBox.Show("Удаление невозможно. \nСначала удалите связные объекты!");

return false;

}

return true;

}

public static bool RemoveCustomer(string _name)

{

Customer _cstmr = db.Customers.SingleOrDefault(x => x.Name == _name);

try

{

db.Customers.DeleteOnSubmit(_cstmr);

db.SubmitChanges();

}

catch

{

MessageBox.Show("Удаление невозможно. \nСначала удалите связные объекты!");

return false;

}

return true;

}

}

Класс DataBaseViewer

static class DataBaseViewer

{

static string db_path = @"F:\БАУМАНСКИЙ\6 Семестр\Курсач ОИС\Comps\Comps\CompDataBase.mdf";

static DataClassesDataContext db = new DataClassesDataContext(db_path);

public static void ShowComponents(DataGridView _tbl, string[] _filter, string _mask = "")

{

var a = from x in db.CompComponents

where (_filter.Contains(x.Type) && x.Name.Contains(_mask))

select new

{

Тип = x.Type,

Наименование = x.Name,

Производитель = x.Manufacturer1.Manufacturer1,

Цена = x.Price,

На_складе = x.InStore

};

_tbl.DataSource = a;

make_some_beauty(_tbl);

}

public static void ShowCustomers(DataGridView _tbl, string _filter)

{

var a = from x in db.Customers

where x.Name.Contains(_filter)

select new

{

ФИО = x.Name,

Контактный_Телефон = x.Phone,

Email = x.Mail,

Всего_заказов = x.Orders,

На_общую_сумму = x.TotalPrice

};

_tbl.DataSource = a;

make_some_beauty(_tbl);

}

public static void ShowManufacturers(DataGridView _tbl, string _filter)

{

var a = from x in db.Manufacturers

where x.Manufacturer1.Contains(_filter)

select new

{

Производитель = x.Manufacturer1,

Контактный_Телефон = x.Phone,

Адрес = x.Address

};

_tbl.DataSource = a;

make_some_beauty(_tbl);

}

static void make_some_beauty(DataGridView _tbl)

{

for (int i = 0; i < _tbl.ColumnCount; i++)

_tbl.Columns[i].Width = _tbl.Width / _tbl.ColumnCount - 1;

for (int i = 0; i < _tbl.RowCount; i++)

for (int j = 0; j < _tbl.ColumnCount; j++)

if (i % 2 == 1) _tbl.Rows[i].Cells[j].Style.BackColor = Color.Bisque;

else _tbl.Rows[i].Cells[j].Style.BackColor = Color.Aquamarine;

}

}

Размещено на http://www.allbest.ru


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

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