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

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10. клик StringGrid-а.

 

Пояснения к алгоритму 10:

Блок 2 подтверждение выбора.

 

 

 

 

 

 

 

11. вызов печати.

 

Пояснения к алгоритму 11:

Блок 2 вызов стандартного почтового клиента.

 

 

 

 

 

 

12. выход.

 

Пояснения к алгоритму 12:

Блок 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;

procedure FormShow(Sender: TObject);

procedure cleansg(Sender: TObject);

procedure cleanedit(Sender:TObject);

procedure Button4Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure autorachet(Sender: TObject);

procedure Button6Click(Sender: TObject);

procedure Button5Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure sg1Click(Sender: TObject);

procedure N8Click(Sender: TObject);

procedure N5Click(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;

 

//процедура выполнения действий при загрузке формы

procedure TForm1.FormShow(Sender: TObject);

begin

with sg1 do begin

Cells[0,0]:=Наименование продукции;

Cells[1,0]:=ОнНГ;

Cells[2,0]:=ПВ;

Cells[3,0]: