4. Инструкция оператору

Разработанная программа представляет собой исполняемый файл Tester.exe размером 422912 байт. В программе выполняется тестирование пользователя основам языка Pascal.

После запуска программы появляется окно, изображенное на рисунке 4.1.

Рисунок 4.1 – Окно авторизации

В этом окне учащийся должен задать свою фамилию и группу, после чего нажать на кнопку с надписью «НАЧАТЬ». После этого появится вторая форма с тестовыми вопросами, изображенная на рисунке 4.2. Заметим, что порядок вопросов при каждом новом запуске случайный, поэтому содержание поля вопроса и ответом может быть иным.

Рисунок 4.2 – Окно тестирования


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

После этого следует нажать на кнопку .

Появится новый вопрос, ответ на который реализуется аналогичным способом. Если были пройдены все вопросы, выводится сообщение с оценкой, которая пропорциональна количеству правильных ответов. Все ответы правильные – оценка равна 12. Все ответы неправильные – оценка равна 0. Пример окна с сообщением об оценке приведено на рисунке 4.3.

Рисунок 4.3

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

Протокол с вариантами ответов, которые были введены учащимся заносятся в текстовый файл на жестком диске с именем «<фамилия>+<группа>.txt» в том же каталоге, где находится исполняемый файл. Пример протокола с правильными вариантами ответов приведен в приложении В.


Выводы

Данный курсовой проект был выполнен в полном соответствии поставленному заданию и отлажен в среде DELPHI 7.0. В ходе выполнения курсовой работы была разработана программа для тестирования студентов по программированию с графическим интерфейсом. База содержит 20 вопросов по основам языка Pascal. Программа может бать использована в образовательных целях.

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

В результате выполнения данной курсовой работы, я убедилась в широких возможностях языка программирования Delphi 7.


Перечень ссылок

1.  Валентин Озеров «Советы по Delphi», 1999

2.  Зуев Е.А. Программирование на языке Turbo Pascal 6. 0,7.0. – М.: Радио и связь, Веста, 1993.

3.  Фаронов В.В. Turbo Pascal 7.0. Начальный курс. – М.: Нолидж, 2000.

4.  Фаронов В.В. «DELPHI. Программирование на языке высокого уровня». – Питер, 2005.

5.  Дятченко Д.А. Методические указания к выполнению курсовой работы по дисциплине «Программирование и алгоритмическе языки» – Северодонецк, 2005.


 
Приложение А

Алгоритм программы

 

Рисунок А.1 – Обработка событий экранных форм программы


Рисунок А.2 – Алгоритм процедуры BitBtn1Click


Приложение Б

Модуль формы авторизации

1.  unit Unit2;

2.  interface

3.  uses

4.  Windows, Messages, SysUtils, Variants, Classes, Graphics,

5.  Controls, Forms, Dialogs, StdCtrls, Buttons;

6.  type

7.  TFormAvto = class(TForm)

8.  Label1: TLabel;

9.  Label2: TLabel;

10.  Label3: TLabel;

11.  EFam: TEdit;

12.  EGroup: TEdit;

13.  BitBtnStart: TBitBtn;

14.  procedure BitBtnStartClick (Sender: TObject);

15.  private

16.  {Private declarations}

17.  public

18.  {Public declarations}

19.  end;

20.  var

21.  FormAvto: TFormAvto;

22. 

23.  implementation

24.  uses Unit1;

25.  {$R *.dfm}

26.  procedure TFormAvto. BitBtnStartClick (Sender: TObject);

27.  begin

28.  SFam:=EFam. Text+ ' ';

29.  SGr:=EGroup. Text;

30.  hide;

31.  FormTest. Show;

32.  end;

33.  end.

Модуль формы тестирования

34.  unit Unit1;

35.  interface

36.  uses

37.  Windows, Messages, SysUtils, Variants, Classes, Graphics,

38.  Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Buttons;

39.  type

40.  TFormTest = class(TForm)

41.  BitBtn1: TBitBtn;

42.  Label1: TLabel;

43.  LbNom: TLabel;

44.  StaticText1: TStaticText;

45.  RGroup1: TRadioGroup;

46.  BNewTest: TButton;

47.  procedure FormCreate (Sender: TObject);

48.  procedure BitBtn1Click (Sender: TObject);

49.  procedure BNewTestClick (Sender: TObject);

