Разработка прикладной программы на основе архитектуры "клиент – сервер"
Описание предметной области и разработка электронного учебника на основе архитектуры "клиент – сервер". Тестирование программы менеджера и создание интерфейса главного меню. Вход в программу в качестве пользователя и обеспечение перехода к данным лекций.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 26.02.2015 |
Размер файла | 1,5 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
38
Курсовая работа
По дисциплине «Операционные системы»
На тему:
Разработка прикладной программы на основе архитектуры “клиент - сервер”
Содержание
1. Введение
2. Описание применения
3. Описание программы менеджера
3.1 Вход в качестве пользователя
3.1.1 Переход к тестам
3.1.2 Переход к лекция
3.1.3 Сообщения
3.1.4 Выход
3.2 Вход в качестве преподавателя
3.2.1 Результаты пользователей
3.2.2 Просмотр и редактирование тестов
3.2.3 Установление режима прохождения тестов
3.2.4 Сообщения
3.2.5 Добавление новых лекций
3.2.6 Выход
4. Описание теста
Заключение
Список литературы
Приложение
интерфейс сервер клиент электронный учебник
1. Введение
Цель работы - данный программный продукт представляет собой электронный учебник. Основное предназначение данной программы - возможность дистанционного обучения студентов и тестирование у них знаний по данному предмету.
У студентов появляются следующие преимущества:
1. самостоятельное изучение лекционнго материала по данной дисциплине;
2. проверка знаний, по пройденному лекционному материалу с помощью прохождения тестов, содержащихся в данном программном продукте;
3. общение с преподавателем путем отправки сообщений.
Преподаватель имеет следующие возможности:
1. добавлять новый лекционный материал по данному предмету;
2. добавлять метордические указания к выполнению практических работ по данной дисциплине.
3. тестировать студентов и проверять их знания;
4. просматривать результаты сдачи тестов и проставлять оценки.
5. связываться со студентами с помощью отправки сообщений.
2. Описание применения
ОБРАЩЕНИЕ К ПРОГРАММЕ
Так в данной программе нет жесткой привязки к базе данных, в которой храниться информация о студентах, результатах сдачи тестов и вопросы к тестам, то ее не обязательно устанавливать в определенную папку или диск. Достаточно просто нажать на ярлык программы на рабочем столе.
ФАЙЛЫ СИСТЕМЫ
В данной систме осуществляется работа с базой данной «DB.mdb», которая содержит всебе таблицы. Каждая таблица состоит из соответствующих полей. Рассмотрим использующиеся в программе таблицы:
Таблица 1. Студенты
Название поля |
Тип поля |
Длина поля |
Вид поля |
Расшифровка Названия |
|
Login |
Текстовый |
50 |
Ключевое |
Логин |
|
Parol |
Текстовый |
50 |
Пароль |
||
Fam |
Текстовый |
25 |
Фамилия |
||
Name |
Текстовый |
20 |
Имя |
||
Group |
Текстовый |
10 |
Группа |
||
Kod_rez |
Числовой |
3 |
Ключевое |
Результат |
|
Kod_mes |
Числовой |
3 |
Ключевое |
Сообщение |
Таблица 2. Результаты сдачи тестов
Название поля |
Тип поля |
Длина поля |
Вид поля |
Расшифровка Названия |
|
Kod_rez |
Числовой |
3 |
Ключевое |
Результат |
|
Naz_test |
Текстовый |
50 |
Название теста |
||
Rezultat |
Числовой |
3 |
Оценка |
Таблица 3. Сообщения
Название поля |
Тип поля |
Длина поля |
Вид поля |
Расшифровка Названия |
|
Kod_mes |
Числовой |
3 |
Ключевое |
Сообщение |
|
Komy_s |
Текстовый |
50 |
Название теста |
||
Otkogo_s |
Текстовый |
50 |
Оценка |
||
Soderganie |
Текстовый |
100 |
Содержание |
Таблица 4. Вопросы
Название поля |
Тип поля |
Длина поля |
Вид поля |
Расшифровка Названия |
|
Id |
Счетчик |
длинное целое |
Ключевое |
Код |
|
Nomer |
Числовой |
длинное целое |
Порядковый номер |
||
Vopros |
Текстовый |
255 |
Вопрос |
Таблица 5. Варианты ответов
Название поля |
Тип поля |
Длина поля |
Вид поля |
Расшифровка Названия |
|
Id |
Счетчик |
длинное целое |
Ключевое |
Код |
|
Vopros |
Числовой |
длинное целое |
Вопрос |
||
Otvet |
Текстовый |
255 |
Ответ |
||
Prav |
Логический |
да/нет |
Правильный |
Таблица 6. Объяснения к вариантам ответов
Название поля |
Тип поля |
Длина поля |
Вид поля |
Расшифровка Названия |
|
Id |
Счетчик |
длинное целое |
Ключевое |
Код |
|
Vopros |
Числовой |
длинное целое |
Вопрос |
||
Obias |
Текстовый |
255 |
Объяснение |
||
Prav |
Логический |
да/нет |
Правильный |
3. Описание программы менеджера
Рисунок 1. Структура программы-менеджера
Клиент- сервер:
В главном окне программы (рисунок 2) в пункте меню «Вход» существует возможность входа в систему в качестве студента или преподавателя, предварительно введя логин и пароль. В пункте «Регистрация» осуществляется регистрация новых пользователей. Пункт меню «О программе» содержит информацию о самой программе и ее разработчиках. Пункт «Выход» осущетвляет выход из программы.
Рисунок 2. Главное меню программы
Регистрация нового пользователя
Регистрация осуществляется нажатием на соответствующую кнопку или нажатием клавиши F4. В окне регистрации необходимо заполнить все данные о пользователе. Ввод фамилии и имени пользователя осуществляется только на русском языке (рисунок 3).
Ввод фамилии и имени
if edit3.Text='' then begin
MessageBox(Handle,PChar('Введите фамилию!'),PChar('Ошибка'), MB_ICONWARNING+MB_DEFBUTTON2);
exit; end;
if edit1.Text='' then begin
MessageBox(Handle,PChar('Введите имя!'),PChar('Ошибка'), MB_ICONWARNING+MB_DEFBUTTON2);
exit;
end;
На данном этапе осуществляется ввод двух строк - fam и name, которые соответствуют фамилии и имени пользователя. Принятие введеной информации осуществляется по нажатию на кнопку «ОК».
Ввод номера группы
if edit2.Text='' then begin
MessageBox(Handle,PChar('Укажите группу!'),PChar('Ошибка'), MB_ICONWARNING+MB_DEFBUTTON2);
exit;
end;
На данном этапе осуществляется ввод номера группы в поле group. Принятие введеной информации осуществляется по нажатию «ОК».
Ввод лоигна
if (datamodule2.ADOTable1.Locate('login',MaskEdit1.Text,[])) then begin
MessageBox(Handle,PChar('Такой логин уже существует!'),PChar('Ошибка'), MB_ICONWARNING+MB_DEFBUTTON2);
form11.MaskEdit1.Text:='';
exit; end;
if form11.MaskEdit1.Text='' then begin
MessageBox(Handle,PChar('Введите логин!'),PChar('Ошибка'), MB_ICONWARNING+MB_DEFBUTTON2);
exit;
end;
На данном этапе осуществляется ввод логина в поле login. Затем производится проверка введенного логинаю Если прочитанный логин совпадает с введенным, то выводится соответствующее сообщение и осуществляется переход к повторному вводу логина.
Ввод пароля
if (datamodule2.ADOTable1.Locate('parol',MaskEdit2.Text,[])) then begin
MessageBox(Handle,PChar('Введенный пароль уже существует!'),PChar('Ошибка'), MB_ICONWARNING+MB_DEFBUTTON2);
form11.MaskEdit2.Text:='';
exit;
end;
if form11.MaskEdit2.Text='' then begin
MessageBox(Handle,PChar('Введите пароль!'),PChar('Ошибка'), MB_ICONWARNING+MB_DEFBUTTON2);
exit;
end;
На данном этапе осуществляется ввод пароля в поле parol. Затем производится проверка введенного пароля. Если прочитанный пароль совпадает с введенным, то выводится соответствующее сообщение и осуществляется переход к повторному вводу пароля.
Формирование имени пользователя:
DataModule2.ADOTable1.FieldValues['login']:=form11.MaskEdit1.Text;
DataModule2.ADOTable1.FieldValues['parol']:=form11.MaskEdit2.Text;
DataModule2.ADOTable1.FieldValues['fam']:=form11.Edit2.Text;
DataModule2.ADOTable1.FieldValues['name']:=form11.Edit3.Text;
DataModule2.ADOTable1.FieldValues['group']:=form11.Edit1.Text;
Таблица, содержащая личные данные пользователей, сцеплением в одну строку следующих компонентов:
· фамилия пользователя;
· имя пользователя;
· номер группы;
· логин.
Запись введенной информации:
DATAMODULE2.ADOTABLE1.INSERT;
DATAMODULE2.ADOTABLE1.POST;
Запись введенных данных о пользователе осуществляется в вспециальную таблицу, котороя хранит данные о всех пользователях.
Рисунок 3. Регистрация нового пользователя
О программе
procedure TAboutBox.OKButtonClick(Sender: TObject);
begin
AboutBox.Close;
end;
end.
При нажатии в главном меню программы на кнопку «О программе», выйдет новое окно, которое содержит информацию о программе и ее создателях (рисунок 4).
Рисунок 4. О программе
Выход из программы
procedure TForm4.N2Click(Sender: TObject);
begin
if application.MessageBox('Вы действительно хотите выйти? ',
'Выход',mb_iconQuestion+mb_yesno)=idyes then
form4.Close;
end;
При нажатиии на кнопку Выход, выведется специальное сообщение. Оно требует подтверждения о выходе из прогрммы (рисунок 5).
Рисунок 5. Выход из программы
3.1 Вход в качестве пользователя
Рисунок 6. Вход через пользователя
Для перехода в главное меню пользователя необходимо в новом окне программы ввести логин и пароль.
Ввод логина и пароля
if not(key in['0'..'9',#9,#13]) then key:=#13; begin
end;
if Key = #13 then begin
if form8.MaskEdit1.Text='' then begin
MessageBox(Handle,PChar('Введите логин!'),PChar('Внимание'), MB_ICONWARNING+MB_DEFBUTTON2);
exit;
end;
if form8.MaskEdit2.Text='' then begin
MessageBox(Handle,PChar('Введите пароль!'),PChar('Внимание'), MB_ICONWARNING+MB_DEFBUTTON2);
exit;
end;
Введенные данные принимаются при нажатии на кнопку «ОК». Ввод осуществляется только любыми буквами или цифрами. Если пароль или логин не введены, то на экран выведутся специальные сообщения (рисунок 7).
Поиск логина и пароля в файле учета пользователей.
Условие 1:
if (form8.MaskEdit1.Text<>datamodule2.adotable1login.Text) or (form8.MaskEdit2.Text<>datamodule2.adotable1parol.Text)then
begin
edit1.Text:=edit1.Text+'a';
if edit1.Text='a' then begin MessageBox(Handle,PChar('Ошибка! У Вас осталось две попытки'),PChar('Ошибка'), MB_ICONWARNING+MB_DEFBUTTON2);
MaskEdit1.clear;
MaskEdit2.clear;
end;
if edit1.Text='aa' then begin MessageBox(Handle,PChar('Ошибка! У Вас осталось одна попытка'),PChar('Ошибка'), MB_ICONWARNING+MB_DEFBUTTON2);
MaskEdit1.clear;
MaskEdit2.clear;
end;
if edit1.Text='aaa' then begin MessageBox(Handle,PChar('Вы ошиблись 3 раза!'),PChar('Ошибка'), MB_ICONWARNING+MB_DEFBUTTON2);
form8.hide;
form4.close;
end;
end;
Это условие проверяет, соответствуют ли прочитанные логин и пароль, хранящиеся в таблице, введенным на предыдущем шаге. Если это условие не выполняется, то на экран выводится специальное сообщение. Если пароль и логин 3 раза были неправильно введены, осуществится обратный переход к главному меню программы.
Условие 2:
if (form8.MaskEdit1.Text=datamodule2.adotable1login.Text) and (form8.MaskEdit2.Text=datamodule2.adotable1parol.Text) then
begin
form9.show;
DataModule2.adotable1.Filtered:=true;
DataModule2.adotable1.Filter:='login='+quotedstr(MaskEdit1.Text);
form9.Label2.Caption:=datamodule2.ADOTable1fam.Text;
form9.Label3.Caption:=datamodule2.ADOTable1name.Text;
form9.Label4.Caption:=datamodule2.ADOTable1group.Text;
form8.Hide;
end;
Это условие проверяет, соответствуют ли прочитанные логин и пароль, хранящиеся в таблице, введенным на предыдущем шаге. Если это условие выполняется, то осуществляется переход к меню пользователя.
Рисунок 7. Ввод логина и пароля
Главное меню пользователя:
В главном меню пользователю предлагется выбрать один из пунков с помощью выбора соответсвующего пункта меню (рисунок 8). При нажатии клавишы на пункт меню Файл- Прочитать лекции пользователь имеет возможность перейти к тестам. В пункте меню Файл-Пройти тест пользователь имеет возможность пройти один из существующих тестов. Выбрав пункт меню Сообщения пользователь может отправить сообщение преподавателю или прочитать полученные им сообщения. В пункте меню «Назад» осуществляется возврат в главно е менню программы.
Рисунок 8. Меню пользователя
3.1.1 Переход к тестам
Для этого нужно в пункте меню пользователя выбрать вкладку «Пройти тест». Затем в новом окне выбрать нужную вкладку.
Рисунок 9. Меню теста
1)Установление режима прохождения тестов (рисунок 10):
Рисунок 10. Установление режима прохождения тестов
Установление режима по умолчанию:
Для этого необходимо нажать на кнопку «Начать тест» (рисунок 9). Перед пользователем появиться окно, содержащее в себе вопросы теста, варианты ответа и пояснения к этим вариантам. Переход к следующему вопросу осуществляется нажатием на кнопку «Далее» (рисунок 11).
procedure Ttesti.Vopros(nomer:integer);
begin
DataModule2.Vopros.Locate('Номер',mass[nomer],[]);
DataModule2.Variant.First;
RadioButton1.Caption:=DataModule2.Variant.FieldValues['Ответ'];
if DataModule2.Variant.FieldValues['Правильный']=true then
RadioButton1.Tag:=1 else RadioButton1.Tag:=0;
DataModule2.Obyasnenie.First;
RadioButton5.Caption:=DataModule2.Obyasnenie.FieldValues['Объяснение'];
if DataModule2.Obyasnenie.FieldValues['Правильный']=true then
RadioButton5.Tag:=1 else RadioButton5.Tag:=0;
end;
2) Поиск агента в таблице хранения вопросов к тесту:
procedure Ttesti.Vopros(nomer:integer);
begin
DataModule2.Vopros.Locate('Номер',mass[nomer],[]);
DataModule2.Variant.First;
RadioButton1.Caption:=DataModule2.Variant.FieldValues['Ответ'];
3) Копирование результатов теста в таблицу учета сдачи тестов Rezultаti:
datamodule2.ADOTable3.Insert;
datamodule2.ADOTable3.FieldByName('rezultat').Value:=cena;
datamodule2.ADOTable3.FieldByName('fam').Value:=form9.Label2.Caption;
datamodule2.ADOTable3.FieldByName('name').Value:=form9.Label3.Caption;
datamodule2.ADOTable3.FieldByName('group').Value:=form9.Label4.Caption;
datamodule2.ADOTable3.FieldByName('data').Value:=datetostr(date);
datamodule2.ADOTable3.Post;
После прохождения теста в таблицу Rezultati записывается количество набранных баллов(rezultat), фамилия студента (fam), количество отвеченных имя студента (name) и группа, в которой он учится (group), дата прохождения теста (date).
4) Копирование результатов теста в файл учета сдачи тестов Rezultаti.txt:
if fileexists(put_k_data_base+rasshirenie_file_data_base) then
begin
assignfile(file_db,put_k_data_base+rasshirenie_file_data_base);
append(file_db);
end
else
begin
assignfile(file_db,put_k_data_base+rasshirenie_file_data_base);
rewrite(file_db);
end;
writeln(file_db,'Имя '+form9.Label3.Caption);
writeln(file_db,'Фамилия '+form9.Label2.Caption);
writeln(file_db,'Группа '+form9.Label4.Caption);
writeln(file_db,'Дата '+datetostr(date));
writeln(file_db,'Время '+timetostr(time));
writeln(file_db,'Результат '+cena);
writeln(file_db,' ');
closefile(file_db);
После прохождения теста в файл Rezultati.txt записывается количество набранных баллов(cena), фамилия студента (fam), количество отвеченных имя студента (name) и группа, в которой он учится (group), дата и время прохождения теста (date, time).
Рисунок 11. Прохождение теста
5) Справка
procedure Tabout.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
IF TDBGrid(Sender).DataSource.DataSet.RecNo mod 2 = 1
Then TDBGrid(Sender).Canvas.Brush.Color:=$00FFC6C6 else
TDBGrid(Sender).Canvas.Brush.Color:=$00FFD7EB;
IF gdSelected IN State
Then Begin
TDBGrid(Sender).Canvas.Brush.Color:=clWindow;
TDBGrid(Sender).Canvas.Font.Color:=clWindowText;
End;
TDBGrid(Sender).DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
В этом пункте содержится полная инструкция о том, как осуществляется процесс прохождения теста
3.1.2 Переход к лекция
procedure TForm18.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
end;
Переход к лекциям осуществляется выбором пенкта меню «Файл»- «Прочитать лекции», после чего в новом окне в пункте «Файл» - «Открыть»
3.1.3 Сообщения
1) Отправка сообщений
procedure TForm12.Button1Click(Sender: TObject);
begin
if form12.Memo1.Text='' then
begin
MessageBox(Handle,PChar('Ваше не содержит текста!'),PChar('Ошибка'), MB_ICONWARNING+MB_DEFBUTTON2); exit; end;
DataModule2.ADOTable4.Insert;
DataModule2.ADOTable4.FieldValues['ot_kogo']:=form9.Label2.Caption+' '+form9.Label3.Caption;
DataModule2.ADOTable4.FieldValues['soderganie']:=form12.Memo1.Text;
DataModule2.ADOTable4.FieldValues['komy']:=form12.Edit1.Text;
DataModule2.ADOTable4.FieldValues['data']:=datetostr(date);
datamodule2.ADOTable4.Post;
{form9.Label2.Caption:=form11.Edit3.Text;
form9.Label3.Caption:=form11.Edit1.Text;
form9.Label4.Caption:=form11.Edit2.Text;
form12.Close;
Application.MessageBox('Сообщение доставлено!','Готово',MB_OK or MB_ICONINFORMATION);
form9.show;end;
Для отправки нового сообщения необходимо в меню пользователя выбрать пункт меню «Сообщения» - «Отправить новое сообщение» (рисунок 14). Далее в новом окне ввести текст сообщения и нажать на кнопку отправить. Отправка сообщений возможна только преподавателю.
2) Чтение полученных сообщений
procedure TForm17.DBGrid1DblClick(Sender: TObject);
begin
form15.show;
form15.Edit1.Text:=form17.DBGrid1.SelectedField.DataSet.FieldValues['ot_kogo'];
form15.Memo1.Text:= form17.DBGrid1.SelectedField.DataSet.FieldValues['soderganie'];
form17.Close;
end;
Чтение полученных сообщений осуществляется в два этапа.
При выборе первого подпункта перед пользователем появляется список всех входящих сообщений (рисунок 15).
При двойном щелчке на определенном сообщении оно открывается в режиме просмотра для пользователя. Здесь, нажав на кнопку «Ответить», можно ответить на сообщении (рисунок 16).
Procedure Tform15.Button2Click(Sender: Tobject);
begin
if form15.Edit1.Text='Преподаватель'then begin form12.show;
form12.Edit1.Text:=form15.Edit1.Text;
form15.Edit1.Text:='';
form15.Memo1.Text:='';
form15.Close;
end
else
form13.show;
form13.Edit1.Text:=form15.Edit1.Text;
form15.Close;
end;
3.1.4 Выход
procedure TForm9.N5Click(Sender: TObject);
begin
form4.show;
form9.Close;
end;
При нажатии в главном меню пользователя кнопки «Назад» открывается главное окно программы.
3.2 Вход в качестве преподавателя
Рисунок 17. Вход через преподавателя
Ввод и проверка пароля:
procedure TForm5.MaskEdit1KeyPress(Sender: TObject; var Key: Char);
var
i:integer;
begin
if form5.MaskEdit1.Text='' then begin
MessageBox(Handle,PChar('Введите пароль!'),PChar('Внимание'), MB_ICONWARNING+MB_DEFBUTTON2);
exit; end
else
if (form5.MaskEdit1.Text='') or (form5.MaskEdit1.Text<>datamodule2.ADOTable2key2.text) then begin
edit1.Text:=edit1.Text+'a';
if edit1.Text='a' then begin MessageBox(Handle,PChar('Пароль введен не верно! У Вас осталось две попытки'),PChar('Ошибка'), MB_ICONWARNING+MB_DEFBUTTON2);
MaskEdit1.clear; end;
if edit1.Text='aa' then begin MessageBox(Handle,PChar('Пароль введен не верно! У Вас осталось одна попытка'),PChar('Ошибка'), MB_ICONWARNING+MB_DEFBUTTON2);
MaskEdit1.clear; end;
if edit1.Text='aaa' then begin MessageBox(Handle,PChar('Пароль 3 раза был введен не верно!'),PChar('Ошибка'), MB_ICONWARNING+MB_DEFBUTTON2);
form1.hide;
form4.show; end; end;
if (form5.MaskEdit1.Text=datamodule2.ADOTable2key2.text) then begin
form6.show;
form5.Hide;
form5.MaskEdit1.Clear;
end;
После выбора в главном меню программы пункта «Преподаватель», необходимо в новом окне ввода пароля подтвердить пароль. В этом же окне можно сменить пароль, нажав на соответствующую кнопку (рисунок 18).
Рисунок 18. Ввод пароля
Смена пароля:
procedure TForm7.Image1Click(Sender: TObject);
var
i:integer;
begin
datamodule2.ADOTable2.Edit;
datamodule2.ADOTable2key2.text:=form7.MaskEdit2.Text;
datamodule2.ADOTable2.Post;
Application.MessageBox('Пароль был сохранен успешно!','Готово',MB_OK or MB_ICONINFORMATION);
form6.show;
form7.Hide;
end;
end;
Для смены пароля необходимо подтвердить старый пароль, а затем ввести новый пароль и нажать на кнопку «ОК» (рисунок 19).
Рисунок 19. Смена пароля
Меню преподавателя:
В меню преподавателя предлагется выбрать один из пунков. В пункте меню «Файл» - «Тесты» преподаватель может осуществить переход к тестам. В пункте «Написать лекции» можно добавить новый лекции. А в пункте «Просмотреть результаты» преподаватель осуществляет просмотр результатов сдачи тестов студентами (рисунок 20).
Рисунок 20. Меню преподавателя
3.2.1 Результаты пользователей
Рисунок 21. Структура меню «Результаты пользователя»
Вывод списка пользователей:
procedure TForm10.BitBtn2Click(Sender: TObject);
begin
form6.show;
form10.Close;
end;
procedure TForm10.N1Click(Sender: TObject);
begin
if application.MessageBox('Удалить эту запись? ',
'Удаление',mb_iconQuestion+mb_yesno)=idyes then
datamodule2.ADOTable3.Delete;
end;
В этом пункте содержит список всех студентов прошедших тестирование. Этот список можно редактировать, путем удаления из него пользователей (рисунок 22).
Рисунок 22. Просмотр результатов
Выход в главное меню:
procedure TForm10.N2Click(Sender: TObject);
begin
form6.show;
form10.Close;
end;
end.
При нажатии на кнопку «Нзад» таблица учета пользователей закрывается и происходит переход в меню преподавателя.
3.2.2 Просмотр и редактирование тестов
Просмотр и редактирование списка агентов (рисунок 23):
Рисунок 24. Структура меню «Просмотр и редактирование списка агентов»
Вывод списка агентов:
procedure TForm1.RadioButton1Click(Sender: TObject);
begin
testi.Show;
testi.Button2Click(Sender);
Form1.Visible:=false;
end;
Вывод списка агентов заключается в чтении из базы данных таблиц, содержащих в себе вопросы к тестам.
Переход к редактированию теста:
procedure TEdittest.DBGrid2DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
IF TDBGrid(Sender).DataSource.DataSet.RecNo mod 2 = 1
Then TDBGrid(Sender).Canvas.Brush.Color:=$00FFC6C6 else
TDBGrid(Sender).Canvas.Brush.Color:=$00FFD7EB;
IF gdSelected IN State
Then Begin
TDBGrid(Sender).Canvas.Brush.Color:=clWindow;
TDBGrid(Sender).Canvas.Font.Color:=clWindowText;
End;
TDBGrid(Sender).DefaultDrawColumnCell(Rect,DataCol,Column,State);
if (Column.FieldName = 'Правильный') then
if Column.Field.AsBoolean=true then
DrawGridCheckBox(TDBGrid(Sender).Canvas, Rect, True)
else
DrawGridCheckBox(TDBGrid(Sender).Canvas, Rect, False);
end;
В данном режиме преводаватель может внести изменения в тест (рисунок 24). Это осуществляется путем изменения данных в вопросе, варианте ответа на вопрос или объяснения к данному вариенту ответа.
Рисунок 24. Редактирование теста
Выход в главное меню:
procedure Edittest.RadioButton1Click(Sender: TObject);
begin
Edittest.Close;
Form1.Show
end;
3.2.3 Установление режима прохождения тестов
Рисунок 25. Структура меню «Установление режима прохождения тестов»
Установление режима по умолчанию:
Для этого необходимо нажать на кнопку «Начать тест». Перед пользователем появиться окно, содержащее в себе вопросы теста, варианты ответа и пояснения к этим вариантам. Переход к следующему вопросу осуществляется нажатием на кнопку «Далее».
procedure Ttesti.Button1Click(Sender: TObject);
var i:integer;
RB:TRadioButton;
cena:string;
file_db:textfile;
begin
if ((RadioButton1.Checked=true) or
(RadioButton2.Checked=true) or
(RadioButton3.Checked=true) or
(RadioButton4.Checked=true) )
and
((RadioButton5.Checked=true) or
(RadioButton6.Checked=true) or
(RadioButton7.Checked=true) or
(RadioButton8.Checked=true) ) then
begin
for i := 0 to GroupBox1.ControlCount-1 do begin
RB:=TRadioButton(GroupBox1.Controls[i]);
if RB.Checked=true then
Label1.Caption:=inttostr(strtoint(Label1.Caption)+RB.Tag);
end;
for i := 0 to GroupBox2.ControlCount-1 do
begin
RB:=TRadioButton(GroupBox2.Controls[i]);
if RB.Checked=true then
Label1.Caption:=inttostr(strtoint(Label1.Caption)+RB.Tag);
end;
if strtoint(Label2.Caption)<11 then begin
Vopros(strtoint(Label2.Caption));
testi.Caption:='Тестирование. Вопрос '+inttostr(strtoint(Label2.Caption)-1)+' из 10';
end
3.2.4 Сообщения
1) Отправка сообщений
procedure TForm12.Button1Click(Sender: TObject);
begin
DataModule2.ADOTable4.Insert;
DataModule2.ADOTable4.FieldValues['ot_kogo']:=form9.Label2.Caption+' '+form9.Label3.Caption;
DataModule2.ADOTable4.FieldValues['soderganie']:=form12.Memo1.Text;
DataModule2.ADOTable4.FieldValues['komy']:=form12.Edit1.Text;
DataModule2.ADOTable4.FieldValues['data']:=datetostr(date);
datamodule2.ADOTable4.Post;
{form9.Label2.Caption:=form11.Edit3.Text;
form9.Label3.Caption:=form11.Edit1.Text;
form9.Label4.Caption:=form11.Edit2.Text;
form12.Close;
form9.show;
end;
Для отправки нового сообщения необходимо в меню преподавателявыбрать пункт меню «Сообщения» - «Отправить новое сообщение». Далее в окне отпраки сообщений указать пользователя, которомуотправляется сообщение. Это делается нажатием на кнопку «Выбрать…». В появившемся списке, двойным щелчком мыши, выбирается пользователь. Затем вводится текст сообщения и нажатием на кнопку «Отправить» осуществляется доставка сообщения пользователю (рисунок 26).
Рисунок 26. Отправка сообщений
2) Чтение полученных сообщений
procedure TForm17.DBGrid1DblClick(Sender: TObject);
begin
form15.show;
form15.Edit1.Text:=form17.DBGrid1.SelectedField.DataSet.FieldValues['ot_kogo'];
form15.Memo1.Text:= form17.DBGrid1.SelectedField.DataSet.FieldValues['soderganie'];
form17.Close;
end;
Чтение полученных сообщений осуществляется в два этапа. При выборе первого подпункта перед пользователем появляется список всех входящих сообщений, из которых он может выбрать какое - то определенное сообщение и ответить на него.
При двойном щелчке на определенном сообщении, оно открывается в режиме просмотра для пользователя. Здесь, нажав на кнопку «Ответить», можно ответить на сообщении.
procedure TForm15.Button2Click(Sender: TObject);
begin
if form15.Edit1.Text='Преподаватель'then begin form12.show;
form12.Edit1.Text:=form15.Edit1.Text;
form15.Edit1.Text:='';
form15.Memo1.Text:='';
form15.Close;
end
else
form13.show;
form13.Edit1.Text:=form15.Edit1.Text;
form15.Close;
end;
3.2.5 Добавление новых лекций
Сохранение новой лекции:
procedure TForm18.Button2Click(Sender: TObject);
begin
with SaveDialog1, Memo1 do
if Execute then
begin
Lines.SaveToFile(FileName);
OpenDialog1.FileName:=FileName; // Чтобы исправленный текст не затёр источник
end;
end;
В данном пункте преподавателю дается возможность написания новых лекций для пользователей. Для этого в окне редактора необходимо набрать текст лекции и нажать в пункте меню «Файл» на кнопку «Сохранить как».
Редактирование лекции:
procedure TForm18.Button3Click(Sender: TObject);
begin
if application.MessageBox('Сохранить изменения в файле? ',
'Сохранение',mb_iconQuestion+mb_yesno)=idyes then
Memo1.Lines.SaveToFile(OpenDialog1.FileName); // Сохраняем туда, откуда считали
form18.Memo1.Text:='';
end;
Также существует возможность редактирования уже существующих в списке лекций. В этом случае в пункте меню «Файл» выбрать кнопку «Открыть», затем отредактировать текст, а для сохранения изменений необходимо нажать на кнопку «Сохранить».
3.2.6 Выход
procedure TForm6.N2Click(Sender: TObject);
begin
form4.show;
form6.Close;
end;
Выход осуществляется нажатием на кнопку «Назад». При нажатии в меню преподавателя кнопки «Назад» открывается главное меню программы.
4. Описание теста
Рисунок 27. Структура теста
Структура обучающего теста представлена на рисунке 27. Все используемых в нашей системе обучающих тесты имеют одинаковую структуру. Они отличаются лишь тем, что осуществляют работу с разными файлами-вопросниками.
Объявление переменных:
const
put_k_data_base='Rezultati';
rasshirenie_file_data_base='.txt';
var
testi: Ttesti;
mass: array of integer; //массив над которым будем извращаться
Открытие таблицы с вопросами:
DataModule2.Vopros.Locate('Номер',mass[nomer],[]);
DataModule2.Variant.First;
RadioButton1.Caption:=DataModule2.Variant.FieldValues['Ответ'];
if DataModule2.Variant.FieldValues['Правильный']=true then
RadioButton1.Tag:=1 else RadioButton1.Tag:=0;
DataModule2.Obyasnenie.First;
RadioButton5.Caption:=DataModule2.Obyasnenie.FieldValues['Объяснение'];
if DataModule2.Obyasnenie.FieldValues['Правильный']=true then
RadioButton5.Tag:=1 else RadioButton5.Tag:=0;
В данной курсовой работе используется тест, вопросы которого хранятся в виде таблицы под названием «Вопросы».
Подсчет количества вопросов в тесте:
for i := 0 to GroupBox1.ControlCount-1 do
begin
RB:=TRadioButton(GroupBox1.Controls[i]);
if RB.Checked=true then
Label1.Caption:=inttostr(strtoint(Label1.Caption)+RB.Tag);
end;
for i := 0 to GroupBox2.ControlCount-1 do
begin
RB:=TRadioButton(GroupBox2.Controls[i]);
Подсчет количества вопросов втесте осуществляется построчно из таблицы тестов.
Сохранение правильных ответов:
datamodule2.ADOTable3.Insert;
datamodule2.ADOTable3.FieldByName('rezultat').Value:=cena;
datamodule2.ADOTable3.FieldByName('fam').Value:=form9.Label2.Caption;
datamodule2.ADOTable3.FieldByName('name').Value:=form9.Label3.Caption;
datamodule2.ADOTable3.FieldByName('group').Value:=form9.Label4.Caption;
datamodule2.ADOTable3.FieldByName('data').Value:=datetostr(date);
datamodule2.ADOTable3.Post;
if fileexists(put_k_data_base+rasshirenie_file_data_base) then
begin
assignfile(file_db,put_k_data_base+rasshirenie_file_data_base);
append(file_db);
end
else
begin
assignfile(file_db,put_k_data_base+rasshirenie_file_data_base);
rewrite(file_db);
end;
writeln(file_db,'Имя '+form9.Label3.Caption);
writeln(file_db,'Фамилия '+form9.Label2.Caption);
writeln(file_db,'Группа '+form9.Label4.Caption);
writeln(file_db,'Дата '+datetostr(date));
writeln(file_db,'Время '+timetostr(time));
writeln(file_db,'Результат '+cena);
writeln(file_db,' ');
closefile(file_db);
Результаты сдачи теста заносятся в специальную таблицу и также сохраняютя в тектовом файле.
Вывод статистики на экран:
if strtoint(Label1.Caption)>16 then
cena:='5' else
if strtoint(Label1.Caption)>13 then
cena:='4' else
if strtoint(Label1.Caption)>9 then
cena:='3' else
cena:='2';
if MessageDlg('Набрано баллов '+Label1.Caption+'.'+#13+
'Ваша оценка: '+cena+'!',
mtConfirmation, [mbYes], 0)=mrYes then
Заключение
Программа с клиент - серверной архитектурой взаимодействует с пользователе через главное меню программы, где пользователю предлагается войти в систему или зарегистрироваться.
Регистрация - это сохранения данных о пользователе, таких как имя, фамилия, номер группы, логин, пароль втаблице для хранения личных данных о студентах.
Вход в систему - ввод логина и пароля.
Данные о пользователе хранятся в таблице, куда и будут сохраняться данные о ходе его обучения.
После входа в систему перед пользователем появиться меню, в котором он сможет выбрать свои дальнейшие действия.
Преподаватель может создавать и редактировать лекции и тесты, которые предлагается пройти студентам. Также преподаватель устанавливает порядок прохождения тестов. Связь со студентами происходит с помощью сообщений.
После осуществления выбора пользователь сможет прочитать полный курс лекций по лданному премету, либо пройти тест. Прохождение каждого теста осуществляется только один раз.
При прохождении теста пользовательотвечает на вопросы по конуретному курсу обучения. Информация о студенте и результате сдачи теста записывается в таблицу и тестовый файл.
Преподаватель проходит идентификацию посредством ввода пароля, который хранится в специальном массиве. Если пароль введен верно, то преподаватель переходит в главное меню, где у него имеется возможность:
· просматривать и редактировать списки зарегистрированных пользователей;
· просматривать и удалять результаты прохождения конкретным пользователем конкретного теста;
· просматривать и редактировать списки лекции и тесты.
Разработать программу с клиент - серверной архитектурой, с помощью которой будет осуществляться связь преподавателя со студентами и доступ к информации, неоходимой для обучения студентов. Информация о студентах и результатах сдачи тестов будут храниться в специально отведенной для этого базе данных.
Список литературы
1.В. П. Алдонин, И. В. Волдайская, Visual FoxPro 9.0 для студентов ВУЗов. Изд. М. Инфра - М, 2010г., 224 с. с ил.
2.Т. В. Мусина, Visual FoxPro 9.0. Учебный курс - К.: ВЕК+, СПб.: КОРОНА-ВЕК, 2007, 528 с. с ил.
3.Т. Л. Омельченко, И.И. Попов, Самоучитель Visual FoxPro 9.0. Изд. М. Инфра - М, 2009г., 464 с. с ил.
4.В. В. Попкова, И. Н. Рогожкина, Delphi 7.0. Изд. М. Юнити-Дана, 2010 г.,470с.
5.А.А. Филимонова, В. П. Малышкин ,Delphi самоучитель. Изд. М. Триумф,2011г., 200с. с ил.
Приложение
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
GroupBox1: TGroupBox;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
RadioButton3: TRadioButton;
RadioButton4: TRadioButton;
procedure RadioButton1Click(Sender: TObject);
procedure RadioButton2Click(Sender: TObject);
procedure RadioButton3Click(Sender: TObject);
procedure RadioButton4Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
uses DM, DB, testirovanie, Unit2, Unit3, Unit9;
procedure TForm1.RadioButton1Click(Sender: TObject);
begin
testi.Show;
testi.Button2Click(Sender);
Form1.Visible:=false;
end;
procedure TForm1.RadioButton2Click(Sender: TObject);
begin
Edittest.Show;
Form1.Visible:=false;
end;
procedure TForm1.RadioButton3Click(Sender: TObject);
begin
about.Show;
end;
procedure TForm1.RadioButton4Click(Sender: TObject);
begin
form1.Close;
form1.RadioButton2.Enabled:=true;
end; end.
unit Unit4;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, jpeg, ExtCtrls;
type
TForm4 = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
Image1: TImage;
N6: TMenuItem;
procedure N3Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N6Click(Sender: TObject);
private
public
end;
var
Form4: TForm4;
implementation
uses Unit5, Unit8, Unit11, Unit19;
procedure TForm4.N3Click(Sender: TObject);
begin
form4.hide;
form5.show;
end;
procedure TForm4.N4Click(Sender: TObject);
begin
form8.show;
form4.Hide;
end;
procedure TForm4.N2Click(Sender: TObject);
begin
if application.MessageBox('Вы действительно хотите выйти? ',
'Выход',mb_iconQuestion+mb_yesno)=idyes then
form4.Close;
end;
procedure TForm4.N5Click(Sender: TObject);
begin
form4.Hide;
form11.show;
end;
procedure TForm4.N6Click(Sender: TObject);
begin
AboutBox.Show;
end;
end.
unit Unit5;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, jpeg, ExtCtrls, Mask, StdCtrls;
type
TForm5 = class(TForm)
GroupBox1: TGroupBox;
Label1: TLabel;
Edit1: TEdit;
MaskEdit1: TMaskEdit;
Image1: TImage;
Image2: TImage;
Image3: TImage;
Label2: TLabel;
procedure Image1Click(Sender: TObject);
procedure Image2Click(Sender: TObject);
procedure Label2Click(Sender: TObject);
procedure MaskEdit1KeyPress(Sender: TObject; var Key: Char);
procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image2MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
public
end;
var
Form5: TForm5;
implementation
uses DM, Unit1, Unit6, Unit4, Unit7, Unit9;
procedure TForm5.Image1Click(Sender: TObject);
var
i:integer;
begin
if form5.MaskEdit1.Text='' then begin
MessageBox(Handle,PChar('Введите пароль!'),PChar('Внимание'), MB_ICONWARNING+MB_DEFBUTTON2);
exit; end
else
if (form5.MaskEdit1.Text='') or (form5.MaskEdit1.Text<>datamodule2.ADOTable2key2.text) then
begin
edit1.Text:=edit1.Text+'a';
if edit1.Text='a' then begin MessageBox(Handle,PChar('Пароль введен не верно! У Вас осталось две попытки'),PChar('Ошибка'), MB_ICONWARNING+MB_DEFBUTTON2);
MaskEdit1.clear;
end;
if edit1.Text='aa' then begin MessageBox(Handle,PChar('Пароль введен не верно! У Вас осталось одна попытка'),PChar('Ошибка'), MB_ICONWARNING+MB_DEFBUTTON2);
MaskEdit1.clear;
end;
if edit1.Text='aaa' then begin MessageBox(Handle,PChar('Пароль 3 раза был введен не верно!'),PChar('Ошибка'), MB_ICONWARNING+MB_DEFBUTTON2);
form1.hide;
form4.show;
end; end;
if (form5.MaskEdit1.Text=datamodule2.ADOTable2key2.text) then
begin
form6.show;
form5.Hide;
form5.MaskEdit1.Clear;
end; end;
procedure TForm5.Image2Click(Sender: TObject);
begin
form4.Show;
form5.Close;
end;
procedure TForm5.Label2Click(Sender: TObject);
begin
form7.show;
form5.Close;
end;
procedure TForm5.MaskEdit1KeyPress(Sender: TObject; var Key: Char);
var
i:integer;
begin
if not(key in['0'..'9',#9,#13]) then key:=#13; begin
end;
if Key = #13 then begin
if form5.MaskEdit1.Text='' then begin
MessageBox(Handle,PChar('Введите пароль!'),PChar('Внимание'), MB_ICONWARNING+MB_DEFBUTTON2);
exit; end
else
if (form5.MaskEdit1.Text='') or (form5.MaskEdit1.Text<>datamodule2.ADOTable2key2.text) then
begin
edit1.Text:=edit1.Text+'a';
if edit1.Text='a' then begin MessageBox(Handle,PChar('Пароль введен не верно! У Вас осталось две попытки'),PChar('Ошибка'), MB_ICONWARNING+MB_DEFBUTTON2);
MaskEdit1.clear;
end;
if edit1.Text='aa' then begin MessageBox(Handle,PChar('Пароль введен не верно! У Вас осталось одна попытка'),PChar('Ошибка'), MB_ICONWARNING+MB_DEFBUTTON2);
MaskEdit1.clear;
end;
if edit1.Text='aaa' then begin MessageBox(Handle,PChar('Пароль 3 раза был введен не верно!'),PChar('Ошибка'), MB_ICONWARNING+MB_DEFBUTTON2);
form1.hide;
form4.show;
end; end;
if (form5.MaskEdit1.Text=datamodule2.ADOTable2key2.text) then
begin
form6.show;
form5.Hide;
form5.MaskEdit1.Clear;
end; end; end;
procedure TForm5.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Image1.Left := Image1.Left + 1; Image1.Top := Image1.Top + 1;
end;
procedure TForm5.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Image1.Left := Image1.Left - 1; Image1.Top := Image1.Top - 1;
end;
procedure TForm5.Image2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Image2.Left := Image2.Left + 1; Image2.Top := Image2.Top + 1;
end;
procedure TForm5.Image2MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Image2.Left := Image2.Left - 1; Image2.Top := Image2.Top - 1;
end;
end.
unit Unit6;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, jpeg, ExtCtrls, StdCtrls;
type
TForm6 = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
Image1: TImage;
Label1: TLabel;
procedure N2Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N9Click(Sender: TObject);
procedure N10Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N3Click(Sender: TObject);
private
public
end;
var
Form6: TForm6;
implementation
uses Unit4, Unit10, Unit13, Unit15, DM, Unit16, Unit1, Unit9, Unit18;
procedure TForm6.N2Click(Sender: TObject);
begin
form4.show;
form6.Close;
end;
procedure TForm6.N5Click(Sender: TObject);
begin
form10.show;
form6.Close;
end;
procedure TForm6.N6Click(Sender: TObject);
begin
form13.show;
end;
procedure TForm6.N9Click(Sender: TObject);
begin
form13.show;
end;
procedure TForm6.N10Click(Sender: TObject);
begin
form16.Show;
DataModule2.adotable4.Filtered:=true;
DataModule2.adotable4.Filter:='komy='+quotedstr('Преподаватель');
end;
procedure TForm6.N4Click(Sender: TObject);
begin
form9.Label2.Caption:='Преподаватель';
form9.Label3.Caption:='преподаватель';
form9.Label4.Caption:='000';
form1.show;
form1.RadioButton2.Enabled:=true;
end;
procedure TForm6.N3Click(Sender: TObject);
begin
{WinExec('C:\Windows\notepad.exe',SW_NORMAL);/}
form18.show;
form18.N4.Enabled:=true;
form18.N5.Enabled:=true;
form18.N7.Enabled:=true;
end;
end.
unit Unit7;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, jpeg, ExtCtrls, Mask, StdCtrls;
type
TForm7 = class(TForm)
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
MaskEdit1: TMaskEdit;
MaskEdit2: TMaskEdit;
Image1: TImage;
Image2: TImage;
procedure Image1Click(Sender: TObject);
procedure Image2Click(Sender: TObject);
procedure Image2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image2MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
public
end;
var
Form7: TForm7;
implementation
uses DM, Unit4, Unit6, Unit5, Unit9;
procedure TForm7.Image1Click(Sender: TObject);
var
i:integer;
begin
if form7.MaskEdit1.Text='' then begin
MessageBox(Handle,PChar('Введите пароль!'),PChar('Внимание'), MB_ICONWARNING+MB_DEFBUTTON2);
exit; end else
if (form7.MaskEdit1.Text='') or (form7.MaskEdit1.Text<>datamodule2.ADOTable2key2.text) then
begin
edit1.Text:=edit1.Text+'a';
if edit1.Text='a' then begin MessageBox(Handle,PChar('Пароль введен не верно! У Вас осталось две попытки'),PChar('Ошибка'), MB_ICONWARNING+MB_DEFBUTTON2);
MaskEdit1.clear;
MaskEdit2.clear;
end;
if edit1.Text='aa' then begin MessageBox(Handle,PChar('Пароль введен не верно! У Вас осталось одна попытка'),PChar('Ошибка'), MB_ICONWARNING+MB_DEFBUTTON2);
MaskEdit1.clear;
MaskEdit2.clear; end;
if edit1.Text='aaa' then begin MessageBox(Handle,PChar('Пароль 3 раза был введен не верно!'),PChar('Ошибка'), MB_ICONWARNING+MB_DEFBUTTON2);
form7.hide;
form4.show;
end; end;
if (form7.MaskEdit1.Text=datamodule2.ADOTable2key2.text) then
begin
datamodule2.ADOTable2.Edit;
datamodule2.ADOTable2key2.text:=form7.MaskEdit2.Text;
datamodule2.ADOTable2.Post;
Application.MessageBox('Пароль был сохранен успешно!','Готово',MB_OK or MB_ICONINFORMATION);
form6.show;
form7.Hide;
end;
form7.MaskEdit1.Clear;
form7.MaskEdit1.Clear;
end;
procedure TForm7.Image2Click(Sender: TObject);
begin
form5.show;
form7.Close;
end;
procedure TForm7.Image2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Image2.Left := Image2.Left + 1; Image2.Top := Image2.Top + 1;
end;
procedure TForm7.Image2MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Image2.Left := Image2.Left - 1; Image2.Top := Image2.Top - 1;
end;
procedure TForm7.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Image1.Left := Image1.Left + 1; Image1.Top := Image1.Top + 1;
end;
procedure TForm7.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Image1.Left := Image1.Left - 1; Image1.Top := Image1.Top - 1;
end;
end.
unit Unit8;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, jpeg, ExtCtrls, Mask, StdCtrls;
type
TForm8 = class(TForm)
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
MaskEdit1: TMaskEdit;
MaskEdit2: TMaskEdit;
Image1: TImage;
Image2: TImage;
Label3: TLabel;
procedure Image2Click(Sender: TObject);
procedure Image1Click(Sender: TObject);
procedure MaskEdit2KeyPress(Sender: TObject; var Key: Char);
procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image2MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
Private public
end;
var
Form8: TForm8;
implementation
uses DM, Unit4, Unit5, Unit9;
procedure TForm8.Image2Click(Sender: TObject);
begin
form8.Close;
form4.show;
end;
procedure TForm8.Image1Click(Sender: TObject);
var
i:integer;
begin
if form8.MaskEdit1.Text='' then begin
MessageBox(Handle,PChar('Введите логин!'),PChar('Внимание'), MB_ICONWARNING+MB_DEFBUTTON2);
exit;
end;
if form8.MaskEdit2.Text='' then begin
MessageBox(Handle,PChar('Введите пароль!'),PChar('Внимание'), MB_ICONWARNING+MB_DEFBUTTON2);
exit; end else
if (form8.MaskEdit1.Text<>datamodule2.adotable1login.Text) or (form8.MaskEdit2.Text<>datamodule2.adotable1parol.Text)then
begin
edit1.Text:=edit1.Text+'a';
if edit1.Text='a' then begin MessageBox(Handle,PChar('Ошибка! У Вас осталось две попытки'),PChar('Ошибка'), MB_ICONWARNING+MB_DEFBUTTON2);
MaskEdit1.clear;
MaskEdit2.clear;
end;
if edit1.Text='aa' then begin MessageBox(Handle,PChar('Ошибка! У Вас осталось одна попытка'),PChar('Ошибка'), MB_ICONWARNING+MB_DEFBUTTON2);
MaskEdit1.clear;
MaskEdit2.clear;
end;
if edit1.Text='aaa' then begin MessageBox(Handle,PChar('Вы ошиблись 3 раза!'),PChar('Ошибка'), MB_ICONWARNING+MB_DEFBUTTON2);
form8.hide;
form4.close;
end; end;
if (form8.MaskEdit1.Text=datamodule2.adotable1login.Text) and (form8.MaskEdit2.Text=datamodule2.adotable1parol.Text) then
begin
form9.show;
DataModule2.adotable1.Filtered:=true;
DataModule2.adotable1.Filter:='login='+quotedstr(MaskEdit1.Text);
form9.Label2.Caption:=datamodule2.ADOTable1fam.Text;
form9.Label3.Caption:=datamodule2.ADOTable1name.Text;
form9.Label4.Caption:=datamodule2.ADOTable1group.Text;
form8.Hide;
form8.MaskEdit1.Clear;
form8.MaskEdit2.Clear;
end; end;
procedure TForm8.MaskEdit2KeyPress(Sender: TObject; var Key: Char);
begin
if not(key in['0'..'9',#9,#13]) then key:=#13; begin
end;
if Key = #13 then begin
if form8.MaskEdit1.Text='' then begin
MessageBox(Handle,PChar('Введите логин!'),PChar('Внимание'), MB_ICONWARNING+MB_DEFBUTTON2);
exit; end;
if form8.MaskEdit2.Text='' then begin
MessageBox(Handle,PChar('Введите пароль!'),PChar('Внимание'), MB_ICONWARNING+MB_DEFBUTTON2);
exit; end
else
if (form8.MaskEdit1.Text<>datamodule2.adotable1login.Text) or (form8.MaskEdit2.Text<>datamodule2.adotable1parol.Text)then
begin
edit1.Text:=edit1.Text+'a';
if edit1.Text='a' then begin MessageBox(Handle,PChar('Ошибка! У Вас осталось две попытки'),PChar('Ошибка'), MB_ICONWARNING+MB_DEFBUTTON2);
MaskEdit1.clear;
MaskEdit2.clear;
end;
if edit1.Text='aa' then begin MessageBox(Handle,PChar('Ошибка! У Вас осталось одна попытка'),PChar('Ошибка'), MB_ICONWARNING+MB_DEFBUTTON2);
MaskEdit1.clear;
MaskEdit2.clear;
end;
if edit1.Text='aaa' then begin MessageBox(Handle,PChar('Вы ошиблись 3 раза!'),PChar('Ошибка'), MB_ICONWARNING+MB_DEFBUTTON2);
form8.hide;
form4.close;
end; end;
if (form8.MaskEdit1.Text=datamodule2.adotable1login.Text) and (form8.MaskEdit2.Text=datamodule2.adotable1parol.Text) then
begin
form9.show;
DataModule2.adotable1.Filtered:=true;
DataModule2.adotable1.Filter:='login='+quotedstr(MaskEdit1.Text);
form9.Label2.Caption:=datamodule2.ADOTable1fam.Text;
form9.Label3.Caption:=datamodule2.ADOTable1name.Text;
form9.Label4.Caption:=datamodule2.ADOTable1group.Text;
form8.Hide;
form8.MaskEdit1.Clear;
form8.MaskEdit2.Clear;
end; end; end;
procedure TForm8.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Image1.Left := Image1.Left + 1; Image1.Top := Image1.Top + 1;
end;
procedure TForm8.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Image1.Left := Image1.Left - 1; Image1.Top := Image1.Top - 1;
end;
procedure TForm8.Image2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Image2.Left := Image2.Left + 1; Image2.Top := Image2.Top + 1;
end;
procedure TForm8.Image2MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Image2.Left := Image2.Left - 1; Image2.Top := Image2.Top - 1;
end;
end.
unit Unit9;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, jpeg, ExtCtrls, StdCtrls;
type
TForm9 = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N5: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
Image1: TImage;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
procedure N5Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N8Click(Sender: TObject);
procedure N9Click(Sender: TObject);
procedure N2Click(Sender: TObject);
private
public
end;
var
Form9: TForm9;
implementation
uses Unit1, Unit4, Unit12, DM, Unit15, Unit17, Unit18;
procedure TForm9.N5Click(Sender: TObject);
begin
form4.show;
form9.Close;
end;
procedure TForm9.N3Click(Sender: TObject);
begin
if (datamodule2.ADOTable3.Locate('fam',form9.Label2.Caption,[])) and (datamodule2.ADOTable3.Locate('name',form9.Label3.Caption,[])) then
begin
MessageBox(Handle,PChar('Извините, но Вы уже проходили этот тест!'),PChar('Внимание'), MB_ICONWARNING+MB_DEFBUTTON2);
exit; end
else
form1.show;
form1.RadioButton2.Enabled:=false;
end;
procedure TForm9.N8Click(Sender: TObject);
begin
form12.edit1.text:='Преподаватель';
form12.show;
end;
procedure TForm9.N9Click(Sender: TObject);
begin
form17.Show;
DataModule2.adotable4.Filtered:=true;
DataModule2.adotable4.Filter:='komy='+quotedstr(form9.Label2.Caption+' '+form9.Label3.Caption);
end;
procedure TForm9.N2Click(Sender: TObject);
begin
form18.show;
form18.N4.Enabled:=false;
form18.N5.Enabled:=false;
form18.N7.Enabled:=false;
end; end.
unit Unit11;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, Mask;
type
TForm11 = class(TForm)
MaskEdit1: TMaskEdit;
MaskEdit2: TMaskEdit;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure Edit3KeyPress(Sender: TObject; var Key: Char);
procedure Edit2KeyPress(Sender: TObject; var Key: Char);
private
public
end;
var
Form11: TForm11;
implementation
uses DM, Unit4, Unit9;
procedure TForm11.BitBtn1Click(Sender: TObject);
begin
if (datamodule2.ADOTable1.Locate('login',MaskEdit1.Text,[])) then
begin
MessageBox(Handle,PChar('Такой логин уже существует!'),PChar('Ошибка'), MB_ICONWARNING+MB_DEFBUTTON2);
form11.MaskEdit1.Text:='';
exit; end;
if (datamodule2.ADOTable1.Locate('parol',MaskEdit2.Text,[])) then
begin
MessageBox(Handle,PChar('Введенный пароль уже существует!'),PChar('Ошибка'), MB_ICONWARNING+MB_DEFBUTTON2);
form11.MaskEdit2.Text:='';
exit; end;
if form11.MaskEdit1.Text='' then
begin
MessageBox(Handle,PChar('Введите логин!'),PChar('Ошибка'), MB_ICONWARNING+MB_DEFBUTTON2);
exit; end;
if form11.MaskEdit2.Text='' then
begin
MessageBox(Handle,PChar('Введите пароль!'),PChar('Ошибка'), MB_ICONWARNING+MB_DEFBUTTON2);
exit; end;
if edit2.Text='' then
begin
MessageBox(Handle,PChar('Укажите группу!'),PChar('Ошибка'), MB_ICONWARNING+MB_DEFBUTTON2);
exit;
end;
if edit3.Text='' then
begin
MessageBox(Handle,PChar('Введите фамилию!'),PChar('Ошибка'), MB_ICONWARNING+MB_DEFBUTTON2);
exit; end;
if edit1.Text='' then
begin
MessageBox(Handle,PChar('Введите имя!'),PChar('Ошибка'), MB_ICONWARNING+MB_DEFBUTTON2);
exit; end;
DataModule2.ADOTable1.Insert;
DataModule2.ADOTable1.FieldValues['login']:=form11.MaskEdit1.Text;
DataModule2.ADOTable1.FieldValues['parol']:=form11.MaskEdit2.Text;
DataModule2.ADOTable1.FieldValues['fam']:=form11.Edit2.Text;
DataModule2.ADOTable1.FieldValues['name']:=form11.Edit3.Text;
DataModule2.ADOTable1.FieldValues['group']:=form11.Edit1.Text;
datamodule2.ADOTable1.Post;
Application.MessageBox('Сохранение прошло успешно!','Готово',MB_OK or MB_ICONINFORMATION);
form9.Label2.Caption:=form11.Edit2.Text;
form9.Label3.Caption:=form11.Edit3.Text;
form9.Label4.Caption:=form11.Edit1.Text;
form11.MaskEdit1.Text:='';
form11.MaskEdit2.Text:='';
form11.Edit1.Text:='';
form11.Edit2.Text:='';
form11.Edit3.Text:='';
form11.Close;
Подобные документы
Анализ архитектуры информационной системы, в структуру которой входят системы файл-сервер и клиент-сервер. Сравнение языков запросов SQL и QBE. Принципы разработки приложений архитектуры клиент-сервер при помощи структурированного языка запросов SQL.
курсовая работа [88,9 K], добавлен 11.04.2010Многоуровневые архитектуры клиент–сервер. Диаграммы классов, реализующих уровни презентации, бизнес–логики и базы данных приложения. Словесное описание процесса выполнения транзакций. Создание, изменение и удаление хранимых процедур, их выполнение.
курсовая работа [3,4 M], добавлен 23.03.2013Разработка программы FTP-клиент, которая может подключаться к серверу в активном и пассивном режимах, используя имя пользователя и пароль; скачивать, загружать и удалять файлы с сервера. Протоколы прикладного и транспортного уровней. Описание интерфейса.
курсовая работа [149,2 K], добавлен 07.07.2013Модель удаленного управления и доступа к данным. Преимущества архитектуры клиент-сервер. Выбор языка программирования. Разработка программы и создание базы данных. Нормирование условий труда программистов, операторов электронно-вычислительных машин.
дипломная работа [2,3 M], добавлен 27.04.2014Постановка задачи, описание предметной области, входная и выходная информация. Выбор и основание инструментов разработки. Программно-аппаратные ресурсы. Описание логической структуры, проектирование системы меню. Тестирование, способ установки программы.
курсовая работа [107,5 K], добавлен 07.09.2015Описания программного продукта компании 1С, предназначенного для быстрой разработки прикладных решений. Исследование типов архитектур построения баз данных. Технология с сетью и файловым сервером. Анализ особенностей трехзвенной архитектуры клиент-сервер.
курсовая работа [401,4 K], добавлен 12.01.2015Разработка приложений на платформе Win32 для исследования взаимодействия между процессами через отображение файла в память. Модель приложений "клиент - сервер". Описание алгоритма работы программы-клиента и программы-сервера. Результаты работы приложений.
курсовая работа [869,3 K], добавлен 18.05.2014Проектирование информационной системы на основе архитектуры "файл-сервер", "клиент-сервер", многоуровневой архитектуры, Intranet-системы. Преимущества и недостатки файл-серверного подхода при обеспечении многопользовательского доступа к базе данных.
лабораторная работа [220,5 K], добавлен 02.02.2015Разработка клиент-серверного приложения, позволяющего взаимодействовать друг с другом с использованием доступа к базам данных. Проектирование связи сервера с базой данных с помощью технологии ODBC. Разработка интерфейса программы, ее тестирование.
курсовая работа [352,0 K], добавлен 24.08.2016Исследование технологии проектирования базы данных. Локальные и удаленные базы данных. Архитектуры и типы сетей. Программная разработка информационной структуры предметной области. Обоснование выбора архитектуры "клиент-сервер" и операционной системы.
дипломная работа [1,1 M], добавлен 15.02.2017