Учебно-методический комплекс по дисциплине технология программирования, 5 курс (название)

Вид материалаУчебно-методический комплекс

Содержание


Вычислительная техника
Учебно-методический комплекс по дисциплине
Федеральное агентство железнодорожного транспорта
Вычислительная техника
Рабочая учебная программа по дисциплине
Цель изучения дисциплины
Требования к уровню освоения содержания дисциплины
Объём дисциплины и виды учебной работы
Всего часов на дисциплину
4.Содержание дисциплины
5. Лабораторные работы (лабораторный практикум)
6. Тематика курсовой Работы и методические указания по её выполнению
7. Самостоятельная работа
8. Учебно-методическое обеспечение дисциплины
9. Материально-техническое и/или информационное обеспечение дисциплины
Методические указания для студентов
2. Лабораторные работы
Лабораторная работа N 3.
X1[i]:=X1[i]+U; Y1[i]:=Y1[i]+V
Лабораторная работа N 4.
...
Полное содержание
Подобный материал:
  1   2   3

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ЖЕЛЕЗНОДОРОЖНОГО ТРАНСПОРТА

государственное образовательное учреждение высшего профессионального образования

"МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ПУТЕЙ СООБЩЕНИЯ»

(МИИТ)






УТВЕРЖДЕНО:




Проректором по учебно-методической работе – директором РОАТ




«_25___»____01__________ 2011 г.



Кафедра______________ Вычислительная техника________________________

(название кафедры)

Автор Носиловский Е.А.., к. ф.м..н., доцент_____________________________________

(ф.и.о., ученая степень, ученое звание)


УЧЕБНО-МЕТОДИЧЕСКИЙ КОМПЛЕКС ПО ДИСЦИПЛИНЕ


Технология программирования, 5 курс

(название)

__________________________________________________________________

Специальность/направление:_ 230101 (ЭВМ)___


(код, наименование специальности /направления)

___________________________________________________________________





Утверждено на заседании

Учебно-методической комиссии РОАТ

Протокол №____2____

«_20_» _января______ 2011___ г


Утверждено на заседании кафедры

Протокол №_27______

«_18__» __января___________ 2011__ г.





Москва 2011 г.


Автор-составитель:

Канд. физ.мат. наук, доц. Е.А.Носиловский


Учебно-методический комплекс составлен в соответствии с Государственным образовательным стандартом высшего профессионального образования в соответствии с Государственными требованиями к минимуму содержания и уровню подготовки уровню подготовки специалистов уровню подготовки инженера по специальностям 230101 (ЭВМ).


Дисциплина входит в национально-региональный (вузовский) компонент общепрофессиональных дисциплин для специальности ЭВМ и является обязательной для изучения.


ФЕДЕРАЛЬНОЕ АГЕНТСТВО ЖЕЛЕЗНОДОРОЖНОГО ТРАНСПОРТА

государственное образовательное учреждение высшего профессионального образования

"МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ПУТЕЙ СООБЩЕНИЯ»

(МИИТ)



СОГЛАСОВАНО:

УТВЕРЖДАЮ:

Кафедра “Вычислительная техника”

Проректор по учебно-методической работе – директор РОАТ

Зав. кафедрой _________Горелик В.Ю.

(подпись, Ф.И.О.)

_____________Апатцев В.И.

(название института, подпись, Ф.И.О.)

«_____»______________ 20 г.

«_____»______________ 20 г.



Кафедра______________ Вычислительная техника________________________

(название кафедры)

Автор ___Носиловский Е.А.., к.ф.м..н., доцент__________________________________

(ф.и.о., ученая степень, ученое звание)


РАБОЧАЯ УЧЕБНАЯ ПРОГРАММА ПО ДИСЦИПЛИНЕ


Технология программирования, 5 курс

(название)

__________________________________________________________________


Специальность/направление:_ 230101 (ЭВМ)___


(код, наименование специальности /направления)

___________________________________________________________________





Утверждено на заседании

Учебно-методической комиссии РОАТ

Протокол №____2____

«_20_» _января______ 2011___ г

Председатель УМК ______________Горелик А.В.

(подпись, Ф.И.О.)

Утверждено на заседании кафедры

Протокол №__27_____

«_18__» ___января__________ 2011__ г.


Зав. кафедрой __________Горелик В.Ю.

(подпись, Ф.И.О.)



Москва 2011 г.


Программа составлена в соответствии с Государственными образовательными стандартами высшего профессионального образования в соответствии с государственными требованиями к минимуму содержания и уровню подготовки инженера по специальностям 230101 (ЭВМ).


Составил: канд. ф.м. наук, доц. Е.А.Носиловский


  1. ЦЕЛЬ ИЗУЧЕНИЯ ДИСЦИПЛИНЫ


Целью преподавания дисциплины «Технология программирования» студентам специальности 220100 является приобретение знаний для создания Windows-приложений в среде программирования Delphi.

Дисциплина базируется на знании курса “Программирование на языке высокого уровня” и является базовой для других дисциплин специальности.


  1. ТРЕБОВАНИЯ К УРОВНЮ ОСВОЕНИЯ СОДЕРЖАНИЯ ДИСЦИПЛИНЫ


Изучив дисциплину, студент должен:

1.иметь представление о современном программном обеспечении;

2.знать среду программирования Delphi;

