2.3 Схема алгоритма программы по обработке результатов
2.4 Текст программы с комментариями
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ComCtrls;
type
TForm1 = class(TForm)
memo1: TMemo;
Button1: TButton;
Button2: TButton;
Button3: TButton;
RadioGroup1: TRadioGroup;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
Panel1: TPanel;
Label1: TLabel;
Button4: TButton;
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
tip=record
vop:string[100];
ot1:string[20];
ot2:string[20];
end;
var
f1:file of tip;
a:tip;
Form1: TForm1;
j1,i1,k1,t,g,m,min,min1,en:integer;
ms1:array [1..100] of integer;
s:integer;
m1: array [1..4] of integer;
implementation
uses Unit2;
{$R *.dfm}
procedure sozdanie(s:string); {процедура по созданию файла с вопросами}
begin
if k1<>5 then
begin
g:=1;
t:=0;
i1:=0;
end;
assign(f1,'input.dat');
reset(f1);
j1:=filesize(f1);
if not eof(f1) then
begin
if i1<j1 then
begin
seek(f1,i1);
read(f1,a);
form1.memo1.Lines.Text:=a.vop;
form1.RadioButton1.Caption:=a.ot1;
form1.RadioButton2.Caption:=a.ot2;
i1:=i1+1;
end;
if form1.radiobutton1.Checked then ms1[g]:=ms1[g]+1;
{обработка результатов}
if (t=14) or (t=28) or (t=42)then g:=g+1;
end;
if eof(f1) then en:=5;
k1:=5;
close(f1);
t:=t+1;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
close;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
form2.visible:=true;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin if fileexists('input.dat')=true then begin
RadioGroup1.Visible:=true;
RadioButton1.Visible:=true;
RadioButton2.Visible:=true;
sozdanie('input.dat');
if en=5 then
panel1.Visible:=true;
begin
min:=ms1[1];
min1:=1;
form1.Label1.Caption:=InttoStr(min);
for m:=2 to 4 do
if ms1[m]>min then
begin
min1:=m;
min:=ms1[g];
end;
case min1 of
1:form1.Label1.Caption:='Холерик';
2:form1.Label1.Caption:='Сангвиник';
3:form1.Label1.Caption:='Флегматик';
4:form1.Label1.Caption:='Меланхолик';
end;
end;
end
else showmessage('создайте файл') ;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
case min1 of
1:showmessage('Вы холерик'+#13+'Отличается повышенной возбудимостью, действия прерывисты. Ему свойственны резкость и стремительность движений, сила, импульсивность, яркая выраженность эмоциональных переживаний. Темперамент проявляет в инициативнсти, энергичности, принципиальности');
2:showmessage('Вы сангвиник'+#13+'Быстро приспосабливается к новым условиям, быстро сходится с людьми, общителен. Чувства легко возникают и сменяются, эмоциональные переживания, как правило неглубоки. Мимика богатая, подвижная, выразительная. Несколько непоседлив, нуждается в новых впечатлениях');
3:showmessage('Вы флегматик'+#13+'Характеризуется сравнительно низким уровнем активности поведения. Обладает медлительностью и спокойствием в действиях, мимике и речи, ровностью ,постоянством, глубиной чувств. Настойчивый и упорный, он редко выходит из себя. Экономит силы, попусту их не тратит');
4:showmessage('Вы меланхолик'+#13+'Реакция часто не соответствует силе раздражителя, присутствует глубина и устойчивость чувств при слабом их выражении. Ему трудно долго на чем-нибудь сосредоточиться. Ему свойственна сдержанность и речи и движений, застенчивость, робость, нерешительность');
end;
end;
end.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ComCtrls;
type
TForm2 = class(TForm)
Memo1: TMemo;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Panel1: TPanel;
Button4: TButton;
UpDown1: TUpDown;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
tip=record
vop:string[100];
ot1:string[20];
ot2:string[20];
end;
var
f2:file of tip;
a2:tip;
del:Boolean;
Form2: TForm2;
j2:integer;
implementation
uses Unit1;
{$R *.dfm}
procedure sozdanie(s:string);
begin
assign(f2,'input.dat');
rewrite(f2);
close(f2);
end;
procedure sozdanie2(s:string);
begin
assign(f2,'input.dat');
reset(f2);
j2:=filesize(f2);
seek(f2,j2);
a2.vop:=form2.Memo1.Lines.Text;
a2.ot1:='Да';
a2.ot2:='Нет';
write(f2,a2);
close(f2);
unit1.k1:=1;
end;
procedure TForm2.Button1Click(Sender: TObject);
begin
if fileexists('input.dat')=false
then
begin
sozdanie('input.dat');
showmessage('file create');
end
else showmessage('file exist');
end;
procedure TForm2.Button2Click(Sender: TObject);
begin
if fileexists('input.dat')=true
then
begin
del:=deletefile('input.dat');
showmessage('file delete');
end
else showmessage('file not found');
end;
procedure TForm2.Button4Click(Sender: TObject);
begin
if fileexists('input.dat')=true
then
begin
sozdanie2('input.dat');
showmessage('Данные успешно добавлены');
end
else showmessage('file not found');
end;
procedure TForm2.Button3Click(Sender: TObject);
begin
close;
end;
end.
2.4 Описание процесса отладки
При разработке программы данного курсового проекта большее время занял процесс отладки. Он свелся к установлению причины возникновения ошибок и их устранению.
Большинство ошибок возникает на этапе программирования. Ошибки такого класса бывают синтаксическими, семантическими и логическими.
1) Синтаксические ошибки. Они появляются на этапе компиляции и возникают в связи с нарушением синтаксических правил языка Паскаль(пропущенные знаки пунктуации, ссылки на неописанные переменные, присваивание переменой значений неверного типа и т.д.).
Если компилятор встречает в тексте программы оператор или команду, которую он не может интерпретировать, он выводит сообщение об ошибке.
2) Семантические ошибки. К их возникновению приводит нарушение семантических правил написания программ на языке Турбо Паскаль (например, попытка программы выполнить деление на ноль).
3) Логические ошибки. Это ошибки, связанные с неправильным применением тех или иных алгоритмических конструкций. Такие ошибки не обнаруживаются на этапе компиляции и не приводят к аварийному завершению программы. На их наличие указывает неправильная работа программы и выдача ею некорректных результатов.
Для работы со встроенным отладчиком Delphi 4 его интегрированная среда разработки (IDE) предлагает целую серию установок, большинство из которых лучше не трогать, а оставить, как есть (по умолчанию). Однако если изменять установки, то выберать команду Tools/Options и в появившемся диалоговом окне Environment Options щелкнуть на вкладке Preferences.
Интегрированная среда Delphi предоставляет пользователю несколько команд пошаговой отладки доступных в меню Run. Run. Выбор этой команды запускает приложение на выполнение в обычном режиме. Можно использовать ее как для запуска приложения, так и для продолжения его работы после какого-либо прерывания выполнения (например, по точке останова). Если включена опция Break on Exception, то использовать команду для продолжения работы после получения сообщения об исключительной ситуации. Step Over. Когда точка выполнения находится на строке содержащей вызов процедуры или функции, использовать эту команду для выполнения строки, включая вызовы в один шаг, без прохождения отдельных строк вызываемых функций. Точка выполнения перемещается при выполнении на следующую строку. Trace Into. В отличие от предыдущей команды, эта опция отработает пошаговую отладку вызываемых процедур и функций. Другими словами, если, например, в строке вызывается некая процедура, то при выполнении этой команды точка выполнения перейдет на первую строку процедуры. Однако если в строке нет таких вызовов, значит, последние две команды идентичны. Внимательность нужна при пошаговой трассировке обработчика события OnPaint. Поскольку при пошаговой отладке окно редактора размещается поверх других окон, требуется перерисовка окна приложения, для чего вызывается обработчик события OnPaint. Можно попасть в замкнутый круг, точнее в бесконечный цикл вызовов одного и того же обработчика. Тем не менее, стоит лишь проследить, чтобы окна приложения и редактора не перекрывались, и проблема разрешится сама собой.
Trace to Next Source Line. Иногда один код вызывает другой код косвенно, например, при вызове функции, которая запускает обработчик события, или при вызове функции Windows API, которая, в свою очередь, запускает функцию косвенного вызова. Поскольку такие вызовы косвенные, отладчик не видит вызова и не отслеживает пошагового выполнения таких вызовов. Однако использование описываемой команды приводит к отслеживанию таких вызовов и останову отладчика на первой строке вызываемой таким образом функции или процедуры. Run to Cursor. Зачастую вовсе не хочется тратить время в поисках ошибки, местоположение которой с какой-то точностью известно, пошагово добираться до нужного места через сотни, а то и тысячи строк кода. В таком случае достаточно поместить курсор на нужную строку программы в окне редактирования и использовать команду Run to Cursor. Эти действия эквивалентны временному помещению точки останова в необходимой вам строки программы, и после выполнения предшествующего строке кода работа программы приостанавливается. Если пытаться выполнить программу до позиции курсора, который находится в строке, не содержащей отладочной информации, то появится сообщение об ошибке.
2.5 Результат работы программы
Результат работы программы удовлетворяет всем требованиям, поставленным перед разработчиком данной программы. Итогом работы программы является выведенный на экран тип темперамента и подробное описание к нему.
(Рис.1)
2.6 Инструкция по выполнению программы
Программа данного курсового проекта воспроизводит на экран дисплея результаты теста.
Программа запускается двойным щелчком левой кнопки мыши по файлу Progect.exe,
От пользователя требуется: отвечать на вопросы да или нет.
На экран дисплея выведется тип темперамента. При нажатии кнопки "Подробнее" идет развернутое описание темперемента.
Для выхода из программы нажать кнопку "Выход".
ЗАКЛЮЧЕНИЕ
На современном этапе развития образовательной системы немалая роль отводится компьютерной технике, которая призвана сделать процесс обучения более интересным и занимательным.
Программный продукт, созданный в результате работы над данным курсовым проектом является перспективным, интересным.