Devoir pratique STI n°5 : l'agence de voyages, la page des prix triés en JavaScript et les réservations en SQL
Écris tes programmes en Python ou en algorithme et vérifie-les tout de suite, puis ouvre la correction exercice par exercice.
Le travail se fait sur ordinateur. Les deux exercices portent sur le site de l'agence Voyages du Sud : l'exercice 1 écrit le fichier prix.js de sa page des prix, l'exercice 2 les requêtes sur la base des mêmes hôtels et de leurs réservations. 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 : trier et trouver la médiane (8 pts)
La page prix.html suivante, reliée au fichier prix.js, affiche les prix d'une nuit dans les hôtels de l'agence, du moins cher au plus cher, et leur prix médian, avec la fonction montrer() donnée dans la page. Les deux fonctions qu'elle utilise sont écrites dans prix.js, en JavaScript sans utiliser la méthode sort.
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>Nos prix</title>
</head>
<body>
<h1>Agence Voyages du Sud : nos prix</h1>
<input type="button" id="trier" onclick="montrer()" value="Du moins cher au plus cher">
<p id="liste"></p>
<p id="milieu"></p>
<script>
var prix = [180, 95, 150, 140, 80, 120];
function montrer() {
var t = classer(prix);
var texte = t[0] + " DT";
for (var i = 1; i < t.length; i++) {
texte = texte + ", " + t[i] + " DT";
}
document.getElementById("liste").innerHTML = texte;
document.getElementById("milieu").innerHTML = "Prix médian : " + mediane(prix) + " DT";
}
</script>
<script src="prix.js"></script>
</body>
</html>
- 1) Écrire la fonction classer(t) qui renvoie une copie du tableau de nombres t triée dans l'ordre croissant, sans modifier t (tri par sélection ou tri à bulles, écrit à la main) (5 pts).
- 2) Écrire la fonction mediane(t) qui renvoie la médiane du tableau t non vide : après le tri, l'élément du milieu si la longueur est impaire, la moyenne des deux éléments du milieu sinon (3 pts).
Exemples : classer([150, 95, 180]) donne [95, 150, 180] ; mediane([150, 95, 180]) donne 150 et mediane([80, 120, 150, 95]) donne 107.5.
Exercice 2 : les réservations d'hôtels (12 pts)
L'agence de l'exercice 1 garde ses hôtels (ceux de la page prix.html), ses clients et leurs réservations dans trois tables : hotel (id, nom, ville, prix_nuit), client (id, nom) et reservation (id, #id_hotel, #id_client, nuits). Le prix d'une nuit est en dinars. La base est créée par ce script :
CREATE TABLE hotel (
id INT PRIMARY KEY,
nom VARCHAR(40) NOT NULL,
ville VARCHAR(20) NOT NULL,
prix_nuit INT NOT NULL
);
CREATE TABLE client (
id INT PRIMARY KEY,
nom VARCHAR(30) NOT NULL
);
CREATE TABLE reservation (
id INT PRIMARY KEY,
id_hotel INT NOT NULL,
id_client INT NOT NULL,
nuits INT NOT NULL,
FOREIGN KEY (id_hotel) REFERENCES hotel(id),
FOREIGN KEY (id_client) REFERENCES client(id)
);
INSERT INTO hotel VALUES
(1, 'Dar El Medina', 'Tunis', 180),
(2, 'Les Palmiers', 'Sousse', 95),
(3, 'Yasmine Plage', 'Hammamet', 150),
(4, 'Oasis Bleue', 'Djerba', 140),
(5, 'Le Caravansérail', 'Tozeur', 80),
(6, 'Dar Hammamet', 'Hammamet', 120);
INSERT INTO client VALUES (1, 'Amri'), (2, 'Ben Ali'), (3, 'Gharbi'), (4, 'Jaziri'), (5, 'Mansour');
INSERT INTO reservation VALUES (1, 3, 1, 4), (2, 1, 2, 2), (3, 4, 1, 3), (4, 6, 3, 5), (5, 3, 4, 2), (6, 2, 2, 6), (7, 1, 3, 1);
- 1) Écrire la requête qui affiche le nom du client, le nom de l'hôtel et le nombre de nuits des réservations dans les hôtels de Hammamet, par ordre alphabétique du client (3 pts).
- 2) Écrire la requête qui affiche, pour chaque hôtel réservé, son nom et le nombre total de nuits réservées, du plus grand total au plus petit (à égalité, par ordre alphabétique du nom) (3 pts).
- 3) Écrire la requête qui affiche, pour chaque client qui a réservé, son nom et le montant total de ses réservations (nuits × prix d'une nuit), par ordre alphabétique du nom (2 pts).
- 4) Écrire la requête qui affiche le nom et le prix d'une nuit des hôtels plus chers que la moyenne des prix d'une nuit, du plus cher au moins cher (2 pts).
- 5) Écrire la requête qui affiche le nom des hôtels qui n'ont aucune réservation (2 pts).
Correction détaillée
La correction de ce devoir est réservée aux abonnés. Elle donne l'analyse, l'algorithme en notation tunisienne, le programme Python vérifié et les erreurs fréquentes de chaque exercice. Avec un compte gratuit, tu peux ouvrir 3 corrections de ton choix.
Connecte-toi d'abord : créer un compte ou me connecter.
Tu as encore 0 correction(s) gratuite(s) à utiliser.
Il te faut un abonnement actif pour les autres corrections. Voir les tarifs ou demander un code sur WhatsApp, Instagram ou Facebook.
Les corrections gratuites de cet appareil ont déjà été utilisées, avec ce compte ou un autre : chaque appareil a droit à 3 corrections gratuites, quel que soit le nombre de comptes. Pour les autres corrections, il faut un abonnement. Voir les tarifs ou écrire sur WhatsApp.
Mission Carthage est en période de test : le site s'ouvre avec un code d'accès. Demande ton code sur WhatsApp, Instagram ou TikTok, puis tape-le sur missioncarthage.tn.
Cette correction n'est pas encore publiée. Reviens bientôt.
Impossible de charger la correction. Vérifie ta connexion et réessaie.
Toutes les corrections jusqu'au devoir de synthèse3 mois pour 20 TND, offre jusqu'au 30 novembre 2026 Envoyer à un parent pour qu'il paieSujet original écrit pour Mission Carthage, dans le format d'un devoir pratique d'informatique (4ème Sciences de l'informatique, technologies du web). Ce n'est pas un sujet officiel.
Tout le programme : Bac Sciences de l'informatique · Revoir le cours · Tous les devoirs