3. уметь использовать методы визуального и объектно-ориентированного программирования.



  1. ОБЪЁМ ДИСЦИПЛИНЫ И ВИДЫ УЧЕБНОЙ РАБОТЫ




Вид учебной работы

Количество часов по формам обучения

Очная

Очно-заочная

Заочная

№№ семестров










Аудиторные занятия:







24

Лекции







12

Практические и семинарские занятия







-

Лабораторные работы (лабораторный практикум) и т.д.







12

Индивидуальные занятия










Самостоятельная работа







50

ВСЕГО ЧАСОВ НА ДИСЦИПЛИНУ







98

Текущий контроль (вид текущего контроля и количество, №№ семестров)










Курсовая работа (№ семестра)







20

Виды промежуточного контроля(экзамен, зачет) - №№ семестров









Зачет,

Экзамен



4.СОДЕРЖАНИЕ ДИСЦИПЛИНЫ


Форма обучения – заочная


Названия разделов и тем

Всего часов по учебному плану

Виды учебных занятий

Индив.

Занятия

Самостоят. Работа

Аудиторные занятия, в том числе

Лекции

Практ. занятия, семинары

Лаб. работы

(практикумы)

Раздел 1. Объектно-ориентированное программирование в среде Object Pascal.

1.Модули, их структура. Типы модулей в Delphi




0.5













2.Понятие класса и объекта (инкапсуляция, наследование, полиморфизм).




1










10

3.Структура класса (поля, методы, свойства). Конструктор и деструктор.




1













Раздел 2. Интегрированная среда разработки Delphi.

1. Главное окно. Конструктор форм. Инспектор объектов. Редактор текстов. Настройка окон IDE. Менеджер проекта.




0.5













2. Библиотека визуальных компонентов. Настройка палитры компонентов.




1













3.Понятие события. Обработчики событий. События и сообщения.




1










10

4.Основы визуального программирования (модификация формы, размещение нового компонента, настройка свойств компонентов).




0.5













Раздел 3. Разработка приложений для Windows в Delphi.

1 Пользовательский интерфейс приложений (главное меню, контекстное меню, текстовые компоненты, диалоговые окна, списки, переключатели). Многооконные приложения. Управление формами, модальные формы.




0.5













2. Понятие события. Обработчики событий. События и сообщения




1




4




10

3.Графические возможности Delphi . Мультимедийные возможности Delphi (компонентTMediaPlayer).




1




4




10

4.Отладка программ в среде Delphi. Обработка ошибок и

исключительных ситуаций.




0.5













Раздел 4. Базы данных в Delphi.

1. Понятие базы данных. Архитектура базы данных в Delphi. Database Desktop. BDE Administrator. Создание альянса.




1













2.Компоненты для доступа к базам данных.




1













3.Просмотр и выбор информации из базы данных (связь таблиц, SQL-запросы).





1




4




10



5. Лабораторные работы (лабораторный практикум)


№№ названия разделов и тем

Цель и содержание лабораторной работы

Результаты лабораторной работы

Лабораторная работа № 1 Разработка пользовательского интерфейса в Delphi.

Приложения, управляемые событиями (обработка событий клавиатуры и мыши, перетаскивание объектов).

Реализация пользовательского интерфейса .

Программа.

Лабораторная работа № 2. Графические приложения в Delphi

Графические возможности Delphi . Мультимедийные возможности Delphi (компонент TMediaPlayer).

Использование графических

возможностей Delphi.

Программа.

Лабораторная работа № 3.Работа в Delphi с базами данных.

Просмотр и выбор информации из базы данных (связь таблиц, SQL-запросы).

Использование возможностей

Delphi для работы с базами

Данных.

Программа.



6. Тематика курсовой Работы и методические указания по её выполнению


В курсовой работе предлагается разработать приложениe с использованием контекстного меню, а также использовать компонент Timer в сочетании с графическими возможностями Delphi. Кроме того предлагается

использовать компоненты Delphi для работы с базами.

Курсовая работа представляется на проверку в электронном виде на CD диске, который должен содержать:
  1. Пояснительную записку;
  2. Развернутые ответы на поставленные вопросы.

Пояснительная записка должна включать в себя:
  1. Титульный лист, который должен содержать данные студента и его учебный шифр. Он представляется на проверку в напечатанном виде на стандартном листе формата А4;
  2. Задание на курсовую работу;
  3. Список использованной литературы.



7. САМОСТОЯТЕЛЬНАЯ РАБОТА



Разделы и темы для самостоятельного изучения

Виды и содержание самостоятельной работы

Понятие класса и объекта (инкапсуляция, наследование, полиморфизм).

Проработка учебного материала.

Понятие события. Обработчики событий. События и сообщения

Проработка учебного материала.

Понятие события. Обработчики событий. События и сообщения

Проработка учебного материала.

Графические возможности Delphi . Мультимедийные возможности Delphi (компонент TMediaPlayer).

Проработка учебного материала.

Просмотр и выбор информации из базы данных (связь таблиц, SQL-запросы).

Проработка учебного материала.



8. УЧЕБНО-МЕТОДИЧЕСКОЕ ОБЕСПЕЧЕНИЕ ДИСЦИПЛИНЫ


Литература


