Sunteți pe pagina 1din 13

Fitness AGC

TEMA PROIECT: APLICATIE SALA DE FITNESS


CURSANT: CALARASU ANDREEA-MONICA
CURS: JAVA DEVELOPER
TRAINER: RALUCA BEIAN
ORGANIZATOR CURS: AZIMUT VISION
2
Prezentare aplicatie Fitness AGC

Aplicatia pe care am creat-o este dedicata gestiunii unei sali de fitness avand denumirea Fitness AGC.

Pentru exemplificare , aplicatia va contine 3 locatii(Aviatiei, Titan, Militari), 5 instructori, 5 tipuri de activitati(Spinning, Kangoo Jumps, Bag Boxing, Body Combat
si Aqua), 4 tipuri de abonamente standard (Weekday, Weekend, Monthly,Annually) precum si posibilitatea de personalizare a acestora.

Astfel, cu ajutorul aplicatiei, administratorul va putea gestiona instructorii, clientii, clasele sustinute precum si abonamentele prin:

 actualizari de date pentru clienti(numarul de telefon mobil), instructori(Id-ul acestora), abonamente(data de inregistrare a abonamentului), clase(numarul de
locuri disponibile intr-o clasa, durata unei clase).

 adaugarea sau inlaturarea claselor sustinute;

 cautarea dupa codul unic alocat a unui client, instructor sau clasa.

 verificarea dupa o valoare data a instructorilor(avand pretul/ora mai mic decat val.data), a abonamentelor (cu pretul mai mic decat val. data), a claselor
(dupa numarul de clienti permisi, dupa o anumita zi din saptamana sau dupa locatie si activitatea sustinuta).

 filtrarea listelor ce au in vedere: clientii(vizualizarea tuturor abonamentelor achizitionate de un client), instructorii(vizualizarea tuturor claselor sustinute de un
instructor intr-o anumita locatie, sau vizualizarea tuturor claselor sustinute de acesta in toate locatiile Fitness AGC), abonamentele (vizualizarea abonamentelor
cuprinse intre doua preturi date, vizualizarea abonamentelor dupa tipul abonamentului, sau vizualizarea abonamentelor ce nu au inceput inca), clasele
(vizualizarea claselor dintr-o anumita locatie sau cu o numita activitate sustinuta precum si vizualizarea claselor cu un numar mai mare de clienti decat val.data).

 extragerea datelor din listele de: abonamente (vizualizarea unei liste de abonamente in functie de client) si clase(vizualizarea locatiilor cu cele mai multe clase
sustinute, vizualizarea unei liste de clase in functie de locatia salii, precum si vizualizarea numarului de clase sustinute de un anumit instructor.)

 aplicarea discounturilor in cazul abonamentelor personalizate.


Exemplificarea unor metode utilizate in proiect:
3
metoda updateClientMobile – actualizarea nr de telefon al clientului

Metoda creata in clasa ClientManager:


public void updateClientMobile(List<Client> clientList, String newClientMobile,int clientID){ Metoda updateClientMobile este o metoda publica de
tipul void(nu va avea un rezultat returnat). Parametrii
for(Client client : clientList){
metodei sunt: lista de clienti de tipul List de obiecte
if( client.getId()==clientID){ Client, noul numarul de telefon mobil al clientului de
tipul String, si id-ul clientului pentru care actualizam
client.setMobile(newClientMobile); numarul de telefon, de tipul integer. Aceasta metoda
} va cauta atributul id-ul clientului dat in obiectele din
lista de obiecte Client si pentru clientul gasit seteaza
} noul numar de telefon.
}
“Am parcurs lista de clienti si, daca id-ul instantei client
este egal cu id-ul clientului dat, atunci pentru instanta
Apelarea metodei in main: client seteaza noul numar de telefon al clientului.

