Разработка системы компьютерного контроля знаний по дисциплинам кафедры

Интерфейс серверной части программного комплекса и его настройка. Приложение - посредник между базой данных вопросов и ответов и клиентским приложением, предназначено для предоставления доступа зарегистрированным клиентам (авторизованным пользователям).

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 24.10.2010
Размер файла 6,1 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure SpeedButton1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form2: TForm2;

implementation

uses Unit1,IniFiles, Find_Komp;

{$R *.dfm}

procedure TForm2.FormCreate(Sender: TObject);

var Ini:TiniFile;

begin

Label3.Caption:=Form1.DCOMConnection1.ServerGUID;

Label5.Caption:=Form1.DCOMConnection1.ServerName;

if not FileExists(ChangeFileExt( Application.ExeName, '.INI')) then

begin

try

ini:=TiniFile.Create(ChangeFileExt( Application.ExeName, '.INI'));

Ini.WriteString('CONNECT', 'PCName','PC');

Ini.WriteBool('CONNECT', 'TYPE',false);

Edit1.Text:='PC';

RadioGroup1.ItemIndex:=0;

finally

Ini.Free

end;

end else

begin

try

ini:=TiniFile.Create(ChangeFileExt( Application.ExeName, '.INI'));

Edit1.Text:=Ini.ReadString('CONNECT', 'PCName','PC');

if Ini.ReadBool('CONNECT', 'TYPE',false)

then RadioGroup1.ItemIndex:=1

else RadioGroup1.ItemIndex:=0;

finally

Ini.Free

end;

end;

end;

procedure TForm2.Button1Click(Sender: TObject);

var Ini:TiniFile;

begin

if Edit1.Text='' then exit;

try

ini:=TiniFile.Create(ChangeFileExt( Application.ExeName, '.INI'));

Ini.WriteString('CONNECT', 'PCName',Edit1.Text);

Form1.DCOMConnection1.ComputerName:=Edit1.Text;

Form1.SocketConnection1.Host:=Edit1.Text;

if RadioGroup1.ItemIndex=1 then

begin

Ini.WriteBool('CONNECT', 'TYPE',True);

Form1.ConnectionBroker1.Connection:=Form1.SocketConnection1;

end

else begin

Ini.WriteBool('CONNECT', 'TYPE',False);

Form1.ConnectionBroker1.Connection:=Form1.DCOMConnection1;

end;

finally

Ini.Free

end;

close

end;

procedure TForm2.Button2Click(Sender: TObject);

begin

Close

end;

procedure TForm2.SpeedButton1Click(Sender: TObject);

begin

FindKompFrm:=TFindKompFrm.Create(Self);

FindKompFrm.ShowModal;

if FindKompFrm.ModalResult=mrOK then

Edit1.Text:=FindKompFrm.ShellTreeView1.Path;

FindKompFrm.Free

end;

end.

Вспомогательный модуль Find_Komp. Поиск компьютеров в локальной сети, для настройки соединения с сервером.

unit Find_Komp;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ComCtrls, ShellCtrls, StdCtrls;

type

TFindKompFrm = class(TForm)

GroupBox1: TGroupBox;

GroupBox2: TGroupBox;

Button1: TButton;

Button2: TButton;

ShellTreeView1: TShellTreeView;

private

{ Private declarations }

public

{ Public declarations }

end;

var

FindKompFrm: TFindKompFrm;

implementation

{$R *.dfm}

end.

Модуль FrmAbout. Выводит сообщение «О программе».

unit FrmAbout;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, RzLabel, StdCtrls;

type

TAboutFrm = class(TForm)

Label1: TLabel;

Button1: TButton;

Label2: TLabel;

RzURLLabel1: TRzURLLabel;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

AboutFrm: TAboutFrm;

implementation

{$R *.dfm}

procedure TAboutFrm.Button1Click(Sender: TObject);

begin

Close

end;

end.

Модули AddNewPredmet, DlgPredmet. Добавление и редактирование предметов и тем.

unit AddNewPredmet;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Grids, DBGrids, StdCtrls, ExtCtrls, DBCtrls, RzDBGrid, RzDBNav;

type

TAddPredmetFrm = class(TForm)

GroupBox1: TGroupBox;

GroupBox2: TGroupBox;

GroupBox3: TGroupBox;

GroupBox4: TGroupBox;

Button1: TButton;

Button2: TButton;

RzDBGrid1: TRzDBGrid;

RzDBGrid2: TRzDBGrid;

RzDBNavigator1: TRzDBNavigator;

RzDBNavigator2: TRzDBNavigator;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

AddPredmetFrm: TAddPredmetFrm;

implementation

uses Unit1;

{$R *.dfm}

procedure TAddPredmetFrm.Button1Click(Sender: TObject);

begin

with Form1 do

begin

if ClientDataSetPredmet.ApplyUpdates(-1)=0 then

ClientDataSetPredmet.refresh;

if ClientDataSetTema.ApplyUpdates(-1)=0 then

ClientDataSetTema.refresh;

end;

Close;

end;

procedure TAddPredmetFrm.Button2Click(Sender: TObject);

begin

with Form1 do

begin

if ClientDataSetPredmet.ApplyUpdates(-1)=0 then

ClientDataSetPredmet.refresh;

if ClientDataSetTema.ApplyUpdates(-1)=0 then

ClientDataSetTema.refresh;

end;

end;

end.

unit DlgPredmet;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TPredmetAdd = class(TForm)

GroupBox1: TGroupBox;

Edit1: TEdit;

Button1: TButton;

Button2: TButton;

Label1: TLabel;

Edit2: TEdit;

private

{ Private declarations }

public

{ Public declarations }

end;

var

PredmetAdd: TPredmetAdd;

implementation

{$R *.dfm}

end.

Модули AddNewVopros, NewVopros, DldVoprosAdd. Добавление, редактирование просмотр вопросов и вариантов ответов на них.

unit AddNewVopros;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, DBCtrls, Grids, DBGrids, ExtCtrls, Mask, RzDBGrid,

RzDBNav;

type

TVoprosOtvetListFrm = class(TForm)

GroupBox1: TGroupBox;

DBLookupComboBox1: TDBLookupComboBox;

GroupBox2: TGroupBox;

DBLookupComboBox2: TDBLookupComboBox;

GroupBox3: TGroupBox;

GroupBox4: TGroupBox;

DBMemo1: TDBMemo;

DBEdit1: TDBEdit;

Button1: TButton;

Label1: TLabel;

GroupBox5: TGroupBox;

RzDBGrid1: TRzDBGrid;

RzDBNavigator1: TRzDBNavigator;

Label2: TLabel;

Button2: TButton;

procedure FormShow(Sender: TObject);

procedure DBLookupComboBox1Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure RzDBNavigator1Click(Sender: TObject; Button: TNavigateBtn);

procedure Button2Click(Sender: TObject);

procedure RzDBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;

DataCol: Integer; Column: TColumn; State: TGridDrawState);

private

{ Private declarations }

public

{ Public declarations }

end;

var

VoprosOtvetListFrm: TVoprosOtvetListFrm;

implementation

uses Unit1,DldVoprosAdd,NewVopros;

{$R *.dfm}

procedure TVoprosOtvetListFrm.FormShow(Sender: TObject);

begin

DBLookupComboBox1.KeyValue:=Form1.ClientDataSetPredmet.FieldValues['PREDMET_ID'];

DBLookupComboBox2.KeyValue:=Form1.ClientDataSetTema.FieldValues['TEMA_ID'];

end;

procedure TVoprosOtvetListFrm.DBLookupComboBox1Click(Sender: TObject);

begin

DBLookupComboBox2.KeyValue:=Form1.ClientDataSetTema.FieldValues['TEMA_ID'];

end;

procedure TVoprosOtvetListFrm.Button1Click(Sender: TObject);

begin

Close

end;

procedure TVoprosOtvetListFrm.RzDBNavigator1Click(Sender: TObject;

Button: TNavigateBtn);

begin

if Button=nbInsert then

begin

NewVoprosFrm:=TNewVoprosFrm.Create(self);

NewVoprosFrm.ShowModal;

if NewVoprosFrm.ModalResult<>idCancel then

begin

DlgFrmAddVopros:=TDlgFrmAddVopros.Create(self);

DlgFrmAddVopros.ShowModal;

DlgFrmAddVopros.Free;

end;

NewVoprosFrm.Free;

Abort;

end;

end;

procedure TVoprosOtvetListFrm.Button2Click(Sender: TObject);

var IdP,IdT:Longint;

begin

IdP:=Form1.ClientDataSetPredmet.FieldValues['PREDMET_ID'];

IdT:=Form1.ClientDataSetTema.FieldValues['TEMA_ID'];

Form1.ClientDataSetPredmet.Close;

Form1.ClientDataSetTema.Close;

Form1.ClientDataSetVopros.Close;

Form1.ClientDataSetVariant.Close;

Form1.ClientDataSetPredmet.Open;

Form1.ClientDataSetTema.Open;

Form1.ClientDataSetVopros.Open;

Form1.ClientDataSetVariant.Open;

Form1.ClientDataSetPredmet.Locate('PREDMET_ID',IdP,[]);

Form1.ClientDataSetTema.Locate('TEMA_ID',IdT,[]);

DBLookupComboBox1.KeyValue:=Form1.ClientDataSetPredmet.FieldValues['PREDMET_ID'];

DBLookupComboBox2.KeyValue:=Form1.ClientDataSetTema.FieldValues['TEMA_ID'];

end;

procedure TVoprosOtvetListFrm.RzDBGrid1DrawColumnCell(Sender: TObject;

const Rect: TRect; DataCol: Integer; Column: TColumn;

State: TGridDrawState);

begin

if DataCol=1 then

begin

if (Sender as TDBGrid).Fields[DataCol].AsBoolean then

begin

(Sender as TDBGrid).Canvas.Brush.Color:=clLime;

(Sender as TDBGrid).Canvas.FillRect(Rect);

(Sender As TDBGrid).Canvas.TextOut(Rect.Left+5, Rect.Top,'Да');

end else

begin

(Sender as TDBGrid).Canvas.Brush.Color:=clWindow;

(Sender as TDBGrid).Canvas.FillRect(Rect);

(Sender As TDBGrid).Canvas.TextOut(Rect.Left+5, Rect.Top,'Нет');

end;

end;

end;

end.

unit NewVopros;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TNewVoprosFrm = class(TForm)

GroupBox1: TGroupBox;

Label1: TLabel;

Edit1: TEdit;

Button1: TButton;

Button2: TButton;

Edit2: TEdit;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

NewVoprosFrm: TNewVoprosFrm;

implementation

uses Unit1;

{$R *.dfm}

procedure TNewVoprosFrm.Button1Click(Sender: TObject);

var Sql,Sql1:String;

Predmet_ID:Integer;

Tema_ID:Integer;

begin

Predmet_ID:=Form1.ClientDataSetPredmet['PREDMET_ID'];

Tema_ID:=Form1.ClientDataSetTema['TEMA_ID'];

Sql:='INSERT INTO VOPROS (PREDMET_ID,TEMA_ID,VOPROS,TIME_OUT) ';

Sql1:=' VALUES( '+IntToStr(Predmet_ID)+','+

IntToStr(Tema_ID)+','

+''''+ Edit1.Text+''','

+Edit2.Text+ ' )';

Form1.ClientDataSetQuery.CommandText:=sql+sql1;

Form1.ClientDataSetQuery.Execute;

Form1.ClientDataSetVopros.Refresh;

end;

end.

unit DldVoprosAdd;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, DBCtrls, Grids, DBGrids, RzDBGrid, RzGrids;

type

TDlgFrmAddVopros = class(TForm)

GroupBox2: TGroupBox;

GroupBox3: TGroupBox;

Button1: TButton;

Button2: TButton;

RzStringGrid1: TRzStringGrid;

CheckBox1: TCheckBox;

procedure RzStringGrid1KeyUp(Sender: TObject; var Key: Word;

Shift: TShiftState);

procedure RzStringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;

var CanSelect: Boolean);

procedure FormCreate(Sender: TObject);

procedure CheckBox1Click(Sender: TObject);

