Верификация спроектированной логической модели
Результаты верификации спроектированной логической модели представлен в Приложении А.
Реализация системы
3.1 T-SQL-определения регламентированных представлений
Физически представление реализовано в виде SQL-запроса, на основе которого производится выборка данных из одной или нескольких таблиц или представлений. Ниже приведен исходный текст представлений, использующихся в данной базе данных.
Вывод ограниченной информации о клиентах, фамилия которых оканчивается на «ова».
CREATE VIEW infoklient /*Указываем имя представления*/
AS
SELECT /*Указываем, какие поля будут выведены*/
Marina.Клиенты.Имя, Marina.Клиенты.Фамилия, Marina.Клиенты.телефон
FROM Marina.Клиенты /*Из какой таблицы*/
WHERE Marina.Клиенты.Фамилия LIKE '%ова'
Вывод ограниченной информации о сотрудниках, фамилия которых оканчивается на «ов».
CREATE VIEW infosotr /*Указываем имя представления*/
AS
SELECT /*Указываем, какие поля будут выведены*/
Marina.Персонал.Имя,Marina.Персонал.Фамилия, Marina.Персонал.должность
FROM Marina.Персонал /*Из какой таблицы*/
WHERE Marina.Персонал.Фамилия LIKE '%ов'
Вывод ограниченной информации о сотрудниках, отчество которых оканчивается на «а».
CREATE VIEW infosA /*Указываем имя представления*/
AS
SELECT /*Указываем, какие поля будут выведены*/
Marina.Персонал.Имя,Marina.Персонал.Фамилия,
Marina.Персонал.Отчество, Marina.Персонал.должность
FROM Marina.Персонал /*Из какой таблицы*/
WHERE Marina.Персонал.Отчество LIKE '%а'
Вывод ограниченной информации о клиентах, отчество которых оканчивается на «о».
CREATE VIEW infokl /*Указываем имя представления*/
AS
SELECT /*Указываем, какие поля будут выведены*/
Marina.Клиенты.Имя,Marina.Клиенты.Фамилия,Marina.Клиенты.Отчество, Marina.Клиенты.телефон
FROM Marina.Клиенты /*Из какой таблицы*/
WHERE Marina.Клиенты.Отчество LIKE '%о'
Вывод ограниченной информации о клиентах, имена которых оканчиваются на «а».
CREATE VIEW infoimyakl /*Указываем имя представления*/
AS
SELECT /*Указываем, какие поля будут выведены*/
Marina.Клиенты.Имя,Marina.Клиенты.Фамилия,Marina.Клиенты.Отчество, Marina.Клиенты.телефон
FROM Marina.Клиенты /*Из какой таблицы*/
WHERE Marina.Клиенты.Имя LIKE '%а'
Вывод ограниченной информации о сотрудниках, имена которых оканчиваются на «я».
CREATE VIEW infosotrimya /*Указываем имя представления*/
AS
SELECT /*Указываем, какие поля будут выведены*/
Marina.Персонал.Имя,Marina.Персонал.Фамилия,
Marina.Персонал.должность
FROM Marina.Персонал /*Из какой таблицы*/
WHERE Marina.Персонал.Имя LIKE '%я'
Вывод информации об отделах, номера которых находятся между 1-3
CREATE VIEW Otdeli /*Указываем имя представления*/
AS
SELECT /*Указываем какие поля будут выбраны*/
Marina.Отделы.Номер_отдела,Marina.Отделы.название_отдела, Marina.Персонал.Фамилия,
Marina.Персонал.Имя,Marina.Персонал.Отчество
FROM /*Указываем таблицу, и связанные с ней таблицы, из которых выбираются связанные данные.*/
Marina.Отделы INNER JOIN Marina.Персонал ON Marina.Отделы.Номер_отдела = Marina.Персонал.Номер_отдела
WHERE Marina.Отделы.номер_отдела BETWEEN 1 AND 3 /*Выбираются отделы, номер которых находится между 10 и 13*/
Вывод информации о записи клиентов, номера которых равны от 1 до 10
CREATE VIEW zapis
AS
SELECT /*Указываем какие поля будут выбраны*/
Marina.Клиенты.Имя,Marina.Клиенты.Фамилия, Marina.Клиенты.Отчество,
Marina.запись.номер_клиента,Marina.запись.Число_записи
FROM /*Указываем таблицу, и связанные с ней таблицы, из которых выбираются связанные данные.*/
Marina.Клиенты INNER JOIN Marina.запись ON Marina.Клиенты.номер_клиента = Marina.Клиенты.номер_клиента
WHERE Marina.Клиенты.номер_клиента BETWEEN 1 AND 10 /*Выбираются клиенты, номер которых находится между 1 и 10*/
Вывод информации о персонале, номера которых равны от 10 до 20
CREATE VIEW pers
AS
SELECT /*Указываем какие поля будут выбраны*/
Marina.запись.Табельный_номер,Marina.запись.Число_записи, Marina.Персонал.Фамилия,
Marina.Персонал.Имя,Marina.Персонал.Отчество
FROM /*Указываем таблицу, и связанные с ней таблицы, из которых выбираются связанные данные.*/
Marina.запись INNER JOIN Marina.Персонал ON Marina.запись.Табельный_номер = Marina.Персонал.Табельный_номер
WHERE Marina.Персонал.Табельный_номер BETWEEN 10 AND 20 /*Выбираются сотрудники, номера которых находится между 10 и 20*/
Вывод информации о персонале, с номерами от 1 до 20, которые заказывали оборудование.
CREATE VIEW personal
AS
SELECT /*Указываем какие поля будут выбраны*/
Оборудование_и_аксессуары.Табельный_номер, Оборудование_и_аксессуары.наименование_аксессуара,Персонал.Фамилия,
Персонал.Имя,Персонал.Отчество
FROM /*Указываем таблицу, и связанные с ней таблицы, из которых выбираются связанные данные.*/
Оборудование_и_аксессуары INNER JOIN Персонал ON Оборудование_и_аксессуары.Табельный_номер = Персонал.Табельный_номер
WHERE Персонал.Табельный_номер BETWEEN 1 AND 20 /*Выбираются сотрудники, номера которых находится между 1 и 20*/
Вывод ограниченной информации о клиентах, фамилия которых начинается на «К».
CREATE VIEW infoklientFIO /*Указываем имя представления*/
AS
SELECT /*Указываем, какие поля будут выведены*/
Marina.Клиенты.Имя, Marina.Клиенты.Фамилия, Marina.Клиенты.телефон
FROM Marina.Клиенты /*Из какой таблицы*/
WHERE Marina.Клиенты.Фамилия LIKE 'К%'
Вывод ограниченной информации о сотрудниках, фамилия которых начинается на «Р».
CREATE VIEW infosotrFIO /*Указываем имя представления*/
AS
SELECT /*Указываем, какие поля будут выведены*/
Marina.Персонал.Имя,Marina.Персонал.Фамилия, Marina.Персонал.должность
FROM Marina.Персонал /*Из какой таблицы*/
WHERE Marina.Персонал.Фамилия LIKE 'Р%'
Вывод информации о клиенте, номер которого = 8.
CREATE VIEW infoklientNOMER /*Указываем имя представления*/
AS
SELECT /*Указываем, какие поля будут выведены*/
Marina.Клиенты.Имя, Marina.Клиенты.Фамилия, Marina.Клиенты.телефон
FROM Marina.Клиенты /*Из какой таблицы*/
WHERE Marina.Клиенты.номер_клиента LIKE '8%'
Вывод информации о сотруднике, номер которого = 11.
CREATE VIEW infosotrNomer /*Указываем имя представления*/
AS
SELECT /*Указываем, какие поля будут выведены*/
Marina.Персонал.Имя,Marina.Персонал.Фамилия,
Marina.Персонал.должность
FROM Marina.Персонал /*Из какой таблицы*/
WHERE Marina.Персонал.Табельный_номер LIKE '11%'
3.2 T-SQL-определения триггеров
Существует три типа триггеров в зависимости от команд, на которые они реагируют: триггеры на вставку, триггеры на обновление и триггеры на удаление.
Триггер на удаление записей из таблицы «Клиенты», который запрещает удаление, если пользователь не владелец базы данных:
CREATE TRIGGER udalenie_klienta /*Обьявляем имя триггера*/
ON Клиенты /*Указываем имя таблицы, с которой будет связан триггер*/
FOR DELETE /*Указываем операцию, на кот. будет срабатывать триггер (здесь на удаление)*/
AS
IF ( SELECT count(*) /*проверяет*/
from Клиенты /*записи из таблицы «Клиенты»*/
where Клиенты.номер_клиента is not null)>0 /*условие проверяет наличие записи в поле «номер клиента».
AND (CURRENT_USER <> 'dbo') /*вызывается функция определения имени текущего пользователя и проверяется, владелец ли он*/
BEGIN
PRINT 'у вас нет прав на удаление этой записи' /*выдача сообщения о неудаче операции*/
ROLLBACK TRANSACTION /*откат (отмена) транзакции*/
END
Триггер на добавление в таблицу «Клиенты», который записывает данные:
CREATE TRIGGER dobavlenie_klienta
ON Клиенты
FOR INSERT
AS
DECLARE @@f int /*Объявляем переменную*/
Set @@f=01 /*Присваиваем ей значение*/
IF NOT EXISTS (SELECT * FROM Клиетны, inserted
WHERE Клиенты.номер_клиента = inserted.номер_клиента)
Set @@f=0
IF EXISTS (SELECT * FROM Клиенты, inserted
WHERE inserted.номер_клиента>33 OR inserted.Номер_клиента<01) /*Если номер отдела не >14 или <10, то такой отдел не существует*/
Set @@f=0 /*Меняем значение переменной*/
If @@f=0 /*если f=0, значит были ошибки*/
BEGIN
PRINT 'Неверно введены данные'
ROLLBACK TRANSACTION /*откат (отмена) транзакции*/
END
Триггер на обновление таблицы «Клиенты»:
CREATE TABLE UpdatedKlients
(
[номер_клиента] [int] NOT NULL ,
[Фамилия] [varchar] (25) NULL ,
[Имя] [varchar] (25) NULL ,
[Отчество] [varchar] (25) NULL ,
[телефон] [int] NULL ,
[Имя_пользователя] [varchar] (50) NULL ,
[Дата_добавления] [datetime] NULL
) ON [PRIMARY]
CREATE TRIGGER infoUpdateKlient
ON Клиенты /*Связываем с таблицей*/
FOR UPDATE
AS
INSERT INTO infoUpdateKlient (номер_клиента, /*указываем, какие поля нужно вставить*/
Фамилия,Имя,Отчество,телефон,Имя_пользователя,Дата_добавления)
SELECT номер_клиента,Фамилия,Имя,Отчество,телефон, /*указываем откуда*/
SYSTEM_USER, /*функция определяет текущего пользователя*/
getdate()/*функция возвращает текущую дату*/
FROM updated/*updated – временная таблица, куда заносятся данные*/
Триггер на удаление записей из таблицы «Персонал»:
CREATE TRIGGER udalenie_personala/*Обьявляем имя триггера*/
ON Персонал /*Указываем имя таблицы, с которой будет связан триггер*/
FOR DELETE /*Указываем операцию, на кот. будет срабатывать триггер (здесь на удаление)*/
AS
IF exists( select*from персонал where
CURRENT_USER <> 'Marina') /*вызывается функция определения имени текущего пользователя и проверяется, владелец ли он*/
BEGIN
PRINT 'у вас нет прав на удаление этой записи' /*выдача сообщения о неудаче операции*/
ROLLBACK TRANSACTION /*откат (отмена) транзакции*/
END
Триггер на добавление записей в таблицу «Персонал»:
CREATE TRIGGER dobavlenie_personala
ON Персонал
FOR INSERT
AS
DECLARE @@f int /*Объявляем переменную*/
Set @@f=10 /*Присваиваем ей значение*/
IF NOT EXISTS (SELECT * FROM Персонал, inserted
WHERE Персонал.Табельный_номер = inserted.Табельный_номер)
Set @@f=0
IF EXISTS (SELECT * FROM Персонал, inserted
WHERE inserted.Табельный_номер>30 OR inserted.Табельный_номер<10) /*условие вставки*/
Set @@f=0 /*Меняем значение переменной*/
If @@f=0 /*если f=0, значит были ошибки*/
BEGIN
PRINT 'Неверно введены данные'
ROLLBACK TRANSACTION /*откат (отмена) транзакции*/
END
Триггер на удаление записей из таблицы «Отделы»:
CREATE TABLE UpdatedOtdeli
(
[Номер_отдела] [int] NOT NULL ,
[Фамилия_начальника] [varchar] (25) NULL ,
[Название_отдела] [varchar] (25) NULL ,
[Имя_пользователя] [varchar] (50) NULL ,
[Дата_добавления] [datetime] NULL
) ON [PRIMARY]
CREATE TRIGGER infoUpdateOtdel
ON Отделы/*Связываем с таблицей*/
FOR UPDATE
AS
INSERT INTO UpdatedOtdeli (Номер_отдела, /*указываем, какие поля нужно вставить*/
Название_отдела, Фамилия_начальника, Имя_пользователя,
Дата_добавления)
SELECT Номер_отдела, Название_отдела,Фамилия_начальника, /*указываем откуда*/
SYSTEM_USER, /*функция определяет текущего пользователя*/
getdate()
FROM deleted /*updated – временная таблица, куда заносятся данные*/
3.3 T-SQL-определения хранимых процедур
Процедура выводящая количество должностей сотрудников.
CREATE PROCEDURE KolDolgn /*название прцедуры*/
AS SELECT COUNT (DISTINCT Персонал.должность) /*поля которые будут выведены в результате*/
FROM Персонал /*таблица из которой выбирается запись*/
Процедура выводящая фамилию, имя клиента с номером=27.
Create procedure vybor /*название прцедуры*/
as select Клиенты.Фамилия, Клиенты.имя /*поля которые будут выведены в результате*/
From Клиенты /*таблица из которой выбирается запись*/
Where Клиенты.номер_клиента=27 /*условие отбора*/
Процедура добавляет запись в таблицу Клиенты.
CREATE PROCEDURE NewKlient
@Nomer int,
@F varchar(20),
@I varchar(20),
@O varchar(20), /*Объявляем необходимые переменные*/
@Tel int
AS /*Проверяем, есть ли запись в таблице «Заказы» с такими же значениями ключевых полей, как у новой записи*/
IF EXISTS (SELECT * FROM Клиенты WHERE номер_клиента=@Nomer)
RETURN 0 /*Если есть, завершаем выполнение процедуры*/
INSERT INTO Клиенты /*Указываем таблицу, куда вставляем запись*/
VALUES ( @Nomer,@F,@I,@O,@Tel) /*Указываем какие значения*/
Процедура осуществляет запись в таблицу Персонал.
CREATE PROCEDURE NewPersonal
@TABNomer int,
@F varchar(20),
@I varchar(20),
@O varchar(20),
@D varchar(20), /*Объявляем необходимые переменные*/
@nomOT int
AS
IF EXISTS (SELECT * FROM Персонал WHERE Табельный_номер=@TABNomer)
RETURN 0 /*Если есть, завершаем выполнение процедуры*/
INSERT INTO Персонал /*Указываем таблицу, куда вставляем запись*/
VALUES ( @TABNomer,@F,@I,@O,@D,@nomOT) /*Указываем какие значения*/
Процедура удаляющая запись из таблицы Клиенты.
CREATE PROCEDURE Udalenieklienta
@nom int /*Объявляем необходимые переменные*/
AS /*Проверяем, если ссылающиеся записи, если записей нет, разрешается удаление.*/
IF not EXISTS (SELECT * FROM запись WHERE номер_клиента=@nom)
DELETE /*Оператор удаления*/
FROM Клиенты /*Имя таблицы, откуда нужно удалить*/
WHERE /*Условие удаления – удаляем строку, для которой значение поля Читательский_номер совпадает с нужным*/
номер_клиента=@nom
Процедура удаляющая запись из таблицы Персонал.
CREATE PROCEDURE UdaleniePersonala
@nom int /*Объявляем необходимые переменные*/
AS /*Проверяем, если ссылающиеся записи, если записей нет, разрешается удаление.*/
IF EXISTS (SELECT * FROM услуги WHERE Табельный_номер<>@nom)
DELETE /*Оператор удаления*/
FROM Персонал /*Имя таблицы, откуда нужно удалить*/
WHERE /*Условие удаления – удаляем строку, для которой значение поля Читательский_номер совпадает с нужным*/
Табельный_номер=@nom
Процедура добавляющая данные об отделах.
CREATE PROCEDURE NewOtdel
@Nomer int,
@Naz varchar(20),
@FIO varchar(20) /*Объявляем необходимые переменные*/
AS
IF EXISTS (SELECT * FROM отделы WHERE Номер_отдела=@Nomer)
RETURN 0 /*Если есть, завершаем выполнение процедуры*/
INSERT INTO отделы /*Указываем таблицу, куда вставляем запись*/
VALUES ( @Nomer,@Naz,@FIO) /*Указываем какие значения*/
Процедура, удаляющая данные из таблицы отделы.
CREATE PROCEDURE UdalenieOtdela
@nom int /*Объявляем необходимые переменные*/
AS /*Проверяем, если ссылающиеся записи, если записей нет, разрешается удаление.*/
IF not EXISTS (SELECT * FROM Персонал WHERE Номер_отдела=@nom)
DELETE /*Оператор удаления*/
FROM Отделы /*Имя таблицы, откуда нужно удалить*/
WHERE /*Условие удаления – удаляем строку, для которой значение поля Читательский_номер совпадает с нужным*/
Номер_отдела=@nom
Процедура редактирования данных о клиенте.
CREATE PROCEDURE RedaktirowanieKlienta
@Nomer int, /*Объявляем необходимые переменные*/
@Tel varchar(20)
AS
IF EXISTS (SELECT * FROM Клиенты /*Проверяем, существуют ли студенты,*/
WHERE номер_клиента = @Nomer) /*читательский номер которых равен искомому*/
UPDATE Клиенты /*Если такие есть обновляем «Студенты»*/
SET Телефон = @Tel
WHERE номер_клиента = @Nomer /*если читательский номер записи равен искомому*/
Процедура редактирования данных об отделах.
CREATE PROCEDURE RedaktirowanieOtela
@Nomer int,
@Naz varchar (20) /*Объявляем необходимые переменные*/
AS
IF EXISTS (SELECT * FROM отделы /*Проверяем, существуют ли студенты*/
WHERE Номер_отдела = @Nomer) /*читательский номер которых равен искомому*/
UPDATE отделы /*Если такие есть обновляем «Студенты»*/
SET название_отдела = @Naz
WHERE Номер_отдела = @Nomer /*если читательский номер записи равен искомому*/
Процедура, определяющая по табельному номеру сотрудника, предоставляющие им услуги.
CREATE PROCEDURE yslygi
@a int,
AS
SELECT /*Перечисляем поля, которые будут выведены в результате запроса */
услуги.наименование,услуги.стоимость,Персонал.Фамилия,Персонал.Имя
FROM /*указываем имя таблицы из которых выбираются записи*/
услуги,Персонал
WHERE /*задаем условие отбора*/
(Персонал.Табельный_номер=@a)
Процедура, выводящая фамилию и имя сотрудника с таб. номером = 19.
Create procedure vyborpersonala /*имя процедуры*/
as select Персонал.Фамилия, Персонал.Имя /*Перечисляем поля, которые будут выведены в результате запроса */
From Персонал /*указываем имя таблицы из которых выбираются записи*/
Where Персонал.Табельный_номер=19 /*условие поиска*/
Процедура, определяющая по номеру клиента, число записи на прием.
CREATE PROCEDURE klient
@a int,
AS
SELECT /*Перечисляем поля, которые будут выведены в результате запроса */
запись.число_записи, Клиенты.Фамилия, Клиенты.Имя, Клиенты.Отчество
FROM /*указываем имя таблицы из которых выбираются записи*/
запись, Клиенты
WHERE /*задаем условие отбора*/
(запись.номер_клиента=@a) and (Клиенты.номер_клиента=@a)
Процедура, определяющая по номеру клиента предоставляемые ему услуги.
CREATE PROCEDURE yslygiklienta
@a int
AS
SELECT /*Перечисляем поля, которые будут выведены в результате запроса */
услуги.наименование,услуги.Код_услуги,Клиенты.Фамилия,Клиенты.Имя
FROM /*указываем имя таблицы из которых выбираются записи*/
услуги,Клиенты
WHERE (Клиенты.номер_клиента=@a) /*задаем условие отбора*/
Процедура, определяющая по стоимости услуги мастера, оказывающего данную услугу.
CREATE PROCEDURE stoimostmaster
@a int
AS
SELECT /*Перечисляем поля, которые будут выведены в результате запроса */
услуги.наименование, услуги.стоимость, услуги.Табельный_номер, Персонал.Фамилия, Персонал.Имя, Персонал.Табельный_номер
FROM /*указываем имя таблицы из которых выбираются записи*/
услуги, Персонал
WHERE /*задаем условие отбора*/
(услуги.стоимость=@a)
Процедура, определяющая по коду услуги информацию о сотруднике и оказываемой им услуге.
CREATE PROCEDURE parikmaxer
@a int
AS
SELECT /*Перечисляем поля, которые будут выведены в результате запроса */
услуги.наименование, услуги.Табельный_номер, Персонал.Фамилия, Персонал.Имя
FROM /*указываем имя таблицы из которых выбираются записи*/
услуги, Персонал
WHERE /*задаем условие отбора*/
(услуи.Код_услуги=@a)and(услуги.Табельный_номер= Персонал. табельный_номер)
3.4 Описание клиентских приложений
При разработке клиентского приложения стояла задача не только в написании оболочки для созданной базы данных, а создания полноценного пользовательского приложения.
При открытии приложения перед пользователем появляется форма входа, представленная на рисунке 17.
Рисунок 17 – Форма входа
После входа в систему появляется главная форма. На главной форме пользователь может просмотреть данные обо всех таблицах баз данных. Так же у него есть возможность их редактировать, удалять и добавлять новые. Главная форма изображена на рисунке 18.
Рисунок 18 – Главная форма
В меню файл на главной форме пользователю предлагается выбрать для просмотра список представлений и процедур.
При выборе меню представления появляется новая форма со всем списком представлений (рисунок 19).
Рисунок 19 – Форма с представлениями
При выборе меню процедуры появляется новая форма со всем списком процедур (рисунок 20).
Рисунок 20 – Форма с процедурами
4 Функциональное и общее тестирование системы
Интерфейс программы максимально прост для понимания, поэтому у пользователя не должно возникнуть проблем с использованием программы.
Тестирование программы проводилось на персональном компьютере со следующими характеристиками:
-процессор Intel(R) Core(TM) i5 CPU;
-видеокарта NVIDIA GeForce 310M;
-оперативная память 3Gb;
-винчестер 320Gb.
Заполнение таблиц происходит следующим образом - пользователь выбирает таблицу на главной форме и нажимает на «плюсик», либо заполняет соответствующее окошко, как показано на рисунке 21.
Рисунок 21 – Пример добавления записи
После того как внесены в нужные поля все записи, необходимо нажать на кнопку добавить и запись будет занесена в базу данных.
Выделив запись ее можно удалить, нажав на «минус» или в некоторых таблицах кнопку удалить, и ответив положительно в появившемся диалоговом окне, как на рисунке 22.
Рисунок 22 – Пример удаления записи
Если пользователю необходимо произвести поиск сотрудника, то ему нужно в главном меню выбрать пункт меню «Файл», затем «Процедуры», и из списка выбрать «Определить ФИО сотрудника, зная его должность ». Выбрав данную процедуру, необходимо ввести данные для поиска и нажать на кнопку «ОК». Данная форма представлена на рисунке 23.
Рисунок 23 – Поиск сотрудника
После нажатия на кнопку ОК появиться результат запроса, представленный на рисунке 24.
Рисунок 24 – Результат поиска
Для того чтобы отредактировать данные о клиенте необходимо поставить галочку «Изменить данные о клиенте» и в появившемся окошке отредактировать нужные записи. После чего нажать кнопку «Принять» (рисунок 25).
Рисунок 25 – Изменение данных о клиенте
Для просмотра информации о клиентах, чья фамилия оканчивается на «ова» пользователю необходимо выбрать в главном меню пункт «Файл», затем «Представления» и из всего списка выбрать «Информация о клиенте, фамилия которого заканчивается на «ова». В результате появиться форма с информацией о клиентах. Данная форма представлена на рисунке 26.
Рисунок 26 – Информация о клиентах
Выбрав пункт меню «Администрирование» пользователь может изменить пароль. При это он должен ввести старый пароль, и новый, который в дальнейшем будет вводиться при входе в систему. Форма изменения пароля изображена на рисунке 27.
Рисунок 27 – Форма изменения пароля
Выбрав пункт меню «О программе» пользователь может получить информацию о данной программе и её разработчике (рисунок 28).
Рисунок 28 – Форма «О программе»
5 Энерго- и ресурсосбережения
Энергосбережение – это система мер, направленных на уменьшение потребления энергии путем внедрения новых энергосберегающих технологий и рационального использования энергоресурсов.
Экономия материальных ресурсов при разработке программного продукта может быть достигнута за счет следующих мероприятий:
- использования ждущего режима;
- использования спящего режима;
- использования LCD мониторов;
- приобщения к менее ресурсоемким передовым технологиям.
В настоящее время энергетическая проблема является одной из наиболее актуальных для Республики Беларусь. Степень самообеспечения энергоресурсами в последние годы в среднем составляет около 15%. Миллиарды долларов ежегодно тратит наша республика на закупки энергоносителей за рубежом. Одним из основных направлений решения энергетической проблемы является энергосбережение. По некоторым оценкам, его потенциал на нынешний момент составляет до 30 % от всех средств, расходуемых на приобретение энергоносителей. В комплексе мероприятий, направленных на повышение эффективности использования энергии, важнейшая роль отводится формированию информационно-образовательной системы по вопросам энергосбережения.
Режимы труда и отдыха при работе с ЭВМ, ПЭВМ и ВДТ должны определятся видом и категорией трудовой деятельности.
Виды трудовой деятельности разделяются на 3 группы:
- группа А – работа по считыванию информации с экрана ВДТ, ПЭВМ или ЭВМ с предварительным запросом;
- группа Б – работа по вводу информации;
- группа В – творческая работа в режиме диалога с ЭВМ, при выполнении в течение рабочей смены работ, относящихся к разным видам трудовой деятельности, за основную работу с ЭВМ, ПЭВМ и ВДТ следует принимать такую, которая занимает не менее 50% времени в течение рабочей смены или рабочего дня;
- для видов трудовой деятельности устанавливается 3 категории тяжести и напряженности работы с ВДТ, ПЭВМ и ЭВМ (таблица 1), которые определяются;
- для группы А – по суммарному числу считываемых знаков за рабочую смену, но не более 60000 знаков за смену;
- для группы Б – по суммарному числу считываемых или вводимых знаков за рабочую смену, но не более 40000 знаков за смену;
- для группы В – по суммарному времени непосредственной работы с ВДТ, ПЭВМ и ЭВМ за рабочую смену, но не более 6 часов за смену.
Таблица 1 – Время регламентированных перерывов в зависимостях от продолжительности рабочей смены виды и категории трудовой деятельности с ВДТ, ПЭВМ и ЭВМ
Категории работы с ВДТ, ЭВМ и ПЭВМ | Уровень нагрузки за рабочую смену при видах работ с ВДТ | Суммарное время регламентированных перерывов, мин | |||
группа А, количество знаков | группа Б, количество знаков | группа В, час. | при 8-ми часовой смене | при 12-ти часовой смене | |
До 20000 | до 1500 | до 2,0 | |||
До 40000 | до 3000 | до 4,0 | |||
До 60000 | до 4000 | до 6,0 |
Время регламентированных перерывов в течение рабочей смены следует устанавливать в зависимости от ее продолжительности, вида и категории трудовой деятельности (таблица 1).
Стандарт управления энергопотреблением компьютеров, описывает три различных режима работы компьютера. Эти режимы отличаются потребляемой мощностью электроэнергии.
Ждущий режим позволяет экономить энергию, за счет отключения всех периферийных устройств, кроме ЦПУ, ОЗУ и материнской платы.
Спящий режим позволяет экономить электроэнергию на 100%, так как отключаются все периферийные устройства.
Основной режим – при этом режиме экономии нет. Потребляемая мощность около 400Ватт.
Для нахождения количества рабочих дней, в течение которых разрабатывался программный продукт, используем формулу
n = Тпк /(8-tрп), (1)
где Тпк – время работы компьютера, ч;
Тпк=104,2 ч;
tрп – суммарное время регламентированных перерывов, в течение
рабочего дня, ч.
tрп =70 мин=7,6 часа,
Для нахождения суммарной продолжительности регламентированных перерывов в течение всего времени разработки программного модуля
Трп = n ґ tрп, (2)
где Трп – суммарная продолжительность регламентированных перерывов в течение всего времени разработки программного модуля;
Стоимость сэкономленной электроэнергии рассчитывается по формуле
Сэн=Трпґ(Wпк-Wсп)ґ1560,00, (3)
где Wпк – потребляемая мощность ПК, кВт;
Wсп – потребляемая мощность компьютера в ждущем режиме;
Wпк = 0,40 кВт;
Wсп = 0,16 кВт.
Сэн=17,70*(0,40—0,16)*1560,00=6626,88 руб.
Заключение
В результате выполнения курсового проекта была разработана информационная база данных для работы администратора в парикмахерской. Данная база данных является многопользовательской.
В результате разработки курсового проекта закреплены и расширены знания по программированию в C++Builder 6 и SQL Server. При реализации проекта пройдены этапы описания и постановки задачи, проектирования программного модуля, кодирования программы на алгоритмический язык и тестирования готовой программы.