Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
отсчет успев.студ.docx
Скачиваний:
31
Добавлен:
29.09.2019
Размер:
103.09 Кб
Скачать

2. Основная часть

2.1 Описание добавленных компонентов и форм

В начале работы я поместила на форму 1 компонент StringGrid, который отредактировала, убрав ненужные столбцы с помощью FixedCols, где поставил значение 0. После этого увеличил количество столбцов при помощи ColCount. Далее я добавила три кнопки под компонент StringGrid: «Добавить», «Удалить», «Вывести».Так же мне был необходим компонент Memo в который я вывела все данные из StringGrid и поставила под ним еще одну кнопку «Очистить». Далее я добавила компоненты MainMenu, SaveDialog,OpenDialog. Для MainMenu редактирования необходимо на вкладке инспектора объектов перейти к пункту Items, где можно редактировать меню и добавлять новые пункты с помощью клавиши Insert. В меню я создала главный пункт – «Файл» и уже входящие в него подпункты «Сохранить», «Выход», «Открыть. После этого я создала форму 2, путем File>New>Form и уже туда я разместила Edit(1-2), BitBtn(1-2), Label(1-3), ComboBox. С помощью Edit(1-2), ComboBox я вводила данные о студентах, а так же я разместила две кнопки BitBtn, которые расположены на вкладке Additional и добавила «OK» и «Отмена». Смысл заключается в том, чтобы первая кнопка подтверждала введенные значения, а вторая будет закрывать форму. Так же я присвоила соответствующим Edit’ам названия и переходя во вкладку инспектора объектов в Label меняем значение Caption: в первом на – «Предмет», во втором – «Оценка», в третьем – «Студент».

2.2 Описание программных кодов и создание программы

Unit 1

В самом начале моей программы мне необходимо было задать структуру успеваемости, указав в листинге программе глобальные переменные:

private

{ Private declarations }

public

{ Public declarations }

end;

usp=record

fio,faq,predmet,ocenka,stud: string[20];

end;

Потом с помощью использования процедуры SaveAndUpdate, которая сохраняет все данные в файл и затем считывает их оттуда.

procedure tform1.SaveAndUpdate;

var k:integer; F:file of usp; s:usp;

begin

if not FileExists('usp.stud') then

begin

AssignFile(F, 'usp.stud');

Rewrite(F);

CloseFile(F);

end else

begin

AssignFile(F,'usp.stud');

reset(F);

k:=1;

while not EOF(F) do begin

Read(F,s);

Form1.StringGrid1.Cells[0,k]:=IntToStr(k);

Form1.StringGrid1.Cells[1,k]:=s.predmet;

Form1.StringGrid1.Cells[2,k]:=s.ocenka;

Form1.StringGrid1.Cells[3,k]:=s.stud;

k:=k+1;

Form1.StringGrid1.RowCount:=k;

end;end;

CloseFile(f);

end;

Первая строка – это описание самой процедуры. Далее следует объявление переменных, переменная k нужна для того, чтобы показывать количество строк, F – это файл. После этого идет условие – если файл «usp.stud» не существует, то связывает его с файлом F. После этого открываем для записи файл, а затем его закрываем. Переменной k задаем значение 1, чтобы он мог считать нумерацию товаров в StringGrid правильно. Далее первой строке в StringGrid присваиваются значения номера строки, оценки, предмет и имя студента. Так же стоит помнить, что процедуру нужно объявить еще в type в самом верху программы, в таком виде: procedure SaveAndUpdate; , в противном случае программа не будет работать.

Далее нужно дать названия столбцам, в которых буду наши данные по успеваемости. Для этого нужно два раза щелкнуть по первой форме и ввести:

procedure TForm1.FormCreate(Sender: TObject);

begin

StringGrid1.Cells[0,0]:='№';

StringGrid1.Cells [1,0]:='предмет';

StringGrid1.Cells[2,0]:='имя';

StringGrid1.Cells[3,0]:='оценка';

SaveAndUpdate;

end;

После этого следующим действие нужно запрограммировать кнопку «Добавить», чтобы программа могла перейти на форму 2 и уже оттуда можно было бы задавать данные для внесения их в таблицу:

procedure TForm1.Button1Click(Sender: TObject);

begin

form2.Edit1.Clear;

form2.ComboBox1.ItemIndex:=0;

