Реферат по предмету "Информатика, программирование"


Программирование в Delphi

МИНИСТЕРСТВОСЕЛЬСКОГО ХОЗЯЙСТВА И ПРОДОВОЛЬСТВИЯ РЕСПУБЛИКИ БЕЛАРУСЬ
Учреждениеобразования «Белорусский государственный аграрный технический университет»
Факультет: Предпринимательства и управленияКафедра: Экономической информатики
Курсовойпроект
Тема:«ПРОГРАМИРОВАНИЕ В DELPHI»
Выполнилстудент II курса
группы 52-ЗЭИ
Зачетнаякнижка №506020
БратулинЕвгений Петрович
Проверил:_______________
Минск 2007

 CОДЕРЖАНИЕ
1.Введение. 3
2.Постановка задачи. 4
3. Математическая формулировка задачи и выбор методаобработки   информации  7
4.Разработка алгоритма схемы алгоритма и его описание. 9
5.Форма представления исходных данных. 21
6.Разработка интерфейса. 22
7.Листинг программы… 25
8.Результаты проведенных расчетов и их анализ. 32
Выводы… 35
Списокиспользованных источников. 36
Приложения. 37
 

1.Введение.
В данной курсовой работепредложено создать Windows-приложениена алгоритмическом языке Object Pascal в средевизуального программирования Delphi,которое как планируется, будет обеспечивать решение специализированных задач поформированию, обработке на ЭВМ и выводу информации.
Разработчику ставитьсявполне определенная задача, при выполнении которой используются навыки работы соперационными системами, программными оболочками, разнообразными служебными исервисными средствами. А также навыки по алгоритмизации, программированию ирешению в интегрированной визуальной среде программирования Delphi задач по экономике и управлению напредприятии.

2.Постановка задачи.
В данной курсовой работетребуется создать Windows-приложениена алгоритмическом языке Object Pascal в средевизуального программирования Delphi,которое обеспечивает формирование, обработку на ЭВМ и вывод информации.Предусмотреть хранение информации в типизированных файлах, содержащих не менее10 записей. Приложение должно обеспечивать формирование базы данных сведений овыручке от реализации продукции за плановый период, выполнить математическиевычисления по расчету объема реализации и стоимости в оптовых ценах всегообъема реализации. Также необходимо обеспечить сортировку базы данных валфавитном порядке по наименованию продукции и организовать вывод в MEMO-поле наименование продукции, имеющеезначение наибольшей стоимости.
Степень рациональностисоздания данной программы оценивается как низкая. Исходя из начальных условий,необходимо выполнить тривиальную последовательность действий:
— хранение малого объемаданных
— произведение простыхматематических вычислений
— обеспечение хранениебазы данных
При исследованиисуществующих программных продуктов, был сделан вывод, что используя комплексноепрограммное обеспечение компании Microsoft, на базе электронных таблиц Excel или базы данных Accessможно было создать такое же приложение, выполняющее поставленную задачу. Приэтом затрачивается минимум усилий на проработку интерфейса и процедурсортировки. Однако, большим минусом данного решения будет являетсянеобходимость обязательной предварительной установки программного обеспечении Microsoft Office, лицензионные версии которого не получили широкогораспространения на территории Республики Беларусь.
Поэтому принято считать,что уже исходя из этого разрабатываемое Windows- приложение не является «бесполезным», потому какимеет одну четко сформировавшуюся цель и место применения. Вероятноеиспользование данного продукта — финансовые терминалы на базе операционныхсистем семейства Windows любогопроизводственного предприятия. Данная программа, используя стандартныекомпоненты, с успехом будет работать в ОС-ах Windows’95, 98, 2000, ХР не требуя при этом дополнительныхинсталляций программного обеспечения.
Для создания подобногоприложения, которое будет удовлетворять поставленную задачу, и обеспеченияфункционирования математического аппарата необходимо как минимум:
1)   Один компонент для визуальногопредставления данных в табличной форме,
2)   MEMO-поле для вывода данных, указанных взадании
3)   Набор компонентов для добавления /изменения / удаления записей в базу данных
4)   Диалоговые окна, обеспечивающие выборфайлов для открытия / сохранения базы данных с соответствующими кнопками для ихвызова.
Также необходимообязательно создать дополнительные подпрограммы, обеспечивающие непосредственноматематический аппарат основной программы и сортирование базы данных.
Таким образом, учитываявышесказанное, разработчиком были приняты следующие решения, касающиеся будущейструктуры приложения:
1)        для визуальногоотображения данных в табличной форме выбрать компонент StringGrid, который в текстовой формеобеспечивает ввод, изменение, удаление и просмотр данных. Шапка таблицы будетповторять таблицу, указанную в начальном условии. Предустановленноемаксимальное количество данных – 100 записей, что также удовлетворяетначальному условию
2)        MEMO-поле прежде всего предназначенноедля вывода данных, указанных в условии, дополнительно использовать длявизуального подтверждения выполняемых пользователем действий.
3)        для добавления /изменения / удаления записей в базу данных использовать 5  компонентов edit (для заполнения соответствующихстолбцов), и 2 button-а (длядобавления и удаления записи соответственно). Так как для отображенияинформации в StringGrid используется текстовая форма,предусмотреть невозможность ввода текстовых данных в численные поля с выводомсоответствующего сообщения, а также невозможность внесения «пустого» поля, таккак все поля базы данных, необходимые для математического расчета по условиямзадачи должны быть заполнены.
4)        использоватьстандартные диалоги OpenDialog и SaveDialog для предоставления пользователювозможности визуального выбора имени и пути типизированного файла для открытиялибо для сохранения базы данных. Для вызова диалогов использовать 2 компонента button с соответствующими названиями
5)        для «обнуления»данных, т.е. создания новой базы использовать компонент button с подписью «создать базу».
6)        для дублированияфункций программы и создания дополнительного удобства работы с приложениемприменить компонент menu ссоответствующими подменю и подписями кнопок.
7)        математическийаппарат представить в виде отдельной процедуры, состоящей из двух уравнений,удовлетворяющих начальному условию, которые являются необходимой частьюприложения. Расчет проводить в автоматизированном режиме, без участияпользователя.
8)        выполнитьсортирование базы данных в автоматизированном режиме. Что исключит лишниедействия пользователя по периодическому нажатию кнопки «сортировка». Действиесортировки выполнить уникальным, специально разработанным методом при каждомизменении базы данных.

