Сетевая база данных 'Трудовая биржа'

  • Вид работы:
    Дипломная (ВКР)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    644,83 kb
  • Опубликовано:
    2011-07-03
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Сетевая база данных 'Трудовая биржа'

Содержание

Введение

. Описание предметной области

. Проектирование базы данных

. Организация выборки информации из базы данных

. Разработка представлений для отображения результатов выборки

. Проектирование хранимых процедур

. Разработка механизмов управления данными в базе при помощи триггеров

.1 Триггер для добавления данных

.2 Триггер для удаления данных

.3 Триггер для обновления данных

. Разработка технологий доступа к базе данных

.1 Выбор пользователей базы данных

.2 Организация обмена данными между серверной частью и клиентским приложением

. Экономическое обоснование результатов внедрения программного продукта

. Требования к техническому обеспечению

. Инструкция по эксплуатации базы данных и клиентского приложения

Заключение

Список используемой литературы

Приложение 1. Экранные формы приложения

Приложение 2. Листинг программы

Введение


Приложение «DBcontroller» было разработано по заказу государственного учреждения «Ставропольская Трудовая Биржа», которое занимается трудоустройством безработных граждан. Данное приложение разработано для автоматизации рутинных процессов и более точного их контроля. База данных занимает одно из главенствующих мест в системе учета и контроля данного предприятия и требует особо внимания к своей работоспособности, при ее разработке учитывались мнение, как начальников данной организации, так и простых операторов ПК, непосредственно работающих с базой данных. Данное приложение использует технологии .Net Framework 4.0 в алгоритмически-логическом аспекте приложения, а так же Jquery Framework для создания диаграмм и отчетов. В качестве хранилища данных была использована реляционная база, управляемая языком SQL, из наличия использованных средств следует, что данное приложение будет использовано на операционных системах семейства Windows, однако может быть перенесено и на другие операционные системы, поскольку .Net легко переносимо с помощью кросс-платформенной технологии MONO. Остальные же элементы приложения уже изначально являются переносимыми.

1. Описание предметной области


.1 Общее описание предметной области

Разрабатываемое приложение будет находить применение в области трудоустройства безработных граждан, в учете и внесении необходимых данных, которые позволят подобрать им походящего работодателя. Алгоритм: человек встает на биржу труда, некоторые данные о конкретном человеке переносятся в базу данных, при появлении свободных мест у работодателя, тот обращается в государственное учреждение и ему подбирается соответствующий работник (базе данных отмечается, что устроившийся работник сейчас уже имеет работу)

1.2    Описание входных документов и сообщений

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

1.3Описание выходных документов и сообщений

Выходными документами и сообщения будут отчеты и диаграммы, а так же модифицированные поля таблиц.

.4 Список ограничений

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

2. Проектирование базы данных


На основе предыдущих данных была сформирована база данных.

Рисунок 2.1 - диаграмма

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

При концептуальном проектировании были выбраны основные сущности: работник и работа.

2.1.1 Описание сущностей

Перечень атрибутов для сущности работник: ИНН, имя, фамилия, статус, стаж, высшее образование. Перечень атрибутов для сущности работодатель: название, требуемая профессия, статус, предоставляемая работа. Перечень атрибутов для сущности работа: статус.

.1.2 Описание связей

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

Таблица 2.1

Связи в базе данных

Родительская таблица

Дочерняя таблица

Тип связи

Table_1

Table_2

1:М

Table_3

Table_4

1:M


.1.3 ER-диаграмма

Рисунок 2.1 - ER-диаграмма

2.2 Даталогическая модель

Таблица 2.2

Состав таблицы: таблица_1

имя

Тип

Размер поля

Нулевые значения

сode

int

16

Not NULL

[First Name]

nchar

20

NULL

[Last Name]

nchar

NULL

INN

int

16

NULL

profession

nchar

20

NULL

Status

char

35

NULL


Таблица 2.3

Состав таблицы таблица_2

