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