3.Математическая формулировка задачи и выбор метода обработки информации
В поставленной задаченеобходимо выполнить простейшие операции и вычисления. Математический аппаратпредставлен в виде вычисления двух неизвестных по заранее заданным формулам.
1) из базы данныхвыделить сведения на каждую запись об остатке на начало года, об остатке наконец года, о плане выпуска, а также стоимость в оптовых ценах единицыпродукции.
2) выполнить вычислениеобъема реализации по формуле, указанной в задании.
3) выполнить вычислениестоимости в оптовых ценах всего объема реализации по формуле, указанной взадании.
Поиск наименованияпродукции, обладающей наибольшую стоимость всего объема реализации, происходитметодом прямого перебора базы данных, сравнивая каждый последующий элемент спредыдущим. При обнаружении последующего элемента большим, чем предыдущий,значение стоимости записывается в одну буферную переменную, а индекс строкизаписывается во вторую. При окончании перебора в поле MEMO выводится наименование продукции из базы данных,соответствующей записанному ранее индексу, а значение переписывается избуферной переменной.
Элемент автоматическойсортировки встроен в систему вывода информации через компонент StringGrid. Для этого используетсятипизированный массив набора данных. При добавлении новой записи происходитперенос данных из StringGrid-а втипизированный массив и затем происходит прямой перебор базы данных с поискомнаиболее большего в текстовом смысле значения наименования продукции сиспользованием функции CompareText. При определении первого большего элемента добавляемая записьзаписывается между строк типизированного массива, а затем все «не пустые»записи типизированного массива переносятся в уже очищенный StringGrid. Затем типизированный массивочищается.
Таким образом исключаетсянеобходимость участия пользователя в процессе сортировки данных. Ход процессаперестроения базы данных как бы вмонтирован в операции по изменению данных. Тоесть конечной целью разработчика являлась создание унифицированной процедуры попреобразованию массива данных.Однако, данный метод (ровно как и метод«пузырька») применим только для малых объемов баз данных, так какпреобразование большого массива информации потребует значительные ресурсы.Поэтому набор данных намеренно был ограничен 100 записями, что в полной мереудовлетворяет поставленному условию (оперирование с более чем десятьюзаписями).
Дальнейшим возможнымразвитием программы может быть использование стандартизированных типов базданных со встроенной системой индексации и поиска, со встроенными функциямисортировки. Также возможно интегрирование типизированных файлов с программами Microsoft Office Excel или Access.Также, при необходимости, возможно доработать программу до клиент/серверногоположения, которое будет иметь общую систему защищенных баз данных, удобноеуправление, а также распределение полномочий по добавлению/изменению/удалениюзаписей.
 

4.Разработка алгоритма, схема алгоритма и его описание.
На основе вышеизложеннойматематической формулировки задачи, составляем соответствующие подпрограммы:
Sg1.cells  
2   />
Начало   />
1   1. процедура выполнениядействий при загрузке формы:   FormShow.          Пояснения к алгоритму 1:
/>Блок 2 – задание имен фиксированным столбцам в StringGrid.
/>
3   />
memo1.Lines   Блок 3 – вывод в поле memo сообщения о запуске./> /> /> /> /> /> /> /> />

Начало   />
1   2. процедура очисткиStringGrid:   CleanSG.
/>

n2=1, Sg1.Rowcount,1   />
2             Пояснения к алгоритму 2:
/>/>/>/>/>/>
Sg1.rows[n2].clear   />/>Блок 2 – цикл перемещения по строкам  StringGrid.
3   Блок 3 – очистка строки StringGrid.
/>

3. процедура очистки edit-ов:   clearedit./> /> /> /> /> /> /> /> />

2             Пояснения к алгоритму 3:
edit1.clear   />Блоки 2-6 – очистка edit-ов./> /> /> /> /> /> /> /> /> /> /> /> />
4   /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> />
6   /> /> /> /> /> /> /> /> /> /> />


4. процедура создания новой базы:   button4click.
/> 
 
/>           Пояснения к алгоритму 4:
Нет   />/>
Да   />/>/>
 2  
messagedlg   Блок 2 – запрос удаления несохраненныхданных.
Блок 3 – вызов процедуры.
/>/>/>/>
cleansg  
 3   Блок 4 – вывод в поле memo подтверждение создания базы./> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> />

5. процедура добавления записи:   button1click.          Пояснения к алгоритму 5:
Блок 2 – проверка edit-ов на не пустые строки.
Блок 3 – попытка присвоить строкецелочисленные переменные.
                сообщение онеобходимости полей 2…5 быть числом.
Блок 4 – задание начального условия цикла.
Блоки 5,6 – цикл очистки типового массива.
Блок 7 – задание начального условия цикла.
Блоки 8,9,10 – цикл перевода строки StringGrid в массив записей.
Блок 11 – задание начального условия цикла.
Блоки 12,13,14 – цикл нахождения количества записейбольших добавленного значения.
Блок 13 – выполнение условия сравнениятекстовых переменных.
Блоки 15,16 – междустрочное добавление записи вмассив.
Блок 17 – вызов процедуры.
Блок 18 – задание начального условия цикла.
Блоки 19,20,21,22,23 – цикл перевода массива в StrinпGrid.
Блок 24 – вызов процедуры очистки edit-ов.
Блок 25 – вызов процедуры авторасчета.
                 сообщение онеобходимости всех полей к обязательному заполнению./> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> />
12   /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> />
19   /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> />

6. процедура автоматическогорасчета:   autorachet.          Пояснения к алгоритму 6:
Блок 2 – формирование цикла.
Блок 3 – условие математического расчета(при не пустой ячейке — выполняется).
Блок 4 – выполнение математическихрасчетов.
Блоки 5,6,7 – поиск максимального элемента.
Блок 8 – вывод в поле memo наименование статьи с наибольшимзначением.
/> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> />
2   /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> />

7. процедура сохранения базы:   button6click.          Пояснения к алгоритму 7:
Блоки 2,3 – открытие для записи данных.
Блок 4 – задание начального условия цикла.
Блоки 5,6 – повторный цикл очистки массива.
Блок 7 – задание начального условия цикла.
Блоки 8,9,10 – повторение цикла перевода строки StringGrid в массив записей.
Блоки 11,12 – запись в файл.
Блок 13 – закрытие файла.
Блок 14 – вывод в поле memo подтверждения./> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> />
5   /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> />


8. процедура открытия базы:   button5click.          Пояснения к алгоритму 8:
Блоки 2,3 – открытие для чтения данных.
Блок 4 – задание начального условия цикла.
Блоки 5,6 – повторный цикл очистки массива.
Блоки 7,8,9 – чтение из типизированного файла втипизированный массив.
Блок 10 – вызов подтверждения очистки StringGrid.
Блок 11 – задание начального условия цикла.
Блоки 12,13,14,15,16 – повтор цикла перевода массива в StringGrid.
Блок 17 – вызов процедуры расчета.
Блок 18 – вывод в поле memo подтверждения./> /> /> /> /> /> /> /> />
/> /> /> /> /> /> /> /> /> /> /> /> /> /> />

9. процедура удаления базы:   button3click.          Пояснения к алгоритму 9:
Блок 2 – очистка выбранной строки.
Блок 3 – задание начального условия цикла.
Блоки 4,5 – повторный цикл очистки массива.
Блок 6 – задание начального условия цикла.
Блоки 7,8,9 – повторение цикла перевода строки StrinGrid в массив записей.
Блок 10 – задание начального условия цикла.
Блоки 11,12,13,14,15 – повтор цикла перевода массива в StrinGrid.
Блок 16 – расчет.
/> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> />
15   /> /> /> /> />
16   />


