русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Пояснительная записка


Дата добавления: 2015-07-09; просмотров: 775; Нарушение авторских прав


КУРСОВАЯ РАБОТА

по дисциплине

Объектно-ориентированное программирование

 

 

Пояснительная записка

 

 

Студент группы ИВС-12 Горелик С. Ф.

 

Руководитель канд. техн. наук, профессор Паламарь И. Н.

 

Нормоконтролёр канд. техн. наук, профессор Паламарь И. Н.

 

 

Рыбинск 2013



Содержание

Введение ............................................................................ 2

1 Постановка задачи........................................................... 4

2 Анализ технического задания.......................................... 5

3 Кодирование программы................................................. 6

4 Разработка алгоритма...................................................... 7

5 Контрольный пример..................................................... 12

6 Руководство пользователя............................................. 13

7 Тестирование.................................................................. 19

Заключение........................................................................ 18

Список использованных источников................................ 21

Приложение А Листинг программы................................. 22

 

Введение

Объектно-ориентированное, или объектное, программирование — парадигма программирования, в которой основными концепциями являются понятия объектов и классов. Основные понятия:

Абстрагирование — это способ выделить набор значимых характеристик объекта, исключая из рассмотрения незначимые. Соответственно, абстракция — это набор всех таких характеристик.

Инкапсуляция — это свойство системы, позволяющее объединить данные и методы, работающие с ними в классе, и скрыть детали реализации от пользователя.



Наследование — это свойство системы, позволяющее описать новый класс на основе уже существующего с частично или полностью заимствующейся функциональностью. Класс, от которого производится наследование, называется базовым, родительским или суперклассом. Новый класс — потомком, наследником или производным классом. Класс может наследовать поведение одного класса (одиночное наследование) или нескольких классов ( множественное наследование).

Полиморфизм — это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.

Класс — это некое множество объектов, имеющих общую структуру и общее поведение.

Прототип — это объект-образец, по образу и подобию которого создаются другие объекты. Объекты-копии могут сохранять связь с родительским объектом, автоматически наследуя изменения в прототипе; эта особенность определяется в рамках конкретного языка.

Состояние объекта характеризуется перечнем всех свойств данного объекта и текущими значениями каждого из этих свойств.

Поведение — это то, как объект действует и реагирует. Поведение выражается в терминах изменения состояния объекта и передачи сообщений.

 

1 Постановка задачи

Создать программу «Расчет квартплаты» на языке Borland Delphi 7.

 

 

2 Анализ технического задания

Для решения данной задачи необходимо учесть следующие особенности:

- использование языка Delphi ;

- интерфейс MDI;

- конструктор;

- деструктор;

- свой класс;

- поля;

- наследование;

- строки состояния и подсказки;

- radio – группы и CheckBox;

- программирование клавиатуры;

- использование диаграмм;

- использование интерфейса Drag&Dock;

- помощь.

 

 

3 Кодирование программы

При написании программы для расчета квартплаты были использованы определенные зарезервированные идентификаторы, имеющие специальные значения для компилятора, которые описаны в этом разделе.

Типы значений:

- double — тип с плавающей запятой, поддерживающий приблизительно 15 цифр точности;

- boolean — позволяет принимать только значения true и false.

Ключевые слова:

- constructor — специальный блок инструкций, вызываемый при создании объекта. Конструктор схож с методом, но отличается от метода тем, что не имеет явным образом определённого типа возвращаемых данных, не наследуется, и обычно имеет различные правила для рассматриваемых модификаторов;

- inherited — вызов конструктора;

- uses — список использованных модулей;

- destructor — деструктор.

Модификаторы:

- public является модификатором доступа для типов и членов типов. Общий (public) доступ является уровнем доступа с максимальными правами. Ограничений доступа к общим членам не существует.

Операторы:

- if — оператор выбора, выбирает оператор для выполнения на основе значения выражения Boolean;

- for — оператор инерции, повторно выполняет оператор или блок операторов, пока определенное выражение не примет значение false.

 

 


4 Разработка алгоритма

Для описания алгоритма работы данной программы можно использовать блок- схему, которая отражает основной алгоритм программы. Блок-схемой называют графическое представление алгоритма, в котором он изображается в виде последовательности связанных между собой функциональных блоков, каждый из которых соответствует выполнению одного или нескольких действий.

На рисунке 4.1 представлена блок-схема функции TForm1.ptimerTimer, которая отвечает за уменьшение топлива и боеготовности. Если танк заглох, и игра окончена. Если бензина нет, то игра останавливается (game:=false).


Процедура TForm1.ptimerTimer:

Если tt=1 то выбираем танк 1 иначе выбираем танк 2. Если у танка 1 уровень бензина равен нулю (t1.petrol=0), то Game:=false (останавливаем игру), в статус бар выводим сообщение «Танк заглох. Игра окончена». Присваиваем всем таймерам значение false (останавливаем таймеры). Если у танка 2 уровень бензина равен нулю (t2.petrol=0) или закончились снаряды (t2.fight=0), то повторяем аналогичные действия (как для танка 1).

 

Рисунок 4.1 – процедура TForm1.ptimerTimer (начало)

 

 

Рисунок 4.2 – процедура TForm1.ptimerTimer (продолжение)


 

TForm2.FormKeyPress:

Если нажат пробел (это выстрел) (key=' ') и снаряда нет на поле (isTracer=false) и это второй танк (tt=2), то в зависимости от направления танка, рисуем снаряд. Если танк повёрнут налево, то снаряд летит влево, аналогично для других направлений. Отмечаем, что снаряд летит (isTracer:=true) в направлении, в котором повёрнут танк (trto:=t2.direction). Добавляем 5 снарядов (t2.fight:=t2.fight+5). Если снаряды закончились (t2.fight=0), то пополняем их запас (t2.fight:=100).

Если нажата клавиша управление танком: (key='w') or (key='W') or (key='ц') or (key='Ц'), то танк движется вверх; (key='s') or (key='S') or (key='ы') or (key='Ы'), то танк движется вниз; (key='a') or (key='A') or (key='ф') or (key='Ф'), то танк движется влево; (key='d') or (key='D') or (key='в') or (key='В'), то танк движется вправо.

Если на карте есть ресурс (himg.visible=true), то проверяем, не наехал ли танк на него (abs(himg.Top-timg.top)<timg.Width) and (abs(himg.Left-timg.Left)<timg.Height) – тогда ресурс исчезает (himg.Visible:=false) и меняем параметры. Если танк 1 наехал на аптечку, то если запас пуст и здоровья много, помещает её в запас, иначе восстанавливает здоровье (t1.health:=100). Аналогично для танка 2. Если танк 1 наехал на канистру, то если запас пуст и топлива много, помещает её в запас, иначе заправляется (t1.petrol:=100). Аналогично для танка 2.

Рисунок 4.2 – процедура TForm2.FormKeyPress (начало)

 

Рисунок 4.3 – процедура TForm2.FormKeyPress (продолжение)

Рисунок 4.4 – процедура TForm2.FormKeyPress (продолжение)

 

 

Рисунок 4.4 – процедура TForm2.FormKeyPress (продолжение)

5 Контрольный пример

В данном пункте будут предоставлены примеры поведения программы при введении тех или иных данных.

На рисунке 5.1 представлено окно ввода тарифов на различные услуги.

Рисунок 5.1 – Тарифы на услуги

 

На рисунке 5.2 представлен основное окно программы, в котором производится ввод значений, необходимых для расчета квартплаты.

 

Рисунок 5.2 - Окно программы

На рисунке 5.3 показано меню программы, с помощью которого можно посмотреть статистику, установить нужные тарифы и настроить пути сохранения и загрузки файлов.

 

Рисунок 5.3 – меню программы

 

На рисунке 5.4 изображено окно с настройками программы. Здесь можно определить путь к текстовому файлу, в который можно загрузить введенные данные и в дальнейшем их открыть. Так же можно определить путь к файлу статистики для построения диаграммы.

 

Рисунок 5.4 – Настройки программы

 

На рисунке 5.5 изображена статистика, которая отображает количество затраченных денег в различное время

 

 

Рисунок 5.5 – Диаграмма

 

На рисунке 5.6 изображено выпадающее меню с выбором периода для расчета квартплаты.

Рисунок 5.6 – Выбор периода

 

6 Руководство пользователя

Для того что бы запустить программу нужно использовать Borland Delphi 7

Borland Delphi 7 – это среда разработки программного обеспечения. После установки, запустите Borland Delphi 7. Появится начальная страница, изображенная на рисунке 6.1


Рисунок 6. Вид плавающ

 

 

