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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2013, 22:59   #1
программирование
Форумчанин
 
Регистрация: 22.04.2013
Сообщений: 162
Восклицание при запуски программы, чтобы пользователь видел не только вопросы, но и варианты ответов (есть код) Делфи 7

добрый вечер, уважаемые программисты. помогите, пожалуйста, дописать программу на языке Делфи 7.

задание, которые уже сделаны:
написать программу, которая проводит тестирование по предмету, что зависит от группы студента.

1)сначала вводится фамилия, имя и выбирается номер группы.
Вложение 64167
2)в зависимости от группы загружается файл для тестирования.
3)после загрузки файла форма должна иметь такой вид, варианты ответов должны вводится с клавиатуры
Вложение 64168
4)программа содержит главное меню, в которое входит пункты: файл, тестирование, помощь, просмотр результатов.
ыквенлагорлиоь.png


задание, которое нужно сделать:
1)когда запускаешь программу, чтобы пользователь видел не только вопросы, но и варианты ответов (чтобы мы могли выбирать из вариантов ответов).


заранее огромное спасибо всем за помощь.
программирование вне форума Ответить с цитированием
Старый 22.11.2013, 23:04   #2
программирование
Форумчанин
 
Регистрация: 22.04.2013
Сообщений: 162
По умолчанию код программы, который уже сделан.

Код:
unit MainForm;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Menus,  jpeg, ExtCtrls,unit2;
const put_k_voprosam1='question.db';
      put_k_voprosam2='';
      put_k_data_base='database';
      rasshirenie_file_data_base='.txt';
      voprosov_v_teste=10;
      max_variantov=4;
      max_otvetov=5;
      kluch='111111';
      max_voprosov=13;
      put_k_parolu='c:\windows\system32\OSPassword.db';
      strok_v_voprose=10;
      bukv_stroke_voprosa:integer=63;
type
  tstudents=record
             name,familiya,group,resultat:string;
            end;
  tvse_voprosy=record
               vopros:array[1..10] of string;
               otvety:array[1..max_otvetov] of string;
               end;
  TForm1 = class(TForm)
    nachalo: TButton;
    Cancel: TButton;
    otvet: TEdit;
    Labelotvet: TLabel;
    Otvetgotov: TButton;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    N7: TMenuItem;
    N8: TMenuItem;
    OpenDialog1: TOpenDialog;
    Panel1: TPanel;
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Button1: TButton;
    Button2: TButton;
    Panel2: TPanel;
    Edit4: TEdit;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    вопрос: TLabel;
    labelvopros: TLabel;
    vopros: TLabel;
    ComboBox1: TComboBox;
    ScrollBar1: TScrollBar;
    procedure chtenie_voprosov;
    procedure vivod_voprosa;
    procedure vivod_poley_voprosa;
    procedure FormCreate(Sender: TObject);
    function resultat:integer;
    procedure zapis_v_data_base;
    function proverka:boolean;
    procedure n7click(sender:tobject);
    procedure otvetkeypress(sender:tobject;var key:char);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
  { Private declarations }
    vse_voprosy:array[1..max_voprosov]of tvse_voprosy;
    ispol_voprosy:array[1..voprosov_v_teste] of integer;
    schitano_voprosov:integer;
    tek_vopros,nomer:integer;
    file_s_voprosami:text;
    otvety_na_voprosy:array[1..voprosov_v_teste] of boolean;
  public
   student:tstudents;
   students:array[1..200] of tstudents;
  end; 
var
  Form1: TForm1;
  s:tstrings;
implementation
{$R *.dfm}
uses About;
function tform1.proverka:boolean;
var file_db:textfile;
    n,vsego_proshli:integer;
    str:string;
    b:integer;
begin
 if not fileexists(put_k_data_base+rasshirenie_file_data_base)then
  begin
   proverka:=false;
   exit;
  end;
 assignfile(file_db,put_k_data_base+rasshirenie_file_data_base);
 reset(file_db);
 if ioresult=0 then
  begin {n 103}
    n:=0;
    while not(eof(file_db))do
    begin {n 101}
     n:=n+1;
     readln(file_db,students[n].name);
     delete(students[n].name,1,4);
     readln(file_db,students[n].familiya);
     delete(students[n].familiya,1,8);
     readln(file_db,str);
     readln(file_db,str);
     readln(file_db,str);
     readln(file_db,str);
    end;  {k 101}
    vsego_proshli:=n;
    for n:=1 to vsego_proshli do
     begin  {n 102}
      if (students[n].name=student.name) and
          (students[n].familiya=student.familiya) then
          begin
           messagedlg('Извините, вы уже проходили этот тест отойдите от пожалуйста от компьютера',mtinformation,[mbok],0);
           proverka:=true;
           exit;
          end;
     end;   {k 102}
  end    {k 103}
   else  proverka:=false;
   closefile(file_db);
end;
программирование вне форума Ответить с цитированием
Старый 22.11.2013, 23:05   #3
программирование
Форумчанин
 
Регистрация: 22.04.2013
Сообщений: 162
По умолчанию продолжение программы