ClientManager clientManager = new ClientManager(); In main vom crea un nou obiect de tipul ClientManager,
iar pentru acesta vom folosi operatorul de
System.out.println("updateClientMobile method below: "+ "\n");
dereferentierea pentru a apela metoda
clientManager.updateClientMobile(clientList,"0755125325",5); updateClientMobile unde folosim ca parametri lista de
clienti, noul numarul de telefon frunizat de client si id-ul
System.out.println(clientList + "\n");
acestuia.”
Exemplificarea unor metode utilizate in proiect: 4
metoda filterListOfGymClassByTrainer – vizualizarea listei de clase sustinute de un
anumit instructor
Metoda creata in clasa TrainerManager:
Metoda filterListOfGymClassByTrainer este o
public List<GymClass> filterListOfGymClassByTrainer(List<GymClass> gymClassList, int givenTrainerID) { metoda publica de tipul List (va avea un rezultat
List<GymClass> resultListOfGymClassByTrainer = new ArrayList<>(); returnat de tipul List). Parametrii metodei sunt: lista
de clase de tipul List de obiecte GymClass, si id-ul
for (GymClass gymClass : gymClassList) { instructorului pentru care executam filtrarea, de
tipul integer. Aceasta metoda va cauta atributul
if (gymClass.getTrainerID() == givenTrainerID) {
id-ul instructorului dat in obiectele din lista de
resultListOfGymClassByTrainer.add(gymClass); GymClass si va adauga clasele rezultate intr-o lista
de clase sustinute de instructorul cu ID-ul cautat.
}
} “Am creat o noua lista de obiecte GymClass care
va fi lista rezultat returnata de metoda. Astfel, am
return resultListOfGymClassByTrainer; parcurs lista de gymclass si, daca atributul id-ul
trainer-ului din instanta este egal cu id-ul
}
trainerului dat, atunci instanta gymClass gasita va fi
adaugata in lista rezultat.
Apelarea metodei in main:
In main vom crea un nou obiect de tipul
TrainerManager trainerManager1 = new TrainerManager(); TrainerManager, iar pentru acesta vom folosi
operatorul de dereferentiere pentru a apela
List<GymClass> result2 = trainerManager1.filterListOfGymClassByTrainer(gymClassList, 1); metoda filterListOfGymClassByTrainer unde folosim
ca parametri lista de gymClass, si id-ul
System.out.println("filterListOfGymClassByTrainer method below: " + "\n" + result2+ "\n"); instructorului.”
Exemplificarea unor metode utilizate in proiect:
5
metoda searchMembershipCheaperThanGivenValue – verificarea
existentei unui abonament cu o valoarea mai mica decat cea
cautata.
Metoda creata in clasa MembershipManager:
Metoda searchMembershipCheaperThanGivenValue
public boolean searchMembershipCheaperThanGivenValue(List<Membership> membershipList,
double givenMembershipValue){ este o metoda publica de tipul boolean (va avea un
rezultat returnat de tipul true sau false). Parametrii
boolean foundedMembership = false; metodei sunt: lista de abonamente de tipul List de
obiecte Membership, si valoarea cautata, de tipul
for(Membership membership:membershipList){
double. Aceasta metoda va compara valoarea data
if(membership.getPrice() < givenMembershipValue){ cu preturile din obiectele din lista de Membership si va
returna rezultatul sub forma booleana de true sau false.
foundedMembership = true;
} “Am creat un rezultat de tip boolean initializat cu
valoarea false. Apoi am parcurs lista de abonamente
} si, daca atributul price din instanta este mai mica
decat valoarea cautata, atunci rezultatul boolean
return foundedMembership;
initializat mai devreme va primi valoarea true, iar
} metoda va returna acest rezultat.

Apelarea metodei in main: In main vom crea un nou obiect de tipul


MembershipManager membershipManager = new MembershipManager(); MembershipManager, iar pentru acesta vom folosi
operatorul de dereferentiere pentru a apela metoda
System.out.println("searchMembershipCheaperThanGivenValue method below: "+ "\n"); searchMembershipCheaperThanGivenValue unde
boolean resultBooleanSearch4 = folosim ca parametri lista de membership, si o valoare
membershipManager.searchMembershipCheaperThanGivenValue(membershipList,1400); data.

System.out.println(resultBooleanSearch4 + "\n");
Exemplificarea unor metode utilizate in proiect: 6
metoda addGymClassToListOfGymClass – adaugarea unei noi clase
in lista de clase sustinute

Metoda creata in clasa GymClassManager:


