Читайте также: |
|
МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Им. Н.Э. БАУМАНА
Кафедра ИУ-7
Программное обеспечение ЭВМ
И информационные технологии.
Отчёт
по проекту «Органайзер»
Студент группы Э3-22: Пятин Иван
Преподаватель: Неземский Валентин Иванович
Москва 2013 г.
Цель проекта.
Закрепление полученных компетенций (знаний, умений и навыков) в первом семестре и приобретении новых знаний по визуальному объектно-ориентированному программированию
Содержания проекта:
Проект содержит следующие приложения:
1. Календарь………………………………………………………………………….… 3стр.
2. Аналоговые и электронные часы с будильником…………………………….... 9стр.
3. Научный калькулятор………………………………………………………………13стр.
4. Обработка массивов…………………………………………………………………21стр.
5. Записная книжка…………………………………………………………………….25стр.
6. Типовой расчет №1 по Мат. Анализу……………………………………………..28стр.
7. Забавная игра…………………………………………………………………………34стр.
8. Динамическая картинка…………………………………………………………….38стр.
9. Обработка строк………………………………………………………………………44стр.
10. Построение графиков………………………………………………………………..46стр.
Литература, используемая в ходе работы над проектом:
М.Фленов Библия Delphi 2011
C Бобровский Delphi 7 2006
А.Я. Архангельский Программирование в Delphi 6
Календарь
Интерфейс:
Код программы
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, ExtCtrls, DateUtils, StdCtrls;
type
TForm1 = class(TForm)
Timer1: TTimer;
StringGrid1: TStringGrid;
Panel1: TPanel;
Button1: TButton;
Button2: TButton;
Edit1: TEdit;1
Label1: TLabel;
Button3: TButton;
Button4: TButton;
procedure Button4Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
var
year,month,day:word;
date:TdateTime;
b:boolean;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
firstday:TDateTime;
fd,i,j:integer;
st:string;
begin
b:=false;
if month=12 then
begin
month:=1;
year:=year+1;
end
else
month:=month+1;
date:=encodedate(year,month,day);
panel1.caption:=LongMonthNames[MonthOfTheYear(date)]+' '+inttostr(year);
firstday:=incday(date,(-1)*day+1);
fd:=DayOfTheWeek(firstday);
for i:=0 to stringgrid1.ColCount-1 do
for j:=1 to stringgrid1.rowcount-1 do
begin
if ((7*(j-1)+i-fd+2)>0) and (j<(stringgrid1.rowcount-2)) then
stringgrid1.cells[i,j]:=inttostr(7*(j-1)+i-fd+2);
if (j=(stringgrid1.rowcount-2)) or (j=(stringgrid1.rowcount-1)) then
begin
if (month=1) or (month=3) or (month=5) or (month=7) or (month=8) or (month=10) or (month=12) then
begin
if (7*(j-1)+i-fd+2)<=31 then
stringgrid1.cells[i,j]:=inttostr(7*(j-1)+i-fd+2);
if (7*(j-1)+i-fd+2)>31 then
stringgrid1.cells[i,j]:='';
end;
if (month=4) or (month=6) or (month=9) or (month=11) then
begin
if (7*(j-1)+i-fd+2)<=30 then
stringgrid1.cells[i,j]:=inttostr(7*(j-1)+i-fd+2);
if (7*(j-1)+i-fd+2)>30 then
stringgrid1.cells[i,j]:='';
end;
if (month=2) then
begin
if ((year mod 4=0) and (year mod 100<>0)) or (year mod 400=0) then
begin
if (7*(j-1)+i-fd+2)<=29 then
stringgrid1.cells[i,j]:=inttostr(7*(j-1)+i-fd+2);
if (7*(j-1)+i-fd+2)>29 then
stringgrid1.cells[i,j]:='';
end
else
begin
if (7*(j-1)+i-fd+2)<=28 then
stringgrid1.cells[i,j]:=inttostr(7*(j-1)+i-fd+2);
if (7*(j-1)+i-fd+2)>28 then
stringgrid1.cells[i,j]:='';
end;
end;
end;
end; // for
for i:=0 to fd-2 do
stringgrid1.Cells[i,1]:='';
end;
procedure TForm1.Button2Click(Sender: TObject);
var
firstday:TDateTime;
fd,i,j:integer;
st:string;
begin
b:=false;
if month=1 then
begin
month:=12;
year:=year-1;
end
else
month:=month-1;
date:=encodedate(year,month,day);
panel1.caption:=LongMonthNames[MonthOfTheYear(date)]+' '+inttostr(year);
firstday:=incday(date,(-1)*day+1);
fd:=DayOfTheWeek(firstday);
for i:=0 to stringgrid1.ColCount-1 do
for j:=1 to stringgrid1.rowcount-1 do
begin
if ((7*(j-1)+i-fd+2)>0) and (j<(stringgrid1.rowcount-2)) then
stringgrid1.cells[i,j]:=inttostr(7*(j-1)+i-fd+2);
if (j=(stringgrid1.rowcount-2)) or (j=(stringgrid1.rowcount-1)) then
begin
if (month=1) or (month=3) or (month=5) or (month=7) or (month=8) or (month=10) or (month=12) then
begin
if (7*(j-1)+i-fd+2)<=31 then
stringgrid1.cells[i,j]:=inttostr(7*(j-1)+i-fd+2);
if (7*(j-1)+i-fd+2)>31 then
stringgrid1.cells[i,j]:='';
end;
if (month=4) or (month=6) or (month=9) or (month=11) then
begin
if (7*(j-1)+i-fd+2)<=30 then
stringgrid1.cells[i,j]:=inttostr(7*(j-1)+i-fd+2);
if (7*(j-1)+i-fd+2)>30 then
stringgrid1.cells[i,j]:='';
end;
if (month=2) then
begin
if ((year mod 4=0) and (year mod 100<>0)) or (year mod 400=0) then
begin
if (7*(j-1)+i-fd+2)<=29 then
stringgrid1.cells[i,j]:=inttostr(7*(j-1)+i-fd+2);
if (7*(j-1)+i-fd+2)>29 then
stringgrid1.cells[i,j]:='';
end
else
begin
if (7*(j-1)+i-fd+2)<=28 then
stringgrid1.cells[i,j]:=inttostr(7*(j-1)+i-fd+2);
if (7*(j-1)+i-fd+2)>28 then
stringgrid1.cells[i,j]:='';
end;
end;
end;
end; // for
for i:=0 to fd-2 do
stringgrid1.Cells[i,1]:='';
end;
procedure TForm1.Button3Click(Sender: TObject);
var
date1:TDateTime;
firstday:TDateTime;
fd,i,j:integer;
st:string;
begin
b:=true;
try
date1:=strtodate(edit1.Text);
decodedate(date1,year,month,day);
date:=encodedate(year,month,day);
panel1.caption:=LongMonthNames[MonthOfTheYear(date)]+' '+inttostr(year);
firstday:=incday(date,(-1)*day+1);
fd:=DayOfTheWeek(firstday);
for i:=0 to stringgrid1.ColCount-1 do
for j:=1 to stringgrid1.rowcount-1 do
begin
if ((7*(j-1)+i-fd+2)>0) and (j<(stringgrid1.rowcount-2)) then
stringgrid1.cells[i,j]:=inttostr(7*(j-1)+i-fd+2);
if (j=(stringgrid1.rowcount-2)) or (j=(stringgrid1.rowcount-1)) then
begin
if (month=1) or (month=3) or (month=5) or (month=7) or (month=8) or (month=10) or (month=12) then
begin
if (7*(j-1)+i-fd+2)<=31 then
stringgrid1.cells[i,j]:=inttostr(7*(j-1)+i-fd+2);
if (7*(j-1)+i-fd+2)>31 then
stringgrid1.cells[i,j]:='';
end;
if (month=4) or (month=6) or (month=9) or (month=11) then
begin
if (7*(j-1)+i-fd+2)<=30 then
stringgrid1.cells[i,j]:=inttostr(7*(j-1)+i-fd+2);
if (7*(j-1)+i-fd+2)>30 then
stringgrid1.cells[i,j]:='';
end;
if (month=2) then
begin
if ((year mod 4=0) and (year mod 100<>0)) or (year mod 400=0) then
begin
if (7*(j-1)+i-fd+2)<=29 then
stringgrid1.cells[i,j]:=inttostr(7*(j-1)+i-fd+2);
if (7*(j-1)+i-fd+2)>29 then
stringgrid1.cells[i,j]:='';
end
else
begin
if (7*(j-1)+i-fd+2)<=28 then
stringgrid1.cells[i,j]:=inttostr(7*(j-1)+i-fd+2);
if (7*(j-1)+i-fd+2)>28 then
stringgrid1.cells[i,j]:='';
end;
end;
end;
end; // for
for i:=0 to fd-2 do
stringgrid1.Cells[i,1]:='';
Except
showmessage('Неверный ввод');
end;
end;
procedure TForm1.Button4Click(Sender: TObject);
var
date1:TDateTime;
firstday:TDateTime;
fd,i,j:integer;
begin
decodedate(now,year,month,day);
date:=encodedate(year,month,day);
panel1.caption:=LongMonthNames[MonthOfTheYear(date)]+' '+inttostr(year);
firstday:=incday(date,(-1)*day+1);
fd:=DayOfTheWeek(firstday);
for i:=0 to stringgrid1.ColCount-1 do
for j:=1 to stringgrid1.rowcount-1 do
begin
if ((7*(j-1)+i-fd+2)>0) and (j<(stringgrid1.rowcount-2)) then
stringgrid1.cells[i,j]:=inttostr(7*(j-1)+i-fd+2);
if (j=(stringgrid1.rowcount-2)) or (j=(stringgrid1.rowcount-1)) then
begin
if (month=1) or (month=3) or (month=5) or (month=7) or (month=8) or (month=10) or (month=12) then
begin
if (7*(j-1)+i-fd+2)<=31 then
stringgrid1.cells[i,j]:=inttostr(7*(j-1)+i-fd+2);
if (7*(j-1)+i-fd+2)>31 then
stringgrid1.cells[i,j]:='';
end;
if (month=4) or (month=6) or (month=9) or (month=11) then
begin
if (7*(j-1)+i-fd+2)<=30 then
stringgrid1.cells[i,j]:=inttostr(7*(j-1)+i-fd+2);
if (7*(j-1)+i-fd+2)>30 then
stringgrid1.cells[i,j]:='';
end;
if (month=2) then
begin
if ((year mod 4=0) and (year mod 100<>0)) or (year mod 400=0) then
begin
if (7*(j-1)+i-fd+2)<=29 then
stringgrid1.cells[i,j]:=inttostr(7*(j-1)+i-fd+2);
if (7*(j-1)+i-fd+2)>29 then
stringgrid1.cells[i,j]:='';
end
else
begin
if (7*(j-1)+i-fd+2)<=28 then
stringgrid1.cells[i,j]:=inttostr(7*(j-1)+i-fd+2);
if (7*(j-1)+i-fd+2)>28 then
stringgrid1.cells[i,j]:='';
end;
end;
end;
end; // for
for i:=0 to fd-2 do
stringgrid1.Cells[i,1]:='';
end;
procedure TForm1.FormCreate(Sender: TObject);
var
firstday:TDateTime;
fd,i,j:integer;
st:string;
begin
with stringgrid1 do
begin
cells[0,0]:='Пн';
cells[1,0]:='Вт';
cells[2,0]:='Ср';
cells[3,0]:='Чт';
cells[4,0]:='Пт';
cells[5,0]:='Сб';
cells[6,0]:='Вс';
end;
decodedate(now,year,month,day);
date:=encodedate(year,month,day);
panel1.caption:=LongMonthNames[MonthOfTheYear(date)]+' '+inttostr(year);
firstday:=incday(date,(-1)*day+1);
fd:=DayOfTheWeek(firstday);
for i:=0 to stringgrid1.ColCount-1 do
for j:=1 to stringgrid1.rowcount-1 do
begin
if ((7*(j-1)+i-fd+2)>0) and (j<(stringgrid1.rowcount-2)) then
stringgrid1.cells[i,j]:=inttostr(7*(j-1)+i-fd+2);
if (j=(stringgrid1.rowcount-2)) or (j=(stringgrid1.rowcount-1)) then
begin
if (month=1) or (month=3) or (month=5) or (month=7) or (month=8) or (month=10) or (month=12) then
begin
if (7*(j-1)+i-fd+2)<=31 then
stringgrid1.cells[i,j]:=inttostr(7*(j-1)+i-fd+2);
if (7*(j-1)+i-fd+2)>31 then
stringgrid1.cells[i,j]:='';
end;
if (month=4) or (month=6) or (month=9) or (month=11) then
begin
if (7*(j-1)+i-fd+2)<=30 then
stringgrid1.cells[i,j]:=inttostr(7*(j-1)+i-fd+2);
if (7*(j-1)+i-fd+2)>30 then
stringgrid1.cells[i,j]:='';
end;
if (month=2) then
begin
if ((year mod 4=0) and (year mod 100<>0)) or (year mod 400=0) then
begin
if (7*(j-1)+i-fd+2)<=29 then
stringgrid1.cells[i,j]:=inttostr(7*(j-1)+i-fd+2);
if (7*(j-1)+i-fd+2)>29 then
stringgrid1.cells[i,j]:='';
end
else
begin
if (7*(j-1)+i-fd+2)<=28 then
stringgrid1.cells[i,j]:=inttostr(7*(j-1)+i-fd+2);
if (7*(j-1)+i-fd+2)>28 then
stringgrid1.cells[i,j]:='';
end;
end;
end; // for
for i:=0 to fd-2 do
stringgrid1.Cells[i,1]:='';
end;
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var
year1,month1,day1:word;
begin
with stringgrid1.Canvas do
begin
brush.color:=clred;
if ACol=6 then
begin
FillRect(Rect);
TextOut(Rect.Left+2, Rect.Top+2, Stringgrid1.Cells[ACol, ARow]);
end;
brush.color:=claqua;
pen.Color:=clblack;
pen.Width:=4;
decodedate(now,year1,month1,day1);
if ((year1=year) and (month1=month)) or (b=true) then
if stringgrid1.Cells[ACol,ARow]=inttostr(day) then
begin
rectangle(rect.Left-2,rect.Top,rect.Right,rect.Bottom);
TextOut(Rect.Left+2, Rect.Top+2, Stringgrid1.Cells[ACol, ARow]);
End; end.
Аналоговые часы с будильником
Интерфейс:
Код программы:
unit unit2_;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, ComCtrls, Menus;
type
TForm2 = class(TForm)
Timer1: TTimer;
Label1: TLabel;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure FormPaint(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
// эти объявления вставлены вручную
procedure Vector(x0,y0,a,l: integer);
procedure DrawClock;
procedure N2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
a:string;
Form2: TForm2;
implementation
uses
DateUtils; // для доступа к SecondOf,
// MinuteOf и HourOf
const
R = 85; // радиус циферблата часов
var
x0,y0: integer; // центр циферблата
ahr,amin,asec: integer; // положение стрелок (угол)
// инициализация формы
procedure TForm2.FormCreate(Sender: TObject);
var
t: TDateTime;
begin
// зададим размер формы
// в соответствии с размером циферблата
x0:= R+10;
y0:= R+10;
t:= Now();
// положение стрелок
ahr:= 90 - HourOf(t)*30-(MinuteOf(Today)div 12)*6;
amin:= 90 - MinuteOf(t)*6;
asec:= 90 - SecondOf(Today)*6;
Timer1.Interval:= 1000; // период сигнал от таймера 1 сек
Timer1.Enabled:= True; // пуск таймера
end;
// вычерчивает вектор заданной длины из точки (x0,y0)
procedure TForm2.Vector(x0,y0: integer; a, l: integer);
// x0,y0 - начало вектора
// a - угол между осью x и вектором
// l - длина вектора
const
GRAD = 0.0174532; // коэффициент пересчета угла из градусов в радианы
var
x,y: integer; // координаты конца вектора
begin
Canvas.MoveTo(x0,y0);
x:= Round(x0 + l*cos(a*GRAD));
y:= Round(y0 - l*sin(a*GRAD));
Canvas.LineTo(x,y);
end;
// рисует стрелки
procedure TForm2.DrawClock;
var
t: TDateTime;
begin
// шаг секундной и минутной стрелок 6 градусов,
// часовой - 30.
// стереть изображение стрелок
Canvas.Pen.Color:= clLime;
Canvas.Pen.Width:=3;
// часовую
Vector(x0,y0, ahr, R-30);
// минутную
Vector(x0,y0, amin, R-15);
// секундную
Vector(x0,y0, asec, R-7);
t:= Now();
// новое положение стрелок
ahr:= 90 - HourOf(t)*30-(MinuteOf(t)div 12)*6;
amin:= 90 - MinuteOf(t)*6;
asec:= 90 - SecondOf(t)*6;
// нарисовать стрелки
// часовая стрелка
Canvas.Pen.Width:= 3;
Canvas.Pen.Color:= clWhite;
Vector(x0,y0, ahr, R-25);
// минутная стрелка
Canvas.Pen.Width:= 2;
Canvas.Pen.Color:= clWhite;
Vector(x0,y0, amin, R-10);
// секундная стрелка
Canvas.Pen.Width:= 1;
Canvas.Pen.Color:= clGreen;
Vector(x0,y0, asec, R-18);
end;
// прорисовка циферблата и начальных стрелок
procedure TForm2.FormPaint(Sender: TObject);
var
x,y: integer; // координаты маркера на циферблате
a: integer; // угол между OX и прямой (x0,yo) (x,y)
pc: TColor; // цвет карандаша
pw: integer; // ширина карандаша
s1,s2,s3,s4:string; //цифры циферблата
begin
pc:= Canvas.Pen.Color;
pw:= Canvas.Pen.Width;
Canvas.Pen.Width:= 1;
Canvas.Pen.Color:= clWhite;
a:=0; // метки ставим от 3-х часов, против
// часовой стрелки
// циферблат
while a < 360 do
begin
x:=x0+Round(R * cos(a*2*pi/360));
y:=x0-Round(R * sin(a*2*pi/360));
Form2.Canvas.MoveTo(x,y);
if (a mod 30) = 0
then Canvas.Ellipse(x-2,y-2,x+3,y+3)
else Canvas.Ellipse(x-1,y-1,x+1,y+1);
a:=a+6; // 1 минута - 6 градусов
begin
s1:='12';
Canvas.Font.Color:=clwhite;
Form2.Canvas.TextOut(86, 18, s1);
s2:='3';
Canvas.Font.Color:=clwhite;
Form2.Canvas.TextOut(165, 85, s2);
s3:='6';
Canvas.Font.Color:=clwhite;
Form2.Canvas.TextOut(89, 157, s3);
s4:='9';
Canvas.Font.Color:=clwhite;
Form2.Canvas.TextOut(15, 85, s4);
end;
end;
// восстановить карандаш кисть
Canvas.Pen.Width:= pw;
Canvas.Pen.Color:= pc;
END;
procedure TForm2.N2Click(Sender: TObject);
begin
end;
// прорисовка текущих положений стрелок часов
procedure TForm2.Timer1Timer(Sender: TObject);
begin
DrawClock;
form2.ClientHeight:=3*R;
form2.ClientWidth:=2*R+20;
label1.Caption:=timetostr (time); //цифровые часы
end;
end.
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TForm4 = class(TForm)
Edit1..2: TEdit;
Timer1..2: TTimer;
Button1..2: TButton;
Panel1: TPanel;
Label1..3: TLabel;
procedure Timer1Timer(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
var
st:systemtime;
Form4: TForm4;
implementation
//считываем время
procedure TForm4.Button1Click(Sender: TObject);
begin
Timer2.Enabled:=true;
end;
//сбрасываем время
procedure TForm4.Button2Click(Sender: TObject);
begin
Timer2.Enabled:=false;
end;
//Информируется текущем времени с Windows и вставляет в цифровые час
procedure TForm4.Timer1Timer(Sender: TObject);
begin
getlocaltime(ST);
Panel1.Caption:=IntToStr(ST.wHour)+':'+IntToStr(ST.wMinute)+
':'+IntToStr(ST.wSecond);
end;
//Сравнивает, если совпадает то дает сигнал
procedure TForm4.Timer2Timer(Sender: TObject);
begin
getlocaltime(ST);
if (ST.Whour=StrToInt(Edit1.Text))and (ST.WMinute=StrToInt(Edit2.Text)) then beep;
end;
end.
Дата добавления: 2015-10-23; просмотров: 517 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Метод измерения и описание аппаратуры | | | Научный калькулятор |