Помощь в написании студенческих работ
Антистрессовый сервис

База данных «Даг-Авто»

КурсоваяПомощь в написанииУзнать стоимостьмоей работы

Ключ — это минимальный набор атрибутов, по значениям которых можно однозначно найти требуемый экземпляр сущности. Одним из основных понятий баз данных, используемых при контроле целостности информации, является ключ. Разделяют первичные и внешние ключи. Первичный ключ — это уникальное поле (или несколько полей), однозначно определяющее записи таблицы базы данных. Внешние ключи — это поля таблицы… Читать ещё >

База данных «Даг-Авто» (реферат, курсовая, диплом, контрольная)

  • СОДЕРЖАНИЕ

1. Описание предметной области

1.1 Общее описание предметной области

1.2 Описание входных документов и сообщений

1.3 Описание выходных документов и сообщений

1.4 Список ограничений

2. Проектирование реляционной базы данных

2.1 Инфологическое проектирование

2.1.1 Описание сущностей

2.1.2 Описание связей

2.1.3 ER-диаграмма

2.2 Даталогическая модель

3. Организация выборки информации из базы данных

4. Разработка представлений для отображения результатов выборки

5. Проектирование хранимых процедур

6. Разработка механизмов управления данными в базе при помощи триггеров.

6.1 Триггер для добавления данных.

6.2 Триггер для удаления данных

6.3 Триггер для обновления данных

7. Разработка технологий доступа к базе данных

7.1 Выбор пользователей базы данных

7.2 Разграничение полномочий пользователя

8. Проектирование клиентского приложения

9. Организация обмена данными между приложениями

9.1 Между базой данных и офисными приложениями

9.2 Между различными базами данных

10. Экономическое обоснование результатов внедрения программного продукта

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

12. Инструкция по эксплуатации базы данных

ЗАКЛЮЧЕНИЕ

Список использованной литературы

Приложение, А — Экранные формы

Приложение Б — Листинг программы

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

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

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

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

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

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

При проектировании и разработке сетевой базы данных были использованы такие общетехнические и общесистемные программные средства, как Microsoft SQL Server 2005, Microsoft Visual Studio 2010.

1. Описание предметной области

1.1 Общее описание предметной области

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

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

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

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

1.2 Описание входных документов и сообщений

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

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

1.3 Описание выходных документов и сообщений

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

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

1.4 Список ограничений

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

2. Проектирование реляционной базы данных

2.1 Инфологическое проектирование

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

2.1.1 Описание сущностей

Сущность (объектное множество, таблица) — это собирательное понятие, абстракция реально существующего процесса, объекта или явления, о котором необходимо хранить информацию.

Атрибут (реквизит) — поименованная характеристика сущности.

Ниже приведен перечень сущностей и их атрибутов, выбранных в ходе выполнения данной курсовой работы:

Cars (автомобили):

Модель

Год выпуска

Цвет

Цена

Пробег

Фотография

Продано

Manufacturers (производители):

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

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

Адрес

Sold_Out (проданные автомобили)

Код покупателя

Код сотрудника

Код автомобиля

Tech (различная техническая информация)

Системные имена

Настройки

Соединения

Customers (покупатели)

Покупатель (ФИО)

Телефон

Паспорт

Employee (сотрудники)

Сотрудник (ФИО)

Телефон

Паспорт

2.1.2 Описание связей

Связь — ассоциирование двух и более сущностей. Если бы назначением БД было только хранение отдельных, не связанных между собой данных, то ее структура могла быть очень простой. Однако одно из основных требований к организации базы данных — это обеспечение возможности отыскания одних сущностей по значениям других, для чего необходимо установить между ними определенные связи.

Модель «сущность — связь» основана на использовании 3-х основных конструктивных элементов:

1. сущность

2. атрибут

3. связь

Взаимосвязи между таблицами БД могут быть типизированы по следующим основным видам:

1. отношение «один к одному» (1:1) означает, что каждая запись одной таблицы соответствует только одной записи в другой таблице;

2. отношение «один ко многим» (1:М) возникает, когда одна запись взаимосвязана со многими другими;

3. отношение «многие к одному» означает, что многие записи связаны с одной (М:1);

4. отношение «многие ко многим» (M:N) возникает между двумя таблицами в тех случаях, когда:

- одна запись из первой таблицы может быть связана более чем с одной записью из второй таблицы;

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

Таблица 2.1 — Связи в базе данных

Родительская таблица

Дочерняя таблица

Тип связи

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

