Учебная работа. Курсовая работа: Информационная система Data-центр

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (5 оценок, среднее: 4,80 из 5)
Загрузка...
Контрольные рефераты

Учебная работа. Курсовая работа: Информационная система Data-центр

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО (то есть программное обеспечение — комплект программ для компьютеров и вычислительных устройств) ОБРАЗОВАНИЮ

АНГАРСКАЯ ГОСУДАРСТВЕННАЯ ТЕХНИЧЕСКАЯ АКАДАМИЯ

ФАКУЛЬТЕТ ТЕХНИЧЕСКОЙ КИБЕРНЕТИКИ

КАФЕДРА “ВЫЧИСЛИТЕЛЬНЫЕ машинки И КОМПЛЕКСЫ ”

КУРСОВОЙ ПРОЕКТ

по дисциплине «Проектирование клиент/серверных систем»

Тема:

Информационная система «Data-центр»

Выполнил: Зиннер Е.С.

Проверила: Засухина О. А.

Ангарск 2009 г.


Содержание

Введение

1. Техническое задание

1.1 Обоснование необходимости разработки приложения

1.1.1 Постановка задачки

1.1.1.1 Входные данные

1.1.1.2 Выходные данные

1.2 Научно исследовательские работы

1.2.1 Выбор СУБД

1.2.2 Выбор зрительной среды программирования

1.2.3 Механизм доступа данных к ADO

1.2.4 Выбор технических средств

2. технический проект

2.1 Разработка структурированного приложения

2.2 Определение структуры входных и выходных данных

2.2.1 структура таблиц

2.2.2 Схема данных

2.3 Определение формы представления входных и выходных данных

2.3.1 Формы

3. Рабочий проект

3.1 текст программки

3.1.1 Сценарий в Microsoft SQL Server

3.1.2 Клиентское приложение

3.2 Управление юзера

Заключение

Литература


Введение

Целью курсовой работы является разработка информационной системы «Библиотека Дорвеям» в архитектуре клиент/сервер. БД «Библиотека Дорвеям» разрабатывается в серверной системе управления БД Microsoft SQL Server. Клиентское приложение разрабатывается в Code Gear RAD Studio механизм доступа ADO.

Microsoft SQL Server
— система управления реляционными базами данных (СУБД), разработанная компанией Microsoft. Главный применяемый язык запросов — Transact-SQL, сотворен вместе Microsoft и Sybase. Transact-SQL является реализацией эталона ANSI/ISO по структурированному языку запросов (SQL) с расширениями. Употребляется для от маленьких и средних по размеру баз данных до больших баз данных масштаба компании, соперничает с иными СУБД в этом секторе рынка.

Крайняя версия SQL Server — SQL Server 2008 (кодовое заглавие «Katmai»). Была выпущена 6 августа 2008 года.

SQL Server 2008 ориентирован на то, чтоб создать управление данными самонастраивающимся, самоорганизующимся и самообслуживающимся механизмом — для реализации этих способностей были сделаны технологии SQL Server Always On. Это дозволит уменьшить до нуля время нахождения сервера в нерабочем состоянии.

В SQL Server 2008 была добавлена поддержка структурированных и частичноструктурированных данных, включая цифровые форматы для изображений, звуков, видео и остальных типов мультимедиа. Поддержка мультимедиа форматов снутри СУБД дозволила спец функциям вести взаимодействие с этими типами данных.

Не считая этого, были включены спец форматы даты и времени и пространственный (англ. Spatial) тип для пространственно зависимых данных. Для неструктурированных данных были добавлены спец типы, к примеру, тип File.

Для увеличения эффективности администрирования в SQL Server были включены библиотеки Declarative Management Framework, дозволяющие распределять возможности для баз данных либо отдельных таблиц. Были усовершенствованы способы компрессии данных. SQL Server Katmai поддерживает набор библиотек ADO.NET Entity Framework и средства оповещения, репликации и определения данных.

CodeGear RAD Studio 2007
— среда резвой разработки приложений (RAD) для Microsoft Windows. CodeGear RAD Studio, ранее узнаваемый как проект Highlander, соединяет воединыжды Delphi для Win32, C++Builder и новейший Delphi.NET 2.0 в единую интегрированную среду. Это единственная встроенная среда разработки (IDE), которая поддерживает резвую разработку как Windows, так и.NET-приложений для Microsoft Windows 2000, XP, и Vista. Схожая универсальность дозволяет разрабам строить Web, клиент/серверные и рабочий стол Windows-приложения для всех 3-х ОС и употреблять такие приложения на хоть какой из этих платформ.

CodeGear RAD Studio дает разрабам упругость в выборе операционной системы, которая более много удовлетворяет их требованиям при разработке приложения для нескольких ОС Windows, включая программки для Windows Vista и Web-приложения.

Новейшие функции и способности CodeGear RAD Studio 2007:

Расширенная поддержка Delphi для пользовательского интерфейса Microsoft Vista Aero, включая прикладные приложения, библиотеки зрительных компонент (VCL) и поддержку VCL.NET для 3D эффектов и анимации пользовательского интерфейса, эффекта прозрачности, компонент диалоговых окон для работы с файлами и задачками.

Поддержка языка Delphi для разработки в среде Microsoft.NET 2.0 (совместимо с.NET 3.0) и ASP.NET 2.0. ASP.NET представляет собой набор технологий в рамках.NET framework для сотворения Web-приложений и XML Web-сервисов.

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

