- •Введение
- •1. Анализ проблем управления строительными работами в ооо «Энком Кабельные системы мегаполиса»
- •1.1 Описание процесса управления строительными работами
- •1.2 Проблемы управления строительными работами
- •1.3 Формирование цели и задач проекта
- •2. Разработка концепции автоматизации управления строительными работами в ооо «Энком Кабельные системы мегаполиса»
- •2.1 Проектирование схемы движения информационных, материальных и финансовых потоков
- •2.2 Определение автоматизированных рабочих мест
- •2.3 Описание функций выявленных арм
- •3. Разработка структуры информации асу ооо «Энком Кабельные системы мегаполиса»
- •3.1 Проектирование логической структуры данных
- •3.2 Разработка физической структуры данных
- •3.3 Структура таблиц
- •3.4 Реализация контрольного примера
- •4. Разработка программного обеспечения асу ооо «Энком Кабельные системы мегаполиса»
- •4.1 Анализ и выбор систем программирования
- •4.2 Разработка оконных форм для взаимодействия системы и пользователя
- •4.3 Листинги алгоритмов
- •Выводы и результаты
- •Источники информации
- •Приложение 7. Коды процедур добавления в таблицы новых данных
- •Приложение 8. Коды с примерами использования процедур для добавления данных
- •Приложение 9. Коды создания представлений
- •Приложение 10. Вывод представлений
4.2 Разработка оконных форм для взаимодействия системы и пользователя
Первое, что необходимо реализовать в программе, это разграничение прав доступа. Таким образом, самое первое окно, приветствующее пользователя, это форма авторизации в системе.
Форма для авторизации пользователя представлена на рисунке 15.
Рисунок 15 - Окно авторизации
После авторизации пользователь получает доступ к системе и данным, доступным ему, согласно должности.
Но в доступе может быть и отказано, если данные введены неверно; в примере на рисунке 16 изображён подобный сценарий.
Рисунок 16 - Ошибка авторизации
После успешного входа, например, директора, сверху появится панель, в которой через вертикальную черту указаны таблицы, которые пользователь может просмотреть. Помимо этого, в правой части панели выводится имя текущего пользователя. Панель изображена на рисунке 17.
Рисунок 17 - Верхняя панель интерфейса программы
На рисунке 18 представлен пример интерфейса для ознакомления со списком сотрудников для пользователя «Бобров Дмитрий Ефимович». Данные берутся из базы данных и выводятся в графический интерфейс программы.
Рисунок 18 - Вывод списка сотрудников
На рисунке 19 изображён вывод таблицы «Объекты», содержащей информацию о строительных объектах: их название и адрес.
Рисунок 19 - Вывод списка объектов
Таким образом, выше был представлен ознакомительный графический интерфейс для работы с разрабатываемой АСУ строительными работами для строительной компании «Энком Ксм».
4.3 Листинги алгоритмов
Полные листинги SQL-кодов приведены в приложениях 6-10.
Далее рассмотрим лишь по несколько примеров каждого вида.
Ниже приведёт пример кода создания таблицы «Employee», которая хранит данные о сотрудниках. Как видно из кода таблицы, сперва создаётся непосредственно таблица, далее указывается первичный ключ, вторичный ключ, а также создаётся счётчик, который выполняет роль заполнителя первичного ключа и облегчает добавление данных в таблицу.
CREATE TABLE EMPLOYEE( ID_Employee int not null, Name_Employee varchar(50) not null, birth_date date not null, ID_Position int not null); ALTER TABLE EMPLOYEE ADD CONSTRAINT Employee_PK PRIMARY KEY (ID_Employee); ALTER TABLE EMPLOYEE ADD CONSTRAINT Position_FK FOREIGN KEY(ID_Position) REFERENCES POSITION; CREATE Sequence EmplID increment by 1 start with 1; |
Для добавления данных в каждую из таблиц были созданы процедуры. Созданные процедуры реализуют функции некоторых АРМов, заключающиеся в вводе данных в базу данных. Ниже пример процедуры для добавления нового сотрудника. Как можно заметить, процедура отслеживает, существует ли подобный сотрудник уже в системе, что защищает базу данных от дублирования данных. Бесконтрольное дублирование данных может привести через время к сбоям в работе системы, из-за чего данную проблему следует решать заранее.
CREATE OR REPLACE PROCEDURE NewEmployee ( NEWNAME IN CHAR, NEWBIRTHDATE IN DATE, NEWPOS IN CHAR ) AS ROWCOUNT INTEGER; NEWPOSID INTEGER; CURSOR POSCURSOR IS SELECT * FROM POSITION WHERE Name_Position = NEWPOS; BEGIN SELECT COUNT(*) INTO ROWCOUNT FROM EMPLOYEE WHERE Name_Employee = NEWNAME AND birth_date = NEWBIRTHDATE; IF ROWCOUNT > 0 THEN BEGIN DBMS_OUTPUT.PUT_LINE ('The Employee is already in the database - no action taken'); RETURN; END; END IF; FOR POSS IN POSCURSOR LOOP NEWPOSID := POSS.ID_Position; END LOOP; INSERT INTO EMPLOYEE (ID_Employee, Name_Employee, birth_date, ID_Position) VALUES (EmplID.NEXTVAL, NEWNAME, TO_DATE(NEWBIRTHDATE, 'DD-MM-YYYY'), NEWPOSID); DBMS_OUTPUT.PUT_LINE ('New Employee was added'); END; |
Пример использования процедуры добавления нового сотрудника представлен далее.
exec NewEmployee ('Натхин Владимир Петрович', '18-03-1982', 'Инженер') |
Помимо этого, также были созданы «представления», которые также являются реализациями функций АРМов, связанных с выводом информации или формированием отчётов. Код создания представления вывода данных о сотрудниках представлен ниже.
create view Employees as select name_employee "ФИО сотрудника" , birth_date as "Дата рождения" , Name_Position as "Должность" from EMPLOYEE, POSITION where POSITION.ID_Position = EMPLOYEE.ID_Position; |
Представления можно достаточно легко вызвать, после чего, оно сформирует результат, и информация будет передана вызывающему коду.
Примером вызова представления отображения сотрудников является рисунок 20.
Рисунок 20 - Результат работы представления отображения списка сотрудников
Таким образом, в данном разделе были показаны лишь примеры листингов, полные коды помещены в приложения 6-10 соответственно порядку листингов данного раздела.