Разработка программы представления табличных данных в виде диаграммы прямоугольников
Словесное описание алгоритма программы. Открытие файла процедурой Rewrite, его проверка на наличие ошибок при открытии. Особенности построения диаграммы. Листинг программы, ее тестирование и отладка. Выполнение процедуры CloseFile при закрытии файла.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 11.06.2010 |
Размер файла | 17,3 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Содержание
Формализация задачи
Словесное описание алгоритма
Листинг программы
Тестирование
Отладка
Формализация задачи
Разработка программы представления табличных данных в виде диаграммы прямоугольников.
Словесное описание алгоритма
Нажатием кнопки «Новый» производится создание нового типизированного (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('Ошибка при открытии файла!',
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('Ошибка при открытии файла!',
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;
Подобные документы
Определение необходимых модулей программы, структуры файла базы данных. Описание разработки программы, отладка и тестирование. Разработка приложения Organizer.exe, меню и руководство пользователя. Алгоритм обработки событий главного меню (расписания).
курсовая работа [901,8 K], добавлен 11.02.2014Процесс проектирования программы, состоящий из следующих шагов: описание прецедентов, построение диаграммы прецедентов, диаграммы взаимодействий, создание модели программных классов. Тестирование программы входными тестовыми вариантами, ее листинг.
курсовая работа [1,9 M], добавлен 25.10.2012Особенности разработки программы и выбор методов решения задачи. Составление алгоритма, распределение регистров программы и формирование файлов. Описание процедуры очистки памяти, сложения, вычитания, умножения. Тестирование и листинг программы.
лабораторная работа [51,2 K], добавлен 14.05.2011Анализ задания и разработка алгоритма. Основные принципы создания программы. Схема взаимодействия процессов Process 1 и Process 4, в режиме задачи и в режиме ядра. Листинг программы и ее тестирование. Результат работы и выполнения программы в консоли.
контрольная работа [395,9 K], добавлен 18.09.2010Разработка программы на языке Pascal. Описание переменных. Действия, которые должна выполнить программа согласно выбранного алгоритма. Детализация графической части программы. Листинг и тестирование программы. Вывод массива данных на экран монитора.
контрольная работа [360,4 K], добавлен 13.06.2012Разработка алгоритма решения задачи численного интегрирования методом трапеции. Словесное описание и блок-схема разработанного алгоритма программы. Описание интерфейса, главного окна и основных форм программы. Проверка работоспособности программы.
курсовая работа [1,4 M], добавлен 16.03.2012Графическая схема алгоритма выполнения программы определения запасов сырья. Решение задачи с помощью программы MS Excel. Разработка макроса для построения диаграммы. Использование интерфейса программы для работы с таблицей. Разработка базы данных.
курсовая работа [1,2 M], добавлен 24.04.2014Структура записей входного массива. Описание основных типов данных. Алгоритм программы: присвоение начальных значений переменных, чтение списка из файла, вывод данных на экран, выполнение обработки данных, сохранение списка в файл. Листинг программы.
курсовая работа [325,2 K], добавлен 28.12.2012Основы проверки и расчета входных данных и вывода выходных данных программы, их блок-схемы. Реализация функции считывания числовых данных из файла, управление (создание, уничтожение и редактирование) визуальными компонентами во время выполнения программы.
контрольная работа [1,3 M], добавлен 12.06.2009Описание записи, содержащей поля: расчётный счёт плательщика и получателя, перечисляемая сумма в рублях. Программа для ввода данных с клавиатуры в массив. Листинг исходного файла программы вывода информации на экран и распечатка снимков с экрана.
контрольная работа [710,6 K], добавлен 20.01.2011