Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.05.2011, 16:10   #1
Cassius
Пользователь
 
Регистрация: 04.12.2009
Сообщений: 28
По умолчанию Создание программы тестирования

Код:
//
private
   QuestNum : Integer;   {Номер текущего показываемого вопроса}
   QuestCount : Integer; {Всего вопросов}
   PrgDir : String; {Каталог в котором программа}
   Ini: TiniFile;
   Btn : Array of TradioButton; {Объявляю массив кнопок}
   Scores: Integer;  {Количество набранных баллов}
  public
   procedure Clear; {Удаление всех кнопок}
   procedure Insert(Num: Integer); {Добавляю кнопку с номером Num}
   procedure ShowQuestion; {Вывожу вопрос}
  end;

var
  MainForm: TMainForm;
  a: integer;


//Функция для записи результатов теста на отдельный лог-файл
function AppendOrWriteTextToFile(FileName : TFilename; WriteText : string): boolean;
 var
   f : Textfile;
 begin
   Result := False;
   AssignFile(f, FileName);
   try
     if FileExists(FileName) = False then
       Rewrite(f)
     else
     begin
       Append(f);
     end;
     Writeln(f, WriteText);
     Result := True;
   finally
     CloseFile(f);
   end;
              end;

есть такой код! можете с него сделать полноценный исходник? СРОЧНО нужна помощь!
Cassius вне форума Ответить с цитированием
Старый 18.05.2011, 16:10   #2
Cassius
Пользователь
 
Регистрация: 04.12.2009
Сообщений: 28
По умолчанию дополнение к коду

Код:
//Процедура очистки формы
procedure TMainForm.Clear;
var
 i : Integer;
 a: integer;
begin
 {Уничтожаю кнопки}
 for i:=0 to length(Btn)-1 do
  Btn[i].Hide;
 {Освобождаю память}
 SetLength(Btn,0);
end;
//При загрузки приложения

procedure TMainForm.FormCreate(Sender: TObject);
 var
 dir, log : string;
begin
 {получаю каталог в котором программа}
 PrgDir := ExtractFileDir(Application.ExeName)+'\';

 {Создаю (открываю) Ini-файл в котором вопросы}
 Ini := TIniFile.Create(PrgDir+'Test.ini');

 {Получаю название теста}
 Caption := Ini.ReadString('Тест', 'Название теста', 'Тест без названия');

 {Вопросов еще нет}
 QuestNum :=0;
 Scores := 0;  {Количество набранных баллов}
 QuestCount := Ini.ReadInteger('Тест',
                     'Количество Вопросов ', -2);
 if QuestCount<-1 then   {при удалении Ini-файла, он сам себя создает}
  Ini.WriteInteger('Тест', 'Количество Вопросов ', -1);
    label2.Hide;
   QuestNum := 1;
    ShowQuestion;
      dir := ExtractFilePath(Application.Exename);
//запись в файл времени начала теста
   log := 'Время начала теста:     ' + TimeToStr(now);

   AppendOrWriteTextToFile(dir + '\logfile.txt', log)  ;
   Edit1.Text:=TimeToStr(now);
end;








//при закрытии программы
procedure TMainForm.FormDestroy(Sender: TObject);
begin
 Clear;
 Ini.Free; {Закрываю (Уничтожаю) Ini-Файл}
end;
//при выбора ответа пользователем 
procedure TMainForm.Insert(Num: Integer);
begin
 Btn[Num-1] := TradioButton.Create(Self);
 Btn[Num-1].Caption :=  Ini.ReadString('Вопрос №'+inttostr(QuestNum),
                     'Текст кнопки '+inttostr(Num),inttostr(Num));
 Btn[Num-1].Top := (Num-1)*(Btn[Num-1].Height + 4);
 Btn[Num-1].Width := groupBox1.Width-4;
 Btn[Num-1].Parent := groupBox1; {Вывожу кнопку на ScrollBox}
 {У всех кнопок один и тот же обаботчик события}
 Btn[Num-1].OnClick := ButtonClick;
 Btn[Num-1].Tag := Num; 
end;
//Отображения кнопок и выведение результата  
procedure TMainForm.ShowQuestion;
var
 dir, log : string;
a: integer;
 Count,i : Integer;
 r:integer;
