Sunteți pe pagina 1din 30

Universitatea din Craiova Facultatea de Automatica, Calculatoare si Electronica

PROIECT

Studenti 10303: Durac Catalin ulea Ionut

Profesor Coordonator: Brezovan Marius

Enuntul problemei
15! Birou de turism Infor"atiile aferente statiunilor care ofera concedii sunt ur"atoarele: # nu"e statiune$ # lista de %erioade de se&ur' s%ecificate %rin data de ince%ut si sfarsit a se&urului! Infor"atiile des%re clienti sunt ur"atoarele: # nu"e si %renu"e$ # cod nu"eric %ersonal$ # adresa$ # nu"ar de telefon$ # %erioada de se&ur dorita$ # lista statiunilor dorite (in ordinea descrescatoare a %referintelor)! O%eratii: # introducere date$ # afisare statiuni sortate du%a nu"e$ # actualizare date: 1! adau*are a unei noi statiuni cu %erioadele aferente la data curenta$ +! adau*are a unei noi %erioade la o statiune$ # ster*erea statiunilor care nu "ai au %erioade de se&ur$ # afisare statiuni care au ,ilete intr#o anu"ita %erioada sortate du%a nu"e (lista)$ # afisare %erioade se&ur %entru o anu"ita statiune sortate du%a ziua de ince%ere a %erioadelor$ # afisare clienti care doresc aceeasi %erioada intr#o statiune$ # afisare clienti care doresc o statiune$ # deter"inarea nu"arului de locuri intr#o anu"ita %erioada la o statiune!

1. Descrierea aplicatiei
Pro*ra"ul este de ti% M-C Dialo* Base' si contine o fereastra %rinci%ala unde sunt afisate functiile cerute de %ro,le"a!

Butoanele din %artea stan*a sunt: afisarea statiunilor sortate du%a nu"e$

# afisarea statiunilor care au ,ilete intr#o anu"ita %erioada$

# afisare %erioade se&ur %entru o anu"ita statiune$

# afisare clienti care doresc aceeasi %erioada si statiune$

# afisare clienti care doresc aceeasi statiune$

Butoanele aflate in %artea drea%ta sunt: # adau*are statiune: aici "ai a%ar doua casute de dialo*' una care %reia nu"ele statiunii si una care %reia %erioadele de se&ur$

# adau*are se&ur: a%are lista statiunilor' de unde se selecteaza cea %entru care se doreste adau*area %erioadei de se&ur$

# ster*erea statiuni: a%are lista statiunilor de unde se ale*e cea care se doreste a fi stearsa$

# nu"arul de locuri dintr#o statiune: du%a selectarea statiunii dintr#o lista infor"atiile sunt afisate intr#o fereastra se%arata$

# adau*area unui client si a datelor si %referintelor acestuia$

