1 / 1 / 1
Регистрация: 17.09.2013
Сообщений: 130
1

Провести тестирование по предмету, который зависит от группы студента

22.11.2013, 23:19. Показов 1210. Ответов 1
Метки нет (Все метки)

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

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

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


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


заранее огромное спасибо всем за помощь.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.11.2013, 23:19
Ответы с готовыми решениями:

Есть масса каждого студента группы. Вычислить среднюю массу студента в группе
Блок-схема и программа Есть масса каждого студента группы. Вычислить среднюю массу студента в...

Алгоритм сжатия RLE. От этого зависит зачет по предмету)
Напишите программу, которая: 1. будет считывать с клавиатуры раздельно (через Enter) вводимую ...

По выбору студента и предмету вывести оценку
Помогите пожалуйста мне нужно что бы я выбрав любого студента (из comboBox)и выбрав предмет он мне...

Средний балл каждого студента по каждому предмету
Пользователь последовательно вводит оценки студентов по предметам. Кол-во студентов и предметов...

1
1 / 1 / 1
Регистрация: 17.09.2013
Сообщений: 130
22.11.2013, 23:23  [ТС] 2
Лучший ответ Сообщение было отмечено ada lavleis как решение

Решение

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
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;
Добавлено через 54 секунды
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
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;
Добавлено через 48 секунд
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
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.
Добавлено через 1 минуту
в комментарии, который находится выше написан код одной программы в правильном порядке.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.11.2013, 23:23
Помогаю со студенческими работами здесь

Вывести на экран книги у заданного студента по заданному предмету
Задумка: Необходимо вывести на экран книги у заданного студента по заданному предмету: Полностью...

Подсчитать среднее время подготовки студента к каждому предмету
Читая данные из файла и используя массив структур решить следующую задачу. Файл содержит сведения о...

напишите функцию, которая спрашивает у пользователя ФИО студента из группы (список группы составлен раньше) и выдает следующие данные о нем: год рожде
Помогите пожалуйста тошо вообще не пойму как делать напишите функцию, которая спрашивает у...

Вычислить средний балл, полученный каждым студентом заданной группы, и средний балл этой группы, по каждому предмету
Пытаюсь сделать первую часть задания и не получается из-за того что владею навыками vba не так...

Тестирование для студента
Добрый день господа! Есть задача: написать программу для тестирования студентов. Программа должна...

Сексуальность зависит от группы крови
Известно, что на сексуальность человека влияет наличие в его крови половых гормонов. Ученые...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru