Wydział Transportu PW
Laboratorium z informatyki sem.ll / ćw.11 Zadanie
Rozbudować aplikację z poprzedniego ćwiczenia, umożliwiając;
♦ wczytywanie danych z pliku elementowego ♦ sortowanie wczytanych danych
♦ wyświetlanie w postaci graficznej statystyki ocen ♦ zapisywanie statystyk w pliku tekstowym.
Na zajęciach należy wykorzystać plik elementowy o nazwie Studenci.rec, który zawiera dane o studentach i ocenach w postaci rekordów typu Student.
1. Skopiuj pliki utworzone na poprzednich ćwiczeniach z foldera sieciowego Informatyka na Novel411...\ INF2\L11 do foldera roboczego.
2. Dodaj do listy w komponencie ImageListl obrazki przycisków fldr2open, arro\v3d,picture, report, datę, show.
3. Zadeklaruj metodę formy umieszczającą wszystkie dane z tablicy rekordów w postaci wierszy tekstu na listach ComboBox3 i ListBox1 oraz u suwającą zaznać zen i a pól wyboru;
procedurę TForml.WyswietlRekordy;
var i: Integer;
begin
ComboBox3.Items.Clear;
for i:= 0 to Lrek-1 do with Dane[i] do
ComboBox3.Items.Add(nr_alb+' '+nazwisko+’ '+grupa+' '+
DatetoStr(data) +' '+ FloatToStr(ocena));
//po każdym polu dodajemy jedną spację ListBoxl.Items:= ComboBox3.Items;
ComboBox3.Itemlndex:= 0;
CheckBoxl.Checked:= False; CheckBox2.Checked:= False; end;
4. Umieść separator przed ostatnim przyciskiem paska narzędziowego. Następnie dodaj nowy przycisk o nazwie WczytajRekordy i utwórz dla niego procedurę obsługi kliknięcia, która wczyta rekordy z elementowego pliku studenci. rec do tablicy Dane i wyświetli je w postaci tekstowej na obu listach. Oto instrukcje tej procedury;
AssignFile(f, 'Studenci.rec’);
try
Reset(f);
Lrek:= FileSize(f); try
for i:=0 to Lrek - 1 do Read(f, Danefi]);
WyswietIRekordy; finally
CloseFile(f); end
except
ShowMessage(' Błąd przy czytaniu danych'); end;
Po nagłówku procedury zadeklaruj licznik pętli i zmienną plikową f o elementach typu student: var i: Integer; f: file of Student;
5. Zapisz zmiany i wypróbuj działanie przycisku.
1. Dodaj do paska narzędziowego separator i nowy przycisk rozwijalny o nazwie Sortuj - dla właściwości Style - wybierz wartość tbsDropDown.
2. Wstaw na formę komponent PopupMenul z zakładki Standard. Jako wartość jego właściwości Images ustaw ImageListl. Dodaj trzy pozycje menu o tytułach: wg nazwiska, wg oceny, wg daty i wybierz dla nich obrazki ustawiając właściwość Imagelndex.
3. Przypisz komponent PopupMenul do właściwości DropDownMenu przycisku Sortuj.
4. Dla pierwszej pozycji menu utwórz procedurę obsługi kliknięcia, która sortuje tablicę rekordów Dane według nazwisk studentów i wyświetla je na obu listach ComboBox3 i ListBox1. W treści procedury umieść instrukcje:
for i:=0 to LRek-2 do for j:=i+l to LRek-1 do
if AnsiCompareText(Dane[i] .nazwisko, Dane[j].nazwisko)>0 then begin pom:=Dane[i]; Dane[ij:=Dane[j]; Dane[j]:=pom; end;
WyswietlRekordy;
Pod nagłówkiem procedury umieść deklarację zmiennych lokalnych: var i,j: Integer; pom: Student;
5. Zapisz zmiany, uruchom program i zaobserwuj posortowaną postać listy danych.
6. Analogicznie oprogramuj polecenia sortowania według oceny i według daty. Sprawdź działanie oprogramowanych poleceń menu.