form2.Edit2.Clear;

form2.ShowModal;

end;

Далее остается запрограммировать три оставшиеся кнопки на форме 1, для кнопки «Удалить», которая очищает данные в таблице:

procedure TForm1.Button2Click(Sender: TObject);

var

i:integer;

f:file of usp;

begin

assignfile(f,'usp.stud');

rewrite(f);

closefile(f);

for i:=1 to stringgrid1.rowcount do stringgrid1.Rows[i].Clear;

stringgrid1.RowCount:=2;

end;

После этого осуществляем процедуру вывода всех данных из StringGrid в Memo путе программирования кнопки «Вывести»:

procedure TForm1.Button3Click(Sender: TObject);

Var

i,j,n: integer;

stud:string;

begin

for j:=0 to StringGrid1.RowCount -1 do

for i:=0 to StringGrid1.ColCount -1 do

if StringGrid1.Cells[i,j] = '' then

StringGrid1.Cells[i,j] := '0';

//StringGrid1.Cells[i,j] := format('0',[i,j]) ;

Memo1.Clear;

for i:=0 to StringGrid1.RowCount -1 do

begin

if i>0 then

memo1.Lines.Add('');

for j:=0 to StringGrid1.ColCount -1 do

memo1.seltext:=(''+StringGrid1.Cells[j,i]+'|');

end;

for n:=0 to StringGrid1.ColCount -1 do

begin

stud:=memo1.lines[n]; delete(stud,Length(stud),30); memo1.lines[n]:=stud;

end;

Memo1.Lines.SaveToFile('Текст.txt');

end;

И далее соответственно удаление данных из него с помощью кнопки «Очистить»:

procedure TForm1.Button4Click(Sender: TObject);

begin

Memo1.Lines.Clear;

end;

end.

Так же на форме 1 у меня присутствуют: MainMenu,SaveDialog,OpenDialog, где MainMenu мне позволило создать меню с вложенными действиями, которые я осуществила, определенно функцию сохранения с помощью SaveDialog данных выведенных в Memo в текстовый файл и так же открыть его с помощью OpenDialog и так же в конце совершить выход и работы программы нажатием на «Выход».

procedure TForm1.N2Click(Sender: TObject); // процедура сохранения

var i:integer; F:textfile;

begin

if SaveDialog1.Execute then begin

AssignFile(F, SaveDialog1.FileName+ '.txt');

Rewrite(F);

for i:=0 to Memo1.Lines.Count-1 do

writeln(f, Memo1.Lines[i]);

CloseFile(F);

end; end;

procedure TForm1.N4Click(Sender: TObject); //процедура открытия

var F:TextFile; Stud:string;

begin

Memo1.Clear;

if OpenDialog1.Execute then //вызываем Open Dialog

if OpenDialog1.FileName<> '' then //выбрали ли файл

begin

AssignFile(F,OpenDialog1.FileName); //определяем текстовый файл

Reset(f); //открыть файл для чтения

while not EOF(F) do begin //EOF-end of file

ReadLn(F,Stud); Memo1.Lines.Add(Stud);

end;

CloseFile(F);

end; end;

procedure TForm1.N3Click(Sender: TObject); //процедура выхода из формы

begin

form1.close;

end;

Unit 2

Далее на второй форме нужно в Unit2 записать точно так же, как и на первой форме процедуру SaveAndUpdate для кнопки BitBtn1, которая будет заносить значения из Edit и ComboBox в таблицу StringGrid:

procedure TForm2.BitBtn1Click(Sender: TObject);

var

f:file of usp;

s:usp;

begin

if not fileexists('usp.stud') then

begin

assignfile(f,'stud');

rewrite(f);

closefile(f);

end else

begin

assignfile(f,'usp.stud');

reset(f);

seek(f,filesize(f));

s.predmet:=edit1.Text;

s.ocenka:=combobox1.text;

s.stud:=edit2.text;

write(f,s);

closefile(f);

end;

form1.saveandupdate;

close;

end;

И процедура для BitBtn2, который закрывает форму:

procedure TForm2.BitBtn2Click(Sender: TObject);

begin

Close;

end;

И создадим ограничение ввода в него цифр до 5:

procedure TForm2.Edit2Change(Sender: TObject; var key: char );

begin

if not (key in ['o'..'5',decimalseparator])

then key:=#0;

end;

end.