Blackfish SQL — баз данных, вполне написанный на платформе.NET, который поддерживает SQL и обеспечивает легкое развертывание XCopy, поддержку транзакций, также создание триггеров и хранимых процедур на языке.NET (Delphi.NET, C#, и Visual Basic.NET).

Enterprise Core Objects (ECO) IV — мощная среда для разработки на базе моделей (Model-Driven Development) для.NET 2.0. ECO дозволяет разрабам употреблять зрительные диаграммы для построения объектов, также связей и логики взаимодействия меж ними, а потом автоматом делает и поддерживает инфраструктуру базы данных (с внедрением Microsoft ADO.NET) и интерфейс взаимодействия данных, оставляя разрабу лишь заботу о бизнес-логике и наружном виде приложения.

Освеженная архитектура доступа к базам данных dbExpress 4 с поддержкой ADO.NET 2.0. dbExpress 4 — это единое решение для доступа к базам данных для.NET и Windows с поддержкой ADO.NET, которое упрощает разработку и сопряжение рабочий стол и клиент/серверных приложений баз данных.

Как и платформа Windows, аппаратное обеспечение компов и сеть повсевременно эволюционируют, так и продукты CodeGear для Delphi и C++ также совершенствуются, чтоб отдать разрабам возможность извлечь из перемен пользу, создавая новейшие способности для независящих поставщиков программного обеспечения (ISV) и создателей клиент/сервер приложений на базе баз данных.



1. Техническое задание



1.1 Обоснование необходимости разработки приложения

СУБД употребляются фактически во всех сферах людской деятель;

Подготовка и издание данного приложения дозволит выслеживать новинки, а так же узнавать ход перевода.




1.1.1 Постановка задачки

Создать БД «Библиотека Дорвеям» в серверной системе управления БД Microsoft SQL Server, клиентское приложение разрабатывается в Code Gear RAD Studio. БД обязана хранить и предоставлять юзеру информацию о телесериалах и переводчиках, подсчитывает количество записей в базе, возможность поиска определенной записи по режиссеру через фильтрацию, сортировку по избранным характеристикам (по стране либо по году), вывод отчетов для следующей печати.



1.1.1.1 Входные данные

Технические свойства оборудования

Стоимость оборудования

Клиенты

время аренды



1.1.1.2 Выходные данные

Технические свойства оборудования

Стоимость оборудования

Клиенты

время аренды


1.2 Научно исследовательские работы



1.2.1 Выбор СУБД

Microsoft SQL Server
— система управления реляционными базами данных (СУБД), разработанная компанией Microsoft. Главный применяемый язык запросов — Transact-SQL, сотворен вместе Microsoft и Sybase. Transact-SQL является реализацией эталона ANSI/ISO по структурированному языку запросов (SQL) с расширениями. Употребляется для от маленьких и средних по размеру баз данных до больших баз данных масштаба компании, соперничает с иными СУБД в этом секторе рынка.

Крайняя версия SQL Server — SQL Server 2008 (кодовое заглавие «Katmai»). Была выпущена 6 августа 2008 года.

SQL Server 2008 ориентирован на то, чтоб создать управление данными самонастраивающимся, самоорганизующимся и самообслуживающимся механизмом — для реализации этих способностей были сделаны технологии SQL Server Always On. Это дозволит уменьшить до нуля время нахождения сервера в нерабочем состоянии.




1.2.2 Выбор зрительной среды программирования

CodeGear RAD Studio 2007
— среда резвой разработки приложений (RAD) для Microsoft Windows. CodeGear RAD Studio, ранее узнаваемый как проект Highlander, соединяет воединыжды Delphi для Win32, C++Builder и новейший Delphi.NET 2.0 в единую интегрированную среду. Это единственная встроенная среда разработки (IDE), которая поддерживает резвую разработку как Windows, так и.NET-приложений для Microsoft Windows 2000, XP, и Vista. Схожая универсальность дозволяет разрабам строить Web, клиент/серверные и рабочий стол Windows-приложения для всех 3-х ОС и употреблять такие приложения на хоть какой из этих платформ. CodeGear RAD Studio 2007 открывает новейшие способности для разрабов, которые интересуются разработкой высокопроизводительных Windows-приложений с высочайшими требованиями к GUI, прикладных программ, работающих с базами данных, Web-приложений для бизнеса, также стремятся извлечь наивысшую пользу из усовершенствований аппаратного обеспечения и операционной системы Windows.




1.2.3 Механизм доступа данных к ADO

ADO (от англ. activeX Data Objects — «объекты данных ActiveX») — интерфейс программирования приложений для доступа к данным, разработанный компанией Microsoft (MS Access, MS SQL Server) и основанный на технологии компонент ActiveX. ADO дозволяет представлять данные из различных источников (реляционных баз данных, текстовых файлов и т. д.) в объектно-ориентированном виде. Компонент ADOQuery обеспечивает выполнение SQL запросов и получение требуемого набора данных. ADOConnection предназначен для хранения данных ADOTable, ADOQuery, ADOCommand. Основное свойство Connection string дозволяет найти характеристики Настроить вручную либо с помощью редактора. ADOTable употребляется для доступа к хранилищам данных ADO и придоставляет информацию из их в табличном виде. Компонент связывается с данными с помощью Connection->ADOConnection, TableName-> имя Таблицы, Active->True.

Объектная модель ADO состоит из последующих объектов высочайшего уровня и семейств объектов:

Connection (представляет подключение к удалённому источнику данных)

Recordset (представляет набор строк, приобретенный от источника данных)

Command (употребляется для выполнения установок и SQL-запросов с параметрами)

Record (может представлять одну запись объекта Recordset либо же иерархическую структуру, состоящую из текстовых данных)

Stream (употребляется для чтения и записи потоковых данных, к примеру, документов XML либо двоичных объектов)

Errors (представляет ошибки)

Fields (представляет столбцы таблицы базы данных)

Parameters (представляет набор характеристик SQL-инструкции)

Properties (представляет набор параметров объекта)


1.2.4. Выбор технических средств

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

Набросок 1.1 Архитектура локальной сети для клиент-серверных приложений


2. ТЕХНИЧЕСКИЙ ПРОЕКТ


2.1 Разработка структурированного приложения

Схема 2.1 Дерево модулей и форм.



2.2 Определение структуры входных и выходных данных

2.2.1 структура таблиц

Таблица 2.1 TB_DOGOVOR

Имя поля


Пояснение


Тип данных


Ключ поля



ID_DOGOVOR


Код контракта


Int


Первичный



ID_KLIENT


Код клиента


Int


Наружный



ID_MASHIN


Код конфигурации


Int


Наружный



Date_zakl


Дата заключения


DateTime




Date_okonch


Дата окончания


DateTime




Stoimost


Общая стоимостьтоимость


DateTime





Таблица 2.2 TB_MASHIN

имя поля


Пояснение


Тип данных


Ключ поля



ID_MASHIN


Код конфигурации


Int


Первичный



ID_PROC


Код микропроцессора


Int


Наружный



ID_HDD


Код конфигурации


Int


Наружный



ID_MEM


Код оперативки


Int


Наружный



ID_SPEED


Код скорости подключения


Int


Наружный



NAIM


Заглавие конфигурации


nchar




CENA


Стоимость аренды за месяц


Real





Таблица 2.3 TB_HDD

имя поля


Пояснение


Тип данных


Ключ поля



ID_HDD


Код твердого диска


Int


Первичный



NAIM


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


nchar




HARACT


свойства


nchar





Таблица 2.4 TB_KLIENTS

имя поля


Пояснение


Тип данных


Ключ поля



ID_KLIENT


Код клиента


Int


Первичный



NAIM


ФИО


nchar




HARACT


Контактные данные


nchar





Таблица 2.5 TB_MEM

имя поля


Пояснение


Тип данных


Ключ поля



ID_MEM


Код памяти


Int


Первичный



NAIM


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


nchar




HARACT


свойства


nchar





Таблица 2.6 TB_PROC

имя поля


Пояснение


Тип данных


Ключ поля



ID_PROC


Код микропроцессора


Int


Первичный



NAIM


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


nchar




HARACT


свойства


nchar





Таблица 2.4 TB_SPEED

имя поля


Пояснение


Тип данных


Ключ поля



ID_SPEED


Код скорости


Int


Первичный



NAIM


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


nchar




HARACT


свойства


nchar







2.2.2 Схема данных

Схема 2.2 структура таблиц



2.3 Определение формы представления входных и выходных данных

2.3.1 Формы

Набросок 2.2 Основная форма


Набросок 2.3 Форма запросов, таблиц и представлений.

Набросок 2.4 Форма справочников

Набросок 2.5 Форма прибавления частей в таблицы.


Набросок 2.5 Data Module


3. РАБОЧИЙ ПРОЕКТ


3.1 текст программки

3.1.1 Сценарий в Microsoft SQL Server

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[TB_SPEED]’) AND type in (N’U’))