50.  procedure FormClose (Sender: TObject; var Action: TCloseAction);

51.  procedure FormActivate (Sender: TObject);

52.  private

53.  {Private declarations}

54.  public

55.  {Public declarations}

56.  end;

57.  TTest = record

58.  vopr:string; // вопрос

59.  ans:array [0..3] of string; // ответы

60.  korans:byte; // номер правильного ответа

61.  end;

62.  CVoprosi = class

63.  test: array of TTest;

64.  procedure AddTest (_vopr,_ans0,_ans1,_ans2,_ans3:string;_korans:byte);

65.  procedure Mix;

66.  end;

67.  var

68.  SFam, Sgr:string; // фамилия и группа учащегося

69.  fName:string;

70.  f: TEXTFILE;

71.  FormTest: TFormTest;

72.  BasaV:CVoprosi;

73.  CurN:byte; // номер текущего вопроса

74.  Ratio:byte; // количество правильных ответов

75.  implementation

76.  uses Unit2;

77.  {$R *.dfm}

78.   // метод для добавления нового теста в базу

79.  Procedure CVoprosi. AddTest (_vopr,_ans0,_ans1,_ans2,_ans3:string; _korans:byte);

80.  var ln:integer;

81.  begin

82.  ln:=Length(test);

83.  SetLength (test, ln+1);

84.  test[ln].vopr:= _vopr;

85.  test[ln].ans[0]:= _ans0;

86.  test[ln].ans[1]:= _ans1;

87.  test[ln].ans[2]:= _ans2;

88.  test[ln].ans[3]:= _ans3;

89.  test[ln].korans:= _korans;

90.  end;

91.   // перемешивание базы вопросов

92.  Procedure CVoprosi. Mix;

93.  var

94.  i, i1, i2, ln:byte;

95.  TestTmp:TTest;

96.  begin

97.  ln:=Length(test);

98.  for i:=1 to 20 do

99.  begin

100.  i1:=Random(ln); // случайный №1

101.  i2:=Random(ln); // случайный №2

102.   // меняем местами вопросы №1 и №2

103.  TestTmp:=test[i1];

104.  test[i1]:=test[i2];

105.  test[i2]:=TestTmp;

106.  end;

107.  end;

108.  procedure TFormTest. FormCreate (Sender: TObject);

109.  begin

110.   // формирование базы вопросов

111.  BasaV:=CVoprosi. Create;

112.  BasaV. AddTest ('Что выведет следующая программа?'+#10+#13+'var i, sum:sіnglе;'+#10+#13+

113.  'bеgin'+#10+'sum:=1;'+#10+

114.  ' for і:=2 to 10 dо sum:=sum+i;'+#10+

115.  ' WrіtеLn(sum);'+#10+'еnd.',

116.  '10', '55', '9', 'произойдет ошибка компиляции', 3);

117.  BasaV. AddTest ('Какое значение вернет выражение?'+#10+' chr (ord(«A»)+3)',

118.  'A3', '68', ' «D» ', ' «C» ', 2);

119.  BasaV. AddTest ('С чего не может начинаться идентификатор?',

120.  'с малой латинской буквы', 'с большой латинской буквы', 'с подчеркивания', 'с цифры', 3);

121.  BasaV. AddTest ('Что из нижеперечисленного может быть использовано как идентификатор?',

122.  'ord', 'for1', 'cardinal', 'C#21', 1);

123.  BasaV. AddTest ('Какой из приведенных типов целочисленный?',

124.  'real', 'byte', 'double', 'single', 1);

125.  BasaV. AddTest ('Какой из приведенных типов можно использовать для хранения дробных чисел?',

126.  'byte', 'word', 'double', 'integer', 2);

127.  BasaV. AddTest ('Какая из приведенных инструкций является циклом с заданным числом повторений?',

128.  'while <…> do ', 'for <…> do ', 'repeat until <…>', 'if <> then ', 1);

129.  BasaV. AddTest ('Какая из приведенных инструкций является циклом с предусловием?',

130.  'for <…> do ', 'while <…> do ', 'repeat until <…>', 'if <> then ', 1);

131.  BasaV. AddTest ('Какая из приведенных инструкций является циклом с постусловием?',

132.  'for <…> do ', 'while <…> do ', 'repeat until <…>', 'if <> then ', 2);

