Разработка информационной системы "Компьютерная фирма"

Автор работы: Пользователь скрыл имя, 11 Марта 2013 в 10:04, курсовая работа

Описание

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

Содержание

Введение
4
1 Техническое задание
5
1.1 Анализ предметной области
5
1.2 Постановка задачи
13
2 Технический проект информационной системы
14
2.1 Функциональная модель
14
2.1.1 Контекстная диаграмма и диаграммы детализации процессов
14
2.1.2 Диаграмма дерева узлов
20
2.2 Информационная модель
21
2.2.1 Идентификация сущностей и связей. ER-диаграмма логического уровня
21
2.2.2 ER-диаграмма физического уровня. Ограничения ссылочной целостности. Определение триггеров
24
2.2.3 Определение представлений, хранимых процедур серверной компоненты
28
2.3 Верификация спроектированной логической модели
30
3 Реализация системы
38
3.1 T-SQL-определения регламентированных запросов
38
3.2 T-SQL-определения триггеров
40
3.3 T-SQL-определения хранимых процедур
44
3.4 T-SQL-определения курсоров
58
3.5 Описание клиентских приложений
59
4 Результат тестирования информационной системы
90
Заключение
91
Список использованных источников
92

Работа состоит из  1 файл

3Пример-Компьютерная фирма.doc

— 1.27 Мб (Скачать документ)

   FROM   Сотрудник

   WHERE ФИО_Сотрудника =  @ФИО_Сотрудника) 

SELECT *

FROM Сотрудник

WHERE ФИО_Сотрудника =  @ФИО_Сотрудника

ELSE

BEGIN

RAISERROR ('Не найдена запись, соответствующая ФИО сотрудника.', 16, 1)

WITH NOWAIT

END

6. GetEmplByPass.sql  – для поиска сотрудника по его номеру паспорта в таблице «Сотрудник»;

CREATE PROCEDURE GetEmplByPass

@Номер_паспорта_сотрудника nvarchar(15)

AS

IF EXISTS (SELECT Номер_паспорта_сотрудника 

   FROM   Сотрудник 

   WHERE Номер_паспорта_сотрудника =  @Номер_паспорта_сотрудника) 

SELECT *

FROM Сотрудник

WHERE Номер_паспорта_сотрудника =  @Номер_паспорта_сотрудника

ELSE

BEGIN

RAISERROR ('Не найдена запись, соответствующая номеру паспорта.', 16, 1)

WITH NOWAIT

END

7. GetGoodsByCode.sql  – для поиска товара по его штрихкоду в таблице «Товар»;

CREATE PROCEDURE GetGoodsByCode

@Штрихкод_товара varchar(20)

AS

IF NOT EXISTS (SELECT Штрихкод_товара

   FROM   Товар

   WHERE Штрихкод_товара =  @Штрихкод_товара) 

BEGIN

RAISERROR ('Не найдена запись, соответствующая штрихкоду товара.', 16, 1)

RETURN 1

END

DECLARE @Код_сервисного_центра int

SET @Код_сервисного_центра = (SELECT Код_сервисного_центра

   FROM  Товар

   WHERE Штрихкод_товара = @Штрихкод_товара)

IF EXISTS (SELECT Код_сервисного_центра

   FROM   Сервисный_центр

   WHERE Код_сервисного_центра =  @Код_сервисного_центра) 

SELECT Штрихкод_товара,

Название_товара,

Категория,

Описание,

Количество_склад,

Количество_магазин,

Цена,

Срок_гарантии,

Товар.Код_сервисного_центра,

Название_сервисного_центра

FROM Товар INNER JOIN Сервисный_центр 

ON Товар.Код_сервисного_центра = Сервисный_центр.Код_сервисного_центра

WHERE Штрихкод_товара = @Штрихкод_товара

ELSE

SELECT *

FROM Товар

WHERE Штрихкод_товара = @Штрихкод_товара

8. GetGoodsByName.sql  – для поиска товара по его названию в таблице «Товар»;

CREATE PROCEDURE GetGoodsByName

@Название_товара nvarchar(50)

AS

IF NOT EXISTS (SELECT Название_товара

   FROM   Товар

   WHERE Название_товара =  @Название_товара) 

BEGIN

RAISERROR ('Не найдена запись, соответствующая названию товара.', 16, 1)

RETURN 1

END

DECLARE @Код_сервисного_центра int

SET @Код_сервисного_центра = (SELECT Код_сервисного_центра

   FROM  Товар

   WHERE Название_товара = @Название_товара)

IF EXISTS (SELECT Код_сервисного_центра

   FROM   Сервисный_центр 

   WHERE Код_сервисного_центра =  @Код_сервисного_центра) 