BEGIN

CREATE TABLE [dbo].[TB_SPEED](

[ID_SPEED] [int] IDENTITY(1,1) NOT NULL,

[NAIM] [nchar](10) NULL,

[HARACT] [nchar](10) NULL,

CONSTRAINT [PK_TB_SPEED] PRIMARY KEY CLUSTERED

(

[ID_SPEED] ASC

)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]

) ON [PRIMARY]

END

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[TB_KLIENTS]’) AND type in (N’U’))

BEGIN

CREATE TABLE [dbo].[TB_KLIENTS](

[ID_KLIENT] [int] IDENTITY(1,1) NOT NULL,

[NAIM] [nchar](25) NULL,

[HARACT] [nchar](50) NULL,

CONSTRAINT [PK_TB_KLIENTS] PRIMARY KEY CLUSTERED

(

[ID_KLIENT] ASC

)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]

) ON [PRIMARY]

END

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[TB_PROC]’) AND type in (N’U’))

BEGIN

CREATE TABLE [dbo].[TB_PROC](

[ID_PROC] [int] IDENTITY(1,1) NOT NULL,

[NAIM] [nchar](10) NULL,

[HARACT] [nchar](10) NULL,

CONSTRAINT [PK_TB_PROC] PRIMARY KEY CLUSTERED

(

[ID_PROC] ASC

)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]

) ON [PRIMARY]

END

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[TB_MEM]’) AND type in (N’U’))

BEGIN

CREATE TABLE [dbo].[TB_MEM](

[ID_MEM] [int] IDENTITY(1,1) NOT NULL,

[NAIM] [nchar](10) NULL,

[HARACT] [nchar](10) NULL,

CONSTRAINT [PK_TB_MEM] PRIMARY KEY CLUSTERED

(

[ID_MEM] ASC

)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]

) ON [PRIMARY]

END

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[TB_HDD]’) AND type in (N’U’))

BEGIN

CREATE TABLE [dbo].[TB_HDD](

[ID_HDD] [int] IDENTITY(1,1) NOT NULL,

[NAIM] [nchar](10) NULL,

[HARACT] [nchar](10) NULL,

CONSTRAINT [PK_TB_HDD] PRIMARY KEY CLUSTERED

(

[ID_HDD] ASC

)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]

) ON [PRIMARY]

END

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[TB_MASHIN]’) AND type in (N’U’))

BEGIN

CREATE TABLE [dbo].[TB_MASHIN](

[ID_MASHIN] [int] IDENTITY(1,1) NOT NULL,

[ID_PROC] [int] NULL,

[ID_HDD] [int] NULL,

[ID_MEM] [int] NULL,

[ID_SPEED] [int] NULL,

[NAIM] [nchar](10) NULL,

[CENA] [real] NULL,

CONSTRAINT [PK_TB_MASHIN] PRIMARY KEY CLUSTERED

(

[ID_MASHIN] ASC

)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]

) ON [PRIMARY]

END

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[TB_DOGOVOR]’) AND type in (N’U’))

BEGIN

CREATE TABLE [dbo].[TB_DOGOVOR](

[ID_DOGOVOR] [int] IDENTITY(1,1) NOT NULL,

[ID_KLIENT] [int] NULL,

[ID_MASHIN] [int] NULL,

[Date_zakl] [datetime] NULL,

[Date_okonch] [datetime] NULL,

[Stoimost] [real] NULL,

CONSTRAINT [PK_TB_DOGOVOR] PRIMARY KEY CLUSTERED

(

[ID_DOGOVOR] ASC

)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]

) ON [PRIMARY]

END

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