2. Descrierea soluiei (clase i !uncionare"


Clase folosite 3n %ro*ra": 1. se#ur, statiune, nume$statiune, client% 2. CA&entieDl&, CAdau&areClienti CAdd'e#urDl&, CAdd'tatiuneDl&,

1.1Clasa sejur Re%rezinta un nod al unei liste %entru "entinerea %erioadelor de se&ur!
class se&ur 4 int nr5loc' nr5li,er$ COleDateTi"e data1' data+$ se&ur 6u$ %u,lic: se&ur() 4u70$ nr5loc70$ nr5li,er70$8 99*et int *et:()$ int *et:;()$ COleDateTi"e *etD1()$ COleDateTi"e *etD+()$ se&ur6 *et<()$ 99set void set:(int 5nr5loc)$ void set:;(int 5nr5li,er)$ void setD1(COleDateTi"e data)$ void setD+(COleDateTi"e data)$ void set<(se&ur6 5u)$ 99altele 8$

<nde: # int nr5loc : nu"arul de locuri din se&ur$ # int nr5li,er : nu"arul de locuri li,ere din se&ur$ # COleDateTi"e data1' data+ : datele de ince%ut si sfarsit ale se&urului$ # se&ur 6u : le*atura cu ur"atorul nod din lista! # se&ur() : constructorul nodului$ # int *et:()' int *et:;()' COleDateTi"e *etD1()' COleDateTi"e *etD+()' se&ur6 *et<() : se e=tra*e nu"arul de locuri %use la
>

dis%ozitie' nu"arul de locuri li,ere' data de ince%ut' data de sfarsit si ur"atorul nod din lista$ # void set:(int 5nr5loc)' void set:;(int 5nr5li,er)' void setD1(COleDateTi"e data)' void setD+(COleDateTi"e data)' void set<(se&ur6 5u) : se seteaza nu"arul de locuri %use la dis%ozitie' nu"arul de locuri li,ere' data de ince%ut' data de sfarsit si ur"atorul nod din lista$ 1.2Clasa statiune Re%rezinta un nod al unei liste de statiuni!
class statiune 4 CStrin* nu"e$ se&ur 6lista' 6clista' 6it$ statiune 6u$ %u,lic: statiune()$ statiune(CStrin* 5nu"e)$ 99*et CStrin* *et:u"e()$ statiune6 *et<()$ 99set void set:u"e(CStrin* 5nu"e)$ void set<(statiune6 5u)$ 99altele void addSe&ur(COleDateTi"e data1' COleDateTi"e data+' int nr5loc)$ se&ur6 retIt()$ void resetIt()$ 8$

<nde: # CStrin* nu"e : nu"ele statiunii$ # se&ur 6lista' 6clista' 6it : retin %ri"ul si ulti"ul nod al listei' %recu" si ele"entul curent$ # statiune 6u : le*atura cu nodul ur"ator din lista$ # statiune()' statiune(CStrin* 5nu"e) : constructorii clasei$ # CStrin* *et:u"e()' statiune6 *et<() : se e=tra*e nu"ele statiunii si nodul ur"ator din lista$ # void set:u"e(CStrin* 5nu"e)' void set<(statiune6 5u) : se seteaza nu"ele statiunii si nodul ur"ator$ # void addSe&ur(COleDateTi"e data1' COleDateTi"e data+' int nr5loc) : se adau*a un se&ur la statiune$
10

# se&ur6 retIt() : se e=tra*e ele"entul curent din lista de %erioade de se&ur$ # void resetIt() : se seteaza ele"entul curent din lista de se&ururi la %ri"ul! 1.3Clasa nume_statiune Re%rezinta un nod %entru o lista de nu"e de statiuni!
class nu"e5statiune 4 CStrin* nu"e$ nu"e5statiune 6u$ %u,lic: nu"e5statiune()$ 99*et CStrin* *et:u"e()$ nu"e5statiune6 *et<()$ 99set void set:u"e(CStrin* 5nu"e)$ void set<(nu"e5statiune 6 5u)$ 8$

<nde: # CStrin* nu"e : nu"ele statiunii$ # nu"e5statiune 6u : le*atura cu nodul ur"ator$ # nu"e5statiune() : constructorul clasei$ # CStrin* *et:u"e()' nu"e5statiune6 *et<() : se e=tra*e nu"ele si nodul ur"ator$ # void set:u"e(CStrin* 5nu"e)' void set<(nu"e5statiune6 5u) : se seteaza nu"ele si nodul ur"ator$ 1.4Clasa client Re%rezinta un nod %entru o lista de clienti!
class client 4 CStrin* nu"e%' C:P' adr' nr5tel$ COleDateTi"e data1' data+$ nu"e5statiune 6lista' 6clista' 6it$ client6 u$ %u,lic: client()$ 99*et

11

CStrin* *et:u"e%()$ CStrin* *etC:P()$ CStrin* *et?dr()$ CStrin* *et:r()$ COleDateTi"e *etD1()$ COleDateTi"e *etD+()$ client6 *et<()$ 99set void set:u"e%(CStrin* 5nu"e%)$ void setC:P(CStrin* 5C:P)$ void set?dr(CStrin* 5adr)$ void set:r(CStrin* 5nr5tel)$ void setD1(COleDateTi"e data)$ void setD+(COleDateTi"e data)$ void set<(client6 5u)$ 99altele void addStatiune(CStrin* nu"e)$ nu"e5statiune6 retIt()$ void resetIt()$ 8$

<nde: # CStrin* nu"e% : nu"ele si %renu"ele clientului$ # C:P : codul nu"eric %ersonal al clientului$ # ?dr : adresa clientului$ # nr5tel : nu"arul de telefon al clientului$ # COleDateTi"e data1' data+ : data de ince%ut si sfarsit a %erioadei dorite$ # nu"e5statiune 6lista' 6clista' 6it : %ri"ul si ulti"ul nod din lista de statiunii' %recu" si nodul curent din aceasta$ # client6 u : le*atura cu nodul ur"ator din lista$ # client() : constructorul clasei$ # CStrin* *et:u"e%()' CStrin* *etC:P()' CStrin* *et?dr()' CStrin* *et:r()' COleDateTi"e *etD1()' COleDateTi"e *etD+()' client6 *et<() : se e=tra* infor"atiile des%re client' datele de ince%ut si de sfarsit ale %erioadelor dorite' %recu" si le*atura cu nodul ur"ator$ # void set:u"e%(CStrin* 5nu"e%)' void setC:P(CStrin* 5C:P)' void set?dr(CStrin* 5adr)' void set:r(CStrin* 5nr5tel)' void setD1(COleDateTi"e data)' void setD+(COleDateTi"e data)' void set<(client6 5u) : se seteaza datele clientului' datele des%re %erioada de ince%ut si de sfarsit ale se&urului dorit' cat si des%re nodul ur"ator$ # void addStatiune(CStrin* nu"e) : adau*are statiune$ # nu"e5statiune6 retIt() : intoarce nodul curent din lista de statiuni$
1+

# void resetIt() : nodul curent este dus in ca%ul listei!

Descrierea implementarii(
Se va %rezenta i"%le"entarea claselor: statiune' client! Clasele se&ur si nu"e5statiune sunt "ai si"%le si nu %rezinta dificultati! Clasa statiune # void addSe&ur(COleDateTi"e data1' COleDateTi"e data+' int nr5loc)
4 se&ur 6nou$ nou 7 ne@ se&ur$ nou#AsetD1(data1)$ nou#AsetD+(data+)$ nou#Aset:(nr5loc)$ nou#Aset:;(nr5loc)$ nou#Aset<(0)$ if (lista770) lista 7 clista 7 it 7 nou$ else 4 clista#Aset<(nou)$ clista 7 nou$ 8 8

Se creeaza un nou se&ur' se initializeaza confor" datelor dis%oni,ile' a%oi se verifica daca lista este vida! Daca este vida' nodul nou creat este %us %e %ri"a %ozitie si deoarece este sin*urul introdus el va fi si ca%atul si sfarsitul listei iar %ointerul catre ele"entul curent il va indica %e acesta! Daca nu este vida se seteaza acesta ca fiind ulti"ul ele"ent iar %ointerul catre ulti"ul ele"ent al listei va %ri"i adresa acestuia!
# se&ur6 retIt() 4

13

se&ur6 5it 7 it$ if (it B7 0) it 7 it#A*et<()$ return 5it$ 8

)t este un %ointer la nodul curent din lista de %erioade se&ur! ?ceasta functie intoarce it' a%oi il "uta %e ur"atorul nod! Daca nu e=ista un nod ur"ator it este %us %e %ri"a %ozitie!
# void resetIt() 4 it 7 lista$8

Seteaza %ointerul it %e %ri"a %ozitie! Clasa client


# void addStatiune(CStrin* nu"e) 4 nu"e5statiune6 nou 7 ne@ nu"e5statiune$ nou#Aset:u"e(nu"e)$ nou#Aset<(0)$ if (lista770) lista 7 clista 7 it 7 nou$ else 4 clista#Aset<(nou)$ clista 7 nou$ 8 8

?dau*a o statiune la lista de statiuni %referate de client! Mecanis"ul este ur"atorul: se creaza un nou nu"e5statiune! Daca lista este *oala atunci acest ulti" ele"ent creat este si %ri"ul si ulti"ul iar %ointerul it %ri"este adresa acestuia! Daca lista nu este *oala se creaza un ulti" ele"ent care %ri"este ulti"ul ele"ent iar %ointerul catre ulti"ul va %ri"i adresa acestuia!
# nu"e5statiune6 retIt() 4 nu"e5statiune6 5it 7 it$ if (it B7 0) it 7 it#A*et<()$ return 5it$ 8

)t re%rezinta un %ointer la nodul curent din lista de statiuni! -unctia

