Курсовая работа: Разработка программы с помощью языка программирования Delphi
Появится новый вопрос, ответ на который
реализуется аналогичным способом. Если были пройдены все вопросы, выводится
сообщение с оценкой, которая пропорциональна количеству правильных ответов. Все
ответы правильные – оценка равна 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 ('Какая из приведенных инструкций вещественного
деления?',
Страницы: 1, 2, 3, 4, 5 |