IF NOT EXISTS (SELECT * FROM sys.views WHERE object_id = OBJECT_ID(N'[dbo].[PR_MASHIN]’))

EXEC dbo.sp_executesql @statement = N’CREATE VIEW [dbo].[PR_MASHIN]

AS

SELECT dbo.TB_MASHIN.NAIM AS NAIM_MASH, dbo.TB_MEM.NAIM AS NAIM_MEM, dbo.TB_SPEED.NAIM AS NAIM_SPEED, dbo.TB_PROC.NAIM AS NAIM_PROC,

dbo.TB_HDD.NAIM AS NAIM_HDD, dbo.TB_MASHIN.CENA

FROM dbo.TB_MASHIN INNER JOIN

dbo.TB_MEM ON dbo.TB_MASHIN.ID_MEM = dbo.TB_MEM.ID_MEM INNER JOIN

dbo.TB_PROC ON dbo.TB_MASHIN.ID_PROC = dbo.TB_PROC.ID_PROC INNER JOIN

dbo.TB_SPEED ON dbo.TB_MASHIN.ID_SPEED = dbo.TB_SPEED.ID_SPEED INNER JOIN

dbo.TB_HDD ON dbo.TB_MASHIN.ID_HDD = dbo.TB_HDD.ID_HDD

GO

EXEC sys.sp_addextendedproperty @name=N’MS_DiagramPane1′, @value=N'[0E232FF0-B466-11cf-A24F-00AA00A3EFFF, 1.00]

Begin DesignProperties =

Begin PaneConfigurations =

Begin PaneConfiguration = 0

NumPanes = 4

Configuration = «(H (1[40] 4[20] 2[20] 3))»

End

Begin PaneConfiguration = 1

NumPanes = 3

Configuration = «(H (1 [50] 4 [25] 3))»

End

Begin PaneConfiguration = 2

NumPanes = 3

Configuration = «(H (1 [50] 2 [25] 3))»

End

Begin PaneConfiguration = 3

NumPanes = 3

Configuration = «(H (4 [30] 2 [40] 3))»

End

Begin PaneConfiguration = 4

NumPanes = 2

Configuration = «(H (1 [56] 3))»

End

Begin PaneConfiguration = 5

NumPanes = 2

Configuration = «(H (2 [66] 3))»

End

Begin PaneConfiguration = 6

NumPanes = 2

Configuration = «(H (4 [50] 3))»

End

Begin PaneConfiguration = 7

NumPanes = 1

Configuration = «(V (3))»

End

Begin PaneConfiguration = 8

NumPanes = 3

Configuration = «(H (1[56] 4[18] 2))»

End

Begin PaneConfiguration = 9

NumPanes = 2

Configuration = «(H (1 [75] 4))»

End

Begin PaneConfiguration = 10

NumPanes = 2

Configuration = «(H (1[66] 2))»

End

Begin PaneConfiguration = 11

NumPanes = 2

Configuration = «(H (4 [60] 2))»

End

Begin PaneConfiguration = 12

NumPanes = 1

Configuration = «(H (1))»

End

Begin PaneConfiguration = 13

NumPanes = 1

Configuration = «(V (4))»

End

Begin PaneConfiguration = 14

NumPanes = 1

Configuration = «(V (2))»

End

ActivePaneConfig = 0

End

Begin DiagramPane =

Begin Origin =

Top = 0

Left = 0

End

Begin Tables =

Begin Table = «TB_MEM»

Begin Extent =

Top = 6

Left = 245

Bottom = 108

Right = 414

End

DisplayFlags = 280

TopColumn = 0

End

Begin Table = «TB_PROC»

Begin Extent =

Top = 6

Left = 452

Bottom = 108

Right = 621

End

DisplayFlags = 280

TopColumn = 0

End

Begin Table = «TB_SPEED»

Begin Extent =

Top = 108

Left = 245

Bottom = 210

Right = 414

End

DisplayFlags = 280

TopColumn = 0

End

Begin Table = «TB_HDD»

Begin Extent =

Top = 108

Left = 452

Bottom = 210

Right = 621

End

DisplayFlags = 280

TopColumn = 0

End

Begin Table = «TB_MASHIN»

Begin Extent =

Top = 6

Left = 38

Bottom = 123

Right = 207

End

DisplayFlags = 280

TopColumn = 3

End

End

End

Begin SQLPane =

End

Begin DataPane =

Begin ParameterDefaults = «»

End

End

Begin CriteriaPane =

Begin ColumnWidths = 11

Column = 1440

Alias = 900

Table = 1170

Output = 720

Append = 1400

NewValue = 1170

SortType = 1350

SortOrder = 1410

GroupBy = 1350

Filter = 1350

Or = 1350

Or = 1350

Or = 135′,@level0type=N’SCHEMA’, @level0name=N’dbo’, @level1type=N’VIEW’, @level1name=N’PR_MASHIN’

GO

EXEC sys.sp_addextendedproperty @name=N’MS_DiagramPane2′, @value=N’0

End

End

End

‘,@level0type=N’SCHEMA’, @level0name=N’dbo’, @level1type=N’VIEW’, @level1name=N’PR_MASHIN’

GO

EXEC sys.sp_addextendedproperty @name=N’MS_DiagramPaneCount’, @value=2,@level0type=N’SCHEMA’, @level0name=N’dbo’, @level1type=N’VIEW’, @level1name=N’PR_MASHIN’

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

IF NOT EXISTS (SELECT * FROM sys.views WHERE object_id = OBJECT_ID(N'[dbo].[PR_DOGOVOR]’))

EXEC dbo.sp_executesql @statement = N’CREATE VIEW [dbo].[PR_DOGOVOR]

AS

SELECT dbo.TB_KLIENTS.NAIM AS NAIM_KLIENT, dbo.TB_MASHIN.NAIM AS NAIM_MASH, dbo.TB_MASHIN.CENA, dbo.TB_DOGOVOR.Date_zakl,

dbo.TB_DOGOVOR.Date_okonch, dbo.TB_DOGOVOR.Stoimost

FROM dbo.TB_DOGOVOR INNER JOIN

dbo.TB_KLIENTS ON dbo.TB_DOGOVOR.ID_KLIENT = dbo.TB_KLIENTS.ID_KLIENT INNER JOIN

dbo.TB_MASHIN ON dbo.TB_DOGOVOR.ID_MASHIN = dbo.TB_MASHIN.ID_MASHIN

GO

EXEC sys.sp_addextendedproperty @name=N’MS_DiagramPane1′, @value=N'[0E232FF0-B466-11cf-A24F-00AA00A3EFFF, 1.00]

Begin DesignProperties =

Begin PaneConfigurations =

Begin PaneConfiguration = 0

NumPanes = 4

Configuration = «(H (1[40] 4[20] 2[20] 3))»

End

Begin PaneConfiguration = 1

NumPanes = 3

Configuration = «(H (1 [50] 4 [25] 3))»

End

Begin PaneConfiguration = 2

NumPanes = 3

Configuration = «(H (1 [50] 2 [25] 3))»

End

Begin PaneConfiguration = 3

NumPanes = 3

Configuration = «(H (4 [30] 2 [40] 3))»

End

Begin PaneConfiguration = 4

NumPanes = 2

Configuration = «(H (1 [56] 3))»

End

Begin PaneConfiguration = 5

NumPanes = 2

Configuration = «(H (2 [66] 3))»

End

Begin PaneConfiguration = 6

NumPanes = 2

Configuration = «(H (4 [50] 3))»

End

Begin PaneConfiguration = 7

NumPanes = 1

Configuration = «(V (3))»

End

Begin PaneConfiguration = 8

NumPanes = 3

Configuration = «(H (1[56] 4[18] 2))»

End

Begin PaneConfiguration = 9

NumPanes = 2

Configuration = «(H (1 [75] 4))»

End

Begin PaneConfiguration = 10

NumPanes = 2

Configuration = «(H (1[66] 2))»

End

Begin PaneConfiguration = 11

NumPanes = 2

Configuration = «(H (4 [60] 2))»

End

Begin PaneConfiguration = 12

NumPanes = 1

Configuration = «(H (1))»

End

Begin PaneConfiguration = 13

NumPanes = 1

Configuration = «(V (4))»

End

Begin PaneConfiguration = 14

NumPanes = 1

Configuration = «(V (2))»

End

ActivePaneConfig = 0

End

Begin DiagramPane =

Begin Origin =

Top = 0

Left = 0

End

Begin Tables =

Begin Table = «TB_MASHIN»

Begin Extent =

Top = 6

Left = 38

Bottom = 123

Right = 207

End

DisplayFlags = 280

TopColumn = 3

End

Begin Table = «TB_KLIENTS»

Begin Extent =

Top = 6

Left = 245

Bottom = 108

Right = 414

End

DisplayFlags = 280

TopColumn = 0

End

Begin Table = «TB_DOGOVOR»

Begin Extent =

Top = 6

Left = 452

Bottom = 123

Right = 621

End

DisplayFlags = 280

TopColumn = 0

End

End

End

Begin SQLPane =

End

Begin DataPane =

Begin ParameterDefaults = «»

End

End

Begin CriteriaPane =

Begin ColumnWidths = 11

Column = 1440

Alias = 900

Table = 1170

Output = 720

Append = 1400

NewValue = 1170

SortType = 1350

SortOrder = 1410

GroupBy = 1350

Filter = 1350

Or = 1350

Or = 1350

Or = 1350

End

End

End

‘,@level0type=N’SCHEMA’, @level0name=N’dbo’, @level1type=N’VIEW’, @level1name=N’PR_DOGOVOR’

GO

EXEC sys.sp_addextendedproperty @name=N’MS_DiagramPaneCount’, @value=1,@level0type=N’SCHEMA’, @level0name=N’dbo’, @level1type=N’VIEW’, @level1name=N’PR_DOGOVOR’

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[PPoisk]’) AND type in (N’P’, N’PC’))

BEGIN

EXEC dbo.sp_executesql @statement = N’— — Author:<Author,,Name>

— Create date: <Create Date,,>

— Description:<Description,,>

CREATE PROCEDURE [dbo].[PPoisk]

@p CHAR(10)

AS

BEGIN

SELECT NAIM_MASH, NAIM_MEM, NAIM_SPEED, NAIM_PROC, NAIM_HDD, CENA

FROM PR_MASHIN

WHERE (NAIM_SPEED = @p)

END

END

GO

IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_TB_MASHIN_TB_HDD]’) AND parent_object_id = OBJECT_ID(N'[dbo].[TB_MASHIN]’))

ALTER TABLE [dbo].[TB_MASHIN] WITH CHECK ADD CONSTRAINT [FK_TB_MASHIN_TB_HDD] FOREIGN KEY([ID_HDD])

REFERENCES [dbo].[TB_HDD] ([ID_HDD])

GO

IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_TB_MASHIN_TB_MEM]’) AND parent_object_id = OBJECT_ID(N'[dbo].[TB_MASHIN]’))

ALTER TABLE [dbo].[TB_MASHIN] WITH CHECK ADD CONSTRAINT [FK_TB_MASHIN_TB_MEM] FOREIGN KEY([ID_MEM])

REFERENCES [dbo].[TB_MEM] ([ID_MEM])

GO

IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_TB_MASHIN_TB_PROC]’) AND parent_object_id = OBJECT_ID(N'[dbo].[TB_MASHIN]’))

ALTER TABLE [dbo].[TB_MASHIN] WITH CHECK ADD CONSTRAINT [FK_TB_MASHIN_TB_PROC] FOREIGN KEY([ID_PROC])

REFERENCES [dbo].[TB_PROC] ([ID_PROC])

GO

IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_TB_MASHIN_TB_SPEED]’) AND parent_object_id = OBJECT_ID(N'[dbo].[TB_MASHIN]’))

ALTER TABLE [dbo].[TB_MASHIN] WITH CHECK ADD CONSTRAINT [FK_TB_MASHIN_TB_SPEED] FOREIGN KEY([ID_SPEED])

REFERENCES [dbo].[TB_SPEED] ([ID_SPEED])

GO

IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_TB_DOGOVOR_TB_KLIENTS]’) AND parent_object_id = OBJECT_ID(N'[dbo].[TB_DOGOVOR]’))

ALTER TABLE [dbo].[TB_DOGOVOR] WITH CHECK ADD CONSTRAINT [FK_TB_DOGOVOR_TB_KLIENTS] FOREIGN KEY([ID_KLIENT])

REFERENCES [dbo].[TB_KLIENTS] ([ID_KLIENT])

GO

IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_TB_DOGOVOR_TB_MASHIN]’) AND parent_object_id = OBJECT_ID(N'[dbo].[TB_DOGOVOR]’))

ALTER TABLE [dbo].[TB_DOGOVOR] WITH CHECK ADD CONSTRAINT [FK_TB_DOGOVOR_TB_MASHIN] FOREIGN KEY([ID_MASHIN])

REFERENCES [dbo].[TB_MASHIN] ([ID_MASHIN])



3.1.2 Клиентское приложение

unit UnitMain;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Grids, DBGrids, Menus, ExtCtrls, DBCtrls, StdCtrls;

type

TFRMMain = class(TForm)

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

N11: TMenuItem;

N21: TMenuItem;

N5: TMenuItem;

N6: TMenuItem;

N7: TMenuItem;

N8: TMenuItem;

N9: TMenuItem;

N10: TMenuItem;

N12: TMenuItem;

N13: TMenuItem;

N14: TMenuItem;

N15: TMenuItem;

N16: TMenuItem;

DBGrid1: TDBGrid;

procedure N10Click(Sender: TObject);

procedure N9Click(Sender: TObject);

procedure N7Click(Sender: TObject);

procedure N8Click(Sender: TObject);

procedure N12Click(Sender: TObject);

procedure N6Click(Sender: TObject);

procedure N15Click(Sender: TObject);

procedure N16Click(Sender: TObject);

procedure N5Click(Sender: TObject);

procedure N13Click(Sender: TObject);

procedure N14Click(Sender: TObject);

procedure N11Click(Sender: TObject);

procedure N21Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

FRMMain: TFRMMain;

implementation

uses UnitDM, UnitSprav, UnitTable;

{$R *.dfm}

procedure TFRMMain.N7Click(Sender: TObject);

begin

FRMSPRAV.DBGrid1.DataSource:=DM.DS_KLIENT;

FRMSPRAV.DBNavigator1.DataSource:=DM.DS_KLIENT;

FRMSPRAV.Caption:=’Клиенты’;

FRMSPRAV.Show;

end;

procedure TFRMMain.N8Click(Sender: TObject);

begin

FRMSPRAV.DBGrid1.DataSource:=DM.DS_PROC;

FRMSPRAV.DBNavigator1.DataSource:=DM.DS_PROC;

FRMSPRAV.Caption:=’Микропроцессоры’;

FRMSPRAV.Show;

end;

procedure TFRMMain.N9Click(Sender: TObject);

begin

FRMSPRAV.DBGrid1.DataSource:=DM.DS_HDD;

FRMSPRAV.DBNavigator1.DataSource:=DM.DS_HDD;

FRMSPRAV.Caption:=’Твердые диски’;

FRMSPRAV.Show;

end;

procedure TFRMMain.N10Click(Sender: TObject);

begin

FRMSPRAV.DBGrid1.DataSource:=DM.DS_MEM;

FRMSPRAV.DBNavigator1.DataSource:=DM.DS_MEM;

FRMSPRAV.Show;

FRMSPRAV.Caption:=’память‘;

end;

procedure TFRMMain.N11Click(Sender: TObject);

begin

FRMTable.Label1.Caption:=(‘Введите заглавие машинки‘);

FRMTable.DBGrid1.DataSource:=DM.DSQ_Dogovor;

FRMTable.ClientHeight:=211;

FRMTable.Show;

FRMTable.Panel1.Visible:=false;

FRMTable.Panel2.Visible:=true;

FRMTable.Caption:=’Поиск арендаторов’;

end;

procedure TFRMMain.N12Click(Sender: TObject);

begin

FRMSPRAV.DBGrid1.DataSource:=DM.DS_SPEED;

FRMSPRAV.DBNavigator1.DataSource:=DM.DS_SPEED;

FRMSPRAV.Show;

FRMSPRAV.Caption:=’Скорость’;

end;

procedure TFRMMain.N13Click(Sender: TObject);

begin

FRMTable.DBGrid1.DataSource:=DM.DSv_DOGOVOR;

FRMTable.Show;

FRMTable.ClientHeight:=169;

FRMTable.Caption:=’Контракта’;

end;

procedure TFRMMain.N14Click(Sender: TObject);

begin

FRMTable.DBGrid1.DataSource:=DM.DSV_MASHINS;

FRMTable.Show;

FRMTable.ClientHeight:=169;

FRMTable.Caption:=’Прайс-лист’;

end;

procedure TFRMMain.N15Click(Sender: TObject);

begin

FRMTable.DBGrid1.DataSource:=DM.DS_DOGOVOR;

FRMTable.ClientHeight:=211;

FRMTable.Show;

FRMTable.Panel1.Visible:=true;

FRMTable.Panel2.Visible:=false;

FRMTable.Caption:=’Контракта’;

end;

procedure TFRMMain.N16Click(Sender: TObject);

begin

FRMTable.DBGrid1.DataSource:=DM.DS_MASHIN;

FRMTable.ClientHeight:=211;

FRMTable.Show;

FRMTable.Panel1.Visible:=true;

FRMTable.Panel2.Visible:=false;

FRMTable.Caption:=’Прайс-лист’;

end;

procedure TFRMMain.N21Click(Sender: TObject);

begin

FRMTable.Label1.Caption:=(‘Введите требуемый размер памяти’);

FRMTable.DBGrid1.DataSource:=DM.DSP_Poisk;

FRMTable.ClientHeight:=211;

FRMTable.Show;

FRMTable.Panel1.Visible:=false;

FRMTable.Panel2.Visible:=true;

FRMTable.Caption:=’Поиск машинки‘;

end;

procedure TFRMMain.N5Click(Sender: TObject);

begin

DM.RvDogovora.Execute;

end;

procedure TFRMMain.N6Click(Sender: TObject);

begin

close;

end;

end.

unit UnitDM;

interface

uses

SysUtils, Classes, DB, ADODB, RpCon, RpConDS, RpDefine, RpRave, RpRender,

RpRenderCanvas, RpRenderPreview, DBClient;

type

TDM = class(TDataModule)

T_KLIENTS: TADOTable;

T_DOGOVOR: TADOTable;

T_MASHIN: TADOTable;

T_SPEED: TADOTable;

T_MEM: TADOTable;

T_HDD: TADOTable;

T_PROC: TADOTable;

DS_DOGOVOR: TDataSource;

DS_MASHIN: TDataSource;

DS_SPEED: TDataSource;

DS_MEM: TDataSource;

DS_HDD: TDataSource;

DS_PROC: TDataSource;

DS_KLIENT: TDataSource;

ADOConnection1: TADOConnection;

T_HDDID_HDD: TAutoIncField;

T_HDDNAIM: TWideStringField;

T_HDDHARACT: TWideStringField;

T_PROCID_PROC: TAutoIncField;

T_PROCNAIM: TWideStringField;

T_PROCHARACT: TWideStringField;

T_MEMID_MEM: TAutoIncField;

T_MEMNAIM: TWideStringField;

T_MEMHARACT: TWideStringField;

T_KLIENTSID_KLIENT: TAutoIncField;

T_KLIENTSNAIM: TWideStringField;

T_SPEEDID_SPEED: TAutoIncField;

T_SPEEDNAIM: TWideStringField;

T_SPEEDHARACT: TWideStringField;

RvDogovora: TRvProject;

RvDogovor: TRvDataSetConnection;

TV_DOGOVOR: TADOTable;

DSV_DOGOVOR: TDataSource;

TV_MASHINS: TADOTable;

DSV_MASHINS: TDataSource;

TV_MASHINSNAIM_MASH: TWideStringField;

TV_MASHINSNAIM_MEM: TWideStringField;

TV_MASHINSNAIM_SPEED: TWideStringField;

TV_MASHINSNAIM_PROC: TWideStringField;

TV_MASHINSNAIM_HDD: TWideStringField;

TV_MASHINSCENA: TFloatField;

TV_DOGOVORNAIM_MASH: TWideStringField;

TV_DOGOVORCENA: TFloatField;

TV_DOGOVORDate_zakl: TDateTimeField;

TV_DOGOVORDate_okonch: TDateTimeField;

TV_DOGOVORStoimost: TFloatField;

TV_DOGOVORNAIM_KLIENT: TWideStringField;

QP_Dogovor: TADOQuery;

DSQ_Dogovor: TDataSource;

P_Poisk: TADOStoredProc;

DSP_Poisk: TDataSource;

T_KLIENTSHARACT: TWideStringField;

T_DOGOVORID_DOGOVOR: TAutoIncField;

T_DOGOVORID_KLIENT: TIntegerField;

T_DOGOVORID_MASHIN: TIntegerField;

T_DOGOVORDate_zakl: TDateTimeField;

T_DOGOVORDate_okonch: TDateTimeField;

T_DOGOVORStoimost: TFloatField;

T_MASHINID_MASHIN: TAutoIncField;

T_MASHINID_PROC: TIntegerField;

T_MASHINID_HDD: TIntegerField;

T_MASHINID_MEM: TIntegerField;

T_MASHINID_SPEED: TIntegerField;

T_MASHINNAIM: TWideStringField;

T_MASHINCENA: TFloatField;

QP_DogovorNAIM_KLIENT: TWideStringField;

QP_DogovorNAIM_MASH: TWideStringField;

QP_DogovorCENA: TFloatField;

QP_DogovorDate_zakl: TDateTimeField;

QP_DogovorDate_okonch: TDateTimeField;

QP_DogovorStoimost: TFloatField;

P_PoiskNAIM_MASH: TWideStringField;

P_PoiskNAIM_MEM: TWideStringField;

P_PoiskNAIM_SPEED: TWideStringField;

P_PoiskNAIM_PROC: TWideStringField;

P_PoiskNAIM_HDD: TWideStringField;

P_PoiskCENA: TFloatField;

procedure T_DOGOVORCalcFields(DataSet: TDataSet);

private

{ Private declarations }

public

{ Public declarations }

end;

var

DM: TDM;

implementation

uses UnitMain;

{$R *.dfm}

procedure TDM.T_DOGOVORCalcFields(DataSet: TDataSet);

begin

T_Dogovor.Fields[5].AsFloat:=round(T_Dogovor.Fields[4].AsDateTime-T_Dogovor.Fields[3].AsDateTime)*(T_Mashin.Fields[6].AsInteger/30);

end;

end.

unit UnitTable;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Grids, DBGrids, StdCtrls, ExtCtrls;

type

TFRMTable = class(TForm)

DBGrid1: TDBGrid;

Panel1: TPanel;

Button3: TButton;

Button2: TButton;

Button1: TButton;

Panel2: TPanel;

Edit1: TEdit;

Button4: TButton;

Label1: TLabel;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

FRMTable: TFRMTable;

implementation

uses UnitDM, UnitAdd;

{$R *.dfm}

procedure set_add_form_dogovor;

begin

FRMAdd.DBLookupComboBoxD1.Visible:=true;

FRMAdd.DBLookupComboBoxD2.Visible:=true;

FRMAdd.DBEditD1.Visible:=true;

FRMAdd.DBEditD2.Visible:=true;

FRMAdd.DBLookupComboBoxM1.Visible:=false;

FRMAdd.DBLookupComboBoxM2.Visible:=false;

FRMAdd.DBLookupComboBoxM3.Visible:=false;

FRMAdd.DBLookupComboBoxM4.Visible:=false;

FRMAdd.DBEditm1.Visible:=false;

FRMAdd.DBEditm2.Visible:=false;

FRMAdd.Label1.Caption:=(‘ФИО клиента‘);

FRMAdd.Label2.Caption:=(‘Заглавие машинки‘);

FRMAdd.Label3.Caption:=(‘Дата заключения‘);

FRMAdd.Label4.Caption:=(‘Дата окончания’);

FRMAdd.Label5.Caption:=(»);

FRMAdd.Label6.Caption:=(»);

end;

procedure set_add_form_mashin;

begin

FRMAdd.DBLookupComboBoxD1.Visible:=false;

FRMAdd.DBLookupComboBoxD2.Visible:=false;

FRMAdd.DBEditD1.Visible:=false;

FRMAdd.DBEditD2.Visible:=false;

FRMAdd.DBLookupComboBoxM1.Visible:=true;

FRMAdd.DBLookupComboBoxM2.Visible:=true;

FRMAdd.DBLookupComboBoxM3.Visible:=true;

FRMAdd.DBLookupComboBoxM4.Visible:=true;

FRMAdd.DBEditm1.Visible:=true;

FRMAdd.DBEditm2.Visible:=true;

FRMAdd.Label1.Caption:=(‘машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач) (либо вычислительной системы) которое делает арифметические и логические операции данные программкой преобразования инфы управляет вычислительным действием и коор’);

