ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Програма псіхотестірованія
         

     

    Інформатика, програмування
    Розробка програми псіхотестірованія
    Введення
    Психологія - велика наука. Вона дозволяє дізнатися про людину ВСЕ. Для отримання
    такої інформації використовуються психологічні тести - досліджуваному задаються
    питання і пропонуються варіанти відповідей. Він вибирає той, який за змістом
    ближче всіх до його думки. Наприкінці тесту відповіді аналізуються: кожному варіанту
    присвоєно певну кількість балів; вони підраховуються і залежно від
    загального рахунку виходить результат.
    Такі методи психологічних досліджень застосовуються досить давно. Але в століття
    комп'ютерів та загального доступу до них дедалі частіше для тестування стали
    застосовуватися ЕОМ. Спеціалізована програма задає питання, приймає відповіді,
    підраховує бали і видає результат. В Інтернеті є сайти, де все
    бажаючі можуть дізнатися ступінь своєї впевненості в собі, агресивності,
    організованості та багато іншого. Подібні програми існують і для локальних
    ПК, не підключених до жодних мереж.
    У цій роботі представлена система псіхотестірованія SuperPsy,
    розроблена в системі програмування Borland Delphi. До неї входить три тести,
    відповівши на які, людина отримує великі відомості про свій характер.
    У системі тести не стаціонарні - можна створити файли з іншими тестами і
    користуватися ними. Для створення файлів тестів є дві утілітние програми,
    які також описані в роботі.
    Програма має деякі елементи художнього оформлення, що важливо, якщо
    врахувати спеціальність автора - ИПД.
    1 Опис програми
    У цій роботі представлена програма для псіхотестірованія, яка
    містить три тести; вона створює психологічний портрет людини, відповів на
    всі питання тестів.
    Крім програми для тестування курсова робота містить у собі дві програми
    для створення файлів тестів (усі тести, а також їх результати, які використовуються
    програмою псіхотестірованія, містяться в окремих файлах, що спрощує
    удосконалення системи тестування).
    1 Внутрішня структура програми
    Проект Delphi називається SuperPsy. Він містить три форми і один програмний
    модуль, в якому описані основні користувацькі типи і змінні,
    використовувані в програмі тестування, а також у програмах створення тестів. Всі
    модулі програми наведено в табл. 1. 1.
    Таблиця 1.1 Програмні модулі Delphi, складові программуІмя
    модуляФормаФункціі, які виконує
    MainfrmFrmMainЗдесь описано вікно програми, яке бачить користувач
    відразу після її запуску. Розміщені процедури вибору потрібного тесту.
    TestfrmFrmTestОкно тестування - вікно, на якому з'являються питання і
    варіанти відповідей. У цьому модулі розміщені процедури завантаження тестів.
    ResfrmFrmResЕто вікно служить для виведення результату тестування. Модуль не
    містить важливих процедур.
    TestTypesНетВ цьому модулі зібрані типи для опису тестів. Він однаковий для
    всіх трьох програм пакета.

    1. 1. 1 Зберігання інформації тесту
    Для зберігання інформації тесту (тексти питань, варіанти відповідей і т. п.)
    використовується для користувача тип TTest:
    TTest = record
    text: string [255]; (текст питання)
    quest: array [1 .. 3] of string [100]; (варіанти)
    count: array [1 .. 3] of byte; (очки за варіант)
    end;
    У такого запису зберігається одне питання. Весь тест міститься в масиві записів. При
    збереженні тесту на диску використовується типізований файл цього типу.
    Програма створення тестів - TestCreator теж використовує цей тип.
    1. 2 Зберігання інформації для повернення результов тесту
    Подібно до інформації про тести, інформація результатів теж зберігається в записах. Тип
    називається TResult:
    TResult = record
    min, max: integer; (кількість балів)
    text: array [1 .. 1000] of char; (текст результату)
    end;
    Подібно до питань, результати зберігаються в масивах; для збереження на диску
    використовуються типізовані файли.
    1. 3 Опис роботи програми
    На формі frmMain розміщені кнопки SpeedButton, у яких властивість Flat
    встановлено в "істину". Завдяки цьому вони прозорі. Написи, які
    знаходяться на цих кнопках, насправді взяті з графічних файлів.
    Натискання на будь-яку кнопку викликає відповідний обробник події, який, в
    свою чергу, привласнює глобальної змінної testfilename: string, описаної в
    модулі TestTypes, ім'я файлу тесту, а потім запускає процедуру RunTest,
    показує форму frmTest.
    Далі працюють процедури модуля цієї форми. Процедура Load, описана як
    метод, завантажує з файлу тесту чергове запитання з варіантами. Оброблювач
    події натиснення кнопки "Далі" перевіряє наявність ще питань у файлі і в разі
    позитивної відповіді викликає Load, в іншому випадку - вантажить з файлу
    результатів потрібний запис у Label1 форми виводу результатів frmRes. Після цього
    ховає вікно тестування і показує результат.
    Пристрій програм створення тестів і результатів не має потреби в описі.
    1. 1. 4 Інструкція для користувача
    Виконавчий файл програми називається SuperPsy.еxe. Запустивши його, користувач
    побачить вікно, що запрошує вибрати потрібний тест. Це вікно показано на рис. 1. 1
    Тут, на тлі неба як-б "висять" назви тестів. При русі курсору мишки
    по кнопці, вона піднімається над загальним тлом, як показано на рис. 1.1 Клацнувши
    лівою кнопкою миші, "тестовий вибирає що його цікавить, тест і потрапляє у вікно
    тестування, показане на рис. 1. 2, стор 10. Щоб відповісти на питання,
    достатньо клацнути на правильному з точки зору користувача варіанті відповіді
    (при цьому всі варіанти тут-же заблокують і стане доступною кнопка "Далі").
    Для переходу до наступного питання треба натиснути кнопку "Далі".

    Малюнок 1. 2 - Вікно тестування
    3 Створення тестів. Допоміжні програми
    Як вже було сказано вище, в курсову роботу входять також дві утиліти - для
    створення тестів і результатів до них. Перша називається TestCreator, а другий -
    ResCreator, ТС і RC.
    3. 1 Створення тесту
    Програма ТЗ має єдине (якщо не вважати діалогових відкриття і
    збереження файлу) вікно. Воно представлено на рис. 1. 3, стор 11.

    Малюнок 1. 3 - Вікно програми ТЗ
    При запуску замість тексту питання написана рядок "Текст питання", а замість
    варіантів відповідей - "Варіант1 (2,3)". Мишкою можна вибирати "радіобаттон", а
    потім вводити в поле "текст варіанту" потрібний варіант.
    3. 2 Створення файлу результатів
    Для цього призначена утілітная програма RC. (Result Creator). Після запуску
    цієї програми виводиться вікно, представлене на рис. 1. 4, стор 12.

    Малюнок 1. 4 - Вікно програми Result Creator
    Як видно з рис. 1. 4, текст результату вводиться у вікні введення типу Memo. В
    верхні спінедіти поміщається мінімальне та максимальне колічесіво очок,
    які повинен набрати тестований, щоб висвітився саме цей варіант
    результатів. Спінедіт "Варіант №" показує, над яким варіантом результату
    ведеться робота. Кнопки "Зберегти" та "Завантажити" викликають стандартні діалогові
    вікна Windows для, відповідно, збереження і завантаження файлу результатів.
    Зберігаючи файл результатів, бажано давати йому розширення RTS.
    2 Система меню
    Середовище програмування Borland Delphi має два компоненти для створення меню:
    TMainMenu і TPopupMenu. Вони роблять програмування меню додатків нескладної
    завданням. У цій роботі будуть описані способи створення меню з обома
    компонентами, а також представлені приклади програм.
    2. 1 TMainMenu
    Для того, щоб створити меню, помістіть компонент на форму, а потім клацніть по
    нього два рази лівою кнопкою мишки. З'явиться спеціальне вікно для введення пунктів
    меню, приклад якого представлений на рис. 2. 1.

    Малюнок 2. 1 - Вікно для введення меню
    На рис. 2.1 показано вікно для введення пунктів меню, а також частина інспектора
    об'єктів з властивістю Caption, якому потрібно присвоїти рядок меню. Крім того,
    можна змінити властивість Name.
    2. 1. 1 Події
    Щоб програма реагувала на вибір пункту меню, потрібно створити спеціальний
    обробник події, який буде викликатися кожного разу після клацання мишки по
    пункту або при натисканні клавіші "ENTER".
    Вставити обробник події вибору меню можна кількома способами: подвійний
    отримаєте по пункту на вікні редагування меню, на формі; можна, в крайньому випадку,
    призначити подія на сторінці "Events" інспектора об'єктів.
    2. 1. 2 Вкладені меню
    Такі меню широко застосовуються у багатьох програмах Windows і не тільки. Вибираючи
    пункт меню, користувач потрапляє в інше меню (як правило, розташоване
    вертикально) і може вибирати там.
    Після введення пункту горизонтального меню, воно приймає вигляд:

    Малюнок 2. 2 - Приліплене меню
    Тепер можна виділити мишкою пункт вкладеного меню і вводити його параметри, як
    і для головного.
    Підменю, в свою чергу, можна також призначати вкладені. Найзручніший
    спосіб - натиснути правою кнопкою мишки івибрать з меню, що з'явилося пункт "Create
    Submenu ".
    Створювати вкладені меню Windows дозволяє до безкінечності (на практиці -
    скільки вистачить пам'яті або поки не набридне).
    2. 1. 3 Додаткові можливості
    Замість звичайного виконання дії при виборі пункту меню, можна зробити так,
    щоб він відзначався "пташкою" (Мал. 2. 4). У цьому випадку даний пункт діє
    подібно до елементу інтерфейсу CheckBox. Щоб у програмі дізнатися, "включений" Чи
    пункт, треба перевірити властивість Checked.

    Малюнок 2. 4 - Меню, відзначене "пташкою"
    У багатьох додатках також застосовується можливість закриття доступу до
    певного пункту меню, ЯкщП в даний момент він не може виконається. Для
    цього є властивість Enabled. Воно, як і Checked, має тип Boolean.
    На рис. 2.4 видно, що пункт "Меню2" виділено жирним шрифтом. Це результат
    установки ще одного логічного властивості об'єкта - Default.
    Ще одна важлива можливість - вставка роздільної лінії. На рис. 2.5 (стор
    16) вона розміщена між "Меню1" і "Меню2":
    Цю "примочку" використовують в основному для отдленія різних типів дії,
    викликається меню, наприклад, часто в меню "Файл" поміщають список декількох
    відкривалися раніше файлів, відокремлений від решти меню такими лініями.
    Чудовим прикладом використання розділових ліній також може служити меню
    "Файл" програми Microsoft Word.
    Однією із самих зручних можливостей системи меню є можливість
    використання клавіш швидкого доступу, при одночасному натисканні клавіш Ctrl і Р
    поточний документ отправлется на друк. І не потрібно відволікатися, витрачати час,
    знімати руку з клавіатури ...
    Розглянутий нами компонент TMainMenu також має можливість призначення
    клавіш швидкого доступу. Для цього є властивість ShortCut.
    У інспектора об'єктів воно має список, що розкривається, з якого можна вибрати
    потрібну комбінацію клавіш.
    Якщо комусь захочеться зробити вже дуже "круту" програму, тут йому допоможе
    можливість вставки картинок.
    2. 2 TPopupMenu
    Це спливаюче меню, воно викликається натисканням правої кнопки миші. Як і
    MainMenu, цей компонент слід помістити на форму, для редагування два рази
    клацнути. У всьому, що стосується створення пунктів, цей компонент ідентичний
    MainMenu. Ну, хіба що, одразу будується вертикальне меню.
    Для того, щоб меню "спливало", потрібно у властивості PopupMenu форми вказати його
    (меню) ім'я.
    3 Приклад програми
    Нижче будуть представлені приклади програм, що використовують такі компоненти, як
    меню. Крім вихідного коду будуть ілюстрації.
    Приклад являє собою нескладну програму, що дозволяє переглядати і
    редагувати текстові файли. Вікно цієї програми показано на рис. 2. 8.

    Малюнок 2. 8 - Вікно програми-прикладу
    Нижче буде представлений лістинг програми:
    unit Unit1;
    (Головний модуль програми)
    interface
    uses
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Menus,
    StdCtrls;
    type
    TForm1 = class (TForm)
    MainMenu1: TMainMenu; (Головне меню)
    N1: TMenuItem; (Меню "Файл")
    N2: TMenuItem; (Меню "Відкрити")
    N3: TMenuItem; (Меню "Зберегти")
    N4: TMenuItem; (Меню "Вихід")
    N5: TMenuItem; (Роздільна лінія)
    N6: TMenuItem; (Меню "Допомога")
    N7: TMenuItem; (Меню "Про програму")
    Memo1: TMemo;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    PopupMenu1: TPopupMenu; (Спливаюче меню)
    procedure N4Click (Sender: TObject);
    procedure N7Click (Sender: TObject);
    procedure N2Click (Sender: TObject);
    procedure N3Click (Sender: TObject);
    private
    (Private declarations)
    public
    (Public declarations)
    end;
    var
    Form1: TForm1;
    implementation
    uses Unit2;
    ($ R *. DFM)
    procedure TForm1.N4Click (Sender: TObject);
    begin
    close;
    end;
    procedure TForm1.N7Click (Sender: TObject);
    begin
    aboutbox.show
    end;
    procedure TForm1.N2Click (Sender: TObject);
    begin
    if opendialog1.Execute then memo1.Lines.LoadFromFile (opendialog1.filename)
    end;
    procedure TForm1.N3Click (Sender: TObject);
    begin
    if savedialog1.Execute then memo1.Lines.SaveToFile (savedialog1.filename)
    end;
    end.
     
    unit Unit2;
    (Модуль, що описує вікно "Про програму")
    interface
    uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls, Buttons,
    ExtCtrls;
    type
    TAboutBox = class (TForm)
    Panel1: TPanel;
    ProgramIcon: T8529_;
    ProductName: TLabel;
    Comments: TLabel;
    OKButton: TButton;
    procedure OKButtonClick (Sender: TObject);
    private
    (Private declarations)
    public
    (Public declarations)
    end;
    var
    AboutBox: TAboutBox;
    implementation
    ($ R *. DFM)
    procedure TAboutBox.OKButtonClick (Sender: TObject);
    begin
    Hide
    end;
    end.
    Ця програма демонструє використання меню. Вона має головне меню і
    спливаюче, яке з'являється при натисканні правої кнопки мишки. Меню забезпечені
    клавішами швидкого доступу, використовується розділова лінія.
    Меню "Відкрити", "Зберегти", "Вихід" і "Про програму" забезпечені клавішами швидкого
    доступу. Спливаюче меню, що має два пункти - "Відкрити" і "Зберегти". При їх
    натисканні викликаються події відповідних пунктів головного меню.
    Висновки
    У цій роботі розроблена система для псіхотестірованія на Borland
    Delphi 5. 0. Крім основної програми, створені дві утілітние - для створення
    тестів, які зберігаються в окремих файлах.
    У процесі складання програми детально були вивчені основні об'єкти
    графічного інтерфейсa Windows.
    У процесі виконання другої частини курсової роботи були детально вивчені
    компоненти, що дозволяють створювати систему меню. При розгляді цих
    компонентів наведена програма-приклад.
    Додаток А
    Лістинг програми.
    unit Mainfrm;
    interface
    uses
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
    Buttons, ExtCtrls, TestTypes;
    type
    TfrmMain = class (TForm)
    8529_1: T8529_;
    SpeedButton1: TSpeedButton;
    SpeedButton2: TSpeedButton;
    8529_2: T8529_;
    SpeedButton3: TSpeedButton;
    procedure runtest;
    procedure SpeedButton1Click (Sender: TObject);
    procedure SpeedButton2Click (Sender: TObject);
    procedure SpeedButton3Click (Sender: TObject);
    procedure FormClose (Sender: TObject; var Action: TCloseAction);
    private
    (Private declarations)
    public
    end;
    var
    frmMain: TfrmMain;
    testcount: integer;
    implementation
    uses Testfrm;
    ($ R *. DFM)
    procedure tfrmmain.runtest;
    var f: file of ttest;
    begin
    frmmain.hide;
    assignfile (f, testfilename);
    try
    reset (f);
    except
    showmessage ( 'Файл тесту не знайдений !');< br /> exit
    end;
    testnum: = 1;
    while not eof (f) do begin
    try
    read (f, test [testnum]);
    inc (testnum);
    except
    showmessage ( 'Помилка у файлі тесту');
    frmmain.show;
    exit
    end
    end;
    closefile (f);
    frmTest.show;
    end;
    procedure TfrmMain.SpeedButton1Click (Sender: TObject);
    begin
    testfilename: = 'Time.tst';
    runtest
    end;
     
    procedure TfrmMain.SpeedButton2Click (Sender: TObject);
    begin
    testfilename: = 'Agress.tst';
    runtest
    end;
    procedure TfrmMain.SpeedButton3Click (Sender: TObject);
    begin
    testfilename: = 'health.tst';
    runtest
    end;
    procedure TfrmMain.FormClose (Sender: TObject; var Action: TCloseAction);
    begin
    if messagedlg ( 'Ви дійсно хочете вийти?', mtwarning, [mbyes, mbno], 0) = mrno
    then action: = canone
    end;
    end.
    unit Testfrm;
    interface
    uses
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
    ExtCtrls, StdCtrls, Buttons, testtypes;
    type
    TfrmTest = class (TForm)
    8529_1: T8529_;
    rb1: TRadioButton;
    rb2: TRadioButton;
    rb3: TRadioButton;
    Label1: TLabel;
    SpeedButton1: TSpeedButton;
    procedure load;
    procedure rb1Click (Sender: TObject);
    procedure rb2Click (Sender: TObject);
    procedure rb3Click (Sender: TObject);
    procedure FormActivate (Sender: TObject);
    procedure SpeedButton1Click (Sender: TObject);
    procedure FormClose (Sender: TObject; var Action: TCloseAction);
    private
    (Private declarations)
    public
    defque: byte;
    end;
    var
    frmTest: TfrmTest;
    implementation
    ($ R *. DFM)
    uses mainfrm, Resfrm;
    procedure tfrmtest.load;
    begin
    label1.caption: = test [defque]. text;
    rb1.Caption: = test [defque]. quest [1];
    rb2.Caption: = test [defque]. quest [2];
    rb3.Caption: = test [defque]. quest [3];
    speedbutton1.enabled: = false;
    rb1.Enabled: = true;
    rb2.Enabled: = true;
    rb3.Enabled: = true;
    rb1.Checked: = false;
    rb2.Checked: = false;
    rb3.Checked: = false;
    if rb3.caption =''then rb3.hide else rb3.Show
    end;
    procedure TfrmTest.FormActivate (Sender: TObject);
    begin
    testcount: = 0;
    defque: = 1;
    /> load
    procedure TfrmTest.rb1Click (Sender: TObject);
    begin
    speedbutton1.Enabled: = true;
    rb1.Enabled: = false;
    rb2.Enabled: = false;
    rb3.Enabled: = false;
    inc (testcount, test [defque]. count [1])
    end;
    procedure TfrmTest.rb2Click (Sender: TObject);
    begin
    speedbutton1.Enabled: = true;
    rb1.Enabled: = false;
    rb2.Enabled: = false;
    rb3.Enabled: = false;
    inc (testcount, test [defque]. count [2])
    end;
    procedure TfrmTest.rb3Click (Sender: TObject);
    begin
    speedbutton1.Enabled: = true;
    rb1.Enabled: = false;
    rb2.Enabled: = false;
    rb3.Enabled: = false;
    inc (testcount, test [defque]. count [3])
    end;
     
    procedure TfrmTest.SpeedButton1Click (Sender: TObject);
    var f: file of TResult;
    r: tresult;
    begin
    inc (defque);
    if defque = testnum then begin
    assignfile (f, copy (testfilename, 1, length (testfilename) -3) + 'rts');
    reset (f);
    while not eof (f) do begin
    read (f, r);
    if testcount in [r.min .. r.max] then begin
    frmres.label1.Caption: = r.text;
    break
    end
    end;
    closefile (f);
    frmtest.hide;
    frmres.show;
    end;
    /> load
    procedure TfrmTest.FormClose (Sender: TObject; var Action: TCloseAction);
    begin
    frmmain.show;
    action: = cahide
    end;
    end.
    unit Resfrm;
    interface
    uses
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
    StdCtrls;
    type
    TfrmRes = class (TForm)
    Label1: TLabel;
    Button1: TButton;
    procedure Button1Click (Sender: TObject);
    procedure FormClose (Sender: TObject; var Action: TCloseAction);
    private
    (Private declarations)
    public
    (Public declarations)
    end;
    var
    frmRes: TfrmRes;
    implementation
    uses Mainfrm;
    ($ R *. DFM)
    procedure TfrmRes.Button1Click (Sender: TObject);
    begin
    frmres.hide;
    frmmain.show
    end;
    procedure TfrmRes.FormClose (Sender: TObject; var Action: TCloseAction);
    begin
    action: = cahide;
    frmmain.show
    end;
    end.
    unit TestTypes;
    interface
    type
    TTest = record
    text: string [255];
    quest: array [1 .. 3] of string [100];
    count: array [1 .. 3] of byte;
    end;
    var
    testfilename: string;
    test: array [1 .. 100] of ttest;
    testnum: byte;
    implementation
    end.
    Лістинг програми ТЗ:
    unit Mainfrm;
    interface
    uses
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
    StdCtrls, Spin, TestTypes;
    type
    TfrmMain = class (TForm)
    rb1: TRadioButton;
    rb2: TRadioButton;
    rb3: TRadioButton;
    Edit1: TEdit;
    Label1: TLabel;
    SpinEdit1: TSpinEdit;
    Label2: TLabel;
    Edit2: TEdit;
    Label3: TLabel;
    Label4: TLabel;
    Button1: TButton;
    Button2: TButton;
    SaveDialog1: TSaveDialog;
    OpenDialog1: TOpenDialog;
    StaticText1: TStaticText;
    Label5: TLabel;
    SpinEdit2: TSpinEdit;
    Button3: TButton;
    procedure Button2Click (Sender: TObject);
    procedure Button1Click (Sender: TObject);
    procedure FormCreate (Sender: TObject);
    procedure Edit1Change (Sender: TObject);
    procedure Edit2Change (Sender: TObject);
    procedure rb1Click (Sender: TObject);
    procedure rb2Click (Sender: TObject);
    procedure rb3Click (Sender: TObject);
    procedure SpinEdit1Change (Sender: TObject);
    procedure SpinEdit2Change (Sender: TObject);
    procedure Button3Click (Sender: TObject);
    private
    (Private declarations)
    public
    variant: ^ tradiobutton;
    nq: byte;
    end;
    var
    frmMain: TfrmMain;
    implementation
    ($ R *. DFM)
    procedure TfrmMain.Button2Click (Sender: TObject);
    var f: file of TTest;
    i: byte;
    begin
    if savedialog1.execute then begin
    assignfile (f, savedialog1.Filename);
    rewrite (f);
    for i: = 1 to testnum do write (f, test [i]);
    closefile (f)
    end
    end;
    procedure TfrmMain.Button1Click (Sender: TObject);
    var f: file of ttest;
    begin
    if opendialog1.execute then begin
    assignfile (f, opendialog1.Filename);
    reset (f);
    testnum: = 1;
    while not eof (f) do begin
    read (f, test [testnum]);
    inc (testnum)
    end;
    statictext1.Caption: = 'Всього питань' + inttostr (testnum);
    closefile (f);
    spinedit1.value: = 1;
    spinedit1change (sender)
    end
    end;
    procedure TfrmMain.FormCreate (Sender: TObject); var i: byte;
    begin
    testnum: = 1;
    variant: = @ rb1;
    nq: = 1;
    for i: = 1 to 100 do begin
    test [i]. quest [1]: = 'Варіант1';
    test [i]. quest [2]: = 'Варіант2';
    test [i]. quest [3]: = 'Варіант3';
    test [i]. count [1]: = 0;
    test [i]. count [2]: = 0;
    test [i]. count [3]: = 0;
    test [i]. text: = 'Текст питання'
    end;
    end;
    procedure TfrmMain.Edit1Change (Sender: TObject);
    begin
    label2.Caption: = edit1.Text;
    test [spinedit1.value]. text: = edit1.text
    end;
    procedure TfrmMain.Edit2Change (Sender: TObject);
    begin
    variant ^. Caption: = edit2.Text;
    test [spinedit1.value]. quest [nq]: = edit2.text
    end;
    procedure TfrmMain.rb1Click (Sender: TObject);
    begin
    variant: = @ rb1;
    nq: = 1;
    edit2.Text: = rb1.Caption;
    spinedit2.Value: = test [spinedit1.Value]. count [1];
    edit2.SetFocus
    end;
    procedure TfrmMain.rb2Click (Sender: TObject);
    begin
    variant: = @ rb2;
    nq: = 2;
    edit2.Text: = rb2.Caption;
    spinedit2.Value: = test [spinedit1.Value]. count [2];
    edit2.SetFocus
    end;
    procedure TfrmMain.rb3Click (Sender: TObject);
    begin
    variant: = @ rb3;
    nq: = 3;
    edit2.Text: = rb3.Caption;
    spinedit2.Value: = test [spinedit1.Value]. count [3];
    edit2.SetFocus
    end;
    procedure TfrmMain.SpinEdit1Change (Sender: TObject);
    begin
    if spinedit1.value> testnum then begin
    inc (testnum);
    statictext1.caption: = 'Всього питань' + inttostr (testnum)
    end;
    label2.Caption: = test [spinedit1.value]. text;
    rb1.Caption: = test [spinedit1.value]. quest [1];
    rb2.Caption: = test [spinedit1.value]. quest [2];
    rb3.Caption: = test [spinedit1.value]. quest [3];
    rb1.Checked: = true;
    variant: = @ rb1;
    edit1.Text: = test [spinedit1.value]. text;
    edit2.text: = test [spinedit1.value]. quest [1];
    edit2.setfocus
    end;
    procedure TfrmMain.SpinEdit2Change (Sender: TObject);
    begin
    test [spinedit1.value]. count [nq]: = spinedit2.value
    end;
    procedure TfrmMain.Button3Click (Sender: TObject);
    var i: byte;
    begin
    if spinedit1.value = testnum then begin
    dec (testnum);
    spinedit1.value: = spinedit1.value-1;
    exit
    end;
    if testnum = 1 then exit;
    for i: = spinedit1.value to testnum-1 do test [i]: = test [i +1];
    dec (testnum);
    spinedit1change (sender);
    statictext1.Caption: = 'Всього питань' + inttostr (testnum)
    end;
    end.
    Лістинг програми RС:
    unit Mainfrm;
    interface
    uses
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
    testtypes, StdCtrls, Spin;
    type
    TfrmMain = class (TForm)
    Memo1: TMemo;
    SpinEdit1: TSpinEdit;
    Label1: TLabel;
    SpinEdit2: TSpinEdit;
    Label2: TLabel;
    Button1: TButton;
    Button2: TButton;
    SpinEdit3: TSpinEdit;
    Label3: TLabel;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    procedure Button1Click (Sender: TObject);
    procedure Button2Click (Sender: TObject);
    procedure SpinEdit1Change (Sender: TObject);
    procedure SpinEdit2Change (Sender: TObject);
    procedure Memo1Change (Sender: TObject);
    procedure FormCreate (Sender: TObject);
    procedure SpinEdit3Change (Sender: TObject);
    private
    (Private declarations)
    public
    res: array [1 .. 100] of tresult;
    varnum: byte;
    no: boolean;
    end;
    var
    frmMain: TfrmMain;
    implementation
    ($ R *. DFM)
    procedure TfrmMain.Button1Click (Sender: TObject);
    var f: file of tresult;
    i: byte;
    begin
    if savedialog1.execute then begin
    assignfile (f, savedialog1.filename);
    rewrite (f);
    for i: = 1 to varnum-1 do write (f, res [i]);
    closefile (f)
    end
    end;
    procedure TfrmMain.Button2Click (Sender: TObject);
    var f: file of tresult;
    begin
    if opendialog1.execute then begin
    assignfile (f, opendialog1.filename);
    reset (f);
    varnum: = 1;
    while not eof (f) do begin
    read (f, res [varnum]);
    inc (varnum)
    end;
    memo1.text: = res [1]. text;
    spinedit1.value: = res [1]. min;
    spinedit2.value: = res [1]. max;
    spinedit3.value: = 1;
    closefile (f)
    end
    end;
    procedure TfrmMain.SpinEdit1Change (Sender: TObject);
    begin
    if no then exit;
    res [spinedit3.value]. min: = spinedit1.value;
    if spinedit2.value
    end;
    procedure TfrmMain.SpinEdit2Change (Sender: TObject);
    begin
    if no then exit;
    res [spinedit3.value]. max: = spinedit2.value;
    end;
    procedure TfrmMain.Memo1Change (Sender: TObject);
    var i: integer;
    begin
    if not no then for i: = 1 to length (memo1.text) do
    res [spinedit3.value]. text [i]: = memo1.text [i]
    end;
    procedure TfrmMain.FormCreate (Sender: TObject);
    begin
    varnum: = 1;
    no: = false
    end;
    procedure TfrmMain.SpinEdit3Change (Sender: TObject);
    begin
    no: = true;
    if varnum
    memo1.text: = res [spinedit3.value]. text;
    spinedit1.value: = res [spinedit3.value]. min;
    spinedit2.value: = res [spinedit3.value]. max;
    no: = false;
    memo1.SetFocus
    end;
    end.



         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status