Автомобили

1:М

Автомобили

Продажи

1:1

Сотрудники

Продажи

1:М

Покупатели

Продажи

1:М

Выбор связи «Один ко многим» обусловлена предметной областью, поскольку один производитель может произвести огромное множество автомобилей. Также один сотрудник может оформлять несколько продаж, а один покупатель покупать несколько автомобилей.

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

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

Опишем ключи, составленные для имеющихся сущностей:

1. Сущность «Автомобили» имеет первичный ключ «id»;

2. Сущность «Производители» имеет первичный ключ «id»;

3. Сущность «Автомобили» имеет внешний ключ «m_id» для связи с сущностью «Производители».

4. Сущность «Продажи» имеет первичный ключ «id_car»;

5. Сущность «Покупатели» имеет первичный ключ «id»;

6. Сущность «Сотрудники» имеет первичный ключ «id»;

7. Сущность «Продажи» имеет внешний ключ «id_cust»;

8. Сущность «Продажи» имеет внешний ключ «id_empt».

Проанализировав разработанную базу данных, можно сделать вывод, что она нормализована и соответствует третьей нормальной форме, т.к.:

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

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

Например:

Id -> m_id

Id -> model

Id -> year

Id -> color

Id -> price

Id -> mileage

Id -> photo

Id -> buy.

2.1.3 ER-диаграмма

Рисунок 2.1 — ER-диаграмма

2.2 Даталогическая модель

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

Таблица 2.2 — «Автомобили»

Имя атрибута

Тип данных

Длина поля

Допустимость

неопределенных значений

Id

char

NOT NULL

M_id

char

Allow nulls

Model

char

Allow nulls

Year

int

Allow nulls

Color

char

Allow nulls

Price

money

Allow nulls

Mileage

int

Allow nulls

photo

image

Allow nulls

buy

boolean

Allow nulls

Таблица 2.3 — «Производители»

Имя атрибута

Тип данных

Длина поля

Допустимость

неопределенных значений

Id

char

NOT NULL

Name

char

Allow nulls

Phone

char

Allow nulls

address

char

Allow nulls

Таблица 2.4 — «Проданные автомобили»

Имя атрибута

Тип данных

Длина поля

Допустимость

неопределенных значений

Id_car

char

NOT NULL

Id_cust

char

NOT NULL

Id_cust

char

NOT NULL

Таблица 2.5 — «Техническая информация»

Имя атрибута

Тип данных

Длина поля

Допустимость

неопределенных значений

Usernames

char

Allow nulls

Settings

bit

bit

Allow nulls

Connections

char

Allow nulls

Таблица 2.6 — «Покупатели»

Имя атрибута

Тип данных

Длина поля

Допустимость

неопределенных значений

Id

char

NOT NULL

Name

char

Allow nulls

Phone

char

Allow nulls

Passport

char

Allow nulls

Таблица 2.7 — «Сотрудники»

Имя атрибута

Тип данных

Длина поля

Допустимость

неопределенных значений

Id

char

NOT NULL

Name

char

Allow nulls

Phone

char

Allow nulls

Passport

char

Allow nulls

2.2.1 Диаграмма связи по полям

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

Таблица 2.8 — Функциональные зависимости между атрибутами сущности «Автомобили»

Наименование атрибутов

Функциональные зависимости

id

m_id

model

year

color

price

mileage

photo

buy

Таблица 2.9 — Функциональные зависимости между атрибутами сущности «Производители»

Наименование атрибутов

Функциональные зависимости

Id

Name

Phone

address

Таблица 2.10 — Функциональные зависимости между атрибутами сущности «Проданные автомобили»

Наименование атрибутов

Функциональные зависимости

Id_car

Id_cust

Id_emp

Таблица 2.11 — Функциональные зависимости между атрибутами сущности «Покупатели»

Наименование атрибутов

Функциональные зависимости

Id

Name

Phone

Passport

Таблица 2.12 — Функциональные зависимости между атрибутами сущности «Сотрудники»

Наименование атрибутов

Функциональные зависимости

Id

Name

Phone

Passport

Рисунок 2.2 — Даталогическая модель

3. Организация выборки информации из базы данных

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

1. Безусловный запрос

Select * from cars

Рисунок 2.3 — Результат выполнения запроса 1

2. Запрос с условием

Select *from cars where id='c_0003'

Рисунок 2.4 — Результат выполнения запроса 2

3. Select 'Количество автомобилей', COUNT (cars.price), 'на сумму', SUM (cars.price) from cars

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

