Календарные задачи

Автор работы: Пользователь скрыл имя, 20 Февраля 2013 в 22:06, курсовая работа

Описание

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

Содержание

Введение 3
Глава 1. Программирование в Delphi. 5
1.1. Borland Delphi. 5
1.2. Интерфейс. 6
1.3. Типы данных. 9
Глава 2. Построение календаря. 14
2.1. Создание формы календаря. 14
2.2. Листинг программы 15
2.3. Описание используемых функций. 19
Заключение 21
Список литературы 22

Работа состоит из  1 файл

Текст.doc

— 411.00 Кб (Скачать документ)

Label1.Caption := IntToStr(C) ;

Такая программа, кроме  показа числа 15, ни на что не способна. Мы должны научиться вводить в  программу другие числа. Используем компоненты Edit. Введённые числа будут  содержаться в свойстве Text этих компонентов. Расположим на форме два компонента Edit, один компонент Label и кнопку Button, по нажатию на которую и будем проводить вычисления. В компоненты Edit1 и Edit2 будем вводить числа для суммирования. Чтобы переместиться в редактор кода, щёлкнем дважды по нашей кнопке Button1. Мы попадём прямо в сформированную для нас средой Delphi заготовку обработчика нажатия на кнопку, непосредственно между операторами begin и end. Напишем такой простой код:

procedure TForm1.Button1Click(Sender: TObject);

var A, B, C: Integer;//Не забудьте описание переменных

begin

//Начало кода:

A := Edit1.Text;

B := Edit2.Text;

C := A+B;

Label1.Caption := IntToStr(C);

//Конец кода

end ;

При попытке исполнить  этот код Delphi покажет ошибки по аналогичной  причине - переменные A и B имеют цифровой тип Integer, а свойство Text - текстовый тип String. Исправить ошибки поможет встроенная функция StrToInt, выполняющая обратное преобразование - текст в целое число. Операторы присвоения переменным A и B должны выглядеть так:

A := StrToInt(Edit1.Text);

B := StrToInt(Edit2.Text);

В данном случае переменные A, B, C использовались для наглядности. Можно обойтись одной строчкой:

Label1.Caption:=IntToStr(StrToInt(Edit1.Text)+StrToInt(Edit2.Text));

Аналогично, имеются функции  и для преобразования в строку и обратно действительных чисел c плавающей (Floating англ.) запятой, имеющих тип Real. Для преобразования в строку - FloatToStr, обратно - StrToFloat.

 

Глава 2. Построение календаря.

2.1. Создание  формы календаря.

Поместим на форму компоненты,  расположенные на вкладке Samples: календарь (Calendar) и поле ввода со стрелками SpinEdit. Мы используем их для создания приложения, позволяющего установить системную дату и просмотреть календарь за любой месяц. Также поместим список ComboBox, три надписи Label и пять кнопок Button.

 Приложение будет  обрабатывать события:

  • Form1: OnCreate;
  • Calendar1, ComboBox1, SpinEdit1: OnChange;
  • Button1, … Button5: OnClick.

 Разместите компоненты  примерно так: 

 Интерфейс нашего  приложения интуитивен: в календаре  пользователь может выбрать дату отображенного месяца, из списка выбрать месяц для отображения, а с помощью поля со стрелками ввести год. Нажатие на кнопку «Сегодня» прокручивает календарь до месяца, содержащего текущую системную дату, а кнопка «Установить», наоборот, устанавливает дату, выбранную в календаре, в качестве текущей.

Кнопки « << » и  « >> » прокручивают календарь  на один месяц назад и вперед соответственно.

2.2. Листинг программы

unit Unit1;

interface

uses

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

  Dialogs, DateUtils, StdCtrls, Spin, Grids, Calendar;

type

  TForm1 = class(TForm)

    Calendar1: TCalendar;

    SpinEdit1: TSpinEdit;

    ComboBox1: TComboBox;

    Button1: TButton;

    Button2: TButton;

    Button3: TButton;

    Label1: TLabel;

    Button4: TButton;

    Button5: TButton;

    Label2: TLabel;

    Label3: TLabel;

    procedure FormCreate(Sender: TObject);

    procedure Button2Click(Sender: TObject);

    procedure Calendar1Change(Sender: TObject);

    procedure SpinEdit1Change(Sender: TObject);

    procedure ComboBox1Change(Sender: TObject);

    procedure Button1Click(Sender: TObject);

    procedure Button3Click(Sender: TObject);

    procedure Button4Click(Sender: TObject);

    procedure Button5Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

const

    C2 : array [0..11] of String = ('крысы','коровы','тигра',

                                   'зайца','дракона','змеи',

                                   'лошади','овцы','обезьяны',

                                   'курицы','cобаки','свиньи');

var

  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

var I: Integer;

begin

Form1.Caption := 'Календарь';

Button1 .Caption := '&<<';

Button2.Caption := '&Сегодня';

Button3 .Caption := '&>>';

Button1.Width := 25;

Button3.Width := 25;

Button4.Caption := '&Установить';

Button5.Caption := '&Готово';

Label1.Font.Style :=[fsBold];

// Задаем номер первого  дня в неделе (1 = понедельник)

Calendar1.StartOfWeek := 1;

SpinEdit1.MinValue := 1;

SpinEdit1.MaxValue := 9999;

// Заполняем список  названиями месяцев

for I := 1 to MonthsPerYear do

ComboBox1.Items.Add(LongMonthNames[I]);

Button2Click(Sender);

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

Calendar1.CalendarDate := Now;

end;

procedure TForm1.Calendar1Change(Sender: TObject);

var

