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


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

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

Формализация задачи
Разработкапрограммы представления табличных данных в виде диаграммы прямоугольников.
 
Словесное описание алгоритма
Нажатиемкнопки «Новый» производится создание нового типизированного (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 мильонов к студенческой карме :

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

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

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

Реферат Oedipus Essay Research Paper Jocasta doesn
Реферат Решение системы линейных уравнений
Реферат Уголовно-правовая и криминологическая характеристика мошенничества
Реферат Река Волга
Реферат Применение пакетов прикладных программ в экономике
Реферат Материально-техническая база торгового предприятия как основа развития торговли в современных условиях
Реферат Социология как объективный анализ "Социальных фактов" /Э.Дюркгейм/
Реферат Литература - Акушерство (геморрагический шок и синдром ДВС)
Реферат Создание отчета как объекта базы данных. Экспертные и обучающиеся системы
Реферат Анализ стихотворение Фета Ель рукавом мне тропинку завесила
Реферат College Vs High School Essay Research Paper
Реферат Goals Essay Essay Research Paper My life
Реферат Исследование особенностей переживания одиночества
Реферат Грех как путь смерти и небытия в работе П.А. Флоренского "Столп и утверждение Истины" Письмо седьмое "Грех"
Реферат Фізико–технологічні процеси створення електролюмінісцентних плоских пристроїв відображення інформації