Рисунок 2.5 — Результат выполнения запроса 3

4. Использование оператора BETWEEN.

Select model from cars where price between 100 000 and 200 000

Рисунок 2.6 — Результат выполнения запроса 4

5. Использование оператора IN.

Select id, colour, price from cars where model in ('ГАЗель','LADA Kalina')

Рисунок 2.7 — Результат выполнения запроса 5

6. Использование оператора LIKE.

Select id, model, price from cars where model like '%LADA%'

Рисунок 2.8 — Результат выполнения запроса 6

7. Использование оператора EXISTS.

Select * from cars where exists (select price from cars where price<100 000)

Рисунок 2.9 — Результат выполнения запроса 7

8. Использование оператора UNION.

Select price*0.5,model from cars where year='2010' UNION Select price*0.6,model from cars where year='2011'

Рисунок 2.10 — Результат выполнения запроса 8

9. Использование оператора LEFT JOIN.

select cars. model, cars. year, manufacturers.name from cars left join manufacturers on cars. m_id=manufacturers.id

Рисунок 2.11 — Результат выполнения запроса 9

Кроме того в этом запросе представлена выборка из связанных таблиц.

10. Использование оператора DISTINCT.

select distinct price from cars

Рисунок 2.12 — Результат выполнения запроса 10

4. Разработка представлений для отображения результатов выборки

При разработке сетевой базы данных были созданы четыре представления View1 и View2, View3, View4, которые предназначены для отображения содержимого таблиц «Автомобили», «Производители», «Покупатели» и «Сотрудники», исключая служебную информацию, в удобном для просмотра виде, с упорядоченными полями.

SELECT TOP (100) PERCENT model, year, colour, price, mileage, buy

FROM dbo. cars

ORDER BY model

Рисунок 2.13 — Вид представления 1

SELECT TOP (100) PERCENT name, phone, address

FROM dbo. manufacturers

ORDER BY name

Рисунок 2.14 — Вид представления 2

SELECT TOP (100) PERCENT name, phone, passport

FROM dbo. customers

ORDER BY name

Рисунок 2.15 — Вид представления 3

SELECT TOP (100) PERCENT name, phone, passport

FROM dbo. employee

ORDER BY name

Рисунок 2.16 — Вид представления 4

5. Проектирование хранимых процедур

Хранимые процедуры — представляют собой процессы, выполняемые непосредственно на сервере баз данных. Для этого используется утилита SQL Server Enterprise Manager.

Все хранимые процедуры в базе данных находятся в специально отведенном списке Stored Procedures.

Синтаксис создания новой процедуры:

CREATE PROCEDURE [PROCEDURE NAME] AS

В базе данных были созданы четыре хранимых процедуры для автоматизации управления информацией, хранимой в базе данных на сервере. Процедуры были названы new_proc, new_proc2, discount5, mileage_add. Далее подробно рассмотрим предназначение каждой из них.

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

Процедура New_proc2 является обратной к вышерассмотренной и выполняет функцию уменьшения цены на ту же цифру.

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

Наконец, процедура mileage_add устанавливает указанный пробег для автомобиля с указанным номером.

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

CREATE PROCEDURE new_proc AS

UPDATE cars

SET price = price + 1000

CREATE PROCEDURE new_proc2 AS

UPDATE cars

SET price = price — 1000

Рисунок 2.17 — Таблица автомобили до использования процедуры

Рисунок 2.18 — Таблица «Автомобили» после выполнения хранимой процедуры

CREATE PROCEDURE discount5 AS

UPDATE dbo. cars

SET price = price — price*0.05

Рисунок 2.19 — Вид таблицы после выполнения процедуры, устанавливающей скидку

CREATE PROCEDURE mileage_add (@id char, @mileage int) AS

UPDATE dbo. cars

SET mileage = @mileage WHERE id=@id

Рисунок 2.20 — Результат выполнения четвертой хранимой процедуры

6. Разработка механизмов управления данными в базе при помощи триггеров

6.1 Триггер для добавления данных

Для таблицы cars были созданы два триггера добавления данных: insert_tr и insert_tr2.

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

CREATE TRIGGER insert_tr

ON cars

FOR INSERT

AS

