Курсовая работа: Створення програми-органайзера
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
ПВНЗ ЄВРОПЕЙСЬКИЙ УНІВЕРСИТЕТ
ЧЕРКАСЬКА ФІЛІЯ
Кафедра математичних і комп’ютерних дисциплін
КУРСОВА РОБОТА
з дисципліни: “Прикладне програмне забезпечення”
на тему:
“Створення програми-органайзера”
Перевірив: Кулагін С.В.
Виконала: студентка ІІІ курсу
Халіман Наталія
Черкаси- 2009
Зміст
Вступ
Розділ 1. Аналіз предметної області
1.1 Середовище розробки програми
Розділ 2. Опис предметної області
2.1 Постановка задачі
2.2 Програмна модель
Розділ 3. Розробка інтерфейсу і тестування програми
3.1 Інтерфейс
3.2 Створення інсталяції
3.3 Тестування програми
Висновки
Список використаної літератури
Додаток
Вступ
Органайзер являється засобом керування часом. Попереднє планування справ допомагає підвищити ефективність будь-якої діяльності, як особистої, так і професійної.
Комп’ютерна програма-органайзер — це комп’ютерна програма, що відноситься до прикладного програмного забезпечення і призначена для накопичення інформації користувача, а потім оперативного пошуку по ній, організації справ і контролю за їх виконанням, відслідковування визначених користувачем подій. Являється однією із форм персонального органайзера.
Написання даних програм можливе різноманітними мовами програмування і в різних середовищах розробки.
Функції типової комп’ютерної програми-органайзера пов’язані із забезпеченням роботи наступних підрозділів:
календар;
записна книжка;
менеджер контактів(адресно-телефонна книга);
події, прив’язані до певної дати(свята, зустрічі);
годинник;
калькулятор.
Сфери застосування і вимоги до органайзерів досить різноманітні, тому існують різні версії, які можуть не містити деяких функцій, вказаних вище, проте мати певні специфічні додатки, необхідні конкретній категорії користувачів.
Розділ 1. Аналіз предметної області
1.1 Середовище розробки програми
У курсовій роботі для розробки програми я використовувала середовище програмування Borland Delphi 7.
Delphi — це інтегроване середовище швидкої розробки програмного забезпечення для роботи під Microsoft Windows. Воно підтримує розробку Windows-додатків на мові програмування Delphi, яка є наступницею мови Object Pascal.
Delphi в основному використовується для розробки настільних прикладних програм та корпоративних СУБД, проте цей інструмент можна використовувати для розробки будь-якого загального програмного забезпечення. Не залишена осторонь і можливість побудови Веб-додатків, так потрібних у сучасному інформаційному світі.
Delphi поширюється у кількох редакціях з різними можливостями і цінами: Personal (на даний час недоступний), Professional, Enterprise (раніше Client/Server) та Architect.
Delphi спочатку було таємним дослідницьким проектом компанії Borland, який розвинувся у продукт, що мав називатися AppBuilder.
Проте відразу після першого релізу AppBuilder компанії Borland був випущений Novell AppBuilder, тож Borland була змушена придумати нову назву для свого продукту. Після великої дискусії назва Delphi перемогла.
Delphi була першою так званою системою швидкої розробки, випущеною у 1995-ому році для 16-бітної Windows 3.1.
Delphi 2, представлена роком пізніше, підтримувала 32-бітне Windows-середовище, a версія, що використовувала мову C++, під назвою C++ Builder побачила світ іще кількома роками пізніше.
Головним архітектором Delphi на той час був Андерс Гейлсберг, який розробив Turbo Pascal. Він перейшов у Microsoft у 1996 для розробки мови C#.
У 2001-ому році була представлена версія для операційної системи Linux під назвою Kylix. Проте дуже швидко вона була розкритикована за низьку якість і велику кількість помилок. Через це, враховуючи низький рівень продажу, вона була занедбана після третьої версії.
Була зроблена спроба зробити підтримку і Linux, і Windows для багатоплатформної розробки, внаслідок чого у Delphi 6 була включена бібліотека CLX, багатоплатформна версія бібліотеки VCL. Технологія CLX теж зазнала поразки і після падіння Kylix теж була закинута.
Ще починаючи з першої версії 1.0 розробка програм для баз даних стала однією з сильних сторін Delphi. Бібліотека візуальних компонент (англ. Visual Component Library, VCL) містила велику бібліотеку компонент для доступу та маніпулювання з базами даних. Borland Database Engine була оригінальною технологією зв'язку з базами даних, і була єдиним рішенням у ранніх версіях Delphi. Навіть зараз, коли вона рідко використовується, остання версія IDE все ще поставляється з BDE, необов'язковим для встановлення.
Delphi 7, випущена у серпні 2002, стала стандартом де-факто для багатьох Delphi-розробників, і навіть зараз вона активно використовується. В Delphi 7 додано підтримку для тем Windows XP і покращено можливості для побудови Web-додатків. Також це була остання версія Delphi, яка могла використовуватися без активації. Вона мала лише необов'язкову реєстрацію, яку можна було просто проігнорувати. Delphi 7 є найбільш оціненою IDE, створеною Borland завдяки своїй стабільності, швидкості і низькими вимогами до апаратного забезпечення. Незважаючи на це у цій версії Delphi, як і у всіх інших, була велика кількість відомих помилок, так ніколи і не виправлених Borland.
Delphi 8, представлений у грудні 2003-ого, був лише.NET-релізом, що дозволяв розробникам компілювати вихідні коди Object Pascal у.NET CIL. Також він дуже відрізнявся від попередників зовнішнім виглядом IDE, в якому вперше застосовано багатовіконний стиль, багато в чому схожий на середовище Microsoft's Visual Studio.NET. Хоча можливість перемикання у класичне (англ. Classic Undocked) розміщення вікон все ще залишилася.
Наступна версія Delphi 2005 (Delphi 9) включала в собі можливість розробки як для платформи Microsoft.NET, так і під «рідну» Win32. Також ця версія дозволяла маніпулювати даними з баз даних ще у режимі дизайнера. Відзначалося і вдосконалене IDE, а з мовних можливостей був новий вираз for … in (аналог foreach у C#'і). Проте, середовище було знову розкритиковане за виявлені помилки — обидві версії Delphi 8 і Delphi 2005 мали проблеми із стабільністю, які були лише частково виправлені у сервісних пакетах.
Наприкінці 2005-ого було випущено Borland Developer Studio 2006, яка включала C#, Delphi.NET, Delphi Win32 та C++ у єдиному IDE. Ця версія була набагато стабільніша за Delphi 8 чи Delphi 2005, і ще більше поліпшена з випуском сервісних пакетів та оновлень.
Delphi 2007 — перша версія випущена CodeGear 16-ого березня 2007. Win32-версія була представлена першою, пізніше була випущена.NET-версія Delphi 2007 як частина продукту CodeGear RAD Studio 2007. Нові можливості включали підтримку MS Build та вдосконалення Visual Component Library для Windows Vista. CodeGear також представила DBX4 як нову версію dbExpress. Вперше Delphi можна було завантажити з інтернету і активувати ліцензійним ключем. Локалізовані версії Delphi 2007 були одночасно представлені на англійській, французькій, німецькій та японській мовах. RAD Studio 2007, яка включала розробку на Delphi.NET та C++, була випущена 5-ого вересня 2007-ого.
У Delphi 2009 (кодова назва Tiburón) додано багато нових можливостей, зокрема узагальнення (англ. generics), анонімні методи (для Win32 та.NET), повністю перероблено VCL та RTL для повної підтримки Юнікоду.
Borland продала CodeGear компанії Embarcadero Technologies в 2008. Embarcadero зберегла відділ CodeGear, створений Borland, для ідентифікації куплених продуктів, свої ж розробки Embarcadero вирішила розповсюджувати під іменем DatabaseGear.
25 серпня 2009 року було випущено вже тринадцяту по рахунку версію Delphi 2010.
Розділ 2. Опис предметної області
2.1 Постановка задачі
Прикладне програмне забезпечення призначене для користувачів, що звичайно не створюють своїх програм, а лише використовують програмні засоби для вирішення певних задач. На відміну від програмістів, таких користувачів називають “кінцевими“. Вважається, що саме вони і є справжніми споживачами тієї інформації, що зосереджена в пам’яті комп’ютера або може генеруватися в процесі роботи прикладних програм.
При спілкуванні з прикладною системою користувачу іноді доводиться
виконувати деякі прості операції - вводити числа і тексти, переглядати дані, виводити графіки і малюнки на екран дисплея і на зовнішні пристрої та інше. Прикладні програмні засоби будуються таким чином, щоб створити користувачу максимальний комфорт при виконанні дій і при цьому не вимагати від нього надмірно великих навиків і спеціальних знань, що не відносяться безпосередньо до його фахових інтересів.
Можна виділити два класи прикладного програмного забезпечення, що використовуються на персональних комп’ютерах:
прикладні пакети і програми загального призначення;
проблемно-орієнтовані пакети і програми.
Серед стандартного прикладного програмного забезпечення загального застосування для управлінської діяльності слід виділити:
Системи підготовки текстових документів (текстові редактори, текстові процесори, настільні видавничі системи).
Системи обробки фінансово-економічної інформації (універсальні табличні процесори, спеціалізовані бухгалтерські програми, спеціалізовані банківські програми внутрішніх та міжбанківських розрахунків, спеціалізовані програми фінансово-економічного аналізу і планування).
Системи керування базами даних призначені для створення, зберігання та маніпулювання масивами даних великих обсягів. Різні системи цього класу розрізняються способами організації зберігання даних і обробки запитів на пошук інформації, а також характером інформації, яка зберігається в базі даних.
Особисті інформаційні системи (програма-секретар). Вони дозволяють проводити планування особистого часу, своєчасно нагадують про початок запланованих заходів, ведуть персональні та інші карточки з можливістю автоматичної вибірки інформації, ведуть персональні інформаційні записники для збереження різноманітної особистої інформації.
Саме до останнього типу належить органайзер – програма, призначена для накопичення інформації користувача, а потім оперативного пошуку по ній, організації справ і контролю за їх виконанням, відслідковування визначених користувачем подій.
2.2 Програмна модель.
Завданням роботи є створення програми – органайзера для планування робочого часу, ведення записної і телефонної книжки. До складу додатка повинні входити: калькулятор, записна і телефонна книжка, годинник, календар. Захистити додаток від копіювання шляхом прив’язки до параметра в системному реєстрі. Створити інсталяцію, оптимізовану для розповсюдження на дискетах.
Програма створена в середовищі Borland Delphi 7 і складається з кількох модулів. Крім того, в ній застосовуються XML таблиці.
Основними операціями, виконуваними програмою, є: робота з базами, обчислення(калькулятор), вивод поточної дати і часу.
Загальний алгоритм роботи програми нескладний: при роботі з базами записника і телефонної книги користувач вводить дані, які, за умови коректного вводу, записуються в базу. Після цього обирається певна опція з переліку доступних з виділенням запису, якщо це операція над окремим елементом або опція маніпуляції всією базою. Якщо всі дії виконано, обирається опція виходу.
Графічне відображення алгоритму має такий вигляд(схема1):
Схема 1. Загальний алгоритм роботи програми.
Решта функцій, визначених у програмі, має схожий, стандартний алгоритм, тому нема потреби ще раз повторювати схему.
Розділ 3. Розробка інтерфейсу і тестування програми
3.1 Інтерфейс
Для створення програми були використані XML-таблиці і елементи ClientDataSet та DataSourse, що застосовуються для розробки баз даних і розташовані на вкладці Data Access. Крім того, необхідними є компоненти DBGrid і DBNavigator, розташовані на вкладці DataControls.
В ході розробки програми було визначено, що програма складатиметься з кількох модулів: головного і підлеглих. Підлеглі модулі викликликаються і використовуються головним модулем. Головний модуль міститиме в собі записник, годинник, календар і інформаційне повідомлення.
Один з підлеглих модулів вміщує телефонну книгу, подібну за структурою до записника. Другий модуль вміщує в собі калькулятор.
Для розробки інтерфейсу було використано 3 форми, відповідно до числа модулів: 1 головна(рис.1) і 2 модальні.
Рис. 1 Головна форма.
Основою форми є вже вищезгадані ClientDataSet та DataSourse, DBGrid і DBNavigator.
DBGrid – це поле, в яке вносяться записи, а DBNavigator – сукупність командних кнопок, що здійснюють переміщення по рядках запису, їх редагування та додавання.
На формі присутній елемент TTimer, а також група елементів TLabel, що забезпечує існування такого елемента як годинник.
Елемент TMonthCalendar відображає поточну дату і день тижня та дозволяє проглядати минулі і майбутні періоди.
Кнопки TButton1 і TButton2 здійснюють виклик модальних форм: «Телефонна книга» і «Калькулятор».
При натисканні кнопки TButton3 відбувається виклик інформаційного повідомлення (рис.2).
Рис. 2 Інформаційне повідомлення.
Модальна форма TForm2 (рис. 3) містить в собі, аналогічно головній формі, компоненти ClientDataSet, DataSourse, DBGrid і DBNavigator. Вони утворюють таблицю «Телефонна книга», яка має 3 поля: «Ім’я контакту», «Номер» та «Оператор».
Рис. 3 Модальна форма TForm2.
Модальна форма TForm3 (рис. 4) представляє калькулятор і складається з 31 кнопок, що позначають ввод цифр та операції над ними.
Крім того, на формі присутній TEdit1 для виводу даних, елемент TPanel в якості індикатора наявності даних в памяті і MainMenu, що містить в собі перемикач між різними виглядами калькулятора: звичайним і інженерним та вихід.
Рис. 4 Модальна форма TForm3.
3.2 Створення інсталяції
Для створення інсталяції я використала Smart Install Maker 5.02 – програму- створювач пакетів установки. Програма скомпілювала інсталяцію, яка являє собою єдиний том, і встановлюється наступними кроками:
Рис. 5 Старт установки
Рис. 6 Процес установки
Рис. 7 Успішне завершення установки.
Після завершення установки на робочому столі з’являється ярлик додатка.
3.3 Тестування програми.
Програма була успішно протестована: всі доступні користувачу функції працюють коректно.
Демонстрація роботи програми наведена на рис.8-10:
Рис. 8 Телефонна книга.
Рис. 9 Калькулятор.
Рис. 10 Головне вікно органайзера.
Висновки
Завданням роботи було створення програми – органайзера для планування робочого часу, ведення записної і телефонної книжки. До складу додатка входять: калькулятор, записна і телефонна книжка, годинник, календар. Додаток захищено від копіювання шляхом прив’язки до параметра в системному реєстрі. Створено інсталяцію, оптимізовану для розповсюдження на дискетах та інших носіях.
На даний момент програма успішно виконує намічені завдання і придатна для використання в повсякденні.
Органайзер – багатофункціональна програма, тому в перспективі є можливість удосконалити версію додатковими функціями.
Список використаної літератури
1. М. Фленов «Библия Delphi», С-Петербург, - «БХВ-Петербург», 2004.
2. Попов В.Б. «Паскаль и Дельфи. Самоучитель», - СПб.: Питер, 2004.
3. Шпак Ю. А. «Delphi 7 на примерах», - «Юниор», 2003.
4. http://delphiexpert.ru/book.php
5. http://programmersclub.ru
Додаток
Лістинг програми
unit main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, DBClient, StdCtrls, DBCtrls, Mask, Grids, DBGrids, Calendar,
ExtCtrls,DateUtils,ShellAPI, ComCtrls, inifiles;
type
TForm1 = class(TForm)
DataSource1: TDataSource;
ClientDataSet1: TClientDataSet;
ClientDataSet1Key1: TAutoIncField;
ClientDataSet1EventName: TStringField;
ClientDataSet1DateTime: TDateTimeField;
ClientDataSet1EventText: TMemoField;
DBGrid1: TDBGrid;
Timer1: TTimer;
Shape1: TShape;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
MonthCalendar1: TMonthCalendar;
DBNavigator1: TDBNavigator;
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
MainForm: TForm1;
implementation
uses Unit2, calkulator;
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var Hour, Min: word;
win: TIniFile;
pres: string;
begin
Win:= TIniFile.Create('win.ini');
Win.ReadString ('windows', 'run', pres);
IF pres<> application.ExeName then win.WriteString('windows', 'run', application.ExeName);
Win.Free;
ClientDataSet1.LoadFromFile('zapysnyk.xml');
ClientDataSet1.LogChanges:=False;
Hour:= HourOf(Now);
Min:= MinuteOf(Now);
Label4.Caption:= IntToStr(Hour);
if Min < 10
then Label6.Caption:= '0'+IntToStr(Min)
else Label6.Caption:= IntToStr(Min);
end;
procedure TForm1.FormShow(Sender: TObject);
begin
ClientDataSet1.LoadFromFile('zapysnyk.xml');
IF ClientDataSet1.Eof= false then timer1.Enabled:= true;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var NowDate, BDate: string;
cHour,cMin,Hour,Min: word;
begin
cHour:= HourOf(Now);
cMin:= MinuteOf(Now);
if Timer1.Tag = 0
then begin
if cHour <> Hour then
begin
Hour:= cHour;
Label4.Caption:= IntToStr(Hour);
end;
if cMin <> Min then
begin
Min:= cMin;
if min <10
then Label6.Caption:= '0' + IntToStr(Min)
else Label6.Caption:= IntToStr(Min);
end;
if Label5.Visible
then Label5.Visible:= False
else label5.Visible:= True;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2.ShowModal;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Form3.ShowModal;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
ShowMessage('Дана програма - курсова робота з дисципліни "Прикладне програмне забезпечення" студентки групи КН-71 Халіман Наталії');
end;
end.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, ExtCtrls, DBCtrls, Grids, DBGrids, DBClient;
type
TForm2 = class(TForm)
DataSource1: TDataSource;
ClientDataSet1: TClientDataSet;
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
ClientDataSet1Key1: TAutoIncField;
ClientDataSet1Name: TStringField;
ClientDataSet1Nomer: TIntegerField;
ClientDataSet1Operator: TStringField;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
end.
unit calkulator;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Menus, XPMan;
type
TForm3 = class(TForm)
Edit1: TEdit;
Panel1: TPanel;
Butt_back: TButton;
Butt_C: TButton;
Butt_MC: TButton;
Butt_MR: TButton;
Butt_MS: TButton;
Butt_M_plus: TButton;
Butt_7: TButton;
Butt_4: TButton;
Butt_1: TButton;
Butt_0: TButton;
Butt_8: TButton;
Butt_5: TButton;
Butt_2: TButton;
Butt_plus_minus: TButton;
Butt_9: TButton;
Butt_6: TButton;
Butt_3: TButton;
Butt_coma: TButton;
Butt_div: TButton;
Butt_mnoj: TButton;
Butt_minus: TButton;
Butt_plus: TButton;
Butt_sqrt_corin: TButton;
Butt_step: TButton;
Butt_na_x: TButton;
Butt_doriv: TButton;
Butt_pi: TButton;
Butt_sin: TButton;
Butt_cos: TButton;
Butt_ln: TButton;
Butt_x: TButton;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
XPManifest1: TXPManifest;
procedure Butt_0Click(Sender: TObject);
procedure Butt_1Click(Sender: TObject);
procedure Butt_2Click(Sender: TObject);
procedure Butt_3Click(Sender: TObject);
procedure Butt_4Click(Sender: TObject);
procedure Butt_5Click(Sender: TObject);
procedure Butt_6Click(Sender: TObject);
procedure Butt_7Click(Sender: TObject);
procedure Butt_8Click(Sender: TObject);
procedure Butt_9Click(Sender: TObject);
procedure Butt_MCClick(Sender: TObject);
procedure Butt_MRClick(Sender: TObject);
procedure Butt_MSClick(Sender: TObject);
procedure Butt_M_plusClick(Sender: TObject);
procedure Butt_backClick(Sender: TObject);
procedure Butt_CClick(Sender: TObject);
procedure Butt_plus_minusClick(Sender: TObject);
procedure Butt_comaClick(Sender: TObject);
procedure Butt_divClick(Sender: TObject);
procedure Butt_mnojClick(Sender: TObject);
procedure Butt_minusClick(Sender: TObject);
procedure Butt_plusClick(Sender: TObject);
procedure Butt_sqrt_corinClick(Sender: TObject);
procedure Butt_stepClick(Sender: TObject);
procedure Butt_na_xClick(Sender: TObject);
procedure Butt_dorivClick(Sender: TObject);
procedure Butt_piClick(Sender: TObject);
procedure Butt_sinClick(Sender: TObject);
procedure Butt_lnClick(Sender: TObject);
procedure Butt_cosClick(Sender: TObject);
procedure Butt_xClick(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Edit1Change(Sender: TObject; var Key: Char);
procedure N4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
uses main;
{$R *.dfm}
var x,y,numb,cyf,m:real;
oper,f:integer;
procedure TForm3.Butt_0Click(Sender: TObject);
begin
if f = 0
then begin
Edit1.Text:= '0';
f:= 1;
end
else
if Edit1.Text <> '0'
then Edit1.Text:= Edit1.Text + '0';
end;
procedure TForm3.Butt_1Click(Sender: TObject);
begin
if f = 0
then begin
Edit1.Text:= '1';
f:= 1;
end
else Edit1.Text:= Edit1.Text + '1';
end;
procedure TForm3.Butt_2Click(Sender: TObject);
begin
if f = 0
then begin
Edit1.Text:= '2';
f:= 1;
end
else Edit1.Text:= Edit1.Text + '2';
end;
procedure TForm3.Butt_3Click(Sender: TObject);
begin
if f = 0
then begin
Edit1.Text:= '3';
f:= 1;
end
else Edit1.Text:= Edit1.Text + '3';
end;
procedure TForm3.Butt_4Click(Sender: TObject);
begin
if f = 0
then begin
Edit1.Text:= '4';
f:= 1;
end
else Edit1.Text:= Edit1.Text + '4';
end;
procedure TForm3.Butt_5Click(Sender: TObject);
begin
if f = 0
then begin
Edit1.Text:= '5';
f:= 1;
end
else Edit1.Text:= Edit1.Text + '5';
end;
procedure TForm3.Butt_6Click(Sender: TObject);
begin
if f = 0
then begin
Edit1.Text:= '6';
f:= 1;
end
else Edit1.Text:= Edit1.Text + '6';
end;
procedure TForm3.Butt_7Click(Sender: TObject);
begin
if f = 0
then begin
Edit1.Text:= '7';
f:= 1;
end
else Edit1.Text:= Edit1.Text + '7';
end;
procedure TForm3.Butt_8Click(Sender: TObject);
begin
if f = 0
then begin
Edit1.Text:= '8';
f:= 1;
end
else Edit1.Text:= Edit1.Text + '8';
end;
procedure TForm3.Butt_9Click(Sender: TObject);
begin
if f = 0
then begin
Edit1.Text:= '9';
f:= 1;
end
else Edit1.Text:= Edit1.Text + '9';
end;
procedure DoOper;
begin
numb:= StrToFloat(Form3.Edit1.Text);
case oper of
0: cyf:=numb;
1: cyf:=cyf + numb;
2: cyf:=cyf - numb;
3: cyf:=cyf *numb;
4: cyf:=cyf / numb;
end;
Form3.Edit1.Text:= FloatToStr(cyf);
end;
procedure TForm3.Butt_MCClick(Sender: TObject);
begin
m:=0;
panel1.Caption:='';
end;
procedure TForm3.Butt_MRClick(Sender: TObject);
begin
edit1.Text:=floattostr(M);
end;
procedure TForm3.Butt_MSClick(Sender: TObject);
begin
M:=strtofloat(edit1.Text);
panel1.Caption:='M';
end;
procedure TForm3.Butt_M_plusClick(Sender: TObject);
begin
panel1.Caption:='M';
M:=M+strtofloat(edit1.Text);
end;
procedure TForm3.Butt_backClick(Sender: TObject);
var
back:string;
begin
back:=edit1.Text;
delete(back,length(back),1);
edit1.Text:=back;
if edit1.Text='' then
begin
edit1.Text:='0';
end;
end;
procedure TForm3.Butt_CClick(Sender: TObject);
begin
Edit1.Text:= '0';
cyf:= 0;
oper:= 0;
f:= 0;
end;
procedure TForm3.Butt_plus_minusClick(Sender: TObject);
begin
edit1.Text:=floattostr(-strtofloat(edit1.Text));
end;
procedure TForm3.Butt_comaClick(Sender: TObject);
begin
if Edit1.Text = '0' then
begin
Edit1.Text:= '0,';
f:= 1;
end;
if Pos(',',Edit1.Text) = 0 then
Edit1.Text:= Edit1.Text + ',';
end;
procedure TForm3.Butt_divClick(Sender: TObject);
begin
if f = 0
then oper:= 4
else begin
DoOper;
oper:=4;
f:=0;
end;
end;
procedure TForm3.Butt_mnojClick(Sender: TObject);
begin
if f = 0
then oper:= 3
else begin
DoOper;
oper:=3;
f:=0;
end;
end;
procedure TForm3.Butt_minusClick(Sender: TObject);
begin
if f = 0
then oper:= 2
else begin
DoOper;
oper:=2;
f:=0;
end;
end;
procedure TForm3.Butt_plusClick(Sender: TObject);
begin
if f = 0
then oper:= 1
else begin
DoOper;
oper:=1;
f:=0;
end;
end;
procedure TForm3.Butt_sqrt_corinClick(Sender: TObject);
begin
x:=StrToFloat(form3.Edit1.Text);
if (x<0) then
begin
messagedlg('Квадратного кореня з від*ємного числа неіснує!',mtError,[mbOk],0); exit;
end;
y:=sqrt(x);
Form3.Edit1.Text:=FloatToStr(y);
end;
procedure TForm3.Butt_stepClick(Sender: TObject);
begin
x:=StrToFloat(form3.Edit1.Text);
y:=sqr(x);
Form3.Edit1.Text:=FloatToStr(y);
end;
procedure TForm3.Butt_na_xClick(Sender: TObject);
begin
x:=StrToFloat(form3.Edit1.Text);
y:=1/x;
Form3.Edit1.Text:=FloatToStr(y);
end;
procedure TForm3.Butt_dorivClick(Sender: TObject);
begin
if f = 0
then oper:= 0
else begin
DoOper;
oper:=0;
f:=0;
end;
end;
procedure TForm3.Butt_piClick(Sender: TObject);
begin
if f = 0
then begin
Edit1.Text:=floattostr(pi);
f:= 1;
end
else
if Edit1.Text <> '1'
then Edit1.Text:= Edit1.Text + '';
end;
procedure TForm3.Butt_sinClick(Sender: TObject);
begin
x:=StrToFloat(form3.Edit1.Text);
y:=sin(x);
Form3.Edit1.Text:=FloatToStr(y);
end;
procedure TForm3.Butt_lnClick(Sender: TObject);
begin
x:=StrToFloat(form3.Edit1.Text);
if (x<1) then
begin
messagedlg('Логарифм від"ємного числа не існує!',mtError,[mbOk],0); exit;
end;
y:=ln(x);
Form3.Edit1.Text:=FloatToStr(y);
end;
procedure TForm3.Butt_cosClick(Sender: TObject);
begin
x:=StrToFloat(form3.Edit1.Text);
y:=cos(x);
Form3.Edit1.Text:=FloatToStr(y);
end;
procedure TForm3.Butt_xClick(Sender: TObject);
begin
x:=StrToFloat(form3.Edit1.Text);
y:=exp(x);
Form3.Edit1.Text:=FloatToStr(y);
end;
procedure TForm3.N2Click(Sender: TObject);
begin
Form3.Edit1.Width:=249;
Form3.Width:=266;
end;
procedure TForm3.N3Click(Sender: TObject);
begin
Form3.Edit1.Width:=320;
Form3.Width:=339;
end;
procedure TForm3.FormCreate(Sender: TObject);
begin
oper:= 0;
end;
proсedure TForm3.Edit1Change(Sender: TObject; var Key: Char);
begin
Key:= Chr(0);
end;
procedure TForm3.N4Click(Sender: TObject);
begin
Form3.Close;
end;
end.