0% ont trouvé ce document utile (0 vote)
5 vues14 pages

Base de données et application Java de gestion

Le document fournit des instructions détaillées pour créer une base de données et une application Java pour gérer des clients, articles et commandes. Il inclut un script SQL pour la base de données, une structure de projet Java avec des exemples de code, et des explications sur les technologies utilisées comme JDBC et DAO. Des étapes de configuration pour IntelliJ et MySQL Workbench sont également fournies.

Transféré par

harmelambena63
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
5 vues14 pages

Base de données et application Java de gestion

Le document fournit des instructions détaillées pour créer une base de données et une application Java pour gérer des clients, articles et commandes. Il inclut un script SQL pour la base de données, une structure de projet Java avec des exemples de code, et des explications sur les technologies utilisées comme JDBC et DAO. Des étapes de configuration pour IntelliJ et MySQL Workbench sont également fournies.

Transféré par

harmelambena63
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Parfait — j’ai analysé l’énoncé que vous avez fourni et je l’ai pris en compte pour

construire la base de données + l’application Java demandée. (Énoncé : EXAMEN DE


LANGAGE JAVA 2025).

Je vous fournis ci-dessous tout ce dont vous avez besoin pour :

1. Créer la base de données gestion_commande (script SQL à coller dans MySQL


Workbench).
2. Un projet Java complet (structure + code) en Swing + JDBC pour gérer Clients,
Articles, Commandes.
3. Instructions pas-à-pas pour configurer et exécuter (IntelliJ / VS Code, JDK,
MySQL Workbench).
4. Explications pédagogiques (JDBC, DAO, transactions, relations).

1) Script SQL — coller dans MySQL


Workbench et exécuter
Copiez-collez tout ce bloc dans MySQL Workbench et lancez-le. Il crée la base, les
tables (relations 1-N), et des données d’exemple.

-- DROP & CREATE DB


DROP DATABASE IF EXISTS gestion_commande;
CREATE DATABASE gestion_commande CHARACTER SET utf8mb4 COLLATE
utf8mb4_general_ci;
USE gestion_commande;

