Разработка и реализация программы расчета платежа за электроэнергию

ФЕДЕРАЛЬНОЕ АГЕНСТВО ПО ОБРАЗОВАНИЮ

Государственное образовательное учреждение высшего профессионального образования

Находкинский инженерно-экономический институт (филиал) Дальневосточного государственного технического университета (ДВПИ имени В.В. Куйбышева)

Кафедра: Прикладная информатика

















Курсовая работа

по дисциплине «Программирование на языках высокого уровня»

Тема: «Разработка и реализация программы расчета платежа за электроэнергию»



















Находка

2010


Введение



Цель курсовой работы

	обобщение, закрепление и углубление знании, полученных за время изучения дисциплины;

	получение практических навыков подготовки инженерно-технических задач к решению на компьютере (ПК);

	ознакомление с наиболее распространёнными методами обработки информации при решении прикладных задач;

	закрепление навыков работы в Pascal;

	получение навыков в использовании научно-технической и нормативной литературы, ГОСТов;

	приобретение опыта в оформлении текстовых и графических материалов курсовых работ.


1. Задание на курсовую работу



Задание: разработать и реализовать программу расчета платежей за потребленную электроэнергию.

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



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



Исходные данные: Тариф (а), начислено (b), долг (с), заранее оплачено (d). 

Результаты: Результат (rez).

Операции: Результат(rez):=(тариф(а)*начислено(b))+долг(с)-заранее оплачено(d).



3. Математическая модель задачи



Пусть РЕЗУЛЬТАТ будет равен x.

Тариф обозначим как переменную а, начислено обозначим как переменную b, долг обозначим как переменную с, а заранее оплачено обозначим как переменную d.

Так как РЕЗУЛЬТАТ равен (тариф*начислено)+долг-заранее оплачено то в формульном виде это будет выглядеть следюющим образом:



X:=(a*b)+c-d


4. Блок-схема алгоритма программы







5. Разработка программы



Для работы в программе используются:

1.Элементы интерфейса:

TForm1 = class(TForm) экран приложения

Строки в которые пользователь вводит информацию

Edit1: TEdit; Фио

Edit2: TEdit; Адрес 

Edit3: TEdit; Дата 

Edit4: TEdit;Тариф

Edit5: TEdit;Начисленно

Edit6: TEdit;долг

Edit7: TEdit;заранее оплачено

Надписи-метки

Label1: TLabel; «Заранее оплачено»

Label2: TLabel; «Адрес»

Label3: TLabel; «Дата»

Label4: TLabel; «Тариф»

Label5: TLabel; «Начисленно»

Label6: TLabel; «Долг»

Label7: TLabel; «ФИО»

Label9: TLabel, Label10: TLabel; Вывод оценки

Label11: TLabel;Label12: TLabel;Label13: TLabel;Label14: TLabel;Label15: TLabel;Label16: TLabel;Label17: TLabel;Label18: TLabel;Label19: TLabel;

Вывод результата в бланк

Картинки

Image1: TImage; Картинка (фон)

Image2: TImage; Картинка – бланк

Кнопки

Button1: TButton;Кнопка РАСЧИТАТЬ

Button2: TButton; Кнопка Автор

Button3: TButton; Кнопка Бланк

Button4: TButton;Кнопка Скрыть

Другие элементы:

MonthCalendar1: TMonthCalendar; календарь

2.Процедуры:

процедуры КНОПКА НАЖАТЬ

procedure Button1Click(Sender: TObject); Нажатие кнопки РАСЧИТАТЬ

procedure Button2Click(Sender: TObject); Нажатие кнопки АВТОР

procedure Button3Click(Sender: TObject); Нажатие кнопки БЛАНК

procedure Button4Click(Sender: TObject); Нажатие кнопки СКРЫТЬ

3.Операторы:

StrToFloat – перевод строчной величины в вещественную

ShowMessage – вывод сообщения

FloatToStrF - перевод вещественной величины в строчную

IF…THEN - Оператор условия

Элемент интерфейса.Caption:= - Изменение заголовка/текста элемента

Элемент интерфейса.Visible:= - Изменение видимости элемента (True/False)

Элемент интерфейса.Height:=Изменение высоты элемента;

Сложение (+)

Вычитание(-)

Умножение (*)



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



Cистемные требования:

Платформа: PC

Операционная система: Windows xp/vista/seven.

Совместимость с Linux: не тестировалась.

Процессор: Pentium 3 800MHz и выше.

Оперативная память: 128 и выше.

Объем на HDD: 544 КБ (557 056 байт)

Для начала работы с программой щелкните 2 раза левой кнопкой мыши по иконке «Миниэлектрик V 1.0.exe» вследствие чего откроется главное окно программы с которым впоследствии мы и будем оперировать (рис. 1).




Рис. 1



Для начала введем данные для расчетов про помощи клавиатуры в следующие поля (рис. 2):





Рис. 2



