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 ceru cerute te de clie clienţ nţi, i, coma comand ndăă medi medica came ment nt,, cump cumpăr ărăă medi medica came ment nt,, prep prepar arăă medicament, cât şi operaţii de evidenţă a medicamentelor.
Capturarea cerinţelor O farm farmac acie ie pune pune la disp dispoz oziţ iţia ia clie clienţ nţil ilor or săi săi medi medica came ment ntee ofer oferin ind, d, 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ş obişnu nuiţ iţii
pot pot cump cumpăr ăraa de la farm farmac acie ie medi medica came ment nte, e, pot pot cere cere prep prepar arar area ea
medica medicamen mentul tului ui necesa necesar, r, iar clienţ clienţii ii de acasă acasă pot cumpăr cumpăraa medica medicamen mente te din farmacie, dar pot face şi comandă prin telefon. În mod periodic, farmacia achiziţionează medicamente noi, modifică lista de medicament medicamente, e, medicamen medicamentele tele expirate expirate sunt distruse, distruse, va furniza furniza atenţionă atenţionări ri asupra asupra stoculu stoculuii şi mărir măririi ii preţului preţului.. În farmaci farmaciee pot exista exista mai multe multe copii de medicamente, dar la diferite unităţi de măsură (comprimate, tablete, fiole) şi fabricate de diferite firme. 2
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 ceru cerute te de clie clienţ nţi, i, coma comand ndăă medi medica came ment nt,, cump cumpăr ărăă medi medica came ment nt,, prep prepar arăă medicament, cât şi operaţii de evidenţă a medicamentelor.
Capturarea cerinţelor O farm farmac acie ie pune pune la disp dispoz oziţ iţia ia clie clienţ nţil ilor or săi săi medi medica came ment ntee ofer oferin ind, d, 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ş obişnu nuiţ iţii
pot pot cump cumpăr ăraa de la farm farmac acie ie medi medica came ment nte, e, pot pot cere cere prep prepar arar area ea
medica medicamen mentul tului ui necesa necesar, r, iar clienţ clienţii ii de acasă acasă pot cumpăr cumpăraa medica medicamen mente te din farmacie, dar pot face şi comandă prin telefon. În mod periodic, farmacia achiziţionează medicamente noi, modifică lista de medicament medicamente, e, medicamen medicamentele tele expirate expirate sunt distruse, distruse, va furniza furniza atenţionă atenţionări ri asupra asupra stoculu stoculuii şi mărir măririi ii preţului preţului.. În farmaci farmaciee pot exista exista mai multe 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 transporta transportată tă de un curier la adresa cerută cerută de client, iar acesta acesta achită comanda comanda la primirea acesteia. 2) Descrierea cazurilor de utilizare
3
4
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, Farmacist, Curier, Medicament, Administrator, Client, Client_obişnuit, Client_de_acasa.
5
6
7
Metoda cardurilor CRC. Client_obişnuit
Responsabilităţi merge la farmacie, întreabă casierul dacă medicamentul dorit există, şi cere prepararea medicamentului solicitat, farmacistul îl prepară. Responsabilităţi primeşte şi livrează comanda de a răspunde clientului de acasă care solicită un medicament prin intermediul telefonului.
Colaboratori Client obişnuit. Casier. Farmacist.
Curier
Colaboratori Client_de_acasa Curier
Client
Responsabilităţi vine la farmacie şi cere medicamentul dorit, cumpără şi plăteşte
Colaboratori Client Casier
Client_de_acasă
Responsabilităţi comandă prin telefon medicament, întreabă casierul dacă medicamentul dorit există, dacă medicamentul nu există casierul va refuza comanda.
Colaboratori Client_de_acasă. Casier. Curier.
Client_obişnuit
Responsabilităţi vine la farmacie şi cere medicamentul dorit
Colaboratori Client_obişnuit Casier
Client_de_acasă
Responsabilităţi Colaboratori sună la farmacie şi face comanda unui Clientul_de_acasă. medicament, curierul onorează Curier. comanda. 8
Administrator
Responsabilităţi în funcţie de cerere adaugă medicamente în stocul existent, iar în cazul ieşirii din garanţie a unor medicamente, le înlătură.
Colaboratori Administrator
Casier
Responsabilităţi înainte de a vinde sau de a prepara un medicament, verifică medicamentul sau codul acestuia
Colaboratori Casier
Client_de_acasă
Responsabilităţi Colaboratori comandă prin telefon medicament, Client_de_acasă. întreabă farmacistul dacă Farmacist.. medicamentul dorit există, farmacistul notează comanda, dacă medicamentul nu există va refuza comanda. Farmacist
Responsabilităţi preia comanda, iar dacă un medicament trebuie preparat, atunci acesta va fi preparat de farmacist
Colaboratori Client obişnuit. Farmacist.
Farmacist
Responsabilităţi preia comanda, iar dacă un medicament trebuie preparat, atunci acesta va fi preparat de farmacist şi va preda comanda curierului
Colaboratori Clientul_de_acasă. Farmacistul. Curierul
9
1
1
4) Diagrame de secvenţă
1
1
5) Generare de cod cu MAGIC DRAW
Folosind utilitarul Magic Draw, după specificarea atributelor şi operaţiilor pentru fiecare clasă, se generează codul: public class Administrator { private Vector medicamente; private String nrleg; private String nume; private java.util.Collection adauga;
public void adauga_medicamente( ) { } public Administrator( ) { } public String getNrleg( ) { return null; } public String getNume( ) { return null;
1
} public void inlatura_medicamente( ) { } public void listare( ) { } public void setNrleg( String nrleg ) { } public void setNume( String n ) { } }
public class Casier { private String nrleg; private String nume; private java.util.Collection vinde; private Farmacist cere;
public Casier( String nrleg, String nume ) { } public Casier( ) {
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;
1
protected int telefon; private java.util.Collection face_comanda; 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; } public String getNume( ) { return null; } public int getTelefon( ) {
1
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.util.Collection cumpara1;
public void accepta_cumpararea( ) { } public void cere_prepararea( ) { } public Client_obisnuit( ) { } public void client_obisnuit( )
1
{ } }
public class Curier { private String nrleg; private String nume; private Farmacist da_comanda; private java.util.Collection livreaza;
public Curier( ) { } public String getNrleg( ) { return null; } public String getNume( ) { return null; } public void incaseaza_bani( ) { } public void livreaza_comanda( ) {
1
} public void primeste_comanda( ) { } public void setnrleg( String nrleg ) { } public void setNume( String n ) { } }
public class Farmacist { private String nr_legitimatie; private String nume; private Curier da_comanda; private java.util.Collection cere; private java.util.Collection prepara; public Farmacist( ) { } public String getNrleg( ) { return null; } public String getNume( )
2
{ return null; } 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;
2
protected String fabricat; protected int pret; protected String u_m; private Farmacist prepara; private Administrator adauga; private Curier livreaza; private java.util.Collection cumpara; private java.util.Collection vinde; private java.util.Collection cumpara1; private java.util.Collection face_comanda;
public void comandat( ) { } public void cumparat( ) { } public int getCod_medicament( ) { return 0; } public Date getData_exp( ) { return null; } public String getFabricat( ) {
2
return null; } 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
} }
public class Client { private java.util.Collection cumpara;
public void cumpara( ) {
}
public void plateste( ) {
}
}
IMPLEMENTAREA CLASELOR ÎN JAVA Implementarea claselor presupune: /** * @(#) Aplicatie.java 2
*/ import java.io.*; import java.util.Vector; import java.util.Date; public class Aplicatie { public static void main( String[] arg )throws IOException { Administrator ad=new Administrator(); Client_obisnuit c1=null; Client_de_acasa c2=null; ad.initializare(); Integer co=null; int a,cod; String s,c; DataInputStream cin=new DataInputStream(System.in); /*20*/
Integer u; do{ s=cin.readLine(); System.out.println("1. Adaugare medicament"); System.out.println("2. Inlaturare medicament"); System.out.println("3. Cere medicament"); System.out.println("4. Comanda telefonica");
/*
System.out.println("5. Livrare");*/ System.out.println("5. Preparare"); System.out.println("6. Listare medicamente"); System.out.println("7. EXIT"); 2
s=cin.readLine(); u=new Integer(s); a=u.intValue(); Farmacist f=new Farmacist(); switch(a){ case
1:
System.out.println("..............adaugare
medicament.............."); System.out.println("codul:"); /*37*/
c=cin.readLine(); co=new Integer(c); cod=co.intValue(); System.out.println("data:"); System.out.println("ziua:"); String z=cin.readLine(); Integer zz=new Integer(z); int zi=zz.intValue(); System.out.println("luna:"); String l=cin.readLine(); Integer lu=new Integer(l); int luna=lu.intValue(); System.out.println("anul:"); String a1=cin.readLine(); Integer aa=new Integer(a1); int an=aa.intValue(); Date data=new Date(luna,zi,an); 2
System.out.println("firma:"); String firm=cin.readLine(); System.out.println("pretul:"); String p=cin.readLine(); Integer pr=new Integer(p); int pret=pr.intValue(); System.out.println("unitate masura:"); String u1=cin.readLine();
Medicament
m=new
Medicament(cod,data,firm,pret,u1); ad.adauga_medicamente(m); System.out.println("medicamentul
a
fost
adaugat:"); break; case
2:
System.out.println("...............inlatura
medicamente..............."); System.out.println("codul medicamentului:"); c=cin.readLine(); co=new Integer(c); cod=co.intValue(); 2
ad.inlatura_medicamente(cod); //
System.out.println("medicamentul
a
fost
inlaturat:"); break; case
3:
System.out.println("...............cere
medicament.........."); c1=new Client_obisnuit(); c1.accepta_cumpararea(ad.medicamente); break; case
4:
System.out.println("...............comanda
telefonica..........."); c2=new Client_de_acasa(); int mdc=0; mdc=c2.accepta_comanda(ad.medicamente); if (mdc!=0){ /*case 5:*/ System.out.println("...............livrare..........."); Curier cc=new Curier(); /*
System.out.println("codul medicamentului:"); c=cin.readLine(); co=new Integer(c); cod=co.intValue();*/ cc.livreaza_comanda(c2,mdc);
} break; case 5: System.out.println("...............preparare..........."); System.out.println("codul medicamentului:"); c=cin.readLine(); 2
co=new Integer(c); cod=co.intValue(); f.prepara_medic(cod); break; case 6: ad.listare(); break; case 7: System.out.println("Bye-Bye!!"); break; default: System.out.println("optiune invalida"); } System.out.println("\n*****************************\n"); } while(a!=8); } } /** * @(#) Client.java */ public abstract class Client{ //
private java.util.Collection cumpara; public void cumpara( ){ } 2
public void plateste( ){ } } /** * @(#) Casier.java */ import java.util.Vector; public class Casier{ private String nrleg; private String nume; //
private Farmacist cere;
//
private java.util.Collection vinde; public Casier( String nrleg, String nume ){ this.nrleg=nrleg; this.nume=nume; } public Casier( ){ 3
this.nrleg=""; this.nume=""; } public String getNrleg( ){ return nrleg; } public String getNume( ){ return nume; } public void setNrleg( String nrleg ){ this.nrleg=nrleg; } public void setNume( String n ){ this.nume=nume; } public boolean verif_medic( int med, Vector v_med){ boolean este=false; for(int i=0;i
} return este; } public void vinde( int med){ System.out.println("A fost vandut medicamentul cu codul "+med); }
} /** * @(#) Administrator.java */ import java.util.Vector; public class Administrator{ public Vector medicamente; private String nrleg; private String nume; //
private java.util.Collection adauga; public void adauga_medicamente( Medicament m ){ 3
medicamente.addElement(m); } public void Administrator( String nume, String nrleg ){ medicamente=new Vector(100); this.nume=nume; this.nrleg=nrleg; } public void Administrator( ){ medicamente=new Vector(20); this.nume=""; this.nrleg=""; } public String getNrleg( ){ return nrleg; } public String getNume( ){ return nume; } public void inlatura_medicamente( int cod){ boolean gasit=false; for(int i=0;i
gasit=true; break; } } if(!gasit) System.out.println("Medicamentul cu acest cod nu exista!"); } public void listare(){ for(int i=0;i
Medicament m4=new Medicament();medicamente.addElement(m4); Medicament m5=new Medicament();medicamente.addElement(m5); } } /** * @(#) Client_de_acasa.java */ import java.util.Vector; import java.io.*; public class Client_de_acasa extends Client{ protected String adresa; protected String nume; protected int telefon; //
private java.util.Collection face_comanda; public int accepta_comanda( Vector v_med )throws IOException{ DataInputStream cin=new DataInputStream(System.in); System.out.println("codul medicamentului:"); String m=cin.readLine(); Integer me=new Integer(m); int med=me.intValue(); Farmacist f=new Farmacist(); 3
boolean exista=f.verif_lista_medic(med,v_med); if(exista){ f.noteaza_comanda(this,med); return med; } else{ System.out.println("Nu exista..."); } return 0; } public void achita_comanda( ){ } public void cere_prepararea( ){ } public Client_de_acasa( String a, String n, int tel ){ adresa=a; nume=n; telefon=tel; } public Client_de_acasa( ){ adresa=""; 3
nume=""; telefon=0; } public void face_comanda( ){ } public String getAdresa( ){ return adresa; } public String getNume( ){ return nume; } public int getTelefon( ){ return telefon; } public void setAdresa( String adr ){ adresa=adr; } public void setNume( String n ){ nume=n; } 3
public void setTelefon( int tel ){ telefon=tel; }
}
/** * @(#) Client_obisnuit.java */ import java.io.*; import java.util.Vector; public class Client_obisnuit extends Client{ //
private java.util.Collection cumpara1; public void accepta_cumpararea( Vector v_med )throws IOException{ DataInputStream cin=new DataInputStream(System.in); System.out.println("codul medicamentului:"); String m=cin.readLine(); Integer me=new Integer(m); int med=me.intValue(); Casier cas=new Casier(); boolean exista=cas.verif_medic(med,v_med); if(exista){ 3
cas.vinde(med); } else{ System.out.println("Nu exista..."); } } public void cere_prepararea( int med )throws IOException{ DataInputStream cin=new DataInputStream(System.in); System.out.println("numele medicamentului:"); String m=cin.readLine(); Integer me=new Integer(m); med=me.intValue(); Farmacist f=new Farmacist(); f.prepara_medic(med); } public Client_obisnuit( ){ }
}
/** * @(#) Curier.java 3
*/
public class Curier{ private String nrleg; private String nume; //
private java.util.Collection transporta;
//
private Farmacist da_comanda; public Curier( String leg, String n ){ nume=n; nrleg=leg; } public Curier( ){ nume=""; nrleg=""; } public String getNrleg( ){ return nrleg; }
4
public String getNume( ){ return nume; } public void incaseaza_bani( ){ System.out.println("Curierul primeste banii de la client"); } public void livreaza_comanda( Client_de_acasa c, int med ){ System.out.println("Medicamentul "+med+" va fi livrat clientului "+c.getNume()); incaseaza_bani(); } public void primeste_comanda( ){ System.out.println("Curierul a primt comanda"); } public void setnrleg( String nrleg ){ this.nrleg=nrleg; } public void setNume( String n ){ nume=n; } } 4
/** * @(#) Farmacist.java */ import java.io.*; import java.util.Vector; public class Farmacist{ private String nr_legitimatie; private String nume; //
private java.util.Collection prepara;
//
private java.util.Collection cere;
//
private Curier da_comanda; public Farmacist( String n, String leg){ nume=n; nr_legitimatie=leg; } public Farmacist( ){ nume=""; nr_legitimatie=""; 4
} public String getNrleg( ){ return nr_legitimatie; } public String getNume( ){ return nume; } public void noteaza_comanda( Client_de_acasa c, int med)throws IOException{ /* DataInputStream cin=new DataInputStream(System.in); Integer u; String s=cin.readLine(); u=new Integer(s); med=u.intValue();*/ System.out.println("Comanda fost notata"); } public void preda_comanda( ){ Curier c=new Curier(); c.primeste_comanda(); } public void prepara_medic( int med){ 4
System.out.println("Se prepara medicamentul "+med); } public void setNrleg( String nr ){ nr_legitimatie=nr; } public void setNume( String n ){ nume=n; } public boolean verif_lista_medic( int med, Vector v_med){ boolean este=false; for(int i=0;i
/** * @(#) Medicament.java */ 4
import java.util.Date; public class Medicament{ protected int cod_medicament; protected Date data_exp; protected String fabricat; protected int pret; protected String u_m; //
private java.util.Collection vinde;
//
private java.util.Collection cumpara;
//
private Curier transporta;
//
private java.util.Collection face_comanda;
//
private Farmacist prepara;
//
private java.util.Collection cumpara1;
//
private Administrator adauga;
4
public void comandat( ){ System.out.println("Medicamentul a fost comandat"); } public void cumparat( ){ System.out.println("Medicamentul a fost cumparat"); } public int getCod_medicament( ){ return cod_medicament; } public Date getData_exp( ){ return data_exp; } public String getFabricat( ){ return fabricat; } public int getPret( ){ return pret; } public String getU_m( ){ return u_m; } 4
public Medicament( int cod, Date data, String fabr, int pret, String um ){ cod_medicament=cod; data_exp=data; fabricat=fabr; this.pret=pret; u_m=um; } public Medicament( ){ cod_medicament=0; data_exp=new Date(); fabricat=""; this.pret=0; u_m=""; } public void preparat( ){ System.out.println("Medicamentul a fost preparat"); } public void setCod_medicament( int cod ){ cod_medicament=cod; } public void setData_exp( Date data ){ data_exp=data; 4