Ajout du Bac Général

This commit is contained in:
Valentin Moguérou 2023-07-15 15:35:02 +02:00
parent 35493ebc1a
commit fb82dd38c9
4 changed files with 654 additions and 3 deletions

227
BCG/calcul.js Executable file
View File

@ -0,0 +1,227 @@
function update() {
/* ------------- Contrôle continu ------------- */
let total_CC = 0;
// EMC
let note_emc_1re = document.getElementById("note-emc-1re").value;
let points_emc_1re = 1 * note_emc_1re
document.getElementById("points-emc-1re").innerHTML = points_emc_1re.toLocaleString("fr");
total_CC += points_emc_1re;
let note_emc_tle = document.getElementById("note-emc-tle").value;
let points_emc_tle = 1 * note_emc_tle
document.getElementById("points-emc-tle").innerHTML = points_emc_tle.toLocaleString("fr");
total_CC += points_emc_tle;
// HG
let note_hg_1re = document.getElementById("note-hg-1re").value;
let points_hg_1re = 3 * note_hg_1re
document.getElementById("points-hg-1re").innerHTML = points_hg_1re.toLocaleString("fr");
total_CC += points_hg_1re;
let note_hg_tle = document.getElementById("note-hg-tle").value;
let points_hg_tle = 3 * note_hg_tle
document.getElementById("points-hg-tle").innerHTML = points_hg_tle.toLocaleString("fr");
total_CC += points_hg_tle;
// LVA
let note_lva_1re = document.getElementById("note-lva-1re").value;
let points_lva_1re = 3 * note_lva_1re
document.getElementById("points-lva-1re").innerHTML = points_lva_1re.toLocaleString("fr");
total_CC += points_lva_1re;
let note_lva_tle = document.getElementById("note-lva-tle").value;
let points_lva_tle = 3 * note_lva_tle
document.getElementById("points-lva-tle").innerHTML = points_lva_tle.toLocaleString("fr");
total_CC += points_lva_tle;
// LVB
let note_lvb_1re = document.getElementById("note-lvb-1re").value;
let points_lvb_1re = 3 * note_lvb_1re
document.getElementById("points-lvb-1re").innerHTML = points_lvb_1re.toLocaleString("fr");
total_CC += points_lvb_1re;
let note_lvb_tle = document.getElementById("note-lvb-tle").value;
let points_lvb_tle = 3 * note_lvb_tle
document.getElementById("points-lvb-tle").innerHTML = points_lvb_tle.toLocaleString("fr");
total_CC += points_lvb_tle;
// ES
let note_es_1re = document.getElementById("note-es-1re").value;
let points_es_1re = 3 * note_es_1re
document.getElementById("points-es-1re").innerHTML = points_es_1re.toLocaleString("fr");
total_CC += points_es_1re;
let note_es_tle = document.getElementById("note-es-tle").value;
let points_es_tle = 3 * note_es_tle
document.getElementById("points-es-tle").innerHTML = points_es_tle.toLocaleString("fr");
total_CC += points_es_tle;
// EPS
let note_eps_tle = document.getElementById("note-eps-tle").value;
let points_eps_tle = 6 * note_eps_tle
document.getElementById("points-eps-tle").innerHTML = points_eps_tle.toLocaleString("fr");
total_CC += points_eps_tle;
// Spé 3
let note_spe3_1re = document.getElementById("note-spe3-1re").value;
let points_spe3_1re = 8 * note_spe3_1re
document.getElementById("points-spe3-1re").innerHTML = points_spe3_1re.toLocaleString("fr");
total_CC += points_spe3_1re;
document.getElementById("total-points-CC").innerHTML = total_CC.toLocaleString("fr")
/* ------------- Épreuves terminales ------------- */
let total_terminal = 0;
// Français écrit
let note_fr_ecrit = document.getElementById("note-fr-ecrit").value;
let points_fr_ecrit = 5 * note_fr_ecrit
document.getElementById("points-fr-ecrit").innerHTML = points_fr_ecrit.toLocaleString("fr");
total_terminal += points_fr_ecrit;
// Français oral
let note_fr_oral = document.getElementById("note-fr-oral").value;
let points_fr_oral = 5 * note_fr_oral
document.getElementById("points-fr-oral").innerHTML = points_fr_oral.toLocaleString("fr");
total_terminal += points_fr_oral;
// Philosophie
let note_philo = document.getElementById("note-philo").value;
let points_philo = 8 * note_philo
document.getElementById("points-philo").innerHTML = points_philo.toLocaleString("fr");
total_terminal += points_philo;
// Grand oral
let note_go = document.getElementById("note-go").value;
let points_go = 10 * note_go
document.getElementById("points-go").innerHTML = points_go.toLocaleString("fr");
total_terminal += points_go;
// Spé 1
let note_spe1 = document.getElementById("note-spe1").value;
let points_spe1 = 16 * note_spe1
document.getElementById("points-spe1").innerHTML = points_spe1.toLocaleString("fr");
total_terminal += points_spe1;
// Spé 2
let note_spe2 = document.getElementById("note-spe2").value;
let points_spe2 = 16 * note_spe2
document.getElementById("points-spe2").innerHTML = points_spe2.toLocaleString("fr");
total_terminal += points_spe2;
document.getElementById("total-points-terminal").innerHTML = total_terminal.toLocaleString("fr")
/* ------------- Options ------------- */
let total_options = 0;
let coef_options = 0;
if (document.getElementById("check-lca-1re").checked) {
document.getElementById("coef-lca-1re").innerHTML = "2";
coef_options += 2;
let points_lca_1re = 2*document.getElementById("note-lca-1re").value;
total_options += points_lca_1re;
document.getElementById("points-lca-1re").innerHTML = points_lca_1re.toLocaleString("fr");
} else {
document.getElementById("coef-lca-1re").innerHTML = "0";
document.getElementById("points-lca-1re").innerHTML = "0";
}
if (document.getElementById("check-lca-tle").checked) {
document.getElementById("coef-lca-tle").innerHTML = "2";
coef_options += 2;
let points_lca_tle = 2*document.getElementById("note-lca-tle").value;
total_options += points_lca_tle;
document.getElementById("points-lca-tle").innerHTML = points_lca_tle.toLocaleString("fr");
} else {
document.getElementById("coef-lca-tle").innerHTML = "0";
document.getElementById("points-lca-tle").innerHTML = "0";
}
if (document.getElementById("check-opt1-1re").checked) {
document.getElementById("coef-opt1-1re").innerHTML = "2";
coef_options += 2;
let points_opt1_1re = 2*document.getElementById("note-opt1-1re").value;
total_options += points_opt1_1re;
document.getElementById("points-opt1-1re").innerHTML = points_opt1_1re.toLocaleString("fr");
} else {
document.getElementById("coef-opt1-1re").innerHTML = "0";
document.getElementById("points-opt1-1re").innerHTML = "0";
}
if (document.getElementById("check-opt1-tle").checked) {
document.getElementById("coef-opt1-tle").innerHTML = "2";
coef_options += 2;
let points_opt1_tle = 2*document.getElementById("note-opt1-tle").value;
total_options += points_opt1_tle;
document.getElementById("points-opt1-tle").innerHTML = points_opt1_tle.toLocaleString("fr");
} else {
document.getElementById("coef-opt1-tle").innerHTML = "0";
document.getElementById("points-opt1-tle").innerHTML = "0";
}
if (document.getElementById("check-opt2").checked) {
document.getElementById("coef-opt2").innerHTML = "2";
coef_options += 2;
let points_opt2 = 2*document.getElementById("note-opt2").value;
total_options += points_opt2;
document.getElementById("points-opt2").innerHTML = points_opt2.toLocaleString("fr");
} else {
document.getElementById("coef-opt2").innerHTML = "0";
document.getElementById("points-opt2").innerHTML = "0";
}
document.getElementById("total-coef-options").innerHTML = coef_options.toLocaleString("fr");
document.getElementById("total-points-options").innerHTML = total_options.toLocaleString("fr");
// CALCUL
let total_points = total_CC + total_terminal + total_options;
document.getElementById("total-points").innerHTML = total_points.toLocaleString("fr");
let total_coef = 100 + coef_options;
document.getElementById("total-coef").innerHTML = total_coef.toLocaleString("fr");
let note_brute = total_points/total_coef;
let note_finale = Math.ceil(100*note_brute)/100;
document.getElementById("note-finale").innerHTML = note_finale.toLocaleString("fr");
let decision;
let sup_mention_actuelle;
if (note_finale < 8) {
decision = "Ajourné"
sup_mention_actuelle = 7.99*total_coef
} else if (note_finale < 10) {
decision = "Passe le second groupe";
sup_mention_actuelle = 9.99*total_coef
} else if (note_finale < 12) {
decision = "Admis";
sup_mention_actuelle = 11.99*total_coef
} else if (note_finale < 14) {
decision = "Admis Mention Assez Bien";
sup_mention_actuelle = 13.99*total_coef
} else if (note_finale < 16) {
decision = "Admis Mention Bien";
sup_mention_actuelle = 15.99*total_coef
} else if (note_finale < 18) {
decision = "Admis Mention Très Bien";
sup_mention_actuelle = 17.99*total_coef
} else {
decision = "Admis Mention Très Bien avec les félicitations du jury";
sup_mention_actuelle = NaN
}
if (note_finale < 18) {
let points_mention_suivante = Math.ceil(10*(sup_mention_actuelle - total_points + .01))/10
document.getElementById("points-manquants").innerHTML = points_mention_suivante.toLocaleString("fr");
} else {
document.getElementById("points-manquants").innerHTML = "-";
}
document.getElementById("decision-jury").innerHTML = decision;
}

404
BCG/index.html Executable file
View File

@ -0,0 +1,404 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Simulateur du Bac Général</title>
<link href="/res/style.css" rel="stylesheet" type="text/css">
<script src="calcul.js"></script>
</head>
<body onload="update()">
<header>
<a href="/">&larr; Retour vers le portail des simulations</a>
<div id="logo">
<a href="https://www.wikibac.fr">
<img src="../res/logo.png" alt="Logo de Wikibac : une pièce de puzzle avec des feuilles de laurier"><span>WikiBac</span>
</a>
</div>
<h1>Simulateur du Bac Général</h1>
</header>
<div class="resultat">
<div>
<span id="total-points"></span>
<p>Points</p>
</div>
<div>
<span id="total-coef"></span>
<p>Coefficients</p>
</div>
<div>
<span id="note-finale"></span>/20
<p>Note finale</p>
</div>
<div>
<span id="decision-jury"></span>
<p>Décision</p>
</div>
<div>
<span id="points-manquants"></span>
<p>Points jusqu'à la<br>décision supérieure</p>
</div>
</div>
<main>
<div class="info">
Information&nbsp;: Si le nombre de points jusqu'à la décision supérieure est faible (c'est-à-dire moins de 10 points environ),
le jury peut vous les accorder sous réserve que votre livret scolaire soit bon (assiduité, bon comportement).
</div>
<div class="info">
Information&nbsp;: Pour les notes empruntées au livret scolaire (i.e. moyenne de l'année),
il faut arrondir la note au dixième à l'excès&nbsp;: par exemple, pour une moyenne annuelle de 16,54,
il faut arrondir à 16,6.
</div>
<form onchange="update()" id="calculateur">
<fieldset>
<legend>Contrôle continu</legend>
<div class="table_wrapper">
<table>
<tr>
<th rowspan="2">Matière</th>
<th colspan="3">Première</th>
<th colspan="3">Terminale</th>
</tr>
<tr>
<th>Coef.</th>
<th>Note</th>
<th>Points</th>
<th>Coef.</th>
<th>Note</th>
<th>Points</th>
</tr>
<tr>
<td>Enseignement moral et civique</td>
<td>1</td>
<td>
<label for="note-emc-1re">Note d'EMC de première</label>
<input type="number" name="note-emc-1re"
id="note-emc-1re" class="note" min="0" max="20" step=".1" required>
</td>
<td>
<span id="points-emc-1re"></span>
</td>
<td>1</td>
<td>
<label for="note-emc-tle">Note d'EMC de terminale</label>
<input type="number" name="note-emc-tle"
id="note-emc-tle" class="note" min="0" max="20" step=".1" required>
</td>
<td>
<span id="points-emc-tle"></span>
</td>
</tr>
<tr>
<td>Langue vivante A</td>
<td>3</td>
<td>
<label for="note-lva-1re">Note de LVA de première</label>
<input type="number" name="note-lva-1re"
id="note-lva-1re" class="note" min="0" max="20" step=".1" required>
</td>
<td>
<span id="points-lva-1re"></span>
</td>
<td>3</td>
<td>
<label for="note-lva-tle">Note de LVA de terminale</label>
<input type="number" name="note-lva-tle"
id="note-lva-tle" class="note" min="0" max="20" step=".1" required>
</td>
<td>
<span id="points-lva-tle"></span>
</td>
</tr>
<tr>
<td>Langue vivante B</td>
<td>3</td>
<td>
<label for="note-lvb-1re">Note de LVB de première</label>
<input type="number" name="note-lvb-1re"
id="note-lvb-1re" class="note" min="0" max="20" step=".1" required>
</td>
<td>
<span id="points-lvb-1re"></span>
</td>
<td>3</td>
<td>
<label for="note-lvb-tle">Note de LVB de terminale</label>
<input type="number" name="note-lvb-tle"
id="note-lvb-tle" class="note" min="0" max="20" step=".1" required>
</td>
<td>
<span id="points-lvb-tle"></span>
</td>
</tr>
<tr>
<td>Histoire-géographie</td>
<td>3</td>
<td>
<label for="note-hg-1re">Note d'histoire-géographie de première</label>
<input type="number" name="note-hg-1re"
id="note-hg-1re" class="note" min="0" max="20" step=".1" required>
</td>
<td>
<span id="points-hg-1re"></span>
</td>
<td>3</td>
<td>
<label for="note-hg-tle">Note d'histoire-géographie de terminale</label>
<input type="number" name="note-hg-tle"
id="note-hg-tle" class="note" min="0" max="20" step=".1" required>
</td>
<td>
<span id="points-hg-tle"></span>
</td>
</tr>
<tr>
<td>Enseignement scientifique</td>
<td>3</td>
<td>
<label for="note-es-1re">Note d'enseignement scientifique de première</label>
<input type="number" name="note-es-1re"
id="note-es-1re" class="note" min="0" max="20" step=".1" required>
</td>
<td>
<span id="points-es-1re"></span>
</td>
<td>3</td>
<td>
<label for="note-es-tle">Note d'enseignement scientifique de terminale</label>
<input type="number" name="note-es-1re"
id="note-es-tle" class="note" min="0" max="20" step=".1" required>
</td>
<td>
<span id="points-es-tle"></span>
</td>
</tr>
<tr>
<td>Éducation physique et sportive</td>
<td colspan="3" class="null"></td>
<td>6</td>
<td>
<label for="note-eps-tle">Note d'EPS</label>
<input type="number" name="note-eps-tle"
id="note-eps-tle" class="note" min="0" max="20" step="1" required>
</td>
<td>
<span id="points-eps-tle"></span>
</td>
</tr>
<tr>
<td>Spécialité 3 abandonnée</td>
<td>8</td>
<td>
<label for="note-spe3-1re">Note de spécialité abandonnée en classe de première</label>
<input type="number" name="note-spe3-1re"
id="note-spe3-1re" class="note" min="0" max="20" step=".1" required>
</td>
<td>
<span id="points-spe3-1re"></span>
</td>
<td colspan="3" class="null"></td>
</tr>
<tr class="total">
<td>Totaux</td>
<td colspan="3">Total des coefficients&nbsp;: 40</td>
<td colspan="3">Total des points&nbsp;: <span id="total-points-CC">0</span></td>
</tr>
</table>
</div>
</fieldset>
<fieldset>
<legend>Épreuves terminales</legend>
Remarque&nbsp;: Seules ces épreuves peuvent faire l'objet d'un éventuel rattrapage.
<div class="table_wrapper">
<table>
<tr>
<th rowspan="2">Matière</th>
<th rowspan="2">Coef.</th>
<th colspan="2">1<sup>er</sup> groupe</th>
</tr>
<tr>
<th>Note</th>
<th>Points</th>
</tr>
<tr>
<td>Français écrit</td>
<td>5</td>
<td>
<label for="note-fr-ecrit">Note de français oral</label>
<input type="number" name="note-fr-ecrit"
id="note-fr-ecrit" class="note" min="0" max="20" step="1" required>
</td>
<td>
<span id="points-fr-ecrit"></span>
</td>
</tr>
<tr>
<td>Français oral</td>
<td>5</td>
<td>
<label for="note-fr-oral">Note de français oral</label>
<input type="number" name="note-fr-oral"
id="note-fr-oral" class="note" min="0" max="20" step="1" required>
</td>
<td>
<span id="points-fr-oral"></span>
</td>
</tr>
<tr>
<td>Philosophie</td>
<td>8</td>
<td>
<label for="note-philo">Note de philosophie</label>
<input type="number" name="note-philo"
id="note-philo" class="note" min="0" max="20" step="1" required>
</td>
<td>
<span id="points-philo"></span>
</td>
</tr>
<tr>
<td>Épreuve orale terminale (Grand oral)</td>
<td>10</td>
<td>
<label for="note-go">Note du Grand Oral</label>
<input type="number" name="note-go"
id="note-go" class="note" min="0" max="20" step="1" required>
</td>
<td>
<span id="points-go"></span>
</td>
</tr>
<tr>
<td>Spécialité 1</td>
<td>16</td>
<td>
<label for="note-spe1">Note de français oral</label>
<input type="number" name="note-spe1"
id="note-spe1" class="note" min="0" max="20" step="1" required>
</td>
<td>
<span id="points-spe1"></span>
</td>
</tr>
<tr>
<td>Spécialité 2</td>
<td>16</td>
<td>
<label for="note-spe2">Note de français oral</label>
<input type="number" name="note-spe2"
id="note-spe2" class="note" min="0" max="20" step="1" required>
</td>
<td>
<span id="points-spe2"></span>
</td>
</tr>
<tr class="total">
<td>Totaux</td>
<td>60</td>
<td></td>
<td><span id="total-points-terminal"></span></td>
</tr>
</table>
</div>
</fieldset>
<fieldset>
<legend>Option(s)</legend>
<div class="table_wrapper">
<table>
<tr>
<th rowspan="2">Matière</th>
<th colspan="4">Première</th>
<th colspan="4">Terminale</th>
</tr>
<tr>
<th>?</th>
<th>Coef.</th>
<th>Note</th>
<th>Points</th>
<th>?</th>
<th>Coef.</th>
<th>Note</th>
<th>Points</th>
</tr>
<tr>
<td>Langues et cultures de l'Antiquité</td>
<td><input type="checkbox" name="check-lca-1re" id="check-lca-1re"></td>
<td id="coef-lca-1re">2</td>
<td>
<label for="note-lca-1re">Note de langues et cultures de l'Antiquité - première</label>
<input type="number" name="note-lca-1re"
id="note-lca-1re" class="note" min="0" max="20" step=".1">
</td>
<td>
<span id="points-lca-1re"></span>
</td>
<td><input type="checkbox" name="check-lca-tle" id="check-lca-tle"></td>
<td id="coef-lca-tle">2</td>
<td>
<label for="note-lca-tle">Note d'option suivie au cours du cycle terminal - terminale</label>
<input type="number" name="note-lca-tle"
id="note-lca-tle" class="note" min="0" max="20" step=".1">
</td>
<td>
<span id="points-lca-tle"></span>
</td>
</tr>
<tr>
<td>Option suivie au cours du cycle terminal (ex: Arts/LV3)</td>
<td><input type="checkbox" name="check-opt1-1re" id="check-opt1-1re"></td>
<td id="coef-opt1-1re">2</td>
<td>
<label for="note-opt1-1re">Note d'option suivie au cours du cycle terminal - première</label>
<input type="number" name="note-opt1-1re"
id="note-opt1-1re" class="note" min="0" max="20" step=".1">
</td>
<td>
<span id="points-opt1-1re"></span>
</td>
<td><input type="checkbox" name="check-opt1-tle" id="check-opt1-tle"></td>
<td id="coef-opt1-tle">2</td>
<td>
<label for="note-opt1-tle">Note d'option suivie au cours du cycle terminal - terminale</label>
<input type="number" name="note-opt1-tle"
id="note-opt1-tle" class="note" min="0" max="20" step=".1">
</td>
<td>
<span id="points-opt1-tle"></span>
</td>
</tr>
<tr>
<td>Option suivie uniquement en classe de Terminale (ex: Maths/DGEMC)</td>
<td colspan="4" class="null"></td>
<td><input type="checkbox" name="check-opt2" id="check-opt2"></td>
<td id="coef-opt2">2</td>
<td>
<label for="note-opt2">Note d'option suivie uniquement en classe de Terminale</label>
<input type="number" name="note-opt2"
id="note-opt2" class="note" min="0" max="20" step=".1">
</td>
<td>
<span id="points-opt2"></span>
</td>
</tr>
<tr class="total">
<td>Totaux</td>
<td colspan="4">Total des coefficients : <span id="total-coef-options">-</span></td>
<td colspan="4">Total des points : <span id="total-points-options">-</span></td>
</tr>
</table>
</div>
</fieldset>
</form>
</main>
<footer>
&copy; Valentin Moguérou 2023 - <a href="https://www.gnu.org/licenses/agpl-3.0.html" target="_blank">Licence GNU AGPL v3</a> - <a href="https://git.kaz.bzh/valentin/simulation.wikibac.fr" target="_blank">Code source</a>
</footer>
</body>
</html>

View File

@ -6,7 +6,7 @@
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Simulateur du BFI</title>
<link href="../res/style.css" rel="stylesheet" type="text/css">
<link href="/res/style.css" rel="stylesheet" type="text/css">
<script src="calcul.js"></script>
</head>
<body onload="update()">
@ -14,10 +14,10 @@
<a href="/">&larr; Retour vers le portail des simulations</a>
<div id="logo">
<a href="https://www.wikibac.fr">
<img src="../res/logo.png" alt="Logo de Wikibac : une pièce de puzzle avec des feuilles de laurier"><span>WikiBac</span>
<img src="/res/logo.png" alt="Logo de Wikibac : une pièce de puzzle avec des feuilles de laurier"><span>WikiBac</span>
</a>
</div>
<h1>Simulateur du BFI</h1>
<h1>Simulateur du Bac Français International</h1>
</header>
<div class="resultat">
<div>

20
index.html Normal file
View File

@ -0,0 +1,20 @@
<!doctype html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Simulateurs des Bacs</title>
</head>
<body>
<h1>Simulateurs des Bacs</h1>
<ul>
<li><a href="/BCG/">Simuler le Bac Général</a></li>
<li><a href="/BFI/">Simuler le Bac Français International</a></li>
</ul>
</body>
</html>