Mission Carthage Français

الرئيسية › الامتحانات › باكالوريا علوم الإعلامية

Devoir pratique STI n°2 : la boutique en ligne, l'espace client en JavaScript, les clients et leurs commandes en SQL

باكالوريا علوم الإعلامية، الثلاثي الأول. المدّة: ساعة. على 20 نقطة.

اكتب البرامج متاعك بـ Python ولا بالـ algorithme وثبّت فيهم في بلاصتهم، وبعد حلّ الإصلاح تمرين بتمرين.

Le travail se fait sur ordinateur. Les deux exercices portent sur la même boutique en ligne : l'exercice 1 écrit le fichier client.js de la page de l'espace client, l'exercice 2 les requêtes sur la base des mêmes clients et commandes. Les fonctions JavaScript se testent dans la console du navigateur et dans la page, les requêtes SQL dans MySQL (phpMyAdmin). Barème sur 20 points.

الموضوع مكتوب بالفرنسي، كيما في القسم.

Exercice 1 : l'espace client (8 pts)

La boutique en ligne a la page client.html suivante, reliée au fichier client.js. Les commandes y sont rangées dans deux tableaux de même longueur, comme dans la table commande de l'exercice 2 : ids (le numéro du client de chaque commande) et montants (son montant en dinars).

<!DOCTYPE html>
<html lang="fr">
<head>
  <meta charset="utf-8">
  <title>Espace client</title>
</head>
<body>
  <h1>Espace client</h1>
  <select id="client">
    <option value="1">Ben Salah</option>
    <option value="2">Kefi</option>
    <option value="3">Haddad</option>
    <option value="4">Chaabane</option>
    <option value="5">Mejri</option>
  </select>
  <input type="button" id="voir" onclick="voir()" value="Voir">
  <p id="bilan"></p>
  <script>
    var ids = [1, 2, 1, 3, 2, 4, 1, 3];
    var montants = [120, 45, 80, 150, 60, 35, 90, 70];
    function voir() {
      var liste = document.getElementById("client");
      var id = Number(liste.value);
      var noms = ["Ben Salah", "Kefi", "Haddad", "Chaabane", "Mejri"];
      var nom = noms[liste.selectedIndex];
      document.getElementById("bilan").innerHTML = nom + " : " + totalClient(ids, montants, id) + " DT de commandes, la plus grosse " + plusGrosse(ids, montants, id) + " DT.";
    }
  </script>
  <script src="client.js"></script>
</body>
</html>

La fonction voir() du bouton « Voir » est donnée dans la page ; elle utilise les deux fonctions à écrire dans client.js :

  • 1) Écrire la fonction totalClient(ids, montants, id) qui renvoie la somme des montants des commandes du client id (0 s'il n'a pas commandé) (5 pts).
  • 2) Écrire la fonction plusGrosse(ids, montants, id) qui renvoie le plus grand montant d'une commande du client id, ou 0 s'il n'a pas commandé (3 pts).

Exemples : avec ids = [1, 2, 1, 3, 2, 4, 1, 3] et montants = [120, 45, 80, 150, 60, 35, 90, 70], totalClient(ids, montants, 1) donne 290 et plusGrosse(ids, montants, 1) donne 120.

Exercice 2 : les clients et leurs commandes (12 pts)

La boutique de l'exercice 1 garde ses clients et leurs commandes dans deux tables : client (id, nom, ville) et commande (num, #id_client, date_cmd, montant), où id_client référence client(id) et le montant est en dinars. La base est créée par ce script :

CREATE TABLE client (
  id INT PRIMARY KEY,
  nom VARCHAR(30) NOT NULL,
  ville VARCHAR(20) NOT NULL
);
CREATE TABLE commande (
  num INT PRIMARY KEY,
  id_client INT NOT NULL,
  date_cmd DATE NOT NULL,
  montant INT NOT NULL,
  FOREIGN KEY (id_client) REFERENCES client(id)
);
INSERT INTO client VALUES (1, 'Ben Salah', 'Sousse'), (2, 'Kefi', 'Tunis'), (3, 'Haddad', 'Sousse'), (4, 'Chaabane', 'Sfax'), (5, 'Mejri', 'Tunis');
INSERT INTO commande VALUES
  (1, 1, '2026-01-12', 120),
  (2, 2, '2026-01-15', 45),
  (3, 1, '2026-02-03', 80),
  (4, 3, '2026-02-10', 150),
  (5, 2, '2026-02-21', 60),
  (6, 4, '2026-03-02', 35),
  (7, 1, '2026-03-08', 90),
  (8, 3, '2026-03-15', 70);
  • 1) Écrire la requête qui affiche le nom du client et le montant des commandes des clients de Sousse, du plus grand montant au plus petit (3 pts).
  • 2) Écrire la requête qui affiche, pour chaque client qui a commandé, son nom et son nombre de commandes, du plus grand nombre au plus petit (à égalité, par ordre alphabétique du nom) (3 pts).
  • 3) Écrire la requête qui affiche, pour chaque ville, le montant total des commandes de ses clients, par ordre alphabétique de la ville (3 pts).
  • 4) Écrire la requête qui affiche le nom et le montant total des commandes des clients qui ont commandé pour plus de 200 dinars en tout, par ordre alphabétique du nom (3 pts).

الإصلاح المفصّل

الإصلاح متاع الامتحان هذا للمشتركين. فيه التحليل، والـ algorithme بالنوطاسيون التونسية، والبرنامج Python المجرّب، والغلطات اللي ترجع برشا في كل تمرين. بحساب بلاش، تنجم تحلّ 3 إصلاحات تختارهم إنت.

كل الإصلاحات حتى الفرض التأليفي3 أشهر بـ 20 د، العرض حتى 30 نوفمبر 2026 ابعثها لبابا ولّا ماما يخلّصو

موضوع أصلي كتبناه لـ Mission Carthage، على نفس الشكل متاع امتحانات القسم. الأستاذ متاعك يبقى هو المرجع.

البرنامج الكل: باكالوريا علوم الإعلامية · عاود اقرا الكور · الامتحانات الكل