• Главная
  • Блог
  • Пользователи
  • Форум
  • Литературное творчество
  • Музыкальное творчество
  • Научно-техническое творчество
  • Художественно-прикладное творчество

Обучающая компьютерная программа по физике

Опубликовано Зайкова Анна Вадимовна вкл 10.02.2012 - 16:43
Автор: 
Хабаров Егор

Программа была создана как исследовательский проект, с целью попытаться сымитировать на компьютере тестирование по программе ЕГЭ по физике за 2006 год. При создании программы мы старались сделать ее максимально удобной для освоения, и при этом, сохранить приближенность к условиям тестирования по настоящему ЕГЭ.

Программа может служить прекрасным помощником для учащихся 10 – 11 классов при подготовке к тестированию, а также просто для проверки своих знаний. Программа может быть использована учителем при проведении уроков в школе, чтобы составить картину об успеваемости учащихся.

Скачать:

ВложениеРазмер
Microsoft Office document icon referat_habarov.doc797 КБ

Предварительный просмотр:

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И ВЫСШЕЙ ШКОЛЫ РЕСПУБЛИКИ КОМИ

МУНИЦИПАЛЬНОЕ УЧРЕЖДЕНИЕ

«УПРАВЛЕНИЕ ОБРАЗОВАНИЯ АДМИНИСТРАЦИИ

МУНИЦИПАЛЬНОГО ОБРАЗОВАНИЯ ГОРОДСКОГО ОКРУГА «УСИНСК»

МУНИЦИПАЛЬНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

«СРЕДНЯЯ ОБЩЕОБРАЗОВАТЕЛЬНАЯ ШКОЛА № 2»

«Обучающая компьютерная программа по физике

VIRTUOS ФИЗИКА»

Исследование

Автор:

                                                        Хабаров Егор,

учащийся 11 Г класса

                                                        Руководитель:

                                                        Зайкова Анна Вадимовна,

учитель информатики

                        Руководитель:

                                                        Батухтина Августа Анатольевна,

учитель физики

Усинск,

2006 г.


СОДЕРЖАНИЕ:

  1. Введение.                                                                                3
  2. Основная часть.
  1. Структура теста ЕГЭ по физике (часть A).                                5
  2. Приемы работы с программой.                                                6
  3. Использованные материалы и программное обеспечение.                8
  1. Заключение.
  1. Перспективы увеличения возможностей программы.                        10
  1. Список использованной литературы.                                                11
  2. Приложения.
  1. Листинг программы.                                                                12
  2. Примеры работы программы.


I. Введение.

Программа была создана как исследовательский проект, с целью попытаться сымитировать на компьютере тестирование по программе ЕГЭ по физике за 2006 год. При создании программы мы старались сделать ее максимально удобной для освоения, и при этом, сохранить максимальную приближенность к условиям тестирования по настоящему ЕГЭ.

Программа может служить прекрасным помощником для учащихся 10 – 11 классов при подготовке к тестированию, а также просто для проверки своих знаний. Программа может быть использована учителем при проведении уроков в школе, чтобы составить картину об успеваемости учащихся.

Основным разделом программы является раздел Тестирования ЕГЭ. Единый государственный экзамен (ЕГЭ) по физике позволяет объединить итоговую аттестацию учащихся в школе и проверку уровня подготовленности абитуриентов, поступающих в высшие и средние специальные учебные заведения. Тренировочные задания состоят из трех частей, различающихся формой и уровнем сложности: базовым, повышенным и высоким.

В часть А включены 30 заданий, из которых 25 заданий ориентированны на проверку подготовки учащихся по физике на базовом уровне – уровне общеобразовательной подготовки выпускников средней школы. Более подробный список освещенных вопросов содержит раздел 2.

В часть B включены 4 задания, которые проверяют умение использовать несколько (2 или более) физических законов или определений, относящихся к одной и той же теме. Для выполнения этих заданий требуется повышенный уровень подготовки школьников. При решении заданий части В необходимо получить краткий ответ, в виде цифр, которые следует записать в поля ввода ответа.

Часть С включает 6 заданий, которые проверяют умения использовать законы из теории физики. Выполнение таких заданий требует применения знаний из разных разделов физики, т.е. высокого уровня подготовки учащихся. Задания части С требуют ответа, который учащийся получает решая самостоятельно предложенную задачу, а программа проверяет ответ.

За выполнение заданий учащиеся получают баллы: часть А и В – 1 балл, за один правильный ответ, часть С – три балла за один правильный ответ. Наибольшее число баллов повышает вероятность успешной сдачи ЕГЭ.

 Раздел Тестирования ЕГЭ в программе является расширяемым, т.е. возможно добавление новых вариантов тестирования. Такая возможность позволит программе быть актуальной в течение долгого периода времени.

В программу включен раздел Лабораторных работ. Данный раздел предназначен для наглядного проведения лабораторных работ, проведение которых связано с использованием материалов, которые являются мало доступными в условиях школьных уроков. Лабораторные работы представлены в виде последовательного интерактивного ознакомления учащегося с материалом работы. В течение, которого учащийся наглядно видит все последствия своих действий в проводимой лабораторной работе, тем самым достигается приближенность компьютерной имитации к реальным условиям.

Также в программе имется раздел Статьи и Теория. В этой части представлены материалы с научных сайтов сети Интернет, о научных открытиях и изобретениях, сделанных совсем недавно. Данный раздел интересен тем, что данная информация еще долго не появится в книгах и другой литературе. Раздел этой программы также пополняем и в него можно добавлять новые статьи.

В программе имеется раздел Справочных данных. Созданный с целью помощи учащемуся при выполнении работы. В этом разделе собраны различные данные о физических постоянных.

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


II. Основная часть.

1. Структура теста ЕГЭ по физике (часть А)

  1. Механика:
  1. Основные понятия кинематики.
  2. Основные понятия динамики.
  3. Силы природы.
  4. Потенциальная и кинетические энергии.
  5. Закон сохранения энергии в механике.

  1. МКТ. Термодинамика:
  1. Основные понятия МКТ.
  2. Агрегатные состояния вещества.
  3. Процессы плавления, отвердивания, испарения и кипения.
  4. Теплообмен и теплоёмкость.

  1. Электродинамика. Оптика:
  1. Постоянный ток. Закон Ома.
  2. Взаимодействие электрических зарядов.
  3. Магнитное поле.
  4. Электромагнитная индукция.
  5. Законы преломления и отражения света.

6.   Построение изображений в плоском зеркале и собирающей линзе.

  1. Квантовая и ядерная физика:
  1. Строение атома.
  2. Энергии связи.
  3. Ядерные силы.
  4. Элементарные частицы.

2. Приемы работы с программой

Программа не требует установки, чтобы начать работу запустите исполняемый файл Virtuos.exe, который находится в корневой папке с программой. Откроется главное окно программы, представленное на рис. 1

Рисунок 1

В верхней части окна находится главное меню, которое состоит из:

Файл – в раскрывающемся списке Тестирование ЕГЭ вы можете запустить и завершить тестирование. Выбрав пункт Лабораторные работы можно начать выполнение одной из лабораторных работ. Пункт Статьи и теория содержит раздел последних достижений и открытий по физике с научных сайтов и книг по физике и открытиям в области точных наук.

Учителю – находящийся в данном разделе пункт Оценки вызывает список оценок всех учащихся прошедших тестирование. Пароль для очистки списка оценок – overload. Раздел Учителю открывается только при завершенном тестировании ЕГЭ.

Помощь – раздел справочных данных.

Ход выполнения Лабораторных работ описан по шагам, поэтому от ученика требуется лишь внимательность и знание темы, по которой ведется работа. Все интерактивные элементы лабораторной работы выделяются цветом при наведении на них мышью. Если вы уже начали выполнение Лабораторной работы, вы не сможете начать тестирование ЕГЭ, сначала закройте Лабораторную работу.

