МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ
РОССИЙСКОЙ ФЕДЕРАЦИИ
Государственное образовательное учреждение
высшего профессионального образования
Сибирский государственный индустриальный университет
Кафедра
информационных технологий в металлургии.
Пояснительная записка
к курсовой работе
Выполнил: ст.гр. ИСП-06
Козлов А.В.
Проверил: Кожемяченко В.И.
Новокузнецк 2007.
Задание: Дан цилиндрический сосуд, имеющий каналы подвода и отвода воды. Каждый канал подвода характеризуется секундным объемом воды; каждый канал отвода – диаметром и высотой расположения в сосуде. Построить отображение изменения уровня воды в сосуде во времени с выводом информации о текущем расходе воды через каждый из отводных каналов. Предусмотреть добавление и удаление каналов, изменение их характеристики без остановки процесса расчета.
Постановка задачи. В соответствии с условиями задачи требуется применение средств графического отображения, а также компонент класса “TTimer”, для организации непрерывного отображения изменения уровня воды в сосуде. Для добавления и редактирования каналов буду использовать диалоговые окна.
Выделение классов. Для решения поставленной задачи опишу класс, характеризующий отдельно взятый подводимый и отводимый каналы (TKanal). Экземпляры данных классов должны уметь вырисовывать и стирать себя на панели рисования и взаимодействовать с другими экземплярами своего класса. Для этого они должны знать место своего расположения в виде координат своей позиции(подводящий канал) и высоты расположения в сосуде (отводящий канал), а также уметь определять свободно данное место или нет. Также этим классам отводится свойство хранения информации по секундному объему подводимой воды(подводящий канал), высоте расположения в сосуде и диаметру(отводящий канал). Таким образом любой канал, имея свои собственные координаты на поверхности рисования, сможет получить информацию о “занятости” данной позиции и эта информация не будет дублироваться.
Класс канала опишем следующим образом:
TKanal=class
public
V,poz:integer;
key:boolean;
Canvas:TCanvas;
constructor Create(NewKey:boolean; NewPoz,NewV:integer; NewCanvas:TCanvas);
destructor Destroy; override;
procedure show(color1,color2 : tcolor);
procedure hide;
end;
где: V,Poz – Для подводящего канала это позиция его в сосуде и секундный объем подводящей воды.
Key - Логическая переменная определяющая тип канала.
Сanvas – Ссылка на поверхность рисования.
Метод constructor Create служит для создания нового канала, задание типа канала, значения секундного объема подводимой воды и позиции канала, а также рисование на панели рисования.
constructor TKanal.Create(NewKey:boolean; NewPoz,NewV:integer; NewCanvas:TCanvas);
BEGIN
inherited Create;
Key:=NewKey;
Poz:=NewPoz;
V:=NewV;
Canvas:=NewCanvas;
show(clBlack,clBlue);
END;
Метод destructor Destroy позволяет разрушить и стиреть канал при его удалении.
destructor TKanal.Destroy;
BEGIN
Hide;
inherited destroy;
END;
Метод procedure show(color1,color2 : tcolor) служит для рисовании канала на панели рисования.
procedure TKanal.show(color1,color2 : tcolor);
BEGIN
Canvas.Pen.color:=color1;
Canvas.Brush.color:=color2;
if key then
begin
Canvas.Rectangle(16,(poz-1)*30+50,50,poz*30+40);
end
else
begin
Canvas.Rectangle(250,350-poz,275,350-poz-V);
end;
END;
Метод procedure Hide служит для стирания канала с поверхности рисования.
procedure TKanal.hide;
BEGIN
show(clSilver,clSilver);
END;
Выделение перечня наиболее важных структур данных. Наиболее важными при работе являются экземпляр класса TKanal, а также список класса TListBox, хранящий информацию о всех экземпляров класса TKanal, используемых в текущий момент. Все объекты создаются в момент загрузки программы. Можно также отметить переменные V, H служащие для хранения информации об объеме воды в сосуде и высоты водяного столба в сосуде; а также массивы z и zz которые показывают занято ли данное место другим каналом или нет.
Построение алгоритма реализации. При работе программы может возникнуть четыре основных события: добавление, удалении и редактирование свойств подводящих и отводящих каналов, а также изменение уровня воды в сосуде. Рассмотрим алгоритм изменение уровня воды в сосуде, который выполняется при каждом срабатывании таймера.
procedure TForm1.Timer1Timer(Sender: TObject);
var r,x,z,y,st,ss,s,poz,dV:real;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.