№ п/п
|
Наименование статей расходов
|
Затраты, руб.
|
1
|
Расходные материалы
|
10000,00
|
2
|
Основная заработная плата разработчиков
|
11100,23
|
3
|
Дополнительная заработная плата разработчиков
|
2220,04
|
4
|
Отчисления на социальное страхование
|
4662,09
|
5
|
Накладные расходы
|
27750,57
|
6
|
Прочие расходы
|
8400,00
|
|
Итого затрат:
|
Зк = 64 132,93
|
Экономия от замены ручной обработки информации на
автоматизированную
образуется в результате снижения затрат на обработку информации и определяется
по формуле, руб.:
Эу = Зр - За, где (3.1)
Зр - затраты на ручную обработку информации, руб.;
За - затраты на автоматизированную обработку информации, руб.
Затраты на ручную обработку информации определяются по формуле:
Зр = Ои ´ Ц ´ Гд / Нв, где (3.2)
Ои - объём информации, обрабатываемой вручную, Мбайт;
Ц - стоимость одного часа работы, руб./час;
Гд - коэффициент, учитывающий дополнительные затраты времени
на логические операции при ручной обработке информации;
Нв - норма выработки, Мбайт/час.
В данном случае: Ои = 84,7 Мбайт (общий размер обрабатываемых
данных, вводимых для регистрации за год с последующим подсчетом статистики), Ц
= 3100 / 22 / 8 »
17,61 руб./час, Гд = 2.5 (установлен экспериментально), Нв
= 0,07 Мбайт/час. Следовательно, затраты на ручную обработку информации будут
равны:
Зр = 84,7 ´ 17,61 ´ 2,5 / 0,07 = 50660,816 руб.
Затраты на автоматизированную обработку информации рассчитываются по следующей формуле:
За = ta ´ Цм + tо ´ (Цм + Цо), где (3.3)
ta - время автоматической обработки, ч.;
Цм - стоимость одного часа машинного времени, руб./час;
tо
- время работы
оператора, ч.;
Цо - стоимость одного часа работы оператора, руб./час.
Для данного ПП: ta = 18 ч., Цм = 10 руб., tо = 83.3 ч., Цо = 2190 / 22 / 8 » 12,44 руб. Следовательно, затраты на
автоматизированную обработку информации будут равны:
За = 18 ´ 10 + 83,3 ´ (10 + 12,44) = 2049,25 руб.
Таким образом, годовая экономия от внедрения ПП равна:
Эу = 50660,816- 2049,25 = 48611,566 руб.
Экономический эффект от использования ПП за год определяется по формуле, руб.:
Эг = Эу - Ен ´ Зк. (3.4)
Эг = 48611,566- 0.2 ´ 64 132,93 = 35784,98 руб.
Эффективность разработки может быть оценена по формуле (3.5).
Эр = Эг ´ 0.4 / Зк , где (3.5)
Эр - эффективность разработки, руб.
Эр = 35784,98 ´ 0.4 / 64 132,93 = 91618,471
Поскольку Эр > 0.20, программа рассчитывается по формуле
(3.6)
Т = Зк / Эг , где (3.6)
Т - срок окупаемости, лет.
Для данной программы:
Т = 64 132,93 / 91618,471 =0,7 лет.
В результате проведенных расчетов можно сделать вывод, что программа
экономически целесообразна и может быть рекомендована к внедрению в Управлении
Федеральной налоговой службы России по Московской области в отделе
материально-технического снабжения и отделе информационных технологий.
ЗАКЛЮЧЕНИЕ
В данном дипломном проекте была спроектирована и реализована программа
учета входящих электронных писем в Управлении ФНС России по Московской области.
Данная программа обеспечивает следующие основные функции: соединение с сервером
по строкам подключений; проверку наличия входящих сообщений; проверку даты,
указанной в письме, на вхождение в указанный диапазон дат; формирование
результата: отчета входящих электронных писем за период.
Реализация системы проводилась в соответствии с требованиями заказчика.
Выбор среды программирования был обусловлен также основными характеристиками
большинства используемого программного обеспечения в Управлении ФНС России по
Московской области. При разработке программы использовались Borland Delphi 7.0. В процессе написания программы большое внимание
было уделено удобству работы пользователя и построению дружественного
интерфейса.
Введение программы обеспечит автоматизированный безошибочный учет всех
электронных писем, содержащих сведения об обновлении, даст возможность
формирования достоверной и полной информации обо всех клиентах, осуществивших
обновления для программ ЕГРЮЛ и ЕГРИП в заданный диапазон дат.
Разработанная программа готова к внедрению в Управлении ФНС России по
Московской области.
Список используемой литературы
1) Г.С.
Иванова «Технология программирования» - издательство МГТУ имени Н.Э.Баумана
2003 г.
2) ГОСТ
19.701-90. Схемы алгоритмов и программ. Правила выполнения
) ГОСТ
19.003-80. Схемы алгоритмов и программ. Обозначения условные графические
) Александровский
А.Д. «Delphi 7», Москва, 1999.
) Справка
Delphi.
) «Основы
Программирования» И.Г. Семакин, А.П. Шестаков; Москва, «Academa»; 2003 год.
ПРИЛОЖЕНИЕ А
Исходный текст программы
Текст модуля
unit chek_up_letters;
, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms,, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,,
IdMessageClient, IdIMAP4, IdCoder, IdCoder3to4, IdCoderMIME,, Menus, INIFiles,
IdPOP3, IdMessage, IdTCPServer, IdSMTPServer,;
= class(TForm): TIdIMAP4;: TIdDecoderMIME;: TTimer;:
TIdPOP3;: TIdMessage;: TButton;: TMemo;: TListBox;: TButton;: TButton;:
TButton;: TIdSMTPServer;: TLabel;: TLabel;FormCreate(Sender:
TObject);Button4Click(Sender: TObject);ListBox1DblClick(Sender: TObject);Button5Click(Sender:
TObject);Button3Click(Sender: TObject);Button2Click(Sender:
TObject);Button6Click(Sender: TObject);
{ Private declarations }
{ Public declarations };
: TForm1;
Math, adress, em;
{$R *.dfm}
KOI8_RToUTF16Str(const s: string): WideString;,j: integer;:=
length(s);(Result,j);i:=1 to j do[i]:=KOI8_RToUTF16Char(s[i]);;
DecodeStr(Text: string): string;, Dec:
string;,P2:Integer;:=Text;:='';
pos('=?windows-1251?',Temp)>0
do:=pos('=?windows-1251?',Temp);
// P2:=pos('?=',Copy(Temp,P,Length(Temp)))+P;:=pos('?=',Temp);:=Copy(Temp,p+17,P2-(P+17));:=Form1.IdDecoderMIME1.DecodeString(Dec);:=Result+Copy(Temp,1,P-1)+Dec;:=Copy(Temp,P2+2,length(Temp));;:=Result+Temp;:=Result;
:='';pos('=?koi8-r?',Temp)>0
do:=pos('=?koi8-r?',Temp);:=pos('?=',Temp);:=Copy(Temp,p+11,P2-(P+11));Dec<>''Dec:=KOI8_RToUTF16Str(Form1.IdDecoderMIME1.DecodeString(Dec));
;:=Result+Copy(Temp,1,P-1)+Dec;:=Copy(Temp,P2+2,length(Temp));;:=Result+Temp;;
TForm1.FormCreate(Sender: TObject);.Title:='Проверка/Отправка почты (POP3, IMAP)';
//.Items.LoadFromFile(ExtractFilePath(ParamStr(0))+'emails.txt');.Selected[0]:=true;
;;
TForm1.Button4Click(Sender: TObject);.ShowModal;;
TForm1.ListBox1DblClick(Sender: TObject);.ShowModal;;
TForm1.Button5Click(Sender: TObject);: integer;MessageDlg('Вы действительно хотите
удалить адрес?', mtConfirmation,
[mbYes, mbNo],0)=mrNoExiti:=0 to Form1.ListBox1.Items.Count-1
doForm1.ListBox1.Selected[i].Items.Delete(i);.Items.SaveToFile(ExtractFilePath(ParamStr(0))+'emails.txt');
;;;;;
TForm1.Button3Click(Sender:
TObject);.Items.Add('new@new.ru|new.mail.ru|user|password|POP3');;
TForm1.Button2Click(Sender: TObject);: integer;,usr: string;:
boolean;.Clear;:=false;i:=0 to Form1.ListBox1.Items.Count-1
doForm1.ListBox1.Selected[i]:=Form1.ListBox1.Items.Strings[i];;;;
//.Port:=25;.Port:=110;
//:=Copy(s,1,pos('|',s)-1);(s,1,pos('|',s));.Host:=Copy(s,1,pos('|',s)-1);.Host:=IdIMAP41.Host;
//(s,1,pos('|',s));.Username:=Copy(s,1,pos('|',s)-1);.Username:=IdIMAP41.Username;
//(s,1,pos('|',s));.Password:=Copy(s,1,pos('|',s)-1);.Password:=IdIMAP41.Password;
//(s,1,pos('|',s));s='POP3'imap:=falses='IMAP'imap:=true;
//////////////////////////////////////// проверка почты.Clear;.Enabled:=true;.Interval:=1000*60*5; // раз в 5 минутimap=true.Connect(30000);.SelectMailBox('INBOX');.RetrieveAllHeaders(IdIMAP41.MailBox.MessageList);
//IdIMAP41.MailBox.MessageList.Count=0
then ShowMessage('В папке 0 сообщений!');
end.Connect(1000);IdPOP31.CheckMessages=0ShowMessage('В папке 0 сообщений!');;imap=true//IMAP4.Lines.Add('------------------------------------------------------------------------------------------------------------------------------------------------------------------------');.Lines.Add('Имя почтового ящика (IMAP): '+usr+' (всего сообщений: '+IntToStr(IdIMAP41.MailBox.MessageList.Count)+')');.Lines.Add('------------------------------------------------------------------------------------------------------------------------------------------------------------------------');i:=0
to IdIMAP41.MailBox.MessageList.Count-1 do.Lines.Add(' '+IntToStr(i+1)+': От:
'+DecodeStr(IdIMAP41.MailBox.MessageList.Messages[i].From.Text));.Lines.Add(' Адрес:
'+DecodeStr(IdIMAP41.MailBox.MessageList.Messages[i].From.Address));.Lines.Add('
Имя:
'+DecodeStr(IdIMAP41.MailBox.MessageList.Messages[i].From.Name));.Lines.Add(' Тема:
'+DecodeStr(IdIMAP41.MailBox.MessageList.Messages[i].Subject));.Lines.Add(' Сервер:
'+DecodeStr(IdIMAP41.MailBox.MessageList.Messages[i].MsgId));.Lines.Add('
Attachement Encoding: '+DecodeStr(IdIMAP41.MailBox.MessageList.Messages[i].AttachmentEncoding));.Lines.Add('
Charset:
'+DecodeStr(IdIMAP41.MailBox.MessageList.Messages[i].CharSet));.Lines.Add(' Текст сообщения:
'+DecodeStr(IdIMAP41.MailBox.MessageList.Messages[i].Body.Text));.Lines.Add('
');;.Disconnect;//POP3.Lines.Add('------------------------------------------------------------------------------------------------------------------------------------------------------------------------');
Memo2.Lines.Add('Имя почтового ящика (POP): '+usr+' (всего сообщений:
неизвестно)');
Memo2.Lines.Add('------------------------------------------------------------------------------------------------------------------------------------------------------------------------');i:=1
to IdPOP31.CheckMessages do.Clear;.RetrieveHeader(i,IdMessage1);.Lines.Add('
'+IntToStr(i)+': От:
'+DecodeStr(IdMessage1.From.Text));.Lines.Add(' Адрес: '+DecodeStr(IdMessage1.From.Address));.Lines.Add(' Имя:
'+DecodeStr(IdMessage1.From.Name));.Lines.Add(' Тема: '+DecodeStr(IdMessage1.Subject));.Lines.Add(' Сервер: '+DecodeStr(IdMessage1.MsgId));.Lines.Add('
Attachement Encoding: '+DecodeStr(IdMessage1.AttachmentEncoding));.Lines.Add('
Charset: '+DecodeStr(IdMessage1.CharSet));.Lines.Add(' Текст сообщения: '+DecodeStr(IdMessage1.Body.Text));.Lines.Add(' ');;.Disconnect;;
;;
TForm1.Button6Click(Sender: TObject);.ShowModal;;
adress;
, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms,, StdCtrls;
= class(TForm): TEdit;: TLabel;: TLabel;: TEdit;: TLabel;:
TEdit;: TLabel;: TEdit;: TButton;: TRadioButton;: TRadioButton;FormShow(Sender:
TObject);Button1Click(Sender: TObject);
{ Private declarations }
{ Public declarations };
: TForm2;
Unit1;
{$R *.dfm}
TForm2.FormShow(Sender: TObject);: integer;: string;i:=0 to
Form1.ListBox1.Items.Count-1 doForm1.ListBox1.Selected[i]:=Form1.ListBox1.Items.Strings[i];
//.Text:=Copy(s,1,pos('|',s)-1);(s,1,pos('|',s));.Text:=Copy(s,1,pos('|',s)-1);(s,1,pos('|',s));.Text:=Copy(s,1,pos('|',s)-1);(s,1,pos('|',s));.Text:=Copy(s,1,pos('|',s)-1);(s,1,pos('|',s));s='POP3'RadioButton1.Checked:=trues='IMAP'RadioButton2.Checked:=trueRadioButton1.Checked:=true;Edit1.Text=''Edit1.Text:=Form1.ListBox1.Items.Strings[i];
//;;;;
TForm2.Button1Click(Sender: TObject);: integer;: string;i:=0
to Form1.ListBox1.Items.Count-1 doForm1.ListBox1.Selected[i](Edit1.Text<>'')
and (Edit2.Text<>'')(Edit3.Text<>'') and
(Edit4.Text<>''):=Edit1.Text+'|'+Edit2.Text+'|'+Edit3.Text+'|'+Edit4.Text;RadioButton1.Checkeds:=s+'|'+'POP3's:=s+'|'+'IMAP';.ListBox1.Items.Strings[i]:=s;.ListBox1.Items.SaveToFile(ExtractFilePath(ParamStr(0))+'emails.txt');
else ShowMessage('Одно
из полей не заполнено!');
Break;;;; ;
.
em;
, Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms,, IdComponent, IdTCPConnection, IdTCPClient, IdMessageClient,,
ComCtrls, StdCtrls, Buttons, ExtCtrls, IdBaseComponent, IdMessage;
= class(TForm): TIdMessage;: TIdSMTP;: TOpenDialog;:
TLabeledEdit;: TLabeledEdit;: TLabeledEdit;: TLabeledEdit;: TLabeledEdit;:
TLabeledEdit;: TMemo;: TLabel;: TBitBtn;: TMemo;: TButton;: TLabeledEdit;:
TLabeledEdit;btnSendMailClick(Sender: TObject);SMTPStatus(ASender: TObject;
const AStatus: TIdStatus;AStatusText: string);Button1Click(Sender: TObject);
{ Public declarations };
: TForm3;
{$R *.dfm}
TForm3.btnSendMailClick(Sender: TObject);.Clear;
// установка SMTP.Host:=ledHost.Text;.Port:=25;
// установка сообщения.AuthenticationType:=atLogin; //
atNone.Username:=LabeledEdit1.Text;.Password:=LabeledEdit2.Text;
//.From.Name:=ledFrom.Text;.Subject:=ledSubject.Text; // тема.From.Address:=ledFrom.Text;
// адрес отправителя.Recipients.EMailAddresses:=ledTo.Text+','+ledCC.Text; //
получатель + копия.Body.Text:=Memo2.Text; // текст
сообщенияFileExists(ledAttachment.Text)TIdAttachment.Create(MailMessage.MessageParts,ledAttachment.Text);
// отправка почты.Connect(1000);.Send(MailMessage);('Письмо отправлено!');on E:Exception do.Lines.Insert(0,'Статус отправки: ERROR -
'+E.Message);('Письмо не
отправлено!');
end;;SMTP.ConnectedSMTP.Disconnect;;;
TForm3.SMTPStatus(ASender: TObject; const AStatus:
TIdStatus;AStatusText: string);.Lines.Insert(0,'Статус отправки:
'+AStatusText);;
TForm3.Button1Click(Sender:
TObject);AttachmentDialog.ExecuteledAttachment.Text:=AttachmentDialog.FileName;;
.
ПРИЛОЖЕНИЕ Б
Рисунок 1 - Вид экранной формы «Учет ходящих электронных писем»
Рисунок 2 - Вид экранной формы «Добавление»
Рисунок 3 - Вид экранной формы сообщения пользователю об ошибке при добавлении
новой строки поключения, не со всеми введенными данными
Рисунок 4 - Вид экранной формы «Изменение»
Рисунок 5 - Вид экранной формы сообщения пользователю об ошибке при
изменении существующей строки поключения, не со всеми введенными данными
Рисунок 6
- Вид экранной формы «Открыть».
Рисунок
7 - Вид экранной формы «Проверка почты».
Рисунок
8 - Вид экранной формы сообщения пользователю об ошибке при удачном подключении
к серверу.
Рисунок 9 - Вид экранной формы сообщения пользователю о пустой папке
«Входящие».
Рисунок 10 - Вид экранной формы «Входящие электронные письма».
Рисунок 11 - Вид печатной формы «Входящие электронные письма».
Речь на защиту диплома
Здравствуйте, уважаемая государственная аттестационная комиссия.
Разрешите представить вашему вниманию дипломный проект на тему: «Разработка
программы «Учет входящих электронных писем».
Целью данного дипломного проекта является разработка программы «Учета
входящих электронных писем», обеспечивающей контроль за своевременностью
обновления программного обеспечения. Программа предназначена для сбора,
хранения и обработки информации о присланных электронных письмах об
обновлениях. Разрабатываемая программа
позволит: производить безошибочный учет всех электронных писем, содержащих
сведения об обновлении, даст возможность формирования достоверной и полной
информации обо всех клиентах, осуществивших обновления для программ ЕГРЮЛ и
ЕГРИП .
После изучения предметной области, установили, что входной информацией
является:
1) дата начала;
2) дата конца;
) адрес электронной почты;
4) домен;
5) логин;
) пароль;
) протокол получения почты.
Где дата начала - дата, до которой должно быть произведено обновление
клиентом ( указывается в письме ).
Дата конца - сегодняшняя дата.
Адрес почты - адрес электронного почтового «ящика», куда приходят письма
с данными об обновлениях. Адрес «ящика» электронной почты состоит из двух
частей, разделенных символом «@». Первая часть представляет из себя
идентификатор почтового «ящика» (обычно называют «login» или «регистрационная
запись»). Вторая часть - идентификатор Интернет - провайдера, предоставившего
адрес (также называют «доменом»).
Адрес сервера входящей почты (сервер POP3) - пишется как:
pop."домен". (Если, например, почтовый ящик зарегистрирован на
сервере www.mail.ru, то адрес сервера входящей почты будет pop.mail.ru).
Логин - первая часть электронной почты («регистрационная запись»).
Пароль - пароль на вход в электронный «ящик».
Протокол (protocol) - стандарт, определяющий поведение функциональных
блоков при передаче данных. Протокол задается набором правил взаимодействия
функциональных блоков, расположенных на одном уровне; реализуется одной либо
группой программ; описывает синтаксис сообщения, имена элементов данных,
операции управления и состояния. (POP3 (Post Office Protocol version 3) -
протокол, поддерживающий как прием, так и отправку сообщений электронной
почты.)
Выходными данными являются:
1) автор письма;
2) nадрес почты;
) тема письма;
) сервер;
) текст сообщения;
) прикрепленный файл;
) дата письма.
По требованию заказчика, программа должна выводить на экран списки данных
о сотрудниках, совершивших своевременное обновление программ, а так выводить на
печать отчет «Учет входящих электронных писем».
Разрабатываемая программа должна осуществлять:
ввод и формирование исходных данных в программу;
добавление, корректировку и удаление информации;
установление связи с почтовым сервером;
проверку наличия входящих сообщений, а так же их фильтрацию;
- вывод данных на экран и на твердые копии;
После анализа входных, выходных данных, а так же функциональных
требований, была составлена структурно-функциональная схема программы.
Из схемы видно, что ввод (добавление) и формирование данных
осуществляется посредством модуля ввода (добавления) и формирования, при чем
ввод исходных данных осуществляется как через файл, так и через ручной ввод в
программу. Входные данные поступают в модуль редактирования и поиска для
осуществления функций изменения, удаления данных. Модуль учета по введенным
данным устанавливает связь с почтовым сервером, осуществляет фильтрацию и
передает данные в модуль сохранения. Модуль сохранения осуществляет функцию
сохранения данных в файл (MS Excel). Модуль вывода осуществляет вывод требуемой
информации на экран и на твердые копии.
После анализа работы всех модулей можно составить диаграмму потоков
данных программы «Учет входящих электронных писем».
Поскольку разрабатываемая программа должна иметь дружественный интерфейс,
разработана диаграмма состояний представленная на первом плакате. (рассказываешь
1му по плакату) Первое окно реализует ввод данных, а так же, при
желании пользвателя, их загрузку, редактирование, удаление и добавление. Второе
окно - установление связи с почтовым сервером для проверки писем. Далее следует
инициализация выполнения. Четвертое определяет действия с результатом. (перестаешь
рассказывать по плакату)
После проектирования программы, можно приступить к разработке и описанию
алгоритма, представленного в пояснительной записке на страницах с 14 по 27.
На втором плакате представлена структурная схема управляющей программы.
*рассказываешь по 2му плакату *
После запуска программы пользователю предоставляется выбор
дальнейших действий: ввод, сохранение, изменение, удаление данных. Модуль «учет
входящих электронных писем» осуществляет соеденение с почтовым сервером по
строкам подключения. Выбор сохранения, отмены вывода или печати вызывают
соответствующие функции.
*переходишь к 3му плакату, рассказываешь по нему* -- если тут
не «Добавить» то тогда это естественно не верно.
На третьем плакате представлена структурная схема функции
«Добавить». На схеме видно, что после вызова функции, осуществляется проверка
на достаточность данных, в зависимости от которой либо появляется сообщение
пользователю «Введены не все значения», либо, в случае полноты данных,
происходит добавление новой строки подключения к уже существующим.
*перестаешь рассказывать по 3му плакату*
Дружественный графический интерфейс разработан в среде программирования Borland Delphi 7, потому что, во-первых, в данной среде
программирования намного легче создавать интерфейс приложения, чем в таких
средах как Visual C++ или Visual FoxPro, т.к. от интерфейса зависит наглядность
и быстрое освоение приложения, а, во-вторых, компилятор Delphi позволяет
обеспечить высокую производительность, легкость разработки и быстрое время
проверки готового программного блока.
Описание выбора языка программирования и сравнение его с несколькими
остальными языками программирования высокого уровня приведено в ПЗ начиная со
страницы 28.
Рассмотрим описание программы: технические характеристики программы и
минимальную конфигурацию ПК.
Технические характеристики программы (читаешь прям с презентации)
Разработанная программа может быть реализована на IBM совместимом компьютере со следующей
минимальной конфигурацией: (читаешь с презентации)
Также должны быть установлены MS Excel. Описание
программы приведено в ПЗ начиная со страницы 31.
На этапе тестирования программы с помощью функциональных пар был выявлен
ряд ошибок, которые были локализованы на этапе отладки. Функциональные пары и
результаты тестирования приведены в подразделе ПЗ Описание отладки программы,
который начинается со страницы 33.
Образцы выполнения программы.
При запуске программы показывается окно, представленное на
рисунке 1. при добавлении новой строки подключения, появляется окно
представленное на рисунке 2. Если для добавления новой строки введены не все
значения, программа сообщит об этом пользователю. На Рисунке 4 показан вид
экранной формы «Изменение» при изменении какой либо строки подключения. При
вводе в форму «Изменение» не всех данных, программа опять же сообщит
пользователю об ошибке - Рисунок 5. Рисунок 6 демонстрирует загрузку данных
через уже созданный файл letters.txt После ввода входных данных, пользователь выбирает меню «почта» -
«проверка почты», после чего программа показывает пользователю результат
выполнения проверки (рисунок7). В случае, если данные строки подключения не
верны , пользователю выдастся сообщение об ошибке (рисунок 8). Если же
подключение произошло, но в папке «Входящие» нет ни одного письма -
пользователь так же будет уведомлен.(рисунок 9)
В случае когда соединение установлено, и в папке «Входящие»
есть письма, программа осуществляет фильтрацию и выдает пользователю список
писем. При желании пользователь может экспортировать данные в эксель. (рисунок
10, 11)
Подробная инструкция пользователя по работе с программой приведена на
страницах 41 по 51.
Экономическая эффективность - рассказываешь только основное, типа затраты
на расходные материалы составили столько то (см презентацию), основная плата
разработчиков - столько то , всего затрат столько то (если вы поменяли эк-кую
часть, не забудь в презентации поменять) и тд.
Заключение прям по презентации читай, и в конце на основании этого можно
заключить, что данная программа экономически целесообразна и может быть
рекомендована к внедрению.
Считаю, что цель данного дипломного проекта достигнута.
Спасибо за внимание.