SELECT Штрихкод_товара,

Название_товара,

Категория,

Описание,

Количество_склад,

Количество_магазин,

Цена,

Срок_гарантии,

Товар.Код_сервисного_центра,

Название_сервисного_центра

FROM Товар INNER JOIN Сервисный_центр 

ON Товар.Код_сервисного_центра = Сервисный_центр.Код_сервисного_центра

WHERE Название_товара =  @Название_товара

ELSE

SELECT *

FROM Товар

WHERE Название_товара =  @Название_товара

9. GetVendorAssort.sql  – для поиска поставщиков, предлагающий данный товар, в таблице «Поставщик_Товар»;

CREATE PROCEDURE GetVendorAssort

@Штрихкод_товара varchar(20) = '0'

AS

 

SELECT Название_поставщика AS Поставщик, Оптовая_цена AS [Цена опт], Количество_в_наличии AS Количество

FROM Поставщик INNER JOIN Поставщик_Товар 

ON (Поставщик.Код_поставщика = Поставщик_Товар.Код_поставщика)

WHERE Штрихкод_товара = @Штрихкод_товара

10. GetVendorByCode.sql  – для поиска поставщика по его коду в таблице «Поставщик»;

CREATE PROCEDURE GetVendorByCode

@Код_поставщика int

AS

IF EXISTS (SELECT Код_поставщика

   FROM   Поставщик

   WHERE Код_поставщика =  @Код_поставщика) 

SELECT *

FROM Поставщик

WHERE Код_поставщика =  @Код_поставщика

ELSE

BEGIN

RAISERROR ('Не найдена запись, соответствующая  коду поставщика.', 16, 1)

WITH NOWAIT

END

11. GetVendorByName.sql  – для поиска поставщика по его названию в таблице «Поставщик»;

CREATE PROCEDURE GetVendorByName

@Название_поставщика nvarchar(50)

AS

IF EXISTS (SELECT @Название_поставщика

   FROM   Поставщик

   WHERE Название_поставщика =  @Название_поставщика) 

SELECT *

FROM Поставщик

WHERE Название_поставщика =  @Название_поставщика

ELSE

BEGIN

RAISERROR ('Не найдена запись, соответствующая названию поставщика.', 16, 1)

WITH NOWAIT

END

12. InsertEmpl.sql  – для вставки данных в таблицу «Сотрудник»;

CREATE PROCEDURE InsertEmpl

@Номер_паспорта_сотрудника  [nvarchar](15),

@ФИО_сотрудника   [nvarchar](50),

@Должность    [nvarchar](50),

@Дата_рождения   [nvarchar](30),

@Адрес_сотрудника   [nvarchar](100),

@Телефон_домашний   [varchar](20),

@Телефон_мобильный   [varchar](20)

AS

IF ISDATE(@Дата_рождения) = 0

BEGIN

RAISERROR ('Неверное значение даты рождения сотрудника.', 16, 1)

WITH NOWAIT

RETURN 1

END

 

INSERT INTO [ComputerFirm].[dbo].[Сотрудник]

([Номер_паспорта_сотрудника],

[ФИО_сотрудника],

[Должность],

[Дата_рождения],

[Адрес_сотрудника],

[Телефон_домашний],

[Телефон_мобильный])

VALUES

(@Номер_паспорта_сотрудника,

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

@Должность,

CONVERT(datetime, @Дата_рождения),

@Адрес_сотрудника,

@Телефон_домашний,

@Телефон_мобильный)

13. InsertGoods.sql  – для вставки данных в таблицу «Товар»;

CREATE PROCEDURE InsertGoods

@Штрихкод_товара [nvarchar](50),

@Название_товара [nvarchar](50),

@Категория [varchar](20),

@Описание ntext,

@Количество_склад int,

@Количество_магазин int,

@Цена money,

@Срок_гарантии int,

@Название_сервисного_центра [varchar](50)

AS

IF @Название_сервисного_центра <> '' AND

NOT EXISTS (SELECT Код_сервисного_центра

   FROM  Сервисный_центр

   WHERE Название_сервисного_центра =  @Название_сервисного_центра) 

BEGIN

RAISERROR ('Не найден Код  сервисного центра по переданному названию.', 16, 1)

RETURN 1

END

DECLARE @Код_сервисного_центра int

SET @Код_сервисного_центра = (SELECT Код_сервисного_центра

FROM  Сервисный_центр

WHERE Название_сервисного_центра =  @Название_сервисного_центра)

 

INSERT INTO [ComputerFirm].[dbo].[Товар]

(Штрихкод_товара,

Название_товара,

Категория,

Описание,

Количество_склад,

Количество_магазин,

Цена,

Срок_гарантии,

Код_сервисного_центра)

