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


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

Содержание
Формализациязадачи
Словесноеописание алгоритма
Листингпрограммы
Тестирование
Отладка

Формализация задачи
Разработкапрограммы представления табличных данных в виде диаграммы прямоугольников.
 
Словесное описание алгоритма
Нажатиемкнопки «Новый» производится создание нового типизированного (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 IOresult0 then begin
MessageDlg('Ошибкаприоткрытиифайла!',
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; varAction: 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 IOresult0 then begin
MessageDlg('Ошибкаприоткрытиифайла!',
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
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;


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

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

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

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