PRINT `Автомобиль добавлен в базу данных'

RETURN

Рисунок 2.21 — Результат выполнения первого триггера

CREATE TRIGGER insert_tr2

ON cars

FOR INSERT

AS

Execute dbo. new_proc

RETURN

Рисунок 2.22 — Результат выполнения второго триггера

6.2 Триггер для удаления данных

В качестве триггера для удаления был создан триггер del_tr, выводящий сообщение «Производитель успешно удален. Внимание! Удалены также все автомобили данного производителя» в случае удаления производителя из соответствующей базы данных. Синтаксис создания триггера представлен ниже.

CREATE TRIGGER del_tr

ON manufacturers

FOR DELETE

AS

PRINT `Производитель успешно удален. Внимание! Удалены также все автомобили данного производителя.'

RETURN

Рисунок 2.23 — Результата выполнения третьего триггера

6.3 Триггер для обновления данных

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

CREATE TRIGGER upd_tr

ON cars

FOR UPDATE

AS

IF exists (select price from cars where price<50 000)

PRINT `Возможно цена слишком низкая'

RETURN

Рисунок 2.24 — Результат выполнения четвертого триггера

7. Разработка технологий доступа к базе данных

7.1 Выбор пользователей базы данных

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

В итоге были созданы логины «Admin» и «User» для входа в клиентское приложение. При входе за администратора обязательно необходим ввод пароля.

7.2 Разграничение полномочий пользователя

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

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

При входе за администратора все вышеперечисленные ограничения снимаются.

8. Проектирование клиентского приложения

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

Для отображения информации, хранящейся в связанных таблицах в нем используется элемент dataGridView, настроенный в соответствии с требованиями и выполняемой ролью.

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

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

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

После продажи автомобиля происходит не только добавление новой строки в таблицу «Sold_Out», но и обновление поля «buy» в таблице «cars».

9. Организация обмена данными между приложениями

9.1 Между базой данных и офисными приложениями

Организация обмена данными между базой данных и офисным приложением осуществляется средствами Microsoft Visual Studio и специализированных элементов и библиотек этой среды. В частности используются элементы BindingSource, TableAdapter и DataSet.

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

При работе в рамках несвязного уровня ADO.NET используются объекты соединения, командиад аптеры данных. Данные из базы данных получают с помощью адаптера данных. Для перемещения данных между клиентским приложением и источником данных объекты адаптера используют объекты DataSet. Тип DataSet — это контейнер, используемый для любого числа объектов DataTable. Каждый объект DataTable содержит коллекциюобъектов DataRow и DataColumn.

база триггер пользователь приложение

9.2 Между различными базами данных

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

10. Экономическое обоснование результатов внедрения программного продукта

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

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

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

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

Объем ОЗУ для эффективной работы приложения определяется по формуле:

(1)

где — минимальные требования со стороны операционной системы, — минимальный размер подгружаемых модулей, — дополнительное пространство ОЗУ.

Исходя из этой формулы:

V= 200+150+50=400 мегабайт Свободное пространство на жестком диске определяется равенством:

(2)

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

Из чего следует:

W=1+4+1=2 мегабайт

12. Инструкция по эксплуатации базы данных

Данное приложение для работы требует наличие установленного .net framework 3.5 версии или выше.

Запуск приложения производится с помощью файла с расширением «.exe», находящегося в корневом каталоге программы.

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

В строке Sql запросов можно вводить команды, выполняемые при нажатии кнопки «go», производить манипуляции с содержимым базы данных и так далее.

Кнопка «new» вызывает окно ввода в базу данных нового автомобиля, в котором можно ввести все необходимые данные.

Кнопка «img» предназначена для загрузки в базу данных нового изображения или его изменения.

Наконец, кнопка «sell» вызывает диалоговое окно продажи выбранного автомобиля.

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

ЗАКЛЮЧЕНИЕ

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

Приложение состоит из базы данных, созданной с помощью Microsoft SQL Server 2005, хранящейся на сервере, содержащей хранимые процедуры, триггеры для динамической обработки данных, представления, диаграммы, таблицы и связи между ними; и приложения-клиента, написанного в среде Microsoft Visual Studio 2010, позволяющего наглядно обращаться к ресурсам базы данных и производить с ней различные действия.

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

1. Хомоненко А. Д., Цыганков В. М., Мальцев М. Г. Базы данных: Учебник для высших учебных заведений / Под ред. проф. А. Д. Хомоненко. — Издание второе, дополненное и переработанное. — СПб.: КОРОНА принт, 2002. 672 с.

2. Глушаков С. В., Ломотько Д. В. Базы данных: Учебный курс. — Харьков: Фолио; Ростов н/Д: Феникс; Киев: Абрис, 2000. — 504 с.

3. Мишенин А. И. Теория экономических информационных системМ.: Финансы и статистика, 1999. — 168 с.

4. Смирнова Г. Н., Сорокин А. А., Тельнов Ю. Ф. Проектирование экономических информационных систем: Учебник для высших учебных заведений / Под ред. Ю. Ф. Тельнова — М.: Финансы и статистика, 2001. — 512 с.

Приложение А — Экранные формы

А.1 — Окно аутентификации пользователя

А.2 — Главное окно программы

А.3 — Форма добавления новой записи

А.4 — Форма оформления продажи автомобиля

Приложение Б — Листинг программы

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.SqlClient;

using System.Data.Sql;

using System.Data.SqlTypes;

using System. IO;

namespace Rus_Cars_Kurs

{

public partial class Form1: Form

{

public string init;

public string a;

public int r_n;

public Form1()

{

InitializeComponent ();

}

private void Form1_Load (object sender, EventArgs e)

{

// TODO: This line of code loads data into the 'rus_carsDataSet.manufacturers' table. You can move, or remove it, as needed.

this.manufacturersTableAdapter.Fill (this.rus_carsDataSet.manufacturers);

// TODO: This line of code loads data into the 'rus_carsDataSet.cars' table. You can move, or remove it, as needed.

this.carsTableAdapter.Fill (this.rus_carsDataSet.cars);

if (init == «user»)

{

textBox1.Enabled = false;

button3.Enabled = false;

button1.Enabled = false;

button2.Enabled = false;

button4.Enabled = false;

}

}

private void Form1_FormClosing (object sender, FormClosingEventArgs e)

{

this.carsTableAdapter.Update (this.rus_carsDataSet.cars);

this.manufacturersTableAdapter.Update (this.rus_carsDataSet.manufacturers);

}

private void dataGridView1_CellClick (object sender, DataGridViewCellEventArgs e)

{

SqlConnection connection = new SqlConnection (

" Data Source=USER-ПК\MSSMLBIZ;Database=rus_cars;Initial Catalog=Rus_cars;Integrated Security=True");

SqlCommand command = new SqlCommand (

" SELECT * FROM dbo. cars WHERE id=@id", connection);

SqlParameter par = new SqlParameter (

" @id", SqlDbType. Char);

par.Value = dataGridView1.CurrentRow.Cells[0]. Value. ToString ();

command.Parameters.Add (par);

connection.Open ();

SqlDataReader datareader = command. ExecuteReader ();

datareader.Read ();

if (!dataGridView1.CurrentRow.IsNewRow)

{

if (!datareader.IsDBNull (7))

{

int bLength = (int)datareader.GetBytes (7, 0, null, 0, int. MaxValue);

byte[] dBuffer = new byte[bLength];

datareader.GetBytes (7, 0, dBuffer, 0, bLength);

connection.Dispose ();

MemoryStream mStream = new MemoryStream (dBuffer);

ImageConverter ic = new ImageConverter ();

Image img = (Image)ic.ConvertFrom (dBuffer);

Bitmap bmap1 = new Bitmap (img);

pictureBox1.ClientSize = new Size (250, 150);

pictureBox1.Image = (Image)bmap1;

}

else

{

pictureBox1.Image = null;

}

}

}

private void button2_Click (object sender, EventArgs e)

{

OpenFileDialog dialog = new OpenFileDialog ();

dialog.Filter = «Image files (*.jpg)|*.jpg|All files (*.*)|*.*» ;

dialog.InitialDirectory = «D://» ;

dialog.Title = «Select image» ;

dialog.ShowDialog ();

if (dialog.FileName ≠ null && dialog. FileName ≠ «»)

{

String query_img = «UPDATE dbo. cars SET photo=@photo WHERE id=@id» ;

SqlConnection connection = new SqlConnection (

" Data Source=USER-ПК\MSSMLBIZ;Database=rus_cars;Initial Catalog=Rus_cars;Integrated Security=True");

SqlCommand cmd = new SqlCommand (

query_img, connection);

String fn_str = Convert. ToString (dialog.FileName);

FileStream fStream = new FileStream (

fn_str, FileMode. Open, FileAccess. Read);

Byte[] imageBytes = new byte[fStream.Length];

fStream.Read (imageBytes, 0, imageBytes. Length);

SqlParameter par = new SqlParameter («@photo», SqlDbType. Image);

par.Value = imageBytes;

cmd.Parameters.Add (par);

par = new SqlParameter (

" @id", SqlDbType. Char);

par.Value = dataGridView1.CurrentRow.Cells[0]. Value. ToString ();

cmd.Parameters.Add (par);

connection.Open ();

cmd.ExecuteNonQuery ();

connection.Dispose ();

}

}

private void button1_Click (object sender, EventArgs e)

{

Form2 form = new Form2();

for (int i = 0; i < Convert. ToInt32(dataGridView2.Rows.Count.ToString ()) — 1; i++)

{

form.a.Add (dataGridView2.Rows[i]. Cells[0].Value.ToString ());

}

for (int i = 0; i < Convert. ToInt32(dataGridView2.Rows.Count.ToString ()) — 1; i++)

{

form.b.Add (dataGridView2.Rows[i]. Cells[3].Value.ToString ());

}

form.ShowDialog ();

}

private void button3_Click (object sender, EventArgs e)

{

this.carsTableAdapter.Connection.Open ();

this.manufacturersTableAdapter.Connection.Open ();

string query = textBox1. Text;

System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand (query, this.carsTableAdapter.Connection);

try

{

cmd.ExecuteReader ().Close ();

}

catch

{

MessageBox.Show («Error!»);

}

this.carsTableAdapter.Connection.Close ();

this.manufacturersTableAdapter.Connection.Close ();

this.carsTableAdapter.Fill (this.rus_carsDataSet.cars);

this.manufacturersTableAdapter.Fill (this.rus_carsDataSet.manufacturers);

}

private void Form1_Click (object sender, EventArgs e)

{

this.carsTableAdapter.Fill (this.rus_carsDataSet.cars);

this.manufacturersTableAdapter.Fill (this.rus_carsDataSet.manufacturers);

}

private void textBox1_TextChanged (object sender, EventArgs e)

{

}

private void button4_Click (object sender, EventArgs e)

{

Form4 form4 = new Form4();

form4.car = dataGridView1.CurrentRow.Cells[2]. Value. ToString ();

form4.id_car = dataGridView1.CurrentRow.Cells[0]. Value. ToString ();

if (Convert.ToBoolean (dataGridView1.CurrentRow.Cells[8]. Value) ≠ true)

{

form4.n = true;

}

else

{

form4.n = false;

}

form4.ShowDialog ();

}

}

}

using System;

using System.Collections.Generic;

using System. Collections;

using System. ComponentModel;

using System. Data;

using System. Drawing;

using System. Linq;

using System. Text;

using System.Windows.Forms;

using System.Data.SqlTypes;

using System.Data.Sql;

using System.Data.SqlClient;

namespace Rus_Cars_Kurs

{

public partial class Form2: Form

{

public ArrayList a = new ArrayList ();

public ArrayList b = new ArrayList ();

public string m_n;

public Form2()

{

InitializeComponent ();

}

private void Form2_Load (object sender, EventArgs e)

{

//this.manufacturersTableAdapter.Fill (this.rus_carsDataSet.manufacturers);

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

{

comboBox1.Items.Add (a[i]);

}

}

private void button1_Click (object sender, EventArgs e)

{

SqlConnection conn = new SqlConnection (

" Data Source=USER-ПК\MSSMLBIZ;Database=rus_cars;Initial Catalog=Rus_cars;Integrated Security=True");

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

{

if (comboBox1.Text.ToString () == a[i]. ToString ())

{

m_n = b[i]. ToString ();

}

}

String insertString =

" INSERT dbo. cars (id, m_id, model, year, colour, price, mileage) VALUES ('" + textBox1. Text + «','» + m_n + «','» + textBox3. Text + «','» + textBox4. Text + «','» + textBox5. Text + «','» + textBox6. Text + «','» + textBox7. Text + «')» ;

SqlCommand insertCmd = new SqlCommand (insertString, conn);

conn.Open ();

insertCmd.ExecuteNonQuery ();

conn.Dispose ();

}

}

}

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;

namespace Rus_Cars_Kurs

{

public partial class Form3: Form

{

public Form3()

{

InitializeComponent ();

}

private void button1_Click (object sender, EventArgs e)

{

if (comboBox1.Text == «Admin» && textBox1. Text == «1»)

{

Form1 form1 = new Form1();

form1.init = «admin» ;

form1.ShowDialog ();

}

else

{

if (comboBox1.Text == «User»)

{

Form1 form1 = new Form1();

form1.init = «user» ;

form1.ShowDialog ();

}

}

}

}

}

using System;

using System.Collections.Generic;

using System. ComponentModel;

Показать весь текст
Заполнить форму текущей работой