Projekt z języka programowania

obiektowego

VISUAL C++

Treść zadania:

Napisz program umożliwiający wprowadzenie określonej liczby studentów (nazwisko, imię, rok studiów, ocena zaliczeniowa). W kolejnym okienku powinny pojawiać się dane o wprowadzonej grupie: średnia ocen grupy, dane studenta o najwyższej ocenie zaliczenia (nazwisko, imię, ocena), dane studenta o najniższej ocenie.

CZĘŚĆ PRAKTYCZNA:

1.Utwórz projekt MFC AppWizard(exe) z wykorzystaniem aplikacji typu Dialog nadając mu nazwę Zadanie7.

2.Zaprojektuj formatkę jak na poniższym rysunku:

0x01 graphic

3.Ustaw własności obiektów zamieszczonych na formatce tak jak podaje tabela:

Nazwa obiektu

Identyfikator

Caption

Nazwa zmiennej

Type

Kategoria

List Box

IDC_LISTA

m_lista

CListBox

Control

Static Text

IDC_STATIC

Nowe Nazwisko

Static Text

IDC_STATIC

Nowe Imie

Static Text

IDC_STATIC

Nowy Rok

Static Text

IDC_STATIC

Nowa Ocena

Group Box

IDC_STATIC

Nowe dane

Edit Box

IDC_NAZWISKO

m_nazwisko

CString

Value

Edit Box

IDC_IMIE

m_imie

CString

Value

Edit Box

IDC_ROK

m_rok

DWORD

Value

Edit Box

IDC_OCENA

m_ocena

Float

Value

Button

IDC_DODAJ

Dodaj

Static Text

IDC_STATIC

Średnia grupy

Static Text

IDC_STATIC

Najniższa ocena

Static Text

IDC_STATIC

Najwyższa ocena

Edit Box

IDC_SREDNIA

Styles/Read-only

m_srednia

String

Value

Edit Box

IDC_NAJNIZSZA

Styles/Read-only

m_najnizsza

String

Value

Edit Box

IDC_NAJWYZSZA

Styles/Read-only

m_najwyzsza

String

Value

Static Text

IDC_STATIC

Nazwisko

Static Text

IDC_STATIC

Imie

Static Text

IDC_STATIC

Rok

Static Text

IDC_STATIC

Ocena

Static Text

IDC_STATICNAZWISKO

<brak>, Styles/Sunken

m_staticnazwisko

CString

Value

Static Text

IDC_STATICIMIE

<brak>, Styles/Sunken

m_staticimie

CString

Value

Static Text

IDC_STATICROK

<brak>, Styles/Sunken

m_staticrok

CString

Value

Static Text

IDC_STATICOCENA

<brak>, Styles/Sunken

m_staticocena

CString

Value

Static Text

IDC_LICZBA

Styles/Read-only

m_liczbaogolem

DWORD

Value

Static Text

IDC_STATIC

Liczba studentów

Button

IDC_KONIEC

Koniec

4. Do przechowywania danych o studentach będziemy wykorzystywać 4 tablice - Nazwisko, Imie, Rok i Ocena.

W tym celu w obszarze roboczym przechodzimy do zakładki Class View - prawym klawiszem podświetlamy CZadanie7Dlg i wybieramy Add Member Variable. Jako Typ podajemy CStringArray, a jako nazwę kolejno:

nazwiska

oceny

rok

imiona.

We wszystkich tablicach zaznaczamy public.

5. Następnie dodajemy kolejne zmienne (analogicznie jak w punkcie 4.)

public:

float sumaocen;

DWORD iloscstud;

float najwyzsza;

float najnizsza;

6. Na formatce uruchamiamy Class Wizard'a i nastepnie przechodzimy do funkcji OnInitDialog dopisując w niej następujący kod

nazwiska.SetSize(100);

imiona.SetSize(100);

rok.SetSize(100);

oceny.SetSize(100);

Kod ten wyznacza rozmiar tablic, w których program będzie przechowywać dane o studentach. Następnie pod wyżej wpisanym kodem wpisujemy:

najnizsza=6;

najwyzsza=0;

iloscstud=0;

sumaocen=0;

m_liczbaogolem=0;

UpdateData(FALSE);

Zapis ten przyporządkowuje zmiennym wartości, które będą umożliwiały:

7. Kolejno wchodzimy na formatkę i klikając dwa razy przycisk DODAJ wchodzimy do kodu źródłowego i wpisujemy:

void CZadanie7Dlg::OnDodaj()

{

CString lan, ocenastring; Deklaracja pomocniczych zmiennych

UpdateData();

nazwiska[iloscstud]=m_nazwisko; Pobranie danych studenta z pól EditBoxa

imiona[iloscstud]=m_imie; i umieszczenie ich w tablicach

lan.Format("%d",m_rok);

rok[iloscstud]=lan;

ocenastring.Format("%1.1f",m_ocena);

oceny[iloscstud]=ocenastring;

iloscstud++;

sumaocen+=m_ocena; obliczanie sredniej ocen grupy

float srednia=sumaocen;

srednia/=iloscstud;

lan.Format("%1.2f",srednia);

m_srednia=lan;

m_liczbaogolem=iloscstud; przekazanie obliczonej sredniej i liczby studentów

UpdateData(FALSE); do pól edycyjnych

lan=m_nazwisko;

lan+=" "; Połączenie imienia z nazwiskiem i wyświetlenie w liście

lan+=m_imie;

m_lista.AddString(lan);

lan+="(";

lan+=ocenastring; dodanie do imienia i nazwiska oceny

lan+=")";

if(m_ocena<najnizsza)

{

najnizsza=m_ocena; szukanie najwyzszej i najnizszej oceny studenta

m_najnizsza=lan;

UpdateData(FALSE);

}

if(m_ocena>najwyzsza)

{

najwyzsza=m_ocena;

m_najwyzsza=lan;

UpdateData(FALSE);

}

}

8. Aby móc uzyskiwać informacje o studencie zaznaczonym w liście wykonujemy następujące czynności:

Wchodzimy do Class Wizard, do zakładki Message Maps, w polu objectIDs podświetlamy IDC_LISTA, następnie w polu Messages wybieramy funkcję LBN_SELCHANGE i naciskamy Add Function. Następnie w polu Member Function pojawia się dodana funkcja, klikając na niej dwa razy przechodzimy do kodu i wpisujemy:

void CZadanie7Dlg::OnSelchangeLista()

{

DWORD d; deklaracja pomocniczej zmiennej

d=m_lista.GetCurSel(); odczytanie numeru zaznaczonej pozycji w liscie

podstawienie go pod d

m_staticnazwisko=nazwiska[d];

m_staticimie=imiona[d]; pobranie danych o zaznaczonym studencie i

m_staticrok=rok[d]; wyswietlenie ich w obiektach StaticText

m_staticocena=oceny[d];

UpdateData(FALSE);

}

9. Ostatnim krokiem jest uaktywnienie przycisku Koniec. W tym celu klikamy dwa razy na znajdujący się na formatce przycisk koniec i wpisujemy kod:

void CZadanie7Dlg::OnKoniec()

{

OnOK();

}