133.  BasaV. AddTest ('Какая из приведенных инструкций является инструкцией ветвления?',

134.  'for <…> do ', 'while <…> do ', 'repeat until <…>', 'if <> then ', 3);

135.  BasaV. AddTest ('Какая из приведенных инструкций целочисленного деления?',

136.  'MOD', 'DIV', '/', 'ODD', 1);

137.  BasaV. AddTest ('Какая из приведенных инструкций – остаток от деления?',

138.  'MOD', 'DIV', '/', 'ODD', 0);

139.  BasaV. AddTest ('Какая из приведенных инструкций вещественного деления?',

140.  'MOD', 'DIV', '/', 'ODD', 2);

141.  BasaV. AddTest ('Какая из приведенных инструкций проверка на четность?',

142.  'MOD', 'DIV', '/', 'ODD', 3);

143.  BasaV. AddTest ('Укажите функцию округления по правилам арифметики:',

144.  'TRUNC()', 'FRAC()', 'ROUND()', 'INT()', 2);

145.  BasaV. AddTest ('Укажите функцию выделения дробной части числа:',

146.  'TRUNC()', 'FRAC()', 'ROUND()', 'INT()', 1);

147.  BasaV. AddTest ('Укажите функцию округления к нулю с целочисленным результатом:',

148.  'TRUNC()', 'FRAC()', 'ROUND()', 'INT()', 0);

149.  BasaV. AddTest ('Укажите функцию округления к нулю с вещественным результатом:',

150.  'TRUNC()', 'FRAC()', 'ROUND()', 'INT()', 3);

151.  BasaV. AddTest ('Укажите функцию открытия существующего файла:',

152.  'ASSIGNFILE()', 'REWRITE()', 'RESET()', 'CLOSEFILE()', 2);

153.  BasaV. AddTest ('Укажите функцию создания нового файла и открытия его для записи:',

154.  'ASSIGNFILE()', 'REWRITE()', 'RESET()', 'CLOSEFILE()', 1);

155.  randomize;

156.  end;

157.   // ***************************

158.   // активизация формы с тестами

159.   // ***************************

160.  procedure TFormTest. FormActivate (Sender: TObject);

161.  var ln:integer;

162.  begin

163.  fName:=SFam+' ('+SGr+')'+'.txt';

164.  assignfile (f, fName);

165.  rewrite(f);

166.  BNewTest. Visible:=false;

167.   // перемешивание базы вопросов

168.  BasaV. Mix;

169.   // количество правильных ответов

170.  Ratio:=0;

171.   // текущий вопрос 0

172.  curN:=0;

173.   // отображаем первый вопрос на форме

174.  StaticText1. Caption:=BasaV.test[curN].vopr;

175.  RGroup1. Items[0]:=BasaV.test[curN].ans[0];

176.  RGroup1. Items[1]:=BasaV.test[curN].ans[1];

177.  RGroup1. Items[2]:=BasaV.test[curN].ans[2];

178.  RGroup1. Items[3]:=BasaV.test[curN].ans[3];

179.  RGroup1. ItemIndex:=0;

180.  Ln:=Length (BasaV.test);

181.  LbNom. Caption:= IntToStr (curN+1) + ' из ' + IntToStr(Ln);

182.  end;

183.   // ***************************

184.   // обработчик нажатия на кнопку «Принять ответ»

185.   // ***************************

186.  procedure TFormTest. BitBtn1Click (Sender: TObject);

187.  var

188.  sRes, S:string;

189.  ln:byte;

190.  begin

191.   // проверка ответа

192.  Ln:=Length (BasaV.test);

193.  if (CurN<ln) then

194.  begin

195.   // записываем лог ответов в файл

196.  S:= BasaV.test[curN].vopr + ' (ответил: – '+

197.  BasaV.test[curN].ans [RGroup1. ItemIndex]+')';

198.  writeln (f, S);

199.   // проверяем, правильно ли был сделан ответ

200.  if (RGroup1. ItemIndex = BasaV.test[curN].Korans) then

201.  Ratio:= Ratio +1;

202.  CurN:=CurN+1;

203.  if CurN=ln then // была последняя запись

204.  begin

205.   // сообщение с результатом

206.  sRes:= 'Итоговая оценка: '+FloatToStr (Ratio*12/ln);