имя

Тип

Размер поля

Нулевые значения

Сode1

int

16

Not NULL

[length of service]

tinyint

8

NULL

[higher education]

nchar

10

NULL


Таблица 2.4

Состав таблицы таблица_3

Имя

Тип

Размер поля

Нулевые значения

code2

int

16

Not NULL

Name

nchar

20

NULL

profession_need

nchar

20

NULL

Stat

nchar

35

NULL


Таблица 2.5

Состав таблицы таблица_4

имяТипРазмер поляНулевые значения




Some_code

int

16

Not NULL

[Work]

nchar

35

NULL


2.2.1  Диаграмма связи по полям

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

Таблица 2.6

Функциональные зависимости между атрибутами таблицы «Table_1»

Наименование атрибутов

Функциональные зависимости


Таблица 2.7

Функциональные зависимости между атрибутами таблицы «Table_2»

Наименование атрибутов

Функциональные зависимости

Сode1 [length of service] [higher education]


Таблица 2.8

Функциональные зависимости между атрибутами таблицы «Table_3»

Наименование атрибутов

Функциональные зависимости

code2 Name profession_need Stat


Таблица 2.9

Функциональные зависимости между атрибутами таблицы «Table_4»

Наименование атрибутовФункциональные зависимости


Some_code [Work]

база данный dbcontrolle трудоустройство

3. Организация выборки информации из базы данных


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

)   выборка данных из связанных таблиц;

select [first_name], [higher education] ,[INN],[profession],[STATUS] from table_1, table_2 where table_1.code=table_2.code

Произвести выборку полей имени и высшего образования, ИНН, профессии и статуса из таблиц 1 и 2, где соответствующие поля кода совпадают

Таблица 3.1

Результат выполнения запроса 1

First Name

higher education

INN

profession

STATUS

Василий

СГУ

53465476

Слесарь

Free

Мария

МГТУ

23423434

Оп. станка с ЧПУ

Free

Петр

ВАУ

42342342

Монтажник

Free

Марфа

ВШУ

12312313

Техник

Free

Еврипит

None

31231245

Плотник

Free

Марк

СЕВ

31231254

Укладчик Бетона

Free

Марина

МГУ

34234234

Шпалоукладчица

Non-free


2) выборка с использованием оператора (естественного) соединения;

SELECT * FROM table_1JOIN table_2 ON table_1.code = table_2.code

Произвести естественное соединение тех записей таблиц, где поля код совпадают

Таблица 3.2

Результат выполнения запроса 2

First Name

Last Name

INN

profession

STATUS

length of service

higher education

9

Василий

Теркин

53465476

Слесарь

Free

24

СГУ

11

Мария

Николаева

23423434

Оп. станка с ЧПУ

Free

48

МГТУ

12

Петр

Печкин

42342342

Монтажник

Free

60

ВАУ

13

Марфа

Васильева

12312313

Техник

Free

72

ВШУ

14

Еврипит

Никополидис

31231245

Плотник

Free

84

None

15

Марк

Аврелий

31231254

Укладчик Бетона

Free

96

СЕВ

16

Марина

Маринова

34234234

Шпалоукладчица

Non-free

36

МГУ

3) выборка с использованием шаблона;

Select [first_name] from table_1 where [second_name] Like” %Н”

Вывести имена людей из таблицы 1, у которых фамилия начинается на букву Н

Таблица 3.3

Результат выполнения запроса 3

First Name

Мария


)   выборка информации в заданном диапазоне;

SELECT <#"524979.files/image007.gif">

Рисунок 4.1 - представление результатов выборки

5. Проектирование хранимых процедур


В данном проекте были созданы следующие хранимые процедуры:

[DB]

/****** Object: StoredProcedure [dbo].[vasya] Script Date: 06/13/2011

:48:41 ******/ANSI_NULLS ONQUOTED_IDENTIFIER ON

- =============================================

- Author:<Author,,Name>

