Автор работы: Пользователь скрыл имя, 22 Июня 2012 в 11:56, курсовая работа
Центр эксплуатации объектов наземной космической инфраструктуры осуществляет метеорологическое, аэрологическое и астрономо-геодезическое обеспечение выполнения космических программ на космодроме Байконур. Метеорологическое и астрономо-геодезическое обеспечение является одним из основных видов оперативного обеспечения при выполнении космических программ, полётов авиации и имеет своей целью создание условий для обеспечения безопасности их проведения. Метеорологический комплекс создан в 2009 году на базе отделов метеорологического и астрономо-геодезического обеспечения, в связи с расширением технологических функций по направлениям метеорологического и астрономо-геодезического обеспечения подготовки и запуска всех типов РКН, проведения метеорологического мониторинга района комплекса «Байконур», обеспечения полётов авиации на комплексе «Байконур».
Введение
Основная часть
1 Анализ объекта автоматизации и разработка ТЗ на проектирование АС
1.1 Анализ деятельности отдела метеорологического обеспечения
1.1.1 Специализированные функции
1.1.2 Направления ответственности комплекса
1.2 Анализ существующей технологии
1.3 Цель проектирования
2 Диагностический анализ объекта автоматизации
3 Разработка системного проекта и ТЗ на проектирование и ТЗ на разработку программного продукта
3.1.1 Общие сведения
3.1.2 Назначение системы
3.1.3 Требования к системе
3.1.3 Требования к системе
3.2 Разработка требований к функциям, выполняемым системой
3.2.1 Среда функционирования системы
3.2.3 Краткая характеристика системы
3.2.4 Основные решаемые задачи
3.2.5 Метеостанция АМС-2000
3.3 Нефункциональные требования
3.3.1 Практичность
3.3.2 Требования к надежности
3.4 Ограничения проектирования
3.4.1 Требования к видам обеспечения
3.4.2 Требования к языкам программирования
3.4.3 Требования к защите информации
3.5 Интерфейсы
3.5.1 Требования к элементам пользовательского интерфейса
3.5.2 Общие требования к пользовательским интерфейсам
4 Математические и эвристические модели принятия решений для проектируемой системы.
4.1 Оценка прогноза температуры воздуха
4.2 Оценка прогноза осадков
4.3 Оценка прогноза ветра
5 Разработка модели проектируемой системы
5.1 Схема сети «МЕТЕО» метеорологического комплекса «Космического центра «Южный»
5.2 Функциональные модели и модели данных проектируемой АС
5.2.1 Разработка модели
5.2.1.1 Краткая характеристика системы
6 Разработка модели базы данных
6.1 Требования к информации
6.1.1 Данные о работе системы
8 Разработка диалогового интерфейса пользователя
8 Разработка алгоритмов, реализация и отладка компонент программного обеспечения АС.
8.1.1 Структура программы сервер
8.1.2 Дополнительная информация
8.1.3 Структура программы клиент
8.2 Сетевые компоненты
8.3 Компонент TIMER
8.4 Создание Frame
Глоссарий
Заключение
Список используемых источников
Приложение А
Приложение Б
Приложение В
Приложение Г
Приложение Д
Приложение Е
Приложение Ж
Начать проектирование нового фрейма можно командой File | New Frame или командой File | New и выбором пиктограммы Frame на странице New окна Депозитария. В обоих случаях перед вами откроется окно фрейма, подобное окну формы, а в Редакторе Кода вы увидите текст заготовки модуля фрейма:
unit Unit2;
Interface // Открытый интерфейс фрейма
{Список подключаемых модулей}
uses Windows, Messages, SysUtils, Classes, Graphics,
Controls, Forms, Dialogs;
{Объявление класса фрейма}
type
TFrame2 = class(TFrame)
{Сюда Delphi помещает объявления компонентов,
размещаемых на фрейме. Не добавляйте сюда ничего вручную}
private // Закрытый раздел класса
{Private declarations}
{Сюда могут помещаться объявления переменных, функций
и процедур, включаемых в класс фрейма, но не доступных
для других модулей}
public // Открытый раздел класса
{Public declarations}
{Сюда могут помещаться объявления переменных, функций
и процедур, включаемых в класс фрейма и доступных для
других модулей}
end;
{Сюда могут помещаться объявления типов, констант,
переменных, функций и процедур, к которым будет
доступ из других модулей, но которые не включаются
в класс фрейма. Они будут едины для всех объектов
фреймов}
implementation // Реализация модуля
{$R *.DFM}
{Сюда могут помещаться предложения uses, объявления
типов, констант, переменных, к которым не будет
доступа из других модулей. Они будут едины для
всех объектов фреймов. Тут же должны быть реализации
всех объявленных в разделе interface функций и
процедур, а также могут быть реализации любых
дополнительных, не объявленных ранее функций и процедур}
end.
Комментарии в приведенном тексте поясняют, куда и что можно помещать в модуле. Те переменные, объявления которых вы поместите в объявление класса, будут индивидуальны для каждого объекта фрейма. Объявления имеют обычный для класса вид. Например:
A: integer;
Переменные, объявления которых вы поместите вне объявления класса, будут едины для всех объектов фрейма. Они объявляются как обычные переменные. Например:
var A: integer;
На фрейм вы можете так же, как на форму, переносить и размещать любые компоненты, устанавливать их свойства, писать обработчики их событий и т.п.
Давайте создадим чисто тестовый фрейм, чтобы на его примере продемонстрировать проектирование фрейма, его использование, доступ к различным его элементам и наследование свойств.
Начните новое приложение и выполните команду File | New Frame. Перенесите на фрейм групповую панель GroupBox. Перенесите на панель метку Label и три кнопки Button. Разместите все эти компоненты примерно так, как показано на рисунке 9, изменив соответственно их надписи (Caption) и назвав кнопки соответственно BSetup, BInc, BShow.
|
Рисунок 9 - Пример фрейма
Давайте введем в наш модуль в разных местах объявления целых переменных, а в обработчики событий кнопок введем операторы, манипулирующие ими и отображающие результат в метке. Модуль фрейма может приобрести следующий вид:
unit UFrame;
interface
uses Windows, Messages, SysUtils, Classes, Graphics,
Controls, Forms, Dialogs, StdCtrls;
type
TFrame2 = class(TFrame)
GroupBox1: TGroupBox;
BSetup: TButton;
Label1: TLabel;
BInc: TButton;
BShow: TButton;
procedure BSetupClick(Sender: TObject);
procedure BIncClick(Sender: TObject);
procedure BShowClick(Sender: TObject);
private
{ Private declarations }
{Переменная А видна только в данном модуле}
A: integer;
public
{ Public declarations }
{Переменная В видна в других модулях через объект фрейма}
B:integer;
end;
{Переменная С видна в других модулях}
var C:integer;
implementation
{$R *.DFM}
{Переменная D видна только в данном модуле}
var D:integer;
procedure TFrame2.BSetupClick(Sender: TObject);
begin
A:=1;
B:=1;
C:=1;
D:=1;
Label1.Caption := 'A=' + IntToStr(A) +
' B=' + IntToStr(B) +
' C=' + IntToStr(C) +
' D=' + IntToStr(D);
end;
procedure TFrame2.BIncClick(Sender: TObject);
begin
Inc(A);
Inc(B);
Inc(C);
Inc(D);
Label1.Caption := 'A=' + IntToStr(A) +
' B=' + IntToStr(B) +
' C=' + IntToStr(C) +
' D=' + IntToStr(D);
end;
procedure TFrame2.BShowCiick(Sender: TObject);
begin
Label1.Caption := 'A='+IntToStr(A) +
' B=' + IntToStr(B) +
' C=' + IntToStr(C) +
' D=' + IntToStr(D);
end;
end.
В модуле введены переменные:
- А — введена в закрытый раздел класса; видна только в процедурах данного класса в этом модуле; независимые друг от друга переменные А будут содержаться в каждом объекте фрейма.
- В — введена в открытый раздел класса; в других модулях можно получить доступ к В через имя объекта фрейма; независимые друг от друга переменные В будут содержаться в каждом объекте фрейма.
- С — введена в открытый интерфейс вне описания класса; доступна в других модулях; имеется единственный экземпляр С, независимо от числа объектов фреймов.
- D — введена в реализацию класса; доступна только в данном модуле; имеется единственный экземпляр D, независимо от числа объектов фреймов.
Введенные в модуль обработчики щелков на кнопках обеспечивают сброс всех переменных на 1 (процедура TFrame2.BSetupClick), увеличение всех переменных на 1 (процедура TFrame2.BIncClick), отображение текущего состояния переменных (процедура TFrame2.BShowClick).
Теперь давайте разместим несколько экземпляров фрейма на форме. Перейдите в основную форму приложения и выберите в палитре компонентов Frame (первая кнопка на странице Standard). Появится диалоговое окно, в котором будет спрашиваться, какой фрейм вы хотите разместить на форме. Выберите ваш фрейм Frame2 и он появится на форме. Можете отбуксировать его, как обычный компонент, в нужное место. Повторите эту операцию еще раз и разместите на форме второй фрейм. Добавьте кнопку и метку, задав ее свойство Align равным alTop и свойство Alignment равным taCenter.
Вы получили форму, содержащую два объекта — фрейма. Можете изменить какие-то свойства объектов. Например, изменить надписи (Caption) групповых панелей GroupBox (см. рис. 10).
Рисунок 10 - пример панели GroupBox
После того, как вы изменили эти свойства, они перестают наследоваться из класса фрейма. А остальные свойства продолжают наследоваться. В этом легко убедиться. Перейдите в модуль фрейма и измените у фрейма стиль шрифта (Font.Style) на жирный. Вы увидите, что в обоих объектах главной формы шрифт тоже станет жирным. Верните во фрейме шрифт на обычный и он синхронно изменится в объектах. А теперь установите в одном из фреймов на форме шрифт жирным. Повторив после этого эксперимент с изменением шрифта в исходном фрейме, вы увидите, что теперь шрифт меняется только в том объекте формы, в котором вы его не изменяли вручную. Таким образом объекты наследуют только те свойства, которые не были в них установлены вручную.
Теперь давайте напишем обработчик щелчка на кнопке главной формы. Прежде всего взгляните на текст модуля этой формы. Вы увидите, что в нем в описании класса формы появились две строки:
Frame21: TFrame2;
Frame22: TFrame2;
Это объявления объектов фреймов. Все компоненты, размещенные на фреймах, напрямую из модуля формы не видны. Доступ к ним можно получить только через объекты Frame21 и Frame22. Имена компонентов, размещенных во фреймах, локальные. Несмотря на то, что во фреймах имеются кнопки с именами BShow, вы можете назвать тем же именем кнопку на форме.
Поместите в обработчик щелчка на этой кнопке оператор
Label1.Caption := 'В(Frame21)='+IntToStr(
' B(Frame22)='+IntToStr(Frame22.
' C=' + IntToStr(C);
Он отображает в метке Label1 значения переменных В объектов фреймов и значение переменной С класса фрейма. Значения переменных А и D отобразить невозможно, поскольку эти переменные недоступны из внешних модулей. Если вы попытаетесъ отобразить их значения, компилятор выдаст сообщение об ошибке.
Сохраните ваше приложение, оттранслируйте его и выполните. Манипулируя кнопками вы легко сможете убедиться, что переменные А и В независимы для каждого фрейма, а переменные С и D одинаковы. Точнее оба фрейма оперируют с одними и теми же переменными С и D.
Рассмотренный фрейм не имел никакого практического значения. Давайте построим более полезный пример. Во многих диалогах при установке различных опций фигурирует фрагмент, фрейм которого показан на рис. 7.11. Фрагмент включает в себя панель GroupBox, окно редактирования, в котором пользователь может написать имя файла, и кнопку Обзор, которая позволяет выбрать файл в стандартном диалоге Windows открытия файла. Если путь к файлу длинный, то полное имя файла с путем может не помещаться в окне редактирования. Поэтому полезно для него предусмотреть всплывающее окно, которое отображало бы полное имя файла вместе с путем и всплывало бы, если пользователь задержал над ним курсор мыши.
Давайте построим подобный фрейм и опробуем его в работе. Начните новое приложение и выполните команду File | New Frame. Перенесите на фрейм групповую панель GroupBox. Перенесите в эту панель окно редактирования Edit, кнопку Button, диалог OpenDialog и компонент ApplicationEvents — перехватчик событий приложения. Расположите компоненты примерно так, как показано на рисунке 9.
Рисунок 11 – расположение компонентов
Задайте в свойстве Filter диалога OpenDialog какой-то фильтр файлов, например, «все файлы|*.*». Свойство ShowHint (показать ярлычок подсказки) в компонентах Edit и Button установите в true. В кнопке Button кроме того можете написать текст подсказки Hint, например, «Выбор файла|Выбор файла из каталога».
В обработчик события OnShowHint компонента ApplicationEvents занесите оператор:
if HintInfo.HintControl = Edit1 then
begin
HintStr := Edit1.Text;
ApplicationEvents1.
end;
Этот оператор в момент, когда должен отображаться ярлычок, проверяет, не является ли источником этого события (HintInfo.HintControl) окно редактирования Edit1. Если да, то текст ярлычка (HintStr) подменяется текстом, содержащимся в окне редактирования и принимаются меры (метод CancelDispatch), чтобы это событие не обрабатывалось другими компонентами ApplicationEvents, которые могут присутствовать в приложении. Пояснение всех этих операций см. в разделе 9.4.
Теперь введите в модуль фрейма глобальную переменную FileName типа string, в которой будет отображаться выбранный файл. В обработчик щелчка на кнопке введите оператор
if OpenDialog1.Execute then
begin
Edit1.Text := OpenDialog1.FileName;
FileName := OpenDialog1.FileName;
end;
который вызывает диалог открытия файла и помещает в окно редактирования Edit1 и в переменную FileName имя файла, выбранного пользователем, вместе с путем к нему.
В обработчик события OnExit компонента Edit1 поместите оператор
FileName := Edit1.Text;
заносящий в переменную FileName имя файла, если пользователь не пользовался диалогом, а просто написал в окне имя файла.
Программирование фрейма закончено. Теперь создайте тестовую программу, использующую этот фрейм. Предположим, что вам нужно разместить на форме два фрагмента, описанных вами во фрейме. Перейдите в основной модуль вашего приложения и разместите на форме так, как вы уже делали, два объекта вашего фрейма (рис.12).
|
| |
|
|
Рисунок 12 – готовый frame
Теперь вы можете поменять что-то в размещенных на форме объектах фреймах, изменить надписи групповых панелей, шрифты и т.п. Сохраните ваше приложение вместе с модулем фрейма, оттранслируйте его и проверьте в работе.
Вы разработали достаточно полезный фрейм и хотели бы его сохранить для использования в будущих приложениях. Это легко сделать, внеся его в Депозитарий. Щелкните на своем фрейме правой кнопкой мыши и выберите из всплывшего меню раздел Add To Repository. Перед вами откроется окно, представленное на рис. 13. В верхнем его окне редактирования Title вы должны написать название вашего фрейма — подпись под его пиктограммой при входе в Депозитарий. В следующем окне — Description можете написать более развернутое пояснение. Его может увидеть пользователь, войдя в Депозитарий, щелкнув правой кнопкой мыши и выбрав во всплывшем меню форму отображения View Details. В выпадающем списке Page вы можете выбрать страницу Депозитария, на которой хотите разместить пиктограмму своего фрейма. Впрочем, вы можете указать и новую страницу с новым заголовком. В результате она появится в Депозитарии.
Информация о работе Автоматизированная система управления метеорологических станций