10. клик StringGrid-а.          Пояснения к алгоритму 10:
/>/>
Начало  
1   Блок 2 – подтверждение выбора./> /> /> /> /> /> /> /> /> /> /> />
2   /> /> /> /> /> /> /> /> />
3   /> /> /> />

11. вызов печати.           Поясненияк алгоритму 11:
/>/>
Начало  
1   Блок 2 – вызов стандартного почтовогоклиента./> /> /> /> /> /> /> /> />

12. выход.          Пояснения к алгоритму 12:
/>/>
Начало  
1   Блок 2 – выход из программы./> /> /> /> /> /> /> /> />

5. Формапредставления исходных данных
По условию поставленнойзадачи необходимо предусмотреть хранение информации в типизированных файлах.Для решения данного вопроса, необходимо разработать типизированный элементхранения данных – строку набора базы данных, роль которой в данном приложениибудет выполнять переменная «zap»,имеющая следующую структуру.
type zap=record
prod:string[80];
onng:longint;
plan:longint;
onkg:longint;
svocep:extended;
end;
Т.е. данная переменнаяпредставляет собой линейный массив переменных данных необходимого нам типа. Дляорганизации двумерного массива, опишем в разделе переменных массив «Mzap»:
var
Mzap:array[1..200] of zap; //объявлениетипа массива записей
Типизированный файлпредставляет собой набор типизированных элементов, структура и наименованиекоторого описаны в вышеназванном разделе переменных:
filezap: file of zap;
filenamezap:string;

6. Разработка интерфейса
Принимая во вниманиепоставленную ранее задачу, создаем на форме следующие визуальные компоненты:
— StringGrid — для визуального отображения данныхв табличной форме. Шапка таблицы будет повторять таблицу, указанную в начальномусловии, и заполняется при открытии формы. Предустановленное максимальноеколичество строк – 100, столбцов – 7. Ширины столбцов выбираем в соответствии сразмерностью данных.
— MEMO-поле для вывода данных, указанных вусловии.
— 5  компонентов edit для добавления / изменения /удаления записей в базу данных (компоненты имеют ширину, соответствующуюширинам стобцов, и расположены напротив каждого столбца снизу) (см. рис. 1).
/>
Рис.1. Общийвид приложения.
2 button-а для добавления и удаления записи,названных соответственно выполняемой функции. Так как для отображенияинформации в StringGrid используется текстовая форма,предусмотрено невозможность ввода текстовых данных в численные поля с выводомсоответствующего сообщения, а также невозможность внесения «пустого» поля, таккак все поля базы данных, необходимые для математического расчета по условиямзадачи, должны быть обязательными для заполнения. Эти события регистрируютсяспециальными предвартельными условиями и при обнаружения несоответствиявыводится окно, отображающее наименование ошибки (см. рис.2 и рис.3).
/>
Рис.2. Ошибкапри добавлении пустого (пыстых) полей.
/>
Рис.3. Ошибкапри добавлении не численного значения.
— использованыстандартные диалоги OpenDialog и SaveDialog для предоставления пользователювозможности визуального выбора имени и пути типизированного файла для открытиялибо для сохранения базы данных  (См. рис.4).
/>
Рис.4.Стандартное диалоговое окно для открытия базы данных.
Для вызова диалоговиспользованы 2 компонента buttonс соответствующими названиями. А для «обнуления» данных, т.е. создания новойбазы использовать компонент buttonс подписью «создать базу».
Для дублирования функцийпрограммы и создания дополнительного удобства работы с приложением примененкомпонент menu с соответствующими подменю иподписями кнопок.
Расположение кнопок идругих полей выбрано для гарантированного удобства работы с приложением.

7.Листингпрограммы
unit EconomInfo;
interface
uses
  Windows, Messages,SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, Menus,StdCtrls,shellapi;