Рисунок 6.1 – Начальная страница Borland Delphi 7

 

В меню File выберите пункт Open Project или нажмите CTRL+F11.

Далее в диалоговом окне выбираем файл:

Мой компьютер/DVDдиск/Rent/FlatPro.dpr (Рисунок 6.2)

 


Рисунок 6.2 — Открытие программы в Borland Delphi 7

Для запуска программы в появившемся окне в меню Run выбираем пункт Run. Данное действие так же можно выполнить нажав клавишу F9 (Рисунок 6.3)

 

Рисунок 6.2 – Открытие файла

На рисунке 6.3 изображен открытый проект с программой расчета квартплаты.

 


Рисунок 6.3 — запуск программы Delphi 7

 

 

 

Рисунок 6.3 – Открытый проект

 

 

7 Тестирование программы

Тестирование программного обеспечения – процесс исследования программного обеспечения с целью получения информации о качестве продукта. На рисунке 7.1 изображена ситуация, когда не все поля для расчета заполнены.

Рисунок 7.1 – Незаполненные поля

На рисунке 7.2 изображена ситуация, когда в настройках загрузки указан путь к несуществующему файлу.

 

Рисунок 7.2 – Неправильный путь

 

Заключение

В ходе выполнения курсовой работы была разработана программа «Расчет квартплаты», созданная в среде Borland Delphi 7, где происходит расчет квартплаты для различных данных, при различных тарифах, льготах и в различные периоды. При создании программы были рассмотрены различные управляющие структуры программирования, разные компоненты и возможности Delphi 7.


Список использованных источников

1 Рубанцев В.Н. "Delphi в примерах, играх и программах", издательство "Наука и техника", Москва, 2011

2 Михаил Голованов, Евгений Веселов: Создание компонентов в среде Delphi.

3 Евгений Марков, Петр Дарахвелидзе Delphi 2005 для Win32

4 А. Я. Архангельский. - Программирование в Delphi для Windows. Версии 2006, 2007, Turbo Delphi

5 Дмитрий Осипов. Delphi. Профессиональное программирование


 

 

Приложение A

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

Uflat.pas

//---------------------------------------------------------------------------

unit UFlat;

 

interface

 

uses

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

Dialogs, Menus, ComCtrls, XPMan, UMonth, UOptions, UStat, URate, UHelp, Grids,

ExtCtrls, jpeg, Math;

 

type

TForm1 = class(TForm)

XPManifest1: TXPManifest;

StatusBar1: TStatusBar;

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

N5: TMenuItem;

N6: TMenuItem;

N7: TMenuItem;

Image1: TImage;

Panel1: TPanel;

Image2: TImage;

Image3: TImage;

Image4: TImage;

procedure N4Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure N7Click(Sender: TObject);

procedure N2Click(Sender: TObject);

procedure N6Click(Sender: TObject);

procedure N5Click(Sender: TObject);

procedure Image1Click(Sender: TObject);

procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

procedure Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

procedure Image2Click(Sender: TObject);

procedure Image3Click(Sender: TObject);

procedure Image4Click(Sender: TObject);

procedure Panel1Click(Sender: TObject);

private

public

end;

 

TRate = class(TObject) // класс тариф

private

status: TStatusBar; // строка состояния

ttex: double; // техобслуживание

theating: double; // отопление

twater: double; // вода

thotwater: double; // подогрев воды

tup: double; // лифт

trebuild: double; // ремонт

ttv:double; // телевидение

tradio:double; // радио

procedure setRateTex(p:double); // изменить значение

procedure setRateHeating(p:double);

procedure setRateWater(p:double);

procedure setRateHotwater(p:double);

procedure setRateUp(p:double);

procedure setRateRebuild(p:double);

procedure setRateTv(p:double);

procedure setRateRadio(p:double);

function getRateTex:double; // получить значение

function getRateHeating:double;

function getRateWater:double;

function getRateHotwater:double;

function getRateUp:double;

function getRateRebuild:double;

function getRateTv:double;

function getRateRadio:double;

public

property ratetex:double read getRateTex write setRateTex; // свойства для работы со значениями

property rateheating:double read getRateHeating write setRateHeating;

property ratewater:double read getRateWater write setRateWater;

property ratehotwater:double read getRateHotwater write setRateHotwater;

property rateup:double read getRateUp write setRateUp;

property raterebuild:double read getRateRebuild write setRateRebuild;

property ratetv:double read getRateTv write setRateTv;

property rateradio:double read getRateRadio write setRateRadio;

constructor Create(var s:TStatusbar);

destructor Destroy; override;

end;

 

TFlat=class(TRate) // класс Квартира, потомок класса Тариф

private

ptex: double; // тех обслуживание

pheating: double; // отопление

pwater: double; // вода

photwater: double; // подогрев воды

pup: double; // лифт

prebuild: double; // ремонт

ptv:double; // телевидение

pradio:double; // радио

 

pexemption: double; // скидка

procedure setExemption(p:double); // установка значений

procedure setTex(p:double);

procedure setHeating(p:double);

procedure setWater(p:double);

procedure setHotwater(p:double);

procedure setUp(p:double);

procedure setRebuild(p:double);

procedure setTv(p:double);

procedure setRadio(p:double);

function getTex:double; // получение значений

function getHeating:double;

function getWater:double;

function getHotwater:double;

function getUp:double;

function getRebuild:double;

function getTv:double;

function getRadio:double;

function getExemption:double;

public

property exemption:double read getExemption write setExemption; // свойства для работы со значениями

property tex:double read getTex write setTex;

property heating:double read getHeating write setHeating;

property water:double read getWater write setWater;

property hotwater:double read getHotwater write setHotwater;

property up:double read getUp write setUp;

property rebuild:double read getRebuild write setRebuild;

property tv:double read getTv write setTv;

property radio:double read getRadio write setRadio;

 

procedure showRate(S:TStringGrid); // показать тариф в таблице

procedure savetofile(ind:integer; year:integer); // сохранить данные за месяц в файл

procedure loadfromfile(var ind:integer; var year:integer); // загрузить данные за месяц в файл

function getTotal():string; // найти итоговую сумму

constructor Create(var s:TStatusBar); // конструктор

destructor Destroy; override; // деструктор

end;

 

var

Form1: TForm1;

flat: TFlat; // объект класса TFlat

isTv:boolean; // выбран ли канал для перемещения на панель Ваши TV каналы

tv:integer; // тип выбранного канала

implementation

 

{$R *.dfm}

procedure TFlat.loadfromfile(var ind:integer; var year:integer);

var f:textfile;

begin

assignfile(f,Form3.Edit1.Text);

reset(f); // открываем для чтения файл

readln(f,ind);

readln(f,year);

readln(f,ptex);

readln(f,pheating);

readln(f,pwater);

readln(f,photwater);

readln(f,pup);

readln(f,pradio);

readln(f,ptv);

readln(f,prebuild);

close(f);

end;

 

procedure TFlat.savetofile(ind:integer; year:integer);

var f:textfile;

begin

assignfile(f,Form3.Edit1.Text);

rewrite(f);

writeln(f,ind);

writeln(f,year);

writeln(f,FloatToStr(ptex));

writeln(f,FloatToStr(pheating));

writeln(f,FloatToStr(pwater));

writeln(f,FloatToStr(photwater));

writeln(f,FloatToStr(pup));

writeln(f,FloatToStr(pradio));

writeln(f,FloatToStr(ptv));

writeln(f,FloatToStr(prebuild));

close(f);

end;

 

function TFlat.getTotal():string;

var total:double;

begin total:=ptex*ttex+pheating*theating+pup*tup+pwater*twater+photwater*thotwater;

total:=total+prebuild*trebuild+pradio*tradio+ptv*ttv;

total:=total*(100-exemption)/100;

status.SimpleText:='Получена итоговая сумма';

result:=FloatToStr(total);

end;

procedure TFlat.showRate(S:TStringGrid);

begin

S.Cells[0,1]:=FloatToStr(ttex);

S.Cells[0,2]:=FloatToStr(theating);

S.Cells[0,3]:=FloatToStr(twater);

S.Cells[0,4]:=FloatToStr(thotwater);

S.Cells[0,5]:=FloatToStr(tup);

S.Cells[0,6]:=FloatToStr(trebuild);

S.Cells[0,7]:=FloatToStr(tradio);

S.Cells[0,8]:=FloatToStr(ttv);

end;

 

constructor TFlat.Create(var s:TStatusBar);

begin

inherited Create(s); // вызов конструктора родителя

ptex:=0;

pheating:=0;

pwater:=0;

photwater:=0;

pup:=0;

