for i:=0 to Length(marks_arr)-1 do // Сортировка по Фамилии
for j:=0 to Length(marks_arr)-2 do
if marks_arr[j,0]>marks_arr[j+1,0] then
begin
f:= marks_arr[j,0];
d:= marks_arr[j,1];
m:= marks_arr[j,2];
mr:= marks_arr[j,3];
marks_arr[j,0]:= marks_arr[j+1,0];
marks_arr[j,1]:= marks_arr[j+1,1];
marks_arr[j,2]:= marks_arr[j+1,2];
marks_arr[j,3]:= marks_arr[j+1,3];
marks_arr[j+1,0]:=f;
marks_arr[j+1,1]:=d;
marks_arr[j+1,2]:=m;
marks_arr[j+1,3]:=mr;
end;
for i:=0 to Length(marks_arr)-1 do // Сортировка по дате МЕСЯЦ
for j:=0 to Length(marks_arr)-2 do
if marks_arr[j,0]=marks_arr[j+1,0] then
if marks_arr[j,1]>marks_arr[j+1,1] then
begin
f:= marks_arr[j,0];
d:= marks_arr[j,1];
m:= marks_arr[j,2];
mr:= marks_arr[j,3];
marks_arr[j,0]:= marks_arr[j+1,0];
marks_arr[j,1]:= marks_arr[j+1,1];
marks_arr[j,2]:= marks_arr[j+1,2];
marks_arr[j,3]:= marks_arr[j+1,3];
marks_arr[j+1,0]:=f;
marks_arr[j+1,1]:=d;
marks_arr[j+1,2]:=m;
marks_arr[j+1,3]:=mr;
end;
for i:=0 to Length(marks_arr)-1 do // Сортировка по дате День
for j:=0 to Length(marks_arr)-2 do
if marks_arr[j,0]=marks_arr[j+1,0] then
if marks_arr[j,1]=marks_arr[j+1,1] then
if marks_arr[j,2]>marks_arr[j+1,2] then
begin
f:= marks_arr[j,0];
d:= marks_arr[j,1];
m:= marks_arr[j,2];
mr:= marks_arr[j,3];
marks_arr[j,0]:= marks_arr[j+1,0];
marks_arr[j,1]:= marks_arr[j+1,1];
marks_arr[j,2]:= marks_arr[j+1,2];
marks_arr[j,3]:= marks_arr[j+1,3];
marks_arr[j+1,0]:=f;
marks_arr[j+1,1]:=d;
marks_arr[j+1,2]:=m;
marks_arr[j+1,3]:=mr;
end;
Form_jurnal.Updategrid_marks (Sender);
Form_jurnal.ComboBox7_update (Sender);
end;
procedure TForm_jurnal.Button3Click(Sender: TObject); // Проверка при удалении даты!!!! КНОПКА
var
i,k:integer;
begin
if ComboBox6.ItemIndex<0 then
begin
ShowMessage ('Нет даты для удаления!');
Exit;
end;
k:=ComboBox6.ItemIndex;
for i:=0 to Length(marks_arr)-1 do // Проверка есть ли на этой дате оценки
if marks_arr[i,1] = date_arr[k,0] then
if marks_arr[i,2] = date_arr[k,1] then //ShowMessage ('!');
begin
Form_del_data.show;
exit;
end;
Form_jurnal.Button3Click_1(Sender);
end;
procedure TForm_jurnal.Button3Click_2(Sender: TObject); // Удаление Оценок и даты !!!
var
i,j,k,n,n1:integer;
begin
k:= ComboBox6.ItemIndex;
n:=0;
n1:=0;
for i:=0 to Length(marks_arr)-1 do // Проверка есть ли на этой дате оценки
if marks_arr[i,1] = date_arr[k,0] then
if marks_arr[i,2] = date_arr[k,1] then inc(n); // считаем количество повторений
repeat
inc(n1);
for j:=0 to Length(marks_arr)-1 do // Находим дату
if marks_arr[j,1] = date_arr[k,0] then
if marks_arr[j,2] = date_arr[k,1] then
for i:=j+1 to Length(marks_arr)-1 do
begin
marks_arr[i-1,0] := marks_arr[i,0];
marks_arr[i-1,1] := marks_arr[i,1];
marks_arr[i-1,2] := marks_arr[i,2];
marks_arr[i-1,3] := marks_arr[i,3];
end;
SetLength(marks_arr, Length(marks_arr)-1, 4);
Form_jurnal.ComboBox7_update (Sender);
until n1=n;
for i:=k+1 to Length(date_arr)-1 do // удаление Даты
begin
date_arr[i-1,0] := date_arr[i,0];
date_arr[i-1,1] := date_arr[i,1];
end;
SetLength(date_arr, Length(date_arr)-1, 2);
Form_jurnal.ComboBox6_update (Sender);
Form_jurnal.ComboBox2_update (Sender);
Form_jurnal.Updategrid_2 (Sender);
Form_jurnal.Updategrid_marks (Sender);
end;
procedure TForm_jurnal.Button3Click_1(Sender: TObject); // Удаление даты БЕЗ ОЦЕНОК!!!
var
i,k:integer;
begin
k:=ComboBox6.ItemIndex;
for i:=k+1 to Length(date_arr)-1 do // удаление Даты
begin
date_arr[i-1,0] := date_arr[i,0];
date_arr[i-1,1] := date_arr[i,1];
end;
SetLength(date_arr, Length(date_arr)-1, 2);
Form_jurnal.ComboBox6_update (Sender);
Form_jurnal.ComboBox2_update (Sender);
Form_jurnal.Updategrid_2 (Sender);
Form_jurnal.Updategrid_marks (Sender);
end;
procedure TForm_jurnal.Button4Click(Sender: TObject); // Кнопка удалить ОЦЕНКУ!!!
var
i,k:integer;
begin
if ComboBox7.ItemIndex<0 then
begin
ShowMessage ('Нет оценки для удаления!');
Exit;
end;
k:=ComboBox7.ItemIndex;
for i:=k+1 to Length(marks_arr)-1 do
begin
marks_arr[i-1,0] := marks_arr[i,0];
marks_arr[i-1,1] := marks_arr[i,1];
marks_arr[i-1,2] := marks_arr[i,2];
marks_arr[i-1,3] := marks_arr[i,3];
end;
SetLength(marks_arr, Length(marks_arr)-1, 4);
Form_jurnal.Updategrid_marks (Sender);
Form_jurnal.ComboBox7_update (Sender);
end;
procedure TForm_jurnal.Button5Click(Sender: TObject); // Сохранить данные Кнопка
var
f:Text;
i,j:integer;
begin
if (ComboBox2.ItemIndex<0) then begin
ShowMessage ('Нет данных для сохранения таблицы!') ;
Exit;
end;
assignfile(f,'db\jurnal\' + teacher_j + '_' + predmet_j + '_' +
klass_j + '_' + quarter_j +'.db');
Rewrite(f);
for i:=0 to Length(date_arr)-1 do
Write (f,inttostr(date_arr[i,0]) + ' ' + inttostr(date_arr[i,1]) + ' '); // заносим все даты в одну строчку!
WriteLn(f, ''); //Пропуск
WriteLn(f, '');
for j:=0 to Length(marks_arr)-1 do // Заносим все оценки
begin
WriteLn (f,persons_arr[marks_arr[j,0]+1]); // ФИО
WriteLn (f,inttostr(marks_arr[j,1])); // месяц
WriteLn (f,inttostr(marks_arr[j,2])); // день
WriteLn (f,inttostr(marks_arr[j,3])); // оценка
WriteLn(f, '');
end;
CloseFile(f);
memo1.Lines.SaveToFile('db\jurnal\' + teacher_j + '_' + predmet_j + '_' + // Сохраняем темы!!!
klass_j + '_' + quarter_j +'_tems.db');
end;
procedure TForm_jurnal.Button6Click(Sender: TObject);
begin
end;
procedure TForm_jurnal.FormClose(Sender: TObject);
begin
if prnts = 1 then begin // чекаем откуда пришли
ComboBox4.Enabled:=True;
ComboBox5.Enabled:=True;
ComboBox6.Enabled:=True;
ComboBox1.Enabled:=True;
ComboBox2.Enabled:=True;
ComboBox3.Enabled:=True;
ComboBox7.Enabled:=True;
Button1.Enabled:=True;
Button2.Enabled:=True;
Button3.Enabled:=True;
Button4.Enabled:=True;
Button5.Enabled:=True;
Memo1.ReadOnly:=False;
end;
combobox1.Clear;
combobox2.Clear;
combobox3.ItemIndex:=(-1);
combobox4.ItemIndex:=(-1);
combobox5.ItemIndex:=(-1);
combobox6.Clear;
combobox7.Clear;
memo1.Clear;
arrcount:=0;
persons_arr:=nil;
date_arr:=nil;
marks_arr:=nil;
StringGrid1.ColCount:=2;
prnts:=0;
end;
procedure TForm_jurnal.update_tems(Sender: TObject);
begin
if FileExists('db\jurnal\' + teacher_j + '_' + predmet_j + '_' +
klass_j + '_' + quarter_j +'_tems.db') then
memo1.Lines.LoadFromFile('db\jurnal\' + teacher_j + '_' + predmet_j + '_' +
klass_j + '_' + quarter_j +'_tems.db');
end;
end.
unit unit_del_data;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
{ TForm_del_data }
TForm_del_data = class(TForm)
Button1: TButton;
Button2: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
public
end;
var
Form_del_data: TForm_del_data;
implementation
uses
unit_jurnal;
{$R *.lfm}
{ TForm_del_data }
procedure TForm_del_data.Button2Click(Sender: TObject); // нет
begin
close;
end;
procedure TForm_del_data.Button1Click(Sender: TObject); //да
begin
Form_jurnal.Button3Click_2(Sender);
close;
end;
end.
unit unit_about;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, Buttons;
type
{ TForm_about }
TForm_about = class(TForm)
Label1: TLabel;
Label10: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
private
public
end;
var
Form_about: TForm_about;
implementation
{$R *.lfm}
{ TForm_about }
end.
unit unit_tz;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
{ TForm_TZ }
TForm_TZ = class(TForm)
Label1: TLabel;
private
public
end;
var
Form_TZ: TForm_TZ;
implementation
{$R *.lfm}
end.
unit unit_danger;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
{ TForm_danger }
TForm_danger = class(TForm)
Button1: TButton;
Button2: TButton;
Label1: TLabel;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
public
end;
var
Form_danger: TForm_danger;
implementation
uses
unit_zavych, unit_teacher_pr, unit_person_kl;
{$R *.lfm}
{ TForm_danger }
procedure TForm_danger.Button2Click(Sender: TObject); //НЕТ
begin
close;
end;
procedure TForm_danger.Button1Click(Sender: TObject); //ДА
begin
if Form_Zavych.danger=1 then begin
Form_Zavych.Button7Click_1 (Sender);
close;
end;
if Form_Zavych.danger=2 then begin
Form_Zavych.Button5Click_1 (Sender);
close;
end;
if Form_Zavych.danger=3 then begin
Form_Zavych.Button8Click_1 (Sender);
close;
end;
if Form_Zavych.danger=4 then begin
Form_Zavych.Button6Click_1 (Sender);
close;
end;
if Form_Zavych.danger=5 then begin
Form_teacher_pr.Button3Click_1 (Sender);
close;
end;
if Form_Zavych.danger=6 then begin
Form_person_kl.Button3Click_1 (Sender);
close;
end;
end;
end.
unit unit_add_teacher;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
{ TForm_add_teacher }
TForm_add_teacher = class(TForm)
Button1: TButton;
Edit1: TEdit;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject);
private
public
end;
var
Form_add_teacher: TForm_add_teacher;
implementation
uses
unit_zavych;
{$R *.lfm}
{ TForm_add_teacher }
procedure TForm_add_teacher.Button1Click(Sender: TObject); //Добавить учителя
var
f:textfile;
s:string;
begin
// Создать файл с именем из Edit
s:=edit1.Text;
if s='' then ShowMessage ('Нельзя ввести пустое поле!') else
if FileExists('db\teach_pr\' + s + '.db') then ShowMessage ('Такой учитель уже есть!') else
begin
assignfile(f,'db\teach_pr\' + s +'.db');
rewrite(f);
closefile(f);
end;
close;
Form_Zavych.ListBox_teacher(Sender);
Form_Zavych.ComboBox_teacher(Sender);
end;
procedure TForm_add_teacher.FormClose(Sender: TObject);
begin
edit1.Clear;
end;
end. unit unit_add_teacher;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
{ TForm_add_teacher }
TForm_add_teacher = class(TForm)
Button1: TButton;
Edit1: TEdit;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject);
private
public
end;
var
Form_add_teacher: TForm_add_teacher;
implementation
uses
unit_zavych;
{$R *.lfm}
{ TForm_add_teacher }
procedure TForm_add_teacher.Button1Click(Sender: TObject); //Добавить учителя
var
f:textfile;
s:string;
begin
// Создать файл с именем из Edit
s:=edit1.Text;
if s='' then ShowMessage ('Нельзя ввести пустое поле!') else
if FileExists('db\teach_pr\' + s + '.db') then ShowMessage ('Такой учитель уже есть!') else
begin
assignfile(f,'db\teach_pr\' + s +'.db');
rewrite(f);
closefile(f);
end;
close;
Form_Zavych.ListBox_teacher(Sender);
Form_Zavych.ComboBox_teacher(Sender);
end;
procedure TForm_add_teacher.FormClose(Sender: TObject);
begin
edit1.Clear;
end;
end.
unit unit_teacher_pr;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
{ TForm_teacher_pr }
TForm_teacher_pr = class(TForm)
Button1: TButton;
Button3: TButton;
Button4: TButton;
ComboBox1: TComboBox;
Edit1: TEdit;
Label2: TLabel;
Label3: TLabel;
ListBox1: TListBox;
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button3Click_1(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
procedure ComboBox1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure ListBox1Click(Sender: TObject);
private
public
end;
var
Form_teacher_pr: TForm_teacher_pr;
implementation
uses
unit_zavych, unit_danger;
{$R *.lfm}
{ TForm_teacher_pr }
procedure TForm_teacher_pr.FormShow(Sender: TObject);
begin
ListBox1.Items.LoadFromFile ('db\teach_pr\' + Form_zavych.edit_tchr + '.db');
Edit1.Text:=ComboBox1.text;
end;
procedure TForm_teacher_pr.ListBox1Click(Sender: TObject);
begin
if ListBox1.ItemIndex >= 0 then
Edit1.Text:=ListBox1.Items[ListBox1.ItemIndex];
end;
procedure TForm_teacher_pr.Button1Click(Sender: TObject); //добавить
var
i,j:integer;
begin
j:=0;
if Edit1.Text='' then
begin
ShowMessage ('Нельзя ввести пустое поле!');
j:=1;
end
else
for i:=0 to ListBox1.Items.Count-1 do
begin
if ListBox1.Items[i] = Edit1.Text then
begin
ShowMessage ('Такой предмет уже есть!');
j:=1;
end
end;
if j<>1 then
ListBox1.Items.addText(Edit1.Text);
end;
procedure TForm_teacher_pr.Button3Click_1(Sender: TObject); // удалить
begin
if ListBox1.ItemIndex >= 0 then
ListBox1.Items.Delete(ListBox1.ItemIndex);
end;
procedure TForm_teacher_pr.Button3Click(Sender: TObject); // удалить
begin
begin
Form_danger.show ;
Form_Zavych.danger:=5;
end;
end;
procedure TForm_teacher_pr.Button4Click(Sender: TObject); //Сохранить
begin
ListBox1.Items.SaveToFile('db\teach_pr\' + Form_zavych.edit_tchr + '.db');
Form_Zavych.ComboBox_teacher(Sender);
end;
procedure TForm_teacher_pr.ComboBox1Change(Sender: TObject);
begin
Edit1.Text:=ComboBox1.text;
end;
procedure TForm_teacher_pr.ComboBox1Click(Sender: TObject);
begin
Edit1.Text:=ComboBox1.text;
end;
end.
unit unit_edit_teacher;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
{ TForm_edit_teacher }
TForm_edit_teacher = class(TForm)
Button1: TButton;
Edit1: TEdit;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
private
public
end;
var
Form_edit_teacher: TForm_edit_teacher;
implementation
uses
unit_zavych;
{$R *.lfm}
{ TForm_edit_teacher }
procedure TForm_edit_teacher.FormShow(Sender: TObject);
begin
Edit1.text:=Form_zavych.edit_tchr;
end;
procedure TForm_edit_teacher.Button1Click(Sender: TObject); // Кнопка сохранить
var
//f:textfile;
s:string;
begin
s:=edit1.Text;
if s='' then
ShowMessage ('Нельзя ввести пустое поле!')
else
if FileExists('db\teach_pr\' + s + '.db') then
ShowMessage ('Такой учитель уже есть!')
else
begin
{DeleteFile('db\teach_pr\' + Form_zavych.edit_tchr + '.db');
assignfile(f,'db\teach_pr\' + s +'.db');
rewrite(f);
closefile(f);}
RenameFile('db\teach_pr\' + Form_zavych.edit_tchr + '.db', 'db\teach_pr\' + s +'.db' );
Form_Zavych.ListBox_teacher(Sender);
Form_Zavych.ComboBox_teacher(Sender);
close;
end;
end;
end.
unit unit_add_kl;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
{ TForm_add_kl }
TForm_add_kl = class(TForm)
Button1: TButton;
Edit1: TEdit;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
private
public
end;
var
Form_add_kl: TForm_add_kl;
implementation
uses
unit_zavych;
{$R *.lfm}
{ TForm_add_kl }
procedure TForm_add_kl.Button1Click(Sender: TObject); // Добавить новый класс
var
f:textfile;
s:string;