-- Table clients
CREATE TABLE clients (
id INT AUTO_INCREMENT PRIMARY KEY,
nom VARCHAR(100) NOT NULL,
prenom VARCHAR(100) NOT NULL,
sexe ENUM('M','F','Autre') DEFAULT 'Autre',
type_client VARCHAR(50),
contact VARCHAR(100),
email VARCHAR(100),
adresse VARCHAR(255),
etat TINYINT(1) DEFAULT 1, -- 1 = actif, 0 = désactivé
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB;

-- Table articles
CREATE TABLE articles (
id INT AUTO_INCREMENT PRIMARY KEY,
designation VARCHAR(150) NOT NULL,
categorie VARCHAR(100),
prix DECIMAL(10,2) NOT NULL DEFAULT 0.00,
stock INT NOT NULL DEFAULT 0,
date_creation DATE DEFAULT (CURRENT_DATE),
etat TINYINT(1) DEFAULT 1,
description TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB;

-- Table commandes (1 commande -> 1 client)


CREATE TABLE commandes (
id INT AUTO_INCREMENT PRIMARY KEY,
client_id INT NOT NULL,
date_commande DATETIME DEFAULT CURRENT_TIMESTAMP,
type_commande VARCHAR(50),
validated TINYINT(1) DEFAULT 0,
total DECIMAL(12,2) NOT NULL DEFAULT 0.00,
CONSTRAINT fk_comm_client FOREIGN KEY (client_id) REFERENCES
clients(id)
ON DELETE RESTRICT ON UPDATE CASCADE
) ENGINE=InnoDB;

-- Table commande_items (ligne de commande) -> multiple articles par


commande
CREATE TABLE commande_items (
id INT AUTO_INCREMENT PRIMARY KEY,
commande_id INT NOT NULL,
article_id INT NOT NULL,
quantite INT NOT NULL DEFAULT 1,
prix_unitaire DECIMAL(10,2) NOT NULL DEFAULT 0.00,
total_ligne DECIMAL(12,2) NOT NULL DEFAULT 0.00,
CONSTRAINT fk_item_commande FOREIGN KEY (commande_id) REFERENCES
commandes(id)
ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT fk_item_article FOREIGN KEY (article_id) REFERENCES
articles(id)
ON DELETE RESTRICT ON UPDATE CASCADE
) ENGINE=InnoDB;

-- Exemples de données
INSERT INTO clients (nom, prenom, sexe, type_client, contact, email,
adresse) VALUES
('Kabongo','David','M','Particulier','+243990000000','david@example.
com','Kinshasa');

INSERT INTO articles (designation, categorie, prix, stock,


description) VALUES
('Stylo Bic','Fournitures',0.50,100,'Stylo bille bleu'),
('Cahier A4 100p','Fournitures',2.00,50,'Cahier ligné 100 pages');

-- Vérifier
SELECT * FROM clients;
SELECT * FROM articles;

2) Structure du projet Java (proposée)


Je vous conseille un projet Maven (gère la dépendance mysql-connector-java).
Structure recommandée :

gestion-commande/
├─ [Link]
└─ src/main/java/
└─ com/gestioncommande/
├─ [Link] // main
├─ util/[Link] // connexion JDBC
├─ model/
│ ├─ [Link]
│ ├─ [Link]
│ ├─ [Link]
│ └─ [Link]
├─ dao/
│ ├─ [Link]
│ ├─ [Link]
│ └─ [Link]
└─ ui/
├─ [Link]
├─ [Link]
├─ [Link]
└─ [Link]

Je fournis ci-dessous les fichiers essentiels. Copiez-les (même sans Maven, vous
pouvez ajouter le .jar du connector dans le classpath).

[Link] (option Maven)


Si vous utilisez Maven (recommandé), créez ce [Link] pour récupérer le driver
MySQL.

<project xmlns="[Link] ...>


<modelVersion>4.0.0</modelVersion>
<groupId>[Link]</groupId>
<artifactId>gestion-commande</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<[Link]>17</[Link]>
<[Link]>17</[Link]>
</properties>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.1.0</version>
</dependency>
</dependencies>
</project>

Si vous n'utilisez pas Maven : téléchargez mysql-connector-java et ajoutez le jar


dans Project Structure -> Libraries d'IntelliJ.
3) Code Java (essentiel)
Remarque : adaptez l’URL/username/password de connexion dans DBConnection
(voir instructions plus bas).

[Link]

package [Link];

import [Link];
import [Link];
import [Link];

public class DBConnection {


// ADAPTEZ ces paramètres selon votre installation MySQL
private static final String URL =
"jdbc:mysql://localhost:3306/gestion_commande?serverTimezone=UTC&use
SSL=false";
private static final String USER = "root";
private static final String PASS = "votre_mot_de_passe";

static {
try {
[Link]("[Link]");
} catch (ClassNotFoundException e) {
[Link]("MySQL JDBC Driver introuvable.
Ajoutez le connector dans le classpath.");
[Link]();
}
}

public static Connection getConnection() throws SQLException {


return [Link](URL, USER, PASS);
}
}
model/[Link]

package [Link];

public class Client {


private int id;
private String nom;
private String prenom;
private String sexe;
private String typeClient;
private String contact;
private String email;
private String adresse;
private int etat; // 1 = actif, 0 = inactif

public Client() {}
public Client(int id, String nom, String prenom) {
[Link] = id; [Link] = nom; [Link] = prenom;
}
public Client(String nom, String prenom, String sexe, String
typeClient, String contact, String email, String adresse) {
[Link] = nom; [Link] = prenom; [Link] = sexe;
[Link] = typeClient;
[Link] = contact; [Link] = email; [Link] =
adresse; [Link] = 1;
}

// getters & setters


public int getId() { return id; }
public void setId(int id) { [Link] = id; }
public String getNom() { return nom; }
public void setNom(String nom) { [Link] = nom; }
public String getPrenom() { return prenom; }
public void setPrenom(String prenom) { [Link] = prenom; }
public String getSexe() { return sexe; }
public void setSexe(String sexe) { [Link] = sexe; }
public String getTypeClient() { return typeClient; }
public void setTypeClient(String typeClient) { [Link] =
typeClient; }
public String getContact() { return contact; }
public void setContact(String contact) { [Link] = contact;
}
public String getEmail() { return email; }
public void setEmail(String email) { [Link] = email; }
public String getAdresse() { return adresse; }
public void setAdresse(String adresse) { [Link] = adresse;
}
public int getEtat() { return etat; }
public void setEtat(int etat) { [Link] = etat; }

@Override
public String toString() {
return id + " - " + nom + " " + prenom;
}
}

model/[Link]

package [Link];

public class Article {


private int id;
private String designation;
private String categorie;
private double prix;
private int stock;
private int etat;

public Article() {}
public Article(String designation, String categorie, double
prix, int stock) {
[Link] = designation; [Link] = categorie;
[Link] = prix; [Link] = stock; [Link] = 1;
}
// getters & setters...
public int getId() { return id; }
public void setId(int id) { [Link] = id; }
public String getDesignation() { return designation; }
public void setDesignation(String designation) {
[Link] = designation; }
public String getCategorie() { return categorie; }
public void setCategorie(String categorie) { [Link] =
categorie; }
public double getPrix() { return prix; }
public void setPrix(double prix) { [Link] = prix; }
public int getStock() { return stock; }
public void setStock(int stock) { [Link] = stock; }
public int getEtat() { return etat; }
public void setEtat(int etat) { [Link] = etat; }

@Override
public String toString() {
return id + " - " + designation + " (stock: " + stock + ")";
}
}

model/[Link]

package [Link];

public class OrderItem {


private int id;
private Article article;
private int quantite;
private double prixUnitaire;

public OrderItem(Article article, int quantite) {


[Link] = article;
[Link] = quantite;
[Link] = [Link]();
}

public double getTotalLigne() { return prixUnitaire * quantite;


}
// getters & setters...
}
model/[Link]

package [Link];

import [Link];
import [Link];
import [Link];

public class Commande {


private int id;
private int clientId;
private LocalDateTime dateCommande;
private String typeCommande;
private boolean validated;
private double total;
private List<OrderItem> items = new ArrayList<>();

public void addItem(OrderItem it) {


[Link](it);
recomputeTotal();
}
public void recomputeTotal() {
total =
[Link]().mapToDouble(OrderItem::getTotalLigne).sum();
}
// getters & setters...
}

dao/[Link]

package [Link];

import [Link];
import [Link];

import [Link].*;
import [Link];
import [Link];

public class ClientDAO {


public void create(Client c) throws SQLException {
String sql = "INSERT INTO clients (nom, prenom, sexe,
type_client, contact, email, adresse, etat) VALUES
(?,?,?,?,?,?,?,?)";
try (Connection conn = [Link]();
PreparedStatement ps = [Link](sql,
Statement.RETURN_GENERATED_KEYS)) {
[Link](1, [Link]());
[Link](2, [Link]());
[Link](3, [Link]());
[Link](4, [Link]());
[Link](5, [Link]());
[Link](6, [Link]());
[Link](7, [Link]());
[Link](8, [Link]());
[Link]();
try (ResultSet rs = [Link]()) {
if ([Link]()) [Link]([Link](1));
}
}
}

public List<Client> findAll() throws SQLException {


List<Client> list = new ArrayList<>();
String sql = "SELECT id, nom, prenom, sexe, type_client,
contact, email, adresse, etat FROM clients";
try (Connection conn = [Link]();
Statement st = [Link]();
ResultSet rs = [Link](sql)) {
while ([Link]()) {
Client c = new Client();
[Link]([Link]("id"));
[Link]([Link]("nom"));
[Link]([Link]("prenom"));
[Link]([Link]("sexe"));
[Link]([Link]("type_client"));
[Link]([Link]("contact"));
[Link]([Link]("email"));
[Link]([Link]("adresse"));
[Link]([Link]("etat"));
[Link](c);
}
}
return list;
}

public void update(Client c) throws SQLException {


String sql = "UPDATE clients SET nom=?, prenom=?, sexe=?,
type_client=?, contact=?, email=?, adresse=?, etat=? WHERE id=?";
try (Connection conn = [Link]();
PreparedStatement ps = [Link](sql)) {
[Link](1, [Link]());
[Link](2, [Link]());
[Link](3, [Link]());
[Link](4, [Link]());
[Link](5, [Link]());
[Link](6, [Link]());
[Link](7, [Link]());
[Link](8, [Link]());
[Link](9, [Link]());
[Link]();
}
}

public void setEtat(int id, int etat) throws SQLException {


String sql = "UPDATE clients SET etat=? WHERE id=?";
try (Connection conn = [Link]();
PreparedStatement ps = [Link](sql)) {
[Link](1, etat);
[Link](2, id);
[Link]();
}
}
}

dao/[Link]

package [Link];

import [Link];
import [Link];
import [Link].*;
import [Link];
import [Link];

public class ArticleDAO {


public void create(Article a) throws SQLException {
String sql = "INSERT INTO articles (designation, categorie,
prix, stock, description, etat) VALUES (?,?,?,?,?,?)";
try (Connection conn = [Link]();
PreparedStatement ps = [Link](sql,
Statement.RETURN_GENERATED_KEYS)) {
[Link](1, [Link]());
[Link](2, [Link]());
[Link](3, [Link]());
[Link](4, [Link]());
[Link](5, "");
[Link](6, [Link]());
[Link]();
try (ResultSet rs = [Link]()) {
if ([Link]()) [Link]([Link](1));
}
}
}

public List<Article> findAll() throws SQLException {


List<Article> list = new ArrayList<>();
String sql = "SELECT id, designation, categorie, prix,
stock, etat FROM articles";
try (Connection conn = [Link]();
Statement st = [Link]();
ResultSet rs = [Link](sql)) {
while ([Link]()) {
Article a = new Article();
[Link]([Link]("id"));
[Link]([Link]("designation"));
[Link]([Link]("categorie"));
[Link]([Link]("prix"));
[Link]([Link]("stock"));
[Link]([Link]("etat"));
[Link](a);
}
}
return list;
}

public Article findById(int id) throws SQLException {


String sql = "SELECT id, designation, categorie, prix,
stock, etat FROM articles WHERE id=?";
try (Connection conn = [Link]();
PreparedStatement ps = [Link](sql)) {
[Link](1, id);
try (ResultSet rs = [Link]()) {
if ([Link]()) {
Article a = new Article();
[Link]([Link]("id"));
[Link]([Link]("designation"));
[Link]([Link]("categorie"));
[Link]([Link]("prix"));
[Link]([Link]("stock"));
[Link]([Link]("etat"));
return a;
}
}
}
return null;
}

public void updateStock(int articleId, int newStock) throws


SQLException {
String sql = "UPDATE articles SET stock=? WHERE id=?";
try (Connection conn = [Link]();
PreparedStatement ps = [Link](sql)) {
[Link](1, newStock);
[Link](2, articleId);
[Link]();
}
}
}
dao/[Link] (création de commande avec transaction)

package [Link];

import [Link];
import [Link];
import [Link];

import [Link];
import [Link];
import [Link];
import [Link];

public class CommandeDAO {


public int createCommande(Commande cmd) throws SQLException {
String insertCommande = "INSERT INTO commandes (client_id,
type_commande, validated, total) VALUES (?,?,?,?)

Vous aimerez peut-être aussi