prebuild:=0;

ptv:=0;

pradio:=0;

pexemption:=0;

end;

 

destructor TFlat.Destroy;

begin

inherited;

end;

 

function TFlat.getTex: double;

begin

result:=ptex;

end;

function TFlat.getExemption: double;

begin

result:=pexemption;

end;

function TFlat.getHeating: double;

begin

result:=pheating;

end;

function TFlat.getWater: double;

begin

result:=pwater;

end;

function TFlat.getHotwater: double;

begin

result:=photwater;

end;

function TFlat.getUp: double;

begin

result:=pup;

end;

function TFlat.getRebuild: double;

begin

result:=prebuild;

end;

function TFlat.getTv: double;

begin

result:=ptv;

end;

function TFlat.getRadio: double;

begin

result:=pradio;

end;

procedure TFlat.setTex(p:double);

begin

if (p<0) then

p:=0;

ptex:=p;

end;

procedure TFlat.setExemption(p:double);

begin

if (p<0) or (p>100) then

p:=0;

pexemption:=p;

end;

procedure TFlat.setHeating(p:double);

begin

if (p<0) then

p:=0;

pheating:=p;

end;

procedure TFlat.setWater(p:double);

begin

if (p<0) then

p:=0;

pwater:=p;

end;

procedure TFlat.setHotwater(p:double);

begin

if (p<0) then

p:=0;

photwater:=p;

end;

 

procedure TFlat.setUp(p:double);

begin

if (p<0) then

p:=0;

pup:=p;

end;

procedure TFlat.setRebuild(p:double);

begin

if (p<0) then

p:=0;

prebuild:=p;

end;

procedure TFlat.setTv(p:double);

begin

if (p<0) then

p:=0;

ptv:=p;

end;

procedure TFlat.setRadio(p:double);

begin

if (p<0) then

p:=0;

pradio:=p;

end;

function TRate.getRateTex: double;

begin

result:=ttex;

end;

function TRate.getRateHeating: double;

begin

result:=theating;

end;

function TRate.getRateWater: double;

begin

result:=twater;

end;

function TRate.getRateHotwater: double;

begin

result:=thotwater;

end;

function TRate.getRateUp: double;

begin

result:=tup;

end;

function TRate.getRateRebuild: double;

begin

result:=trebuild;

end;

function TRate.getRateTv: double;

begin

result:=ttv;

end;

function TRate.getRateRadio: double;

begin

result:=tradio;

end;

procedure TRate.setRateTex(p:double);

begin

if (p<0) then

p:=0;

ttex:=p;

end;

procedure TRate.setRateHeating(p:double);

begin

if (p<0) then

p:=0;

theating:=p;

end;

procedure TRate.setRateWater(p:double);

begin

if (p<0) then

p:=0;

twater:=p;

end;

procedure TRate.setRateHotwater(p:double);

begin

if (p<0) then

p:=0;

thotwater:=p;

end;

 

procedure TRate.setRateUp(p:double);

begin

if (p<0) then

p:=0;

tup:=p;

end;

procedure TRate.setRateRebuild(p:double);

begin

if (p<0) then

p:=0;

trebuild:=p;

end;

procedure TRate.setRateTv(p:double);

begin

if (p<0) then

p:=0;

ttv:=p;

end;

procedure TRate.setRateRadio(p:double);

begin

if (p<0) then

p:=0;

tradio:=p;

end;

 

constructor TRate.Create(var s:TStatusBar);

begin

ttex:=50;

theating:=150;

twater:=145;

thotwater:=70;

tup:=200;

trebuild:=10;

ttv:=40;

tradio:=80;

status:=s;

end;

 

destructor TRate.Destroy;

begin

 

inherited;

end;

 

procedure TForm1.N4Click(Sender: TObject);

begin

Close();

end;

 

procedure TForm1.FormCreate(Sender: TObject);

begin

Form1.DoubleBuffered:=true;

flat:=TFlat.Create(StatusBar1);

StatusBar1.SimpleText:='Заполните данные за месяц';

isTv:=false;

end;

 

procedure TForm1.N7Click(Sender: TObject);

begin

Form3.ShowModal();

end;

 

procedure TForm1.N2Click(Sender: TObject); // выбор в меню Статистика

var f:textfile;

c:double;

begin

if (trim(Form3.Edit2.Text)='') then // проверка

begin