begin
 Clear;
 if (QuestNum>QuestCount)and(QuestNum>0) then {Проверяю не закончен ли тест}
  begin
  a:=scores;


   ShowMessage('Тест закончен, пригластие учителя'+#13);
   panel1.Visible:=true;
   label4.Caption:='Время начала теста:  '+edit1.text+#13+'Время оканчания теста:  '+timetostr(now)+#13+'Всего вопросов:   '+ inttostr(QuestCount) +#13   +'вы ответили на:  ' +inttostr(a);


//Выведения оценки
 if a=(0)
 then
 r:=2;
 if a=(1)
 then
 r:=2;
 if a=(2)
 then
 r:=2;
 if a=(3)
 then
 r:=(3);
 if a=(4)
 then
 r:=4;
 if a=(5)
 then
 r:=5 ;
label7.Caption:=inttostr(r);

//Запись в лог-файл результатов теста
     dir := ExtractFilePath(Application.Exename);

   log := 'Время оканчания теста:  ' + TimeToStr(now);

   AppendOrWriteTextToFile(dir + '\logfile.txt', log)  ;

   log := 'Правильных ответов  '+ inttostr(a);

   AppendOrWriteTextToFile(dir + '\logfile.txt',  log)  ;
   log := '----'+#13
   +'+++';

   AppendOrWriteTextToFile(dir + '\logfile.txt',  log)  ;

   Exit;
  end;

 Label1.Caption := Ini.ReadString('Вопрос №'+inttostr(QuestNum),
                      'Текст вопроса', 'Вопрос отсутствует');
 {количество кнопок}
 Count := Ini.ReadInteger('Вопрос №'+inttostr(QuestNum),
              'Количество кнопок',0);
 if Count=0 then Exit;
 SetLength(Btn, Count);{Создаю массив кнопок}
 for i:=1 to Count do
  Insert(i); {Добавляю кнопку}
end;

procedure TMainForm.ButtonClick(Sender: TObject);
var
 Answer : Integer; {Правильный ваиант ответа}
 a:integer;
begin {Обработчик события нажатия на кнопке}
{Надо проверить вызван ли обработчик события кнопкой}
 if not(Sender is TradioButton) then Exit; {Если нет то выхожу из обработчика}

 {Узнаю какой правильный вариант ответа}
 Answer := Ini.ReadInteger('Вопрос №'+inttostr(QuestNum),
              'Правильный вариант',-1);
 if Answer<0 then Exception.Create('В файле с вопросами ненаписан правильный вариант');             
 {Проверяю кокая кнопка была нажата}
 if (Sender as TradioButton).Tag=Answer then
   begin {Нажали правильную кнопку}
    {Здесь можно написать реакцию на выбор правильного ваианта теста
     например : увеличение переменной правлиьных ответов}
     inc(Scores);
    
    ShowMessage('Правильный ответ');
      a:=scores;
   end
  else
   begin {Нажали не ту кнопку}
    ShowMessage('Неправильный ответ');
   end;
 {Переход к следующему вопросу}
 inc(QuestNum);
 ShowQuestion;  
end;
Cassius вне форума Ответить с цитированием
Старый 19.05.2011, 09:38   #3
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

нужны исходники проги тестирования или сама прога тестрования ? нужна конкретно данная прога(по данному коду) или вообще прога тестирования ?

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

хранение в ини файлов теста - лол, любой не-тру школьник сдаст на отлично путем просмотра ини-теста.

сможешь ответить на вопросы (сверху 2 штуки) четко и понятно - пиши в аську мою, не сможешь - пытайся достать ещё куски кода и состряпай хоть как-то проект - накидай кнопок, радиобатонов и т.п. потом выкладывай проектом, может и найдётся добрый человек и поможет разобраться в этой каше...
phomm вне форума Ответить с цитированием
Старый 19.05.2011, 11:27   #4
sanatzmd
Новичок
Джуниор
 
Регистрация: 19.05.2011
Сообщений: 1
По умолчанию

пожалуйста отправьте мне исходник теста (или dpr) на адрес sanatzmd@mail.ru
sanatzmd вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Произвести тестирование программы способом тестирования потоков данных. xarti Фриланс 4 17.01.2011 23:06
Создание тестирования Vakostal Общие вопросы Delphi 8 12.04.2010 12:48
Нужна помощь в написании программы тестирования на Delphi Vindigo Помощь студентам 2 07.12.2007 17:46