Креирати апликацију у којој се учитава списак ученика (тxт) у листбокс (мени ученици), а затим се у прву колоне табеле исписују имена учитаних ученика. Из менија предмети се учитава списак предмета (мени предмети), и затим се приказују у првом реду табеле. Преко инпутбокса организовати унос оцена (мени оцене->унос оцена) у табелу и затим приказ унетих оцена у мемо пољу испод у табеларном облику и омогућити снимање фајла преко savedialog-а. Омогућити додавање новог ученика у листу (у новом прозору), као и брисање изабраног ученика (мени ученик). Такође у новом прозору приказати просечну оцену свих ученика (мени оцене), укупан број петица и јединица.

код:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Menus, StdCtrls, Grids;

type

TForm1 = class(TForm)

MainMenu1: TMainMenu;

ucenici1: TMenuItem;

spisak1: TMenuItem;

dodajnovog1: TMenuItem;

ocene1: TMenuItem;

unosocena1: TMenuItem;

ListBox1: TListBox;

Label1: TLabel;

sg: TStringGrid;

Button1: TButton;

predmeti1: TMenuItem;

Igod1: TMenuItem;

IIgod1: TMenuItem;

IIIgod1: TMenuItem;

IVgod1: TMenuItem;

Button3: TButton;

Button4: TButton;

SaveDialog1: TSaveDialog;

Memo1: TMemo;

obrisi1: TMenuItem;

prosecnaocena1: TMenuItem;

Label2: TLabel;

procedure spisak1Click(Sender: TObject);

procedure dodajnovog1Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Igod1Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure unosocena1Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

procedure obrisi1Click(Sender: TObject);

procedure prosecnaocena1Click(Sender: TObject);

private

{ Private declarations }

public

pr:real;

end;

var

Form1: TForm1;

implementation

{$R *.dfm}   uses unit2,unit3;

procedure TForm1.Button1Click(Sender: TObject);

var i,l:integer;

begin

{tabeli se zadaje broj redova onoliko koliko stavki ima u listboksu (plus jedna

za fiksni red) i popunjava se prva (fiksna) kolona stavkama iz listboksa.

Nije uradjena provera da li je lista uopšte učitana. }

l:=  listbox1.Items.Count;

sg.RowCount:=l+1;

for I := 1 to l  do

sg.Cells[0,i]:=listbox1.Items[i-1];

end;

procedure TForm1.Button3Click(Sender: TObject);

var bb,i:integer;

begin

{Isto kao i u prethodnoj proceduri, samo za kolone,  predmet iz liste se

upisuju u prvi (fiksni) red }

bb:=listbox1.Count;

sg.ColCount:=bb+1;

for i:=1 to bb do

sg.Cells[i,0]:=listbox1.Items[i-1];

end;

procedure TForm1.Button4Click(Sender: TObject);

var i,j:integer; s: string;

begin

{Ocene upisane u tabeli se prebacuju u memo, takođe u tabelarnom prikazu, prikazuju

se samo imena učenika i njihove ocene.

Prva petlja broji redove, a druga kolone, i sadržaj ćelije tabele se dodaje stringu s.

Kada se stigne do kraja jednog reda, string s će da sadrži sve vrednosti j-tog

reda tabele (ime učenika i sve ocene) razdvojene blankom. Tada se string dodaje u memo,

pa se ponovo postavlja na prazan string da bi se dodali podaci iz sledećeg reda.

Na kraju se ocene iz memo polja snimaju kao tekstualni fajl, koristeći savedialog.)

}

s:=“;

for j := 1 to sg.rowCount – 1 do

begin

for i := 0 to sg.colCount – 1 do

s:=s+’  ‘+sg.Cells[i,j];

memo1.Lines.Add(s);

// memo1.Lines.Add(#13);

s:=“;

end;

if savedialog1.Execute then

begin

memo1.Lines.SaveToFile(savedialog1.FileName);

end;

end;

 

procedure TForm1.dodajnovog1Click(Sender: TObject);

var s:string; ind:integer;

begin

// s:=inputbox(‘unos ucenika’,’unesite ime i prezime ucenika’,’ime’);

//listbox1.Items.Add(s);

frmUnosOcena.ShowModal;

end;

procedure TForm1.Igod1Click(Sender: TObject);

begin

