Материал: Автоматизация процесса контроля знаний учащихся ГОУ СОШ №21 г. Смоленск

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
88
begin
frmGlav.ADOTable1.TableName := _name;
frmGlav.ADOTable1.Open;
frmTema.ADOTema.TableName := 'Тема занятия '+_name;
frmTema.ADOTema.Open;
st.Free;
frmGlav.Show;
frmStart.Hide;
exit;
end;
end;
ПРОЦЕДУРА ВЫВОД ТЕКУЩЕЙ ДАТЫ.
procedure TfrmStart.Timer1Timer(Sender: TObject);
begin
label4.Caption := 'Дата: '+DateToStr(Date)+#10#13+
'Время: '+TimeToStr(Time);
end;
ПРОЦЕДУРА ВЫВОД СООБЩЕНИЯ.
Выводится сообщение для пользователя в верхней части окна.
procedure TfrmTema.Timer1Timer(Sender: TObject);
Устанавливаются конечные параметры (точки финиша).
begin
if dx1<=80 then inc(dx1,2);
if dx2>=90 then dec(dx2,2);
if dx3<=80 then inc(dx3,2);
if (dx1>=80) and (dx2<=90) and (dx3>=80) then
begin
inc(n);
if n=100 then
begin
Устанавливаются начальные параметры (точки отсчета).
dx1:=-420;
dx2:=700;
dx3:=-420;
n:=0;
end;
end;
inc(col);
if col=50 then
begin
canvas.Font.Color := TColor(colors); Установки цвета(Красный)
col:=0;
end;
BitBlt(canvas.Handle,0,0,690,98,Image1.Canvas.Handle,0,0,SRCCOPY);
Установки на обновления компонента Image1.
Само сообщение.
89
TextOut(canvas.Handle,dx1, 8,'Уважемый пользователь ввиду ограниченных
возможностей баз данных ',64);
TextOut(canvas.Handle,dx2,28,'Microsoft Access, просим вводить дату через
нижнее подчеркивание.',65);
TextOut(canvas.Handle,dx3,48,'Надеемся Вас это не затруднит.',30);
end;
ПРОЦЕДУРЫ ДОБАВЛЕНИЕ, УДАЛЕНИЕ ТЕМЫ.
procedure TfrmTema.SpeedButton2Click(Sender: TObject);
begin
ADOTema.Append; Добавляем запись
end;
procedure TfrmTema.SpeedButton3Click(Sender: TObject);
begin
ADOTema.Delete; Удаляем запись.
end;
ПРОЦЕДУРА ДОБАВЛЕНИЕ НОВОГО ПРЕДМЕТА
procedure TFormSpisPredm.SpeedButton4Click(Sender: TObject);
Используемые переменные.
i - переменная цикла.
Istina логическая переменная для провери существующих предметов.
StrMessage содежит сообщение
CaptionStr переменная в которой будет содержаться префикс.
var
StrMessage,CaptionStr:string;
i:integer;
istina : boolean;
begin
CaptionStr:='';Присваиваем пустое значение.
if not InputQuery('Префикс', 'Введите Префикс',CaptionStr) then exit;Сообщение о
просьбе ввести префикс. Он заносится в переменную CaptionStr
istina := false;
ADOTbPred.Prior;Устанавливаем курсор на первую запись.
for i:=1 to ADOTbPred.RecordCount do Запускаем цикл по проверке
существующих предметов.
begin
if CaptionStr = ADOTbPred.Fields.Fields[1].Text then istina := true;Сравниваем с
каждой записью таблицы.
ADOTbPred.Next; Следующая запись
end;
if istina = true then
90
begin
StrMessage:='Префикс уже используется';Если находим выводим сообщение.
MessageDlg( StrMessage, mterror, [mbOk], 0);
end
else
begin
ADOTbPred.Insert;
ADOTbPred.AppendRecord([nil,CaptionStr]);Иначе добавляем запись в талицу.
end;
end;
ПРОЦЕДУРА УДАЛЕНИЕ ПРЕДМЕТА.
procedure TFormSpisPredm.SpeedButton5Click(Sender: TObject);
begin
ADOTbPred.Delete(); Удаляем последнюю запись.
end;
FormTemp: Эта форма очень важна, благодаря которой происходит формирование
сводной ведомости.
Нам понадобятся глобальные переменные
SN,SE,SF: TStringList; Листы предметов без экзаменов и с экзаменами, полный
лист.
SNF,SEF,SFF: TStringList; Листы предметов без экзаменов и с экзаменами,
полный лист полное наименование.
И процедура procedure VivodVExcel;
Начинаем с процедуры выбор текущего семестра.
ПРОЦЕДУРА ВЫБОР ТЕКУЩЕГО СЕМЕСТРА.
procedure TFormTemp.CmbSemChange(Sender: TObject);
var
str:string; Содержит наименование текущего семестра.
index2 : integer; Переменная цикла
begin
SF.Clear;Очищаем переменные
SE.Clear; Очищаем переменные
SN.Clear; Очищаем переменные
SFF.Clear; Очищаем переменные
SEF.Clear; Очищаем переменные
SNF.Clear; Очищаем переменные
Заносим значение из комбобокса в переменную str.
str:=CmbSem.Text;
91
Фильтруем по группе
ADOTblPred.Filtered:=false;
ADOTblPred.Filter:='Группа='+QuotedStr(frmStart.Grup.Text);
ADOTblPred.Filtered:=true;
Открываем цикл по всем записям в таблице
ADOTblPred.First;
for index2:=1 to ADOTblPred.RecordCount do
begin
Заносим значение «Название_табл» в переменную SE (Это массив строк), а также
«Предметы » в переменную SEF и иначе те же данные заносятся в другие переменные
SN и SNF соответственно. Таким образом, мы получим два списка: в одном те предметы,
по которым есть экзамены, а в другом те, по которым нет. Проходимся по всем
столбцам (Семестрам).
if str = '1 семестр' then
begin
if ADOTblPred.FieldValues['1семестр'] = '0' then
begin
SE.Add(ADOTblPred.FieldValues['Название_табл']);
SEF.Add(ADOTblPred.FieldValues['Предметы']);
end
else
begin
SN.Add(ADOTblPred.FieldValues['Название_табл']);
SNF.Add(ADOTblPred.FieldValues['Предметы']);
end
end;
if str = '2 семестр' then
begin
if ADOTblPred.FieldValues['2семестр'] = '0' then
begin
SE.Add(ADOTblPred.FieldValues['Название_табл']);
SEF.Add(ADOTblPred.FieldValues['Предметы']);
end
else
begin
SN.Add(ADOTblPred.FieldValues['Название_табл']);
SNF.Add(ADOTblPred.FieldValues['Предметы']);
end
end;
if str = '3 семестр' then
begin
if ADOTblPred.FieldValues['3семестр'] = '0' then
begin
SE.Add(ADOTblPred.FieldValues['Название_табл']);
SEF.Add(ADOTblPred.FieldValues['Предметы']);
end
else
begin
SN.Add(ADOTblPred.FieldValues['Название_табл']);
SNF.Add(ADOTblPred.FieldValues['Предметы']);
end
92
end;
if str = '4 семестр' then
begin
if ADOTblPred.FieldValues['4семестр'] = '0' then
begin
SE.Add(ADOTblPred.FieldValues['Название_табл']);
SEF.Add(ADOTblPred.FieldValues['Предметы']);
end
else
begin
SN.Add(ADOTblPred.FieldValues['Название_табл']);
SNF.Add(ADOTblPred.FieldValues['Предметы']);
end
end;
if str = '5 семестр' then
begin
if ADOTblPred.FieldValues['5семестр'] = '0' then
begin
SE.Add(ADOTblPred.FieldValues['Название_табл']);
SEF.Add(ADOTblPred.FieldValues['Предметы']);
end
else
begin
SN.Add(ADOTblPred.FieldValues['Название_табл']);
SNF.Add(ADOTblPred.FieldValues['Предметы']);
end
end;
if str = '6 семестр' then
begin
if ADOTblPred.FieldValues['6семестр'] = '0' then
begin
SE.Add(ADOTblPred.FieldValues['Название_табл']);
SEF.Add(ADOTblPred.FieldValues['Предметы']);
end
else
begin
SN.Add(ADOTblPred.FieldValues['Название_табл']);
SNF.Add(ADOTblPred.FieldValues['Предметы']);
end
end;
if str = '7 семестр' then
begin
if ADOTblPred.FieldValues['7семестр'] = '0' then
begin
SE.Add(ADOTblPred.FieldValues['Название_табл']);
SEF.Add(ADOTblPred.FieldValues['Предметы']);
end
else
begin
SN.Add(ADOTblPred.FieldValues['Название_табл']);
Источник: https://baza.diplomsite.ru/previewfile/2097