intoarce it' a%oi il "uta %e ur"atorul nod! Daca acesta nu e=ista este "utat %e %ri"ul nod!
1.

void resetIt() 4 it 7 lista$8

Pune %ointerul it catre ele"entul curent %e %ri"a %ozitie! 2. Clasa CAgentieDlg

Clasa %rinci%ala unde sunt retinute listele de statiuni si de clienti!


# statiune 6"5%;ista : este ca%ul listei %entru statiuni' 6"5%C;ista : coada listei %entru statiuni' 6"5%It : ele"ent te"%orar$ # client 6"5%;ista5c : este ca%ul listei %entru clienti' 6"5%C;ista5c : coada listei %entru clienti' 6"5%It5c : ele"ent te"%orar$ # ,ool BT: : este adevarat sau fals du%a cu" sunt a%asate ,utoanele de afisare a %erioadelor de se&ur si res%ectiv adau*are se&ur$ # ,ool BT:1: este adevarat sau fals du%a cu" sunt a%asate ,utoanele de ster*ere statiune si res%ectiv nu"ar de locuri! a) Initial' la %ornirea a%licatie' se lanseaza:
BOO; C?*entieDl*::OnInitDialo*() 4 C "5%;ista 7 "5%C;ista 7 "5%It 7 0$ "5%;ista5c 7 "5%C;ista5c 7 "5%It5c 7 0$ C 8

Ea seteaza %ointerii %entru ince%ut si sfarsit liste la null! ,) Pentru ,utonul D?fisare statiuni sortate du%a nu"eE se a%eleaza:
void C?*entieDl*::OnBT:?f1() 4 99ster*ere ctrl#e 99creaza ferestrele si le*aturile intre ,utoane si varia,ile FetDl*Ite"(IDC5T1)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5T+)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5Ji+)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5Ji3)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5;una+)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5;una3)#ASGo@Hindo@(SH5IIDE)$

1/

