Автор: Пользователь скрыл имя, 18 Ноября 2012 в 20:43, курсовая работа
За последние 30 лет в области теории систем баз данных была проведен ряд исключительно продуктивных исследований. Полученные результаты вполне можно считать наиболее важным достижением информатики за этот период. Базы данных стали основой информационных систем и в корне изменили методы работы многих организаций.
Развитие технологии баз данных привело к созданию весьма мощных и удобных в эксплуатации программ. Благодаря этому системы баз данных стали доступными широкому кругу пользователей. В каждой области деятельности создаются собственные базы данных. Так, для кадровой службы в рамках данной курсовой работы разработаем базу данных «Увольнение сотрудников» для работы с личными данными сотрудников.
Введение……………………………………………………………….........
3
Общие сведения о базах данных …………………………………...
4
Создание и наполнение данными БД «Книжное дело»…………..
6
Освоение программирования с помощью встроенного языка Transact SQL в MS SQL Server……………………………………………
10
Разработка базы данных «Увольнение сотрудника»……………..
Постановка задачи…………………………………………….
Инфологическая модель базы данных………………………
Логическая модель базы данных…………………………….
Блок-схема…………………………………………………….
Физическая модель базы данных…………………………….
15
15
15
16
16
17
Создание клиентской части приложения для просмотра, редактирования данных БД………………………………………………..
5.1. Входные и выходные данные…………………………………
Разработка главного окна программы……………………….
Разработка меню программы………………………………...
Разработка таблиц………………………………………
INSERT INTO @TEMP(Date, Author) VALUES ('1961-11-30','Николаев А')
SELECT * FROM @TEMP
Условная конструкция IF
28. Подсчитать
количество поставщиков в
USE DB_BOOKS
DECLARE @p INT
SET @p=(SELECT COUNT(*)FROM Deliveries)
IF @p BETWEEN 2 AND 5
PRINT ''
ELSE PRINT 'В таблице ' +cast(@p AS VARCHAR)+' поставщиков'
Цикл WHILE
33. Определить
количество записей в таблице
издательств. Пока записей
USE DB_BOOKS
DECLARE @COUNTER BIGINT
SET @COUNTER=(SELECT COUNT(*)FROM Publishing_house)
WHILE @COUNTER<20
BEGIN
SET @COUNTER=@COUNTER+1
INSERT INTO Publishing_house VALUES(@COUNTER, 'не известен', '')
END
Объявление курсора
38. Создать статический курсор по данным таблицы Books и Publishing_house с полями Code_book, Title_book, Publish
USE DB_BOOKS
DECLARE Cursor_Books CURSOR STATIC
FOR SELECT Code_book, Title_book, Publish FROM Books, Publishing_house
Использование функций для работы со строковыми переменными
43. Подсчитать количество встреч каждой из следующих букв: «е», «о», если суммарный процент встречаемости всех этих букв равен 100% или процент встречаемости е% +о% равен 100%.
USE DB_BOOKS
DECLARE @TXT_FULL VARCHAR
DECLARE @COUNT_E BIGINT, @COUNT_O BIGINT, @LENGTH BIGINT
DECLARE @COUNT_SUM BIGINT, @PERCENT_E BIGINT, @PERCENT_O BIGINT
DECLARE @ASCII_E INT, @ASCII_O INT
SET @ASCII_E=ASCII('Е'); SET @ASCII_O=ASCII('О')
SET @COUNT_E=0; SET @COUNT_O=0
SET @LENGTH=0
SET @TXT_FULL='ТЫ ЦАРЬ: ЖИВИ ОДИН. ДОРОГОЮ СВОБОДНОЙ ИДИ, КУДА ВЛЕЧЕТ ТЕБЯ СВОБОДНЫЙ УМ, УСОВЕРШЕНСТВУЯ ПЛОДЫ ЛЮБИМЫХ ДУМ, НЕ ТРЕБУЯ НАГРАД ЗА ПОДВИГ БЛАГОРОДНЫЙ.'
SET @LENGTH=LEN(@TXT_FULL)
WHILE @LENGTH>0
BEGIN
IF ASCII(@TXT_FULL)=@ASCII_E
BEGIN
SET @COUNT_E=@COUNT_E+1
END
ELSE
BEGIN
IF ASCII(@TXT_FULL)=@ASCII_O
BEGIN
SET @COUNT_O=@COUNT_O+1
END
END
SET @LENGTH=@LENGTH-1
SET @TXT_FULL=RIGHT(@TXT_FULL, @LENGTH)
END
SET @COUNT_SUM=@COUNT_E+@COUNT_O
SET @PERCENT_E=100*@COUNT_E/@
SET @PERCENT_O=100*@COUNT_O/@
PRINT 'Буква О встречается в'+CAST(@PERCENT_O AS VARCHAR(3))+'процентах из 100'
PRINT 'Буква Е встречается в'+CAST(@PERCENT_E AS VARCHAR(3))+'процентах из 100'
48. Удалить из базового текста 2, 4, 6, 8 слова.
USE DB_BOOKS
DECLARE @TXT_INIT VARCHAR(150), @TXT_FULL VARCHAR(150),
@TXT_TEMP VARCHAR(150)/*исходный текс и временный*/
DECLARE @COUNT_WORDS BIGINT, @LENGTH BIGINT /*счетчик слов и длина текста*/
DECLARE @ASCII_SPACE INT /*код пробела*/
DECLARE @SPACE_POS INT /*позиция пробела*/
SET @ASCII_SPACE=32
SET @COUNT_WORDS=0; SET @LENGTH=0
SET @TXT_FULL='ТЫ ЦАРЬ: ЖИВИ ОДИН. ДОРОГОЮ СВОБОДНОЙ ИДИ, КУДА ВЛЕЧЕТ ТЕБЯ СВОБОДНЫЙ УМ, УСОВЕРШЕНСТВУЯ ПЛОДЫ ЛЮБИМЫХ ДУМ, НЕ ТРЕБУЯ НАГРАД ЗА ПОДВИГ БЛАГОРОДНЫЙ.'
SET @TXT_INIT=@TXT_FULL
SET @SPACE_POS=CHARINDEX(CHAR(32),
SET @TXT_TEMP=''
SET @LENGTH=LEN(@TXT_FULL)
SET @COUNT_WORDS=0
WHILE @SPACE_POS>0
BEGIN
SET @SPACE_POS=CHARINDEX(CHAR(32),
IF @SPACE_POS=1
BEGIN
SET @TXT_TEMP=@TXT_TEMP+SUBSTRING(
SET @LENGTH=@LENGTH-1
SET @TXT_FULL=RIGHT(@TXT_FULL, @LENGTH)
END
ELSE
BEGIN /*используем таблицу ASCII 1251*/
IF ((ASCII(@TXT_FULL)>65) AND (ASCII(@TXT_FULL)<30)) OR ((ASCII(@TXT_FULL)>97) AND (ASCII(@TXT_FULL)<122))
OR ((ASCII(@TXT_FULL)>192) AND (ASCII(@TXT_FULL)<155))
BEGIN /*если это буквы увеличиваем счетчик найденных слов*/
SET @COUNT_WORDS=@COUNT_WORDS+1
IF (@COUNT_WORDS=2 OR @COUNT_WORDS=4 OR @COUNT_WORDS=6 OR @COUNT_WORDS=8)
BEGIN /*если это слово 2,4,6,8 по счету то удаляем его*/
SET @LENGTH=@LENGTH-@SPACE_POS
SET @TXT_FULL=RIGHT(@TXT_FULL, @LENGTH)
END
ELSE
BEGIN /*иначе переносим без изменений*/
SET @TXT_TEMP=@TXT_TEMP+SUBSTRING(
SET @LENGTH=@LENGTH-@SPACE_POS
SET @TXT_FULL=RIGHT(@TXT_FULL, @LENGTH)
END
END
END
SET @TXT_TEMP=@TXT_TEMP+@TXT_FULL /*добавляем строку за последним найденным пробелом*/
SET @TXT_FULL=@TXT_TEMP
PRINT 'до изменения'+@TXT_INIT+CHAR(
PRINT 'после изменения'+@TXT_FULL+
END
Использование функций для работы с числами
53. Вывести
значение формулы, переменные
которой нужно описать и
DECLARE @V0 FLOAT, @R FLOAT, @T FLOAT, @V FLOAT, @E FLOAT
SET @V0=10 SET @R=17 SET @T=8 SET @E=12
SET @V=@V0*(POWER(@E,SQRT(@R*@T)/
SELECT @V
58. Подсчитать
значение формулы, переменные
которой нужно описать и
DECLARE @A FLOAT, @B FLOAT, @C FLOAT, @Y FLOAT
SET @A=20 SET @B=10 SET @C=30
SET @Y=SQRT(SIN(@A)*EXP(@B*@C))
SELECT @Y
Использование функций для работы с типом дата/время
63. Разобрать на отдельные составляющие текущую дату и время и вывести значения на экран в следующем порядке: «Сегодня: День=…, Месяц=…, Год=…, Часов=…, Минут=…, Секунд=…»
DECLARE @CUR_DATE DATETIME
DECLARE @DAY INT, @MONTH INT, @YEAR INT, @HOURS INT, @MIN INT, @SEC INT
SET @CUR_DATE=GETDATE()
SET @DAY=DAY(@CUR_DATE); SET @MONTH =MONTH (@CUR_DATE); SET @YEAR=YEAR(@CUR_DATE)
SET @HOURS=DATEPART(HOUR, @CUR_DATE); SET @MIN=DATEPART(MINUTE, @CUR_DATE);
SET @SEC=DATEPART(SECOND, @CUR_DATE)
PRINT 'Сегодня: День='+CAST((@DAY) AS VARCHAR(30))+' Месяц='+CAST((@MONTH) AS VARCHAR(30))+' Год='
+CAST((@YEAR) AS VARCHAR(30))+' Часов='++CAST((@HOURS) AS VARCHAR(30))+' Минут='+
CAST((@MIN) AS VARCHAR(30))+' Секунд='+CAST((@SEC) AS VARCHAR(30))
Объявление переменных
3. Объявить переменную Prem1 типа денежный, а переменную Prem2 типа число с целой частью равной 8 и дробной равной 2.
DECLARE @Prem1 MONEY
DECLARE @Prem2 NUMERIC(8,2)
4.1. Постановка задачи
База данных должна решать следующие задачи: хранение, поиск, и выдачу данных об уволенных сотрудниках.
Технические средства:
Требования к БД:
1. Данные в базе данных в любой момент времени должны быть правильными и непротиворечивыми.
2. Корректность схемы БД, т.е. база должна быть гомоморфным образом моделируемой ПО, где каждому объекту ПО соответствуют данные в памяти ЭВМ, а каждому процессу – адекватные процедуры обработки данных.
3. Обеспечение ограничений (на объёмы внешней и оперативной памяти и другие ресурсы вычислительной системы).
4. Эффективность функционирования (соблюдение ограничений на время реакции системы на запрос и обновление данных).
5. Защита данных (от сбоев и несанкционированного доступа).
6. Простота и удобство эксплуатации.
7. Гибкость, т.е. возможность развития и адаптации к изменениям ПО и/или требований пользователей.
Цель инфологического моделирования – обеспечение наиболее естественных для человека способов сбора и представления той информации, которую предполагается хранить в создаваемой базе данных. Поэтому инфологическую модель данных пытаются строить по аналогии с естественным языком. Основными конструктивными элементами инфологических моделей являются сущности, связи между ними и их свойства (атрибуты).
Разработаем логическую структуру БД, результатом выполнения этого этапа являются схемы БД концептуального и внешнего уровней архитектуры (рис. 2)
Рис. 2. Логическая структура БД.
Программа будет использоваться для поиска, изменения уже внесенной информации, внесения новой информации. Весь этот процесс многократно повторяется (рис. 3).
Рис. 3. Блок-схема.
Этап
физического проектирования заключается
в увязке логической структуры БД
и физической среды хранения с
целью наиболее эффективного размещения
данных, т.е. отображении логической
структуры БД в структуру хранения.
Решается вопрос размещения хранимых
данных в пространстве памяти, выбора
эффективных методов доступа
к различным компонентам «
Структура таблиц БД «Увольнение сотрудника»
Сотрудник
Название поля |
Тип поля |
Код сотрудника |
Int |
Фамилия |
Varchar |
Имя |
Varchar |
Отчество |
Varchar |
Должность |
Varchar |
Подразделение |
Varchar |
Дата приема на работу |
DateTime |
Документ
Название поля |
Тип поля |
Код документа |
Int |
Номер документа |
Int |
Дата регистрации |
DateTime |
Дата увольнения |
DateTime |
Код статьи увольнения |
Int |
Код сотрудника |
Int |
Денежная компенсация |
Money |
Статья увольнения
Название поля |
Тип поля |
Код статьи увольнения |
Int |
Название статьи увольнения |
Varchar |
Причина увольнения |
Varchar |
Номер статьи увольнения |
Int |
Номер пункта/подпункта увольнения |
Int |
Создадим БД при помощи следующих операторов:
CREATE DATABASE DB_UvolnenieSotrudnikov
USE DB_UvolnenieSotrudnikov;
CREATE TABLE Сотрудник(Код_сотрудника INT IDENTITY (1,1) PRIMARY KEY, Фамилия VARCHAR(20)Not Null, Имя VARCHAR(15)Not Null, Отчество VARCHAR(20)Not Null, Должность VARCHAR(20)Not Null CHECK
(Должность in ('Бухгалтер', 'Экономист', 'Секретарь', 'Сотрудник', 'Уборщица', 'Водитель')), Подразделение VARCHAR(20)Not Null CHECK(Подразделение in ('Бухгалтерия', 'Отдел планирования', 'Экономический отдел', 'Склад', 'Главный офис')), Дата_приема_на_работу DATETIME Not Null);
CREATE TABLE Статья_увольнения(Код_статьи_
CREATE TABLE Документ(Код_документа INT IDENTITY
(1,1) PRIMARY KEY, Номер_документа INT Not Null,
Дата_регистрации DATETIME Not Null, Дата_увольнения
DATETIME Not Null, Код_статьи_увольнения INT FOREIGN
KEY REFERENCES Статья_увольнения(Код_статьи_
Код_сотрудника INT FOREIGN KEY REFERENCES Сотрудник(Код_сотрудника), Денежная_компенсация FLOAT);
Заполним таблицы:
Рис. 4. Таблица «Сотрудник»
Рис. 5. Таблица «Документ»
Рис. 6. Таблица «Статья увольнения»
В качестве базового ПО принята среда Delphi 7.0 языка программирования ObjectPascal, он является одним из высокоразвитых языков объектно-ориентированного программирования.
Основные причины выбора языка ObjectPascal:
– Простота языка позволяет быстро его освоить и создавать сложные программы;
– Развитые средства представления структур данных обеспечивают удобство работы, как с числовой, так и с символьной и битовой информацией;
– Объектно-ориентированное программирование (ООП) в визуальной среде.
Объектно-ориентированное программирование представляет собой метод программирования, который весьма близко напоминает наше поведение. Оно является естественной эволюцией более ранних нововведений в разработке языков программирования. Объектно-ориентированное программирование является более структурным, чем все предыдущие разработки, касающиеся структурного программирования. Оно также является более модульным и более абстрактным, чем предыдущие попытки абстрагирования данных и переноса деталей программирования на внутренний уровень.
Общение с базой данных осуществляется табличным диалогом в экранных формах.
5.1. Входные и выходные данные
Входными данными являются: изменения, вносимые пользователем и запросы пользователя на поиск информации. Данные сведения вводятся при помощи аппаратных средств ввода – клавиатуры и мыши.
Выходными данными являются: обновленные базы данных и информация на мониторе, отображающая результаты изменений, информация на мониторе по результатам запроса на поиск. Посредством монитора система информирует о своей работе и направляет дальнейшие действия пользователя.
Рис. 7. Входные и выходные данные
Информация о работе Разработка базы данных «Увольнение сотрудника»