Основная:

  1. Флёнов М.Б. Библия Delphi. Изд.2-е, СПБ: Изд-во “БХВ-Петербург”, 2008г.
  2. Бобровский С. Delphi 7. Учебный курс. М.: Изд-во “Питер”, 2006г.



Дополнительная:

  1. Хомоненко А., Гофман В Хомоненко А., Гофман В., Delphi 7 в подлиннике.. М.: Изд-во “Питер”, 2003
  2. 7 в подлиннике.. М.: Изд-во “Питер”, 2005г.



  1. Хомоненко А., Гофман В., Delphi 7 в подлиннике.. М.: Изд-во “Питер”, 2003


9. Материально-техническое и/или информационное обеспечение дисциплины

  1. Персональный компьютер

2. Среда программирования Delphi.


МЕТОДИЧЕСКИЕ УКАЗАНИЯ ДЛЯ СТУДЕНТОВ


1. Общие указания


Изучение дисциплины "Технология программирования" студентами - заочниками специальности ЭВМ на V курсе сопровождается выполнением лабораторных работ 1 - 4, а также курсовой работы в среде программирования Delphi. Необходимые сведения изложены, например, в [1 - 2].


2. Лабораторные работы


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

Лабораторная работа N 1.

Цель работы - разработка главного меню в среде Delphi.

Задание. Создать в среде Delphi приложение, при запуске которого появляется главное меню вида :


Пункт 1

Пункт 2

Выход


с числом подпунктов согласно указанной ниже таблице. При вызове подпункта в центре формы должно появляться сообщение :

Студент <ФИО> вызвал пункт <номер пункта> подпункт <номер подпункта>.


На главной форме приложения поместить 2 кнопки :

"Очистить экран" "Выход"

Номер варианта выбрать согласно последней цифре учебного шифра.


Таблица 1


№ варианта

Число подпунктов в 1-м пункте

Число подпунктов во 2-м пункте

0

4

4

1

2

4

2

4

2

3

2

2

4

2

3

5

3

2

6

2

5

7

5

2

8

3

4

9

4

3



П р и м е р

Разработать приложение с тем же условием, что и в задании, причем число подпунктов в 1-м и 2-м пунктах равно трём.

Ниже следует листинг приложения.


{ Модуль Lb1.dpr }


program Lb1;


uses

Forms,

Lab1 in 'Lab1.pas' {Form1};


{$R *.RES}


begin

Application.Initialize;

Application.CreateForm(TForm1, Form1);

Application.Run;

end.


{ Модуль Lab1.pas }


unit Lab1;


interface


uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Menus;


type

TForm1 = class(TForm)

MainMenu1: TMainMenu;

N11: TMenuItem;

N21: TMenuItem;

N1: TMenuItem;

N12: TMenuItem;

N22: TMenuItem;

N31: TMenuItem;

N13: TMenuItem;

N23: TMenuItem;

N32: TMenuItem;

Label1: TLabel;

Button1: TButton;

Button2: TButton;

procedure N12Click(Sender: TObject);

procedure N22Click(Sender: TObject);

procedure N31Click(Sender: TObject);

procedure N13Click(Sender: TObject);

procedure N23Click(Sender: TObject);

procedure N32Click(Sender: TObject);

procedure N1Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;


var

Form1: TForm1;


implementation


{$R *.DFM}


procedure TForm1.N12Click(Sender: TObject);

begin

Label1.Caption := 'Студент Жуков : Работает пункт 1 подпункт 1';

end;


procedure TForm1.N22Click(Sender: TObject);

begin

Label1.Caption := 'Студент Жуков : Работает пункт 1 подпункт 2';

end;


procedure TForm1.N31Click(Sender: TObject);

begin

Label1.Caption := 'Студент Жуков : Работает пункт 1 подпункт 3';

end;


procedure TForm1.N13Click(Sender: TObject);

begin

Label1.Caption := 'Студент Жуков : Работает пункт 2 подпункт 1';

end;


procedure TForm1.N23Click(Sender: TObject);

begin

Label1.Caption := 'Студент Жуков : Работает пункт 2 подпункт 2';

end;


procedure TForm1.N32Click(Sender: TObject);

begin

Label1.Caption := 'Студент Жуков : Работает пункт 2 подпункт 3';

end;


procedure TForm1.N1Click(Sender: TObject);

begin

Form1.Close;

end;


procedure TForm1.Button1Click(Sender: TObject);

begin

Label1.Caption := '';

end;


procedure TForm1.Button2Click(Sender: TObject);

begin

Form1.Close;

end;


end.


Лабораторная работа N 2.


Цель работы - разработка приложений в Delphi, управляемых событиями.

Задание. Разработать приложение, после запуска которого происходит следующее :

I Вначале появляется заставка с картинкой. Эта картинка, в зависимости от номера варианта, исчезает

  1. либо после ввода пароля в соответствующее поле формы;
  2. либо по прошествии заданного времени.

II После исчезновения заставки форма в зависимости от номера варианта
  1. либо содержит редактор файлов;
  2. либо содержит окно с заданным текстом и кнопку, позволяющую менять шрифт, размер, окраску текста.

III Во время работы приложения прижатие и отпускание кнопки мыши на свободном месте формы в зависимости от номера варианта вызывает следующие события :

e) изменение окраски формы на красную (прижатие) и возврат к прежней окраске (отпускание);