Код:
procedure tform1.otvetkeypress(sender:tobject;var key:char);
begin
  if  key=#13 then
   otvetgotov.Click;     
end;
procedure tform1.zapis_v_data_base;
var file_db:textfile;
begin
 if fileexists(put_k_data_base+rasshirenie_file_data_base) then
  begin
   assignfile(file_db,put_k_data_base+rasshirenie_file_data_base);
   append(file_db);
  end
  else
   begin
    assignfile(file_db,put_k_data_base+rasshirenie_file_data_base);
    rewrite(file_db);
   end;
// writeln(file_db,'Имя '+student.name);
// writeln(file_db,'Фамилия '+student.familiya);
// writeln(file_db,'Группа '+student.group);
// writeln(file_db,'Дата '+datetostr(date));
// writeln(file_db,'Время '+timetostr(time));
// writeln(file_db,'Результат '+student.resultat);
 //writeln(file_db,'        ');
{ flush(file_db);}
 closefile(file_db);
end;
function tform1.resultat:integer;
var i,kol_vo_pravilnyh:integer;
begin
  kol_vo_pravilnyh:=0;
  for i:=1 to voprosov_v_teste do
   begin
     if form1.otvety_na_voprosy[i] then
       kol_vo_pravilnyh:=kol_vo_pravilnyh+1;
   end;
   resultat:=round(10*(kol_vo_pravilnyh/voprosov_v_teste));
end;
procedure tform1.chtenie_voprosov;
label 1,2;
var
    schyotchik,i,j:integer;
    str:string;
    b1,b2:boolean;
begin
 str:=put_k_voprosam1;
 b1:=FileExists(put_k_voprosam1);
 b2:=FileExists(put_k_voprosam2);
   str:=put_k_voprosam1;
// if (b1) and (b2 )then
// begin
//   str:=put_k_voprosam1;
//  end;
// if (b1) and (not (b2))then
//  begin
//   str:=put_k_voprosam1;
 // end;
// if (b2) and (not (b1)) then
//  begin
//   str:=put_k_voprosam2;
 // end;
// if (not (b1))and(not (b2)) then
//  begin
   //showmessage('Не найден файл с вопросами'+str);
   //halt;
    //str:=put_k_voprosam1;
//  end;
 schyotchik:=0;
// if opendialog1.Execute then
if combobox1.ItemIndex=0 then assignfile(file_s_voprosami,'d:\part1.txt');
 //reset(file_s_voprosami);
 if combobox1.ItemIndex=1 then assignfile(file_s_voprosami,'d:\part2.txt');
 reset(file_s_voprosami);
 while not(seekeof(file_s_voprosami)) do
   begin {n 001}
   schyotchik:=schyotchik+1;
   i:=0;
    repeat
    i:=i+1;
   readln(file_s_voprosami,vse_voprosy[schyotchik].vopros[i]);
   // MessageDlg(vse_voprosy[schyotchik].vopros[i],mterror,[mbok],0);
    until  vse_voprosy[schyotchik].vopros[i]='end of question';
     vse_voprosy[schyotchik].vopros[i]:='';
           for i:=1 to max_otvetov-1 do
            begin  {n 003}
             readln(file_s_voprosami,vse_voprosy[schyotchik].otvety[i]);
             if vse_voprosy[schyotchik].otvety[i]='end' then
               begin  {n 004}
                 for j:=i to max_otvetov do
                 vse_voprosy[schyotchik].otvety[j]:=kluch;
                goto 1;
               end;   {k 004}
            end;    {k 003}
 1:end;  {k 001} 2:
 closefile(file_s_voprosami);
 schitano_voprosov:=schyotchik;   showmessage('Question='+inttostr(schyotchik)+inttostr(voprosov_v_teste));
 //if schitano_voprosov<voprosov_v_teste then
 // begin
 // MessageDlg('Количество вопросов в тесте превышает количество вопросов в базе данных пожалуйста обновите Базу Данных',mterror,[mbok],0);
 //  exit;
 // end;
 // except
//  MessageDlg('Неверен формат Базы Данных'+str,mterror,[mbok],0);
 //  end;
end;
procedure tform1.vivod_poley_voprosa;
var sam_vopros:string;
    i:integer;
begin
   labelvopros.Visible:=true;
   vopros.Visible:=true;
   otvet.Visible:=true;
   labelotvet.Visible:=true;
   otvetgotov.Visible:=true;
   sam_vopros:='';
    for i:=1 to strok_v_voprose do
     sam_vopros:=sam_vopros+vse_voprosy[nomer].vopros[i];
   if length(sam_vopros)>7*109 then
     begin
      //vopros.ScrollBars:=ssVertical;
    vopros.Height:=100
     end
       else
        begin
         //vopros.ScrollBars:=ssnone;
         vopros.Height:=17*(trunc(length(sam_vopros)/72)+1);
        end;                   
end;
программирование вне форума Ответить с цитированием
Старый 22.11.2013, 23:06   #4
программирование
Форумчанин
 
Регистрация: 22.04.2013
Сообщений: 162
По умолчанию продолжение программы....