Metoda addGymClassToListOfGymClass este o
public void addGymClassToListOfGymClass(List<GymClass> gymClassList, GymClass newGymClass){ metoda publica de tipul void (nu va avea un
rezultat returnat). Parametrii metodei sunt: lista
gymClassList.add(newGymClass); de gymClass de tipul List de obiecte GymClass,
} si instanta newGymClass de tipul GymClass.
Aceasta metoda va adauga un nou obiect
Apelarea metodei in main: create in lista de GymClass.

GymClassManager gymClassManager = new GymClassManager();


“Folosind operatorul de dereferentiere pe lista
de gymclass prin functia add vom adauga
instanta newGymClass a clasei Gymclass.
GymClass newGymClass = new GymClass("SPINNING13",Activity.SPINNING,20,TrainingLevel.INTERMEDIATE,
In main vom crea un nou obiect de tipul
50,GymLocation.MILITARI,"Is based on alternating periods of effort and active recovery in a training GymClassManager si instanta newGymClass.
Ulterior pentru obiectul gymClassManager vom
session, which means a series of planned " + "alternations between high-intensity anaerobic areas (85%)
folosi operatorul de dereferentiere pentru a
and aerobic low-intensity (65%). ",18.00,DayOfWeek.MONDAY, 2); apela metoda addGymClassToListOfGymClass
unde folosim ca parametri lista de gymClass, si
instanta newGymClass).
gymClassManager.addGymClassToListOfGymClass(gymClassList,newGymClass);

System.out.println("addGymClassToListOfGymCLass method below: " + "\n" + gymClassList + "\n");


7
Structura proiect
<<package>>
Fitness AGC
model
<<class>> <<package>>

Membership data
<<class>> private String code;
Client private String description; <<class>>
private int id; private double price; Trainer <<class>> <<class>>
private String cnp; private Date registrationDate; private int id; <<class>>
private String firstName; private Date startDate; private String name; DataCreator DataReader GenerateOutputFile
private String lastName; private MembershipType private String email; readListOfClients
membershipType; createListOfClients Email confirmation sent to client
private String mobile; private String mobile; createListOfTrainers readListOfGymClasses
private String address; private int clientID; readListOfTrainer after purchasing a membership
private double pricePerHour; createListOfMembership
private List<GymClass> gymClassList;
@Override @Override
hashCode(),equals(),toString() @Override hashCode(),equals(),toString()
hashCode(),equals(),toString()

<<class>> <<package>> <<class>>


GymClass manager ClientManager
private String code; updateClientMobile();
private Activity activity; <<subclass>> findClientById();
private int noOfClients; filterListOfMembershipByClient();
private TrainingLevel trainingLevel; CustomizedMembership <<class>>
Membership parameters + :
private int classDuration;
private GymLocation location; private Trainer trainer; TrainerManager
private String classDescription; private int noOfPrivateHours; updateTrainerID();
private GymLocation location; findTrainerById(); <<class>>
private double trainingClassTime;
private DayOfWeek dayOfWeek; searchTrainerByCheaperPricePerHourThanGivenValue();
filterListOfGymClassOfGivenTrainerByLocation();
GymClassManager
private int trainerID; @Override getPrice(); applyDiscount(); updateNoOfClientsPerGymClass();
filterListOfGymClassByTrainer();
updateGymClassDuration();
@Override findGymClassByCode();
hashCode(),equals(),toString() searchGymClassWithGivenNoOfClientsPermitted();
<<class>>
searchGymClassOfGivenDayOfWeek();
<<enum>> <<enum>> MembershipManager searchGymClassByLocationAndActivity();
updateRegistrationDateOfMembership(); filterListOfGymClassByLocation();
Activity MembershipType searchMembershipCheaperThanGivenValue(); filterListOfGymClassByActivity();
SPINNING WEEKDAY <<interface>> filterListOfMembershipsBetweenGivenValues(); filterListOfGymClassWithNoOfClientsBiggerThanGivenValue();
KANGOO_JUMPS WEEKEND
BAG_BOXING MONTHLY
Discountable filterListOfMembershipWithFutureStartDate();
filterListOfMembershipByMembershipType();
extractListOfGymLocationWithMaximumGymClasses();
extractGymClassesByGymLocation();
BODY_COMBAT ANNUALLY public abstract void extractMembershipByClientId(); extractNoOfGymClassesByTrainerId();
AQUA applyDiscount(int percent); applyDiscountToCustomizedMembership(); addGymClassToListOfGymClass();
removeGymClassFromListOfGymClass();
<<enum>>
DayOfWeek <<enum>>
MONDAY <<enum>>
TUESDAY TrainingLevel GymLocation
WEDNESDAY AVIATIEI <<class>>
BEGGINNER
THURSDAY INTERMEDIATE
MILITARI <<package>> Main
FIRDAY
SATURDAY
ADVANCED
TITAN
main Check all the methods from TrainerManager, ClientManager,
MembershipManager and GymClassManager
SUNDAY
8
Structura proiect. Pachetul model.