procedure RzStringGrid1MouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

DlgFrmAddVopros: TDlgFrmAddVopros;

Col,Row:Integer;

Vopros_ID:Integer;

RowVerno:Integer;

implementation

uses Unit1, AddNewVopros;

{$R *.dfm}

procedure TDlgFrmAddVopros.RzStringGrid1KeyUp(Sender: TObject;

var Key: Word; Shift: TShiftState);

begin

if Key=VK_DOWN then

begin

if (RzStringGrid1.Cells[Col,Row]<>'')and

(Row+1=RzStringGrid1.RowCount) then

RzStringGrid1.RowCount:=RzStringGrid1.RowCount+1;

end;

if key=VK_UP then

begin

if (RzStringGrid1.Cells[Col,Row+1]='') And (RzStringGrid1.RowCount>2) then

RzStringGrid1.RowCount:=RzStringGrid1.RowCount-1;

end;

CheckBox1.OnClick:=Nil;

if RowVerno=Row then CheckBox1.Checked:=True

else CheckBox1.Checked:=False;

CheckBox1.OnClick:=CheckBox1Click;

end;

procedure TDlgFrmAddVopros.RzStringGrid1SelectCell(Sender: TObject; ACol,

ARow: Integer; var CanSelect: Boolean);

begin

Col:=ACol;Row:=ARow;

end;

procedure TDlgFrmAddVopros.FormCreate(Sender: TObject);

begin

RzStringGrid1.Cells[0,0]:='Вариант ответа';

Col:=0; Row:=1; RowVerno:=0;

Form1.ClientDataSetVopros.Last;

// Vopros_ID:=Form1.ClientDataSetVopros['VOPROS_ID'];

Form1.ClientDataSetVopros.Insert;

end;

procedure TDlgFrmAddVopros.CheckBox1Click(Sender: TObject);

begin

if RzStringGrid1.Cells[Col,Row]<>'' then

begin

if CheckBox1.Checked then RowVerno:=Row else RowVerno:=0;

end else

begin

CheckBox1.OnClick:=Nil;

CheckBox1.Checked:=not CheckBox1.Checked;

CheckBox1.OnClick:=CheckBox1Click;

end;

end;

procedure TDlgFrmAddVopros.RzStringGrid1MouseDown(Sender: TObject;

Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

begin

RzStringGrid1.MouseToCell(X,Y,Col,Row);

if Row=0 then exit;

CheckBox1.OnClick:=Nil;

if RowVerno=Row then CheckBox1.Checked:=True

else CheckBox1.Checked:=False;

CheckBox1.OnClick:=CheckBox1Click;

end;

procedure TDlgFrmAddVopros.Button1Click(Sender: TObject);

var //Vopros_ID:Integer;

Predmet_ID:Integer;

Tema_ID:Integer;

i,RowCount:Integer;

Sql,Sql1,Sql2:String;

begin

if RowVerno=0 then

begin

ShowMessage('Не задано ни одного верного ответа');

Exit;

end;

Form1.ClientDataSetQuery.CommandText:='SELECT * FROM VOPROS';

Form1.ClientDataSetQuery.Open;

Form1.ClientDataSetQuery.Last;

{ Form1.ClientDataSetVopros.Last;

Vopros_ID:=Form1.ClientDataSetVopros['VOPROS_ID'];}

Vopros_ID:=Form1.ClientDataSetQuery['VOPROS_ID'];

Form1.ClientDataSetQuery.Close;

Predmet_ID:=Form1.ClientDataSetPredmet['PREDMET_ID'];

Tema_ID:=Form1.ClientDataSetTema['TEMA_ID'];

if RzStringGrid1.RowCount>=1 then

begin

Sql:='INSERT INTO VARIANT (VOPROS_ID,PREDMET_ID,TEMA_ID,OTVET,VERNO) ';

if RzStringGrid1.RowCount=1 then RowCount:=1

else RowCount:=RzStringGrid1.RowCount-1;

for i:=1 to RowCount do

begin

Sql1:=' VALUES( '+IntToStr(Vopros_ID)+','+

IntToStr(Predmet_ID)+','+

IntToStr(Tema_ID)+','+''''+

RzStringGrid1.Cells[0,i]+''',';

if RowVerno=i then Sql2:='true)'

else Sql2:='false)';

Form1.ClientDataSetQuery.CommandText:=sql+sql1+Sql2;

Form1.ClientDataSetQuery.Execute;

Form1.ClientDataSetVariant.Refresh;

end;

end;

if Form1.ClientDataSetVariant.ApplyUpdates(-1)<>0 then

Form1.ClientDataSetVariant.Refresh;

Close

end;

procedure TDlgFrmAddVopros.Button2Click(Sender: TObject);

begin

Close

end;

end.

Модуль Excel. Предназначен для вывода результатов тестирования студентов в формате MS Excel.

unit Excel;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics,Forms, Controls,Dialogs,Variants;

Type

TSetBordertype=(btMedium,btThin);

type

TSetTypeCell =(tcGeneral,tcNum,tcCurrency,tcFinans,tcData,tcTime,

tcProc,tcExpo,tcText);

type

TSetExcelAlign=(exCenter,exLeft,exRight,exBottom,exTop,exGeneral,exJustify);

//xlGeneral xlJustify xlTop

procedure NewWorkShet(aVisible:Boolean);

procedure CloseWorkShet;

// function GetCellValue(Vr,Hr:OleVariant):OleVariant;

procedure SetCellValue(Vi,Hi,Value:OleVariant);

procedure SetCellRangeValue(Vr,Hr,Value:OleVariant);

procedure VisibleWorkShet(aVisible:Boolean);

procedure OpenWorkShet;

procedure FormatCell(Vr,Hr:OleVariant;HorAlign,VerAlign:TSetExcelAlign;

Wrap,Merg,Boldd,NamFont,SizeFont:OleVariant);

procedure TypeCell(Vr,Hr:OleVariant;typ:TSetTypeCell);

procedure BorderCell(Vr,Hr:OleVariant;Typ:OleVariant);

procedure SetCellRangeWidth(Vr,Hr,Value:OleVariant);

procedure SetCellWidth(Vi,Hi,Value:OleVariant);

procedure SetCellRangeHeight(Vr,Hr,Value:OleVariant);

procedure SetCellHeight(Vi,Hi,Value:OleVariant);

procedure SaveAsWorkShet;

procedure Save(FileName:String);

procedure PrintWorkShet(PrinterName,PageNumer:OleVariant);

procedure Preview;

procedure CloseExcel;

procedure RunExcel;

var Visible:Boolean;

FileName:String;

AppProgID:String;

ServerIsRunning:Boolean;

ExcelApp:Variant;

Result:HResult;

Unknown:IUnknown;

implementation

uses ExcelXP,Printers,ComObj,ActiveX;

procedure Preview;

begin

ExcelApp.ActiveWorkbook.PrintPreview(True,0);

end;

procedure PrintWorkShet(PrinterName,PageNumer:OleVariant);

begin

ExcelApp.ActiveWorkbook.PrintOut(NULL,NULL,PageNumer,False,PrinterName,False,NULL,NULL,0);

end;

procedure Save(FileName:String);

begin

ExcelApp.ActiveWorkbook.SaveAs(FileName);

end;

procedure SaveAsWorkShet;

var FSave:TSaveDialog;

begin

//if Not NewOrOpen then Exit;

try

FSave:=TSaveDialog.Create(Nil);

FSave.Title:='Сохранить файл Microsoft Excel';

FSave.DefaultExt:='xls';

FSave.Filter:='Excel files|*.XLS';

if FSave.Execute then

begin

ExcelApp.ActiveWorkbook.SaveAs(FSave.FileName,xlNormal,Null,Null,False,False,

XlNoChange,XlUserResolution,False,False,False,False,0);

end;

finally

FSave.Free;

FSave:=Nil;

end;

end;

procedure SetCellRangeWidth(Vr,Hr,Value:OleVariant);

begin

ExcelApp.Workbooks[1].WorkSheets[1].

Range[Vr+':'+Hr].ColumnWidth:=Value;

end;//new

procedure SetCellWidth(Vi,Hi,Value:OleVariant);

begin

ExcelApp.Workbooks[1].WorkSheets[1].

Cells[Vi,Hi].ColumnWidth:=Value;

end;

procedure SetCellRangeHeight(Vr,Hr,Value:OleVariant);

begin

ExcelApp.Workbooks[1].WorkSheets[1].

Range[Vr+':'+Hr].RowHeight:=Value;

end;

procedure SetCellHeight(Vi,Hi,Value:OleVariant);

begin

ExcelApp.Workbooks[1].WorkSheets[1].

Cells[Vi,Hi].RowHeight:=Value;

end;

procedure TypeCell(Vr,Hr:OleVariant;typ:TSetTypeCell);

begin

case Typ of

tcGeneral :

ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].