FRMAdd.Label2.Caption:=(‘Твердый диск‘);

FRMAdd.Label3.Caption:=(‘Память’);

FRMAdd.Label4.Caption:=(‘Скорость подключения’);

FRMAdd.Label5.Caption:=(‘Заглавие’);

FRMAdd.Label6.Caption:=(‘Стоимость’);

end;

procedure TFRMTable.Button1Click(Sender: TObject);

begin

if DBGrid1.DataSource=DM.DS_DOGOVOR then begin

DM.T_DOGOVOR.Append;

set_add_form_dogovor;

FRMAdd.Caption:=’Добавить контракт’;

end else

if DBGrid1.DataSource=DM.DS_MASHIN then begin

DM.T_MASHIN.Append;

set_add_form_mashin;

FRMAdd.Caption:=’Добавить конфигурацию’;

end;

FRMAdd.show;

end;

procedure TFRMTable.Button2Click(Sender: TObject);

begin

if DBGrid1.DataSource=DM.DS_DOGOVOR then begin

DM.T_DOGOVOR.Edit;

set_add_form_dogovor;

FRMAdd.Caption:=’Редактировать контракт’;

end else

if DBGrid1.DataSource=DM.DS_MASHIN then begin

DM.T_MASHIN.Edit;

set_add_form_mashin;

