Отчет по практике на ИП «IBA-Гомель»

Автор работы: Пользователь скрыл имя, 03 Сентября 2013 в 19:48, отчет по практике

Описание работы

Целью настоящей практики является не только закрепление навыков, полученных в процессе обучения, но и получение более глубоких теоретических знаний по таким дисциплинам как: “Архитектура операционных систем», “Архитектура ПЭВМ», “Программирование».

Содержание работы

ВВЕДЕНИЕ 2
1 ОПИСАНИЕ ПРЕДПРИЯТИЯ 3
1.1 Общие сведения о предприятии 3
1.2 Структура отдела 3
2 ОБЩАЯ ХАРАКТЕРИСТИКА ВЦ ПРЕДПРИЯТИЯ 4
2.1 Парк вычислительной техники 4
2.2 Структура сети предприятия 4
2.3 Специфика работы отдела 5
3 ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ О ПЛАТФОРМЕ LOTUS 6
3.1 Описание Lotus Notes 6
3.1.1 Общие сведения о Lotus Notes 6
3.3 Среда разработки Lotus-приложений Domino Designer 11
3.3.1 Работа в среде Lotus Domino Designer 11
3.3.2 Проектирование форм 11
3.3.3 Средства навигации по базам данных 13
3.4 Языки программирования Domino 15
3.4.1 Сравнение языков программирования, доступных в Domino 15
3.4.2 Язык формул 16
3.4.3 Язык LotusScript 16
3.4.4 Встроенные классы LotusScript 17
4 ВЫПОЛНЕНИЕ ИНДИВИДУАЛЬНОГО ЗАДАНИЯ 20
4.1 Постановка задачи 20
4.2 Анализ задачи и составление логической схемы 20
4.3 Проектирование базы данных 20
ЗАКЛЮЧЕНИЕ 27

Файлы: 1 файл

ОТЧЁТ!!!!!!!!!!!!!!!!.doc

— 544.50 Кб (Скачать файл)
  • Отбор документов при селективных репликациях;
  • Отбор документов для включения в вид;
  • Вычисление значений для показа в документах, видах и папках;
  • Определение видимости абзаца формы, абзаца в RichText-поле документа, объекта в области размещения, акции в форме или виде;
  • Вычисление и проверка значений полей документов;
  • Добавление и удаление полей в документах.;
  • Определение формы, используемых для открытия документа;
  • Определение вычисляемых субформ в форме.

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

Язык формул (@Formula) состоит  из функций (@Functions) и команд (@Command).

Основные типы формул- это ветвление, работа с переменными среды, хранящихся в файле NOTES.INI, функции полей (числовые, строковые, для работы со списками, дата/время и др.), функции для работы с документами, полями, видами, папками, навигаторами, документами, в том числе и с текущим, организация диалога с пользователем, доступ к другим базам данных (не Notes), работа с правами доступа, ролями, агентами.

Функция выполяняет определенное действие и возвращает результат, команда  в отличие от функции результат  не возвращает, а просто выполняет действие.[3]

3.4.3 Язык LotusScript

LotusScript является объектно-ориентированным  языком программирования, предназначенным для создания программ (скриптов) в рамках продуктов фирмы Lotus, в частности Lotus Notes. С помощью LotusScript можно создавать базы данных Notes, элементы дизайна в них, работать с текущими документами, видами, папками, навигаторами, базами, можно создавать агенты, организовывать диалог с пользователем, организовывать работу с правами доступа и ролями, работать с интерфейсом приложений, организовывать доступ к данным других баз данных (не Notes), работать с OLE-объектами, вызывать функции API. Таким образом язык LotusScript обладает всеми средствами, необходимыми для создания приложения Notes, от начала и до конца.[1]

3.4.4 Встроенные  классы LotusScript

Встроенные классы Notes можно разделить на две группы:

  • классы интерфейса пользователя (User Interface, UI) или классы «переднего плана»;
  • классы «заднего плана» (back-end).

Классы интерфейса пользователя позволяют разработчику приложений эмулировать многие действия пользователя. Они обеспечивают доступ к таким объектам пользовательского интерфейса, как рабочее пространство Notes (Workspace), окно вида (View window), окно документа (Document window), поле и поле произвольного текста (RichText) в окне документа. Действия, выполняемые над объектами классов интерфейса пользователя, отображаются в пользовательском интерфейсе, т.е. «происходят» как бы «на сцене, на переднем плане».

Класс NotesUIWorkSpace представляет текущее рабочее пространство Notes.

Класс NotesUIDocument представляет документ, который в текущий момент выбран в рабочем пространстве Notes.

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

Класс NotesSession представляет среду Notes, в которой выполняется  данный скрипт. Он позволяет получать доступ к переменным из файла NOTES.INI, адресным книгам, информации о текущем  пользователе, текущей платформе и номере реализации Notes.

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