ФИО это имя и инициалы абонента

АДРЕС это адрес его прописки

ДАТА это текущее число и месяц 

ТАРИФ это стоимость за Квт. энергии в рублях (дробные числа вводятся в формате 3,5 в противном случае будет выведено сообщение об ошибке)

НАЧИСЛЕННО это сколько вам «накрутил» кВт в этом месяце счетчик.

ДОЛГ это ваша задолженность по предыдущим периодам (если таковая имеется) (рис. 3).





Рис. 3



Заранее оплачено это размер платежей внесенных вами заранее (если таковые имеются)

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

После ввода нажимаем кнопку РАСЧИТАТЬ после чего на экран будет выведено сообщение с результатом (рис. 4).





Рис. 4


Для продолжения работы с программой нажмите ОК.

Под кнопкой РАСЧИТАТЬ теперь мы видим текущую оценку ваших расходов которая меняется в зависимости от величины результата (рис. 5).





Рис. 5





Рис. 6



Программа также имеет второй режим работы – вывод бланка. Для вывода бланка нажмите кнопку БЛАНК (рис. 6).

На экран будет выведен бланк с результатом (рис. 7)





Рис. 7


Для возврата программы в нормальный вид нажмите кнопку СКРЫТЬ.

Для получения информации об авторе нажмите кнопку АВТОР после чего на экран будет выведено окно с информацией о создателе программы.

Для завершения работы с программой нажмите на крестик в верхнем правом углу.



7. Текст программы с пояснениями



unit Unit1; //Имя программы//

interface

uses

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

Dialogs, StdCtrls, jpeg, ExtCtrls, ComCtrls;

//Создание графического интерфейса//

type

TForm1 = class(TForm) //экран приложения//

//Строки в которые пользователь вводит информацию//

Edit1: TEdit; //Фио//

Edit2: TEdit; //Адрес //

Edit3: TEdit; //дата //

Edit4: TEdit;//Тариф (цена за кВ)//

Edit5: TEdit;//начисленно//

Edit6: TEdit;//долг//

Edit7: TEdit;//заранее оплачено//

Label1: TLabel;//Надписи-метки//

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;

Button1: TButton;//Кнопка РАСЧИТАТЬ//

MonthCalendar1: TMonthCalendar; //календарь (для удобства пользователя)//

Image1: TImage; //Картинка (фон)//

Label8: TLabel;

Label9: TLabel;

Label10: TLabel;

Button2: TButton; //Кнопка Автор//

Image2: TImage;//картинка - бланк//

Label11: TLabel;

Label12: TLabel;

Label13: TLabel;

Label14: TLabel;

Label15: TLabel;

Label16: TLabel;

Label17: TLabel;

Label18: TLabel;

Label19: TLabel;

Button3: TButton; //Кнопка Бланк//

Button4: TButton;//Кнопка скрыть//

//описание процедур//

//процедуры КНОПКА НАЖАТЬ//

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

//Описание процедуры НАЖАТЬ НОПКА 1 (РАСЧИТАТЬ)//

procedure TForm1.Button1Click(Sender: TObject);

//Описание переменных//

var

a: Real48;

b: Real48;

c: Real48;

d: Real48;

rez:Real48;

begin

//Присваиваем переменным значения введенные пользователем в строки //

a:= StrToFloat(Edit4.Text); //переводим строчные переменные в вещественные для дальнейших вычислений.//

b:= StrToFloat(Edit5.Text);

c:= StrToFloat(Edit6.Text);

d:= StrToFloat(Edit7.Text);

rez := (a*b)+c-d;

//вывод сообщения с результатом //