NumberFormat:='General';

tcNum :

ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].

NumberFormat:='0,00';

tcCurrency:

ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].

// NumberFormat:='#,##0,00$';

NumberFormat:='0,00руб.';

tcFinans :

ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].

NumberFormat:='_($* 0,00_);_($* (0,00);_($* ""-""??_);_(@_)';

tcData :

ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].

NumberFormat:='dd/mm/yyyy';

tcTime :

ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].

NumberFormat:='[$-F400]h:mm:ss AM/PM';

tcProc :

ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].

NumberFormat:='0,00%';

tcExpo :

ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].

NumberFormat:='0,00E+00';

tcText :

ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].

NumberFormat:='@';

end;

end;

procedure FormatCell(Vr,Hr:OleVariant;HorAlign,VerAlign:TSetExcelAlign;

Wrap,Merg,Boldd,NamFont,SizeFont:OleVariant);

begin

Case HorAlign of

exCenter:

ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].

HorizontalAlignment:=xlCenter;

exLeft:

ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].

HorizontalAlignment:=xlLeft;

exRight:

ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].

HorizontalAlignment:=xlRight;

exJustify:

ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].

HorizontalAlignment:=xlJustify;

exGeneral:

ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].

HorizontalAlignment:=xlGeneral;

end;

Case VerAlign of

exCenter:

ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].

VerticalAlignment:=xlCenter;

exBottom:

ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].

VerticalAlignment:=xlBottom;

exTop:

ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].

VerticalAlignment:=xlTop;

exJustify:

ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].

VerticalAlignment:=xlJustify;

exGeneral:

ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].

VerticalAlignment:=xlGeneral;

end;

ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].WrapText:=Wrap;

ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].Orientation:=0;

ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].AddIndent:=False;

ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].IndentLevel:=0;

ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].ShrinkToFit:=False;

ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].ReadingOrder:=xlContext;

ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].MergeCells:=Merg;

ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].Font.Name:=NamFont;

ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].Font.Size:=SizeFont;

ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].Font.Bold:=Boldd;

ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].Font.Strikethrough:=False;

ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].Font.Superscript:=False;

ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].Font.Subscript:=False;

ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].Font.OutlineFont:=False;

ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].Font.Shadow:=False;

ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].Font.Underline:=xlUnderlineStyleNone;

ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].Font.ColorIndex:= xlAutomatic;

end;

procedure OpenWorkShet;

var FileOpen:TOpenDialog;

begin

try

FileOpen:=TOpenDialog.Create(Nil);

FileOpen.Title:='Открыть файл Microsoft Excel';

FileOpen.Filter:='Excel files|*.XLS';

if FileOpen.Execute then

begin

FileName:=FileOpen.FileName;

ExcelApp.WorkBooks.Open(FileName,False,False,Null,Null,Null,False,Null,

Null,Null,Null,Null,Null,Null,Null,0);

// NewOrOpen:=True;

end;

finally

FileOpen.Free;

FileOpen:=nil

end

end;

procedure BorderCell(Vr,Hr:OleVariant;Typ:OleVariant);

begin

ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].Select;

ExcelApp.Selection.Borders[xlDiagonalDown].LineStyle:=xlNone;

ExcelApp.Selection.Borders[xlDiagonalUp].LineStyle:=xlNone;

ExcelApp.Selection.Borders.LineStyle:=xlContinuous;

ExcelApp.Selection.Borders.Weight:=xlMedium;