ShowMessage('Не указано имя файла статистики в настройках');

Form1.StatusBar1.SimpleText:='Не указано имя файла статистики в настройках';

exit;

end;

if (not FileExists( Form3.Edit2.Text )) then // проверка

begin

ShowMessage('Файл, указанный в настройках, не найден');

Form1.StatusBar1.SimpleText:='Файл, указанный в настройках, не найден';

exit;

end;

Form4.Chart1.Series[0].Clear; // чистим график

 

assignfile(f,Form3.Edit2.Text);

reset(f);

while not eof(f) do // пока не конец файла

begin

readln(f,c); // читаем данные из файла

readln(f,c);

readln(f,c);

Form4.Chart1.Series[0].Add(c); // данные на график

end;

closefile(f);

 

Form4.ShowModal; // показываем форму с графиком

end;

 

procedure TForm1.N6Click(Sender: TObject); // выбор в меню Помощь

begin

Form5.ShowModal; // показать форму Помощь

end;

 

procedure TForm1.N5Click(Sender: TObject); // выбор в меню Тариф

begin

Form6.Edit1.Text:=FloatToStr(flat.ratetex); // обновляем поля на форме Тариф

Form6.Edit2.Text:=FloatToStr(flat.rateheating);

Form6.Edit3.Text:=FloatToStr(flat.ratewater);

Form6.Edit4.Text:=FloatToStr(flat.ratehotwater);

Form6.Edit5.Text:=FloatToStr(flat.rateup);

Form6.Edit6.Text:=FloatToStr(flat.raterebuild);

Form6.ShowModal; // показываем форму Тариф

end;

 

procedure TForm1.Image1Click(Sender: TObject); // клик по картинке канала

begin

if (isTv=false) then // если еще не выбран

begin

isTv:=true;

tv:=1;

end;

end;

 

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, // движение мышкой по форме

Y: Integer);

begin

if (isTv) then // если выбран канал, то таскаем фото за мышкой

begin

if (tv=1) then

begin

image1.Top:=y;

image1.Left:=x;

end;

if (tv=2) then

begin

image2.Top:=y;

image2.Left:=x;

end;

if (tv=3) then

begin

image3.Top:=y;

image3.Left:=x;

end;

if (tv=4) then

begin

image4.Top:=y;

image4.Left:=x;

end;

end;

end;

 

procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer); // наведение мышкой на панель Ваши TV каналы

begin

if (isTv) then // если выбран канал, то отмечаем в таблице и скрываем фото канала

begin

isTv:=false;

Form2.SG2.Cells[0,8]:=FloatToStr(StrToFloat(Form2.SG2.Cells[0,8])+tv);

if (tv=1) then

begin

image1.Visible:=false;

end;

if (tv=2) then

image2.Visible:=false;

if (tv=3) then

image3.Visible:=false;

if (tv=4) then

image4.Visible:=false;

Form2.Edit2.Text:='';

form1.StatusBar1.SimpleText:='Добавлен новый канал';

end;

end;

 

procedure TForm1.Image2Click(Sender: TObject); // клик по картинке канала

begin

if (isTv=false) then // если еще не выбран

begin

isTv:=true;

tv:=2;

end;

end;

 

procedure TForm1.Image3Click(Sender: TObject); // клик по картинке канала

begin

if (isTv=false) then // если еще не выбран

begin

isTv:=true;

tv:=3;

end;

end;

 

procedure TForm1.Image4Click(Sender: TObject); // клик по картинке канала

begin

if (isTv=false) then // если еще не выбран

begin

isTv:=true;

tv:=4;

end;

end;

 

procedure TForm1.Panel1Click(Sender: TObject); // клик по панели Ваши TV каналы

begin

isTv:=false; // обновляем каналы по умолчанию

image1.Visible:=true;

image2.Visible:=true;

image3.Visible:=true;

image4.Visible:=true;

image1.Top:=96;

image1.Left:=472;

image2.Top:=160;

image2.Left:=472;

image3.Top:=224;

image3.Left:=472;

image4.Top:=288;

image4.Left:=472;

end;

 

end.

 

UMonth.pas

//---------------------------------------------------------------------------

unit Umonth;

 

interface

 

uses

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

Dialogs, StdCtrls, Grids, Buttons, ComCtrls;

 

type

TForm2 = class(TForm)

Label1: TLabel;

ComboBox1: TComboBox;

