Разработка и реализация программы расчета платежа за электроэнергию
ФЕДЕРАЛЬНОЕ АГЕНСТВО ПО ОБРАЗОВАНИЮ
Государственное образовательное учреждение высшего профессионального образования
Находкинский инженерно-экономический институт (филиал) Дальневосточного государственного технического университета (ДВПИ имени В.В. Куйбышева)
Кафедра: Прикладная информатика
Курсовая работа
по дисциплине «Программирование на языках высокого уровня»
Тема: «Разработка и реализация программы расчета платежа за электроэнергию»
Находка
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 учебник).