FetDl*Ite"(IDC5?n1)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5?n3)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5?cce%t5?f+)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5?f3Se&ur)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5?cce%t5:r;ocuri)#ASGo@Hindo@(SH5IIDE)$ 99 C **se &oleste list+bo,+ul unde trebuiesc a!isate statiunile "5ctrl?ddSe&urBT:!ResetContent()$ **se parcur&e lista de statiuni si se umple list+bo,+ul ast!el( se setea-a **elementul temporar cu capul listei pentru statiuni si cat timp mai **e,ista element temporar adau&am numele in lista si apoi trecem **elementul temporar la urmatorul "5%It 7 "5%;ista$ @Gile("5%It) 4 "5ctrl?ddSe&urBT:!?ddStrin*("5%It#A*et:u"e())$ "5%It 7 "5%It#A*et<()$ 8 8

c) Pentru ,utonul D?fisare statiuni care au ,ilete intr#o anu"ita %erioada sortate du%a nu"eE se e=ecuta:
void C?*entieDl*::OnBT:?f+() 4 **ster&ere ctrl+e FetDl*Ite"(IDC5?ddSe&uBT:)#ASGo@Hindo@(SH5SIOH)$ FetDl*Ite"(IDC5T1)#ASGo@Hindo@(SH5SIOH)$ FetDl*Ite"(IDC5T+)#ASGo@Hindo@(SH5SIOH)$ FetDl*Ite"(IDC5Ji+)#ASGo@Hindo@(SH5SIOH)$ FetDl*Ite"(IDC5Ji3)#ASGo@Hindo@(SH5SIOH)$ FetDl*Ite"(IDC5;una+)#ASGo@Hindo@(SH5SIOH)$ FetDl*Ite"(IDC5;una3)#ASGo@Hindo@(SH5SIOH)$ FetDl*Ite"(IDC5?n1)#ASGo@Hindo@(SH5SIOH)$ FetDl*Ite"(IDC5?n3)#ASGo@Hindo@(SH5SIOH)$ FetDl*Ite"(IDC5?cce%t5?f+)#ASGo@Hindo@(SH5SIOH)$ FetDl*Ite"(IDC5?f3Se&ur)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5?cce%t5:r;ocuri)#ASGo@Hindo@(SH5IIDE)$ 99 **se &oleste list+bo,+ul Add'e#urB./ "5ctrl?ddSe&urBT:!ResetContent()$ 8

10

Du%a ce se va introduce %erioada %entru care se doreste afisarea statiunilor cu ,ilete intr#o anu"ita %erioada se va face clicK %e Accept care va e=ecuta:
void C?*entieDl*::On?cce%t?f+() 4 "5ctrl?ddSe&urBT:!ResetContent()$ <%dateData(true)$ 99se veri!ica daca datele introduse nu sunt eronate si daca data 99de s!arsit a perioadei nu este premer&atoare datei de inceput if ("5intJi1A0 LL "5intJi1M3+ LL "5int;una1A0 LL "5int;una1M13 LL "5int?n1A+00+ LL "5int?n1M+100 LL "5intJi+A0 LL "5intJi+M3+ LL "5int;una+A0 LL "5int;una+M13 LL "5int?n+A+00+ LL "5int?n+M+100) 4 if ("5int?n1 A "5int?n+) 4 ?f=Messa*eBo=(NDate incorecteBN)$ return$ 8 else if ("5int?n1 77 "5int?n+ LL "5int;una1 A "5int;una+) 4 ?f=Messa*eBo=(NDate incorecteBN)$ return$ 8 else if ("5int?n1 77 "5int?n+ LL "5int;una1 77 "5int;una+ LL "5intJi1 A "5intJi+) 4 ?f=Messa*eBo=(NDate incorecteBN)$ return$ 8 COleDateTi"e d1' d+$ d1!SetDate("5int?n1' "5int;una1' "5intJi1)$ d+!SetDate("5int?n+' "5int;una+' "5intJi+)$ "5%It 7 "5%;ista$ 99se parcur&e lista de statiuni @Gile("5%It) 4 "5%It#AresetIt()$ se&ur6 nou$ 99pentru !iecare statiune se veri!ica lista de se#ururi @Gile(nou 7 "5%It#AretIt()) 4 if (nou#A*etD1()A7d1 LL nou#A*etD+()M7d+) 4 99daca datele coincid cu cele din lista 11

99de se#ururi este a!isat numele statiunii "5ctrl?ddSe&urBT:!?ddStrin*("5%It A*et:u"e())$ ,reaK$ 8 8 99se ia urmatorul element "5%It 7 "5%It#A*et<()$ 8 ?f=Messa*eBo=(NDate corecteBN)$ 8 else ?f=Messa*eBo=(NDate incorecteBN)$ 8

d) Pentru ,utonul D?fisare %erioade se&urE %entru o anu"ita statiune sortate du%a data ince%erii se e=ecuta:
void C?*entieDl*::OnBT:?f3() 4 **ster&ere ctrl+e FetDl*Ite"(IDC5T1)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5T+)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5Ji+)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5Ji3)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5;una+)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5;una3)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5?n1)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5?n3)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5?cce%t5?f+)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5?f3Se&ur)#ASGo@Hindo@(SH5SIOH)$ FetDl*Ite"(IDC5?ddSe&uBT:)#ASGo@Hindo@(SH5SIOH)$ FetDl*Ite"(IDC5?cce%t5:r;ocuri)#ASGo@Hindo@(SH5IIDE)$ 99 BT: 7 false$ **se ster& list+bo,urile si se populea-a cu numele statiunilor "5ctrl?ddSe&urBT:!ResetContent()$ "5ctrl?f3Se&ur!ResetContent()$ "5%It 7 "5%;ista$ @Gile("5%It) 4 "5ctrl?ddSe&urBT:!?ddStrin*("5%It#A*et:u"e())$ "5%It 7 "5%It#A*et<()$ 8 8