Structura proiectului consta in 4 pachete (model, data, manager, main) prezentate mai jos.

Pachetul model contine :

❑ Clasele:

1. Client - avand atributele: private int id; private String cnp; private String firstName; private String lastName; private String mobile;
private String address; constructorul Client si metodele @Override: hashCode, equals, respectiv toString;

2. Trainer – avand atributele: private int id; private String name; private String email; private String mobile; private double pricePerHour;
constructorul Trainer si metodele @Override: hashCode, equals, respectiv toString;

3. Membership (supraclasa pentru CustomizedMembership) – avand atributele: private String code; private String description; private
double price; private Date registrationDate; private Date startDate; private MembershipType membershipType; private int clientID; private
List<GymClass> gymClassList; constructorul Membership si metodele @Override: hashCode, equals, respectiv toString;

4. CustomizedMembership(subclasa pentru clasa Membership, implementeaza interfata Discountable); - avand 3 atribute in plus fata
de clasa mostenita: private Trainer trainer; private int noOfPrivateHours; private GymLocation location; constructorul CustomizedMembership
si metodele @Override getPrice() si applyDiscount();

5. GymClass – avand atirbutele: private String code; private Activity activity; private int noOfClients; private TrainingLevel trainingLevel;
private int classDuration; private GymLocation location; private String classDescription; private double trainingClassTime; private
DayOfWeek dayOfWeek; private int trainerID; constructorul GymClass si metodele @Override: hashCode, equals, respectiv toString;

❑ Interfata Discountable (implementata de subclasa CustomizedMembership) – avand metoda abstracta applyDiscount.


9
Clasele Enum. Pachetul data

❑ Clasele Enum

1. Activity – reprezinta activitatile specifice claselor, avand constantele: SPINNING, KANGOO_JUMPS , BAG_BOXING, BODY_COMBAT, AQUA;

2. GymLocation – reprezinta locatiile unde sunt sustinute clasele, avand constantele: AVIATIEI, MILITARI, TITAN;

3. DayOfWeek – reprezinta zilele cu acces in sala, avand constantele: MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FIRDAY, SATURDAY, SUNDAY;

4. TrainingLevel – reprezinta nivelul de antrenament specific clasei, avand constantele: BEGGINNER, INTERMEDIATE, ADVANCED;

5. MembershipType – reprezinta tipul de abonament oferit, avand constantele: WEEKDAY, WEEKEND, MONTHLY, ANNUALLY;

Pachetul data contine clasele folosite pentru lucrul cu fisiere (precum excel, word, etc.).

❑ DataCreator – avand metodele: createListOfClients, createListOfTrainers, createListOfMembership.

❑ DataReader – avand metodele: readListOfClients, readListOfGymClasses, readListOfTrainer.

❑ GenerateOutputFile - genereaza confirmarea trimisa clientului dupa achizitia unui abonament.


10
Pachetul manager
Clasa TrainerManager

Pachetul manager contine clasele in care sunt create metodele proiectului.

Acestea au fost create pentru definirea metodelor utilizate de catre aplicatie

❑ TrainerManager – contine metodele:

- updateTrainerID() - Actualizarea pretului pe ora cerut de instructor pentru abonamentele personalizate.

- findTrainerById() - Vizualizarea unui anumit instructor in functie de ID-ul alocat acestuia.

