You are on page 1of 48

Facultatea de Matematică-informatică Cursuri Postuniversitare de Informatică

Proiect
=ACTIVITATEA UNEI FARMACII=

Semestrul III

1

Activitatea unei farmacii
1) Specificarea cerinţelor
Se doreşte dezvoltarea unui software interactiv care să cuprindă activitatea unei farmacii. Se cere ca sistemul să poată efectua atât operaţiile de administrare a farmaciei, specifice personalului şi operaţiile: de verificare a medicamentelor cerute de clienţi, comandă medicament, cumpără medicament, prepară medicament, cât şi operaţii de evidenţă a medicamentelor. Capturarea cerinţelor O farmacie pune la dispoziţia clienţilor săi medicamente oferind, de asemenea şi posibilitatea de preparare a acestora, precum şi posibilitatea de a face comandă de acasă. În cazul în care se optează pentru o comandă de acasă medicamentele necesare se aduc la domiciliu de către un curier. Există două categorii de clienţi: clienţi obişnuiţi şi clienţi de acasă. Clienţii obişnuiţi pot cumpăra de la farmacie medicamente, pot cere prepararea medicamentului necesar, iar clienţii de acasă pot cumpăra medicamente din farmacie, dar pot face şi comandă prin telefon. În mod periodic, farmacia achiziţionează medicamente noi, modifică lista de medicamente, medicamentele expirate sunt distruse, va furniza atenţionări asupra stocului şi măririi preţului. În farmacie pot exista mai multe copii de medicamente, dar la diferite unităţi de măsură (comprimate, tablete, fiole) şi fabricate de diferite firme.

2

Sistemul va permite căutarea medicamentelor după cod, prepararea lor în farmacie, cumpărarea medicamentelor, şi permite clientului să sune la farmacist sau trimite fax, pentru a face comanda medicamentului necesar, de acasă, dacă nu se poate prezenta la farmacie sau nu are timp, comanda (medicamentului) fiind transportată de un curier la adresa cerută de client, iar acesta achită comanda la primirea acesteia.

2) Descrierea cazurilor de utilizare

3

4

5 . Client. Client_de_acasa. Medicament. Farmacist. Administrator. Client_obişnuit. Curier.3) Diagrama de clasă Clasele care se formează şi se desprind în urma analizei substantivelor şi eliminarea celor care nu prezintă interes pentru sistemul considerat sunt următoarele: Casier.

6 .

7 .

dacă medicamentul nu Curier. şi cere Casier. întreabă casierul dacă medicamentul Casier. dacă medicamentul dorit există. 8 . Responsabilităţi primeşte şi livrează comanda de a răspunde clientului de acasă care solicită un medicament prin intermediul telefonului. Farmacist. Client_obişnuit Responsabilităţi Colaboratori merge la farmacie. Curier Colaboratori Client_de_acasa Curier Client Responsabilităţi Colaboratori vine la farmacie şi cere medicamentul Client dorit. comanda. Client_obişnuit Responsabilităţi Colaboratori vine la farmacie şi cere medicamentul Client_obişnuit dorit Casier Client_de_acasă Responsabilităţi Colaboratori sună la farmacie şi face comanda unui Clientul_de_acasă. curierul onorează Curier. există casierul va refuza comanda.Metoda cardurilor CRC. Client_de_acasă. cumpără şi plăteşte Casier Client_de_acasă Responsabilităţi Colaboratori comandă prin telefon medicament. întreabă casierul Client obişnuit. dorit există. medicament. prepararea medicamentului solicitat. farmacistul îl prepară.