12

e) Pentru ,utonul D?fisare clienti care doresc aceeasi %erioada intr#o statiuneE se e=ecuta:
void C?*entieDl*::OnBT:?f.() 4 CStrin* te=t' sirO100P' ssirO100P$ COleDateTi"e d1O100P' d+O100P' sd1O100P' sd+O100P' d$ int i' &' nr' snr$ ,ool e=$ nu"e5statiune 6%$ **se parcur&e lista de statiuni "5%It 7 "5%;ista$ @Gile("5%It) 4 nr 7 0$ snr 7 0$ **pentru o statiune se parcur&e lista de clienti "5%It5c 7 "5%;ista5c$ @Gile("5%It5c) 4 e= 7 false$ "5%It5c#AresetIt()$ **se parcur&e lista de nume de statiuni a clientului @Gile(% 7 "5%It5c#AretIt()) if (%#A*et:u"e()77"5%It#A*et:u"e()) 4 e= 7 true$ ,reaK$ 8 if (e=) 4 **daca statiunea este aceeasi cu cea curenta se **memorea-a numele clientului si datele se#urului sirOnrP 7 "5%It5c#A*et:u"e%()$ d1OnrP 7 "5%It5c#A*etD1()$ d+OnrP 7 "5%It5c#A*etD+()$ nrQQ$ 8 99se trece la urmatorul element din lista "5%It5c 7 "5%It5c#A*et<()$ 8 d!SetDate(1>00'1'1)$ **se parcur& numele &asite for(i70$ iMnr$ iQQ) 4

1>

te=t 7 NIn statiunea N Q "5%It#A*et:u"e() Q N :RnN$ if (d1OiPB7d) 4 for(&7i$ &Mnr$ &QQ) if (d1OiP77d1O&P LL d+OiP77d+O&P) 4 **pentru doua nume cu aceeasi data de se#ur **se pastrea-a pentru a!isare in variabila te,t te=t Q7 N # N Q sirO&P Q NRnN$ sd1OsnrP 7 d1O&P$ sd+OsnrP 7 d+O&P$ snrQQ$ if (iB7&) 4 d1O&P!SetDate(1>00' 1' 1)$ d+O&P 7 d1O&P$ 8 8 if (iB7&) ?f=Messa*eBo=(te=t)$ 8 8 "5%It 7 "5%It#A*et<()$ 8 8

f) Pentru ,utonul D?fisase clienti care doresc aceeasi statiuneE se e=ecuta:


void C?*entieDl*::OnBT:?f/() 4 CStrin* te=t' sirO100P$ ,ool e=$ nu"e5statiune 6%$ "5%It 7 "5%;ista$ **se parcur&e lista de statiuni @Gile("5%It) 4 te=t 7 NIn statiunea N Q "5%It#A*et:u"e() Q N sunt:RnN$ "5%It5c 7 "5%;ista5c$ **pentru o statiune se parcu&e lista de clienti @Gile("5%It5c) 4 e= 7 false$ "5%It5c#AresetIt()$ @Gile(% 7 "5%It5c#AretIt())

+0

if (%#A*et:u"e()77"5%It#A*et:u"e()) 4 e= 7 true$ ,reaK$ 8 **daca un client are in pre!erinte aceeasi statiune se **pastrea-a numele if (e=) te=t Q7 N # N Q "5%It5c#A*et:u"e%() Q NRnN$ "5%It5c 7 "5%It5c#A*et<()$ 8 ?f=Messa*eBo=(te=t)$ "5%It 7 "5%It#A*et<()$ 8 8

*) Pentru ,utonul D?dau*area unei statiuniE se e=ecuta:


void C?*entieDl*::On?ddStatiune() 4 **ster& ctrl+e FetDl*Ite"(IDC5T1)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5T+)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5Ji+)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5Ji3)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5;una+)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5;una3)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5?n1)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5?n3)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5?cce%t5?f+)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5?ddSe&uBT:)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5?f3Se&ur)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5?cce%t5:r;ocuri)#ASGo@Hindo@(SH5IIDE)$ 99 C?ddStatiuneDl* %$ C?ddSe&urDl* %%$ ,ool add 7 false$ COleDateTi"e d1' d+$ 99se desc0ide dialo&ul pentru a cere numele statiunii %!DoModal()$ 99daca s+a introdus un nume (este selectat accept" if (%!acce%t) 4 **daca lista este &oala se setea-a noul nod ca !iind atat primul **cat si ultimul if ("5%;ista770)

