Разработка программного обеспечения для оценки уровня знаний студентов с применением технологии "Клиент-сервер"
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
erNum:=Num;
result:=true;
end else ERROR_MESSAGE_FOR_DEBUG_LEVEL(ErrImputUserNumberFault);
end;
procedure TUsersDB.ERROR_MESSAGE_FOR_DEBUG_LEVEL (ErrID: byte);
begin
Case ErrID of
ErrImputGroupNumberFault:
SMessage (Imput group number fault);
ErrImputUserNumberFault:
SMessage (Imput user number fault);
end;
end;
Procedure TUsersDB.SMessage (Message_:string);
begin
SendMessage (SelfParent, WM_User+2, DWord (PChar(ActivStationIP+ +Message_)), 0);
end;
function TUsersDB. GetGroupByIndex (i:byte): string;
begin
if i<=UsersDataBase. Groups. Count-1 then Result:=UsersDataBase. Groups. Strings[i] else Result:=;
end;
function TUsersDB. GetUserByIndex (i:byte): string;
begin
if i<=UsersDataBase. Users[ActiveGroupNum].Count-1 then
Result:=UsersDataBase. Users[ActiveGroupNum].Strings[i] else Result:=;
end;
function TUsersDB. GetGroupsStringList: string;
var i:integer;
begin
Result:=;
for i:=0 to UsersDataBase. Groups. Count-1 do Result:=Result+UsersDataBase. Groups. Strings[i]+|;
Result:=Result+>;
end;
function TUsersDB. GetUsersStringList: string;
var i:integer;
begin
Result:=;
for i:=0 to UsersDataBase. Users[ActiveGroupNum].Count-1 do Result:=Result+UsersDataBase. Users[ActiveGroupNum].Strings[i]+|;
Result:=Result+>;
end;
end.
Приложение 2
Листинг кода клиентской части программы
unit Registation;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
HLartForm = class(TForm)
Panel2: TPanel;
ComboBox3: TComboBox;
ComboBox4: TComboBox;
Label5: TLabel;
Label6: TLabel;
Bevel2: TBevel;
Bevel3: TBevel;
Panel1: TPanel;
Bevel4: TBevel;
Bevel5: TBevel;
Label3: TLabel;
Label4: TLabel;
ComboBox1: TComboBox;
ComboBox2: TComboBox;
Bevel6: TBevel;
Bevel7: TBevel;
Panel3: TPanel;
Bevel1: TBevel;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Panel4: TPanel;
procedure ComboBox1Change (Sender: TObject);
procedure Button2Click (Sender: TObject);
procedure Button1Click (Sender: TObject);
procedure Button3Click (Sender: TObject);
procedure ComboBox3Change (Sender: TObject);
procedure ComboBox2Change (Sender: TObject);
procedure FormClose (Sender: TObject; var Action: TCloseAction);
private
ServerIPAddress:string[15];//IP адрес
Steps:byte;// номер шага регистрации (условно)
NoModify:boolean;// триггер интерфейса
function ReadServerIP: string;// чтение из файла IP.DAT информации о IP адресе сервера
public
procedure GetConnect;// Установка соединение
procedure HideWin_(YN: boolean);// скрыть элементы управления Windows (TaskBar, Deskdop)
procedure ExitProgram;
end;
var
StartForm: HLartForm;
implementation
uses MainForm;
{/////////////////////////////////////////////////////
BEGIN
Сервисные подпрограммы
////////////////////////////////////////////////////// }
function HLartForm. ReadServerIP: string;
var IPInfFile:textfile;
IP:string;
begin
if fileexists (extractfilepath(application. ExeName)+IP. Dat) then
begin
assignfile (IPInfFile, extractfilepath (application. ExeName)+IP. Dat);
{$i-}
reset(IPInfFile);
Readln (IPInfFile, IP);
closefile(IPInfFile);
{$i+}
if ip<> then
begin
ReadServerIP:=IP;
end
else ReadServerIP:=127.0.0.1;
end else
begin
ReadServerIP:=127.0.0.1;
end;
end;
procedure HLartForm. HideWin_(YN:boolean);
var Wnd: hWnd;
ClassName:PChar;
ClassNameLen:byte;
Res:string;
begin
Wnd:=FindWindow (Progman, Program Manager);
while wnd<>0 do
begin
wnd:=GetWindow (Wnd, GW_CHILD);
ClassNameLen:=0;
GetClassName (Wnd, ClassName, ClassNameLen);
SeHLring (Res, ClassName, ClassNameLen);
SeHLring (Res, ClassName, StrLen(ClassName));
if Res=SysListView32 then
begin
if YN=true then
begin
ShowWindow (Wnd, SW_Hide);
ShowWindow (findwINDOW(Shell_TrayWnd, nil), SW_Hide);
end else
begin
ShowWindow (Wnd, SW_Show);
ShowWindow (findwINDOW(Shell_TrayWnd, nil), SW_Show);
end;
break;
end;
end;
FreeMem (ClassName, 255);
end;
procedure HLartForm. ExitProgram;
begin
HideWin_(false);
Application. ProcessMessages;
Application. Terminate;
end;
{/////////////////////////////////////////////////////
Сервисные подпрограммы
END
////////////////////////////////////////////////////// }
{/////////////////////////////////////////////////////
BEGIN
Сетевые подпрограммы
////////////////////////////////////////////////////// }
procedure HLartForm. GetConnect;
begin
try
ServerIPAddress:=ReadServerIP;
TestForm. TestSocket. Address:=ServerIPAddress;
TestForm. TestSocket. Active:=true;
except
end;
end;
{/////////////////////////////////////////////////////
Сетевые подпрограммы
END
////////////////////////////////////////////////////// }
{/////////////////////////////////////////////////////
BEGIN
Обработка пользовательского интерфейса
////////////////////////////////////////////////////// }
procedure HLartForm. ComboBox1Change (Sender: TObject);
var Data:string;
begin
Data:=Char (NM_Register2)+Char (TestForm. MyNumber)+Char (ComboBox1. ItemIndex);
TestForm. TestSocket. Socket. SendBuf (Pointer(Data)^, Length(Data));
ComboBox3. Clear;
ComboBox4. Clear;
ComboBox2. Clear;
NoModify:=false;
Steps:=0;
end;
procedure HLartForm. Button2Click (Sender: TObject);
begin
Close;
end;
procedure HLartForm. Button1Click (Sender: TObject);
var Data:string;
begin
case Steps of// Дальнейшее действие
0:if ComboBox2. Text<> then
begin
NoModify:=true;
Data:=Char (NM_RegisterGetWorks)+Char (TestForm. MyNumber)+Char (ComboBox1. ItemIndex);
TestForm. TestSocket. Socket. SendBuf (Pointer(Data)^, Length(Data));// Запрос на получение списка предметов
end;
Button3. Enabled:=true;
Panel1. Hide;
Panel2. Show; Steps:=1;
end;
1: if Panel2. Visible then
begin
if ComboBox4. Text<> then
begin
Data:=Char (NM_RegisterOK)+Char (TestForm. MyNumber)+
Char (ComboBox1. ItemIndex)+Char (ComboBox2. ItemIndex)+Char (ComboBox3. ItemIndex)+Char (ComboBox4. ItemIndex);
TestForm. TestSocket. Socket. SendBuf (Pointer(Data)^, Length(Data));// Отсылка сведений для
// окончательной регистрации
Self. Hide;
HideWin_(true);
end;
end else
begin
Panel1. Hide;
Panel2. Show;
Button3. Enabled:=true;
Steps:=1;
end;
end;
end;
procedure HLartForm. Button3Click (Sender: TObject);
begin
Panel2. Hide;
Panel1. Show;
Button3. Enabled:=false;
end;
procedure HLartForm. ComboBox3Change (Sender: TObject);
var Data:string;
begin
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, WinSock, ExtCtrls, Buttons, StdCtrls, ScktComp;
const
NM_Register1 = 6;// прием списка групп
NM_Register2 = 7;// запрос на список студентов
NM_RegisterGetWorks = 66;// запрос/ ответ список предметов
NM_RegisterGetTeachers = 77;// запрос/ ответ список преподователей
NM_RegisterOK = 8;// клиент зарегистрирован
NM_Service = 31;// прием сервисной информации
NM_TestEvent = 55;// событие по ходу тестирования
NM_FileOperation = 10;// сетевая операция с файлами
NM_EndOfTest = 33;// окончание тестирования
NM_KickFromServer = 44;// отключение от сервера администратором
NM_Wait = 61;
NM_DataError = 54;// проблема с БД
procedure TTestForm. TestSocketRead (Sender: TObject;
Socket: TCus