Класс NotesDatabase представляет конкретную базу Notes и обеспечивает доступ ко всем содержащимся в ней объектам.

Класс NotesACL представляет список управления доступом (ACL) базы. Одной из составляющих частей ACL является набор элементов (ACL Entry), каждый из которых описывает права доступа к базе конкретного пользователя, сервера или группы.

Класс NotesACLEntry представляет один элемент из набора элементов  в ACL.

Класс NotesAgent представляет конкретного агента.

Класс NotesView представляет вид или папку в базе и обеспечивает доступ содержащимся в виде или папке документам.

Класс NotesViewColumn представляет столбец вида или папки.

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

Класс NotesDocument представляет один документ в базе.

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

Класс NotesRichTextItem представляет в документе один пункт типа «произвольный текст» (RichText). Этот класс является производным от класса NotesItem, т.е. он наследует все свойства и методы базового класса, но дополнительно имеет и свои собственные специфические свойства и методы для работы с произвольным текстом.

Класс NotesEmbeddedObect представляет внедренный объект, связанный объект или присоединенный файл, содержащийся в объекте класса NotesRichTextItem, а с точки зрения пользователя, в поле типа RichText.

Класс NotesLog позволяет  протоколировать выполняемые при работе скрипта действия и возникающие при этом ошибки. Результат протоколирования может быть помещен в базу, в почтовое сообщение или в файл (если скрипт выполняется локально).

Класс NotesNewsLetter позволяет  создавать документы, содержащие информацию из других документов, или документы, содержащие DocLink-и на многие другие документы.

Наконец, класс NotesDateTime служит для преобразования значений типа «дата-время» между форматами LotusScript и Notes.[1]

 

    1. ВЫПОЛНЕНИЕ ИНДИВИДУАЛЬНОГО  ЗАДАНИЯ

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

Разработать базу данных Lotus Notes «Аэропорт», позволяющую:

  • Создавать документы описывающие направления, рейсы и купленные билеты на эти рейсы;
  • Создавать иерархию документов в базе: Направления->Рейсы->Билеты;
  • Предоставлять документы для обзора в удобном виде;
  • Запускать по расписанию или напрямую агента автоматически создающего документы рейсов

4.2 Анализ задачи  и составление логической схемы

База данных будет  состоять из трех видов. В первом будут  отображаться документы Направлений,во втором – Рейсов, в третьем – документы проданных билетов. В каждом виде информация будет сгруппирована. Например, проданные билеты будут сгруппированы по рейсам. Навигация по видам будет осуществляться при помощи схемы outline. Виды и схема будут закреплены за фреймами набора фреймов «main», который будет открываться по умолчанию при открытии базы документатора.

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

Для создания агента будем использовать язык LotusScript.

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

Проектирование базы данных «Аэропорт» разобъем на этапы, на каждом из которых будем проектировать определенный элемент дизайна базы:

  • Создаем форму «Directions», по которой будет создаваться и открываться на редактирование/чтение документы описывающие направления рейсов аэропорта. «Directions» содержит поля: «direction»- название направления полетов, «distance»-расстояние перелета, «timeToFly»-время вылета для самолетов отправляющихся по этому направлению, «timeToEnd» – время прибытия для самолетов отправляющихся по этому направлению, «daysToFly» – дни перелетов (например понедельник или ежедневно);
  • Создаем форму «Flights», по которой будет создаваться и открываться на редактирование/чтение документы описывающие запланированные рейсы, они будут являться ответами для документов направлений.         «Flights» содержит поля: «direction» - название направления полетов (наследуется из предыдущей формы), «timeToFly» - время вылета для самолетов отправляющихся по этому направлению(наследуется из предыдущей формы), «timeToEnd» – время прибытия для самолетов отправляющихся по этому направлению (наследуется из предыдущей формы), «dateToFly» – запланированная дата вылета;
  • Создаем форму «Tickets», по которой будет создаваться и открываться на редактирование/чтение документы описывающие запланированные рейсы, они будут являться ответами для документов направлений. « Flights» содержит поля: «direction»- название направления полетов (наследуется из предыдущей формы), «timeToFly»-время вылета для самолетов отправляющихся по этому направлению(наследуется из предыдущей формы), «timeToEnd» – время прибытия для самолетов отправляющихся по этому направлению (наследуется из предыдущей формы), «dateToFly» – запланированная дата вылета, «sellDate» – дата продажи, «sellTime» – время продажи, «price» – цена билета, «fio» – ФИО пассажира;

 

  • Создаем вид «Направления». Содержит колонки: «Направление», «Расстояние», «Время вылета», «Время прибытия». Вид «Направления» содержит панель акций с кнопками: «Создать», «Удалить», «Обновить». Содержит формулу выбора документов:
      • SELECT (form=«Directions»)
  • Создаем вид «Рейсы». Содержит колонки: «Направление», «Дата вылета», «Время вылета», «Время прибытия», «Статус». Вид «Рейсы» содержит панель акций с кнопками: «Создать», «Удалить», «Обновить», «Автоматически создать рейсы» - кнопка запустит агента, который создаст документы рейсов, на основе документов направления. Содержит формулу выбора документов:
      • SELECT (form=«Flights»)
  • Создаем вид «Пассажиры». Содержит колонки: «Направление», «№ Места», «ФИО пассажира», «Класс». Вид «Рейсы» содержит панель акций с кнопками: «Создать» - создает новый рейс, «Удалить», «Обновить», «Добавить клиента» - создает документ проданного билета. Содержит формулу выбора документов:
      • SELECT (form=«Tickets»)

 

  • Создаем схему «1», элементы которой - действия. Их формулы:

«Пассажиры»:

@SetTargetFrame("Title");

@Command([OpenPage];"TicketsPage");

@SetTargetFrame("Main");

@Command([OpenView];"Пассажиры";"";0);

«Рейсы»:

@SetTargetFrame("Title");

@Command([OpenPage];"FlightsPage");

@SetTargetFrame("Main");

@Command([OpenView];"Рейсы";"";0)

«Направления»

@SetTargetFrame("Title");

@Command([OpenPage];"DirectionsPage");

@SetTargetFrame("Main");

@Command([OpenView];"Направления";"";0)

 

  • Создаем страницу «ViewList» с внедренной схемой «1» для навигации по базе данных;
  • Создаем 3 страницы на которых будут выводиться заголовки отображаемых видов
  • Создаем набор фреймов «Main», фреймы которого будут содержать: виды базы, заголовки и схему видов.
  • Создаем агент, который по расписанию или вручную будет создавать документы рейсов на основе данных из документов направлений. Агент должен создать документ рейса, запланированного на вылет через 2 недели. В документе рейса указан день недели и рейс должен быть назначен именно на этот день недели. Исходный текст агента:

Sub Initialize

Dim s As New NotesSession

Dim db As NotesDatabase

Dim collection As NotesDocumentCollection

Dim note As NotesDocument

Dim memo As NotesDocument

Dim item As NotesItem

Dim dateNow As New NotesDateTime(Now)

Dim dateNew As NotesDateTime

Set db = s.CurrentDatabase

Set collection = db.AllDocuments

Set note = collection.GetFirstDocument

'для всех направлений

'высчитываем дату  отправления

'проверяем: если есть  такой документ, то продолжаем  просмотр

'если нет, то создаем  новый через makeResponse 

Dim weekD As Integer

Dim x As Variant

Do Until note Is Nothing

If note.form(0) = "Directions" Then

'Высчитываем дату отправления

Select Case note.GetItemValue("daysToFly")(0)

Case "Воскресенье"

weekD=1

Case "Понедельник"

weekD=2

Case "Вторник"

weekD=3

Case "Среда"

weekD=4

Case "Четверг"

weekD=5

Case "Пятница"

weekD=6

Case "Суббота"

weekD=7

Case "Ежедневно"

weekD=Cint(Weekday(Now))

End Select

Set dateNew=dateNow

Call dateNew.AdjustDay(14+weekD-Cint(Weekday(Now)))

'получаем коллекцию  наследников и в цикле проверяем, совпадают ли поле "dateToFly"

'вычисленная дата

Dim respCollection As NotesDocumentCollection

Set respCollection=note.Responses

Dim dateTemp As NotesDateTime

Dim docResp As NotesDocument

Set docResp = respCollection.getfirstdocument

Do Until docResp Is Nothing

Set dateTemp = New NotesDateTime(docResp.GetItemValue("dateToFly")(0))

If dateTemp.TimeDifference(dateNew)=0 Then Goto EndLoop

Set docResp = respCollection.GetNextDocument(docResp)

Loop

'если все хорошо, то создаем  документ

Set memo = New NotesDocument(db)

memo.form="Flights"

Call memo.MakeResponse(note)

Call memo.AppendItemValue("dateToFly",dateNew)

Call memo.ComputeWithForm(False,False)

Call memo.Save(True,False)

EndLoop:

 

End If

Set note=collection.GetNextDocument(note)

Loop

 

End Sub

 

4.4 Тестирование  базы данных

 

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

При открытии базы данных по умолчанию открывается набор  фреймов «main», при этом открывается  и вид «Пассажиры», который является видом по умолчанию в базе данных (рис. 1):

 

Рисунок 3 -  Внешний вид базы данных “Аэропорт»

 

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

Рисунок 4 – Форма документа  проданного билета

 

Для запуска агента вручную  щелкаем по кнопке «Создать автоматически»

Информация о работе Отчет по практике на ИП «IBA-Гомель»