Разработка базы данных «Увольнение сотрудника»

Автор: Пользователь скрыл имя, 18 Ноября 2012 в 20:43, курсовая работа

Краткое описание

За последние 30 лет в области теории систем баз данных была проведен ряд исключительно продуктивных исследований. Полученные результаты вполне можно считать наиболее важным достижением информатики за этот период. Базы данных стали основой информационных систем и в корне изменили методы работы многих организаций.
Развитие технологии баз данных привело к созданию весьма мощных и удобных в эксплуатации программ. Благодаря этому системы баз данных стали доступными широкому кругу пользователей. В каждой области деятельности создаются собственные базы данных. Так, для кадровой службы в рамках данной курсовой работы разработаем базу данных «Увольнение сотрудников» для работы с личными данными сотрудников.

Оглавление

Введение……………………………………………………………….........
3
Общие сведения о базах данных …………………………………...
4
Создание и наполнение данными БД «Книжное дело»…………..
6
Освоение программирования с помощью встроенного языка Transact SQL в MS SQL Server……………………………………………

10
Разработка базы данных «Увольнение сотрудника»……………..
Постановка задачи…………………………………………….
Инфологическая модель базы данных………………………
Логическая модель базы данных…………………………….
Блок-схема…………………………………………………….
Физическая модель базы данных…………………………….
15
15
15
16
16
17
Создание клиентской части приложения для просмотра, редактирования данных БД………………………………………………..
5.1. Входные и выходные данные…………………………………
Разработка главного окна программы……………………….
Разработка меню программы………………………………...
Разработка таблиц………………………………………

Файлы: 1 файл

курсовая БД.docx

— 832.06 Кб (Скачать)

INSERT INTO @TEMP(Date, Author) VALUES ('1961-11-30','Николаев  А')

SELECT * FROM @TEMP

 

Условная конструкция IF

28. Подсчитать  количество поставщиков в таблице  Deliveries. Если их в таблице от 2 до 5, то ничего не сообщать, в противном случае вывести сообщение вида «В таблице … поставщиков»

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. Определить  количество записей в таблице  издательств. Пока записей меньше 20, делать в цикле добавление  записи в таблицу с автоматическим  наращиванием значения ключевого  поля, а вместо названия издательства  ставить значение «не известно».

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/@COUNT_SUM

SET @PERCENT_O=100*@COUNT_O/@COUNT_SUM

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),@TXT_FULL)

SET @TXT_TEMP=''

SET @LENGTH=LEN(@TXT_FULL)

SET @COUNT_WORDS=0

WHILE @SPACE_POS>0

BEGIN

  SET @SPACE_POS=CHARINDEX(CHAR(32),@TXT_FULL)

    IF @SPACE_POS=1  

    BEGIN

      SET @TXT_TEMP=@TXT_TEMP+SUBSTRING(@TXT_FULL,1,1)

      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(@TXT_FULL,1,@SPACE_POS)

          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(13)

PRINT 'после изменения'+@TXT_FULL+CHAR(13)

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)/45))

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)

 

 

 

 

 

  1. Разработка базы данных «Увольнение сотрудника»

 

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

 

База  данных должна решать следующие задачи: хранение, поиск, и выдачу данных об уволенных сотрудниках.

 

Технические средства:

  1. Применяемая операционная система: Windows Vista.
  2. Применяемая СУБД: MS SQL Server.
  3. Среда программирования Borland Delphi7

 

Требования к БД:

1. Данные в базе данных в любой момент времени должны быть правильными и непротиворечивыми.

2. Корректность схемы БД, т.е. база должна быть гомоморфным образом моделируемой ПО, где каждому объекту ПО соответствуют данные в памяти ЭВМ, а каждому процессу – адекватные процедуры обработки данных.

3. Обеспечение ограничений (на объёмы внешней и оперативной памяти и другие ресурсы вычислительной системы).

4. Эффективность функционирования (соблюдение ограничений на время реакции системы на запрос и обновление данных).

5. Защита данных (от сбоев и несанкционированного доступа).

6. Простота и удобство эксплуатации.

7. Гибкость, т.е. возможность развития и адаптации к изменениям ПО и/или требований пользователей.

 

    1. Инфологическая модель базы данных

 

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


 

 

 

 

 

 

 

 

    1. Логическая модель базы данных

 

Разработаем логическую структуру БД, результатом выполнения этого этапа являются схемы БД концептуального и внешнего уровней архитектуры (рис. 2)


 

 

 

 

 

 

 

 

Рис. 2. Логическая структура БД.

 

    1. Блок-схема

 

Программа будет использоваться для поиска, изменения уже внесенной информации, внесения новой информации. Весь этот процесс многократно повторяется (рис. 3).


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 3. Блок-схема.

 

 

    1. Физическая модель базы данных

 

Этап  физического проектирования заключается  в увязке логической структуры БД и физической среды хранения с  целью наиболее эффективного размещения данных, т.е. отображении логической структуры БД в структуру хранения. Решается вопрос размещения хранимых данных в пространстве памяти, выбора эффективных методов доступа  к различным компонентам «физической» БД.

 

Структура таблиц БД «Увольнение сотрудника»

 

Сотрудник

Название поля

Тип поля

Код сотрудника

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 Статья_увольнения(Код_статьи_увольнения INT IDENTITY (1,1) PRIMARY KEY, Название_статьи_увольнения VARCHAR(30) Not Null, Причина_увольнения VARCHAR(30) Not Null, Номер_статьи_увольнения INT Not Null, Номер_пункта_увольнения INT Not Null);

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. Таблица  «Статья увольнения»

 

 

  1. Создание клиентской части приложения для просмотра, редактирования данных БД.

 

В качестве базового ПО принята среда Delphi 7.0 языка  программирования ObjectPascal, он является одним из высокоразвитых языков объектно-ориентированного программирования.

Основные  причины выбора языка ObjectPascal:

– Простота языка позволяет быстро его освоить  и создавать сложные программы;

– Развитые средства представления структур данных обеспечивают удобство работы, как  с числовой, так и с символьной и битовой информацией;

– Объектно-ориентированное  программирование (ООП) в визуальной среде.

Объектно-ориентированное  программирование представляет собой  метод программирования, который  весьма близко напоминает наше поведение. Оно является естественной эволюцией  более ранних нововведений в разработке языков программирования. Объектно-ориентированное  программирование является более структурным, чем все предыдущие разработки, касающиеся структурного программирования. Оно  также является более модульным  и более абстрактным, чем предыдущие попытки абстрагирования данных и переноса деталей программирования на внутренний уровень.

Общение с базой данных осуществляется табличным  диалогом в экранных формах.

 

5.1. Входные и выходные данные

 

Входными  данными являются: изменения, вносимые пользователем и запросы пользователя на поиск информации. Данные сведения вводятся при помощи аппаратных средств ввода – клавиатуры и мыши.

Выходными данными являются: обновленные базы данных и информация на мониторе, отображающая результаты изменений, информация на мониторе по результатам запроса на поиск. Посредством монитора система информирует о своей работе и направляет дальнейшие действия пользователя.

 

Рис. 7. Входные и выходные данные

 

 

    1. Разработка главного окна программы

Информация о работе Разработка базы данных «Увольнение сотрудника»