ExcelApp.Selection.Borders.ColorIndex:=xlAutomatic;

ExcelApp.Selection.Borders[xlInsideVertical].LineStyle:=xlNone;

ExcelApp.Selection.Borders[xlInsideHorizontal].LineStyle:=xlNone;

end;//new

procedure VisibleWorkShet(aVisible:Boolean);

begin

if Visible and not aVisible then

begin

ExcelApp.Visible:=false;

visible:=False

end;

if Not Visible and aVisible then

begin

ExcelApp.Visible:=True;

Visible:=True;

end;

end;//new

procedure NewWorkShet(aVisible:Boolean);

begin

ExcelApp.workbooks.Add;

if aVisible then

begin

ExcelApp.Visible:=aVisible;

Visible:=aVisible;

end;

end;

procedure CloseWorkShet;

begin

VisibleWorkShet(False);

ExcelApp.Workbooks.Close;

end;

procedure SetCellRangeValue(Vr,Hr,Value:OleVariant);

begin

ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].Value:=Value;

end;

procedure SetCellValue(Vi,Hi,Value:OleVariant);

begin

ExcelApp.Workbooks[1].WorkSheets[1].Cells[Vi,Hi].Value:=Value;

end;

function GetCellValue(Vr,Hr:OleVariant):OleVariant;

begin

// RangeE:=FExcelApp.Range[Vr,Hr];

// RangeE:=RangeE.Range[Vr,Hr];

// result:=RangeE.Value[RangeE];

end;

procedure CloseExcel;

begin

if not ServerIsRunning then ExcelApp.Quit;

ExcelApp:=Unassigned;

// ExcelApp.Quit;

end;

procedure RunExcel;

begin

AppProgID:='Excel.Application';

ServerIsRunning:=False;

ExcelApp:=CreateOleObject(AppProgID);

ExcelApp.Visible:=False;

ExcelApp.DisplayAlerts:=False;

end;

end.

Исходный код клиентской части программного комплекса.

program Ekzamen;

uses

Forms,

main in 'main.pas' {Form1},

DataMod in 'DataMod.pas' {DM1: TDataModule},

Nastr_Connect in 'Nastr_Connect.pas' {Form2},

Find_Komp in 'Find_Komp.pas' {Form7},

UserLogin in 'UserLogin.pas' {Form3},

Vibor_testa in 'Vibor_testa.pas' {Form4},

Otvet_test in 'Otvet_test.pas' {Form5};

{$R *.res}

begin

Application.Initialize;

Application.Title := 'Тестирование';

Application.CreateForm(TDM1, DM1);

Application.CreateForm(TForm1, Form1);

Application.Run;

end.

Главный модуль клиентской части программного комплекса.

unit main;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ToolWin, ComCtrls, Menus, Sockets, jpeg, ExtCtrls, RzGroupBar,

RzPanel, RzStatus, ImgList, XPMan, RzBHints, RzButton;

type

TForm1 = class(TForm)

TcpServer1: TTcpServer;

RzGroupBar1: TRzGroupBar;

RzGroup1: TRzGroup;

RzGroup2: TRzGroup;

RzStatusBar1: TRzStatusBar;

RzToolbar1: TRzToolbar;

ImageList1: TImageList;

RzBalloonHints1: TRzBalloonHints;

Image1: TImage;

RzToolButton1: TRzToolButton;

RzStatusPane1: TRzStatusPane;

RzClockStatus1: TRzClockStatus;

RzToolButton2: TRzToolButton;

RzSpacer1: TRzSpacer;

RzToolButton3: TRzToolButton;

procedure FormCreate(Sender: TObject);

procedure Nasr_PodklClick(Sender: TObject);

procedure PodklClick(Sender: TObject);

procedure Test_VoprosClick(Sender: TObject);

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

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

uses DataMod,IniFiles, Nastr_Connect, UserLogin, Vibor_testa;

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

var Ini:TiniFile;

PC:String;

begin

if not FileExists(ChangeFileExt( Application.ExeName, '.INI')) then

begin

try

ini:=TiniFile.Create(ChangeFileExt( Application.ExeName, '.INI'));

Ini.WriteString('CONNECT', 'PCName','PC');

Ini.WriteInteger('CONNECT', 'TYPE',0);

ShowMessage('Не найден файл настроек. Необходимо заново настроить поключение');

finally

Ini.Free

end;

end else

begin

try

ini:=TiniFile.Create(ChangeFileExt( Application.ExeName, '.INI'));

PC:=Ini.ReadString('CONNECT', 'PCName','PC');

DM1.DCOMConnection1.ComputerName:=PC;

DM1.SocketConnection1.Host:=PC;

case Ini.ReadInteger('CONNECT','TYPE',0) of

0: DM1.ConnectionBroker1.Connection:=DM1.DCOMConnection1;

1: DM1.ConnectionBroker1.Connection:=DM1.SocketConnection1;

2: DM1.ConnectionBroker1.Connection:=DM1.WebConnection1;

end;

finally

Ini.Free

end;

end;

end;

procedure TForm1.Nasr_PodklClick(Sender: TObject);

begin

Form2:=TForm2.Create(self);

Form2.ShowModal;

Form2.Free;

end;

procedure TForm1.PodklClick(Sender: TObject);

var S1,S2,S3:string;

procedure MenuEnable;

begin

RzGroup1.Items.Items[0].Enabled:=not RzGroup1.Items.Items[0].Enabled;

RzGroup2.Items.Items[1].Enabled:=not RzGroup2.Items.Items[1].Enabled;

RzToolButton3.Enabled:=not RzToolButton3.Enabled;

RzToolButton2.Enabled:=not RzToolButton2.Enabled;

end;

begin

//подключение\отключение к серверу

if DM1.ConnectionBroker1.Connected then

begin

DM1.ConnectionBroker1.Connected:=False;

RzGroup2.Items.Items[0].Caption:='Подключение';

RzStatusPane1.Caption:='Статус: Отключен от сервера';

MenuEnable;

TcpServer1.Close;

end else

begin

Form3:=TForm3.Create(Self);

Form3.ShowModal;

if Form3.ModalResult=mrOK then

begin

try

DM1.ConnectionBroker1.Connected:=True;