f) пропорциональное уменьшение размеров формы (прижатие) и возврат к прежним размерам (отпускание);

g) изменение параметров шрифта надписей всех кнопок (прижатие) и возврат к прежнему шрифту (отпускание).

Номер варианта задания с условиями I, II, III выбрать согласно последней цифре учебного шифра из указанной ниже таблицы.


Таблица


№ варианта

Условие I

Условие II

Условие III

0

a

c

e

1

b

d

f

2

a

d

g

3

b

c

e

4

a

c

f

5

b

d

g

6

a

d

e

7

b

c

f

8

a

c

g

9

b

d

e



П р и м е р

Разработать приложение с тем же условием, что и в задании, причем, в качестве условий I, II, III выбрать соответственно a, d, f.

Ниже приведён листинг приложения.


{ Модуль Proj1.dpr }


program Proj1;


uses

Forms,

Un1 in 'Un1.pas' {Form1},

Mod2 in 'Mod2.pas' {DataModule2: TDataModule};


{$R *.RES}

begin

Application.Initialize;


Application.CreateForm(TForm1, Form1);

Application.CreateForm(TDataModule2, DataModule2);

Application.Run;

end.


{ Модуль Un1.pas }


unit Un1;


interface


uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

ExtCtrls, StdCtrls, Buttons;


type

TForm1 = class(TForm)

Memo1: TMemo;

Edit1: TEdit;

Label1: TLabel;

BitBtn1: TBitBtn;

Button1: TButton;

Button2: TButton;

Image1: TImage;

procedure Button2Click(Sender: TObject);

