Автор работы: Пользователь скрыл имя, 12 Октября 2011 в 18:50, лабораторная работа
Создать класс типа - дата с полями: день (1-31), месяц (1-12), год (целое число). Класс имеет методы установки дня, месяца и года, печати: печать по шаблону: “5 января 1997 года” и “05.01.1997”. Методы установки полей класса должны проверять корректность задаваемых параметров.
Министерство образования и науки Российской Федерации
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
Государственное образовательное учреждение
высшего профессионального образования
«ОРЕНБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»
Математический факультет
Кафедра
администрирования информационных систем
ОТЧЕТ
по лабораторной
работе на тему: «Объекты в Odject Pascal»
по дисциплине
"Программирование"
Руководитель работы
Оренбург 2008
1
Построение задачи
Создать класс типа - дата с полями: день (1-31), месяц (1-12), год (целое число). Класс имеет методы установки дня, месяца и года, печати: печать по шаблону: “5 января 1997 года” и “05.01.1997”. Методы установки полей класса должны проверять корректность задаваемых параметров.
2
Структурная схема программного
продукта
3 Текст программы
unit Unit1;
interface
uses
Windows, Messages, SysUtils,
Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Menus;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
Button1: TButton;
procedure Edit1Exit(Sender: TObject);
procedure Edit2Exit(Sender: TObject);
procedure Edit3Exit(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
TDate1 = class
day:integer;
mounth:integer;
year:integer;
procedure CheckDay;
procedure CheckMounth;
procedure CheckYear;
procedure Print;
end;
var
Form1: TForm1;
Date1: TDate1;
ms:array[1..12]of string;
w:word;
implementation
{$R *.dfm}
procedure TDate1.CheckDay;
begin
TRY
day:=strtoint(Form1.Edit1.
except
on EConvertError do
begin
MessageDLG('Неправильный формат данных', mtError, [mbOk], 0);
Form1.edit1.Text:='1';
day:=1;
end;
end;
if day>31 then
begin
w:=MessageDLG('В одном месяце не может быть более 31 дня!', mtWarning, [mbOk], 0);
Form1.edit1.Text:='1';
day:=1;
end;
if day=0 then
begin
w:=MessageDLG('Как день может быть равен нулю?!!', mtWarning, [mbOk], 0);
Form1.edit1.Text:='1';
day:=1;
end;
day:=strtoint(Form1.Edit1.
end;
procedure TDate1.CheckMounth;
var b:boolean;
begin
TRY
mounth:=strtoint(Form1.Edit2.
except
on EConvertError do
begin
MessageDLG('Неправильный формат данных', mtError, [mbOk], 0);
Form1.edit2.Text:='1';
mounth:=1;
end;
end;
if mounth=0 then
begin
w:=MessageDLG('Как месяц может быть равен нулю?!!', mtWarning, [mbOk], 0);
Form1.edit2.Text:='1';
mounth:=1;
end;
if mounth>12 then
begin
w:=MessageDLG('В одном году не больше 12 месяцев!', mtWarning, [mbOk], 0);
Form1.edit2.Text:='1';
mounth:=1;
end;
case mounth of
2: b:=true;
4,6,9,11: b:=false;
end;
if (b=false)and(day=31) then
begin
w:=MessageDLG('В этом месяце не больше 30 дней!', mtWarning, [mbOk], 0);
Form1.edit2.Text:='1';
mounth:=1;
end;
if (b=true)and(day>29) then
begin
w:=MessageDLG('В феврале не больше 29 дней!', mtWarning, [mbOk], 0);
Form1.edit1.Text:='1';
day:=1;
end;
day:=strtoint(Form1.Edit1.
mounth:=strtoint(Form1.Edit2.
end;
procedure TDate1.CheckYear;
var t:real;
begin
TRY
year:=strtoint(Form1.Edit3.
except
on EConvertError do
begin
MessageDLG('Неправильный формат данных', mtError, [mbOk], 0);
Form1.edit3.Text:='1';
year:=1;
end;
end;
t:=year;
t:=t/4;
if
(frac(t)<>0)and(mounth=2)and(
begin
w:=MessageDLG('Это не високосный год, значит в феврале не больше 29 дней!', mtWarning, [mbOk], 0);
Form1.edit1.Text:='1';
day:=1;
end;
day:=strtoint(Form1.Edit1.
end;
procedure TDate1.Print;
begin
TRY
day:=strtoint(Form1.Edit1.
except
on EConvertError do
begin
MessageDLG('Неправильный формат данных', mtError, [mbOk], 0);
Form1.edit1.Text:='1';
day:=1;
end;
end;
TRY
mounth:=strtoint(Form1.Edit2.
except
on EConvertError do
begin
MessageDLG('Неправильный формат данных', mtError, [mbOk], 0);
Form1.edit2.Text:='1';
mounth:=1;
end;
end;
TRY
year:=strtoint(Form1.Edit3.
except
on EConvertError do
begin
MessageDLG('Неправильный формат данных', mtError, [mbOk], 0);