except

on E:Exception do

begin

MessageDLG(Format('Ошибка подключения к серверу: %S',[E.Message]),

mtError,[mbOK],0);

exit;

end;

end;//except

if DM1.ConnectionBroker1.AppServer.Login(Form3.Edit1.Text,Form3.Edit2.Text) then

begin

RzGroup2.Items.Items[0].Caption:='Отключение';

RzStatusPane1.Caption:='Статус: Подключен к серверу';

MenuEnable;

TcpServer1.Open;

S1:=TcpServer1.LookupHostAddr(TcpServer1.LookupHostName(''));

S2:=TcpServer1.LocalHostAddr;

S3:=TcpServer1.LocalHostName;

DM1.ConnectionBroker1.AppServer.IPAdress(S1,S2,S3);

end else

begin

DM1.ConnectionBroker1.Connected:=False;

ShowMessage('Имя пользователя или пароль не опознаны сервером');

end;

end;

form3.Free

end;

end;

procedure TForm1.Test_VoprosClick(Sender: TObject);

begin

DM1.ClientDataSetPredmet.Open;

DM1.ClientDataSetTema.Open;

Form4:=TForm4.Create(Self);

Form4.ShowModal;

Form4.Free;

DM1.ClientDataSetTema.Close;

DM1.ClientDataSetPredmet.Close;

end;

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

begin

if DM1.ConnectionBroker1.Connected then DM1.ConnectionBroker1.Connected:=False;

if TcpServer1.Active then TcpServer1.Close;

DM1.ConnectionBroker1.Connection:=nil;

Action:=caFree;

end;

end.

Модуль DataMod. Модуль данных.

unit DataMod;

interface

uses

SysUtils, Classes, SConnect, DB, DBClient, MConnect;

type

TDM1 = class(TDataModule)

DCOMConnection1: TDCOMConnection;

SocketConnection1: TSocketConnection;

ConnectionBroker1: TConnectionBroker;

ClientDataSetCommand: TClientDataSet;

ClientDataSetPredmet: TClientDataSet;

ClientDataSetTema: TClientDataSet;

DataSource1: TDataSource;

DataSource2: TDataSource;

ClientDataSetVopros: TClientDataSet;

ClientDataSetVariant: TClientDataSet;

DataSource3: TDataSource;

DataSource4: TDataSource;

WebConnection1: TWebConnection;

private

{ Private declarations }

public

{ Public declarations }

end;

var

DM1: TDM1;

ID_PREDMET:LongInt;

ID_TEMA:LongInt;

Vopros_Count,KolvoVopros:Integer;

VernoOtv,NeVernoOtv:Integer;

RecNom : Array of integer;

implementation

{$R *.dfm}

end.

Модуль Nastr_Connect. Настройки содинения с серверной частью.

unit Nastr_Connect;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ExtCtrls, Buttons;

type

TForm2 = class(TForm)

Label1: TLabel;

Edit1: TEdit;

Button1: TButton;

Button2: TButton;

RadioGroup1: TRadioGroup;

SpeedButton1: TSpeedButton;