Tmp : String;

begin

// Выводим во вспомагательную  строку дату, выбранную в календаре

// В собственном формате

Tmp:=FormatDateTime ('dddd d mmmm yyyy', Calendar1.CalendarDate);

// Вспомогательную строку  отображаем в надписи

Label1.Caption := 'Дата: ' + Tmp;

// Прокручиваем список  до выбраного месяца

// (месяцы в календаре  нумеруются от 1, а элементы

// списка — от 0, поэтому  вычитаем 1)

ComboBox1.ItemIndex :=Calendar1.Month - 1;

// Прокручиваем поле  со сткрелками до выбраного  года

SpinEdit1.Value:= Calendar1.Year;

end;

procedure TForm1.SpinEdit1Change(Sender: TObject);

begin

//    Прокручиваем  календарь до года, выбраного  в SpinEdit

Calendar1.Year := SpinEdit1.Value;

if ((Calendar1.Year-1996)/4)=int((Calendar1.Year-1996)/4) then Label2.Caption:='високосный год'

   else Label2.Caption:='невисокосный год';

Label3.Caption:='Год '+C2[(Calendar1.Year-4) mod 12];

end;

procedure TForm1.ComboBox1Change(Sender: TObject);

begin

// Прокручиваем календарь  до месяца, выбраного в списке

Calendar1.Month := ComboBox1.ItemIndex + 1;

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

Calendar1.PrevMonth;

end;

procedure TForm1.Button3Click(Sender: TObject);

begin

Calendar1.NextMonth;

end;

procedure TForm1.Button4Click(Sender: TObject);

var SysTime: TSystemTime;

TmpTime: TdateTime;

begin

// Сохраняем в SysTime системную дату и время

GetSystemTime (SysTime);

TmpTime := SystemTimeToDateTime (SysTime);

// Заменяем часть "дата" датой, выбранной в календаре

ReplaceDate(TmpTime, Calendar1.CalendarDate);

// Преобразуем обратно в SystemTime

DateTimeToSystemTime (TmpTime, SysTime);

// Устанавливаем новым  системным временем

SetSystemTime (SysTime);

end;

procedure TForm1.Button5Click(Sender: TObject);

begin

Close;

end;

end.

2.3. Описание  используемых функций.

Для получения системного времени мы использовали функцию GetSystemTime из Windows API исключительно для иллюстрации  преобразования типов: в Delphi существует функция Now аналогичного назначения, но возвращающая результат типа TDateTime.

 Функция SetSystemTime возвращает  значение логического типа (True в  случае успеха), которое мы никак  не проверяем, хотя в реальном  приложении выполнять проверку  обязательно: установка системного времени могла завершиться неудачей, например, из-за того, что у пользователя, за¬пустившего приложение, недостаточно полномочий.

 В методе TForm1. FormCreate мы для наглядности вместо  константы 12 использовали константу  MonthsPerYear, объявленную в модуле DateUtils, ради которой мы этот модуль и подключаем. Эта константа появилась в Delphi начиная с версии 6, а для предыдущих версий (или для того, чтобы вычеркнуть модуль DateUtils из секции Uses) ее нужно объявить:

Код:

const Months PerYear=12;

Чтобы определить, високосный это год или нет, используется функция IsLeapYear. Функция IsLeapYear возвращает True, если данное календарное значение является високосным годом. Год может иметь значение 0.. 9999.

 

 

Заключение

 

Язык программирования Delphi 7 относится к языкам высокого уровня. Выделяются несколько базовых понятий в Delphi 7, такие как объекты, классы и методы. Этот язык прост в оперировании и широко используется для создания программ разного типа сложности.

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

В данной контрольной  работе была поставлена задача: разработка календаря.

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

Данная работа выполнялась  на компьютере, на котором установлена  операционная система Microsoft Windows 7 Максимальная.

Компьютер имеет достаточную  производительность и емкость внешней  памяти для функционирования ОС Microsoft Windows XP и программного обеспечения, а также оснащен мышью, клавиатурой и монитором с разрешением не менее 1024 на 768.

 

Список литературы

 

  1. Delphi 2007. Алгоритмы и программы: О. В. Чеснокова — Москва, НТ Пресс, 2008 г.- 368 с.
  2. Нил Дж. Рубенкинг. Язык программирования Delphi для «чайников». Введение в Borland Delphi 2006 = Delphi for Dummies. — М.: Диалектика, 2007. — 336 с.
  3. Осваиваем Delphi Win32: С. А. Любавин — Москва, НТ Пресс, 2008 г.- 576 с.
  4. Программирование в Delphi для Windows. Версии 2006, 2007, Turbo Delphi (+ CD-ROM): А. Я. Архангельский — Санкт-Петербург, Бином-Пресс, 2007 г.- 1248 с.
  5. Программирование в Turbo Pascal. Переход к Delphi (+ CD-ROM): Ю. А. Шпак — Москва, МК-Пресс, 2006 г.- 416 с.
  6. Программирование на Delphi Win32: С. А. Любавин — Москва, НТ Пресс, 2008 г.- 576 с.
  7. Самоучитель Delphi 7 Studio: Вячеслав Понамарев — Санкт-Петербург, БХВ-Петербург, 2003 г.- 504 с.
  8. Учимся программировать на Delphi 2007: О. В. Чеснокова — Санкт-Петербург, НТ Пресс, 2008 г.- 368 с.
  9. Хавьер Пашеку. Программирование в Borland Delphi 2006 для профессионалов = Delphi for .NET Developer’s Guide. — М.: Вильямс, 2006. — 944 с.

Информация о работе Календарные задачи