+1

4 "5%;ista 7 ne@ statiune(%!"5str:u"e)$ "5%;ista#Aset<(0)$ "5%C;ista 7 "5%;ista$ add 7 true$ 8 else 4 **daca lista nu este &oala "5%It 7 "5%;ista$ add 7 true$ **se veri!ica e,istenta unei statiuni cu acelasi nume @Gile("5%It) 4 if ("5%It#A*et:u"e()77%!"5str:u"e) add 7 false$ "5%It 7 "5%It#A*et<()$ 8 if (Badd) ?f=Messa*eBo=(NStatiunea e=istaBN)$ else 4 **daca nu e,ista o statiune cu acelasi nume se **crea-a un nou nod "5%It 7 ne@ statiune(%!"5str:u"e)$ "5%It#Aset<(0)$ "5%C;ista#Aset<("5%It)$ "5%C;ista 7 "5%It$ 8 8 if (add) **se adau&a perioadele de se#ur for($$) 4 99se desc0ide dialo&ul pentru datele de se#ur %%!DoModal()$ if (%%!acce%t) 4 **daca datele sunt valide se adau&a d1!SetDate(%%!"5int?n1' %%!"5int;una1' %%!"5intJi1)$ d+!SetDate(%%!"5int?n+' %%!"5intJi+)$ "5%C;ista#AaddSe&ur(d1' d+' %%!"5int:r)$ 8 else ,reaK$ 8 8 %%!"5int;una+'

++

G) Pentru ,utonul D?dau*area unui se&urE la o statiune:


void C?*entieDl*::On?ddSe&ur() 4 **ster& crtl+e FetDl*Ite"(IDC5T1)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5T+)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5Ji+)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5Ji3)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5;una+)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5;una3)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5?n1)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5?n3)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5?cce%t5?f+)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5?f3Se&ur)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5?cce%t5:r;ocuri)#ASGo@Hindo@(SH5IIDE)$ 99 FetDl*Ite"(IDC5?ddSe&uBT:)#ASGo@Hindo@(SH5SIOH)$ **se resetea-a list+bo,+ul si se populea-a cu numele statiunilor "5ctrl?ddSe&urBT:!ResetContent()$ "5%It 7 "5%;ista$ @Gile("5%It) 4 "5ctrl?ddSe&urBT:!?ddStrin*("5%It#A*et:u"e())$ "5%It 7 "5%It#A*et<()$ 8 BT: 7 true$ 8