{učitavanje predmeta I godine (tekstualni fajl koji je prethodno kreiran }

listbox1.Items.Clear;

listbox1.Items.LoadFromFile(‘predI.txt’);

end;

procedure TForm1.obrisi1Click(Sender: TObject);

var i:integer;

begin

{brisanje izabranog ucenika iz liste. Samo učenika!!!  }

listbox1.Items.Delete(listbox1.ItemIndex);

listbox1.Items.SaveToFile(‘spisak.txt’);

label1.Caption:=inttostr( listbox1.Items.Count);

end;

procedure TForm1.prosecnaocena1Click(Sender: TObject);

begin

frmProsek.Show;

end;

procedure TForm1.spisak1Click(Sender: TObject);

begin

listbox1.Items.LoadFromFile(‘spisak.txt’);

label1.Caption:=inttostr( listbox1.Items.Count);

end;

procedure TForm1.unosocena1Click(Sender: TObject);

var i,j,z,b:integer;   s,s1:string;

begin

z:=0; b:=0;

{inputboks za unos će se pojavljivati dok se ne unesu sve ocene za svakog učenika.

inputquery je sličan, ali pritiskom na cancel prekida se unos.

U poruci inputa se prikazuje i ime učenika ( sg.Cells[0,j]) i ime

predmeta sg.Cells[i,0]). Odmah se sabiraju unete ocene, i prebrojavaju, i na kraju unosa se

računa prosek }

for I := 1 to sg.ColCount – 1 do

for j := 1 to sg.RowCount – 1 do

begin

// s:=  inputbox(‘unos’,sg.Cells[0,j]+’, ‘+ sg.Cells[i,0],“);

s1:=’5′;

if  inputquery(‘unos’,sg.Cells[0,j]+’, ‘+sg.Cells[i,0],s1) then

 

// if s<>’k’ then

begin

sg.Cells[i,j]:= s1;

z:=z+strtoint(s1);

b:=b+1; end

else exit;

pr:=z/b;

end;

end;

end.


unit Unit2;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Grids, StdCtrls;

type

TfrmUnosOcena = class(TForm)

Label1: TLabel;

Edit1: TEdit;

Button1: TButton;

Button2: TButton;

Button3: TButton;

procedure Button1Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

frmUnosOcena: TfrmUnosOcena;

implementation

{$R *.dfm}  uses Unit1;

procedure TfrmUnosOcena.Button1Click(Sender: TObject);

begin

{Dodavanje novog učenika u listboks, i zatim snimanje u spisak učenika i

prikazivanje broja učenika u labeli na form1  }

form1.ListBox1.Items.Add(edit1.Text) ;

edit1.Text:=“;

edit1.SetFocus;

form1.ListBox1.Items.SaveToFile(‘spisak.txt’);

form1.label1.Caption:=inttostr( form1.listbox1.Items.Count);

end;

procedure TfrmUnosOcena.Button2Click(Sender: TObject);

begin

close;

end;

procedure TfrmUnosOcena.Button3Click(Sender: TObject);

begin

{predomislio se pa neće da unese ono što je upisao u edit }

edit1.Text:=“;

edit1.SetFocus;

end;

end.


unit Unit3;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TfrmProsek = class(TForm)

GroupBox1: TGroupBox;

CheckBox1: TCheckBox;

CheckBox2: TCheckBox;

CheckBox3: TCheckBox;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

procedure CheckBox1Click(Sender: TObject);

procedure CheckBox2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

frmProsek: TfrmProsek;

implementation

{$R *.dfm}      uses unit1;

procedure TfrmProsek.CheckBox1Click(Sender: TObject);

begin

{prikaz proseka koji je izračunat na form1  }

if checkbox1.Checked then   edit1.Text:=floattostr(form1.pr)

else edit1.text:=“;

end;

procedure TfrmProsek.CheckBox2Click(Sender: TObject);

var i,j,b5:integer;

begin

b5:=0;

{prebrojavanje petica, sa frmProsek pretražujemo tabelu koja je na form1 }

if checkbox2.Checked then

begin

for i := 1 to form1.sg.ColCount – 1 do

for j:=1  to form1.sg.RowCount- 1 do

if strtoint(form1.sg.Cells[i,j])=5 then   b5:=b5+1;

edit2.Text:=inttostr(b5);

end

else

edit2.Text:=“;

end;

end.

 

 

Advertisements