Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архив1 / Курсовая_4к.docx
Скачиваний:
20
Добавлен:
23.07.2013
Размер:
339.84 Кб
Скачать

2.1 База данных

После анализа нескольких систем электронных пропусков была создана база данных с таблицами:

sotr:

Поле

Описание

ID

Идентификатор сотрудника

First_name

Имя сотрудника

Second_name

Фамилия

Dad_name

Отчество

Position

Должность

Phone

Контактный телефон

LVL_ID

Уровень доступа

room:

Поле

Описание

ID

Идентификатор комнаты

Name

Название комнаты

Description

Описание комнаты

Phone_corp

Внутренний телефон

tether:

Поле

Описание

LVL_ID

Уровень доступа

Room_ID

Идентификатор комнаты

LVL_name

Название уровня доступа

bigbro:

Поле

Описание

Sotr_ID

Идентификатор сотрудника

Time_in

Время прихода в комнату

Time_out

Время выхода из комнаты

Room_ID

Идентификатор комнаты

room_area:

Поле

Описание

ID

Идентификатор зоны

Description

Описание зоны

Room_ID

Идентификатор комнаты

2.2 Написание сервера наJava

Сначала были написаны классы: sort, room, area и т.д. То есть, для каждой таблицы написан класс, объекты которого имеют свойства эквивалентные полям таблиц. Также были написаны методы get/set для каждого свойства, при этом set-методы также изменяют и значение в БД.

Стоит уделить внимание инициализации сервера. Для каждого класса написана функция, которая получает идентификаторы всех записей для своего типа и создает объекты для каждой имеющейся записи в БД. Для наглядности код конструктора класса sotr:

public Sotr (int id)

{

ID = id;

First_name = SecurityApp.dataBase.getSotrFirst_NameByID(id);

Second_name = SecurityApp.dataBase.getSotrSecond_NameByID(id);

Dad_name = SecurityApp.dataBase.getSotrDad_NameByID(id);

Position = SecurityApp.dataBase.getSotrPositionByID(id);

phone = SecurityApp.dataBase.getSotrPhoneByID(id);

LVL_ID = SecurityApp.dataBase.getSotrLVL_IDByID(id);

}

Т.е., на вход подается только идентификатор записи в БД, а сам конструктор уже получает данные из БД через класс DataBase.

Теперь немного о классе DataBase, объекты которого работают непосредственно с БД. В этом классе описана масса методов для работы с БД (например, методы для выборки, изменения записей и т.д.). Т.е., весь класс это набор методов для всех полей в БД и все манипуляции с записями на сервере проходят через этот класс. Каждый из методов заключен в конструкцию исключений, что делает сервер более устойчивым к отказам из-за некорректных данных или недопустимых операций. Пример одного из методов класса, который получает должность сотрудника по идентификатору:

public String getSotrPositionByID(int id)

{

String name ="";

try {

String query = "Select Position FROM sotr WHERE ID = '" + id+"'";

ResultSet rs = stmt.executeQuery(query);

if (rs.next())

{

String dbtime = rs.getString(1);

position = dbtime;

}

return position;

}

catch (SQLException e) {e.printStackTrace();}

return "none";

}

Теперь о главном классе сервера SecurityApp. В нем хранятся массивы объектов зон, сотрудников, комнат и т.д.. Также этот класс принимает входящие подключения от приложения-клиента (интерфейса), создает новые объекты класса «MySec» (который наследует класс «Runnable», что позволяет каждому приложению-клиенту работать в своём потоке), и передает это подключение созданному объекту класса «MySec». В последнем и происходит непосредственный обмен данными и командами между сервером и клиентом.

Соседние файлы в папке Архив1