procedure FormCreate(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure SpeedButton1Click(Sender: TObject);

procedure RadioGroup1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form2: TForm2;

implementation

uses IniFiles, Find_Komp, DataMod;

{$R *.dfm}

procedure TForm2.FormCreate(Sender: TObject);

var Ini:TiniFile;

begin

if not FileExists(ChangeFileExt( Application.ExeName, '.INI')) then

begin

try

ini:=TiniFile.Create(ChangeFileExt( Application.ExeName, '.INI'));

Ini.WriteString('CONNECT', 'PCName','PC');

Ini.WriteInteger('CONNECT', 'TYPE',0);

Edit1.Text:='PC';

RadioGroup1.ItemIndex:=0;

finally

Ini.Free

end;

end else

begin

try

ini:=TiniFile.Create(ChangeFileExt( Application.ExeName, '.INI'));

Edit1.Text:=Ini.ReadString('CONNECT', 'PCName','PC');

RadioGroup1.ItemIndex:=Ini.ReadInteger('CONNECT', 'TYPE',0);

RadioGroup1Click(Sender);

finally

Ini.Free

end;

end;

end;

procedure TForm2.Button1Click(Sender: TObject);

var Ini:TiniFile;

begin

if Edit1.Text='' then exit;

try

ini:=TiniFile.Create(ChangeFileExt( Application.ExeName, '.INI'));

Ini.WriteString('CONNECT', 'PCName',Edit1.Text);

DM1.DCOMConnection1.ComputerName:=Edit1.Text;

DM1.SocketConnection1.Host:=Edit1.Text;

Ini.WriteInteger('CONNECT', 'TYPE',RadioGroup1.ItemIndex);

case RadioGroup1.ItemIndex of

0: DM1.ConnectionBroker1.Connection:=DM1.DCOMConnection1;

1: DM1.ConnectionBroker1.Connection:=DM1.SocketConnection1;

2: DM1.ConnectionBroker1.Connection:=DM1.WebConnection1;

end

finally

Ini.Free

end;

close

end;

procedure TForm2.Button2Click(Sender: TObject);

begin

Close

end;

procedure TForm2.SpeedButton1Click(Sender: TObject);

begin

Form7:=TForm7.Create(Self);

Form7.ShowModal;

if Form7.ModalResult=mrOK then

Edit1.Text:=Form7.ShellTreeView1.Path;

Form7.Free

end;

procedure TForm2.RadioGroup1Click(Sender: TObject);

begin

if RadioGroup1.ItemIndex=2 then

begin

Label1.Caption:='URL адрес';

SpeedButton1.Enabled:=False;

Edit1.Text:='http://PC/';//Scripts/

end

else begin

Label1.Caption:='Имя компьютера';

SpeedButton1.Enabled:=True;

end;

end;

end.

Вспомогательный модуль Find_Komp. Поиск компьютеров в локальной сети, для настройки соединения с сервером.

unit Find_Komp;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ComCtrls, ShellCtrls, StdCtrls;

type

TForm7 = class(TForm)

GroupBox1: TGroupBox;

GroupBox2: TGroupBox;

Button1: TButton;

Button2: TButton;

ShellTreeView1: TShellTreeView;

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form7: TForm7;

implementation

{$R *.dfm}

end.

Модуль Vibor_testa. Диалоговое окно, в котором студент выбирает предмет и тему по которым он хочет проверить свои знания.

unit Vibor_testa;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, DBCtrls;

type

TForm4 = class(TForm)

GroupBox1: TGroupBox;

GroupBox2: TGroupBox;

DBLookupComboBox1: TDBLookupComboBox;

DBLookupComboBox2: TDBLookupComboBox;

GroupBox3: TGroupBox;

Button1: TButton;

Button2: TButton;

procedure DBLookupComboBox1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form4: TForm4;

implementation

uses DataMod, Otvet_test;

{$R *.dfm}

procedure TForm4.DBLookupComboBox1Click(Sender: TObject);

begin

if DBLookupComboBox2.text<>'' then

begin

DBLookupComboBox2.ListField:='';

DBLookupComboBox2.ListField:='TEMA';

end;

end;

procedure TForm4.Button2Click(Sender: TObject);

begin

Close

end;

procedure TForm4.Button1Click(Sender: TObject);

{ Procedure Podgotovka;

var I:Integer;

begin

Randomize;

For i:=1 to Vopros_Count do

begin

Random

end;

end;}

begin

if (DBLookupComboBox1.text='')or

(DBLookupComboBox2.text='') then exit;

ID_PREDMET:=DM1.ClientDataSetPredmet.FieldValues['PREDMET_ID'];

ID_TEMA:=DM1.ClientDataSetTema.FieldValues['TEMA_ID'];

Vopros_Count:=DM1.ClientDataSetTema.FieldValues['VOPROS_COUNT'];

DM1.ClientDataSetVopros.Open;

DM1.ClientDataSetVariant.Open;

DM1.ClientDataSetVopros.Filter:='PREDMET_ID='+IntToStr(ID_PREDMET)+

' AND TEMA_ID='+IntToStr(ID_TEMA);

DM1.ClientDataSetVopros.Filtered:=True;

DM1.ClientDataSetVopros.First;

if DM1.ClientDataSetVopros.RecordCount<Vopros_Count then

Vopros_Count:=DM1.ClientDataSetVopros.RecordCount;

SetLength(RecNom,DM1.ClientDataSetVopros.RecordCount+1);

Form5:=TForm5.Create(self);

Form5.ShowModal;

Form5.Free;

DM1.ClientDataSetVopros.Filter:='';

DM1.ClientDataSetVopros.Filtered:=False;

DM1.ClientDataSetVariant.Close;

DM1.ClientDataSetVopros.Close;

DM1.ClientDataSetTema.Close;

DM1.ClientDataSetPredmet.Close;

close;

end;

end.

Модуль Otvet_test. Диалоговое окно в котором студент отвечает на предложенные ему вопросы.

unit Otvet_test;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Grids, DBGrids, StdCtrls, CheckLst, DBCtrls, ExtCtrls;

type

TForm5 = class(TForm)

GroupBox1: TGroupBox;

GroupBox2: TGroupBox;

CheckListBox1: TCheckListBox;

GroupBox3: TGroupBox;

Button1: TButton;

DBMemo1: TDBMemo;

Label1: TLabel;

Label2: TLabel;

Timer1: TTimer;

Timer2: TTimer;

Label3: TLabel;

procedure FormCreate(Sender: TObject);

procedure Button1Click(Sender: TObject);

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

procedure Timer1Timer(Sender: TObject);

procedure Timer2Timer(Sender: TObject);

private

{ Private declarations }

public

Procedure NewVopros;

Procedure RandomVopros;

Procedure Time_Out;

{ Public declarations }

end;

var

Form5: TForm5;

times:LongInt;

implementation

uses DataMod;

{$R *.dfm}

procedure TForm5.NewVopros;

begin

CheckListBox1.Items.Clear;

DM1.ClientDataSetVariant.First;

While Not DM1.ClientDataSetVariant.Eof do

begin

CheckListBox1.Items.Add(DM1.ClientDataSetVariant.FieldValues['OTVET']);

DM1.ClientDataSetVariant.Next;

end;

inc(KolvoVopros);

end;

Procedure TForm5.Time_Out;

begin

if DM1.ClientDataSetVopros.FieldValues['TIME_OUT']<>0 then

begin

Times:=60*DM1.ClientDataSetVopros.FieldValues['TIME_OUT'];

Timer1.Interval:=60*DM1.ClientDataSetVopros.FieldValues['TIME_OUT']*1000;

Timer2.Interval:=1000;

Label3.Caption:='Осталось времени: '

+IntToStr(Times)

+' секунд';

Timer1.Enabled:=True;

Timer2.Enabled:=True;

end else

begin

Timer1.Interval:=0;

Timer2.Interval:=0;

end;

end;

Procedure TForm5.RandomVopros;

var NomVopros:Integer;

begin

Randomize;

repeat

NomVopros:=Random(DM1.ClientDataSetVopros.RecordCount)+1;

DM1.ClientDataSetVopros.RecNo:=NomVopros;

until RecNom[DM1.ClientDataSetVopros.RecNo]=0;

RecNom[DM1.ClientDataSetVopros.RecNo]:=DM1.ClientDataSetVopros.RecNo;

end;

procedure TForm5.FormCreate(Sender: TObject);

begin

RandomVopros;

NewVopros;

Time_Out;

NeVernoOtv:=0;

VernoOtv:=0;

end;

procedure TForm5.Button1Click(Sender: TObject);

var i:integer;

Est:Integer;

begin

Timer1.Enabled:=False;

Timer2.Enabled:=False;

for i:=0 to CheckListBox1.Items.Count-1 do

begin

if CheckListBox1.Checked[i] then

begin

DM1.ClientDataSetVariant.RecNo:=i+1;

if Boolean(DM1.ClientDataSetVariant.FieldValues['VERNO']) then inc(VernoOtv)

else inc(NeVernoOtv);

end;

Label1.Caption:=IntToStr(VernoOtv)+'\'+IntToStr(NeVernoOtv);

end;

if KolvoVopros<>Vopros_Count then

begin

RandomVopros;

NewVopros;

Time_Out;

end

else begin

try

DM1.ConnectionBroker1.AppServer.Ocenka(ID_PREDMET,

ID_TEMA,Vopros_Count,VernoOtv,NeVernoOtv,Est);

except

on E:Exception do

begin

MessageDLG(Format('Ошибка, нет связи с сервером: %S',[E.Message]),

mtError,[mbOK],0);

exit;

end;

end;

ShowMessage('Вопросов больше нет! Ваша оценка '+IntToStr(Est));

Close;

end;

end;

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

begin

if KolvoVopros<>Vopros_Count then Action:=caNone

else Action:=caFree;

end;

procedure TForm5.Timer1Timer(Sender: TObject);

begin

ShowMessage('Время истекло');

if KolvoVopros<>Vopros_Count then

begin

RandomVopros;

NewVopros;

Time_Out;

end

end;

procedure TForm5.Timer2Timer(Sender: TObject);

begin

dec(Times);

Label3.Caption:='Осталось времени: '

+IntToStr(Times)

+' секунд';

if (Times>0) AND (Times<=10) then MessageBeep(MB_ICONHAND);

end;

end.

Список литературы

1. «Delphi и технология COM». Н. Елманова, С. Трепалин, А. Тенцер. «Питер», 2003 год.

2. «Язык SQL: учебный курс». Л. Шкарина. «Питер», 2001 год.

3. «Телекоммуникационные системы и вычислительные сети». Б.В. Костров. «Десс», 2005 год.

4. «Delphi 5 Руководство разработчика». Том 1. С. Тейксейра, К. Пачеко. «Вильямс», 2001 год.

5. «Delphi 5 Руководство разработчика». Том 2. С. Тейксейра, К. Пачеко. «Вильямс», 2001 год.

6. «Delphi Разработка баз данных». А. Сорокин. «Питер», 2005 год.

7. «Internet information Services 5.0. Справочник администратора». У. Станек. «Русская редакция», 2002 год.

8. «Windows Server 2003. Практическое руководство по настройке сети». П. Шетка. «Наука и техника», 2006 год.

9. «Безопасность Windows Server 2003». Д. Скембрей, С. Мак-Клар. «Вильямс», 2004 год.

10. Электронная справочная система «Delphi Word» Версия 6.0.

11. Электронный справочник по функциям Windows API.

12. «COM и ActiveX в Delphi». Пономарев В. «BHV-Петербург», 2001 год.

13. «Microsoft SQL Server 2000». Е. Мамаев. «BHV-Петербург», 2004 год.

14. Технологии распределенных баз данных http://ami.nstu.ru/~vms/lecture/ lecture10/ lecture10.html.

15. InterBase 6 Embedded SQLGuide, Borland.

16. «Компьютерные сети, принципы, технологии, протоколы». В. Г. Олифер, Н.А. Олифер. «Питер», 2001 год.

17. «Протоколы Internet». С. Золотов. «BHV-Петербург», 1998 год.

18. «Основы построения сетей. Учебное руководство для специалистов MCSE». Д. Челлис, Ч. Перкинс, М. Стриб. «Лори», 1997 год.


Подобные документы

  • Проект реляционной базы данных "Спортивные соревнования": oпиcaние предметнoй oблacти. Организация выборки информации из БД, механизмы управления, обмен данными между серверной частью и клиентским приложением. Экономическое обосновaние внедрения проекта.

    курсовая работа [5,3 M], добавлен 21.06.2011

  • Структура данных в динамической памяти, однонаправленные списки. Разработка программного комплекса, предназначенной для хранения и предоставления пользователям данных об улицах города. Реализация данной программы при помощи метода расширения ядра.

    курсовая работа [438,3 K], добавлен 11.01.2016

  • Автоматизация процессов трудоустройства безработных; разработка приложения "DBcontrolle" для государственного учреждения "Ставропольская трудовая биржа". Управление данными в базе, триггеры. Обмен данными между серверной частью и клиентским приложением.

    курсовая работа [1004,9 K], добавлен 03.07.2011

  • Анализ методов и средств контроля доступа к файлам. Проблемы безопасности работы с файлами, средства контроля доступа ним. Идеология построения интерфейса, требования к архитектуре. Работа классов системы. Оценка себестоимости программного продукта.

    дипломная работа [2,5 M], добавлен 21.12.2012

  • Характеристика системы программирования. Главные составные части Delphi. Интерфейс программного приложения. Результаты работы программы. Руководство системного программиста и оператора. Язык программирования Delphi, среда компилятора Borland 7.0.

    курсовая работа [1,6 M], добавлен 29.05.2013

  • Операционная система Windows фирмы Microsoft во всех ее проявлениях. Ее интерфейс как универсальный механизм управления любым приложением ОС. Свойства анимационного пользовательского интерфейса. Настройка программного продукта, его адаптация к технике ПК.

    контрольная работа [50,5 K], добавлен 03.05.2009

  • Разработка программного приложения WindowsForms для работы с базой данных на языке высокого уровня C# в автономном режиме с использованием ADO.NET. Проектирование реляционной модели базы данных, интерфейса приложения, основных функций и возможностей.

    курсовая работа [4,3 M], добавлен 30.06.2015

  • Системный анализ предметной области. Выбор инструментальных средств для создания программного обеспечения. Программирование на стороне SQL-сервера. Создание клиентского Win-приложения, пользовательский интерфейс. Физическое проектирование базы данных.

    курсовая работа [3,7 M], добавлен 20.11.2013

  • Проектирование базы данных "Менеджер". Выбор системы проектирования и реализации. Задачи, выполняемые приложением. Технические требования, предъявляемые к базе данных. Ее информационно-логическая структура. Основные принципы работы с приложением.

    дипломная работа [2,5 M], добавлен 20.05.2013

  • Проектирование серверного компонента, исполняющегося на узле кластера EMC Centera. Протокол взаимодействия компонентов, способный восстанавливаться после разрыва соединения между компонентами. Графический интерфейс пользователя для программного комплекса.

    дипломная работа [1,1 M], добавлен 18.07.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.