- Create date: <Create Date,,>

- Description:<Description,,>

- =============================================PROCEDURE [dbo].[vasya]

- Add the parameters for the stored procedure hereBEGIN

- SET NOCOUNT ON added to prevent extra result sets from

- interfering with SELECT statements.NOCOUNT ON;

- Insert statements for procedure heredbo.Table_1 Set code = code+2dbo.Table_2 Set [length of service] = [length of service]*12

Данная процедура увеличивает поле code в таблице 1 и выводит количество опыта каждого работника в месяцах, а не в годах.

6. Разработка механизмов управления данными в базе при помощи триггеров


6.1 Триггер для добавления данных


Данный триггер разрешает добавлять лишь только те данные, которые удовлетворяют условию, где поле INN больше 100000000 или меньше 999999999, если поле будет заполнено неверными данными, то программа выдаст сообщение: 'Неверно введен номер'.

SET ANSI_NULLS ONQUOTED_IDENTIFIER ONTRIGGER [dbo].[INSERTION_CHECK][dbo].[Table_1]INSERT, UPDATENOCOUNT ON;@INN INT@INN = (SELECT [INN] FROM [inserted]) (@INN<100000000 OR @INN>999999999)

BEGIN

PRINT 'Неверно введен номер ИНН' ROLLBACK TRAN

END@@ERROR != 0'Error occurred during related tables' ROLLBACK TRAN

END

 

.2 Триггер для удаления данных


Данный триггер запрещает удалять данные, в которых поле имени начинается на «Вас».

SET ANSI_NULLS ONQUOTED_IDENTIFIER ONTRIGGER [dbo].[DELETE_CHECK][dbo].[Table_1]DELETENOCOUNT ON;((SELECT Count(*) FROM [deleted] WHERE ([First Name] LIKE

'Вас%')) >0 )'Нельзя удалить человека с именем Вася!!!' ROLLBACK TRAN@@ERROR != 0'Error occurred during related tables' ROLLBACK TRAN

END

6.3 Триггер для обновления данных


Данный триггер запрещает производить обновление поля INN, для уже существующих записей.

SET ANSI_NULLS ONQUOTED_IDENTIFIER ONTRIGGER [dbo].[UPDATE_CHECK][dbo].[Table_1]UPDATENOCOUNT ON;(NOT ( (SELECT [INN] FROM [inserted]) = (SELECT [INN] FROM [deleted]) ) )'Нельзя менять ИНН' ROLLBACK TRAN@@ERROR != 0'Error occurred during related tables' ROLLBACK TRAN

END

7. Разработка технологий доступа к базе данных


7.1 Выбор пользователей базы данных


В данном случае было выбрано 3 группы пользователей: администраторы, секретари и непосредственно работники (рис. 7.1).

Рисунок 7.1 - Выбор роли

Клиентское приложение в зависимости от роли пользователя позволяет ему редактировать и добавлять записи, просматривать отчеты, выполнять запросы и использовать хранимые процедуры, например, секретарю не позволено редактировать и выполнять запросы к базе (рис. 7.2).

Рисунок 7.2 - вид главного окна при выборе роли «Секретарь»

 


7.2 Организация обмена данными между серверной частью и клиентским приложением


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

В данном приложении осуществляется обмен данных между jquery framework для вывода отчетов, в результате чего автоматически открывается и просматривается вызванный отчет, главное приложение взаимодействует непосредственно SQL Server.

 


8. Экономическое обоснование результатов внедрения программного продукта


Данный программный проект является относительно не требовательным к ресурсам как сервера, так и отдельной рабочей станции. Для сервера достаточно будет не менее 500 мегабайт оперативной памяти и одноядерного процессора семейства Intel Pentium 4, для рабочей станции - не менее 400 мегабайт оперативной памяти и одноядерного процессора семейства Intel Pentium 4. Затраты на прокладку ЛВС надо рассматривать в каждом отдельном случае.

9. Требования к техническому обеспечению