procedure BitBtn1Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure FormMouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure FormMouseUp(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

private

{ Private declarations }

public

{ Public declarations }

end;


var

Form1: TForm1;


Implementation


uses Mod2;

{$R *.DFM}


procedure TForm1.Button2Click(Sender: TObject);

begin

Close; { Окончить работу }

end;

procedure TForm1.BitBtn1Click(Sender: TObject);

begin

if Edit1.Text = 'Alex' then { Если пароль ввели

правильно }

begin

{ сделать видимыми компоненты,

до этого скрытые }

Button1.Show;

Button2.Show;

Memo1.Show;

{ и, наоборот,скрыть компоненты,

отслужившие уже}

BitBtn1.Hide;

Edit1.Hide;

Label1.Hide;

Image1.Hide;

end;

end;


procedure TForm1.FormCreate(Sender: TObject);

begin

{ Положение картинки Image1 на экране

должно совпадать с положением окна Memo1}

Image1.Top := Memo1.Top; Image1.Left := Memo1.Left;

Image1.Height := Memo1.Height;

Image1.Width := Memo1.Width;

{ В нач момент окно с текстом Memo1,

кнопки Button1 (Подобрать шрифт),

Button2 (Окончить работу) не должны

быть видны }

Memo1.Hide;

Button1.Hide;

Button2.Hide;

{ А вот картинка часов Image1,

метка внизу Label (Введите пароль),

поле Edit1 (для ввода пароля ('Alex'))

и кнопка BitBtn1 (Ok) должны быть видны }

Image1.Show;

Label1.Show; Edit1.Show; BitBtn1.Show;

end;


procedure TForm1.Button1Click(Sender: TObject);

{ Обработка щелчка на кнопке Button1 }

begin

with DataModule2.FontDialog1 do

begin

if not Execute then Exit;

Memo1.Font := Font;

end;

end;


procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

begin { Уменьшить размеры формы на 1/5 }

Height := Height - (Height div 5);

Width := Width - (Width div 5);

end;


procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

begin { Вернуться к прежним размерам формы }

Height := Height + (Height div 4);

Width := Width + (Width div 4);

end;


end.


{ Модуль Mod2.pas }


unit Mod2;


interface


uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type

TDataModule2 = class(TDataModule)

FontDialog1: TFontDialog;

private

{ Private declarations }

public

{ Public declarations }

end;


var

DataModule2: TDataModule2;


implementation


{$R *.DFM}


end.


Лабораторная работа N 3.


Цель работы - разработка приложений, использующих графические возможности Delphi.

Задание. Разработать приложение, установив ширину и высоту клиентской части формы равной, например, 600 пикселам. По форме приложения движется фигура в заданном направлении со скоростью 2 пиксела за каждые 0,1 сек (считается, что мелькание кадров с частотой 10 гц человеческий глаз не замечает и возникает иллюзия плавного движения). Выбрать фигуру и траекторию её движения согласно указанным ниже вариантам по предпоследней цифре учебного шифра.

Радиус окружности, в которую вписана фигура, принять равным, например, 60 пикселам.


Вариант 0

Окружность, находящаяся в центре формы, начинает движение в северо-западном направлении и уходит с формы.


Вариант 1

Окружность, находящаяся в центре формы, начинает движение в северо-западном направлении и, отразившись от угла формы, движется в обратном направлении. Затем так же отражается от юго-восточного угла и т.д.


Вариант 2

Квадрат, находящийся в центре формы, начинает движение в северо-восточном направлении и уходит с формы.


Вариант 3

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


Вариант 4

Полукруг с дугой сверху, находящийся в центре формы, начинает движение вверх и уходит с формы.


Вариант 5

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


Вариант 6

Полукруг с дугой справа, находящийся в центре формы, начинает движение вправо и уходит с формы.


Вариант 7

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


Вариант 8

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


Вариант 9

Правильный шестиугольник, вписанный в окружность, которая находится в левом верхнем углу, касаясь краёв формы, начинает бесконечное движение вдоль контура формы в направлении против часовой стрелки.


П р и м е р


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


Ниже приведён листинг приложения.


{ Модуль Prmr9.dpr }


program Prmr9;


uses

Forms,

Prim9 in 'Prim9.pas' {Form1};


{$R *.RES}


begin

Application.CreateForm(TForm1, Form1);

Application.Run;

end.


{ Модуль Prim9.pas }


unit Prim9;


interface


uses

SysUtils, WinTypes, WinProcs, Messages, Classes,

Graphics, Controls, Forms, Dialogs, ExtCtrls;


type

TForm1 = class(TForm)

Timer1: TTimer;

procedure FormPaint(Sender: TObject);

procedure Timer1Timer(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;


var

Form1: TForm1;


implementation

var X,Y,R,U,V:Integer; { Коорд.центра, радиус окружн.

и смещения фигуры на интервале таймера}

X1, Y1 : array[1..5] of Integer;{ Координаты

концов звезды }

{$R *.DFM}

procedure SDvig(Frm1: TForm1; P,Q,U,V: Integer);

{ Сдвигает фигуру. P,Q - текущие координаты центра

окр-сти, U,V - их сдвиги требуемые }

var i : Integer;

begin

WITH Frm1, Canvas DO

BEGIN

for i:=1 to 5 do

begin { Вычислим координаты концов звезды }

X1[i]:=X-trunc(R*Sin(i*6.2832/5));

Y1[i]:=Y-trunc(R*Cos(i*6.2836/5));

end;

{ Сотрём звезду, нарисовав её вторично

цветом фона }

Brush.Color:=Color; Pen.Color:=Color;


MoveTo(X1[1],Y1[1]); LineTo(X1[3],Y1[3]);

LineTo(X1[5],Y1[5]); LineTo(X1[2],Y1[2]);

LineTo(X1[4],Y1[4]); LineTo(X1[1],Y1[1]);

for i:=1 to 5 do

begin { Вычислим новые координаты концов

звезды }

X1[i]:=X1[i]+U; Y1[i]:=Y1[i]+V;

end;

{ Перерисуем звезду в новом месте }

Brush.Color:=Color; Pen.Color:=Font.Color;

MoveTo(X1[1],Y1[1]); LineTo(X1[3],Y1[3]);

LineTo(X1[5],Y1[5]); LineTo(X1[2],Y1[2]);

LineTo(X1[4],Y1[4]); LineTo(X1[1],Y1[1]);

END;

end;


procedure TForm1.FormPaint(Sender: TObject);

{ Рисует фигуру в нач.момент., и задаём нач.

значения переменных }

var i : Integer;

begin

WITH Sender AS TForm1, Canvas DO

BEGIN

{ Размеры пользовательской части экрана }

Form1.ClientWidth := 600; Form1.ClientHeight := 600;

{ Цвета фона и линий }

Brush.Color:=Color; Pen.Color:=Font.Color;

{ Начальные координаты окружности и её радиус }

R:=ClientHeight div 10; X:=R; Y:=R;

U:=0; V:=2; { Нач.смещения }

for i:=1 to 5 do

begin { Вычислим координаты концов звезды }

X1[i]:=R-trunc(R*Sin(I*6.2832/5));

Y1[i]:=R-trunc(R*Cos(i*6.2836/5));

end;

{ Рисуем звезду }

MoveTo(X1[1],Y1[1]); LineTo(X1[3],Y1[3]);

LineTo(X1[5],Y1[5]); LineTo(X1[2],Y1[2]);

LineTo(X1[4],Y1[4]); LineTo(X1[1],Y1[1]);

END;

end;


procedure TForm1.Timer1Timer(Sender: TObject);

{ По таймеру сдвигаем фигуру вдоль периметра против

часовой стрелки каждые 100 мсек = 0,1 сек }


begin

if (X-R+U<0) then begin U:=0; V:=2 end

else if (Y-R+V<0) then begin U:=-2; V:=0 end

else if (X+R+U>ClientWidth) then begin U:=0; V:=-2 end

else if (Y+R+V>ClientHeight) then begin U:=2; V:=0 end;

SDvig(Form1,X,Y,U,V); X:=X+U; Y:=Y+V;

end;

end.

Лабораторная работа N 4.


Цель работы - создание баз данных в Delphi.

Задание. Выбрать вариант согласно младшему разряду суммы двух последних цифр учебного шифра.

I Создать с помощью утилиты Database Desktop таблицу базы данных Paradox, имеющую структуру, указанную в варианте.

II Создать с помощью утилиты BDE Administrator псевдоним (альянс) созданной базы данных.

III Используя соответствующие компоненты, создать приложение для просмотра и редактирования таблицы базы данных, заполнив её не менее, чем 10-ю записями.

IV Создать приложение, составив соответствующий запрос, которое позволяет просматривать не все поля таблицы, а лишь первые четыре из них, упорядочив записи по возрастанию ключевого поля.


Вариант 0

Поля таблицы "ВУЗ" - ФИО, пол, дата рождения, курс, учебная группа, средний балл на последней сессии.


Вариант 1

Поля таблицы "Овощная база" - название овоща, дата поступления, начальное количество (в тоннах), текущая дата, оставшееся количество, качество.


Вариант 2

Поля таблицы "Районная поликлиника" - ФИО жителя района, пол, дата рождения, домашний адрес, телефон, номер полиса, число обращений, последнее заболевание.


Вариант 3

Поля таблицы "Отделение милиции" - ФИО нарушителя, пол, дата рождения, номер милицейского листа, домашний адрес, телефон, число приводов, число судимостей, виды правонарушений.


Вариант 4

Поля таблицы "Библиотека" - автор, название книги, год издания, число страниц, тираж, число печатных листов, дата поступления, стоимость.

Вариант 5

Поля таблицы "Кинотеатры" - название кинотеатра, адрес, телефон, число мест в зале, среднее число фильмов в день, средний доход в месяц.


Вариант 6

Поля таблицы "Авторемонтная мастерская" - марка автомобиля, номер, ФИО владельца, домашний адрес, телефон, вид ремонта, дата поступления, стоимость ремонта.


Вариант 7

Поля таблицы "Средняя школа" - ФИО учащегося, пол, дата рождения, домашний адрес, телефон, класс, средний балл за последнюю четверть.


Вариант 8

Поля таблицы "Магазин минеральных вод" - название минеральной воды, объём одной единицы товара, цена, количество единиц на складе, средний объём продажи в сутки.


Вариант 9

Поля таблицы "Автовокзал" - номер рейса, пункт назначения, время отправления, время прибытия, стоимость билета, вместимость автобуса.


3. Задание на курсовую работу


В курсовой работе следует разработать приложения в среде Delphi, указанные в задачах 1 - 3. Вариант 1-й задачи выбирается по последней, 2-й - по предпоследней цифрам учебного шифра. Вариант 3-й задачи выбирается согласно младшему разряду суммы двух последних цифр учебного шифра.

Задача 1


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

Структура меню выбирается согласно варианту из приведённой далее таблицы. Римская цифра в варианте указывает номер пункта меню, следующие за ней цифры в круглых скобках - это номера действий из списка, указанного ниже, соответствующие подпунктам данного пункта.

Поместив на форму и в модуль данных необходимые компоненты, а также выполнив соответствующие настройки, приведём упомянутый выше список :

  1. показать картинку;
  2. переместить картинку из верхней половины формы в нижнюю и наоборот;
  3. скрыть картинку;
  4. вызвать FontDialog1 для изменения шрифта в списке ListBox1;
  5. скрыть медиаплейер;
  6. вызвать PictureDialog1 для замены картинки;
  7. сменить цвет формы (серый - на красный, красный - на зелёный, зелёный - на серый);
  8. очистить содержимое ListBox1;
  9. показать медиаплейер;
  10. окончить работу.


Заголовки подпунктов пункта меню должны отвечать соответствующим действиям.

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

Таблица


Вариант 0

Вариант 1

Вариант 2

Вариант 3

I(0,1,2)

I(9)

I(1,8)

I(8)

II(3,4,5)

II(5,6,7,2,3)

II(7,2,4)

II(9)

III(6,7)

III(4,8,1,0)

III(6,5,3)

III(0,7,5,2)

IV(8)




IV(0,9)

IV(1,6,4,3)




Вариант 4

Вариант 5

Вариант 6

Вариант 7

I(1,4)

I(5,1,7)

I(2,5,0)

I(1,5,6,8,9)

II(2,3)

II(8,0)

II(1,4,7,9)

II(2,3,4,7,0)

III(5,6,7,0)

III(2,3)

III(3,6,8)



IV(8)

IV(4)








Вариант 8

Вариант 9

I(9)

I(0,2,1,4,3)

II(0,4,5)

II(8,9)

III(6,1,3)




IV(7,8,2)






Пример

Разработать приложение, используя то же условие, что и в изложенной выше задаче, выбрав следующую структуру контекстного меню :

I(0,1,2) II(3,4,5) III(6,7,8) IV(9)

В приведённом ниже листинге пункты всплывающего меню I, II, III, IV обозначены как A1, A2, A3, A4, а наименования соответствующих подпунктов используют связанный с ними список действий.


{ Модуль PopMen1.dpr }


program PopMen1;


uses

Forms,

Popup1 in 'Popup1.pas' {Form1},

Mod2 in 'Mod2.pas' {DataModule2: TDataModule};


{$R *.RES}


begin

Application.Initialize;

Application.CreateForm(TForm1, Form1);

Application.CreateForm(TDataModule2, DataModule2);

Application.Run;

end.


{ Модуль Popup1.pas }


unit Popup1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, ExtCtrls, Menus, MPlayer;


type

TForm1 = class(TForm)

Image1: TImage;

ListBox1: TListBox;

PopupMenu1: TPopupMenu;

N11: TMenuItem; A21: TMenuItem;

A31: TMenuItem; A41: TMenuItem;

N1: TMenuItem; N2: TMenuItem;

ListBox11: TMenuItem;

MediaPlayer2: TMenuItem;

N3: TMenuItem; N4: TMenuItem;

ListBox12: TMenuItem;

Image1MediaPlayer11: TMenuItem;

MediaPlayer1: TMediaPlayer;

N5: TMenuItem;

procedure A41Click(Sender: TObject);

procedure N1Click(Sender: TObject);

procedure N2Click(Sender: TObject);

procedure ListBox11Click(Sender: TObject);

procedure MediaPlayer2Click(Sender: TObject);

procedure N4Click(Sender: TObject);

procedure ListBox12Click(Sender: TObject);

procedure Image1MediaPlayer11Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure N5Click(Sender: TObject);

procedure N3Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

uses Mod2;


{$R *.DFM}


procedure TForm1.A41Click(Sender: TObject);

{ Обработка вызова 4-го пункта

всплывающего меню }

begin

Close; { Окончить работу }

end;


procedure TForm1.N1Click(Sender: TObject);

{ Обработка вызова 1-го подпункта 1-го пункта

всплывающего меню }

begin

ListBox1.Items.Add('A1/Картинку - показать');

Image1.Show; { Ну, покажем.

(В нач.мом.она в правом верхн.углу)}

end;


procedure TForm1.N2Click(Sender: TObject);

{ Обработка вызова 2-го подпункта 1-го пункта

всплывающего меню }

begin { Переместить картинку в другой правый угол экрана }

ListBox1.Items.Add('A1/Картинку - в др.прав.угол');

If Image1.Top < (Form1.ClientHeight div 2)

then Image1.Top := Form1.ClientHeight div 2

else Image1.Top := 0;

end;


procedure TForm1.ListBox11Click(Sender: TObject);

{ Обработка вызова 1-го подпункта 2-го пункта

всплывающего меню }

begin

ListBox1.Items.Add('A2/Выбр.др.шрифт для ListBox');

{ Поменять шрифт для ListBox1 }

with DataModule2.FontDialog1 do

begin

if not Execute then Exit;

ListBox1.Font := Font;

end;

end;


procedure TForm1.MediaPlayer2Click(Sender: TObject);

{ Обработка вызова 2-го подпункта 2-го пункта

всплывающего меню }

begin { Скрыть медиаплейер }

ListBox1.Items.Add('A2/Скрыть MediaPlayer');

MediaPlayer1.Hide;

end;


procedure TForm1.N4Click(Sender: TObject);

{ Обработка вызова 1-го подпункта 3-го пункта

всплывающего меню }

begin { Сменить цвет экрана }

ListBox1.Items.Add('A3/Сменить цвет экрана');


if Color=clBtnFace then Color := clRed

else if Color=clRed then Color := clGreen

else Color := clBtnFace;

end;


procedure TForm1.ListBox12Click(Sender: TObject);

{ Обработка вызова 2-го подпункта 3-го пункта

всплывающего меню }

begin

ListBox1.Clear; { Очистить ListBox1 }

end;


procedure TForm1.Image1MediaPlayer11Click(Sender: TObject);

{ Обработка вызова 3-го подпункта 3-го пункта

всплывающего меню }

begin

ListBox1.Items.Add('A3/Показать медиаплейер');

MediaPlayer1.Show; { Показать медиаплейер }

end;


procedure TForm1.FormCreate(Sender: TObject);

{ Обработка события создания формы }

begin

Image1.Hide; { Невидима картинка }

MediaPlayer1.Hide; { Невидим медиаплейер }

{ Настроим размеры и начальное положение картинки }

Image1.Height := Form1.ClientHeight div 2;

Image1.Width := Form1.ClientWidth div 2;

Image1.Top := 0;

Image1.Left := Form1.ClientWidth div 2;

{ Настроим размеры и начальное положение

компонента ListBox1}

ListBox1.Height := Form1.ClientHeight div 2;

ListBox1.Width := Form1.ClientWidth div 2;

ListBox1.Top := 0;

ListBox1.Left := 0;

end;


procedure TForm1.N5Click(Sender: TObject);

{ Обработка вызова 3-го подпункта 1-го пункта

всплывающего меню }

begin

ListBox1.Items.Add('A1/Скрыть картинку');

Image1.Hide; { Скрыть картинку }

end;


procedure TForm1.N3Click(Sender: TObject);

{ Обработка вызова 3-го подпункта 2-го пункта

всплывающего меню }

begin { Заменить картинку }

ListBox1.Items.Add('A2/Заменить картинку');

if DataModule2.OpenPictureDialog1.Execute then

Image1.Picture.LoadFromFile(DataModule2.OpenPictureDialog1.Filename);

Image1.Show;

end;


end.


{ Модуль Mod2.pas }


unit Mod2;


interface


uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

ExtDlgs;


type

TDataModule2 = class(TDataModule)

OpenPictureDialog1: TOpenPictureDialog;

FontDialog1: TFontDialog;

private

{ Private declarations }

public

{ Public declarations }

end;


var

DataModule2: TDataModule2;


implementation

{$R *.DFM}


end.


Задача 2


Вариант 0

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


Вариант 1

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


Вариант 2

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


Вариант 3

То же, что и в варианте 0, но сектора не надписывать, а установить периодическую смену окрасок секторов так, чтобы возникала иллюзия вращения круга против часовой стрелки.


Вариант 4

То же, что и в варианте 2, но квадраты не надписывать, а установить периодическую смену их окрасок, чтобы возникала иллюзия вращения квадратов по часовой стрелке.


Вариант 5

Используя графические компоненты, изобразить квадрат, вписать в него меньший квадрат с вершинами в середине сторон исходного квадрата и закрасить его одним цветом, а оставшуюся часть большого квадрата - другим. Установить периодическую смену одного цвета другим.


Вариант 6

Используя графические компоненты, изобразить равносторонний треугольник, закрасив его каким-либо цветом, и поместить на нём мерцающую надпись - "треугольник".


Вариант 7

Используя графические компоненты, изобразить закрашенный эллипс и поместить на нём мерцающую надпись -"эллипс".


Вариант 8

Используя графические компоненты, изобразить прямоугольник и разбить его на пять полос различных цветов по горизонтали. Установить смену цветов полос, которая создала бы иллюзию их движения по горизонтали.


Вариант 9

То же, что и в варианте 8, но разбить прямоугольник на полосы по вертикали, соответственно создав иллюзию их вертикального движения.


Пример

Используя графические компоненты, изобразить квадрат, внутри которого соприкасаются две полуокружности с диаметрами на верхней и нижней сторонах квадрата. Закрасить все области соответственно красным, жёлтым, зелёным и синим цветами. Внутри верхнего полукруга белыми буквами на красном фоне написать слово Delphi и установить частоту его мерцания 10 гц.


Ниже приведён листинг приложения.


{ Файл Figur1.dpr }


program Figur1;

uses

Forms,

Fig1 in 'Fig1.pas' {Form1};

{$R *.RES}

begin

Application.Initialize;

Application.CreateForm(TForm1, Form1);

Application.Run;

end.


{ Модуль Fig1.pas }


unit Fig1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

ExtCtrls, StdCtrls;

type

TForm1 = class(TForm)


PaintBox1: TPaintBox;

Button1: TButton;

Timer1: TTimer;

procedure PaintBox1Paint(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Timer1Timer(Sender: TObject);

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;


var

Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.PaintBox1Paint(Sender: TObject);

begin

with PaintBox1, Canvas do

begin

Brush.Color := clRed; { Цвет закраски }

Pen.Color := clBlack; { Цвет линий }

{ Сначала рисуем все линии }

MoveTo(0,0); { Перейти в точку (0,0), которая теперь станет текущей }

LineTo(Width, 0); { Провести отрезок прямой из текущей точки в точку с коорд. (Width,0), которая теперь станет текущей. Width = Height - размер квадратного компонента PaintBox1 }

LineTo(Width, Height);

LineTo(0,Height); LineTo(0,0);

{ Теперь надо провести две полукруговых дуги, можно взамен провести просто две полные окружности, т.к. другие половинки окружностей не будут видны, оказываясь вне PaintBox1 }

Ellipse(0, -Height div 2, Width, Height div 2);

Ellipse(0, Height div 2, Width, 3*Height div 2);

{ Теперь будем закрашивать }

FloodFill(Width div 2, Height div 4, clBlack, fsBorder);

{ Залили цветом clBrush фигуру, границы которой имеют цвет clBlack, из её внутр. точки (Width div 2, Height div 4). fsBorder -

режим закраски внутренности до границы, fsSurface - режим закраски лишь линий границы }

{ Аналогично зальём теперь остальные фигуры }

Brush.Color := clGreen;

FloodFill(Width div 2, 3*Height div 4, clBlack, fsBorder);


Brush.Color := clYellow;

FloodFill(3*Width div 4, Height div 2, clBlack, fsBorder);

Brush.Color := clBlue;

FloodFill(Width div 4, Height div 2, clBlack, fsBorder);

Font.Color := clWhite; { Цвет шрифта }

Brush.Color := clRed; { Фон шрифта }

Font.Name := 'Arial'; { Шрифт }

Font.Size := Height div 15; { Размер шрифта }

Font.Style := [fsBold, fsItalic]; { Полужирный, курсив }

TextOut(Width div 3, Height div 10, 'Delphi');

{ Написали слово 'Delphi' из точки с указанными координатами }

end;

end;


procedure TForm1.Button1Click(Sender: TObject);

begin

Close; { Окончить работу }

end;


procedure TForm1.Timer1Timer(Sender: TObject);

begin

with PaintBox1, Canvas do

begin

if Font.Color = clWhite then Font.Color := clRed

else Font.Color := clWhite;

TextOut(Width div 3, Height div 10, 'Delphi');

{ То написали белым цветом по красному фону слово 'Delphi' из точки с указанными координатами, то стерли его, написав красным

по красному и т.д., - эффект мерцания с частотой = 1000 / (2*Timer1.Interval) }

end;

end;


procedure TForm1.FormCreate(Sender: TObject);

begin

Timer1.Interval := 50;{Обеспечим частоту мерцания надписи 10 гц, установив временной интервал таймера равным 50 миллисекундам}

PaintBox1.Height := Form1.ClientHeight;

{ Сделать компонент PaintBox1 квадратным }

PaintBox1.Width := PaintBox1.Height;

{ Если сделать его неквадратным - все равно все будет работать, только дуги окружностей превратятся в дуги эллипсов }

{ Задать начальное положение PaintBox1 на экране }

PaintBox1.Top := 0;

PaintBox1.Left := 0;


{ Обеспечить нужную надпись на кнопке }

Button1.Caption := 'Окончить';

end;

end.


Задача 3