При работе с тестом, перемещение по различным вопросам теста осуществляется посредством двойного щелчка по элементам дерева вопросов, находящегося в левом верхнем углу рабочего окна программы. Элементы дерева вопросов ЕГЭ имеют индикацию, при ответе на вопрос вы должны щёлкнуть мышью на галочке в правом нижнем углу, цвет элемента дерева вопросов изменится, поэтому вы всегда будете знать на какие вопросы вы уже давали ответ, а на какие еще нет.

Тестирование ЕГЭ ведется в течение 3 часов 30 минут, по стандартам ЕГЭ, время оставшееся до окончания тестирования показывает таймер в правом верхнем углу рабочего окна программы.

По завершении тестирования ЕГЭ будет выведен ваш результат. Программа автоматически поставит вам оценку в соответствии с критериями оценок по ЕГЭ за 2006 год с официального сайта ЕГЭ (www.ege.edu.ru), а также выведет статистику ответов. При получении оценки нажав на кнопку Полной статистики, вы увидите более подробную информацию о количестве правильных и неправильных ответов в тесте, эта информация может быть сохранена на компьютере или распечатана.


3. Использованные материалы и программное обеспечение.

Для создания программы использовалась среда языка программирования Borland Delphi 6.0.

Delphi — это среда быстрой разработки, в которой в качестве языка программирования используется язык Delphi. Язык Delphi — строго типизированный объектно-ориентированный язык, в основе которого лежит хорошо знакомый программистам Object Pascal.

В настоящее время программистам стала доступна очередная версия пакета Delphi - Borland Delphi 6. Как и предыдущие версии, Borland Delphi 6 позволяет создавать самые различные программы: от простейших однооконных приложений до программ управления распределенными базами. В состав пакета включены разнообразные утилиты, обеспечивающие работу с базами данных, XML-документами, создание справочной системы, решение других задач. Отличительной особенностью седьмой версии является поддержка технологии .NET.

Borland Delphi 6 может работать в среде операционных систем от Windows 98 до Windows XP. Особых требований, по современным меркам, к ресурсам компьютера пакет не предъявляет: процессор должен быть типа Pentium или Celeron с тактовой частотой не ниже 166 МГц (рекомендуется Pentium II 400 МГц), оперативная память - 128 Мбайт (рекомендуется 256 Мбайт), достаточное количество свободного дискового пространства (для полной установки версии Enterprise необходимо приблизительно 475 Мбайт).

Для обработки графики был использован пакет для работы с растровой графикой Adobe Photoshop 7.0 Самый совершенный набор инструментов С момента своего появления Adobe Photoshop неизменно держит марку самого современного профессионального графического редактора.

В программе также использованы дополнительные компоненты для улучшения графического интерфейса приложения. Основные исполняемые процедуры и функции программы и их модули и юниты:

dxfClock -  компонента для использования часов.

dxfTimer – компонента для использования таймера.

acDragPanel – компонента интерактивного меню (окон).

acPanel – компонента палении инструментов.

acPicturePanel – компонента для вставки и использования изображения.

acPropImage - компонента для вставки и использования изображения.

Buttons, acButtons  – компонента кнопки.

acEdit – компонента текстового поля

ImgList, pngimage - компонента для вставки и использования изображения.

DXClass – модуль использования классов

DXDraws – модуль использования поверхностей, и слайдов

acLabels, acRichLabel – юнит для использования меток (формы для ввода ответа)

Для создания и особенно отладки программы было использовано много теоретического материала по физике. Было исследовано большое количество физических задач. Для проверки правильности работы программы многие задачи были решены в режиме реального времени.

Примеры решения задач по физике:

Задача 1

Масса Марса составляет 0,1 от массы Земли, диаметр Марса вдвое меньше, чем диаметр Земли. Каково отношение периодов обращения искусственных спутников Марса и Земли Тм/ Т3, движущихся по круговым орбитам на небольшой высоте?

Решение

Ускорение спутника, движущегося со скоростью v вокруг планеты массой М по круговой траектории радиуса R, равно .

, откуда ,

Период обращения спутника 

.

Задача 2

Фотоны, имеющие энергию 5 эВ, выбивают электроны с поверхности металла. Работа выхода электронов из металла равна 4,7 эВ. Какой импульс приобретает электрон при вылете с поверхности металла?

Решение:

Согласно закону фотоэффекта, кинетическая энергия фотоэлектронов,

EK = hv - A;         Ек=,        р = mv.

Следовательно, (кгм/с).


III. Заключение.

Перспективы увеличения возможностей программы.

В программу можно внести большое количество дополнительных возможностей. Программа составлена таким образом, что можно добавлять новые лабораторные работы, новые варианты ЕГЭ, а также расширять раздел теории. Можно улучшить графический интерфейс, а также интегрировать в программу систему скинов, что позволит более удобно настраивать пользователю программы ее интерфейс.


IV. Список использованной литературы.

  1. Попов В.В. Pascal и Delphi. Самоучитель. ПИТЕР, 2003 год.
  2. Степанова С. И. Сборник задач по физике. Просвещение 2005
  3. Фадеева А.А. Единый Государственный Экзамен: Физика. Эксмо, 2006 год.
  4. Фаронов В.В. Delphi. Программирование на высоком уровне. Учебник для вузов. ПИТЕР, 2004 год.
  5. Фаронов В.В. Программирование баз данных в Delphi 7. Учебный курс. ПИТЕР, 2005 год.
  6. Материалы сайтов:

http://www.science.ru/

http://www.elementy.ru/

http://www.delphikingdom.ru/

http://www.computerbooks.ru/


V. Приложения.

1. Листинг программы.

unit main;

interface

uses

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

  Dialogs, Menus, ExtCtrls, dxfClock, dxfTimer, ComCtrls, acDragPanel,

  Grids, StdCtrls, acPanel, acHeaderPanel, acPicturePanel, jpeg,

  acPropImage, acControls, Buttons, acEdit, ImgList, acButtons, acComCtrls,

  pngimage, DXClass, DXDraws, lab1frm, acLabels, acRichLabel, OleCtrls,

  SHDocVw;

