Académique Documents
Professionnel Documents
Culture Documents
Cet article propose en détaille une application Java pour la gestion des commandes dans une restaurant
Vous pourrez télécharger le fichier au format zip il contient le code sources les classes, les images, …
- Partie Serveur : une interface Swing pour lancer et arrêter le serveur d’écoute, ce dernier est connecté en background avec un serveur de Base de
Données MySQL, intégration d'un moniteur de log pour afficher les clients connectés et leur adresses IP/port.
Object 1
- Partie Client: on trouve ici deux types de clients, une serveuse ordinaire qui va demander une commande faite par un client, et une partie réservée au
aux cuisiniers du restaurant, ces derniers vont pouvoir modifier le menu du restau, visualiser les commandes reçues, commencer ou annuler les
commandes des serveuses.
Fonctionnement :
• parcourir le Menu
• Commander des Plats
• visualiser les commandes en cours de traitement
• visualiser les commandes reçues
• générer une facture des commandes consommés
package Form;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.Blob;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.table.DefaultTableModel;
import org.apache.commons.io.IOUtils;
import shared.Commande;
import shared.Message;
}
private void initComponents() {
Title_jLabel = new javax.swing.JLabel();
jScrollPane1 = new javax.swing.JScrollPane();
DetailsPlat_jPanel = new javax.swing.JPanel();
Nom_jTextField = new javax.swing.JTextField();
Image_jLabel = new javax.swing.JLabel();
Image_jTextField = new javax.swing.JTextField();
Nom_jLabel = new javax.swing.JLabel();
Categorie_jComboBox = new javax.swing.JComboBox();
duree_jTextField = new javax.swing.JTextField();
Categorie_jLabel = new javax.swing.JLabel();
Prix_jLabel = new javax.swing.JLabel();
Prix_jTextField = new javax.swing.JTextField();
duree_jLabel = new javax.swing.JLabel();
Image_jPanel = new javax.swing.JPanel();
BX = new javax.swing.JLabel();
Quantite_jTextField = new javax.swing.JTextField();
Quantite_jLabel1 = new javax.swing.JLabel();
TempsEcouleX_jLabel = new javax.swing.JLabel();
setBackground(java.awt.SystemColor.inactiveCaption);
setClosable(true);
setIconifiable(true);
setMaximizable(true);
setResizable(true);
setTitle("Liste des Commandes En Cours");
Title_jLabel.setFont(new java.awt.Font("Tahoma", 3, 14)); // NOI18N
Title_jLabel.setText("Liste des Commandes En Cours de Preparation");
CommandesEnCoursClient_jTable.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
CommandesEnCoursClient_jTableMouseClicked(evt);
}
public void mousePressed(java.awt.event.MouseEvent evt) {
CommandesEnCoursClient_jTableMousePressed(evt);
}
});
CommandesEnCoursClient_jTable.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
CommandesEnCoursClient_jTableKeyPressed(evt);
}
});
jScrollPane1.setViewportView(CommandesEnCoursClient_jTable);
DetailsPlat_jPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Détails du Plat"));
Image_jLabel.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
Image_jLabel.setText("Image du Plat :");
Nom_jLabel.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
Nom_jLabel.setText("Nom Plat :");
Categorie_jComboBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Entrée", "Soupe", "Plat principal", "Dessert",
"Boisson", "Confiserie" }));
);
Quantite_jLabel1.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
Quantite_jLabel1.setText("Quantité demandé");
javax.swing.GroupLayout DetailsPlat_jPanelLayout = new javax.swing.GroupLayout(DetailsPlat_jPanel);
DetailsPlat_jPanel.setLayout(DetailsPlat_jPanelLayout);
DetailsPlat_jPanelLayout.setHorizontalGroup(
DetailsPlat_jPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(DetailsPlat_jPanelLayout.createSequentialGroup()
.addGroup(DetailsPlat_jPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(Prix_jLabel)
.addComponent(duree_jLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 136, Short.MAX_VALUE))
.addGap(18, 18, 18))
.addGroup(DetailsPlat_jPanelLayout.createSequentialGroup()
.addComponent(Quantite_jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, 154,
Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)))
.addGroup(DetailsPlat_jPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(Prix_jTextField)
.addComponent(duree_jTextField)
.addComponent(Image_jTextField)
.addComponent(Categorie_jComboBox, 0, 335, Short.MAX_VALUE)
.addComponent(Nom_jTextField)
.addComponent(Quantite_jTextField)))
.addGroup(DetailsPlat_jPanelLayout.createSequentialGroup()
.addGroup(DetailsPlat_jPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(DetailsPlat_jPanelLayout.createSequentialGroup()
.addGap(156, 156, 156)
.addComponent(TempsEcouleX_jLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 64,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap())
);
DetailsPlat_jPanelLayout.setVerticalGroup(
DetailsPlat_jPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(DetailsPlat_jPanelLayout.createSequentialGroup()
.addContainerGap(19, Short.MAX_VALUE)
.addGroup(DetailsPlat_jPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(DetailsPlat_jPanelLayout.createSequentialGroup()
.addGroup(DetailsPlat_jPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(Categorie_jComboBox, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(Categorie_jLabel))
.addGap(7, 7, 7)
.addGroup(DetailsPlat_jPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(Nom_jLabel)
.addComponent(Nom_jTextField, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(DetailsPlat_jPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(Prix_jLabel)
.addComponent(Prix_jTextField, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(DetailsPlat_jPanelLayout.createSequentialGroup()
.addGap(3, 3, 3)
.addComponent(duree_jLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(DetailsPlat_jPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 753, Short.MAX_VALUE)
.addComponent(DetailsPlat_jPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
.addContainerGap())
.addGroup(layout.createSequentialGroup()
.addGap(209, 209, 209)
.addComponent(Title_jLabel)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(18, 18, 18)
.addComponent(Title_jLabel)
.addGap(18, 18, 18)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 209, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addContainerGap())
);
pack();
}// </editor-fold>
private void CommandesEnCoursClient_jTableMouseClicked(java.awt.event.MouseEvent evt) {
SelectAction();
}
private void CommandesEnCoursClient_jTableMousePressed(java.awt.event.MouseEvent evt) {
SelectAction();
}
private void CommandesEnCoursClient_jTableKeyPressed(java.awt.event.KeyEvent evt) {
SelectAction();
}
public void SelectAction()
{
try {
BX.setIcon(null);
Selected_Row = CommandesEnCoursClient_jTable.getSelectedRow();
Temp_Commande = parentMainApp.listeCommandeEnCours_Client.get(Selected_Row);
Selected_categorie = Temp_Commande.getCommandePlat().getCategorie();
Selected_nom = Temp_Commande.getCommandePlat().getNom();
Selected_prix = Temp_Commande.getCommandePlat().getPrix();
Selected_duree = Temp_Commande.getCommandePlat().getDuree();
Selected_nom_image = Temp_Commande.getCommandePlat().getNom_image();
Selected_image = Temp_Commande.getCommandePlat().getImage();
Categorie_jComboBox.setSelectedItem(Selected_categorie);
Nom_jTextField.setText(Selected_nom);
Prix_jTextField.setText(""+Selected_prix);
duree_jTextField.setText(""+Selected_duree);
Image_jTextField.setText("./images/"+Selected_nom_image);
Quantite_jTextField.setText(String.valueOf(Temp_Commande.getQuantite()));
Selected_FilePath = "./images/"+Selected_nom_image;
if(ArchOS){ Selected_FilePath = Selected_FilePath.replace("\\", "/"); }
Selected_File = new File(Selected_FilePath);
int blobLength = (int) Selected_image.length();
Selected_bytes = Selected_image.getBytes(1, blobLength);
ByteArrayInputStream in = new ByteArrayInputStream(Selected_bytes);
FileOutputStream out = new FileOutputStream(Selected_File);
IOUtils.copy(in, out);
IOUtils.closeQuietly(in);
IOUtils.closeQuietly(out);
BufferedImage image;