Учебно-методический комплекс по дисциплине технология программирования, 5 курс (название)
Вид материала | Учебно-методический комплекс |
- Учебно-методический комплекс по дисциплине Техника и технология перевозок на железнодорожном, 184.59kb.
- Учебно-методический комплекс по дисциплине высокоуровневые методы информатики и программирования, 435.89kb.
- Учебно-методический комплекс по дисциплине Техника и технология перевозок на железнодорожном, 207.37kb.
- Автор Ибрагимов Махмут Ахматович (Ф. И. О) учебно-методический комплекс, 438.69kb.
- Баженов Валерий Клавдиевич, к т. н., доцент, учебно-методический комплекс, 1625.53kb.
- Баженов Валерий Клавдиевич, к т. н., доцент, учебно-методический комплекс, 1602.69kb.
- Л. Л. Гришан Учебно-методический комплекс по дисциплине «Аудит» Ростов-на-Дону, 2010, 483.53kb.
- Голышкова Маргарита Павловна Белозерский Анатолий Моисеевич учебно-методический комплекс, 2354.41kb.
- И. Л. Литвиненко учебно-методический комплекс по дисциплине международный туризм ростов-на-Дону, 398.8kb.
- Учебно- методический комплекс по дисциплине (название) Базы данных, 566.19kb.
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ЖЕЛЕЗНОДОРОЖНОГО ТРАНСПОРТА
государственное образовательное учреждение высшего профессионального образования
"МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ПУТЕЙ СООБЩЕНИЯ»
(МИИТ)
| УТВЕРЖДЕНО: |
| Проректором по учебно-методической работе – директором РОАТ |
| «_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 (ЭВМ).
Составил: канд. ф.м. наук, доц. Е.А.Носиловский
- ЦЕЛЬ ИЗУЧЕНИЯ ДИСЦИПЛИНЫ
Целью преподавания дисциплины «Технология программирования» студентам специальности 220100 является приобретение знаний для создания Windows-приложений в среде программирования Delphi.
Дисциплина базируется на знании курса “Программирование на языке высокого уровня” и является базовой для других дисциплин специальности.
- ТРЕБОВАНИЯ К УРОВНЮ ОСВОЕНИЯ СОДЕРЖАНИЯ ДИСЦИПЛИНЫ
Изучив дисциплину, студент должен:
1.иметь представление о современном программном обеспечении;
2.знать среду программирования Delphi;
3. уметь использовать методы визуального и объектно-ориентированного программирования.
ОБЪЁМ ДИСЦИПЛИНЫ И ВИДЫ УЧЕБНОЙ РАБОТЫ
Вид учебной работы | Количество часов по формам обучения | ||
Очная | Очно-заочная | Заочная | |
№№ семестров | | | |
Аудиторные занятия: | | | 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 диске, который должен содержать:
- Пояснительную записку;
- Развернутые ответы на поставленные вопросы.
Пояснительная записка должна включать в себя:
- Титульный лист, который должен содержать данные студента и его учебный шифр. Он представляется на проверку в напечатанном виде на стандартном листе формата А4;
- Задание на курсовую работу;
- Список использованной литературы.
7. САМОСТОЯТЕЛЬНАЯ РАБОТА
Разделы и темы для самостоятельного изучения | Виды и содержание самостоятельной работы |
Понятие класса и объекта (инкапсуляция, наследование, полиморфизм). | Проработка учебного материала. |
Понятие события. Обработчики событий. События и сообщения | Проработка учебного материала. |
Понятие события. Обработчики событий. События и сообщения | Проработка учебного материала. |
Графические возможности Delphi . Мультимедийные возможности Delphi (компонент TMediaPlayer). | Проработка учебного материала. |
Просмотр и выбор информации из базы данных (связь таблиц, SQL-запросы). | Проработка учебного материала. |
8. УЧЕБНО-МЕТОДИЧЕСКОЕ ОБЕСПЕЧЕНИЕ ДИСЦИПЛИНЫ
Литература
Основная:
Флёнов М.Б. Библия Delphi. Изд.2-е, СПБ: Изд-во “БХВ-Петербург”, 2008г.
- Бобровский С. Delphi 7. Учебный курс. М.: Изд-во “Питер”, 2006г.
Дополнительная:
Хомоненко А., Гофман В Хомоненко А., Гофман В., Delphi 7 в подлиннике.. М.: Изд-во “Питер”, 2003
- 7 в подлиннике.. М.: Изд-во “Питер”, 2005г.
- Хомоненко А., Гофман В., Delphi 7 в подлиннике.. М.: Изд-во “Питер”, 2003
9. Материально-техническое и/или информационное обеспечение дисциплины
- Персональный компьютер
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 Вначале появляется заставка с картинкой. Эта картинка, в зависимости от номера варианта, исчезает
либо после ввода пароля в соответствующее поле формы;
- либо по прошествии заданного времени.
II После исчезновения заставки форма в зависимости от номера варианта
- либо содержит редактор файлов;
- либо содержит окно с заданным текстом и кнопку, позволяющую менять шрифт, размер, окраску текста.
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
Разработать приложение, при запуске которого правый щелчок мышью на свободном месте формы вызывает появление всплывающего меню.
Структура меню выбирается согласно варианту из приведённой далее таблицы. Римская цифра в варианте указывает номер пункта меню, следующие за ней цифры в круглых скобках - это номера действий из списка, указанного ниже, соответствующие подпунктам данного пункта.
Поместив на форму и в модуль данных необходимые компоненты, а также выполнив соответствующие настройки, приведём упомянутый выше список :
показать картинку;
- переместить картинку из верхней половины формы в нижнюю и наоборот;
- скрыть картинку;
- вызвать FontDialog1 для изменения шрифта в списке ListBox1;
- скрыть медиаплейер;
- вызвать PictureDialog1 для замены картинки;
- сменить цвет формы (серый - на красный, красный - на зелёный, зелёный - на серый);
- очистить содержимое ListBox1;
- показать медиаплейер;
- окончить работу.
Заголовки подпунктов пункта меню должны отвечать соответствующим действиям.
Кроме того, заголовки пункта и подпункта каждого вызова записываются в виде строки в конец списка 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