type

  TForm1 = class(TForm)

    MainMenu1: TMainMenu;

    N1: TMenuItem;

    N2: TMenuItem;

    N3: TMenuItem;

    N4: TMenuItem;

    N5: TMenuItem;

    N6: TMenuItem;

    N7: TMenuItem;

    tm_clock: TdxfTimer;

    N8: TMenuItem;

    N9: TMenuItem;

    N10: TMenuItem;

    N11: TMenuItem;

    N12: TMenuItem;

    N13: TMenuItem;

    N14: TMenuItem;

    N15: TMenuItem;

    N16: TMenuItem;

    N17: TMenuItem;

    N18: TMenuItem;

    N19: TMenuItem;

    Dannie: TacDragPanel;

    StringGrid1: TStringGrid;

    Label1: TLabel;

    acDragPanel1: TacDragPanel;

    TreeView1: TTreeView;

    ZadaniePanel: TacHeaderPanel;

    AnswerImage: TacProportionalImage;

    AnswerPanel: TacHeaderPanel;

    RadAnsw1: TacRadioButton;

    RadAnsw2: TacRadioButton;

    RadAnsw3: TacRadioButton;

    RadAnsw4: TacRadioButton;

    acEdit1: TacEdit;

    SysPics: TImageList;

    N20: TMenuItem;

    N21: TMenuItem;

    MarkPanel: TacHeaderPanel;

    markIMG2: TacProportionalImage;

    markIMG3: TacProportionalImage;

    markIMG4: TacProportionalImage;

    markIMG5: TacProportionalImage;

    MarkResult: TacHeaderPanel;

    ArightLab: TLabel;

    BrightLab: TLabel;

    CrightLab: TLabel;

    MarksStat: TacDragPanel;

    MarksTree: TacTreeView;

    acBitBtn1: TacBitBtn;

    acBitBtn2: TacBitBtn;

    Panel1: TPanel;

    acEdit2: TacEdit;

    acBitBtn3: TacBitBtn;

    acBitBtn4: TacBitBtn;

    Label2: TLabel;

    Label3: TLabel;

    Label4: TLabel;

    acBitBtn5: TacBitBtn;

    AnswerYES: TacBitBtn;

    LabsScreen: TacHeaderPanel;

    DXDraw: TDXDraw;

    DXTimer: TDXTimer;

    Lab1_frame1: TLab1_frame;

    DXImageList1: TDXImageList;

    lab1_link: TLabel;

    lab2_link: TLabel;

    lab3_link: TLabel;

    Timer1: TTimer;

    Timer2: TTimer;

    LabErrorPan: TPanel;

    acRichLabel1: TacRichLabel;

    Label5: TLabel;

    Panel2: TPanel;

    acRichLabel2: TacRichLabel;

    Label6: TLabel;

    AboutPanel: TacDragPanel;

    Image1: TImage;

    Image2: TImage;

    Label7: TLabel;

    Label8: TLabel;

    Label9: TLabel;

    acBitBtn6: TacBitBtn;

    Label10: TLabel;

    Label11: TLabel;

    Theor: TacHeaderPanel;

    BrowserScreen: TWebBrowser;

    acBitBtn7: TacBitBtn;

    acBitBtn8: TacBitBtn;

    Theor_TPan: TacDragPanel;

    theor_tree: TTreeView;

    N22: TMenuItem;

    Label12: TLabel;

    Label13: TLabel;

    acProportionalImage1: TacProportionalImage;

    procedure N2Click(Sender: TObject);

    procedure N12Click(Sender: TObject);

    procedure N13Click(Sender: TObject);

    procedure N14Click(Sender: TObject);

    procedure N15Click(Sender: TObject);

    procedure N16Click(Sender: TObject);

    procedure N17Click(Sender: TObject);

    procedure N18Click(Sender: TObject);

    procedure N19Click(Sender: TObject);

    procedure TreeView1DblClick(Sender: TObject);

    procedure ZadaniePanelRightButtonClick(Sender: TObject);

    procedure AnswerYESClick(Sender: TObject);

    procedure N20Click(Sender: TObject);

    procedure N21Click(Sender: TObject);

    procedure tm_clockEndOfTime(Sender: TdxfTimer);

    procedure MarkPanelRightButtonClick(Sender: TObject);

    procedure N9Click(Sender: TObject);

    procedure acBitBtn2Click(Sender: TObject);

    procedure acBitBtn1Click(Sender: TObject);

    procedure acBitBtn4Click(Sender: TObject);

    procedure acBitBtn3Click(Sender: TObject);

    procedure FormCreate(Sender: TObject);

    procedure acBitBtn5Click(Sender: TObject);

    procedure N5Click(Sender: TObject);

    procedure DXTimerTimer(Sender: TObject; LagCount: Integer);

    procedure lab1_linkMouseEnter(Sender: TObject);

    procedure lab1_linkMouseLeave(Sender: TObject);

    procedure lab2_linkMouseEnter(Sender: TObject);

    procedure lab2_linkMouseLeave(Sender: TObject);

    procedure lab3_linkMouseLeave(Sender: TObject);

    procedure lab3_linkMouseEnter(Sender: TObject);

    procedure lab1_linkClick(Sender: TObject);

    procedure LabsScreenRightButtonClick(Sender: TObject);

    procedure Timer1Timer(Sender: TObject);

    procedure Timer2Timer(Sender: TObject);

    procedure Label5MouseEnter(Sender: TObject);

    procedure Label5MouseLeave(Sender: TObject);

    procedure Label5Click(Sender: TObject);

    procedure Label6MouseEnter(Sender: TObject);

    procedure Label6MouseLeave(Sender: TObject);

    procedure Label6Click(Sender: TObject);

    procedure N7Click(Sender: TObject);

    procedure acBitBtn6Click(Sender: TObject);

    procedure theor_treeDblClick(Sender: TObject);

    procedure acBitBtn7Click(Sender: TObject);

    procedure acBitBtn8Click(Sender: TObject);

    procedure N22Click(Sender: TObject);

    procedure TheorRightButtonClick(Sender: TObject);

    procedure Label12MouseEnter(Sender: TObject);

    procedure Label12MouseLeave(Sender: TObject);

    procedure Label13MouseEnter(Sender: TObject);

    procedure Label13MouseLeave(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

pip=record

name:string[255];

clas:string[255];

mark:byte;

zero:integer;

end;

EGEtab=record

MarksTableProc:array[0..34,0..18] of byte;

end;

procedure LoadVariants;

const EGEpass='overload';

var

  Form1: TForm1;

  EGEright,curquest,variantSTR:string;

  rightA:array [1..30] of boolean;

  rightB:array [1..4] of boolean;

  rightC:array [1..6] of boolean;

  Aright,Bright,Cright:byte;

  classNodes: array [1..100] of TTreeNode;

  classNodesCount:byte;

  EGEsize:byte;

  CurQuestBals,takedBals:byte;

  TreeSelected:integer;

  f:text;

  fp:file of pip;

  ftab:file of EGEtab;

  EGETable:EGEtab;

  //labors variables arrays

  labvars:array[0..10]of real;

  tempo:real;

  trNodeNum:integer;

implementation

{$R *.dfm}

uses new,ShellApi;

Procedure LoadTheoryList;

var ldstr:string;

tmpNODE:TTreeNode;

begin

 AssignFile(f,'data\pages\list.txt');

 Reset(f);

  While not eof(f) do

   begin

    readln(f,ldstr);

    Delete(ldstr,length(ldstr)-4,5);

    tmpNODE:=form1.theor_tree.Items.Add(form1.theor_tree.TopItem,ldstr);

    tmpNODE.ImageIndex:=2;

    tmpNODE.SelectedIndex:=3;

   end;

 CloseFile(f);

end;

Procedure CleanLabWindow;

begin

form1.DXDraw.Surface.Fill(0);

form1.Lab1_frame1.acEdit1.text:='';

form1.Lab1_frame1.acEdit2.text:='';

form1.Lab1_frame1.acEdit3.text:='';

form1.Lab1_frame1.acEdit4.text:='';

form1.Lab1_frame1.acEdit1.color:=clWhite;

form1.Lab1_frame1.acEdit2.color:=clWhite;

form1.Lab1_frame1.acEdit3.color:=clWhite;

form1.Lab1_frame1.acEdit4.color:=clWhite;

form1.Lab1_frame1.acEdit1.font.color:=clblack;

form1.Lab1_frame1.acEdit2.font.color:=clblack;

form1.Lab1_frame1.acEdit3.font.color:=clblack;

form1.Lab1_frame1.acEdit4.font.color:=clblack;

form1.Lab1_frame1.Visible:=false;

form1.LabErrorPan.Visible:=false;

form1.Panel2.Visible:=false;

end;

Function GetMyPath:string;

Begin

 Result:=ExtractFilePath(paramstr(0));

End;

Procedure BrowseNavigate(str:string);

begin

form1.BrowserScreen.Navigate(GetMyPath+'data\pages\'+str+'.html');

end;

Procedure LoadVariants;

var tempstr:string;

begin

 Assign(f,'data/variants.txt');

 Reset(f);

  While not Eof(f) do

   begin

    readln(f,tempstr);

    new.nm_form.VariantsBox.Items.Add(tempstr);

   end;

 CloseFile(f);

end;

Procedure LoadEGETable;

begin

Assign(ftab,'data.dat');

Reset(ftab);

Seek(ftab,0);

read(ftab,EGETable);

CloseFile(ftab);

end;

Function CalculateMark:byte;

begin

if EGETable.MarksTableProc[Aright+Bright,Cright]<=32 then CalculateMark:=2 else

if EGETable.MarksTableProc[Aright+Bright,Cright]<=49 then CalculateMark:=3 else

if EGETable.MarksTableProc[Aright+Bright,Cright]<=67 then CalculateMark:=4 else

if EGETable.MarksTableProc[Aright+Bright,Cright]<=100 then CalculateMark:=5 else

CalculateMark:=32;

end;

procedure CleanItemsCheck;

begin

Form1.N12.Checked:=false;

Form1.N13.Checked:=false;

Form1.N14.Checked:=false;

Form1.N15.Checked:=false;

Form1.N16.Checked:=false;

Form1.N17.Checked:=false;

Form1.N18.Checked:=false;

Form1.N19.Checked:=false;

end;

function findClass(tstrs:string):TTreeNode;

var i:byte;

    reslt:boolean;

begin

reslt:=false;

if classNodesCount<>0 then

for i:=0 to classNodesCount do

if classNodes[i]<>nil then

if classNodes[i].Text=tstrs then

 begin

  findClass:=classNodes[i];

  reslt:=true;

 end;

if not reslt then

findClass:=nil;

end;

Procedure CleanMarksTree;

var i:byte;

begin

Form1.MarksTree.Items.Clear;

for i:=0 to classNodesCount do

classNodes[i]:=nil;

classNodesCount:=0;

end;

Procedure CleanArrays;

var i:byte;

begin

for i:=1 to 30 do

 begin

  rightA[i]:=false;

  if i<=4 then rightB[i]:=false;

  if i<=6 then rightC[i]:=false;

 end;

end;

procedure CleanTree;

var i:byte;

begin

 for i:=2 to 31 do

  begin

   Form1.TreeView1.Items[i].ImageIndex:=0;

   Form1.TreeView1.Items[i].SelectedIndex:=0;

   Form1.TreeView1.Items[i].StateIndex:=0;

  end;

 for i:=33 to 36 do

  begin

   Form1.TreeView1.Items[i].ImageIndex:=0;

   Form1.TreeView1.Items[i].SelectedIndex:=0;

   Form1.TreeView1.Items[i].StateIndex:=0;

  end;

 for i:=38 to 43 do

  begin

   Form1.TreeView1.Items[i].ImageIndex:=0;

   Form1.TreeView1.Items[i].SelectedIndex:=0;

   Form1.TreeView1.Items[i].StateIndex:=0;

  end;

end;

procedure LoadQuest(quf:string);

var strt:string;

    i:byte;

begin

if FileExists('data\'+quf+'-'+variantSTR+'.txt') then

begin

Form1.ZadaniePanel.Text:='';

Assign(f,'data\'+quf+'-'+variantSTR+'.txt');

Reset(f);

 readln(f,strt);

 if length(strt)>0 then

 Form1.AnswerImage.Picture.LoadFromFile(strt);

 

 while strt<>'[END]' do

 begin

  readln(f,strt);

  Form1.ZadaniePanel.Text:=Form1.ZadaniePanel.Text+strt;

 end;

 readln(f,strt);

 EGEsize:=strtoint(strt);

 if EGEsize>1 then

 begin

 Form1.acEdit1.Visible:=false;

  for i:=1 to strtoint(strt) do

   begin

    readln(f,strt);

    case i of

     1 : begin Form1.RadAnsw1.Caption:=strt; Form1.RadAnsw1.Visible:=true end;

     2 : begin Form1.RadAnsw2.Caption:=strt; Form1.RadAnsw2.Visible:=true end;

     3 : begin Form1.RadAnsw3.Caption:=strt; Form1.RadAnsw3.Visible:=true end;

     4 : begin Form1.RadAnsw4.Caption:=strt; Form1.RadAnsw4.Visible:=true end;

    end;

   end;

 end else

 begin

  Form1.acEdit1.Visible:=true;

  Form1.RadAnsw1.Visible:=false;

  Form1.RadAnsw2.Visible:=false;

  Form1.RadAnsw3.Visible:=false;

  Form1.RadAnsw4.Visible:=false;

 end;

 readln(f,EGEright);

 readln(f,CurQuestBals);

 

Close(f);

end;

end;

procedure TForm1.N2Click(Sender: TObject);

begin

application.Terminate;

end;

procedure TForm1.N12Click(Sender: TObject);

begin

CleanItemsCheck;

if not Dannie.Visible then

begin

Dannie.Visible:=true;

Label1.Caption:='Десятичные приставки';

N12.Checked:=true;

StringGrid1.ColCount:=3;

StringGrid1.RowCount:=11;

StringGrid1.DefaultColWidth:=86;

StringGrid1.DefaultRowHeight:=20;

StringGrid1.Cells[0,0]:='Наименование';

StringGrid1.Cells[0,1]:='Гига';

StringGrid1.Cells[0,2]:='Мега';

StringGrid1.Cells[0,3]:='Кило';

StringGrid1.Cells[0,4]:='Гекто';

StringGrid1.Cells[0,5]:='Деци';

StringGrid1.Cells[0,6]:='Санти';

StringGrid1.Cells[0,7]:='Милли';

StringGrid1.Cells[0,8]:='Микро';

StringGrid1.Cells[0,9]:='Нано';

StringGrid1.Cells[0,10]:='Пико';

StringGrid1.Cells[1,0]:='Обозначение';

StringGrid1.Cells[1,1]:='Г';

StringGrid1.Cells[1,2]:='М';

StringGrid1.Cells[1,3]:='к';

StringGrid1.Cells[1,4]:='г';

StringGrid1.Cells[1,5]:='д';

StringGrid1.Cells[1,6]:='с';

StringGrid1.Cells[1,7]:='м';

StringGrid1.Cells[1,8]:='мк';

StringGrid1.Cells[1,9]:='н';

StringGrid1.Cells[1,10]:='п';

StringGrid1.Cells[2,0]:='Множитель';

StringGrid1.Cells[2,1]:='10 в степени 9';

StringGrid1.Cells[2,2]:='10 в степени 6';

StringGrid1.Cells[2,3]:='10 в степени 3';

StringGrid1.Cells[2,4]:='10 в степени 2';

StringGrid1.Cells[2,5]:='10 в степени -1';

StringGrid1.Cells[2,6]:='10 в степени -2';

StringGrid1.Cells[2,7]:='10 в степени -3';

StringGrid1.Cells[2,8]:='10 в степени -6';

StringGrid1.Cells[2,9]:='10 в степени -9';

StringGrid1.Cells[2,10]:='10 в степени -12';

end else

begin

 dannie.Visible:=false;

 N12.Checked:=false;

end;

end;

procedure TForm1.N13Click(Sender: TObject);

begin

CleanItemsCheck;

if not Dannie.Visible then

begin

Dannie.Visible:=true;

Label1.Caption:='Константы';

N13.Checked:=true;

StringGrid1.ColCount:=2;

StringGrid1.RowCount:=14;

StringGrid1.DefaultColWidth:=216;

StringGrid1.DefaultRowHeight:=20;

StringGrid1.Cells[0,0]:='Число Пи';

StringGrid1.Cells[0,1]:='Ускорение свободного падения';

StringGrid1.Cells[0,2]:='Гравитационная постоянная';

StringGrid1.Cells[0,3]:='Газовая постоянная';

StringGrid1.Cells[0,4]:='Постоянная Больцмана';

StringGrid1.Cells[0,5]:='Постоянная Авагадро';

StringGrid1.Cells[0,6]:='Скорость света в вакууме';

StringGrid1.Cells[0,7]:='Коэффициент пропорциональности Кулона';

StringGrid1.Cells[0,8]:='Заряд электрона';

StringGrid1.Cells[0,9]:='Постоянная Планка';

StringGrid1.Cells[0,10]:='Масса Земли';

StringGrid1.Cells[0,11]:='Масса Солнца';

StringGrid1.Cells[0,12]:='Расстояние между Землей и Солнцем';

StringGrid1.Cells[0,13]:='Примерное число секунд в году';

StringGrid1.Cells[1,0]:='Пи = 3,14';

StringGrid1.Cells[1,1]:='g = 10  (м/с^2)';

StringGrid1.Cells[1,2]:='G = 6,7*10^-11  (Н*м^2/кг^2)';

StringGrid1.Cells[1,3]:='R = 8,31  (Дж/(моль*К))';

StringGrid1.Cells[1,4]:='k = 1,38*10^-23 (Дж/К)';

StringGrid1.Cells[1,5]:='N(Авагадро) = 6*10^23  (моль^-1)';

StringGrid1.Cells[1,6]:='с = 3*10^8  (м/с)';

StringGrid1.Cells[1,7]:='k = 1/(4*Пи*E) = 9*10^8  (Н*м^2/Кл^2)';

StringGrid1.Cells[1,8]:='e = -1,6*10^-19  (Кл)';

StringGrid1.Cells[1,9]:='h = 6,6*10^-34  (Дж*с)';

StringGrid1.Cells[1,10]:='6*10^24  (кг)';

StringGrid1.Cells[1,11]:='2*10^30  (кг)';

StringGrid1.Cells[1,12]:='1 а.е. = 1,5*10^11  (м)';

StringGrid1.Cells[1,13]:='3*10^7  (с)';

end else

begin

 dannie.Visible:=false;

 N13.Checked:=false;

end;

end;

procedure TForm1.N14Click(Sender: TObject);

begin

CleanItemsCheck;

if not Dannie.Visible then

begin

Dannie.Visible:=true;

Label1.Caption:='Соотношения между единицами';

N14.Checked:=true;

StringGrid1.ColCount:=2;

StringGrid1.RowCount:=4;

StringGrid1.DefaultColWidth:=140;

StringGrid1.DefaultRowHeight:=20;

StringGrid1.Cells[0,0]:='Температура';

StringGrid1.Cells[0,1]:='Атомная единица массы';

StringGrid1.Cells[0,2]:='1 а.е. массы равна';

StringGrid1.Cells[0,3]:='1 электронвольт';

StringGrid1.Cells[1,0]:='0 Кулон = -273,15 Цельсия';

StringGrid1.Cells[1,1]:='1 а.е.м. = 1,66*10^27 кг';

StringGrid1.Cells[1,2]:='931,5 МэВ';

StringGrid1.Cells[1,3]:='1 эВ = 1,6*10^-19 Дж';

end else

begin

 dannie.Visible:=false;

 N14.Checked:=false;

end;

end;

procedure TForm1.N15Click(Sender: TObject);

begin

CleanItemsCheck;

if not Dannie.Visible then

begin

Dannie.Visible:=true;

Label1.Caption:='Масса частиц';

N15.Checked:=true;

StringGrid1.ColCount:=2;

StringGrid1.RowCount:=3;

StringGrid1.DefaultColWidth:=160;

StringGrid1.DefaultRowHeight:=20;

StringGrid1.Cells[0,0]:='Электрона';

StringGrid1.Cells[0,1]:='Протона';

StringGrid1.Cells[0,2]:='Нейтрона';

StringGrid1.Cells[1,0]:='9,1*10^-31 кг = 5,5*10^-4 а.е.м.';

StringGrid1.Cells[1,1]:='1,673*10^-27 кг = 1,007 а.е.м.';

StringGrid1.Cells[1,2]:='1,675*10^-27 кг = 1,008 а.е.м.';

end else

begin

 dannie.Visible:=false;

 N15.Checked:=false;

end;

end;

procedure TForm1.N16Click(Sender: TObject);

begin

CleanItemsCheck;

if not Dannie.Visible then

begin

Dannie.Visible:=true;

Label1.Caption:='Плотности веществ';

N16.Checked:=true;

StringGrid1.ColCount:=2;

StringGrid1.RowCount:=8;

StringGrid1.DefaultColWidth:=80;

StringGrid1.DefaultRowHeight:=20;

StringGrid1.Cells[0,0]:='Воды';

StringGrid1.Cells[0,1]:='Пробки';

StringGrid1.Cells[0,2]:='Древесины';

StringGrid1.Cells[0,3]:='Керосина';

StringGrid1.Cells[0,4]:='Парафина';

StringGrid1.Cells[0,5]:='Алюминия';

StringGrid1.Cells[0,6]:='Железа';

StringGrid1.Cells[0,7]:='Ртути';

StringGrid1.Cells[1,0]:='1000 (кг/м^3)';

StringGrid1.Cells[1,1]:='250 (кг/м^3)';

StringGrid1.Cells[1,2]:='400 (кг/м^3)';

StringGrid1.Cells[1,3]:='800 (кг/м^3)';

StringGrid1.Cells[1,4]:='900 (кг/м^3)';

StringGrid1.Cells[1,5]:='2700 (кг/м^3)';

StringGrid1.Cells[1,6]:='7870 (кг/м^3)';

StringGrid1.Cells[1,7]:='13600 (кг/м^3)';

end else

begin

 dannie.Visible:=false;

 N16.Checked:=false;

end;

end;

procedure TForm1.N17Click(Sender: TObject);

begin

CleanItemsCheck;

if not Dannie.Visible then

begin

Dannie.Visible:=true;

Label1.Caption:='Удельные величины';

N17.Checked:=true;

StringGrid1.ColCount:=2;

StringGrid1.RowCount:=8;

StringGrid1.DefaultColWidth:=160;

StringGrid1.DefaultRowHeight:=20;

StringGrid1.Cells[0,0]:='Теплоемкость воды';

StringGrid1.Cells[0,1]:='Теплоемкость свинца';

StringGrid1.Cells[0,2]:='Теплоемкость меди';

StringGrid1.Cells[0,3]:='Теплоемкость чугуна';

StringGrid1.Cells[0,4]:='Теплоемкость железа';

StringGrid1.Cells[0,5]:='т-та парообразования воды';

StringGrid1.Cells[0,6]:='т-та парообразования свинца';

StringGrid1.Cells[0,7]:='т-та парообразования льда';

StringGrid1.Cells[1,0]:='4,2*10^3  Дж/(кг*К)';

StringGrid1.Cells[1,1]:='130  Дж/(кг*К)';

StringGrid1.Cells[1,2]:='390  Дж/(кг*К)';

StringGrid1.Cells[1,3]:='500  Дж/(кг*К)';

StringGrid1.Cells[1,4]:='640  Дж/(кг*К)';

StringGrid1.Cells[1,5]:='2,3*10^6  Дж/(кг*К)';

StringGrid1.Cells[1,6]:='2,5  Дж/(кг*К)';

StringGrid1.Cells[1,7]:='3,3*10^5  Дж/(кг*К)';

end else

begin

 dannie.Visible:=false;

 N17.Checked:=false;

end;

end;

procedure TForm1.N18Click(Sender: TObject);

begin

CleanItemsCheck;

if not Dannie.Visible then

begin

Dannie.Visible:=true;

Label1.Caption:='Молярные массы';

N18.Checked:=true;

StringGrid1.ColCount:=2;

StringGrid1.RowCount:=12;

StringGrid1.DefaultColWidth:=120;

StringGrid1.DefaultRowHeight:=20;

StringGrid1.Cells[0,0]:='Азот';

StringGrid1.Cells[0,1]:='Аргон';

StringGrid1.Cells[0,2]:='Водород';

StringGrid1.Cells[0,3]:='Водяные пары';

StringGrid1.Cells[0,4]:='Гелий';

StringGrid1.Cells[0,5]:='Воздух';

StringGrid1.Cells[0,6]:='Кислород';

StringGrid1.Cells[0,7]:='Литий';

StringGrid1.Cells[0,8]:='Неон';

StringGrid1.Cells[0,9]:='Серебро';

StringGrid1.Cells[0,10]:='Молибден';

StringGrid1.Cells[0,11]:='Углекислый газ';

StringGrid1.Cells[1,0]:='28*10^-3  (кг/моль)';

StringGrid1.Cells[1,1]:='40*10^-3  (кг/моль)';

StringGrid1.Cells[1,2]:='2*10^-3  (кг/моль)';

StringGrid1.Cells[1,3]:='18*10^-3  (кг/моль)';

StringGrid1.Cells[1,4]:='4*10^-3  (кг/моль)';

StringGrid1.Cells[1,5]:='29*10^-3  (кг/моль)';

StringGrid1.Cells[1,6]:='32*10^-3  (кг/моль)';

StringGrid1.Cells[1,7]:='6*10^-3  (кг/моль)';

StringGrid1.Cells[1,8]:='20*10^-3  (кг/моль)';

StringGrid1.Cells[1,9]:='108*10^-3  (кг/моль)';

StringGrid1.Cells[1,10]:='96*10^-3  (кг/моль)';

StringGrid1.Cells[1,11]:='44*10^-3  (кг/моль)';

end else

begin

 dannie.Visible:=false;

 N18.Checked:=false;

end;

end;

procedure TForm1.N19Click(Sender: TObject);

begin

CleanItemsCheck;

if not Dannie.Visible then

begin

Dannie.Visible:=true;

Label1.Caption:='Энергии покоя';

N19.Checked:=true;

StringGrid1.ColCount:=2;

StringGrid1.RowCount:=15;

StringGrid1.DefaultColWidth:=140;

StringGrid1.DefaultRowHeight:=20;

StringGrid1.Cells[0,0]:='Электрон';

StringGrid1.Cells[0,1]:='Нейтрон';

StringGrid1.Cells[0,2]:='Протон';

StringGrid1.Cells[0,3]:='Ядро водорода (H 1,1)';

StringGrid1.Cells[0,4]:='Ядро дейтерия (H 2,1)';

StringGrid1.Cells[0,5]:='Ядро трития (H 3,1)';

StringGrid1.Cells[0,6]:='Ядро гелия (He 4,2)';

StringGrid1.Cells[0,7]:='Ядро лития (Li 6,3)';

StringGrid1.Cells[0,8]:='Ядро лития (Li 7,3)';

StringGrid1.Cells[0,9]:='Ядро берилия (Be 9,4)';

StringGrid1.Cells[0,10]:='Ядро бора (B 10,5)';

StringGrid1.Cells[0,11]:='Ядро азота (N 14,7)';

StringGrid1.Cells[0,12]:='Ядро кислорода (0 15,8)';

StringGrid1.Cells[0,13]:='Ядро кислорода (0 17,8)';

StringGrid1.Cells[0,14]:='Ядро фосфора (P 30,15)';

StringGrid1.Cells[1,0]:='0,5 МэВ';

StringGrid1.Cells[1,1]:='939,6 МэВ';

StringGrid1.Cells[1,2]:='938,3 МэВ';

StringGrid1.Cells[1,3]:='938,3 МэВ';

StringGrid1.Cells[1,4]:='1875,6 МэВ';

StringGrid1.Cells[1,5]:='2809,4 МэВ';

StringGrid1.Cells[1,6]:='3727,4 МэВ';

StringGrid1.Cells[1,7]:='5601,5 МэВ';

StringGrid1.Cells[1,8]:='6533,8 МэВ';

StringGrid1.Cells[1,9]:='8392,8 МэВ';

StringGrid1.Cells[1,10]:='9324,4 МэВ';

StringGrid1.Cells[1,11]:='13040,3 МэВ';

StringGrid1.Cells[1,12]:='13971,3 МэВ';

StringGrid1.Cells[1,13]:='15830,6 МэВ';

StringGrid1.Cells[1,14]:='27917,1 МэВ';

end else

begin

 dannie.Visible:=false;

 N19.Checked:=false;

end;

end;

procedure TForm1.TreeView1DblClick(Sender: TObject);

begin

if TreeView1.SelectionCount<>0 then

if length(TreeView1.Selected.Text)<4 then

begin

TreeSelected:=TreeView1.Selected.AbsoluteIndex;

curquest:=TreeView1.Selected.Text;

LoadQuest(TreeView1.Selected.Text);

ZadaniePanel.Visible:=true;

AnswerPanel.Visible:=true;

AnswerImage.Visible:=true;

end;

end;

procedure TForm1.ZadaniePanelRightButtonClick(Sender: TObject);

begin

ZadaniePanel.Visible:=false;

AnswerPanel.Visible:=false;

AnswerImage.Visible:=false;

end;

procedure TForm1.AnswerYESClick(Sender: TObject);

var test:boolean;

begin

TreeView1.Items[TreeSelected].ImageIndex:=1;

TreeView1.Items[TreeSelected].SelectedIndex:=1;

TreeView1.Items[TreeSelected].StateIndex:=1;

if EGEsize>1 then

begin

case strtoint(EGEright) of

 1 : test:=RadAnsw1.Checked;

 2 : test:=RadAnsw2.Checked;

 3 : test:=RadAnsw3.Checked;

 4 : test:=RadAnsw4.Checked;

end;

end else

if acEdit1.text=EGEright then test:=true;

if test=true then

begin

  if curquest[1]='A' then

   begin

    rightA[strtoint(copy(curquest,2,length(curquest)-1))]:=true;

    inc(Aright);

   end else

  if curquest[1]='B' then

   begin

    rightB[strtoint(copy(curquest,2,length(curquest)-1))]:=true;

    inc(Bright);

   end else

  if curquest[1]='C' then

   begin

    rightC[strtoint(copy(curquest,2,length(curquest)-1))]:=true;

    inc(Cright);

   end;

  takedBals:=takedBals+CurQuestBals;

end else

begin

 if curquest[1]='A' then

 begin

 if rightA[strtoint(copy(curquest,2,length(curquest)-1))] then

 begin

  rightA[strtoint(copy(curquest,2,length(curquest)-1))]:=false;

  dec(Aright);

 end;

 end else

 if curquest[1]='B' then

 begin

 if rightB[strtoint(copy(curquest,2,length(curquest)-1))] then

 begin

  rightB[strtoint(copy(curquest,2,length(curquest)-1))]:=false;

  dec(Bright);

 end;

 end else

 if curquest[1]='C' then

 begin

 if rightC[strtoint(copy(curquest,2,length(curquest)-1))] then

 begin

  rightC[strtoint(copy(curquest,2,length(curquest)-1))]:=false;

  dec(Cright);

 end;

 end;

end;

end;

procedure TForm1.N20Click(Sender: TObject);

begin

CleanArrays;

MarkPanel.Visible:=false;

MarkResult.Visible:=false;

N20.Enabled:=false;

N9.Enabled:=false;

N22.Enabled:=false;

N21.Enabled:=true;

N5.Enabled:=false;

Form1.Enabled:=false;

new.nm_form.Show;

new.nm_form.name_bar.Text:='';

new.nm_form.class_bar.Text:='11';

new.nm_form.char_bar.Text:='А';

takedBals:=0;

Aright:=0;

Bright:=0;

Cright:=0;

end;

procedure TForm1.N21Click(Sender: TObject);

var pup:pip;

begin

AssignFile(fp,'data/pupils.dat');

if FileExists('data/pupils.dat') then

reset(fp) else rewrite(fp);

Seek(fp,filesize(fp));

pup.name:=nm_form.name_bar.text;

pup.clas:=nm_form.class_bar.text+' класс '+nm_form.char_bar.text;

pup.mark:=CalculateMark;

write(fp,pup);

CloseFile(fp);

tm_clock.Visible:=false;

tm_clock.Stop;

tm_clock.Reset;

N20.Enabled:=true;

N21.enabled:=false;

AnswerPanel.Visible:=false;

ZadaniePanel.Visible:=false;

AnswerImage.Visible:=false;

acDragPanel1.Visible:=false;

TreeView1.FullCollapse;

RadAnsw1.Checked:=false;

RadAnsw2.Checked:=false;

RadAnsw3.Checked:=false;

RadAnsw4.Checked:=false;

acEdit1.Text:='';

CleanTree;

MarkIMG2.Visible:=false;

MarkIMG3.Visible:=false;

MarkIMG4.Visible:=false;

MarkIMG5.Visible:=false;

case pup.mark of

 2:markIMG2.Visible:=true;

 3:markIMG3.Visible:=true;

 4:markIMG4.Visible:=true;

 5:markIMG5.Visible:=true;

end;

ArightLab.Caption:='Часть - А: верных '+inttostr(Aright)+' из 30';

BrightLab.Caption:='Часть - B: верных '+inttostr(Bright)+' из 4';

CrightLab.Caption:='Часть - C: верных '+inttostr(Cright)+' из 6';

MarkPanel.Visible:=true;

MarkResult.Visible:=true;

N9.Enabled:=true;

N5.Enabled:=true;

N22.Enabled:=true;

end;

procedure TForm1.tm_clockEndOfTime(Sender: TdxfTimer);

begin

Form1.N21Click(Sender);

end;

procedure TForm1.MarkPanelRightButtonClick(Sender: TObject);

begin

MarkPanel.Visible:=false;

MarkResult.Visible:=false;

end;

procedure TForm1.N9Click(Sender: TObject);

var i:longint;

    tpup:pip;

    temptr,clptr:TTreeNode;

begin

if not MarksStat.Visible then

BEGIN

CleanMarksTree;

if FileExists('data/pupils.dat') then

begin

AssignFile(fp,'data/pupils.dat');

Reset(fp);

for i:=0 to FileSize(fp)-1 do

 begin

  Seek(fp,i);

  read(fp,tpup);

  clptr:=findClass(tpup.clas);

  if clptr=nil then

   begin

    classNodes[classNodesCount]:=MarksTree.Items.Add(TreeView1.TopItem,tpup.clas);

    temptr:=MarksTree.Items.AddChild(classNodes[classNodesCount],tpup.name);

    inc(classNodesCount);

   end else

    temptr:=MarksTree.Items.AddChild(clptr,tpup.name);

   MarksTree.Items.AddChild(temptr,'Оценка: '+inttostr(tpup.mark));

 end;

MarksStat.Visible:=true;

CloseFile(fp);

end;

END else MarksStat.Visible:=false;

end;

procedure TForm1.acBitBtn2Click(Sender: TObject);

begin

MarksStat.Visible:=false;

end;

procedure TForm1.acBitBtn1Click(Sender: TObject);

begin

Panel1.Visible:=true;

end;

procedure TForm1.acBitBtn4Click(Sender: TObject);

begin

Panel1.Visible:=false;

acEdit2.Text:='';

end;

procedure TForm1.acBitBtn3Click(Sender: TObject);

begin

if acEdit2.Text=EGEpass then

begin

 AssignFile(fp,'data/pupils.dat');

 Erase(fp);

 CleanMarksTree;

 Panel1.Visible:=false;

 acEdit2.Text:='';

end;

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

classNodesCount:=0;

tempo:=0;

trNodeNum := 0;

LoadEGETable;

LoadTheoryList;

end;

procedure TForm1.acBitBtn5Click(Sender: TObject);

var pather:string;

    i:byte;

begin

AssignFile(f,'data\temp.txt');

Rewrite(f);

writeln(f,'ФИО: '+nm_form.name_bar.text);

writeln(f,'Класс: '+nm_form.class_bar.text+nm_form.char_bar.text);

writeln(f,'Вариант: '+variantSTR);

writeln(f,'Статистика части A:');

writeln(f,'====================');

writeln(f,'Правильно отвеченные:');

for i:=1 to 30 do

if rightA[i] then write(f,inttostr(i)+'_');

writeln(f);

writeln(f,'Не правильно отвеченные:');

for i:=1 to 30 do

if not rightA[i] then write(f,inttostr(i)+'_');

writeln(f);

writeln(f,'====================');

writeln(f,'Статистика части B:');

writeln(f,'====================');

writeln(f,'Правильно отвеченные:');

for i:=1 to 4 do

if rightB[i] then write(f,inttostr(i)+'_');

writeln(f);

writeln(f,'Не правильно отвеченные:');

for i:=1 to 4 do

if not rightB[i] then write(f,inttostr(i)+'_');

writeln(f);

writeln(f,'====================');

writeln(f,'Статистика части C:');

writeln(f,'====================');

writeln(f,'Правильно отвеченные:');

for i:=1 to 6 do

if rightC[i] then write(f,inttostr(i)+'_');

writeln(f);

writeln(f,'Не правильно отвеченные:');

for i:=1 to 6 do

if not rightC[i] then write(f,inttostr(i)+'_');

writeln(f);

writeln(f,'====================');

if markIMG2.Visible then writeln(f,'Оценка: 2') else

if markIMG3.Visible then writeln(f,'Оценка: 3') else

if markIMG4.Visible then writeln(f,'Оценка: 4') else

if markIMG5.Visible then writeln(f,'Оценка: 5');

CloseFile(f);

pather:=GetMyPath+'data\temp.txt';

ShellExecute(0,'open',PChar(pather),nil,nil,SW_NORMAL);

end;

procedure TForm1.N5Click(Sender: TObject);

begin

if not LabsScreen.Visible then

begin

DXDraw.Surface.Canvas.Draw(0,0,DXImageList1.Items.Items[1].Picture.Graphic);

LabsScreen.Visible:=true;

Lab1_link.Visible:=true;

Lab2_link.Visible:=true;

Lab3_link.Visible:=true;

N20.Enabled:=false;

N22.Enabled:=false;

end else

begin

LabsScreen.Visible:=false;

CleanLabWindow;

N20.Enabled:=true;

N22.Enabled:=true;

end;

end;

procedure TForm1.DXTimerTimer(Sender: TObject; LagCount: Integer);

var ttempo:integer;

begin

if LabsScreen.Visible then

if DXDraw.CanDraw then

begin

if form1.Timer1.Enabled then

 begin

  tempo:=tempo+0.365;

  ttempo:=round(220-tempo);

  form1.DXDraw.Surface.Canvas.Pen.Color:=$008F672C;

  form1.DXDraw.Surface.Canvas.Brush.Color:=$00C07520;

  form1.DXDraw.Surface.Canvas.Rectangle(202,220,232,ttempo);

  if form1.timer2.Enabled then

  form1.DXDraw.Surface.Canvas.Rectangle(142,220,172,ttempo);

 end;

DXDraw.Surface.Canvas.Release;

DXDraw.Flip;

end;

end;

procedure TForm1.lab1_linkMouseEnter(Sender: TObject);

begin

lab1_link.font.Color:=$00E0F2DF;

end;

procedure TForm1.lab1_linkMouseLeave(Sender: TObject);

begin

lab1_link.font.Color:=clBlack;

end;

procedure TForm1.lab2_linkMouseEnter(Sender: TObject);

begin

lab2_link.font.Color:=$00E0F2DF;

end;

procedure TForm1.lab2_linkMouseLeave(Sender: TObject);

begin

lab2_link.font.Color:=clBlack;

end;

procedure TForm1.lab3_linkMouseLeave(Sender: TObject);

begin

lab3_link.font.Color:=clBlack;

end;

procedure TForm1.lab3_linkMouseEnter(Sender: TObject);

begin

lab3_link.font.Color:=$00E0F2DF;

end;

procedure TForm1.lab1_linkClick(Sender: TObject);

begin

Lab1_frame1.Visible:=true;

lab1_link.visible:=false;

lab2_link.visible:=false;

lab3_link.visible:=false;

DXDraw.Surface.Canvas.Draw(0,0,DXImageList1.Items.Items[0].Picture.Graphic);

//сразу заполняем ожидаемые переменные для лаб.работы №1

labvars[0]:=2.28;//h1 - высота бумаги

labvars[1]:=4.7;//h2 - высота ткани

labvars[2]:=0.28;//+- это число к labvars[0] - h1

labvars[3]:=0.58;//+- это число к labvars[1] - h2

end;

procedure TForm1.LabsScreenRightButtonClick(Sender: TObject);

begin

LabsScreen.Visible:=false;

CleanLabWindow;

N20.Enabled:=true;

N22.Enabled:=true;

end;

procedure TForm1.Timer1Timer(Sender: TObject);

begin

Timer1.Enabled:=false;

tempo:=0;

end;

procedure TForm1.Timer2Timer(Sender: TObject);

begin

Timer2.Enabled:=false;

end;

procedure TForm1.Label5MouseEnter(Sender: TObject);

begin

label5.Font.Color:=clYellow;

end;

procedure TForm1.Label5MouseLeave(Sender: TObject);

begin

label5.Font.Color:=clWhite;

end;

procedure TForm1.Label5Click(Sender: TObject);

begin

LabErrorPan.Visible:=false;

end;

procedure TForm1.Label6MouseEnter(Sender: TObject);

begin

label6.Font.Color:=clYellow;

end;

procedure TForm1.Label6MouseLeave(Sender: TObject);

begin

label6.Font.Color:=clWhite;

end;

procedure TForm1.Label6Click(Sender: TObject);

begin

Panel2.Visible:=false;

end;

procedure TForm1.N7Click(Sender: TObject);

begin

AboutPanel.Visible:= not AboutPanel.Visible;

end;

procedure TForm1.acBitBtn6Click(Sender: TObject);

begin

AboutPanel.Visible:=false;

end;

procedure TForm1.theor_treeDblClick(Sender: TObject);

begin

if theor_tree.SelectionCount<>0 then

begin

 BrowseNavigate(theor_tree.Selected.text);

 trNodeNum:= theor_tree.Selected.Index;

end;

end;

procedure TForm1.acBitBtn7Click(Sender: TObject);

begin

if trNodeNum>0 then

begin

BrowseNavigate(theor_tree.Items[trNodeNum-1].text);

dec(trNodeNum);

end;

end;

procedure TForm1.acBitBtn8Click(Sender: TObject);

begin

if trNodeNum

begin

BrowseNavigate(theor_tree.Items[trNodeNum+1].text);

inc(trNodeNum);

end;

end;

procedure TForm1.N22Click(Sender: TObject);

begin

if not Theor.visible then

begin

 N20.Enabled:=false;

 N5.Enabled:=false;

end else

begin

 N20.Enabled:=true;

 N5.Enabled:=true;

end;

Theor.Visible := not Theor.visible;

Theor_TPan.Visible := not Theor_TPan.visible;

end;

procedure TForm1.TheorRightButtonClick(Sender: TObject);

begin

Theor.Visible := false;

Theor_TPan.Visible := false;

N20.Enabled:=true;

N5.Enabled:=true;

end;

procedure TForm1.Label12MouseEnter(Sender: TObject);

begin

label12.font.Color:=$00E0F2DF;

end;

procedure TForm1.Label12MouseLeave(Sender: TObject);

begin

label12.font.Color:=clBlack;

end;

procedure TForm1.Label13MouseEnter(Sender: TObject);

begin

label13.font.Color:=$00E0F2DF;

end;

procedure TForm1.Label13MouseLeave(Sender: TObject);

begin

label13.font.Color:=clBlack;

end;

end.


unit new;

interface

uses

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

  Dialogs, StdCtrls, acEdit, ExtCtrls, Buttons, dxfColorButton,

  acLabeledComboBox, acButtons;

type

  Tnm_form = class(TForm)

    f_panel: TPanel;

    name_bar: TEdit;

    Label1: TLabel;

    class_bar: TacNumberEdit;

    char_bar: TacEdit;

    VariantsBox: TacLabeledComboBox;

    SpeedButton1: TacBitBtn;

    procedure SpeedButton1Click(Sender: TObject);

    procedure FormCreate(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  nm_form: Tnm_form;

implementation

{$R *.dfm}

uses main;

procedure Tnm_form.SpeedButton1Click(Sender: TObject);

begin

Form1.Enabled:=true;

Form1.acDragPanel1.Visible:=true;

Form1.tm_clock.EndHour:=3;

Form1.tm_clock.EndMin:=30;

variantSTR:=VariantsBox.Text;

Form1.tm_clock.visible:=true;

Form1.tm_clock.Start;

nm_form.Hide;

end;

procedure Tnm_form.FormCreate(Sender: TObject);

begin

LoadVariants;

VariantsBox.Text:=VariantsBox.Items[0];

end;

end.


unit lab1frm;

interface

uses

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

  StdCtrls, ExtCtrls, acPanel, acSplitterPanel, acEdit, acButtons;

type

  TLab1_frame = class(TFrame)

    Label1: TLabel;

    Label2: TLabel;

    Label3: TLabel;

    Label4: TLabel;

    Label5: TLabel;

    Label6: TLabel;

    Label7: TLabel;

    acEdit1: TacEdit;

    acEdit2: TacEdit;

    Label8: TLabel;

    acEdit3: TacEdit;

    acEdit4: TacEdit;

    Label9: TLabel;

    acBitBtn1: TacBitBtn;

    Label10: TLabel;

    procedure Label6MouseEnter(Sender: TObject);

    procedure Label6MouseLeave(Sender: TObject);

    procedure Label6Click(Sender: TObject);

    procedure acBitBtn1Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

implementation

uses main;

{$R *.dfm}

procedure TLab1_frame.Label6MouseEnter(Sender: TObject);

begin

label6.font.Color:=clBlue;

end;

procedure TLab1_frame.Label6MouseLeave(Sender: TObject);

begin

label6.font.Color:=clBlack;

end;

procedure TLab1_frame.Label6Click(Sender: TObject);

begin

//включаем заполнение полосок жидкостью.

form1.Timer1.Interval:=round(labvars[1]*1000);

form1.Timer2.Interval:=round(labvars[0]*1000);

form1.Timer1.Enabled:=true;

form1.Timer2.Enabled:=true;

end;

procedure TLab1_frame.acBitBtn1Click(Sender: TObject);

var vltemp:real;

    vltemp2:integer;

    reslt:boolean;

    hght1,hght2,D1,D2:real;

begin

acEdit1.Color:=clWhite; acEdit1.Font.Color:=clBlack;

acEdit2.Color:=clWhite; acEdit2.Font.Color:=clBlack;

acEdit3.Color:=clWhite; acEdit3.Font.Color:=clBlack;

acEdit4.Color:=clWhite; acEdit4.Font.Color:=clBlack;

hght1:=0;

hght2:=0;

reslt:=false;

val(acEdit1.text,vltemp,vltemp2);

if (vltemp<(labvars[0]+labvars[2])/100)AND

   (vltemp>(labvars[0]-labvars[2])/100) then

   begin

    hght1:=vltemp;

   end else

   begin reslt:=true; acEdit1.Color:=clRed; acEdit1.Font.Color:=clwhite; end;

val(acEdit2.text,vltemp,vltemp2);

if (vltemp<(labvars[1]+labvars[3])/100)AND

   (vltemp>(labvars[1]-labvars[3])/100) then

    begin

     hght2:=vltemp;

    end else begin reslt:=true; acEdit2.Color:=clRed; acEdit2.Font.Color:=clwhite; end;

if hght1<>0 then

begin

val(acEdit3.text,vltemp,vltemp2);

D1:=0.292/(10000*hght1);

if (round(D1)<>round(vltemp))OR(vltemp>0.002) then

 begin

  D1:=0.292/(9800*hght1);

  if (round(D1)<>round(vltemp))OR(vltemp>0.002) then

  begin

   reslt:=true; acEdit3.Color:=clRed; acEdit3.Font.Color:=clwhite;

  end;

 end;

end;

if hght2<>0 then

begin

val(acEdit4.text,vltemp,vltemp2);

D2:=0.292/(10000*hght2);

if (round(D2)<>round(vltemp))OR(vltemp>0.001) then

 begin

  D2:=0.292/(9800*hght2);

  if (round(D2)<>round(vltemp))OR(vltemp>0.001) then

  begin

   reslt:=true; acEdit4.Color:=clRed; acEdit4.Font.Color:=clwhite;

  end;

 end;

end;

if (length(acEdit4.text)=0) then

begin

 acEdit4.Color:=clRed; acEdit4.Font.Color:=clwhite;

 reslt:=true;

end;

if (length(acEdit3.text)=0) then

begin

 acEdit3.Color:=clRed; acEdit3.Font.Color:=clwhite;

 reslt:=true;

end;

if reslt then form1.LabErrorPan.Visible:=true else

              begin

              form1.LabErrorPan.Visible:=false;

              form1.Panel2.Visible:=true;

              end;

end;

end.


2. Примеры Работы программы.

         Задание №1 части А

        Задание №1 части В


        Задание №2 части С

        Пример очистки списка оценок Учителем.


        Начало лабораторной работы №1

 Шаг 1 лабораторной работы №1.


        Меню Помощь и его подменю.

        Меню Тесты и теория.


Поделиться:

Сладость для сердца

Голубая лягушка

Сказка об одной Тайне

Ледяная внучка

Н. Гумилёв. Жираф