Объем ОЗУ для эффективной работы приложения определяется по формуле:

, (1)

где  - минимальные требования со стороны операционной системы,  - минимальный размер подгружаемых модулей,  - дополнительное пространство ОЗУ.

Итак, имеем:

V= 200+150+50=400 мегабайт

Свободное пространство на жестком диске определяется равенством:

, (2)

где  - объем инсталляционного пакета программы;  - объем файлов базы данных;  - объем временных файлов, создающихся программой в ходе запуска.

Итак, имеем

W=2+4+1=9 мегабайт

 


10. Инструкция по эксплуатации базы данных и клиентского приложения


Вызов данной программы не отличается от запуска любой другой программы из среды операционной систем: пользователю необходимо скопировать файлы приложения на жесткий диск и запустить приложение с расширением .exe в корневом каталоге программы. Данное приложение для работы требует наличие установленного .net framework 3.5 версии и выше, Jquery framework (поставляется вместе с приложением). Никаких дополнительных действий от пользователя не требуется.

Заключение


В результате всех действий созданное приложение выполняет взаимодействие не только с базой данных, но и с несколькими «Фреймворками», которые значительно расширяют его функциональность, с одновременным ускорением разработки и гибкости всего проекта. Все выбранные среды и инструменты разработки показали себя только с хорошей стороны, создание приложения происходило быстро и относительно качественно. Стоит отметить лишь возрастающие требования к оборудованию из-за того, что более совершенные среды зачастую являются более высокоуровневыми и тяжелыми для обработки оборудованию, происходит сокращение работы людей за счет увеличения работы аппаратуры.

 

Список используемой литературы


1.      Хомоненко А.Д., Цыганков В.М., Мальцев М.Г. Базы данных: Учебник для высших учебных заведений / Под ред. проф. А.Д. Хомоненко. - Издание второе, дополненное и переработанное. - СПб.: КОРОНА принт, 2002.- 672 с.

2.      Глушаков С.В., Ломотько Д.В. Базы данных: Учебный курс. - Харьков: Фолио; Ростов н/Д: Феникс; Киев: Абрис, 2000. - 504 с.

.        Мишенин А.И. Теория экономических информационных систем -М.: Финансы и статистика, 1999. - 168 с.

4.      Смирнова Г.Н., Сорокин А.А., Тельнов Ю.Ф. Проектирование экономических информационных систем: Учебник для высших учебных заведений / Под ред. Ю. Ф.

 

ПРИЛОЖЕНИЕ 1

 

Экранные формы приложения


Рисунок 1 - выбор роли

Рисунок 2 - ввод логина и пароля

Рисунок 3- главное окно программы

Рисунок 4 - вид отчета о заходе пользователями в систему

Рисунок 4 - вид отчета-диаграммы

ПРИЛОЖЕНИЕ 2

 

Листинг программы


Файл: Form1.cs

public partial class Form1 : Form

{Form1()

{();

}string login;void Form1_Load(object sender, EventArgs e)

{ textBox1.Enabled = false; dataGridView1.Enabled = false; ataGridView2.Enabled = false;.Enabled = false; button2.Enabled = false; menuStrip1.Enabled = false;

}(login == "user")

{ report1ToolStripMenuItem.Enabled= false; }

// TODO: данная строка кода позволяет загрузить данные в таблицу "dBDataSet.Table_2". При необходимости она может быть перемещена или удалена..table_2TableAdapter.Fill(this.dBDataSet.Table_2);

// TODO: данная строка кода позволяет загрузить данные в таблицу "dBDataSet.Table_1". При необходимости она может быть перемещена или удалена..table_1TableAdapter.Fill(this.dBDataSet.Table_1);

}

void Form1_FormClosing(object sender, FormClosingEventArgs e)

{.table_1TableAdapter.Update(this.dBDataSet);.table_2TableAdapter.Update(this.dBDataSet);.Exit();

}

void button1_Click(object sender, EventArgs e)