VALUES

(@Штрихкод_товара,

@Название_товара,

@Категория,

@Описание,

@Количество_склад,

@Количество_магазин,

@Цена,

@Срок_гарантии,

@Код_сервисного_центра)

14. InsertVendor.sql  – для вставки данных в таблицу «Поставщик»;

CREATE PROCEDURE InsertVendor

@Название_поставщика   [nvarchar](50),

@Адрес_поставщика   [nvarchar](100),

@Телефон_поставщика   [varchar](20)

AS

INSERT INTO [ComputerFirm].[dbo].[Поставщик]

([Название_поставщика],

[Адрес_поставщика],

[Телефон_поставщика])

VALUES

(@Название_поставщика,

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

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

15. InsertVendorAssort.sql   – для вставки данных в таблицу «Поставщик_Товар»;

CREATE PROCEDURE InsertVendorAssort

@Штрихкод_товара [nvarchar](50),

@Название_поставщика [nvarchar](50),

@Оптовая_цена money = 0,

@Количество_в_наличии int = 0

AS

IF NOT EXISTS (SELECT Штрихкод_товара

   FROM  Товар

   WHERE Штрихкод_товара =  @Штрихкод_товара) 

BEGIN

RAISERROR ('Не найден товар  по переданному штрихкоду.', 16, 1)

RETURN 1

END

IF NOT EXISTS (SELECT Код_поставщика

   FROM  Поставщик

   WHERE Название_поставщика =  @Название_поставщика) 

BEGIN

RAISERROR ('Не найден поставщик  по переданному названию.', 16, 1)

RETURN 1

END

DECLARE @Код_поставщика int

SET @Код_поставщика = (SELECT Код_поставщика

   FROM  Поставщик

   WHERE Название_поставщика =  @Название_поставщика)

INSERT INTO [ComputerFirm].[dbo].[Поставщик_Товар]

(Штрихкод_товара,

Код_поставщика,

Оптовая_цена,

Количество_в_наличии)

VALUES

(@Штрихкод_товара,

@Код_поставщика,

@Оптовая_цена,

@Количество_в_наличии)

16. test.sql  – для проверки соединения с базой данных;

CREATE PROCEDURE Test

@param int OUTPUT

AS

SET @param = 1234

17. UpdateEmpl.sql  – для обновления данных в таблице «Сотрудник»;

CREATE PROCEDURE UpdateEmpl

(@Номер_паспорта_сотрудника  [nvarchar](15),

@ФИО_сотрудника   [nvarchar](50),

@Должность    [nvarchar](50),

@Дата_рождения   [nvarchar](30),

@Адрес_сотрудника   [nvarchar](100),

 @Телефон_домашний   [varchar](20),

@Телефон_мобильный   [varchar](20))

 

AS

BEGIN

IF ISDATE(@Дата_рождения) = 0

BEGIN

RAISERROR ('Неверное значение  даты рождения сотрудника.', 16, 1)

WITH NOWAIT

RETURN 1

END

 

UPDATE [ComputerFirm].[dbo].[Сотрудник]

 

SET  [Номер_паспорта_сотрудника]  = @Номер_паспорта_сотрудника,

[ФИО_сотрудника]  = @ФИО_сотрудника,

[Должность]   = @Должность,

 [Дата_рождения]  = CONVERT(datetime, @Дата_рождения),

 [Адрес_сотрудника]  = @Адрес_сотрудника,

[Телефон_домашний]  = @Телефон_домашний,

[Телефон_мобильный]  = @Телефон_мобильный

WHERE

( [Номер_паспорта_сотрудника]  = @Номер_паспорта_сотрудника)

END

18. UpdateGoods.sql  – для обновления данных в таблице «Товар»;

CREATE PROCEDURE UpdateGoods

(@Штрихкод_товара [nvarchar](50),

@Название_товара [nvarchar](50),

@Категория [varchar](20),

@Описание ntext,

@Количество_склад int,

@Количество_магазин int,

@Цена money,

@Срок_гарантии int,

@Название_сервисного_центра [varchar](50))

 

AS

BEGIN

 

IF @Название_сервисного_центра <> '' AND NOT EXISTS (SELECT Код_сервисного_центра

   FROM  Сервисный_центр

   WHERE Название_сервисного_центра =  @Название_сервисного_центра) 

BEGIN

RAISERROR ('Не найден Код  сервисного центра по переданному названию.', 16, 1)

RETURN 1

END

IF (@Штрихкод_товара = NULL)

BEGIN

RAISERROR ('Нельзя изменить  еще не существующую запись', 16, 10)

Информация о работе Разработка информационной системы "Компьютерная фирма"