Sujet type bac pratique STI n°3 : l'association de don du sang
Écris tes programmes en Python ou en algorithme et vérifie-les tout de suite, puis ouvre la correction exercice par exercice.
Toutes les ressources se trouvent dans le dossier Ressources. Créer, dans le dossier du serveur web local (www ou htdocs), un dossier de travail où seront enregistrés tous les fichiers à réaliser. Une association de don du sang veut un site pour inscrire ses donneurs et suivre ses collectes dans les lycées. Barème sur 20 points.
Partie A : création de la base de données (6 pts)
Le site utilise une base de données décrite par la représentation textuelle suivante :
- donneur (cin, nom, groupe, poids, tel)
- collecte (idCol, lieu, dateCol)
- don (idDon, #cin, #idCol, quantite)
Description des champs :
- cin : chaîne de 8 caractères, numéro de la carte d'identité qui identifie un donneur ; idCol et idDon : entiers auto-incrémentés, identifiants ; tous les autres champs sont obligatoires.
- nom : chaîne de 40 caractères ; groupe : chaîne de 3 caractères (groupe sanguin) ; poids : entier en kilogrammes, au moins 50 ; tel : chaîne de 8 caractères.
- lieu : chaîne de 40 caractères ; dateCol : date de la collecte ; quantite : entier en millilitres, strictement positif.
Lignes à insérer :
- donneur : (08123456, Sami Ben Ali, O+, 72, 22111222), (09876543, Rim Trabelsi, A-, 58, 98222333), (07654321, Hedi Kefi, B+, 80, 55444555) ;
- collecte : (Lycée pilote de Sousse, 2026-03-10), (Maison des jeunes de Monastir, 2026-04-14) ;
- don : (08123456, 1, 450), (09876543, 1, 400), (08123456, 2, 450).
- 1) Créer la base de données donsang, ses tables et leurs relations, puis insérer les lignes données (4 pts).
- 2) Écrire la requête qui affiche, pour chaque collecte qui a reçu des dons, son lieu, son nombre de dons et la quantité totale de sang reçue, par identifiant de collecte (2 pts).
Partie B : création des documents web (14 pts)
Consignes : toutes les fonctions JavaScript sont enregistrées dans mesControles.js ; toutes les règles CSS sont dans le fichier mesStyles.css, donné ci-dessous ; toutes les pages HTML sont reliées à mesStyles.css, et donneur.html est aussi reliée à mesControles.js. Le bouton « Annuler » d'un formulaire efface ses champs.
body { font-family: Tahoma, sans-serif; margin: 0; }
header { background-color: #a93226; color: white; padding: 10px; }
nav { width: 19%; display: inline-block; }
section { width: 54%; display: inline-block; }
aside { width: 24%; display: inline-block; }
footer { text-align: center; color: #7b241c; }
iframe { width: 100%; height: 450px; border: none; }
- 1) Créer la page index.html reliée à mesStyles.css : un élément <header> contient le titre de niveau 1 « Donner son sang » ; un élément <nav> contient deux liens, « Devenir donneur » vers donneur.html et « Les collectes » vers collectes.html, qui s'ouvrent dans le cadre page ; un élément <section> contient le cadre (iframe) de nom page, qui affiche par défaut donneur.html ; un élément <aside> contient la vidéo don.mp4 avec ses boutons de lecture ; un élément <footer> contient le texte « Association Sang pour la vie » (3 pts).
- 2) Créer la page donneur.html, reliée à mesStyles.css et à mesControles.js, avec un formulaire qui envoie ses champs à ajoutDonneur.php par la méthode POST et appelle verifier() avant l'envoi : numéro de carte d'identité (cin), nom (nom), groupe sanguin (liste groupe avec les huit choix A+, A-, B+, B-, AB+, AB-, O+, O-), poids (poids, nombre d'au moins 50), téléphone (tel), et les boutons « S'inscrire » et « Annuler » (3 pts).
- 3) Écrire dans mesControles.js la fonction cinValide(cin), vraie si cin a exactement 8 chiffres, et la fonction poidsValide(p), qui reçoit le texte saisi et est vraie si c'est un nombre entier entre 50 et 200 ; puis la fonction verifier() qui affiche un message (alert) et renvoie false si l'un des deux champs n'est pas valide (4 pts).
- 4) Écrire la page ajoutDonneur.php, qui travaille sur la base de la partie A (connexion dans connexion.php, donné) : si le poids reçu est inférieur à 50, elle affiche « Poids insuffisant » ; sinon, si un donneur a déjà ce numéro de carte, « Ce donneur est déjà inscrit » ; sinon elle ajoute le donneur et affiche « Donneur inscrit : Sami Ben Ali (O+) » avec son nom et son groupe (4 pts).
<?php
$cnx = mysqli_connect("localhost", "root", "", "donsang");
?>
Pour essayer la page PHP sans la partie A, voici la base sur laquelle elle est vérifiée (les colonnes des tables, sans leurs contraintes) :
CREATE DATABASE donsang;
USE donsang;
CREATE TABLE donneur (cin CHAR(8) PRIMARY KEY, nom VARCHAR(40), groupe VARCHAR(3), poids INT, tel CHAR(8));
INSERT INTO donneur VALUES ('08123456', 'Sami Ben Ali', 'O+', 72, '22111222'), ('09876543', 'Rim Trabelsi', 'A-', 58, '98222333'), ('07654321', 'Hedi Kefi', 'B+', 80, '55444555');
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 de l'épreuve pratique de Systèmes et Technologies de l'Informatique du bac Sciences de l'informatique (2 heures, partie A base de données, partie B documents web). Ce n'est pas un sujet officiel.
Tout le programme : Bac Sciences de l'informatique · Revoir le cours · Tous les devoirs