Du%a ce se va selecta statiunea careia dori" sa#i adau*a" un nou se&ur se va e=ecuta:
void C?*entieDl*::OnD,lclK?ddSe&uBT:() 4 if (BT:) 4 CStrin* 5%%$ C?ddSe&urDl* %%$ COleDateTi"e d1' d+$ "5ctrl?ddSe&urBT:!FetTe=t("5ctrl?ddSe&urBT:!FetCurSel()'5%%)$ "5%It 7 "5%;ista$ 99se populea-a list+bo,+ul cu numele statiunilor +3

@Gile("5%It) 4 if ("5%It#A*et:u"e() 77 5%%) ,reaK$ "5%It 7 "5%It#A*et<()$ 8 if ("5%It) 4 for($$) 4 99se desc0ide dialo&ul pentru datele se#urului %%!DoModal()$ 99daca este selectat accept if (%%!acce%t) 4 99pentru date corecte se adau&a se#ur d1!SetDate(%%!"5int?n1' %%!"5int;una1' %%!"5intJi1)$ d+!SetDate(%%!"5int?n+' %%!"5int;una+' %%!"5intJi+)$ "5%C;ista#AaddSe&ur(d1' d+' %%!"5int:r)$ 8 else ,reaK$ 8 8 "5ctrl?ddSe&urBT:!ResetContent()$ FetDl*Ite"(IDC5?ddSe&uBT:)#ASGo@Hindo@(SH5IIDE)$ 8 else 4 "5ctrl?f3Se&ur!ResetContent()$ CStrin* %%$ "5ctrl?ddSe&urBT:!FetTe=t("5ctrl?ddSe&urBT:!FetCurSel()'%%)$ "5%It 7 "5%;ista$ 99se cauta statiunea selectata @Gile("5%It) if ("5%It#A*et:u"e()77%%) ,reaK$ else "5%It 7 "5%It#A*et<()$ 99daca s+a &asit if ("5%It) 4 99se crea-a un nou se#ur se&ur6 nou$ cGar ttO10P$ "5%It#AresetIt()$ 99se a!isea-a datele de se#ur @Gile(nou 7 "5%It#AretIt())

+.

4 %% 7 5itoa(nou#A*etD1()!FetDaS()' tt' 10)$ %% Q7 N:N$ %% Q7 5itoa(nou#A*etD1()!FetMontG()' tt' 10)$ %% Q7 N:N$ %% Q7 5itoa(nou#A*etD1()!FetTear()' tt' 10)$ %% Q7 N # N $ %% Q7 5itoa(nou#A*etD+()!FetDaS()' tt' 10)$ %% Q7 N!N$ %% Q7 5itoa(nou#A*etD+()!FetMontG()' tt' 10)$ %% Q7 N:N$ %% Q7 5itoa(nou#A*etD+()!FetTear()' tt' 10)$ "5ctrl?f3Se&ur!?ddStrin*(%%)$ 8 8 8 8

i) Pentru ,utonul DSter*erea unei statiuniE se e=ecuta:


void C?*entieDl*::OnSter*ere() 4 **ster& ctrl+e FetDl*Ite"(IDC5T1)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5T+)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5Ji+)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5Ji3)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5;una+)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5;una3)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5?n1)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5?n3)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5?cce%t5?f+)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5?ddSe&uBT:)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5?cce%t5:r;ocuri)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5?f3Se&ur)#ASGo@Hindo@(SH5SIOH)$ 99 BT:1 7 true$ **se resetea-a list+bo,+ul si se populea-a cu numele statiunilor "5ctrl?f3Se&ur!ResetContent()$ "5%It 7 "5%;ista$ @Gile("5%It) 4 "5ctrl?f3Se&ur!?ddStrin*("5%It#A*et:u"e())$ "5%It 7 "5%It#A*et<()$ 8 8

+/

Pentru ster*erea unei statiuni BT:1 este .rue' iar %entru aflarea nu"arului de locuri dintr#o statiune la o anu"ita data BT: este False!
void C?*entieDl*::OnD,lclK?f3Se&ur() 4 if (BT:1) 4 CStrin* %%$ statiune6 vecGi$ "5ctrl?f3Se&ur!FetTe=t("5ctrl?f3Se&ur!FetCurSel()'%%)$ "5%It 7 "5%;ista$ vecGi 7 "5%;ista$ 99se cauta nodul pentru a !i sters @Gile("5%It) if ("5%It#A*et:u"e()77%%) ,reaK$ else 4 vecGi 7 "5%It$ "5%It 7 "5%It#A*et<()$ 8 if ("5%It) 4 99daca a !ost &asit se ster&e if ("5%It77"5%;ista) "5%;ista 7 "5%;ista#A*et<()$ else vecGi#Aset<("5%It#A*et<())$ 8 FetDl*Ite"(IDC5?f3Se&ur)#ASGo@Hindo@(SH5IIDE)$ 8 else 4 99?f=Messa*eBo=(N:r locuriBN) <%dateData(true)$ CStrin* %%$ 99se veri!ica daca datele de inceput si de s!arsit de se#ur sunt corecte "5ctrl?f3Se&ur!FetTe=t("5ctrl?f3Se&ur!FetCurSel()'%%)$ if ("5intJi1A0 LL "5intJi1M3+ LL "5int;una1A0 LL "5int;una1M13 LL "5int?n1A+00+ LL "5int?n1M+100 LL "5intJi+A0 LL "5intJi+M3+ LL "5int;una+A0 LL "5int;una+M13 LL "5int?n+A+00+ LL "5int?n+M+100 LL "5ctrl?f3Se&ur!FetCurSel()B7#1) 4 if ("5int?n1 A "5int?n+) 4 +0

?f=Messa*eBo=(NDate incorecteBN)$ return$ 8 else if ("5int?n1 77 "5int?n+ LL "5int;una1 A "5int;una+) 4 ?f=Messa*eBo=(NDate incorecteBN)$ return$ 8 else if ("5int?n1 77 "5int?n+ LL "5int;una1 77 "5int;una+ LL "5intJi1 A "5intJi+) 4 ?f=Messa*eBo=(NDate incorecteBN)$ return$ 8 CStrin* %%$ cGar ttO10P$ "5ctrl?f3Se&ur!FetTe=t("5ctrl?f3Se&ur!FetCurSel()'%%)$ COleDateTi"e d1' d+$ d1!SetDate("5int?n1' "5int;una1' "5intJi1)$ d+!SetDate("5int?n+' "5int;una+' "5intJi+)$ int nr 7 0$ "5%It 7 "5%;ista$ 99se cauta statiunea care a !ost selectata @Gile("5%It) if ("5%It#A*et:u"e()77%%) ,reaK$ else "5%It 7 "5%It#A*et<()$ if ("5%It) 4 99daca a !ost &asita "5%It#AresetIt()$ se&ur6 nou$ 99se parcur&e lista de se#ururi @Gile(nou 7 "5%It#AretIt()) 4 99daca perioadele se suprapun se aduna numarul **de locuri ale se#urului la cele &asite if (B(nou#A*etD1()Ad1 LL nou#A*etD1()Ad+) UU B (nou#A*etD+()Md1 LL nou#A*etD+()Md+)) nr Q7 nou# A*et:;()$ 8 %% 7 "5%It#A*et:u"e() Q N : N$ %% 7 5itoa(nr' tt' 10)$ ?f=Messa*eBo=(%%)$ 8 8 else ?f=Messa*eBo=(NDate incorecteBN)$ 8

+1

&) Pentru ,utonul D?flarea nu"arului de locuri dintr#o statiuneE %entru un anu"it interval de ti"% se e=ecuta:
void C?*entieDl*::OnBT::r;ocuri() 4 **ster& ctrl+e FetDl*Ite"(IDC5T1)#ASGo@Hindo@(SH5SIOH)$ FetDl*Ite"(IDC5T+)#ASGo@Hindo@(SH5SIOH)$ FetDl*Ite"(IDC5Ji+)#ASGo@Hindo@(SH5SIOH)$ FetDl*Ite"(IDC5Ji3)#ASGo@Hindo@(SH5SIOH)$ FetDl*Ite"(IDC5;una+)#ASGo@Hindo@(SH5SIOH)$ FetDl*Ite"(IDC5;una3)#ASGo@Hindo@(SH5SIOH)$ FetDl*Ite"(IDC5?n1)#ASGo@Hindo@(SH5SIOH)$ FetDl*Ite"(IDC5?n3)#ASGo@Hindo@(SH5SIOH)$ FetDl*Ite"(IDC5?cce%t5?f+)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5?ddSe&uBT:)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5?f3Se&ur)#ASGo@Hindo@(SH5SIOH)$ FetDl*Ite"(IDC5?cce%t5:r;ocuri)#ASGo@Hindo@(SH5IIDE)$ 99 BT:1 7 false$ "5ctrl?f3Se&ur!ResetContent()$ **se resetea-a list+bo,+ul si se populea-a cu numele statiunilor "5%It 7 "5%;ista$ @Gile("5%It) 4 "5ctrl?f3Se&ur!?ddStrin*("5%It#A*et:u"e())$ "5%It 7 "5%It#A*et<()$ 8 8 K) Pentru ,utonul D?dau*area unui clientE se e=ecuta: void C?*entieDl*::On?ddClienti() 4 99 FetDl*Ite"(IDC5T1)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5T+)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5Ji+)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5Ji3)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5;una+)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5;una3)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5?n1)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5?n3)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5?cce%t5?f+)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5?ddSe&uBT:)#ASGo@Hindo@(SH5IIDE)$ +2

FetDl*Ite"(IDC5?f3Se&ur)#ASGo@Hindo@(SH5IIDE)$ FetDl*Ite"(IDC5?cce%t5:r;ocuri)#ASGo@Hindo@(SH5IIDE)$ 99 C?dau*areClienti %$ "5%It 7 "5%;ista$ **se trec numele statiunilor in vectorul statiuni a dialo&ului pentru **adau&area unui client int i70$ @Gile("5%It) 4 %!statiuniOiP 7 "5%It#A*et:u"e()$ "5%It 7 "5%It#A*et<()$ iQQ$ 8 %!nr 7 i$ 99se lansea-a casuta pentru adau&are clienti %!DoModal()$ if (%!acce%t) 4 ,ool add$ if ("5%;ista5c770) 4 **daca lista este &oala sa adau&a clientul "5%;ista5c 7 ne@ client()$ "5%;ista5c#Aset<(0)$ "5%C;ista5c 7 "5%;ista5c$ add 7 true$ 8 else 4 **daca lista nu este &oala se veri!ica e,istenta clientului "5%It5c 7 "5%;ista5c$ add 7 true$ @Gile("5%It5c) 4 if ("5%It5c#A*et:u"e%()77%!"5str:u"e) add 7 false$ "5%It5c 7 "5%It5c#A*et<()$ 8 if (Badd) ?f=Messa*eBo=(NClientul e=istaBN)$ else 4 99daca clientul nu e,ista "5%It5c 7 ne@ client()$ "5%It5c#Aset<(0)$

+>

"5%C;ista5c#Aset<("5%It5c)$ "5%C;ista5c 7 "5%It5c$ 8 8 if (add) 4 **se adau&a clientul la coada COleDateTi"e d1' d+$ d1!SetDate(%!"5int?n1' %!"5int;una1' %!"5intJi1)$ d+!SetDate(%!"5int?n+' %!"5int;una+' %!"5intJi+)$ "5%C;ista5c#Aset:u"e%(%!"5str:u"e)$ "5%C;ista5c#Aset?dr(%!"5str?dresa)$ "5%C;ista5c#AsetC:P(%!"5strC:P)$ "5%C;ista5c#Aset:r(%!"5strTelefon)$ "5%C;ista5c#AsetD1(d1)$ "5%C;ista5c#AsetD+(d+)$ for(i70$ iM%!nr$ iQQ) "5%C;ista5c# AaddStatiune(%!statiuniOiP)$ 8 8 8

Clasele C?ddSe&urDl*' C?ddStatiuneDl*' C?dau*areClienti sunt folosite nu"ai la colectarea datelor' fiind sunt si"%le!

30