Розробка програми представлення табличних даних у вигляді діаграми прямокутників

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Зміст

Формалізація завдання

Словесний опис алгоритму

Лістинг програми

Тестування

Налагодження

Формалізація завдання

Розробка програми представлення табличних даних у вигляді діаграми прямокутників.

Словесний опис алгоритму

Натисканням кнопки «Новий» проводиться створення нового типізованого (nrec) файлу: виводиться діалогове вікно з текстовим полем для імені файлу, потім це ім'я встановлюється у відповідність файлової змінної (fdata). Файл відкривається процедурою Rewrite, потім проводиться перевірка на наявність помилок при відкритті файлу. Якщо відкриття було успішним, то прапор is _ open присвоюється значення true, стають доступними елементи для введення записів.

Натисканням кнопки «Відкрити» виробляється відкриття файлу для читання процедурою Reset. Якщо файл відкритий, проводиться зчитування всіх записів з цього файлу і приміщення їх в таблицю (SG), прапор is _ open встановлюється в true.

Натисканням кнопки «Введення» перевіряється не порожні чи текстові поля EKEY і EVAL. Якщо «ні» б перевіряються дані в полі EVAL. Якщо ці дані є числом, то дані з EKEY і EVAL записуються в таблицю.

Діаграма (GR) будується натисканням кнопки «Побудувати»: очищаються значення діаграми, якщо в таблиці значень не більше ніж два, побудова не виконується.

Кнопка «Зберегти» переміщає покажчик на початок файлу і записує всі дані з таблиці у відкритий файл.

Лістинг програми

{Лістинг файлу Kmain. Pas}

unit Kmain;

interface

uses

KDialog,

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Grids, StdCtrls, ExtCtrls, TeeProcs, TeEngine, Chart, Series;

type nrec = record

key: string [20];

val: real

end;

type

TFMAIN = class (TForm)

SG: TStringGrid; GR: TChart; EKEY: TEdit; EVAL: TEdit;

BENT: TButton; BNEW: TButton; BOPEN: TButton; BMAKE: TButton;

Button1: TButton; BCLO: TButton; BSAV: TButton; Label1: TLabel;

Label2: TLabel; Series1: TBarSeries;

procedure BNEWClick (Sender: TObject);

procedure BSAVClick (Sender: TObject);

procedure BENTClick (Sender: TObject);

procedure FormClose (Sender: TObject; var Action: TCloseAction);

procedure FormCreate (Sender: TObject);

procedure BOPENClick (Sender: TObject);

procedure BMAKEClick (Sender: TObject);

procedure Button1Click (Sender: TObject);

procedure BCLOClick (Sender: TObject);

private

fdata: file of nrec;

rec: nrec;

is_open: boolean;

end;

var

FMAIN: TFMAIN;

implementation

{$ R *. dfm}

procedure TFMAIN.BNEWClick (Sender: TObject);

begin

FDIALOG.Caption: = 'Зберегти файл ';

FDIALOG.ShowModal;

if (FDIALOG.getName <>'') then begin

AssignFile (fdata, FDIALOG.getName);

{$ I +} Rewrite (fdata); {$ I-}

if IOresult <> 0 then begin

MessageDlg ('Помилка при відкритті URL! ',

mtError, [mbOK], 0);

exit;

end;

SG.Cells [0,1 ]:=''; SG.Cells [1,1 ]:='';

SG.RowCount: = 2;

SG.Enabled: = true; EVAL.Enabled: = true;

GR.Enabled: = true; EKEY.Enabled: = true;

BENT.Enabled: = true; BMAKE.Enabled: = true;

BCLO.Enabled: = true; BSAV.Enabled: = true;

BNEW.Enabled: = false; BOPEN.Enabled: = false;

FMAIN.Caption: = 'Таблицю' + FDIALOG.getName;

is_open: = true;