FRMAdd.Caption:=’Редактировать конфигурацию’;

end;

FRMAdd.show;

end;

procedure TFRMTable.Button3Click(Sender: TObject);

begin

if DBGrid1.DataSource=DM.DS_DOGOVOR then begin

DM.T_DOGOVOR.Delete;

end else

if DBGrid1.DataSource=DM.DS_MASHIN then begin

DM.T_MASHIN.Delete;

end;

end;

procedure TFRMTable.Button4Click(Sender: TObject);

var s:string;

begin

if DBGrid1.DataSource=DM.DSQ_DOGOVOR then begin

DM.QP_Dogovor.Close;

s:=’SELECT NAIM_KLIENT, NAIM_MASH, CENA, Date_zakl, Date_okonch, ‘;

s:=s+’ Stoimost FROM PR_DOGOVOR ‘;

s:=s+’WHERE NAIM_MASH =(»’+edit1.Text+»’)’;

DM.QP_Dogovor.SQL.Clear;

DM.QP_Dogovor.SQL.Add(s);

try

dm.QP_Dogovor.Open;

except

showmessage(‘ошибка’);

end;

end else

if DBGrid1.DataSource=DM.DSP_Poisk then begin

dm.P_Poisk.close;

dm.P_Poisk.Parameters.ParamByName(‘@p’).Value:=Edit1.Text;

dm.P_Poisk.Open;

end;

end;

end.

unit UnitAdd;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, DBCtrls, Mask;

type

TFRMAdd = class(TForm)

Button1: TButton;

DBEditD1: TDBEdit;

DBEditD2: TDBEdit;

DBLookupComboBoxD1: TDBLookupComboBox;

DBLookupComboBoxD2: TDBLookupComboBox;

Button2: TButton;

DBLookupComboBoxM1: TDBLookupComboBox;

DBLookupComboBoxM2: TDBLookupComboBox;

DBLookupComboBoxM3: TDBLookupComboBox;

DBLookupComboBoxM4: TDBLookupComboBox;

DBEditM1: TDBEdit;

DBEditM2: TDBEdit;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

FRMAdd: TFRMAdd;

implementation

uses UnitDM, UnitTable;

{$R *.dfm}

procedure TFRMAdd.Button1Click(Sender: TObject);

begin

if FRMTable.DBGrid1.DataSource=DM.DS_DOGOVOR then begin

DM.T_Dogovor.Fields[5].AsFloat:=round(DM.T_Dogovor.Fields[4].AsDateTime-DM.T_Dogovor.Fields[3].AsDateTime)*(round(DM.T_Mashin.Fields[6].AsInteger/30));

DM.T_DOGOVOR.Post;

