Автор работы: Пользователь скрыл имя, 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
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 /*освобождаем курсор*/
При разработке клиентского приложения были созданы следующие формы.
При запуске приложения появляется форма «СтартИнфо» (рисунок 13).
Рисунок 13 – Форма «СтартИнфо»
Она предназначена для проверки подключения к серверу и регистрации пользователя. На форме присутствует кнопка «ОК», нажатие на которую инициируюет процедуру проверки подключения и затем переключения на главную форму. Она же загружает все сохраненные опции из локальной таблицы и отображает пользовательскую строку статуса (рисунок 14). В нее выводятся все информационные сообщения автоматизированной системы.
Рисунок 14 – Пользовательская строка статуса
Код обработчиков событий формы:
Private Sub btnOK_Click()
On Error GoTo Err_Handler
strCurrentODBCConnectStr = "ODBC;DSN=" & tbxDataSource & _
";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("
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).
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("Вся информация о
Информация о работе Разработка информационной системы "Компьютерная фирма"