type
  TForm1 = class(TForm)
    sg1: TStringGrid;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    N7: TMenuItem;
    N9: TMenuItem;
    N10: TMenuItem;
    N11: TMenuItem;
    Memo1: TMemo;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Button1: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    OpenDialog1:TOpenDialog;
    SaveDialog1: TSaveDialog;
    N8: TMenuItem;
    procedureFormShow(Sender: TObject);
    procedurecleansg(Sender: TObject);
    procedurecleanedit(Sender:TObject);
    procedureButton4Click(Sender: TObject);
    procedureButton1Click(Sender: TObject);
    procedure autorachet(Sender:TObject);
    procedureButton6Click(Sender: TObject);
    procedureButton5Click(Sender: TObject);
    procedureButton3Click(Sender: TObject);
    proceduresg1Click(Sender: TObject);
    procedureN8Click(Sender: TObject);
    procedureN5Click(Sender: TObject);
  private
    { Private declarations}
  public
    { Public declarations}
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
type zap=record //объявление типа записи
prod:string[80];
onng:longint;
plan:longint;
onkg:longint;
svocep:extended;
end;
var
Mzap:array[1..200] of zap; //объявлениетипа массива записей
filezap: file of zap;
filenamezap:string;
//процедура выполнения действий призагрузке формы
procedureTForm1.FormShow(Sender: TObject);
begin
with sg1 do begin
Cells[0,0]:='Наименованиепродукции';
Cells[1,0]:='ОнНГ';
Cells[2,0]:='ПВ';
Cells[3,0]:='ОнКГ';
Cells[4,0]:='ОР, шт';
Cells[5,0]:='СвОЦЕП, руб';
Cells[6,0]:='СвОЦВОР,т.руб';
end;
memo1.Lines.Insert(0,DateTimeToStr(Now)+'- Программа запущена!');
end;
//процедура очисткистринггрида
procedureTform1.cleansg(Sender: TObject);
var n2:integer;
begin
with sg1 do begin
for n2:=1 to RowCount dobegin
Rows[n2].Clear;
end;
end;
end;
//процедура очистки эдитов
procedureTform1.cleanedit(Sender: TObject);
begin
edit1.Clear;
edit2.Clear;
edit3.Clear;
edit4.Clear;
edit5.Clear;
end;
//Создание новой базы
procedureTForm1.Button4Click(Sender: TObject);
begin
if messagedlg('Всенесохраненные данные текушей базы будутстерты!',mtconfirmation,mbYesNoCancel,0)=mrYes then begin
cleansg(Sender);
memo1.Lines.Insert(0,DateTimeToStr(Now)+'- Новая база создана. Пожалуйстасохраните, задав новое имя.');
end;
end;
//добавление записи
procedureTForm1.Button1Click(Sender: TObject);
varn,k,l:integer;o:extended;
begin
//проверка на пустые поля edit-ов
if (edit1.Text'')and (edit2.Text'') and (edit3.Text'') and(edit4.Text'') and (edit5.Text'') then
begin
try
  n:=strtoint(edit2.text);
  n:=strtoint(edit3.text);
  n:=strtoint(edit4.text);
 o:=strtofloat(edit5.text);
except
on EConvertError domessagedlg('Поля 2..5 должны быть числом!',mterror,mbOKCancel,1);
end;
//цикл очистки массива записей
n:=0;
repeat
Mzap[n].prod:='';
Mzap[n].onng:=0;
Mzap[n].plan:=0;
Mzap[n].onkg:=0;
Mzap[n].svocep:=0;
n:=n+1;
until n>=200;
//цикл перевода строк stringgrid-a в массив записей
n:=1;
repeat
ifsg1.Cells[0,n]'' then begin
Mzap[2*n].prod:=sg1.Cells[0,n];
Mzap[2*n].onng:=strtoint(sg1.cells[1,n]);
Mzap[2*n].plan:=strtoint(sg1.cells[2,n]);
Mzap[2*n].onkg:=strtoint(sg1.cells[3,n]);
Mzap[2*n].svocep:=strtofloat(sg1.cells[5,n]);
end;
n:=n+1;
until n>=sg1.RowCount;
//цикл нахождения количества записейбольших добавляемого значения
n:=1;l:=0;
repeat
if(Mzap[2*n].prod'') and (CompareText(edit1.Text,Mzap[2*n].prod)>0)then l:=l+1;
n:=n+1;
until n>=200;
//междустрочная запись в массив
k:=2*l+1;
Mzap[k].prod:=edit1.Text;
Mzap[k].onng:=strtoint(edit2.text);
Mzap[k].plan:=strtoint(edit3.text);
Mzap[k].onkg:=strtoint(edit4.text);
Mzap[k].svocep:=strtofloat(edit5.text);
cleansg(sender); //вызов очистки стрингрида
//цикл перевода массива записей встринггрид
n:=1;k:=1;
repeat
if Mzap[n].prod''then begin
sg1.Cells[0,k]:=Mzap[n].prod;
sg1.Cells[1,k]:=inttostr(Mzap[n].onng);
sg1.Cells[2,k]:=inttostr(Mzap[n].plan);
sg1.Cells[3,k]:=inttostr(Mzap[n].onkg);
sg1.Cells[5,k]:=floattostr(Mzap[n].svocep);
k:=k+1;
end;
n:=n+1;
until n>=200;
cleanedit(Sender); //вызовочистки эдитов
autorachet(sender);
end
else messagedlg('Все поля обязательна длязаполенения!',mterror,mbOKCancel,1); //вызов предупреждения
end;
//Процедураавтоматического расчета
procedureTform1.autorachet(Sender: TObject);
var n,l:longint;max:extended;
begin
n:=1;
max:=0;
repeat
with sg1 do begin
if cells[0,n]''then begin
cells[4,n]:=inttostr(strtoint(cells[1,n])+strtoint(cells[2,n])-strtoint(cells[3,n]));
cells[6,n]:=floattostr(strtoint(cells[4,n])*strtofloat(cells[5,n])/1000);
ifstrtofloat(cells[6,n])>max then begin l:=n; max:=strtofloat(cells[6,n]);end;
end;
end;
n:=n+1;
until n>=sg1.rowCount;
memo1.Lines.Insert(0,DateTimeToStr(Now)+'- Расчет произведен. МаксимальныйСвОЦВОР '+floattostr(max)+' руб. у '+sg1.cells[0,l]);
end;
procedureTForm1.Button6Click(Sender: TObject);
var n:longint;
begin
with savedialog1 do begin
title:='Сохранение базы';
if execute then
begin
filenamezap:=filename;
assignfile(filezap,filenamezap);
rewrite(filezap);
n:=0;
repeat
Mzap[n].prod:='';
Mzap[n].onng:=0;
Mzap[n].plan:=0;
Mzap[n].onkg:=0;
Mzap[n].svocep:=0;
n:=n+1;
until n>=200;
n:=1;
repeat
ifsg1.Cells[0,n]'' then begin
Mzap[n].prod:=sg1.Cells[0,n];
Mzap[n].onng:=strtoint(sg1.cells[1,n]);
Mzap[n].plan:=strtoint(sg1.cells[2,n]);
Mzap[n].onkg:=strtoint(sg1.cells[3,n]);
Mzap[n].svocep:=strtofloat(sg1.cells[5,n]);
end;
n:=n+1;
until n>=sg1.RowCount;
for n:=1 to 100 dowrite(filezap,mzap[n]);
closefile(filezap);
end;
end;
memo1.Lines.Insert(0,DateTimeToStr(Now)+'- База сохранена под именем '+filenamezap);
end;
rocedureTForm1.Button5Click(Sender: TObject);
var n,k:longint;
begin
with opendialog1 do begin
title:= 'Открытие базы';
if execute then
begin
filenamezap:=filename;
assignfile(filezap,filenamezap);
reset(filezap);
n:=0;
repeat
Mzap[n].prod:='';
Mzap[n].onng:=0;
Mzap[n].plan:=0;
Mzap[n].onkg:=0;
Mzap[n].svocep:=0;
n:=n+1;
until n>=200;
n:=1;
while not eof(filezap) do
begin
read(filezap,mzap[n]);
n:=n+1;
end;
cleansg(sender);
n:=0;k:=1;
repeat
if Mzap[n].prod''then begin
sg1.Cells[0,k]:=Mzap[n].prod;
sg1.Cells[1,k]:=inttostr(Mzap[n].onng);
sg1.Cells[2,k]:=inttostr(Mzap[n].plan);
sg1.Cells[3,k]:=inttostr(Mzap[n].onkg);
sg1.Cells[5,k]:=floattostr(Mzap[n].svocep);
k:=k+1;
end;
n:=n+1;
until n>=200;
autorachet(sender);
end;
end;
memo1.Lines.Insert(0,DateTimeToStr(Now)+'- База '+filenamezap+ ' открыта');
end;
//процедура удаления записи
procedureTForm1.Button3Click(Sender: TObject);
var n,k:longint;
begin
sg1.Rows[sg1.Row].Clear;
n:=0;
repeat
Mzap[n].prod:='';
Mzap[n].onng:=0;
Mzap[n].plan:=0;
Mzap[n].onkg:=0;
Mzap[n].svocep:=0;
n:=n+1;
until n>=200;
n:=1;
repeat
ifsg1.Cells[0,n]'' then begin
Mzap[n].prod:=sg1.Cells[0,n];
Mzap[n].onng:=strtoint(sg1.cells[1,n]);
Mzap[n].plan:=strtoint(sg1.cells[2,n]);
Mzap[n].onkg:=strtoint(sg1.cells[3,n]);
Mzap[n].svocep:=strtofloat(sg1.cells[5,n]);
end;
n:=n+1;
until n>=sg1.RowCount;
cleansg(sender);
n:=0;k:=1;
repeat
if Mzap[n].prod''then begin
sg1.Cells[0,k]:=Mzap[n].prod;
sg1.Cells[1,k]:=inttostr(Mzap[n].onng);
sg1.Cells[2,k]:=inttostr(Mzap[n].plan);
sg1.Cells[3,k]:=inttostr(Mzap[n].onkg);
sg1.Cells[5,k]:=floattostr(Mzap[n].svocep);
k:=k+1;
cleanedit(Sender); //вызовочистки эдитов
end;
n:=n+1;
until n>=200;
autorachet(sender);
end;
procedureTForm1.sg1Click(Sender: TObject);
begin
edit1.Text:=sg1.Cells[0,sg1.Row];
edit2.Text:=sg1.Cells[1,sg1.Row];
edit3.Text:=sg1.Cells[2,sg1.Row];
edit4.Text:=sg1.Cells[3,sg1.Row];
edit5.Text:=sg1.Cells[5,sg1.Row];
memo1.Lines.Insert(0,DateTimeToStr(Now)+'- Запись № '+inttostr(sg1.Row)+ ' выбрана');
end;
procedureTForm1.N8Click(Sender: TObject);
begin
ShellExecute(form1.Handle,nil,PChar('mailto:ultrix@tut.by?Subject=EcoInfo'),'','', 0);
end;
procedureTForm1.N5Click(Sender: TObject);
begin
halt;
end;
end.

8.Результаты проведенных расчетов и их анализ.
 
В данной курсовой работе намнеобходимо было рассчитать объем реализации и стоимость в оптовых ценах всегообъема реализации продукции за плановый период. Для расчетов нам были даныисходные данные о выручке от реализации продукции за плановый период (Табл. 1).
Таблица1. Сведения овыручке от реализации продукции за плановый период.Наименование продукции Остатки на начало года План выпуска Остатки на конец года Объем реализации, шт. Стоимость в оптовых ценах единицы продукции, руб. Стоимость в оптовых ценах всего объема реализации, тыс. руб. 1 2 3 4 5 6 7 Яблоко 711 40000 500 200000 Апельсин 236 80000 100 500150 Ананас 348 60000 200 400000 Мандарин 117 90000 50 550000 Грейпфрут 284 50000 150 450000 Банан 173 70000 300 350000 Абрикос 513 95000 450 300000 Персик 286 65000 600 250000 Виноград 482 85000 300 600000 Груша 136 40000 150 650000
Расчеты производились следующимобразом:
·           Рассчитаем объемреализации продукции за плановый период. Объем реализации, в нашем, случаеравен сумме остатков на начало года с планом выпуска за вычетом остатков наконец года по каждому виду реализованной продукции (Табл. 2).

Таблица2. Сведения овыручке от реализации продукции за плановый период.Наименование продукции Остатки на начало года План выпуска Остатки на конец года Объем реализации, шт. Стоимость в оптовых ценах единицы продукции, руб. Стоимость в оптовых ценах всего объема реализации, тыс. руб. 1 2 3 4 5 6 7 Яблоко 711 40000 500 40211 200000 Апельсин 236 80000 100 80136 500150 Ананас 348 60000 200 60148 400000 Мандарин 117 90000 50 90067 550000 Грейпфрут 284 50000 150 50134 450000 Банан 173 70000 300 69873 350000 Абрикос 513 95000 450 95063 300000 Персик 286 65000 600 64686 250000 Виноград 482 85000 300 85182 600000 Груша 136 40000 150 39986 650000
·           Зная стоимость воптовых ценах единицы продукции, мы можем рассчитать стоимость в оптовых ценахвсего объема реализации произведением объема реализации и стоимости в оптовыхценах единицы продукции (Табл. 3).
Таблица3. Сведения овыручке от реализации продукции за плановый период.Наименование продукции Остатки на начало года План выпуска Остатки на конец года Объем реализации, шт. Стоимость в оптовых ценах единицы продукции, руб. Стоимость в оптовых ценах всего объема реализации, тыс. руб. 1 2 3 4 5 6 7 Яблоко 711 40000 500 40211 200000 8042200 Апельсин 236 80000 100 80136 500150 40080020,4 Ананас 348 60000 200 60148 400000 24059200 Мандарин 117 90000 50 90067 550000 49536850 Грейпфрут 284 50000 150 50134 450000 22560300 Банан 173 70000 300 69873 350000 24455550 Абрикос 513 95000 450 95063 300000 28518900 Персик 286 65000 600 64686 250000 16171500 Виноград 482 85000 300 85182 600000 51109200 Груша 136 40000 150 39986 650000 25990900
Анализируя данные расчетамы можем сказать, что наиболее выгодно для продавца производить и реализовыватьпо цене 600000 руб. виноград т.к. этот продукт наиболее востребован покупателеми производитель получит за него наибольшую прибыль (51109200 тыс. руб.). Такжебудет выгодно производить и реализовывать по цене 500150 и 550000 руб.апельсины и мандарины соответственно т.к. за реализацию этих продуктовпроизводитель получит высокую прибыль (40080020,4 и 49536850 соответственно).При производстве таких продуктов как ананасы (400000 руб.), грейпфрут (22560300руб.), банан (24455550 руб.), абрикос (28518900 руб.), персик (16171500 руб.),груша (25990900 руб.), производитель будет получать хорошую прибыль, но приразных объемах и цене от реализации, подстраиваясь под потребности покупателя.Эти продукты можно было производить под заказ для реализации стороннимпокупателем в не основной деятельности. Не выгодным продуктом для производстваи реализации по цене 200000 руб. и объеме 40000 шт. является яблоко т.к. этотпродукт не приносит хорошей прибыли.
В результате анализа мыможем сделать вывод,  что наиболее выгодно для предприятия производить иреализовывать виноград, апельсины и мандарины т.к. эти продукты наиболеевостребованы потребителем и влечет большие прибыли для предприятия.
Все расчеты производилисьв созданной нами программе на алгоритмическом языке ObjectPascal в визуальной среде Delphi. Для удобства расчета ипросматривания результатов все наименование товара автоматически располагаетсяв алфавитном порядке. Наибольшую прибыль и результат расчета мы можем видеть вполе memoкуда эти данные также заносятсяавтоматически (рис. 5).
/>
Рис.5. Общийвид приложения с расчетом и результатами.

Выводы
В ходе выполнениякурсовой работы получены новые теоретические сведения о современном техническоми программном обеспечении офисной деятельности; привиты практические навыкиработы с операционными системами, программными оболочками, разнообразнымислужебными и сервисными средствами; освоено применение офисного пакета Microsoft Office для автоматизации сбора, хранения, обработки ипередачи информации.
Также были углублены изакреплены знания по алгоритмизации, программированию и решению винтегрированной визуальной среде программирования Delphi задач по экономике и управлению на предприятии.

Списокиспользованной литературы
1.        АрхангельскийА.Я. Программирование в Delphi6 ––М.: ЗАО «Издательство БИНОМ», 2002г. – 1200 с.
2.        КандзюбаС.П., Громов В.Н. Delphi6. Базы данных и приложения. Лекции и упражнения. – К.: Издательство «ДинСофт»,2001. – 576 с.
3.        ФароновВ.В. Delphi 6. Учебныйкурс. Издательство Молгачев С.В., 2001. – 672с.
4.        Программированиев среде Delphi: Лабораторныйпрактикум для студентов всех специальностей. Под общей редакцией Синицына А.К.– Мн.; БГУИР, 1998. – 94 с.
5.        Основыинформатики и вычислительной техники. Методические указания к выполнениюкурсовой работы для студентов факультета предпринимательства и управленияспециальности Э 03. 02. 00 «Экономическая информатика». Фурунжиев Р.И. –Ротапринт БАТУ, Мн.: 2000. – 25 с.
6.        АрхангельскийА.Я. Программирование в Delphi6 ––М.: ЗАО «Издательство БИНОМ», 2002г. – 1200 с.
7.        КандзюбаС.П., Громов В.Н. Delphi6. Базы данных и приложения. Лекции и упражнения. – К.: Издательство «ДинСофт»,2001. – 576 с.
8.        ФароновВ.В. Delphi 6. Учебныйкурс. Издательство Молгачев С.В., 2001. – 672с.
9.        Программированиев среде Delphi: Лабораторныйпрактикум для студентов всех специальностей. Под общей редакцией Синицына А.К.– Мн.; БГУИР, 1998. – 94 с.
10.     Основыинформатики и вычислительной техники. Методические указания к выполнениюкурсовой работы для студентов факультета предпринимательства и управленияспециальности Э 03. 02. 00 «Экономическая информатика». Фурунжиев Р.И. –Ротапринт БАТУ, Мн.: 2000. – 25 с.

Приложения
 
К данному курсовомупроекта прилагается магнитный носитель информации (дискета 3,5’’, 1,44Mb) с электронной версией пояснительнойзаписки, полученным Windows-приложением(файл EcoInfo.exe), исходными текстами программы (файл EconomInfo.pas),а также другими необходимыми файлами для компиляции приложения.


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

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.

Сейчас смотрят :

Реферат Разрушение Вавилона (Н.И. Вавилов)
Реферат Река жизни
Реферат Манифест систем объектно-ориентированных баз данных
Реферат Advertisement Offers Analysis Essay Research Paper Through
Реферат Порядок перехода на уплату ЕСХН и возврата к общему режиму
Реферат Особенности газо-пылевых образований в верхней атмосфере, связанных с выбросами продуктов сгорания ракетных двигателей
Реферат Економічний розвиток регіону
Реферат Анализ финансово хозяйственной деятельности ООО РусАгро Покровка
Реферат Налоговая система Российской Федерации 2 Необходимость построения
Реферат Ктенанта
Реферат Перыядычны друк як спецыфічная сістэма гістарычных крыніц
Реферат Эмоциональные реакции на ситуацию по формуле АВС
Реферат Инновационный проект ночного клуба "Баскунчак"
Реферат Культуры Древнего Востока
Реферат Адаптивное управление гидроагрегатами гэс с поворотно-лопастными турбинами