207.   // запись результа в файл

208.  writeln (f, Sfam+Sgr);

209.  writeln (f, sRes);

210.  CloseFile(f);

211.  end;

212.  end;

213.  if CurN>=ln then

214.  begin

215.  sRes:= 'Итоговая оценка: '+FloatToStr (Ratio*12/ln);

216.  Application. MessageBox (PAnsiChar(sRes), PAnsiChar (SFam+Sgr));

217.  BNewtest. Visible:=true;

218.  exit;

219.  end;

220.   // отображаем следующий вопрос на форме

221.  StaticText1. Caption:=BasaV.test[curN].vopr;

222.  RGroup1. Items[0]:=BasaV.test[curN].ans[0];

223.  RGroup1. Items[1]:=BasaV.test[curN].ans[1];

224.  RGroup1. Items[2]:=BasaV.test[curN].ans[2];

225.  RGroup1. Items[3]:=BasaV.test[curN].ans[3];

226.  RGroup1. ItemIndex:=0;

227.  LbNom. Caption:= IntToStr (curN+1) + ' из ' + IntToStr(Ln);

228.  end;

229.   // ***************************

230.   // закрыте формы с тестами

231.   // ***************************

232.  procedure TFormTest.BNewTestClick (Sender: TObject);

233.  begin

234.  Close;

235.  end;

236.   // ***************************

237.   // активизация формы с авторизации

238.   // ***************************

239.  procedure TFormTest. FormClose (Sender: TObject; var Action: TCloseAction);

240.  begin

241.  FormAvto. Show;

242.  end;

243. 

244.  end.


Приложение В

Моя программа выполняет тестирование студентов по программированию. При открытии программы появляется окно (рис В.1), тестирования в котором нужно вести Фамилию Имя и Группу. Тестирование состоит из 20 вопросов, в каждом вопросе четыре варианта ответа необходимо выбрать один правильный (рис В.2). В конце тестирования появляется окно в котором выводится бал за количество ответов по 12 бальной системе (рис В.3).

Рисунок В.1 – Окно авторизации

Рисунок В.2 – Внешний вид формы FormTest


Рисунок В.3 – Итог

 


Информация о работе «Разработка программы с помощью языка программирования Delphi»
Раздел: Информатика, программирование
Количество знаков с пробелами: 30480
Количество таблиц: 4
Количество изображений: 10

Похожие работы

Скачать
36935
4
14

... курс. - М.: Нолидж, 2000. 4.  Фаронов В.В. «DELPHI. Программирование на языке высокого уровня». – Питер, 2005. 5.  Дятченко Д.А. Методические указания к выполнению курсовой работы по дисциплине «Программирование и алгоритмические языки»– Северодонецк, 2005.   ПРИЛОЖЕНИЕ А Алгоритм программы Рисунок А.1 – Обработка событий главной формы программы Рисунок А.2 – ...

Скачать
14945
0
7

... к сожалению, обратное утверждение не верно. C++ Builder содержит инструменты, которые при помощи drag-and-drop действительно делают разработку визуальной, упрощает программирование благодаря встроенному WYSIWYG - редактору интерфейса и пр. Delphi — язык программирования, который используется в одноимённой среде разработки. Сначала язык назывался Object Pascal. Начиная со среды разработки Delphi ...

Скачать
44688
14
5

... . И хотя, используя недокументированные возможности и определённые ухищрения, всё это можно реализовать и на VB; пользоваться этими трюками гораздо сложнее, чем, например, на Delphi. 4. ПРАКТИЧЕСКАЯ РЕАЛИЗАЦИЯ ЗАДАЧ С ИСПОЛЬЗОВАНИЕМ ЯЗЫКА ПРОГРАММИРОВАНИЯ DELPHI   4.1 Задача 1. Примитивный калькулятор   1. Войдите в среду Delphi, дважды щелкнув мышью на пиктограмму Delphi или через меню “ ...

Скачать
20594
4
8

... из 1 откомпилированного exe файла – Метод Симпсона.exe и rar-архива содержащего все компоненты программы написанных на языке программирования – Delphi 7.0. 1.         Запуск программы осуществляется путем открытия файла Метод Симпсона .exe. Рис 1.   2.         Ввод значений производится следующим образом: Рис 2.   Ввод функции f(x) – в данное ...

0 комментариев


Наверх