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

Автор работы: Пользователь скрыл имя, 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 Мб (Скачать документ)

RETURN 1

END

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

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

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

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

 

UPDATE [ComputerFirm].[dbo].[Товар] 

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

Категория = @Категория,

Описание = @Описание,

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

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

Цена = @Цена,

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

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

WHERE

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

END

19. UpdateVendor.sql  – для обновления данных в таблице «Поставщик»;

CREATE PROCEDURE UpdateVendor

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

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

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

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

 

AS

BEGIN

 

IF (@Код_поставщика = NULL)

BEGIN

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

RETURN 1

END

 

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

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

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

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

WHERE

( [Код_поставщика]  = @Код_поставщика)

END

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

CREATE PROCEDURE UpdateVendorAssort

@Штрихкод_товара [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 Название_поставщика =  @Название_поставщика)

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

SET

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

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

WHERE

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

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

 

 

3.4 T-SQL-определения курсоров

 

1. Курсор для просмотра  информации о товарах и выдача информации об их количестве.

DECLARE curs1 CURSOR

GLOBAL   /*Создается глобальный курсор, который       будет существовать до закрытия данного соединения*/

SCROLL   /*Создает прокручиваемый курсор*/

KEYSET   /*Будет создан ключевой курсор*/

TYPE_WARNING

FOR

SELECT  /*Какие поля  будут показаны в курсоре*/

Товар.Штрихкод_товара, Товар.Название_товара, Товар.Количество_склад, Товар.Количество_магазин, Товар.Количество_требуется, Товар.Описание

FROM Товар   /*Из какой таблицы выбираются данные*/

FOR READ ONLY    /*Только для чтения*/

 

open global curs1   /*открываем глобальный курсор*/

DECLARE   /*объявляем переменную*/

@@Counter int

SET @@Counter =@@CURSOR_ROWS /*присваиваем ей число рядов курсора*/

Select @@Counter     /*выводим результат на экран*/

CLOSE curs1      /*закрываем курсор*/

DEALLOCATE curs1    /*освобождаем курсор*/

 

 

3.5 Описание клиентских приложений

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

При запуске приложения появляется форма «СтартИнфо» (рисунок 13).

Рисунок 13 – Форма «СтартИнфо»

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

Рисунок 14 – Пользовательская строка статуса

 

Код обработчиков событий формы:

Private Sub btnOK_Click()

On Error GoTo Err_Handler

   

    strCurrentODBCConnectStr = "ODBC;DSN=" & tbxDataSource & _

                                ";UID=" & tbxLogin & _

                                ";PWD=" & tbxPassword & _

                                ";DATABASE=" & tbxDatabase

    TestConnection

    DoCmd.Close acForm, Me.Name

    DoCmd.OpenForm "Главная"

 

Exit_Sub:

    Exit Sub

 

Err_Handler:  'обработка ошибок

    ErrorHandler

    Resume Exit_Sub

End Sub

 

Private Sub chkNoConnectionDialog_Click()

On Error GoTo Err_Handler

   

    Options.bNoConnectionDialog = chkNoConnectionDialog

    SaveOptions

 

Exit_Sub:

    Exit Sub

 

Err_Handler:  'обработка ошибок

    ErrorHandler

    Resume Exit_Sub

End Sub

 

Private Sub Form_Load()

On Error GoTo Err_Handler

 

    LoadOptions

    HideBars

    CreateCustomBars

   

   

    If Options.bNoConnectionDialog Then

        MakeConnectionString

        TestConnection

        DoCmd.Close acForm, Me.Name

        DoCmd.OpenForm "Главная"

        GoTo Exit_Sub

    End If

   

    Dim rstConnections As Recordset

   

    Set rstConnections = CurrentDb.TableDefs("Соединение").OpenRecordset(dbOpenSnapshot)

   

    With rstConnections

       

        If .RecordCount = 0 Then

            Err.Raise 513, CurrentDb.Name, "Нет информации о соединении"

        End If

       

        tbxLogin = !UID

        tbxPassword = !PWD

        tbxDatabase = !Database

        tbxDataSource = !DSN

       

        .Close

    End With

 

Exit_Sub:

    Exit Sub

 

Err_Handler:  'обработка ошибок

    ErrorHandler

    Resume Exit_Sub

End Sub

 

После регистрации пользователя открывается главная форма (рисунок 15), из которой можно открыть формы каждого отдела, а также изменить опции или закрыть ИС.

Рисунок 15 – Форма «Главная»

Код обработчиков событий формы:

Private Sub btnCustomerCareDept_Click()

On Error GoTo Err_Handler

    DoCmd.Close acForm, Me.Name

    DoCmd.OpenForm "Отдел работы  с клиентами"

Exit_Sub:

    Exit Sub

Err_Handler:  'обработка ошибок

    ErrorHandler

    Resume Exit_Sub

End Sub

 

Private Sub btnExit_Click()

On Error GoTo Err_Handler

    RemoveCustomBars

    If (DBEngine.Workspaces(0).Databases.Count > 1) Then

        CloseCurrentDatabase

    Else

        Quit

    End If

 Exit_Sub:

    Exit Sub

Err_Handler:  'обработка ошибок

    ErrorHandler

    Resume Exit_Sub

End Sub

 

Private Sub btnOffice_Click()

On Error GoTo Err_Handler

    DoCmd.Close acForm, Me.Name

    DoCmd.OpenForm "Офис"

Exit_Sub:

    Exit Sub

 

Err_Handler:  'обработка ошибок

    ErrorHandler

    Resume Exit_Sub

End Sub

 

Private Sub btnOptions_Click()

On Error GoTo Err_Handler

    DoCmd.OpenForm "Опции"

Exit_Sub:

    Exit Sub

Err_Handler:  'обработка ошибок

    ErrorHandler

    Resume Exit_Sub

End Sub

 

Private Sub btnShop_Click()

On Error GoTo Err_Handler

    DoCmd.Close acForm, Me.Name

    DoCmd.OpenForm "Магазин"

Exit_Sub:

    Exit Sub

Err_Handler:  'обработка ошибок

    ErrorHandler

    Resume Exit_Sub

End Sub

 

Private Sub btnWarehouse_Click()

On Error GoTo Err_Handler

    DoCmd.Close acForm, Me.Name

    DoCmd.OpenForm "Склад"

Exit_Sub:

    Exit Sub

Err_Handler:  'обработка ошибок

    ErrorHandler

    Resume Exit_Sub

End Sub

 

Private Sub btnWarrantyDept_Click()

On Error GoTo Err_Handler

    DoCmd.Close acForm, Me.Name

    DoCmd.OpenForm "Гарантийный  отдел"

Exit_Sub:

    Exit Sub

Err_Handler:  'обработка ошибок

    ErrorHandler

    Resume Exit_Sub

End Sub

 

Если нажать на кнопку «Офис», то откроется форма «Офис» (рисунок 16).

Рисунок 16 – Форма «Офис»

С ее помощью директор и менеджер фирмы могут автоматизировать описанные в функциональной модели процессы. Например, при нажатии на кнопку «Сотрудники…», открывается форма «Сотрудник» (рисунок 17), с помощью которой можно добавлять, удалять, изменять информацию о сотрудниках, а также осуществлять их поиск в базе данных по номеру паспорта или имени.

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

Аналогичные операции можно производить и со списком поставщиков (рисунок 18).

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

Код обработчиков событий формы «Сотрудник»:

Private Sub btnCancel_Click()

On Error GoTo Err_Handler

    If (cbxEmplPass.ListIndex = -1) Then

        ClearFields

    Else

        Dim qdfEmpl As QueryDef

        Dim rstEmpl As Recordset

        ' Create a temporary QueryDef object to retrieve

        ' data from a Microsoft SQL Server database.

        Set qdfEmpl = CurrentDb.CreateQueryDef("")

        With qdfEmpl

           .Connect = strCurrentODBCConnectStr

           .ReturnsRecords = True

           .SQL = "EXECUTE GetEmplByPass '" & cbxEmplPass & "'"

           Set rstEmpl = .OpenRecordset(dbOpenSnapshot)

        End With

        With rstEmpl

            cbxFIO = !ФИО_Сотрудника

            cbxPost = !Должность

            dtpBirthDate = !Дата_рождения

            tbxAddress = !Адрес_сотрудника

            tbxPhoneHome = !Телефон_домашний

            tbxPhoneMobile = !Телефон_мобильный

                .Close

        End With

         cbxEmplPass.SetFocus

    End If

    SetStatus "Изменения были  отменены"

  Exit_Sub:

    Exit Sub

Err_Handler:  'обработка ошибок

    ErrorHandler

    Resume Exit_Sub

End Sub

 

Private Sub btnClose_Click()

On Error GoTo Err_Handler

    DoCmd.Close acForm, Me.Name

    DoCmd.OpenForm "Офис"

    SetStatus "Работа с формой  Сотрудник завершена"

Exit_Sub:

    Exit Sub

Err_Handler:  'обработка ошибок

    ErrorHandler

    Resume Exit_Sub

End Sub

 

Private Sub btnDelete_Click()

On Error GoTo Err_Handler

 

    Dim qdfEmpl As QueryDef

    Dim rstEmpl As Recordset

   ' Create a temporary QueryDef object

    Set qdfEmpl = CurrentDb.CreateQueryDef("")

    With qdfEmpl

        .Connect = strCurrentODBCConnectStr

        .ReturnsRecords = False

        If (cbxEmplPass.ListIndex = -1) Then

           Err.Raise 513, CurrentObjectName, "Нельзя удалить  еще не сохраненные данные"

        End If

               If (MsgBox("Вся информация о сотруднике будет удалена. Продолжить?", _

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