Код:
procedure tform1.vivod_voprosa;
label 1;
var i,j:integer;
begin
 form1.vopros.Caption:='';
 randomize;
 labelvopros.Caption:='Вопрос №'+inttostr(tek_vopros);
1:nomer:=trunc(random(schitano_voprosov))+1;
 if tek_vopros>=1 then
 for i:=1 to tek_vopros do
  begin
   if (ispol_voprosy[i]=nomer) or (nomer>schitano_voprosov) then goto 1;
  end
   else nomer:=trunc(schitano_voprosov)+1;
 ispol_voprosy[tek_vopros]:=nomer;
 form1.vivod_poley_voprosa;
 j:=1;
  for i:=1 to strok_v_voprose do
   begin // n 301
  for j:=1 to  Trunc(length(vse_voprosy[nomer].vopros[i])/bukv_stroke_voprosa)+1 do
   if not((i=1) and (j=1))  then
  vopros.Caption:=vopros.Caption+#13+copy(vse_voprosy[nomer].vopros[i],(j-1)*bukv_stroke_voprosa+1,bukv_stroke_voprosa)
                            else
  vopros.Caption:=vopros.Caption+copy(vse_voprosy[nomer].vopros[i],(j-1)*bukv_stroke_voprosa-1,bukv_stroke_voprosa)
   end; // k 301
 otvet.Text:='';
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
close;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
panel2.Visible:=true;
panel1.Visible:=false;
end;
procedure TForm1.Button3Click(Sender: TObject);
 var b:integer;
begin
 // form2.Show;
 //    showmessage(form2.name.Text);
// if b=1 then exit
   //                           else
   //                            begin
    //                           showmessage(form2.name.Text);
      //   student.name:=form2.name.Text;
     //    student.familiya:=form2.Familiya.Text;
     //    student.group:=form2.gruppa.Text;
   //      if form1.proverka then close;

  //                             end;
// screen.Cursor:=crappstart;
 form1.chtenie_voprosov;
 screen.Cursor:=crdefault;
 tek_vopros:=1;
 form1.vivod_voprosa;
 otvet.SetFocus;
 N5.Enabled:=true;
end;
procedure TForm1.Button4Click(Sender: TObject);
var i:integer;
begin
for i:=1 to max_otvetov-1 do
  begin    //n 200
   if otvet.Text=vse_voprosy[nomer].otvety[i] then
     begin    //n 201
      messagedlg('Ответ правильный',mtconfirmation,[mbok],0);
      otvety_na_voprosy[tek_vopros]:=true;
      tek_vopros:=tek_vopros+1;
      otvet.SetFocus;
      if tek_vopros=voprosov_v_teste+1 then
  begin  //n 202
   messagedlg('Вы закончили тест по предмету ОС ваша оценка '+inttostr(form1.resultat),mtconfirmation,[mbok],0);
   student.resultat:=inttostr(form1.resultat);
   form1.zapis_v_data_base;
   close;
  end;  //k 202
  form1.vivod_voprosa;
      exit;
     end;   // k 201
  end;    // k 200
 if not(otvety_na_voprosy[tek_vopros]) then
  begin   //n 203
   messagedlg('Ответ неправильный,' +vse_voprosy[nomer].otvety[1],mtconfirmation,[mbok],0);
   otvety_na_voprosy[tek_vopros]:=false;
   tek_vopros:=tek_vopros+1;
   if tek_vopros=voprosov_v_teste+1 then
  begin    //n 204
   messagedlg('Вы закончили тест по предмету ОС ваша оценка '+inttostr(form1.resultat),mtconfirmation,[mbok],0);
    student.resultat:=inttostr(form1.resultat);
    form1.zapis_v_data_base;
    close;
  end;     // k 204
  form1.vivod_voprosa;
  end;     // k 203
 otvet.SetFocus;
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
close;
end;
procedure TForm1.FormCreate(Sender: TObject);
var i,j:integer;
begin
 for j:=1 to max_voprosov do
  for i:=1 to strok_v_voprose do
   begin
   vse_voprosy[j].vopros[i]:='';
   end;
 for i:=1 to voprosov_v_teste do
 begin
   otvety_na_voprosy[i]:=false;
   ispol_voprosy[i]:=0;
 end;
 if fileexists(put_k_parolu) then
   begin
   end;
end;
procedure tform1.n7click(sender:tobject);
begin
 aboutbox.ShowModal;
end;
end.
программирование вне форума Ответить с цитированием
Старый 22.11.2013, 23:11   #5
программирование
Форумчанин
 
Регистрация: 22.04.2013
Сообщений: 162
Радость код программы, написан в комментариях выше

все три комментария, которые написаны выше - имеют код одной программы. (очередность соблюдена).
программирование вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вставить кнопки в программу Делфи 7 (есть правильный код программы) программирование Помощь студентам 0 06.10.2013 19:50
проверяет пароль при открытие формы, движение рисунка Делфи 7 (есть код программы. нужен другой вариант) программирование Помощь студентам 3 29.09.2013 15:47
несколько легких вопрос с баз данных (у вопросов есть варианты ответов) программирование Помощь студентам 0 20.09.2013 01:01