Разработка программного обеспечения для оценки уровня знаний студентов с применением технологии "Клиент-сервер"
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
tomWinSocket);
type TDataBuffer=array of byte;// буфер данных
var Data, Data1:string;// данные
SendLen:integer;
DataBuffer:TDataBuffer;
i: Word;
Command:byte;
GetSize:PInt64;
SizeOfFilename:byte;
PTrueAnswer:PWord;
PTimeForPassTest:PDouble;
begin
SendLen:=Socket. ReceiveLength;// размер принятых данных
SetLength (DataBuffer, SendLen);
Socket. ReceiveBuf (Pointer(DataBuffer)^, SendLen);// заполняем буфер
if lock then// если в режиме приема файла то продолжить прием
begin
MakePointer:=DWORD(DataBuffer);
NewFile. WriteBuffer (Pointer(MakePointer)^, SendLen);
SendedSize:=SendedSize+SendLen;
if SendedSize=FileSize then// если приняли весь файл то выход
begin
lock:=false;
NewFile. Destroy;
SetImg(FileName);
end;
end else
begin
Command:=DataBuffer[0];
case Command of
NM_Register1:
begin
MyNumber:=DataBuffer[1];
i:=2;
while i<=SendLen-3 do
begin
Data:=;
while DataBuffer[i]<>byte (|) do
begin
Data:=Data+Char (DataBuffer[i]);
inc(i);
end;
if Data<> then StartForm. ComboBox1. Items. Add(Data);
if DataBuffer [i+1]=byte (>) then break;
inc(i);
end;
end;
NM_Register2: // список студентов
begin
i:=1;
while i<=SendLen-2 do
begin
Data:=;
while DataBuffer[i]<>byte (|) do
begin
Data:=Data+Char (DataBuffer[i]);
inc(i);
end;
if Data<> then StartForm. ComboBox2. Items. Add(Data);
if DataBuffer [i+1]=byte (>) then break;
inc(i);
end;
end;
NM_RegisterGetWorks:
begin
i:=1;
StartForm. ComboBox3. Clear;
while i<=SendLen-2 do
begin
Data:=;
while DataBuffer[i]<>byte (|) do
begin
Data:=Data+Char (DataBuffer[i]);
inc(i);
end;
if Data<> then StartForm. ComboBox3. Items. Add(Data);
if DataBuffer [i+1]=byte (>) then break;
inc(i);
end;
end;
NM_RegisterGetTeachers:
begin
StartForm. ComboBox4. Clear;
i:=1;
while i<=SendLen-2 do
begin
Data:=;
while DataBuffer[i]<>byte (|) do
begin
Data:=Data+Char (DataBuffer[i]);
inc(i);
end;
if Data<> then StartForm. ComboBox4. Items. Add(Data);
if DataBuffer [i+1]=byte (>) then break;
inc(i);
end;
end;
NM_FileOperation:
begin
lock:=true;
PTrueAnswer:=Addr (DataBuffer[1]);
TrueAnswer:=PTrueAnswer^;
QuestionStyle:=DataBuffer[3];
GetSize:=Addr (DataBuffer[4]);
FileSize:=GetSize^;
SizeOfFilename:=DataBuffer[12];
Filename:=ApplicationPath+Data.tmp;// имя передаваемого файла
Deletefile(FileName);
NewFile:=TFileStream. Create (FileName, fmCreate);
NewFile. Position:=0;
MakePointer:=DWORD(DataBuffer)+13+SizeOfFilename;// 13=1+1+1+1+8+1
NewFile. WriteBuffer (Pointer(MakePointer)^, SendLen-13-SizeOfFilename);
SendedSize:=SendLen-13-SizeOfFilename;
if SendedSize=FileSize then// если приняли весь файл то выход
begin
lock:=false;
NewFile. Destroy;
SetImg(FileName);
end;
end;
NM_EndOfTest:
begin
SpeedButton5. Enabled:=false;
TestPassed:=true;
Mark:=DataBuffer[1];
PostMessage (Handle, WM_User, 0,0);
end;
NM_KickFromServer:
begin
TestTerminated:=true;
Label7. Hide;
Label8. Hide;
Button2. Hide;
Panel7. Caption:=Тестирование прервано;
PostMessage (Handle, WM_User, 0,0);
end;
NM_Service:
begin
QuestionsCount:=DataBuffer[1];
PTimeForPassTest:=Addr (DataBuffer[2]);
TimeForPassTest:=TTime (PTimeForPassTest^);
end;
NM_DataError:
begin
SendLen:=DataBuffer[1];
Data1:=Copy (PChar(DataBuffer), 3, SendLen)+#13+#10+#0;
PostMessage (Handle, WM_User+1, DWORD (PChar(Data1)), 1);
end;
NM_Wait: ShowMessage(Wait);
end;
end;
SetLength (DataBuffer, 0);
end;
procedure TTestForm. CloseNetworkSocket (var Message: TMessage);
begin
TestSocket. Active:=false;
TestSocket.close;
if TestForm. Visible then
begin
Panel8. Hide;
Panel7. Top:=Panel8. Top;
Panel7. Left:=Panel8. Left;
Panel7. Width:=Panel8. Width;
Panel7. Height:=Panel8. Height;
Panel7. Visible:=true;
if TestPassed then Panel7. Caption:=IntToStr(Mark) else
begin
Application. ProcessMessages;
Sleep(4000);
Application. ProcessMessages;
Application. Terminate;
end;
end else// если окно теста не открыто
begin
StartForm. Panel4. Visible:=true;
Application. ProcessMessages;
Sleep(4000);
Application. ProcessMessages;
Application. Terminate;
end;
end;
procedure TTestForm. TestSocketDisconnect (Sender: TObject;
Socket: TCustomWinSocket);
begin
if not (TestPassed or TestTerminated) then Application. Terminate;
end;
{/////////////////////////////////////////////////////
Сетевые подпрограммы
END
////////////////////////////////////////////////////// }
end;
end.
Литература
- Архангельский А.Я. Delphi 7 Справочное пособие. М., Бином-Пресс. -2004. -1024с.
- Архангельский А.Я.Программирование в Delphi 7 + дискета, Бином, 2005
- Бондаренко Е.А.Технические средства обучения в современной школе, Юверс, 2004
- Вигерс Карл. Разработка требований к программному обеспечению. /Пер, с англ. М.: Издательско-торговый дом Русская Редакция, 2004. - 576 с.
- Гаврилова Т.А., Хорошевский В.Ф.Базы знаний интеллектуальных систем. СПб.: Питер, 2001. 384с.: ил.
- Глушаков С.В., Клевцов А.Л., Программирование в среде Delphi 7.0, Фолио 2003
- Дьяконов В.П.Новые информационные технологии, Солон-Пресс, 2005
- Земсков А.И., Шрайберг Я.Л.Электронные библиотеки, Либерея, 2003
- Клименко Р.Н.Оптимизация и автоматизация работы на ПК на 100% (+CD), Питер Пресс, 2007
- Колин К.К.Фундаментальные основы информатики: социальная информатика/ Учебное пособие для вузов. М.: Академический проект, 200 350с.
- Кондратьев Г.Г.Осваиваем Windows XP, Питер, 2005
- Коплиен Дж., Мультипарадигменное проектирование для C++, Питер, 2005
- Красильникова В.А.Становление и развитие компьютерных технологий обучения: Монография. М.: ИИО РАО, 2002. 168с.
- Круглински Д., Уингоу С, Шеферд Дж. Программирование на Microsoft Visual C++ 6.0 для профессионалов. /Пер, с англ. СПб: Питер; М.: Издательско-торговый дом Русская Редакция, 2004. 861с.
- Леонтьев Б.К., Мультимедия Microsoft Windows без страха, Новый издательский дом, 2005
- Мандел Т. Дизайн интерфейсов, ДМК, 2005
- Музыченко Е.В., Фролов И.Б., Мультимедия для Windows, 2003
- Пайс А. Гении науки. М.: Институт компьютерных исследований, 2002
- Архангельский А.А.Программирование в Delphi. М.: Бином, 2003. 1231с.
- Гофман В.Э., Хомоненко А.Д. Delphi 5. СПб.: БХВ Санкт Петербург, 2000. 800с.
- Епанешников А., Епанешников В. Программирование в среде Delphi: Учебное пособие: В 4-х ч. Ч.4. Работа с базами данных. Организация справочной системы М.: ДИАЛОГ МИФИ, 1998. 400с.
- Зубков Сергей "адимирович Assembler для Dos, Windows, Unix. М.: ДМКПресс, 2000. 652с.
- Кэнту Марко Delphi 5.0 для профессионалов. СПб.: Питер, 2001. 1064с. <