{.table_1TableAdapter.Connection.Open();.table_2TableAdapter.Connection.Open();query = textBox1.Text;.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(query, .table_1TableAdapter.Connection);

{

// Выполняем комманду. в результате новая запись будет добавлена

cmd.ExecuteReader().Close();

}

{.Show("Ошибка!!!", "Ошибка!!!", MessageBoxButtons.OK, .Error, MessageBoxDefaultButton.Button1);

}.table_1TableAdapter.Fill(this.dBDataSet.Table_1);.table_1TableAdapter.Connection.Close();.table_2TableAdapter.Fill(this.dBDataSet.Table_2);.table_2TableAdapter.Connection.Close();.Text = "";

}

void button2_Click(object sender, EventArgs e)

{newform = new Form2();.ShowDialog();

}

void report1ToolStripMenuItem_Click(object sender, EventArgs e)

{newform = new Form4();.ShowDialog();

}

void report2ToolStripMenuItem_Click(object sender, EventArgs e)

{target = "file:///" + Application.StartupPath + "/HTMLPage2.htm";

//Use no more than one assignment when you test this code.

//string target = ''ftp://ftp.microsoft.com'';

//string target = ''C:\Program Files\Microsoft Visual Studio\INSTALL.HTM'';

try

{.Diagnostics.Process.Start(target);

}

(.ComponentModel.Win32Exception noBrowser)

{(noBrowser.ErrorCode == -2147467259).Show(noBrowser.Message);

}(System.Exception other)

{.Show(other.Message);

}

}

void saveToolStripMenuItem_Click(object sender, EventArgs e)

{.table_1TableAdapter.Update(this.dBDataSet);.table_2TableAdapter.Update(this.dBDataSet);

}

void exitWithoutSaveingToolStripMenuItem_Click(object sender, EventArgs e)

{.Exit();

}void saveAndExitToolStripMenuItem_Click(object sender, EventArgs e)

{.table_1TableAdapter.Update(this.dBDataSet);.table_2TableAdapter.Update(this.dBDataSet);.Exit();

}void button2_Click_1(object sender, EventArgs e)

{.table_1TableAdapter.Connection.Open();.table_2TableAdapter.Connection.Open();query = "Execute dbo.vasya";.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(query, this.table_1TableAdapter.Connection);

try

{

// Выполняем комманду. в результате новая запись будет добавлена.ExecuteReader().Close();

}

{.Show("Ошибка!!!", "Ошибка!!!", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);

}.table_1TableAdapter.Fill(this.dBDataSet.Table_1);.table_1TableAdapter.Connection.Close();.table_2TableAdapter.Fill(this.dBDataSet.Table_2);.table_2TableAdapter.Connection.Close();

}void button3_Click(object sender, EventArgs e)

{

}

}

}partial class Form2 : Form

{Form2()

{();

}void button1_Click(object sender, EventArgs e)

{(((textBox1.Text == "admin") & (textBox2.Text == "282209")) | ((textBox1.Text == "user") & (textBox2.Text == "user")) | ((textBox1.Text == "noob") & (textBox2.Text == "noob")))

{.Hide();newform = new Form1();.login = textBox1.Text;.ShowDialog();

}

{ MessageBox.Show("Ошибка!!!", "Ошибка!!!", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1); }

StreamWriter sw; // объект потока для записи

StringBuilder builder; // построитель строк= new StringBuilder();

// добавляем текст.AppendFormat("<p>"+textBox1.Text +" {0:F}. " + "</p> ", DateTime.Now);

// создаем поток для записи - file.txt с добавлением в конец файла, кодировка UTF8

using (sw = new StreamWriter(@Application.StartupPath + "/HTMLPage1.htm", true, Encoding.UTF8))

// сбрасываем буфера и даем доступ к файлу

sw.Close();

}

}void Form2_FormClosing(object sender, FormClosingEventArgs e)

{.Exit();

}

}

}


Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!