iar în cazul ieşirii din garanţie a unor medicamente. dacă medicamentul nu există va refuza comanda. iar dacă un Clientul_de_acasă. medicament trebuie preparat. medicament trebuie preparat. atunci Farmacistul. acesta va fi preparat de farmacist Farmacist Responsabilităţi Colaboratori preia comanda.Administrator Responsabilităţi Colaboratori în funcţie de cerere adaugă Administrator medicamente în stocul existent. acesta va fi preparat de farmacist şi va Curierul preda comanda curierului 9 . farmacistul notează comanda. verifică medicamentul sau codul acestuia Client_de_acasă Responsabilităţi Colaboratori comandă prin telefon medicament. le înlătură. atunci Farmacist.. iar dacă un Client obişnuit. Client_de_acasă. medicamentul dorit există. întreabă farmacistul dacă Farmacist. Casier Responsabilităţi Colaboratori înainte de a vinde sau de a prepara un Casier medicament. Farmacist Responsabilităţi Colaboratori preia comanda.

1 .

1 .

4) Diagrame de secvenţă 1 .

1 .

} public String getNume( ) { return null. public void adauga_medicamente( ) { } public Administrator( ) { } public String getNrleg( ) { return null. private String nrleg. după specificarea atributelor şi operaţiilor pentru fiecare clasă. private String nume. 1 .Collection adauga.util.5) Generare de cod cu MAGIC DRAW Folosind utilitarul Magic Draw. se generează codul: public class Administrator { private Vector medicamente. private java.

private String nume. private Farmacist cere.} public void inlatura_medicamente( ) { } public void listare( ) { } public void setNrleg( String nrleg ) { } public void setNume( String n ) { } } public class Casier { private String nrleg.Collection vinde. private java.util. public Casier( String nrleg. String nume ) { } public Casier( ) { 1 .

1 .} public String getNrleg( ) { return null. } public String getNume( ) { return null. } public void setNrleg( String nrleg ) { } public void setNume( String n ) { } public void verif_medic( ) { } public void vinde( ) { } } public class Client_de_acasa extends Client { protected String adresa. protected String nume.

protected int telefon. } public String getNume( ) { return null. public void accepta_comanda( ) { } public void achita_comanda( ) { } public void cere_prepararea( ) { } public Client_de_acasa( ) { } public void face_comanda( ) { } public String getAdresa( ) { return null.util. } public int getTelefon( ) { 1 .Collection face_comanda. private java.

public void accepta_cumpararea( ) { } public void cere_prepararea( ) { } public Client_obisnuit( ) { } public void client_obisnuit( ) 1 .Collection cumpara1.util.return 0. } public void setAdresa( String adr ) { } public void setNume( String n ) { } public void setTelefon( int tel ) { } } public class Client_obisnuit extends Client { private java.

} public String getNume( ) { return null.{ } } public class Curier { private String nrleg. private String nume. } public void incaseaza_bani( ) { } public void livreaza_comanda( ) { 1 .Collection livreaza. private java. public Curier( ) { } public String getNrleg( ) { return null.util. private Farmacist da_comanda.

public Farmacist( ) { } public String getNrleg( ) { return null.Collection prepara.util. } public String getNume( ) 2 . private String nume. private java. private java.Collection cere.util.} public void primeste_comanda( ) { } public void setnrleg( String nrleg ) { } public void setNume( String n ) { } } public class Farmacist { private String nr_legitimatie. private Curier da_comanda.

2 . } public void noteaza_comanda( ) { } public void preda_camanda( ) { } public void prepara_medic( ) { } public void setNrleg( String nr ) { } public void setNume( String n ) { } public void verif_lista_medic( ) { } } public class Medicament { protected int cod_medicament. protected Date data_exp.{ return null.

util. private java.util.Collection face_comanda.Collection vinde.util. private Farmacist prepara. private Curier livreaza. protected int pret. public void comandat( ) { } public void cumparat( ) { } public int getCod_medicament( ) { return 0. private java. } public Date getData_exp( ) { return null.protected String fabricat. private Administrator adauga.Collection cumpara1.util.Collection cumpara. protected String u_m. private java. } public String getFabricat( ) { 2 . private java.

} public int getPret( ) { return 0. } public String getU_m( ) { return null. } public Medicament( ) { } public void preparat( ) { } public void setCod_medicament( int cod ) { } public void setData_exp( Date data ) { } public void setFabricat( String firm ) { } public void setPret( int pret ) { 2 .return null.

} } public class Client { private java.java 2 . public void cumpara( ) { } public void plateste( ) { } } IMPLEMENTAREA CLASELOR ÎN JAVA Implementarea claselor presupune: /** * @(#) Aplicatie.Collection cumpara.util.

Comanda telefonica").util.println("4. Client_obisnuit c1=null.out.out.println("2.out.c. /*20*/ do{ Integer u. Preparare").readLine().println("1. EXIT"). 2 . Livrare").cod. System.*/ import java.println("6. Adaugare medicament").in).initializare(). Client_de_acasa c2=null.out. System. Listare medicamente").println("3.out. int a. ad.*/ System. /* System.println("7. System. System.*.Vector. import java. public class Aplicatie { public static void main( String[] arg )throws IOException { Administrator ad=new Administrator().println("5.Date. import java.io.out. s=cin. DataInputStream cin=new DataInputStream(System.println("5. Integer co=null.out.util.out. System. Inlaturare medicament"). System. String s. Cere medicament").

.println(". System. String l=cin. co=new Integer(c).. System.out.. /*37*/ c=cin.out.readLine()..println("data:").out.. System.s=cin.out. System..println("ziua:").readLine().. cod=co.readLine()."). Farmacist f=new Farmacist().println("anul:"). 1: System.. Integer zz=new Integer(z).. Date data=new Date(luna... a=u..an).readLine().adaugare 2 . u=new Integer(s)..println("luna:").out.out.intValue()..readLine().intValue().zi.. Integer lu=new Integer(l).intValue().intValue().intValue().. System...... String z=cin.. int zi=zz. int luna=lu. switch(a){ case medicament. String a1=cin. int an=aa. Integer aa=new Integer(a1).....println("codul:").