ShowMessage('Уважаемый '+Edit1.Text+#13+'Проживающий по адресу '+Edit2.Text+#13+

'Сообщаем вам что на '+Edit3.Text+#13+'вы должны '+

FloatToStrF(rez,ffFixed,90,2)+' рублей'+#13+'за используемую вами электроэнергию.');

//Создание так называемой «системы оценки». Это так называемый Easter egg программы – в зависимости от полученной суммы программа будет выводить различные сообщения (используется оператор УСЛОВИЕ)//

If rez<10 then begin label9.Caption :='Так мало... Вы как так умудрились?';end;

If rez>10 then begin label9.Caption :='Вы счастливчик !!! Это совсем немного';end;

If rez=0 then begin label9.Caption :='Поздравляю вы не должны ни копейки'; end;

If rez<0 then begin label9.Caption :='Вы жулик !!! это невозможно'; end;

If rez>500 then begin label9.Caption :='Хм... немало... но терпимо'; end;

If rez>1000 then begin label9.Caption :='Ого... многовато'; end;

If rez>5000 then begin label10.Caption :='Быстро выключайте все !!! Уже и так света понажгли !!!'; end;

If rez>10000 then begin label9.Caption :='Вам капец...'; end;

If rez>50000 then begin label9.Caption :='Сдается мне вы юморист...'; end;

If rez>1000000 then begin label9.Caption :='Хватит прикалываться !!!'; end;

end;

//Описание процедуры КНОПКА 2 НАЖАТЬ (АВТОР)//

procedure TForm1.Button2Click(Sender: TObject);

begin

//Вывод сообщения об авторстве//

ShowMessage('Автор и разработчик данной программы: '+#13+'Оробец Максим Сергеевич НИЭИ ДВГТУ Группа 8221 2 курс '+#13+'Программа написана на Delphi 7.Код программы мой на 100 %'+#13+'Надеюсь вам понравилось');

end;

//Описание процедуры НАЖАТЬ НОПКА 3 (бланк)//

//перед выводом бланка программа предворительно рассчитывает данные используя алгоритм приведенный выше но вместо вывода сообщения «выводит» бланк//

procedure TForm1.Button3Click(Sender: TObject); 

//Предыдущий алгоритм расчета и оценки//

var

a: Real48;

b: Real48;

c: Real48;

d: Real48;

rez:Real48;

begin

a:= StrToFloat(Edit4.Text);

b:= StrToFloat(Edit5.Text);

c:= StrToFloat(Edit6.Text);

d:= StrToFloat(Edit7.Text);

rez := (a*b)+c-d;

If rez<10 then begin label9.Caption :='Так мало... Вы как так умудрились?';end;

If rez>10 then begin label9.Caption :='Вы счастливчик !!! Это совсем немного';end;

If rez=0 then begin label9.Caption :='Поздравляю вы не должны ни копейки'; end;

If rez<0 then begin label9.Caption :='Вы жулик !!! это невозможно'; end;

If rez>500 then begin label9.Caption :='Хм... немало... но терпимо'; end;

If rez>1000 then begin label9.Caption :='Ого... многовато'; end;

If rez>5000 then begin label10.Caption :='Быстро выключайте все !!! Уже и так света понажгли !!!'; end;

If rez>10000 then begin label9.Caption :='Вам капец...'; end;

If rez>50000 then begin label9.Caption :='Сдается мне вы юморист...'; end;

If rez>1000000 then begin label9.Caption :='Хватит прикалываться !!!'; end;

//По сути так называемый «вывод» бланка представляет собой выведенную картинку таблицы (заранее заготовлена в Excel) где не указанны числа и слова с соответственных графах. На их местах стоят метки заголовки которых меняются на результаты расчетов. Изначально параметр Visible (видимость) этой картинки и Label – ов поставлен на False. А также размер программы подогнан так что пользователь не видит их, но по нажатию кнопки после выполнения расчетов размер программы меняется так, чтобы бланк и Label-ы были видны и их параметр visible меняется на false. Также параметр visible меняется у button 3 (бланк) и button 4 (скрыть) так что в результате кнопка БЛАНК исчезает и на ее месте появляется кнопка СКРЫТЬ//

//Присваивание//

label11.Caption :=Edit3.Text;

label13.Caption :=Edit1.Text;

label14.Caption :=Edit2.Text;

label15.Caption :=FloatToStrF(rez,ffFixed,90,2);

label16.Caption :=Edit7.Text;

label17.Caption :=Edit6.Text;

label18.Caption :=Edit5.Text;

label19.Caption :=Edit4.Text;

//включение видимости изображения бланка и меток-надписей//

image2.Visible:=true;

label19.Visible:=true;

label18.Visible:=true;

label17.Visible:=true;

label16.Visible:=true;

label15.Visible:=true;

label14.Visible:=true;

label13.Visible:=true;

label12.Visible:=true;

label11.Visible:=true;

//Изменение размера программы//

Form1.height:=593;

//Изменение видимости кнопок//

Button3.Visible:=false;

Button4.Visible:=true;

end;

//Описание процедуры НАЖАТЬ НОПКА 4 (СКРЫТЬ)//

//Меняет размер окна программы так чтобы изображение бланка не было видно и после убирает кнопку СКРЫТЬ а на ее место возвращате кнопку БЛАНК чтобы пользователь мог повторить действие //

procedure TForm1.Button4Click(Sender: TObject);

begin

//Изменение размера//

Form1.height:=490;

//Настройка видимости кнопок//

Button4.Visible:=false;

Button3.Visible:=true;

end;

//Конец программы//

end.


Заключение



Результатом выполнения курсовой работы является программа «Миниэлектрик V 1.0.exe», разработанная в среде Delphi 7.

Выполняя курсовую работу я научился пользоваться средой программирования Delphi 7, освоил работу с графическим интерфейсом и научился его создавать, нашел большие различия между средами Pascal и Delphi 7 и некоторые сходства, получил новые теоретические и практические знания по программированию в новой на тот момент (ни разу до этого момента не работал с delphi 7) для меня средой программирования которой теперь с удовольствием пользуюсь и для других целей.


Список использованной литературы



1. Самоучитель по Delphi 7 для начинающих (Электронный .chm учебник).