- searchTrainerByCheaperPricePerHourThanGivenValue() – Verificarea existentei instructorilor ce solicita pretul mai mic pe ora decat o valoare
specificata.

- filterListOfGymClassOfGivenTrainerByLocation() - Filtrarea unei listei de clase disponibile sustinute de un anumit instructor intr-o locatie specificata.

- filterListOfGymClassByTrainer() - Filtrarea unei listei de clase disponibile sustinute de un anumit instructor indiferent de locatie.
11
Pachetul manager
Clasele ClientManager, MembershipManager
❑ ClientManager – contine metodele:

- updateClientMobile() - Actualizarea numarului de telefon pentru un anumit client.

- findClientById() - Vizualizarea unui client in functie de ID-ul alocat acestuia.

- filterListOfMembershipByClient() - Vizualizarea unei liste de abonamente achizitionate de un anumit client (in functie de ID-ul alocat acestuia).

❑ MembershipManager – contine metodele:

- updateRegistrationDateOfMembership() - Actualizarea datei de inregistrare a unui abonament.

- searchMembershipCheaperThanGivenValue() – Verificarea existentei abonamentelor cu o valoare mai mica decat o valoarea specificata.

- filterListOfMembershipsBetweenGivenValues()- Filtrarea unei liste de abonamente cu valori cuprinse intre doua valori specificate(min –max).

- filterListOfMembershipWithFutureStartDate() - Filtrarea unei liste de abonamente cu data de incepere din viitor (lista de abonamente care nu au
inceput inca).

- filterListOfMembershipByMembershipType() - Filtrarea unei liste de abonamente in functie de tipul abonamentului.

- extractMembershipByClientId() - Vizualizarea unei liste de abonamente in functie de client.

- applyDiscountToCustomizedMembership() - Aplicarea unui discount cu o anumita valoare pentru un abonament specificat.


12
Pachetul manager
Clasa GymClassManager
❑ GymClassManager – contine metodele:

- updateNoOfClientsPerGymClass() - Actualizarea numarului de clienti permis la o anumita clasa.

- updateGymClassDuration() - Actualizarea duratei unei clase sustinute.

- findGymClassByCode() - Vizualizarea unei anumite clase in functie de codul alocat acesteia;

- searchGymClassWithGivenNoOfClientsPermitted() –Verificarea existentei claselor sustinute in toate locatiile, cu un anumit numar de clienti permis.

- searchGymClassOfGivenDayOfWeek() – Verificarea existentei claselor sustinute in toate locatiile, intr-o zi specificata.

- searchGymClassByLocationAndActivity() - Filtrarea unei liste de clase sustinute intr-o anumita locatie in functie de tipul de activitate desfasurata.

- filterListOfGymClassByLocation() -Filtrarea unei liste de clase sustinute intr-o anumita locatie.

- filterListOfGymClassByActivity() - Filtrarea unei liste de clase sustinute in functie de tipul de activitate desfasurata.

- filterListOfGymClassWithNoOfClientsBiggerThanGivenValue() - Vizualizarea unei liste de clase cu un numar de clienti mai mare decat val. specificata.

- extractListOfGymLocationWithMaximumGymClasses() - Vizualizarea locatiilor cu cele mai multe clase sustinute.

- extractGymClassesByGymLocation() -Vizualizarea unei liste de clase sustinute in functie de locatia salii.

- extractNoOfGymClassesByTrainerId() -Vizualizarea numarului de clase sustinute de un anumit instructor.

- addGymClassToListOfGymClass() -Adaugarea unei clase in lista de clase sustinute indiferent de locatie.

- removeGymClassFromListOfGymClass() -Inlaturarea unei clase din lista de c;ase sustinute indiferent de locatie.
13
Pachetul main. Clasa Main

Pachetul main contine clasa Main care reprezinta clasa in care am verificat
functionalitatea metodelor. Mai exact, aici este locul unde se citesc de la tastatura
valorile constructorilor pentru care vrem sa testam prin apelare metodele avute in
clasele TrainerManager, ClientManager, MembershipManager and
GymClassManager.

Va multumesc pentru timpul acordat!

S-ar putea să vă placă și