close

Вход

Забыли?

вход по аккаунту

?

отчет по практике(9)

код для вставкиСкачать
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
"Мурманский государственный технический университет"
Политехнический факультет
ОТЧЕТ
по производственно-технологической практике
студента 3 курса Политехнического факультета МГТУ специальности 230100.62 "Информатика и вычислительная техника"
Осипова Ильи Андреевича
Место прохождения практики: Филиал "Кольский" ОАО "Территориально генерирующая компания - 1" отдел информационных технологий
Тема: Разработка программного продукта, оптимизирующего создание отчетов по базе данных
Время прохождения практики с "25" июня 2012 г. по "21" июля 2012 г.
Руководитель практики от предприятия: Начальник ОИТ ______________ Грачев С.А.
Оценка ______________ "__" _______ 2012г.
Руководитель практики: ст. преподаватель кафедры ВМ и ПО ЭВМ ______________ Лазарева И.М.
Мурманск
2012
Содержание
Содержание2
1. Ознакомительная часть3
1.1. Деятельность отдела информационных технологий3
1.2. Технические характеристики5
1.3. Технические характеристики ПК, используемого для разработки7
1.4. Программные пакеты8
2. Практическая часть9
2.1. Постановка задачи9
2.2. Предметная область10
2.3. Описание программного продукта13
2.4. Разработка программного продукта14
2.5. Описание интерфейса ПП16
3. Анализ результатов17
Список используемой литературы18
Приложения19
1. Ознакомительная часть
1.1. Деятельность отдела информационных технологий
Отдел информационных технологий относится к управлению филиала "Кольский" ОАО "ТГК-1". В обязанности этого отдела входят различные задачи: сопровождение аппаратных средств, сопровождение баз данных, сопровождение локальной вычислительной сети, обслуживание телекоммуникаций, сопровождение программных комплексов, защита информации, задачи договорно-экономического характера и материального обеспечения.
Сопровождение аппаратных средств подразумевает поддержку телекоммуникационного оборудования, рабочих станций, серверов и оргтехники.
В сопровождение баз данных входит работа с БД Oracle, БД MSSQL, поддержка SAP/R3 HR, КСУ ФХД, КИДО (контроль исполнения договорных обязательств), ГКПЗ (годовая комплексная программа закупок), ИСИДА (БД используемая для документооборота), АСБУ на базе 1С.
В сопровождение локальной вычислительной сети входит настройка телекоммуникаций (маршрутизация, настройка ЛВС), подключение к ЛВС рабочих станций, серверов, оргтехники, техническая поддержка пользователей.
Обслуживание телекоммуникаций включает в себя обслуживание серверов ЛВС, поддержку АД (Active Directory) включая структурные подразделения, обслуживание структурированных кабельных систем филиала, электронной почты, интернета и каналов связи, поддержку сервисов DNS/DHCP.
ОИТ сопровождает следующие программные комплексы: бухгалтерский комплекс (АСБУ на базе 1С, ЗУП на базе 1С, САП), КИДО, ГКПЗ, ИСИДА, АССД для ООЗД, информационно правовые системы.
В область защиты информации входит защита персональных данных пользователей, разграничение прав доступа, аудит безопасности.
Также отдел занимается сметно-договорной работой, работой с подрядчиками, снабжением филиала расходными материалами для оргтехники. Это входит в задачи договорно-экономического характера и материального обеспечения.
1.2. Технические характеристики
В распоряжении предприятия имеется большое число персональных компьютеров. В основном это:
> компьютеры AQUARIUS с характеристиками:
* Процессор: P4 3GHz;
* Оперативная память: 1 Гб;
* HDD: 160 Гб; * DVD-rom;
* Video on Board.
> компьютеры HP Z210 c характеристиками:
* Процессор: Intel Core i5 3,3 GHz;
* Оперативная память: 4 Гб;
* HDD: 500 Гб; * DVD-rom; * Card reader;
* Video on Board. > ноутбуки HP: * Процессор: Intel Core 2 duo 2.6 GHz x2; * Оперативная память: 2 Гб;
* HDD: 250 Гб; * DVD-rom; * Card reader;
* Встроенный адаптер беспроводной связи.
Все персональные компьютеры предприятия объединены в локальную сеть, главный узел которой располагается в серверной, где стоит большое количество серверов (около 20). Персональные компьютеры подключены витой парой к маршрутизаторам, которые оптоволокном подключены к серверам.
Интернет настроен через прокси-сервер. Канал 100 Мбит. Если пользователю необходим доступ в Интернет по рабочим моментам, ему назначается ежемесячный лимит траффика, при выработке которого блокируется доступ к сети Интернет. Лимит разный для всех пользователей и зависит от необходимости по трудовым обязанностям. Заблокированы социальные сети (Вконтакте, Одноклассники), сервисы мгновенных сообщений (ICQ), онлайн-игры, торрент-трекеры. Функциональная схема
Отдел информационных технологий получает задания от руководства на еженедельных плановых совещаниях. Задания бывают трех типов: написание программного продукта, обеспечение работоспособности имеющихся систем и настройка новых, а так же задачи поддержки 1С бухгалтерии. Для написания программных продуктов в отделе существует штат программистов. Обеспечение работоспособности и настройку систем осуществляют электроники. Поддержку 1С бухгалтерии осуществляют специалисты в этой области. Комплексное выполнение всех поставленных задач обеспечивает оптимизацию работы других отделов, бесперебойную работу программных и аппаратных комплексов предприятия.
1.3. Технические характеристики ПК, используемого для разработки
1) Ноутбук HP Compaq 6720s
Процессор: Intel(r) Core(tm) 2 Duo CPU T7250 (2 ГГц x 2).
Память: 1 Гб.
Жесткий диск: 150 Гб.
Оптические устройства: Дисковод DVD+/-RW.
Порты: USB 2.0 (3 шт).
Встроенный адаптер локальной сети Intel(r) 82562GT 10/100.
Встроенный адаптер беспроводной связи Intel(r) PRO/Wireless 3945ABG.
Устройство считывания карт памяти.
1.4. Программные пакеты
1) Операционная система: Microsoft Windows 7 Корпоративная.
Среда разработки: Borland C++ Builder 6.
Офисные пакеты: MS Office 2010.
Дополнительное ПО: Mozilla Firefox 12.0, Toad for Oracle 10.6.
2. Практическая часть
2.1. Постановка задачи
Требуется разработать программное средство, работающее с базой данных Oracle и оптимизирующее составление отчетов по базе данных, представляющей собой телефонный справочник с некоторой дополнительной информацией (должность, E-mail).
Ранее на предприятии для этой цели никаких специальных программных продуктов не было, и необходимую информацию можно было получить, только используя запросы к базе данных. В связи с тем, что такой способ обращения к базе данных подразумевает определенные сложности в составлении отчетов, а именно проблематичность группировки данных по отделам и необходимость переписывать запрос, если нужны данные по другому отделу, было решено создать программное средство, которое удобно в использовании и не требует дополнительных знаний языка запросов. В конечном варианте программа должна предоставлять возможность предварительного просмотра полученного отчета, печати, выгрузки данных в Excel, поиска данных о сотруднике по фамилии, иметь простой интерфейс, справочную систему. Также, поскольку данные в базе конфиденциальны, предполагается окно для ввода имени пользователя и пароля.
2.2. Предметная область
Основным объектом для работы является база данных на Oracle. Она имеет следующую структуру:
В базе данных имеется 6 сущностей:
PERSON - стержень;
PERSTEL - характеристика;
PERSJOB - ассоциация;
JOB - характеристика;
PERSMAIL - характеристика;
STRUCTURE - характеристика.
Благодаря возможностям Oracle первичные ключи у сущностей не определены.
Связи:
Сущность PERSON связана с сущностями PERSJOB и STRUCTURE: 1 - 1.
Сущность PERSON связана с сущностями PERSTEL и PERSMAIL: 1 - много.
Сущность PERSJOB связана с сущностью JOB: 1 - 1.
Сущность STRUCTURE связана сама с собой: 1 - 1.
Ограничения целостности:
Таблица JOB:
NAME - тип данных - символьная строка длиной 150 символов, может быть пустым.
ID - тип данных - целое, может быть пустым.
RANK- тип данных - целое, может быть пустым. Таблица PERSJOB:
ID_PERSON - тип данных - целое, не пустое. ID_JOB - тип данных - целое, не пустое.
Таблица PERSMAIL:
ID_PERSON - тип данных - целое, не пустое.
MAIL - тип данных - символьная строка длиной 100 символов, не пустое.
Таблица PERSON:
ID - тип данных - целое, не пустое, уникально.
ID_STRUCT - тип данных - символьная строка длиной 11 символов, может быть пустым.
DATE_CREATED - тип данных - дата, может быть пустым, по умолчанию текущая дата.
F - тип данных - символьная строка длиной 64 символа, может быть пустым.
I - тип данных - символьная строка длиной 64 символа, может быть пустым.
O - тип данных - символьная строка длиной 64 символа, может быть пустым.
OFFICE - тип данных - символьная строка длиной 100 символов, может быть пустым.
IMG - тип данных - большой объект (BLOB), может быть пустым.
DATE_BIRTH - тип данных - дата, может быть пустым.
Таблица PERSTEL:
ID_PERSON - тип данных - целое, не пустое.
TEL - тип данных - символьная строка длиной 100 символов, не пустое.
Таблица STRUCTURE:
ID - тип данных- символьная строка длиной 11 символов, может быть пустое.
NAME - тип данных- символьная строка длиной 100 символов, может быть пустое.
PARENT_ID - тип данных- символьная строка длиной 11 символов, может быть пустое.
INFO - тип данных- символьная строка длиной 256 символов, может быть пустое.
ORD - тип данных - целое, может быть пустое.
Особенностью данной БД является иерархическая структура таблицы STRUCTURE, то есть она связана сама с собой (поля ID и PARENT_ID). Таким образом, эту таблицу можно представить в виде дерева: корневая вершина - запись, у которой поле PARENT_ID пустое, на следующем уровне будут записи, в которых в поле PARENT_ID указан ID корневой вершины и так далее до конечных листов. Из-за такой структуры таблицы возникает необходимость использовать рекурсивные (иерархические) запросы, так как надо показать какой отдел к какому подразделению относится. Именно для правильного отображения данных в некоторых таблицах добавлены дополнительные атрибуты, например ORD в таблице STRUCTURE и RANK в таблице JOB. Например, благодаря сортировке по этим полям при отображении дерева отделов "Управление" находится выше "АТЭЦ", а при формировании отчетов начальники отделов отображаются первыми, а не в алфавитном порядке по фамилиям всех сотрудников.
2.3. Описание программного продукта
Созданный программный продукт имеет интуитивно понятный интерфейс и является максимально простым для работы.
При запуске приложения на экран выводится форма для ввода логина и пароля. При неправильном вводе выдается соответствующее сообщение. Если авторизация пройдена, то открывается главная форма. В её левой части расположено поле, в котором отображается дерево предприятий и отделов. В зависимости от того предприятия (отдела), который в нем выбран, изменяется текст в поле заголовка, который отображает полный путь к выбранному предприятию (отделу), по которому будет составляться отчет.
По нажатию кнопки "Составить отчет" будут отображены данные по сотрудникам данного предприятия (отдела) и его подотделов. Если это те данные, которые необходимы пользователю (то есть он правильно выбрал отдел), то пользователь может выгрузить данные в Excel или просмотреть отчет, который, впоследствии, можно распечатать.
Если пользователь выгружает данные в Excel, то открывается книга Excel, в которой в виде таблицы записаны данные по запросу. Дальше пользователь может делать все то, что позволяет Excel.
2.4. Разработка программного продукта
В качестве среды разработки выбрана среда программирования Borland C++ Builder 6. Языком программирования выбран С++.
При разработке также использовался программный продукт Toad for Oracle для отслеживания соответствия результатов запросов в разрабатываемом продукте данным в БД.
Для успешного использования программы, на компьютере должны быть установлены: Microsoft Office любой версии начиная с 2003, операционная система Windows XP или Windows 7, а также настроен доступ к серверу, на котором хранится база данных.
Так как данный программный продукт разрабатывался только для составления отчетов, в нем не предусмотрено возможности добавлять, изменять или удалять данные, что позволяет поддерживать ссылочную целостность в БД. При разработке использовались объекты стандартных классов Borland C++ Builder, таких как TForm, TButton, TEdit, TADOConnection, TADOQuery и другие.
Класс TADOConnection использован в силу того, что позволяет работать с базой без определения ее в BDE Administrator. То есть можно подключиться к серверу и работать с базой непосредственно на нем.
В программном продукте имеется четыре формы: форма авторизации, основная форма, форма отчетов и форма для справки.
Форма авторизации отвечает, соответственно, за авторизацию пользователя.
Основная форма является главной рабочей областью программного продукта.
Форма отчетов содержит только объект класса TQReport, на котором задается структура отчета.
На форме для справки отображается справка по программному продукту, а именно за что отвечает каждая область основной формы.
Для того чтобы составить отчет, необходимо выполнить два запроса: запрос для создания дерева предприятий и отделов и запрос для отображения данных сотрудников выбранного отдела. Запросы приведены в Приложении 1.
Запрос для создания дерева предприятий и отделов не изменяется, поэтому он сразу прописан в свойстве SQL объекта класса TADOQuery. Запрос для отображения данных сотрудников должен меняться в зависимости от того, какой отдел выбран, но он тоже сразу прописан в свойстве SQL другого объекта класса TADOQuery, но при необходимости в нем меняются некоторые параметры.
2.5. Описание интерфейса ПП
При запуске программы открывается окно авторизации, в котором необходимо ввести имя пользователя и пароль. При ошибочном вводе будет выдано соответствующее сообщение. Если введены верные имя пользователя и пароль, то открывается главная форма. На рис.1 в приложениях приведен вид окна авторизации.
При создании главной формы сразу же выполняется запрос, необходимый для построения дерева, и отображается полученное дерево. Далее пользователю следует выбрать нужный ему отдел и нажать кнопку "Составить отчет". На форму будет выведен результат запроса в виде списка сотрудников с необходимыми данными и отделами, в которых они работают. На рис.2 приведен внешний вид программы с уже выполненным запросом для составления отчета.
Далее пользователь может выбрать: просмотреть отчет, нажав кнопку со значком лупы и распечатать его из открывшегося окна, выгрузить данные в Excel и продолжить работать с ними уже в нем или, если это не тот отдел, который был нужен (например, отдел с таким же названием, но на другом предприятии), заново выбрать отдел и составить отчет.
На рис.3 окно предварительного просмотра отчета.
На кнопку со знаком "?" открывается справка, в которой показано, за что отвечает каждая область главной формы.
3. Анализ результатов
По итогам прохождения производственно-технологической практики был разработан программный продукт, удовлетворяющий заявленным требованиям: - в целях защиты конфиденциальных данных при запуске запрашивается логин и пароль;
- программный продукт позволяет быстро и без особых усилий получить данные по сотрудникам любого отдела организации;
- результат выполнения запроса выводится непосредственно в приложении для проверки, тот ли отдел выбран;
- результат выполнения запроса можно вывести в форме отчета или выгрузить в Excel одним нажатием кнопки.
Использование данного программного продукта позволяет оптимизировать процесс составления отчетов по БД Oracle без требования от пользователя знания языка SQL, структуры БД, умения составления отчетов вручную (выбор необходимых полей, группировка и т.д.). Также благодаря этому приложению можно составлять телефонные справочники по отделам или всему предприятию в Excel и удобно с ними работать (форматировать, распространять, печатать).
Дальнейшая разработка программного средства может быть продолжена в следующих направлениях: - добавление возможности создания отчетов по другим БД (например график отпусков для отдела кадров);
- преобразование разработанного программного продукта в полноценный продукт для работы с БД (добавление, изменение, удаление данных, создание новых таблиц, предоставление пользователю возможности самому выбирать необходимые поля для отображения в отчете);
- добавление возможности экспорта в другие приложения (например в Word);
- разработка приложения для других операционных систем.
Список используемой литературы
1. Е. Догадкин Введение в Oracle 9i: SQL. Руководство слушателя. Том 2. - М.: НОУ "УКЦ Форс", 2002. - 458 с.
2. Н. Культин C++ Builder в задачах и примерах. - СПб: "БХВ Петербург", 2005. - 328 с.
Приложения
Запросы
Запрос для создания дерева:
SELECT name as n, level, id FROM structure
START WITH parent_id = 10000000000
CONNECT BY PRIOR id = parent_id AND id != '90150000000'
AND id != '92350000000' AND id != '90040000000'
AND id != '90050000000' AND id != '90120000000'
AND id != '92350000000' AND id != '90140000000'
AND id != '94875102396' AND id != '90751300000'
AND id != '90961580000' AND id != '90971590000'
AND id != '91750000000' AND id != '91350000000'
AND id != '91550000000' AND id != '91953900000'
AND id != '91956500000' AND id != '92150000000'
AND id != '92555700000' AND id != '92956100000'
AND id != '90010000000' AND id != '90020000000'
AND id != '90030000000' ORDER SIBLINGS BY ord, name
Данные выбираются из одной таблицы, в которой содержится информация об отделах и предприятиях. Таблица иерархическая (ссылается сама на себя) и данные можно представить в виде дерева. Но в таблице также содержится информация и о других предприятиях (например головной офис). Отображать необходимо только информацию о сотрудниках "Кольского" филиала, отсюда такое большое количество условий.
Запрос для составления отчета:
select distinct replace(f || ' ' || i || ' ' || o,'.','') fio, replace(job.name, '.','') job, job.rank as rank, mail, replace(tel,',',', ') tel, person.id_struct, person.id, b.name as name, b.rn as rn, replace(b.path, '/%/', '') path from person left join
(SELECT id_person, wm_concat(tel) AS tel
FROM perstel
GROUP BY id_person) a on a.ID_PERSON = Person.id inner join persjob on PERSON.ID = PERSJOB.ID_PERSON
inner join job on job.id = PERSJOB.ID_JOB
inner join
(SELECT name, level, parent_id, id, rownum as rn, SYS_CONNECT_BY_PATH(name, '/') as Path
FROM structure
START WITH parent_id = 10000000000
CONNECT BY PRIOR id = parent_id AND id != '90150000000'
AND id != '92350000000' AND id != '90040000000'
AND id != '90050000000' AND id != '90120000000'
AND id != '92350000000' AND id != '90140000000'
AND id != '94875102396' AND id != '90751300000'
AND id != '90961580000' AND id != '90971590000'
AND id != '91750000000' AND id != '91350000000'
AND id != '91550000000' AND id != '91953900000'
AND id != '91956500000' AND id != '92150000000'
AND id != '92555700000' AND id != '92956100000'
AND id != '90010000000' AND id != '90020000000'
AND id != '90030000000' ORDER SIBLINGS BY ord, name) b on PERSON.ID_STRUCT = b.id
left join
(SELECT id_person, wm_concat(mail) AS mail
FROM persmail
GROUP BY id_person) c on c.ID_PERSON = person.id
order by rn, person.id_struct, rank, fio
В данном запросе используется информация из всех таблиц, слияние нескольких атрибутов в один, замена подстроки в строке результата, вложенные запросы, рекурсивный запрос.
Интерфейс
Рис.1 Окно авторизации
Рис.2 (Данные сотрудников закрашены по просьбе руководителя практики)
Рис.3 (Данные сотрудников закрашены по просьбе руководителя практики)
Листинг.
void __fastcall TInfo::ExcelRepClick(TObject *Sender)
{
QueryRes->Visible = false;
ADOQuery3->First(); //create Excel file
int i, count, pole;
AnsiString cur_value;
Variant oExcel, oWb, book, oSh, sheet, cell;
oExcel=CreateOleObject("Excel.Application");
oWb=oExcel.OlePropertyGet("Workbooks");
oExcel.OlePropertySet("SheetsInNewWorkbook",1);
oWb.OleProcedure("add");
book=oWb.OlePropertyGet("item",1);
oSh=oExcel.OlePropertyGet("Worksheets");
sheet=oSh.OlePropertyGet("item",1);
sheet.OlePropertySet("Name","Отчет");
count=1;
int max_length = 12;
while (count<=Path->Lines->Count) //write current department
{
cell=sheet.OlePropertyGet("Cells").OlePropertyGet("Item",count,1);
cell.OlePropertySet("Value",Path->Lines->Strings[count-1].c_str());
cell.OlePropertyGet("Borders").OlePropertySet("LineStyle",1);
count++;
}
count = 1;
int max_count = ADOQuery3->RecordCount+Path->Lines->Count;
AnsiString buf_dept;
while (count<=Titles->Lines->Count) //write data about persons
{//change style of Excel cells
cell=sheet.OlePropertyGet("Cells").OlePropertyGet("Item",Path->Lines->Count+1,count);
cell.OlePropertySet("Value",Titles->Lines->Strings[count-1].c_str());
cell.OlePropertyGet("Borders").OlePropertySet("LineStyle",1);
cell.OlePropertySet("ColumnWidth", 12);
buf_dept ="";
for(i=Path->Lines->Count+1;i<=max_count;i++)
{
if(buf_dept != ADOQuery3->FieldByName("PATH")->AsString)
{
if(count == 1)
{//create header
max_count ++;
cell=sheet.OlePropertyGet("Cells").OlePropertyGet("Item",i+1,count);
buf_dept = ADOQuery3->FieldByName("PATH")->AsString;
cell.OlePropertySet("Value", buf_dept.c_str());
cell.OlePropertyGet("Borders").OlePropertySet("LineStyle",1);
continue;
} else {
i++;
buf_dept = ADOQuery3->FieldByName("PATH")->AsString;
}
}//insert data into cells
cell=sheet.OlePropertyGet("Cells").OlePropertyGet("Item",i+1,count);
cell.OlePropertyGet("Activate");
cur_value=ADOQuery3->FieldByName(Fields->Lines->Strings[count-1])->AsString;
cell.OlePropertySet("Value",cur_value.c_str());
if(max_length < cur_value.Length()+7)
{
max_length = cur_value.Length()+7;//change width of cells
}
cell.OlePropertyGet("Borders").OlePropertySet("LineStyle",1);
cell.OlePropertySet("ColumnWidth", max_length);
cell.OlePropertySet("HorizontalAlignment",2);
cur_value="";
ADOQuery3->Next();
}
count++;
max_length = 12;
ADOQuery3->First();
}
QueryRes->Visible = true;
oExcel.OlePropertySet("Visible",true);
}
2
Документ
Категория
Без категории
Просмотров
393
Размер файла
298 Кб
Теги
практике, отчет, практика
1/--страниц
Пожаловаться на содержимое документа