end; {if (FDIALOG. ..}

end;

procedure TFMAIN.BSAVClick (Sender: TObject);

var i: integer;

begin

seek (fdata, 0);

for i: = 1 to SG.RowCount-2 do begin

rec.key: = SG.Cells [0, i];

rec.val: = StrToFloat (SG.Cells [1, i]);

write (fdata, rec);

end;

end;

procedure TFMAIN.BENTClick (Sender: TObject);

begin

if (EKEY.Text <>'') and (EVAL.Text <>'') then

begin

try

StrToFloat (EVAL.Text);

except

MessageDlg ('Вводити тільки числа ', mtWarning, [mbOK], 0);

EVAL.Text :='';

exit;

end; {try ...}

SG.Cells [0, SG.RowCount-1]: = EKEY.Text;

SG.Cells [1, SG.RowCount-1]: = EVAL.Text;

SG.RowCount: = SG.RowCount +1;

end; {if (EKEY. ..}

end;

procedure TFMAIN.FormClose (Sender: TObject; var Action: TCloseAction);

begin

if is_open then CloseFile (fdata);

end;

procedure TFMAIN.FormCreate (Sender: TObject);

begin

is_open: = false;

SG.Cells [0,0]: = 'Ім'я';

SG.Cells [1,0]: = 'Значення';

SG.RowCount: = SG.RowCount +1;

end;

procedure TFMAIN.BOPENClick (Sender: TObject);

var i: integer;

begin

FDIALOG.Caption: = 'Відкрити файл ';

FDIALOG.ShowModal;

if (FDIALOG.getName <>'') then begin

AssignFile (fdata, FDIALOG.getName);

{$ I-} Reset (fdata) {$ I +};

if IOresult <> 0 then begin

MessageDlg ('Помилка при відкритті URL! ',

mtError, [mbOK], 0);

exit;

end;

i: = 1;

SG.RowCount: = 2;

while not EOF (fdata) do begin

read (fdata, rec);

SG.Cells [0, i]: = rec.key;

SG.Cells [1, i]: = FloatToStr (rec.val);

SG.RowCount: = SG.RowCount +1;

inc (i);

end;

SG.Enabled: = true;

SG.Enabled: = true; EVAL.Enabled: = true;

GR.Enabled: = true; EKEY.Enabled: = true;

BENT.Enabled: = true; BMAKE.Enabled: = true;

BCLO.Enabled: = true; BSAV.Enabled: = true;

FMAIN.Caption: = 'Таблицю' + FDIALOG.getName;

is_open: = true;

BNEW.Enabled: = false; BOPEN.Enabled: = false;

end; {if (FDIALOG. ..}

end;

procedure TFMAIN.BMAKEClick (Sender: TObject);

var ser: integer;

begin

GR.Series [0]. Clear;

if SG.RowCount <= 2 then begin

MessageDlg ('У таблиці немає даних!', MtWarning, [mbOK], 0);

end

else

for ser: = 1 to SG.RowCount-2 do begin

GR.Series [0]. Add (StrToFloat (SG.Cells [1, ser]),

SG.Cells [0, ser], clMedGray);

end;

end;

procedure TFMAIN.Button1Click (Sender: TObject);

begin

Close;

end;

procedure TFMAIN.BCLOClick (Sender: TObject);

var i: integer;

begin

if is_open then begin

CloseFile (fdata);

for i: = 1 to SG.RowCount-1 do

SG.Rows [i]. Clear;

GR.Series [0]. Clear;

SG.Cells [0,1 ]:=''; SG.Cells [1,1 ]:='';

SG.RowCount: = 2;

SG.Enabled: = false;

SG.Enabled: = false; EVAL.Enabled: = false;

GR.Enabled: = false; EKEY.Enabled: = false;

BENT.Enabled: = false; BMAKE.Enabled: = false;

BSAV.Enabled: = false; BCLO.Enabled: = false;

FMAIN. Caption: = 'Представлення табл. даних прямокутної діаграмою '

is_open ≔ false;

BNEW.Enabled: = true; BOPEN.Enabled: = true;

end; end;

end.

{Лістинг файлу KDialog.pas}

unit KDialog;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Buttons;

type

TFDIALOG = class (TForm)

Edit1: TEdit;

BOK: TBitBtn;

BCAN: TBitBtn;

procedure BOKClick (Sender: TObject);

procedure BCANClick (Sender: TObject);

private

fname: string;

public

function getName: string;

end;

var

FDIALOG: TFDIALOG;

implementation

function TFDIALOG.getName;

begin

getname: = fname;

end;

{$ R *. dfm}

procedure TFDIALOG.BOKClick (Sender: TObject);

begin

fname: = FDIALOG.Edit1.Text;

end;

procedure TFDIALOG.BCANClick (Sender: TObject);

begin

fname :='';

end;

end.

{Лістинг файлу Kurs.dpr}

program Kurs;

uses

Forms, Kmain in 'Kmain.pas' {FMAIN}, KDialog in 'KDialog.pas' {FDIALOG};

{$ R *. res}

begin

Application.Initialize;

Application.CreateForm (TFMAIN, FMAIN);

Application.CreateForm (TFDIALOG, FDIALOG);

Application.Run;

end.

Тестування

При закритті програми завжди виконується процедура CloseFile;

Для кожного запису будується своя діаграма;

При натисканні «Побудувати» дані з таблиці додаються до минулих значень діаграми;

При збереженні в файл зчитується більше записів ніж є в таблиці;

Не очищаються імена і значення в таблиці при закритті файлу.

Налагодження

Щоб при закритті програми процедура CloseFile виконувалася тільки тоді, коли є відкритий файл введена мінлива is _ open;

Змінено

GR.Series [i]. Add (StrToFloat (SG.Cells [1, ser]), SG.Cells [0, ser], clMedGray);

на

GR.Series [0]. Add (StrToFloat (SG.Cells [1, ser]), SG.Cells [0, ser], clMedGray);

У обробнику події OnClick кнопки «Побудувати» додано рядок

GR.Series [0]. Clear;

Число записів читаються з таблиці зменшено на одиницю:

for i: = 1 to SG.RowCount-2 do ...

У обробнику події OnClick кнопки «Закрити» додано:

for i: = 1 to SG.RowCount-1 do begin

SG.Rows [i]. Clear;

end;

Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Контрольна робота
54.1кб. | скачати


Схожі роботи:
Розробка програми обчислення визначених інтегралів за формулою лівих прямокутників
Розробка бази даних для програми Радіодеталі
Розробка форматів зберігання даних програми Структурування
Розробка програми передачі даних через послідовний порт мікроконтролера
Розробка програми генерації тестів з бази даних на мові РНР
Розробка навчальної програми підтримуючої вивчення теми Структури даних
Представлення даних судової статистики
Графічне представлення даних в Excel
Про можливість універсального коду внутрішнього представлення програми
© Усі права захищені
написати до нас