- •1. Введение.
- •2. Постановка задачи.
- •3. Математическая формулировка задачи и выбор метода обработки информации
- •4. Разработка алгоритма, схема алгоритма и его описание.
- •Messagedlg
- •Cleansg
- •Memo1.Lines.Insert
- •Messagedlg
- •Cleansg
- •Cleanedit messagedlg
- •Autorachet
- •Пояснения к алгоритму 6:
- •Пояснения к алгоритму 7:
- •Пояснения к алгоритму 8:
- •Cleansg
- •Autorachet
- •Пояснения к алгоритму 9:
- •Autorachet
- •Пояснения к алгоритму 10:
- •Пояснения к алгоритму 11:
- •Пояснения к алгоритму 12:
- •5. Форма представления исходных данных
- •6. Разработка интерфейса
- •7. Листинг программы
- •8. Результаты проведенных расчетов и их анализ.
- •Список использованной литературы
- •Приложения
Autorachet
А
А
Конец
memo1.lines
18
19
9. процедура удаления базы: button3click.
Пояснения к алгоритму 9:
Блок 2 – очистка выбранной строки.
Блок 3 – задание начального условия цикла.
Блоки 4,5 – повторный цикл очистки массива.
Блок 6 – задание начального условия цикла.
Блоки 7,8,9 – повторение цикла перевода строки StrinGrid в массив записей.
Блок 10 – задание начального условия цикла.
Блоки 11,12,13,14,15 – повтор цикла перевода массива в StrinGrid.
Блок 16 – расчет.
1
Начало
2
sg1.Rows[sg1.Row].Clear;
n = 0, 200, 1
3
n = 0
Mzap[n].prod:='';
Mzap[n].onng:=0;
Mzap[n].plan:=0;
Mzap[n].onkg:=0;
Mzap[n].svocep:=0;
4
5
6
n = 1
7
n = 1, sg1.rowcount, 1
C
B
А
C
B
А
Нет
Да
8
sg1.Cells[0,n]<>''
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]);
9
n = n + 1
k = k +1
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);
Нет
Да
Mzap[n].prod<>''
n = 1, 200, 1
10
n = 1, k = 1
Autorachet
11
12
13
14
15
16
Конец
17
10. клик StringGrid-а.
Пояснения к алгоритму 10:
Начало
1
Блок 2 – подтверждение выбора.
2
memo1.lines
3
Конец
11. вызов печати.
Пояснения к алгоритму 11:
Начало
1
Блок 2 – вызов стандартного почтового клиента.
2
shellexecute
3
Конец
12. выход.
Пояснения к алгоритму 12:
Начало
1
Блок 2 – выход из программы.
1
halt
3
Конец
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 с соответствующими подменю и подписями кнопок.
Расположение кнопок и других полей выбрано для гарантированного удобства работы с приложением.