2.6. Принцип построения комплекса технических средств
Для запуска основной части программы, это файл Project1.exe системные требования не высоки:
- процессор I486;
- 16 Мб оперативной памяти;
- 1 Мб или меньше видео памяти;
- Объём дискового пространства не более 5 Мб;
- Операционная система Windows 9x;
А для компиляции и отладки самого программного кода системные требования возрастают, т.к. необходимо будет устанавливать Delphi 6, которой для запуска требуется:
- Процессор Pentium 166 и выше;
- 32 Мб оперативной памяти и выше;
- 4 Мб видео памяти;
- Объём дискового пространства, в зависимости от установки от 300 и более;
- Windows 98
Заключение
В настоящее время компьютеры внедряются во все отрасли человеческой деятельности. Они помогают автоматизировать процессы, на выполнение которых требуется много времени. В этом курсовом проекте я представил программу для тестирования, которая может использоваться в любой сфере.
Эта программа гораздо лучше, чем другие аналогичные программы, благодаря возможности собственноручного редактирования и добавления файла вопросов, что даёт определённое преимущество по сравнению с другими программами тестирования, при использовании как новых, так и устаревших ПК, файл вопросов можно написать в текстовом редакторе, гораздо быстрее, чем установить Delphi и редактировать сам программный код.
Список литературы
1. Архангельский А.Я. Программирование в Delphi 5. - М.: Нолидж, 2000
2. Архангельский А.Я. Справочное пособие по Delphi 5. - М.: Нолидж, 2000.
3. Баас Р. и другие. Delphi 5. Для пользователя. - Киев, 2000.
4. Бобровский В.А. Delphi 5. Начальный курс. - СПб., 1998.
5. Бобровский В.А. Delphi 5. Учебный курс. - СПб., 2000.
6. Пачек Ксавье. Программирование в Delphi 5. Руководство разработчика. - М.: Нолидж, 2000.
7. Рейсдорф Кент. Delphi 4. Освой самостоятельно. - М.:Бином, 1999.
8. Свиридов С. и другие. Создание мультимедийных приложений. - М.: Нолидж, 2000.
9. Фаранов В.В. Учебное пособие по Delphi 4. - СПб., 1999.
10. Эбнер Михаэль. Delphi 5. Руководство разработчика. - Киев, 2000.
Приложение 1. Листинг программы
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Gauges, Menus, jpeg;
type
TForm1 = class(TForm)
Panel1: TPanel;
Button1: TButton;
Image1: TImage;
Label5: TLabel;
Label1: TLabel;
Gauge1: TGauge;
MainMenu1: TMainMenu;
File1: TMenuItem;
Save1: TMenuItem;
exit1: TMenuItem;
Help2: TMenuItem;
About1: TMenuItem;
Contents1: TMenuItem;
SaveDialog1: TSaveDialog;
Memo1: TMemo;
N1: TMenuItem;
Timer1: TTimer;
Label2: TLabel;
procedure FormActivate(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure SelectorClick(Sender: TObject);
Продолжение приложения 1
procedure About1Click(Sender: TObject);
procedure Save1Click(Sender: TObject);
procedure Contents1Click(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
x:Real;
implementation
uses Unit2, Unit3;
const
N_ANSWERS=4;
N_LEVEL=4;
var
answer: array[1..N_ANSWERS] of Tlabel; //альтернативные ответы
selector: array[1..N_ANSWERS+1] of TRadioButton;// кнопки выбора ответа
f:TextFile;
fn:string; // имя файла вопросов
level:array[1..N_LEVEL] of integer;// сумма, соотв. уровню
mes:array[1..N_LEVEL] of string; // сообщение, соотв. уровню
score:array[1..N_ANSWERS] of integer; // очки за выбор ответа
summa:integer; // набрано очков
vopros:integer; // номер текущего вопроса
otv:integer; // номер выбранного ответа
// установка формы в исходное состояние
Продолжение приложения 1
Procedure ResetForm(frm:Tform1);
var
i:integer;
begin
form1.label2.visible:=false;
form1.Save1.Visible:=false;
form1.Gauge1.Visible:=false;
Form1.Memo1.Visible:=false;
for i:=1 to N_ANSWERS do
begin
answer[i].width:=frm.ClientWidth-answer[i].left-5;
answer[i].Visible:=false;
selector[i].Visible:=false;
end;
frm.Label5.width:=frm.ClientWidth-frm.Label5.left-5;
frm.Image1.Visible:=false;
end;
// Определение достигнутого уровня
procedure Itog(summa:integer;frm:TForm1);
var
i:integer;
buf:string;
begin
Form1.label2.visible:=true;
form1.Save1.Visible:=true;
Form1.Gauge1.Visible:=true;
Form1.Label5.font.size:=11;
buf:='';
str(summa:5,buf);
Продолжение приложения 1
buf:='Результаты вашего тестирования'+chr(13)+'Вы ответили правильно на:'+buf+' из 10 вопросов';
i:=1;
while (summa < level[i]) and (i<N_LEVEL) do
i:=i+1;
buf:=buf+chr(13)+mes[i];
frm.Label5.Caption:=buf;
if buf=',' then
buf:='Результаты вашего тестирования'+chr(13)+'Вы набрали:'+buf+'баллов';
Form1.memo1.Lines.Add(buf);
if summa=10 then // условие отображения диаграммы
Form1.gauge1.progress:=100;
if summa=9 then
Form1.Gauge1.Progress:=90;
if summa=8 then
Form1.gauge1.progress:=80;
if summa=7 then
Form1.gauge1.progress:=70;
if summa=6 then
Form1.gauge1.progress:=60;
if summa=5 then
Form1.gauge1.progress:=50;
if summa=4 then
Form1.gauge1.progress:=40;
if summa=3 then
Form1.gauge1.progress:=30;
if summa=2 then
Form1.gauge1.progress:=20;
if summa=1 then
Form1.gauge1.progress:=10;
Продолжение приложения 1
if summa=0 then
Form1.gauge1.progress:=0;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
i:integer;
begin
// создадим пять меток для вывода вопросов и альтернативных ответов
for i:=1 to N_ANSWERS do
begin
answer[i]:=TLabel.Create(self);
Form1.Label5.font.size:=12;
Form1.Label5.Font.name:='System';
answer[i].Parent:=Form1;
answer[i].Left:=36;
answer[i].WordWrap:=false;
end;
// создадим переключатели для выбора ответа
for i:=1 to N_ANSWERS+1 do
begin
selector[i]:=TRadioButton.Create(self);
selector[i].Parent:=self;
selector[i].Caption:='';
selector[i].Width:=17;
selector[i].Left:=16;
selector[i].Visible:=false;
selector[i].Enabled:=True;
selector[i].OnClick:=SelectorClick;
end;
Продолжение приложения 1
ResetForm(Form1);
end;
// вывод начальной инфы о тесте
procedure info(var f:TextFile;l:TLabel);
var
s,buf:string;
begin
buf:='';
repeat
readln(f,s);
if s[1] <> '.'
then buf:=buf+s+' ';
until s[1] ='.';
Form1.Label5.Caption:=buf;
end;
// прочитать информацию об оценках за тест
Procedure GetLevel(var f:TextFile);
var
i:integer;
buf:string;
begin // заполняем значения глобальных массивов
i:=1;
repeat
readln(f,buf);
if buf[1] <> '.' then begin
mes[i]:=buf;
readln(f,level[i]);
i:=i+1;
end;
until buf[1]='.';
Продолжение приложения 1
end;
// масштабирование иллюстрации
Procedure ScalePicture;
var
w,h:integer;
scaleX:real;
scaleY:real;
scale:real;
i:integer;
begin
// вычислит макс. допустимые размеры картинки
w:=Form1.ClientWidth-Form1.Label5.Left;
h:=Form1.ClientHeight
- Form1.Panel1.Height -5
- Form1.Label5.Top
- Form1.Label5.Height - 5;
for i:=1 to N_ANSWERS do
if answer[i].Caption <> ''
then h:=h-answer[i].Height-5;
// здесь определена максимально допустимая величина иллюстрации
// определить масштаб
if w>Form1.Image1.Picture.Width
then scaleX:=1
else scaleX:=w/Form1.Image1.Picture.Width;
if h>Form1.Image1.Picture.Height
then scaleY:=1
else scaleY:=h/Form1.Image1.Picture.Height;
if scaleY<ScaleX
then scale:=scaleY
else scale:=scaleX;
Продолжение приложения 1
// здесь масштаб определен
Form1.Image1.Top:=Form1.Label5.Top+Form1.Label5.Height+5;
Form1.Image1.Left:=Form1.Label5.Left;
Form1.Image1.Width:=Round(Form1.Image1.Picture.Width*scale);
Form1.Image1.Height:=Round(Form1.Image1.Picture.Height*scale);
Form1.Label5.Visible:=True;
end;
// вывод вопроса на экран
Procedure VoprosToScr(var f:TextFile;frm:TForm1;var vopros:integer);
var
i:integer;
code:integer;
s,buf:string;
ifn:string; // файл иллюстрации
begin
vopros:=vopros+1;
str(vopros:3,s);
frm.caption:='Вопрос'+s;
// Выведем текст вопроса
buf:='';
repeat
readln(f,s);
if (s[1] <> '.') and (s[1] <> '\')
then buf:=buf+s+' ';
until (s[1] ='.') or (s[1] ='\');
frm.Label5.caption:=buf;
if s[1] ='\'
then // к вопросу есть иллюстрация
Продолжение приложения 1
begin
frm.Image1.Tag:=1;
ifn:=copy(s,2,length(s));
try
frm.Image1.Picture.LoadFromFile(ifn);
except
on E:EFOpenError do
frm.Tag:=0;
end // try
end
else frm.Image1.Tag:=0;
// Читаем варианты ответов
for i:=1 to N_ANSWERS do
begin
answer[i].caption:='';
answer[i].Width:=frm.ClientWidth-Form1.Label5.Left-5;
end;
i:=1;
repeat
buf:='';
repeat // читаем текст варианта ответа
readln(f,s);
if (s[1]<>'.') and (s[1] <> ',')
then buf:=buf+s+' ';
until (s[1]=',')or(s[1]='.');
// прочитан альтеративный ответ
val(s[2],score[i],code);
answer[i].caption:=buf;
i:=i+1;
until s[1]='.';
Продолжение приложения 1
// здесь прочитана иллюстрация и альтернативные ответы
if Form1.Image1.Tag =1 // есть иллюстрация ?
then begin
ScalePicture;
Form1.Image1.Visible:=True;
end;
// вывод альтернативных ответов
i:=1;
while (answer[i].Caption <> '') and (i <= N_ANSWERS) do
begin
if i = 1
then
if frm.Image1.Tag =1
then answer[1].Top:=frm.Image1.Top+frm.Image1.Height+5
else answer[i].top:=frm.Label5.Top+frm.Label5.Height+5
else
answer[i].top:=answer[i-1].top+answer[i-1].Height+5;
selector[i].top:=answer[i].top;
selector[i].Visible:=true;
answer[i].Visible:=true;
i:=i+1;
end;
end;
{$R *.DFM}
procedure TForm1.FormActivate(Sender: TObject);
begin
ResetForm(Form1);
if ParamCount = 0
then
begin
Продолжение приложения 1
Label5.font.color:=clRed;
Label5.Font.Size:=12;
Label5.caption:='Не обнаружено файла вопросов теста.';
Button1.Caption:='Выход';
Button1.Tag:=2;
Button1.Enabled:=true;
end
else begin
fn:=ParamStr(1);
assignfile(f,fn);
{$I-}
reset(f);
{I+}
if IOResult=0 then
begin
Info(f,Label5);
GetLevel(f);
end;
summa:=0;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
case Button1.tag of
0: begin
Button1.caption:='Далее';
Button1.tag:=1;
Selector[N_ANSWERS+1].Checked:=true;
// вывод первого вопроса
Button1.Enabled:=false;
Продолжение приложения 1
ResetForm(Form1);
VoprosToScr(f,Form1,vopros)
end;
1: begin // вывод остальных вопросов
summa:=summa+score[otv];
Selector[N_ANSWERS+1].Checked:=true;
Button1.Enabled:=false;
ResetForm(Form1);
if not eof(f)
then VoprosToScr(f,Form1,vopros)
else
begin
closefile(f);
Button1.tag:=2;
Button1.caption:='Выход';
Button1.Enabled:=true;
Itog(summa,Form1);
end;
end;
2: begin // завершение работы
Form1.Close;
end;
end;
end;
// щёлчок на кнопке выбора ответа
Procedure TForm1.SelectorClick(Sender: TObject);
var
i:integer;
begin
i:=1;
Продолжение приложения 1
while Selector[i].Checked = false do
i:=i+1;
otv:=i;
Button1.enabled:=true;
end;
procedure TForm1.About1Click(Sender: TObject);
begin
AboutBox.ShowModal;
end;
procedure TForm1.Save1Click(Sender: TObject);
begin
savedialog1.Execute; // сохранение данных
memo1.Lines.SaveToFile(savedialog1.FileName);
end;
procedure TForm1.Contents1Click(Sender: TObject); //Вывод справки
const
HELP_TAB = 15;
INDEX_ACTIVE = 10;
CONTENTS_ACTIVE = 5;
Help_CONTENS = 10;
begin
Application.HelpCommand(HELP_TAB, INDEX_ACTIVE);
Application.HelpCommand(HELP_TAB, CONTENTS_ACTIVE);
end;
procedure TForm1.N1Click(Sender: TObject);
begin
Form1.Close;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Продолжение приложения 1
x:=x+0.1;
Label2.Left:=60+trunc(60*cos(x));
Label2.Top:=65-trunc(15*sin(x));
end;
end.
... и дальнейшего использования «Автоматизированной системы агентства недвижимости» на предприятии. 1.4 Постановка цели и подзадач автоматизации. Критерии достижения цели 1.4.1 Экономическая сущность задачи Экономической сущностью задачи автоматизации риэлтерской деятельности агентства недвижимости «Елена» является повышение результативности труда посредством автоматизации ...
... выбрать имя в ListBox’e и нажать кнопку «OK», после чего выбранное имя автоматически отобразиться в окне получателя сообщения. Рис. 1.10. Выбор адресата получателя Поиск компьютеров в локальной сети Приведём пример кода программы, реализующую поиск компьютеров в локальной сети Microsoft. procedure TForm4. Button1Click (Sender: TObject); var Q, BufferSize: DWord; R: THandle; Buf: ^ ...
... решения на каждый из вопросов, возможности пропустить некоторые вопросы, чтобы вернуться к ним и ответить на них в случае наличия времени и др. В результате выполнения данной курсовой работы, я убедилась в широких возможностях языка программирования Delphi 7. Перечень ссылок 1. Валентин Озеров «Советы по Delphi», 1999 2. Зуев Е.А. Программирование на языке Turbo Pascal 6. 0,7.0. – М.: ...
... курс. - М.: Нолидж, 2000. 4. Фаронов В.В. «DELPHI. Программирование на языке высокого уровня». – Питер, 2005. 5. Дятченко Д.А. Методические указания к выполнению курсовой работы по дисциплине «Программирование и алгоритмические языки»– Северодонецк, 2005. ПРИЛОЖЕНИЕ А Алгоритм программы Рисунок А.1 – Обработка событий главной формы программы Рисунок А.2 – ...
0 комментариев