Edit1: TEdit;

SG: TStringGrid;

SG2: TStringGrid;

SG3: TStringGrid;

SpeedButton1: TSpeedButton;

Edit2: TEdit;

UpDown1: TUpDown;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;

Label8: TLabel;

Label9: TLabel;

Label10: TLabel;

Label11: TLabel;

procedure FormCreate(Sender: TObject);

procedure FormKeyPress(Sender: TObject; var Key: Char);

procedure Edit1KeyPress(Sender: TObject; var Key: Char);

procedure SG2KeyPress(Sender: TObject; var Key: Char);

procedure SpeedButton1Click(Sender: TObject);

procedure ComboBox1Change(Sender: TObject);

private

public

end;

 

var

Form2: TForm2;

 

implementation

 

uses UFlat, UOptions;

{$R *.dfm}

 

procedure TForm2.FormCreate(Sender: TObject); // при создании формы

var i:integer;

begin

SG.Cells[0,0]:='№'; // заполняем шапку таблиц

SG.Cells[1,0]:='Вид услуги';

SG.Cells[2,0]:='ед.изм.';

SG2.Cells[0,0]:='Кол-во';

SG3.Cells[0,0]:='Тариф';

SG3.Cells[1,0]:='Сумма';

for i:=1 to 8 do

begin

SG.Cells[0,i]:=IntToStr(i);

SG2.Cells[0,i]:='0';

SG3.Cells[1,i]:='0';

end;

SG.Cells[1,1]:='Тех. обслуживание (кв.м)';

SG.Cells[1,2]:='Отопление (Гкал)';

SG.Cells[1,3]:='Вода (куб.м)';

SG.Cells[1,4]:='Подогрев воды (Гкал)';

SG.Cells[1,5]:='Пользование лифтом (чел)';

SG.Cells[1,6]:='Отчисление на кап. ремонт';

SG.Cells[1,7]:='Радио (каналы)';

SG.Cells[1,8]:='Телевидение (каналы)';

flat.showRate(Form2.SG3);

end;

 

procedure TForm2.FormKeyPress(Sender: TObject; var Key: Char); // обработка нажатия клавиш

var k,p,i:integer;

f:textfile;

begin

if (Key='S') or (Key='s') or (Key='ы') Or (Key='Ы') then // если выбрано Сохранить в файл статистики

begin

if (trim(Form3.Edit2.Text)='') then

begin

ShowMessage('Не указано имя файла статистики в настройках');

Form1.StatusBar1.SimpleText:='Не указано имя файла статистики в настройках';

exit;

end;

//

for i:=1 to 8 do

if (trim(SG2.Cells[0,i])='') then

begin

ShowMessage('Заполнены не все поля');

Edit2.Text:='';

exit;

end;

try

flat.tex:=StrToFloat(SG2.Cells[0,1]);

flat.heating:=StrToFloat(SG2.Cells[0,2]);

flat.water:=StrToFloat(SG2.Cells[0,3]);

flat.hotwater:=StrToFloat(SG2.Cells[0,4]);

flat.up:=StrToFloat(SG2.Cells[0,5]);

flat.rebuild:=StrToFloat(SG2.Cells[0,6]);

flat.radio:=StrToFloat(SG2.Cells[0,7]);

flat.tv:=StrToFloat(SG2.Cells[0,8]);

Edit2.Text:=flat.getTotal();

except

ShowMessage('Указано недопустимое значение');

Edit2.Text:='';

exit;

end;

assignfile(f,Form3.Edit2.Text);

if not FileExists(Form3.Edit2.Text) then // если не существует

rewrite(f) // создаем новый

else

append(f);

writeln(f,IntToStr(ComboBox1.ItemIndex));

writeln(f,IntToStr(UpDown1.Position));

writeln(f,Edit2.Text);

closefile(f);

Form1.StatusBar1.SimpleText:='Итоговая сумма сохранена';

//

 

end;

 

if (Key='А') or (Key='а') or (Key='F') Or (Key='f') then // сохранение данных за месяц в файл

begin

if (trim(Form3.Edit1.Text)='') then

begin

ShowMessage('Не указано имя файла в настройках');

Form1.StatusBar1.SimpleText:='Не указано имя файла в настройках';

exit;

end;

 

for i:=1 to 8 do

if (trim(SG2.Cells[0,i])='') then

begin

ShowMessage('Заполнены не все поля');

Form1.StatusBar1.SimpleText:='Заполнены не все поля';

Edit2.Text:='';

exit;

end;

try

flat.tex:=StrToFloat(SG2.Cells[0,1]);

flat.heating:=StrToFloat(SG2.Cells[0,2]);

flat.water:=StrToFloat(SG2.Cells[0,3]);

flat.hotwater:=StrToFloat(SG2.Cells[0,4]);

flat.up:=StrToFloat(SG2.Cells[0,5]);

flat.rebuild:=StrToFloat(SG2.Cells[0,6]);

flat.radio:=StrToFloat(SG2.Cells[0,7]);

flat.tv:=StrToFloat(SG2.Cells[0,8]);

 

except

ShowMessage('Указано недопустимое значение');

Form1.StatusBar1.SimpleText:='Указано недопустимое значение';

Edit2.Text:='';

exit;

end;

 

flat.savetofile(ComboBox1.ItemIndex,UpDown1.Position);

Form1.StatusBar1.SimpleText:='Данные сохранены';

end;

 

if (Key='L') or (Key='l') or (Key='Д') Or (Key='д') then // загрузка данных за месяц из файла

begin

if (trim(Form3.Edit1.Text)='') then

begin

ShowMessage('Не указано имя файла в настройках');

Form1.StatusBar1.SimpleText:='Не указано имя файла в настройках';

exit;

end;

if (not FileExists( Form3.Edit1.Text )) then

begin

ShowMessage('Файл, указанный в настройках, не найден');

Form1.StatusBar1.SimpleText:='Файл, указанный в настройках, не найден';

exit;

end;

 

flat.loadfromfile(p,k);

ComboBox1.ItemIndex:=p;

UpDown1.Position:=k;

SG2.Cells[0,1]:=FloatToStr(flat.tex);

SG2.Cells[0,2]:=FloatToStr(flat.heating);

SG2.Cells[0,3]:=FloatToStr(flat.water);

SG2.Cells[0,4]:=FloatToStr(flat.hotwater);

SG2.Cells[0,5]:=FloatToStr(flat.up);

SG2.Cells[0,6]:=FloatToStr(flat.rebuild);

SG2.Cells[0,7]:=FloatToStr(flat.radio);

SG2.Cells[0,8]:=FloatToStr(flat.tv);

 

Form1.StatusBar1.SimpleText:='Данные загружены';

end;

end;

 

procedure TForm2.Edit1KeyPress(Sender: TObject; var Key: Char); // запрет ввода не цифр

begin

if not(Key in ['0'..'9', #13, #8]) then

Key := #0;

end;

 

procedure TForm2.SG2KeyPress(Sender: TObject; var Key: Char); // запрет ввода не цифр в таблицу

begin

if not(Key in ['0'..'9', '.', ',', #13, #8]) then

Key := #0;

end;

 

procedure TForm2.SpeedButton1Click(Sender: TObject); // клик по кнопке Итого

var i:integer;

begin

for i:=1 to 8 do

if (trim(SG2.Cells[0,i])='') then

begin

ShowMessage('Заполнены не все поля');

Edit2.Text:='';

exit;

end;

try

flat.tex:=StrToFloat(SG2.Cells[0,1]);

flat.heating:=StrToFloat(SG2.Cells[0,2]);

flat.water:=StrToFloat(SG2.Cells[0,3]);

flat.hotwater:=StrToFloat(SG2.Cells[0,4]);

flat.up:=StrToFloat(SG2.Cells[0,5]);

flat.rebuild:=StrToFloat(SG2.Cells[0,6]);

flat.radio:=StrToFloat(SG2.Cells[0,7]);

flat.tv:=StrToFloat(SG2.Cells[0,8]);

Edit2.Text:=flat.getTotal();

for i:=1 to 8 do

SG3.Cells[1,i]:=FloatToStr(StrToFloat(SG3.Cells[0,i])*StrToFloat(SG2.Cells[0,i]));

 

except

ShowMessage('Указано недопустимое значение');

Edit2.Text:='';

exit;

end;

 

end;

 

procedure TForm2.ComboBox1Change(Sender: TObject);

begin

SG2.SetFocus;

end;

 

end.

 



<== предыдущая лекция | следующая лекция ==>
Инструкции по использованию. | ТЕХНОЛОГИЯ РАБОТЫ


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.205 сек.