La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Dernière scéance: Des question?????? + Deux exercices.

Présentations similaires


Présentation au sujet: "Dernière scéance: Des question?????? + Deux exercices."— Transcription de la présentation:

1 Dernière scéance: Des question?????? + Deux exercices

2 exercice1 On veut créer une application de gestion de compte bancaire. Chaque client possède est identifier par un numéro client, son nom et son prénom. chaque client possède un ou plusieurs comptes bancaires Chaque compte est identifier par un numéro relatif Chaque compte contient une liste dopération. Une opération peut être une opération de retrait ou de versement On veux créer une application de gestion dun agence

3 Modèle de données agenceclient compte opération

4 Modèle de traitement : On veux effectuer les opération suivante: Ajout de client le solde est fixé à la création. Effectuer des opérations de retrait: le retrait non autorisé générera une exception de type OperationInvalide à la fin de chaque exécution de lapplication les clients ainsi que les opération seront sauvegarder (en utilisant le mécanisme de la sérialisation dans un fichier banque.obj).

5 Première étape programmer les classe public class OperationInvalide extends Exception { float soldmax; public OperationInvalide(float sm) {soldmax=sm;} public String toString() {return "vous devez retirer au maximum : :"+soldmax;} }

6 public class Compte { float solde; public Compte() { } public Compte(float s){solde=s;} public void retirer(float somme) throws OperationInvalide {if (somme<solde) solde-=somme; else throw new OperationInvalide(solde); }

7 public class Client { String nom; String prenom; int numC; Compte compteC; public Client() { } public Client(String n,String p,int num, float solde) {nom=n;prenom=p;numC=num;compteC=new Compte(solde);} public void retirer(float somme)throws OperationInvalide { compteC.retirer(somme);} }

8 public class Agence { Vector listeClient=new Vector(); String name; public Agence() { } public Agence(String n) {name=n;} public void ajoutClient(Client c) {listeClient.add(c);} public Client getClient(int num) {for(int i=0;i<listeClient.size();i++) {if (((Client) listeClient.get(i)).numC==num) { return ((Client) listeClient.get(i));} } return null; } public void save()throws IOException { File f=new File("agence.obj"); ObjectOutputStream m=new ObjectOutputStream(new FileOutputStream(f)); m.writeObject(this);} public static Agence load(String n)throws IOException, ClassNotFoundException {File f=new File(n+".obj"); ObjectInputStream m=new ObjectInputStream(new FileInputStream(f)); return ((Agence) m.readObject()); }

9 Conception de linterface graphique Interface général agence1 load Gestion agence1 Ajout client opératio ns Quiter+ save Interface Ajout Interface opération nu mC no m pre no m ajouter nu mC som me retirer Quatre classe: une par interface voulu cinque class écouteur: une par boutton Objet:Agen ce

10 Les class des fenêtre Chaque fenêtre doit avoir accés aux données nécessaires a son fonctionnement 1.Class InterGéneral crée un objet agence Nouveau ou désérialisé et le passe dans à lobjet InterGestionAgence. 2.Les autres interfaces ont aussi besoin de lobjet Agence pour le gérer.

11 Fenêtre générale public class InterGeneral extends JFrame { JTextField nom=new JTextField("quel agence?"); JButton load=new JButton("Load"); public InterGeneral() { this.getContentPane().setLayout(new GridLayout(2,1,10,10)); this.getContentPane().add(nom); this.getContentPane().add(load); }

12 Fenêtre gestion dune agence public class InterGestionAgence extends JFrame { Agence ag; JButton ajout=new JButton("Ajout client"); JButton operation=new JButton("Opération"); JButton quiter=new JButton("Quit + save"); public InterGestionAgence(Agence c) { ag=c; this.setTitle("gestion de l'agence : "+ag.name); this.getContentPane().setLayout(new GridLayout(3,1,10,10)); this.getContentPane().add(ajout); this.getContentPane().add(operation); this.getContentPane().add(quiter); }

13 Fenêtre Ajout client public class InterfaceAjout extends JFrame { Agence ag; JLabel numL=new JLabel("Num Client"); JTextField numT=new JTextField("num???"); JLabel nomL=new JLabel("Nom"); JTextField nomT=new JTextField("Nom???"); JLabel preL=new JLabel("Prénom"); JTextField preT=new JTextField("Prénom???"); JLabel somL=new JLabel("Crédit"); JTextField somT=new JTextField("Crédit???"); JButton ajout=new JButton("Ajout"); public InterfaceAjout(Agence c) { ag=c; this.setTitle("ajout client de l'agence "+ag.name); this.getContentPane().setLayout(new GridLayout(5,2,10,10)); this.getContentPane().add(numL); this.getContentPane().add(numT); this.getContentPane().add(nomL); this.getContentPane().add(nomT); this.getContentPane().add(preL); this.getContentPane().add(preT); this.getContentPane().add(somL); this.getContentPane().add(somT); this.getContentPane().add(ajout); }}

14 Fenêtre opération public class InterOperation extends JFrame { Agence ag; JLabel numL=new JLabel("num Client"); JTextField numT=new JTextField("num???"); JLabel somL=new JLabel("Somme"); JTextField somT=new JTextField("somme???"); JButton retirer=new JButton("retirer"); JLabel message=new JLabel(""); public InterOperation(Agence c) { ag=c; this.setTitle("opération Client de l'agence "+ag.name); this.getContentPane().setLayout(new GridLayout(3,2,10,10)); this.getContentPane().add(numL); this.getContentPane().add(numT); this.getContentPane().add(somL); this.getContentPane().add(somT); this.getContentPane().add(retirer); this.getContentPane().add(message); message.setVisible(false); }}

15 Les écouteurs: load Interface général agence1 load Entrée: La valeur de zone de texteIl doit avoir accés à lobjet fenêtre auquel il est rattaché Traitement : essayer de lire désérialiser un objet Agence à partir dun fichier au nom de zone de texte « valuerdezoneText.obj »

16 code public class EcouteurLoad implements ActionListener { InterGeneral in; public EcouteurLoad(InterGeneral i) {in=i;} public void actionPerformed(ActionEvent e) { Agence c; try{ c=Agence.load(in.nom.getText()); InterGestionAgence inter=new InterGestionAgence(c); inter.pack();inter.show(); } catch(IOException ex){c=new Agence(in.nom.getText()); InterGestionAgence inter=new InterGestionAgence(c); inter.pack();inter.show(); } catch(ClassNotFoundException exc){ in.nom.setText("vérifier la class Agence"); in.load.setEnabled(false); } }} Attacher une instance au boutton load: load.addActionListener(new EcouteurLoad(this));

17 Gestion agence1 Ajout client opératio ns Quiter+ save Entrée: lobjet agence de la fenêtre en cours Traitement 1 et 2: création dune fenêtre de type interAjout où interOperation pour les deux premiers. Traitement quit: Exécute la méthode save de lobjet agence et quit en exécutant exit

18 Code des deux écouteurs ajout et opérations public class EcouteurAjout implements ActionListener { Agence ag; public EcouteurAjout(Agence a) {ag=a; } public void actionPerformed(ActionEvent e) { InterfaceAjout in=new InterfaceAjout(ag); in.pack();in.show(); } ****************************************************** *************************************** public class EcouteurOperation implements ActionListener { Agence ag; public EcouteurOperation(Agence a) {ag=a;} public void actionPerformed(ActionEvent e) { InterOperation in=new InterOperation(ag); in.pack();in.show(); } Attachez les ecouteur au bouttons ajout et operation: ajout.addActionListener(new EcouteurAjout(ag)); operation.addActionListener(new EcouteurOperation(ag));

19 Code de lécouteur quiter+save public class EcouteurQuiter implements ActionListener { Agence ag; public EcouteurQuiter(Agence a) {ag=a;} public void actionPerformed(ActionEvent e) { try{ag.save(); System.exit(1);} catch(IOException ex){ ((JButton)e.getSource()). setText("problème de sauvgarde: fermez la fenêtre"); ((JButton)e.getSource()).setEnabled(false); } Attachez l écouteur au boutton quiter: quiter.addActionListener(new EcouteurQuiter(ag));

20 Ecouteur du bouton ajouter Interface Ajout nu mC no m pre no m ajouter Entrée: objet agence + les valeurs de champs texte donc la fenêtre Traitement: créer un client avec les valeur en entrée et ajouter le client dans la liste des clients de lagence

21 Code de lécouteur AjoutClient public class EcouteurAjoutClient implements ActionListener { InterfaceAjout in; public EcouteurAjoutClient(InterfaceAjout inter) {in =inter;} public void actionPerformed(ActionEvent e) { int num=Integer.parseInt(in.numT.getText()); String n=in.nomT.getText(); String p=in.preT.getText(); float s=Float.parseFloat(in.somT.getText()); Client c=new Client(n,p,num,s); in.ag.ajoutClient(c); } Attachez l écouteur au boutton ajouter: ajout.addActionListener(new EcouteurAjoutClient(this));

22 Même chose ~ pour opération Interface opération nu mC som me retirer Entrée: objet agence + les valeurs de champs texte donc la fenêtre Traitement: chercher le client dans la liste et effectuer une opération: Attention il faut gérer lexception

23 Code écouteur retirer public class EcouteurRetirer implements ActionListener { InterOperation in; public EcouteurRetirer(InterOperation inter) {in=inter; } public void actionPerformed(ActionEvent e) { int num=Integer.parseInt(in.numT.getText()); Client c=in.ag.getClient(num); if (c==null) {in.message.setText("client n'exsite pas. refaire!!!!"); in.message.setVisible(true);} else {try{ float somme=Float.parseFloat(in.somT.getText()); c.retirer(somme);} catch(OperationInvalide ex){ in.message.setText(ex.toString()); in.message.setVisible(true);} } }} Attachez l écouteur au boutton retirer: retirer.addActionListener(new EcouteurRetirer(this));

24 Vous pouvez tester votre programme public Test() { } public static void main(String[] args) { JFrame.setDefaultLookAndFeelDecorated(true); InterGeneral f=new InterGeneral(); f.pack(); f.show(); }


Télécharger ppt "Dernière scéance: Des question?????? + Deux exercices."

Présentations similaires


Annonces Google