DM.T_DOGOVOR.Active:=false;

DM.T_DOGOVOR.Active:=true;

DM.T_DOGOVOR.Append;

end

else if FRMTable.DBGrid1.DataSource=DM.DS_MASHIN then begin

DM.T_MASHIN.Post;

DM.T_MASHIN.Active:=false;

DM.T_MASHIN.Active:=true;

DM.T_MASHIN.Append;

end;

end;

procedure TFRMAdd.Button2Click(Sender: TObject);

begin

close;

end;

end.


3.2 Управление юзера

Основная форма (рис. 3.1) дозволяет получить доступ ко всем функциям программки, методом использования головного меню. Так же на ней отображен весь перечень договоров.

Набросок 3.1 Основная форма

При помощи головного меню раскрывается редактор таблиц, методом использования клавиш «Добавить», «Редактировать», «Удалить» можно внести конфигурации в состав таблиц (рис. 3.2, 3.3). При нажатии клавиши «Ок» на форме прибавления/редактирования записи автоматом посчитается сумма контракта на основании продолжительности контракта и цены аренды данной конфигурации.


Набросок 3.2 Таблица «Контракта» и форма для внесения конфигураций.

Набросок 3.3 Таблица «Прайс-лист» и форма для внесения конфигураций.

При использовании второго пт меню «Справочники» Можно внести конфигурации в имеющиеся в базе данных справочники (рис. 3.4 – 3.8)


Набросок 3.4 Справочник «Клиенты».

Набросок 3.5 Справочник «Микропроцессоры».

Набросок 3.6 Справочник «Твердые диски».


Набросок 3.7 Справочник «Оперативка».

Набросок 3.8 Справочник «Скорость».

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

Набросок 3.9

Набросок 3.10

Набросок 3.11 запрос.

Для удобства просмотра и способности вывода инфы на печать была применена программка RaveReports при помощи которой можно создавать отчеты. На рис. 3.12 показан наружный вид получаемого отчета.


Набросок 3.12 Вид отчета.


Заключение

В итоге работы была сотворена реляционная база данных в Microsoft SQL Server, содержащая 7 таблиц, 5 из которых справочники. Клиентское приложение написанное при помощи CodeGear Delphi позволяющее просматривать, изменять и находить подходящую информацию. Были рассмотрены разные методы внесения и получения данных из базы данных. Построен отчет для вывода на печать при помощи программки RaveReports. Исследованы характеристики и способы компонент CodeGear Delphi для работы с базами данных.

]]>