Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Подготовьте в блокноте файл с тестом. ⇐ ПредыдущаяСтр 3 из 3
В файле с тестами текст с вопросом помечается символом «? » в первой позиции и текст с правильным ответов знаком «+» также в первой позиции.
Рисунок 9. Пример файла с тестом
1. Создайте новый проект, на основную форму поместите компоненты: Label1 – для вывода текста вопроса; Radiogroup1 – для вывода вариантов ответа; Label2 – для вывода сообщения «Правильно» или «Неправильно» в зависимости от ответа тестируемого; Label3 – для вывода номера вопроса Label4 – для вывода рейтинга; Label5 – для вывода качества знаний при тестирвоании. Кнопки с надписями «Далее» и «Закрыть».
Рисунок 10. Основная форма
2. Объявите глобальные переменные после строки Form1: Tform1;: vopros: array[1..100] of shortstring; // массив для записи вопросов в тесте otvet: array[1..1000, 1..5] of shortstring; // массив для записи ответов в тесте prav_otv: array[1..1000] of shortstring; // массив для записи правильных ответов reiting: integer; // переменная для подсчета рейтинга rmax, ksl: integer; // переменные передаваемые в процедуру sluch для выбора случайным //образом rmax вопросов для тестирования из числа имеющихся ksl. rmax1, ksl1: integer; // для перемешивания вариантов ответа fix: mas; // массив для запоминания номеров вопросов используемых в тесте answer: mas; // массив для запоминания номеров ответов в случайном порядке num_vopr: integer; // номер вопроса
3. Подсоедините к проекту модуль mylib, содержащий процедуру sluch (см. лаб. работу 11). Procedure sluch (var fix: mas; rmax, ksl: integer);
Код формы с организацией тестирования: unit Unittest;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, mylib, StdCtrls, ExtCtrls, Buttons;
type TForm1 = class(TForm) Label1: TLabel; RadioGroup1: TRadioGroup; Label2: TLabel; Label3: TLabel; BitBtn1: TBitBtn; BitBtn2: TBitBtn; Label4: TLabel; Image1: TImage; Label5: TLabel; procedure FormCreate(Sender: TObject); procedure BitBtn2Click(Sender: TObject); procedure BitBtn1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1; vopros: array[1..100] of shortstring; // массив для записи вопросов в тесте otvet: array[1..1000, 1..5] of shortstring; // массив для записи ответов в тесте prav_otv: array[1..1000] of shortstring; // массив для записи правильных ответов reiting: integer; // переменная для подсчета рейтинга rmax, ksl: integer; // переменные передаваемые в процедуру sluch для выбора случайным //образом rmax вопросов для тестирования из числа имеющихся ksl. rmax1, ksl1: integer; // для перемешивания вариантов ответа fix: mas; // массив для запоминания номеров вопросов используемых в тесте answer: mas; // массив для запоминания номеров ответов в случайном порядке num_vopr: integer; // номер вопроса
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject); var s, s1: shortstring; name_f: shortstring; i, k, j: integer; f, f1: textfile; begin k: =0; assignfile(f, ’test.dat’); reset(f); while not eof(f) do begin readln(f, s); if s[1]='? ' then begin inc(k); s1: =copy(s, 2, length(s)); vopros[k]: =s1; j: =0; end else if s[1]='+' then begin inc(j); s1: =copy(s, 2, length(s)); otvet[k, j]: =s1; prav_otv[k]: =s1; // showmessage(s1); end else begin inc(j); otvet[k, j]: =s; end; end; // while closefile(f); ksl: =k; rmax: =k; sluch(fix, rmax, ksl); num_vopr: =1; label1.caption: =vopros[fix[num_vopr]]; rmax1: =5; ksl1: =5; sluch(answer, rmax1, ksl1); Radiogroup1.Items.Clear; for i: =0 to 4 do begin if otvet[num_vopr, answr[I+1]]> ’’ then radiogroup1.Items.Add(otvet[num_vopr, answr[I+1]]); radiogroup1.ItemIndex: =-1; reiting: =0; end;
// Кнопка «Далее» procedure TForm1.BitBtn2Click(Sender: TObject); var i, k: integer; В: double; begin if Radiogroup1.ItemIndex< 0 then begin showmessage('Выберите ответ' ); exit; end; if prav_otv[fix[num_vopr]]= Radiogroup1. Items [ Radiogroup1.ItemIndex] then begin inc(reiting); label2.Caption: ='Правильно!!! ' end else begin label2.Caption: ='Неправильно...'; s_num_neotv: =s_num_neotv+inttostr(fix[num_vopr])+' '; end; inc(num_vopr); if num_vopr< =rmax then begin label3.Caption: ='Вопрос '+inttostr(num_vopr); label1.caption: =vopros[fix[num_vopr]]; label4.Caption: ='Правильных ответов = '+inttostr(reiting); sluch(answer, rmax1, ksl1); Radiogroup1.Items.Clear; for i: =0 to 4 do if otvet[num_vopr, answr[I+1]]> ’’ then radiogroup1.Items.Add(otvet[num_vopr, answr[I+1]]); radiogroup1.ItemIndex: =-1; end else begin Showmessage(‘Тестирование завершено’); B: = reiting/rmax*100; Label5.Caption: =' '+floatTostr(B); end; end; //proc
СРСП(3 часа)
Постановка задачи Составить программу и блок-схему для решения каждой из следующих задач: 1. Пусть текстовый файл t разбит на непустые строки. Описать функцию count(t) для подсчета числа строк, которые: a. Начинаются с буквы d; b. Оканчиваются буквой z.
СРС(3 часа)
Дополнительное задание 1. Описать процедуру triangle(t), формирующую текстовый файл t из 9 строк, в первой из которых – одна литера ‘1’, во второй – две литеры ‘2’, …, в девятой – девять литер ‘9’. 2. Пусть текстовый файл t разбит на непустые строки. Описать функцию count (t) для подсчета числа строк, начинающихся и оканчивающихся одной и той же литерой. Лабораторная работа №15 Тема: «Типизированные файлы» Цели работы Закрепить умения и навыки работы с типизированными файлами Углубить знания о файлах Методический материал
Постановка задачи: Создать проект для формирования файла с информацией о ведущих спортсменах мира. О каждом спортсмене хранится сведения о его фамилии, имени, отчестве, стране, которую он представляет, вид спорта, которым занимается и медали, завоеванной им. На основе сформированного файла организовать поиск информации по всем видам, хранящейся информации. Для решения задачи объявим тип-запись: Type sportsmen=record name: shortstring; strana: shortstring; vid: shortstring; medal: shortstring; end; Объявим глобальные переменные (в интерфейсной части основного модуля): f: file of sportsmen; spr: sportsmen; // рабочая переменная, хранящая сведения о текущем спортмене
Создадим проект, в котором на отдельной форме организовано заполнение файла информации о спортсменах. При этом фамилия и инициалы вводятся в поле ввода, страна и вид спорта выбираются из выпадающих списков, медаль выбирается из радио-списка. Поиск информации следует выполнять после заполнения файла. При этом выбор вида поиска выполняется из выпадающего списка. Значение для поиска определяется по полям и спискам используемых для ввода данных. Разместим на форму три компонента: Combobox1 – для выбора страны из выпадающего списка; Combobox2 – для выбора вида спорта; Combobox3 – для выбора вида поиска.
Списки следует набирать в окне построителя, открывающемся в поле Items. Поместим на форму компонент RadioGroup1 и в поле Items наберем список медалей: золотая, серебряная и бронзовая. Для вывода найденных записей поместим на форму Memo – поле. Для сохранения записей поместим на форму кнопку и пропишем ее код. Создание файла выполняется в коде события открытия формы. Для события OnClick компонента Combobox3 пропишем код поиска записей.
Рисунок 13. Код проекта: unit Unitsport;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;
type TForm1 = class(TForm) ComboBox1: TComboBox; Edit1: TEdit; ComboBox2: TComboBox; RadioGroup1: TRadioGroup; Button1: TButton; ComboBox3: TComboBox; Label1: TLabel; Memo1: TMemo; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure ComboBox3Click(Sender: TObject); private { Private declarations } public { Public declarations } end; sportsmen=record name: shortstring; strana: shortstring; vid: shortstring; medal: shortstring; end; var f: file of sportsmen; spr: sportsmen; Form1: TForm1;
implementation
{$R *.DFM} // создание файла procedure TForm1.FormCreate(Sender: TObject); begin assignfile(f, 'sport.dat'); rewrite(f); end;
// сохранение записи procedure TForm1.Button1Click(Sender: TObject); begin with spr do begin name: =edit1.Text; strana: =combobox1.Text; vid: =combobox2.Text; medal: =radiogroup1.Items[radiogroup1.itemindex]; write(f, spr); end; end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin closefile(f); end;
// поиск записей по критериям поиска procedure TForm1.ComboBox3Click(Sender: TObject); begin memo1.Clear; if combobox3.text='поиск по стране' then begin seek(f, 0); while not eof(f) do begin read(f, spr); if spr.strana=combobox1.text then begin memo1.Lines.Add(spr.name); memo1.Lines.Add(spr.strana); memo1.Lines.Add(spr.medal); memo1.Lines.Add(spr.vid); end; end; end; if Combobox3.text='поиск по фамилии' then begin seek(f, 0); while not eof(f) do begin read(f, spr); if spr.name=edit1.text then begin memo1.Lines.Add(spr.name); memo1.Lines.Add(spr.strana); memo1.Lines.Add(spr.medal); memo1.Lines.Add(spr.vid); end; end; end; if Combobox3.text='поиск по виду спорта' then begin seek(f, 0); while not eof(f) do begin read(f, spr); if spr.vid=combobox2.text then begin memo1.Lines.Add(spr.name); memo1.Lines.Add(spr.strana); memo1.Lines.Add(spr.medal); memo1.Lines.Add(spr.vid); end; end; end; if Combobox3.text='поиск по медали' then begin seek(f, 0); while not eof(f) do begin read(f, spr); if spr.medal=radiogroup1.Items[radiogroup1.ItemIndex] then begin memo1.Lines.Add(spr.name); memo1.Lines.Add(spr.strana); memo1.Lines.Add(spr.medal); memo1.Lines.Add(spr.vid); end; end; end; end; end.
СРСП(3 часа) Постановка задачи Составить программу и блок-схему для решения каждой из следующих задач: 1. Сформировать файл f целых чисел. Все отрицательные числа из файла f переписать в файл g. 2. type FR = file of Real; Описать функцию predp(f), значением которой является предпоследний элеиент файла f, имеющего тип FR и содержащего не менее двух элементов. 3. type ryad = file of 1..maxint; Описать процедуру fib(f, n), записывающую в ряд f все числа Фибоначчи (1, 1, 2, 3, 5, …), не превосходящие целого положительного числа n.
СРС(3 часа)
Дополнительное задание 1. type Seria = File of real; Описать функцию otric (s), подсчитывающую сумму отрицательных элементов серии s. 2. type text = file of char; Описать процедуру next (t), заменяющую в тексте t каждую цифру на следующую по величине цифру (‘9’ заменять на ‘0’).
Популярное:
|
Последнее изменение этой страницы: 2016-03-17; Просмотров: 1245; Нарушение авторского права страницы