. Integer pr=new Integer(p). co=new Integer(c). break...out.u1)..out.readLine(). c=cin.out.println("codul medicamentului:").")..... System... Medicament Medicament(cod.adauga_medicamente(m).println(".pret.readLine()..intValue(). System. 2: a m=new fost System.data..println("pretul:").out.intValue()....out.....out... ad.. 2 .readLine(). String p=cin.readLine(). case medicamente. System.println("unitate masura:"). int pret=pr...System.println("firma:").firm.println("medicamentul adaugat:"). String u1=cin.inlatura System.. cod=co... String firm=cin..

.accepta_cumpararea(ad..intValue()........*/ cc..out. c=cin. cod=co. // inlaturat:")... Curier cc=new Curier().out......preparare..println("codul medicamentului:").println("codul medicamentului:")... } break. c2=new Client_de_acasa()... System..medicamente)...readLine()...out.. case 5: System. break.out..... int mdc=0.comanda 3: System.... /* System..livrare.....out..inlatura_medicamente(cod).out.readLine(). c1=new Client_obisnuit().println("..........").ad.... break. if (mdc!=0){ /*case 5:*/ System..").... mdc=c2....accepta_comanda(ad.println("... c=cin.. case telefonica. co=new Integer(c)...... c1.println("..").medicamente)....... case medicament.."). 4: System.cere System......out..........println("medicamentul a fost 2 .livreaza_comanda(c2.println(".....mdc)..

println("Bye-Bye!!").out. } while(a!=8).prepara_medic(cod). public void cumpara( ){ } 2 . f.util. break.out. case 7: System. case 6: ad. cod=co.listare(). } System.co=new Integer(c). break.println("\n*****************************\n").out.intValue(). } } /** * @(#) Client. default: System.Collection cumpara.println("optiune invalida").java */ public abstract class Client{ // private java. break.

private java.Vector.java */ import java.nume=nume.nrleg=nrleg.util. public class Casier{ private String nrleg.Collection vinde. public Casier( String nrleg. this. private String nume. } public Casier( ){ 3 .util. // // private Farmacist cere.public void plateste( ){ } } /** * @(#) Casier. String nume ){ this.

getCod_medicament()==med){ este=true.size(). for(int i=0.i++){ Medicament m=(Medicament)(v_med. Vector v_med){ boolean este=false.nrleg=nrleg. } public String getNrleg( ){ return nrleg. if(m. } public boolean verif_medic( int med.nrleg="".i<v_med. } 3 .nume=nume.elementAt(i)). } public void setNume( String n ){ this.this. } public String getNume( ){ return nume. this.nume="". } public void setNrleg( String nrleg ){ this.

} public void vinde( int med){ System.java */ import java.out.util. } } /** * @(#) Administrator. public void adauga_medicamente( Medicament m ){ 3 . private String nrleg.} return este. private String nume.util. // private java.Collection adauga.Vector. public class Administrator{ public Vector medicamente.println("A fost vandut medicamentul cu codul "+med).

this. } public void inlatura_medicamente( int cod){ boolean gasit=false.removeElementAt(i).i++){ Medicament mm=(Medicament)(medicamente. String nrleg ){ medicamente=new Vector(100). } public void Administrator( String nume. this. if(mm. } public void Administrator( ){ medicamente=new Vector(20).nrleg="". this.nume="". } public String getNume( ){ return nume.elementAt(i)).getCod_medicament()==cod){ medicamente. for(int i=0.addElement(m).i<medicamente. } public String getNrleg( ){ return nrleg. 3 .nume=nume.size().nrleg=nrleg. this.medicamente.

gasit=true. } public void listare(){ for(int i=0.i<medicamente.println("Medicamentul cu acest cod nu exista!").medicamente.addElement(m2).out.medicamente.addElement(m1).5). Medicament m3=new Medicament(). Medicament m1=new Medicament().i++){ Medicament m=(Medicament)(medicamente.nrleg=nrleg. } public void initializare( ){ this.medicamente=new Vector(5. 3 . } } if(!gasit) System.out. System.getCod_medicament()). } } public void setNrleg( String nrleg ){ this.medicamente.size(). Medicament m2=new Medicament(). } public void setNume( String n ){ nume=n.println(m. break.addElement(m3).elementAt(i)).

// private java.Collection face_comanda.medicamente. import java. Medicament m5=new Medicament(). String m=cin.in). 3 .readLine(). Integer me=new Integer(m). protected int telefon.java */ import java.addElement(m5). Farmacist f=new Farmacist(). public int accepta_comanda( Vector v_med )throws IOException{ DataInputStream cin=new DataInputStream(System. protected String nume.out.println("codul medicamentului:").util.addElement(m4).intValue(). } } /** * @(#) Client_de_acasa.medicamente. System. public class Client_de_acasa extends Client{ protected String adresa.util. int med=me.Medicament m4=new Medicament().*.io.Vector.

} else{ System.out.println("Nu exista. telefon=tel.med). if(exista){ f. String n. nume=n. } return 0.noteaza_comanda(this."). int tel ){ adresa=a.. 3 .verif_lista_medic(med.boolean exista=f. return med.v_med). } public void achita_comanda( ){ } public void cere_prepararea( ){ } public Client_de_acasa( String a. } public Client_de_acasa( ){ adresa=""..

} public void face_comanda( ){ } public String getAdresa( ){ return adresa. } public String getNume( ){ return nume. } public void setAdresa( String adr ){ adresa=adr. } public void setNume( String n ){ nume=n. telefon=0. } public int getTelefon( ){ return telefon. } 3 .nume="".

io.Collection cumpara1.Vector.java */ import java. public void accepta_cumpararea( Vector v_med )throws IOException{ DataInputStream cin=new DataInputStream(System.verif_medic(med. boolean exista=cas.readLine(). String m=cin. Integer me=new Integer(m). public class Client_obisnuit extends Client{ // private java.v_med).public void setTelefon( int tel ){ telefon=tel. Casier cas=new Casier().util.out. import java.in).*. int med=me.println("codul medicamentului:").util.intValue(). System. } } /** * @(#) Client_obisnuit. if(exista){ 3 .

out. Farmacist f=new Farmacist().cas.java 3 .out.println("numele medicamentului:"). } else{ System. Integer me=new Integer(m).prepara_medic(med). } } public void cere_prepararea( int med )throws IOException{ DataInputStream cin=new DataInputStream(System.println("Nu exista. System.")..in).vinde(med). } public Client_obisnuit( ){ } } /** * @(#) Curier. f.intValue(). med=me.readLine(). String m=cin..

private Farmacist da_comanda. nrleg="". String n ){ nume=n. } public Curier( ){ nume="".*/ public class Curier{ private String nrleg. // // private java. public Curier( String leg. private String nume. nrleg=leg.util. } public String getNrleg( ){ return nrleg. } 4 .Collection transporta.

int med ){ System.out. } public void primeste_comanda( ){ System. } } 4 .println("Curierul a primt comanda").out.out.getNume()). incaseaza_bani(). } public void incaseaza_bani( ){ System.println("Curierul primeste banii de la client"). } public void setNume( String n ){ nume=n. } public void livreaza_comanda( Client_de_acasa c.println("Medicamentul "+med+" va fi livrat clientului "+c.public String getNume( ){ return nume.nrleg=nrleg. } public void setnrleg( String nrleg ){ this.

Vector./** * @(#) Farmacist. String leg){ nume=n. private String nume. nr_legitimatie=leg. private Curier da_comanda.util. } public Farmacist( ){ nume="".io.*. import java. nr_legitimatie="".util. 4 .Collection prepara.util.Collection cere.java */ import java. public class Farmacist{ private String nr_legitimatie. public Farmacist( String n. private java. // // // private java.

} public void prepara_medic( int med){ 4 .} public String getNrleg( ){ return nr_legitimatie.out.readLine(). Integer u.*/ System.primeste_comanda().in). int med)throws IOException{ /* DataInputStream cin=new DataInputStream(System. } public void preda_comanda( ){ Curier c=new Curier(). } public void noteaza_comanda( Client_de_acasa c. c. String s=cin. } public String getNume( ){ return nume. med=u.intValue(). u=new Integer(s).println("Comanda fost notata").

} public boolean verif_lista_medic( int med.getCod_medicament()==med){ este=true.i++){ Medicament m=(Medicament)(v_med. } } /** * @(#) Medicament. } public void setNume( String n ){ nume=n.i<v_med. } public void setNrleg( String nr ){ nr_legitimatie=nr.System. if(m.size().java */ 4 . Vector v_med){ boolean este=false.elementAt(i)). } } return este.out. for(int i=0.println("Se prepara medicamentul "+med).

util. private Curier transporta.util. public class Medicament{ protected int cod_medicament.util.Collection cumpara. // // // // // // // private java. protected String u_m. protected int pret. protected String fabricat.Collection face_comanda.Collection vinde.util. protected Date data_exp.util.Collection cumpara1.import java. 4 . private java. private java. private Administrator adauga. private Farmacist prepara.Date. private java.

out.println("Medicamentul a fost cumparat"). } public int getPret( ){ return pret. } public int getCod_medicament( ){ return cod_medicament. } public Date getData_exp( ){ return data_exp. } public String getU_m( ){ return u_m. } public String getFabricat( ){ return fabricat.out.public void comandat( ){ System. } 4 .println("Medicamentul a fost comandat"). } public void cumparat( ){ System.

Date data. } public void setCod_medicament( int cod ){ cod_medicament=cod. String um ){ cod_medicament=cod.pret=pret. fabricat="". String fabr. this. fabricat=fabr. u_m=um. u_m="".out. data_exp=new Date().public Medicament( int cod. data_exp=data. } public void setData_exp( Date data ){ data_exp=data.pret=0. int pret. } public Medicament( ){ cod_medicament=0. this. } public void preparat( ){ System.println("Medicamentul a fost preparat"). 4 .

} public void setPret( int pret ){ this.pret=pret. } } 4 .} public void setFabricat( String firm ){ fabricat=firm.