<html>
<head>
<title>Salaire</title>
<script language="javascript">
var resultat = new Array(new Array(),new Array(),new Array(),new Array(),new Array(),new Array(),new Array(),new Array(),new Array(),new Array(),new Array(),new Array(),new Array(),new Array(),new Array(),new Array(),new Array());
//variable contenant la valeur des billets
var billet = new Array(500,200,100,50,20,10,5,2,1,0.5,0.2,0.1,0.05,0.02,0.01);
//variable pour de test, elle ne sert normalement plus à rien à la phase final mais est laissé au cas où que j'aurais oublié de modifié de nom la variable définitive
var test="";
//variable qui servira de limitation de boucle en fonction du nombre de valeur encodée
var employeNbr=10;
//fonction qui supprime les cases vides...Enfin, pas très au point...
function Nettoyage()
{
for(o=9;o>-1;o--)
{
if (document.paie.salaire[o].value == "")
{
employeNbr = o;
}
}
}
//fonction qui vérifira les données encodées par l'utilisateur
function Vérification(compt)
{
//variable qui indiquera la ligne du formulaire où peut se trouve l'erreur
var precision = compt+1;
//on récupére chaques valeurs du formulaire
//une fois en numérique
var salaireTemp = parseFloat(document.paie.salaire[compt].value);
//une fois en chaîne de caractère
var salaireTempTexte = document.paie.salaire[compt].value;
//condition de chaîne numérique uniquement (cf plus bas)
var salaireTempChiffre = salaireTemp*0;
//condition du nombre de décimal (cf plus bas)
//on récupère la longueur de la chaîne
var salaireTempLongueur = salaireTempTexte.length;
//on récupère la position de la "virgule"
var salaireTempVirguleTemp = salaireTempTexte.indexOf(".");
//on fait la soustraction des deux pour connaître la position par rapport au bout de chaîne
var salaireTempVirgule = salaireTempLongueur - salaireTempVirguleTemp;
if(document.paie.employe[compt].value == "")
{
alert("Veuillez préciser à qui sera attribué le salaire de la ligne:"+precision);
exit;
}
else if(salaireTempChiffre != 0)
//On multiplie le nombre par 0, et on vérifie si ca fait bien 0
//Si ce n'est pas le cas, ce n'est pas un nombre
{
alert("Veuillez mettre vous salaire en décimal à la ligne:"+precision);
exit;
}
else if(salaireTempVirgule > 3 && salaireTempVirguleTemp != -1)
//Si il y a une virgule, la position de la virgule est différente de -1.
//ET
//Si la postion de la virgule est supérieur à trois => plus de deux chiffres derrière la virgule
{
alert("Veuillez encoder un salaire payable (chiffre au centième!) à la ligne:"+precision);
exit;
}
else if(salaireTemp < 500)
{
alert("N'exploitez pas vos employés: 500€ minimum!");
exit;
}
else if(salaireTemp > 5000)
{
alert("Vous êtez trop généreux: 5000€ maximum!");
exit;
}
else
{
//Si tout va bien, le salaire, placé dans la deuxième colonne
resultat[1][compt] = salaireTemp;
}
}
//la fonction qui calculera le nombre de billet en fonction du salaire
function BilletCalcul(compt)
{
//création d'une variable qui contiendra le reste de chaque division
var temp = resultat[1][compt];
var z;
for(z=0;z<billet.length;z++)
{
//calcul du nombre de billet
resultat[z+2][compt] = Math.floor(temp/billet[z]);
//récupération du reste de la divisition
temp = (temp-resultat[z+2][compt]*billet[z]);
}
}
//fonction qui calculera le nombre de billet au total
function Totaux()
{
var temp = 0;
//on fait le tour colonne par colonne
for(c=0;c<billet.length+1;c++)
{
for(l=0;l<employeNbr;l++)
{
//on addition chaque ligne d'une colonne
temp = resultat[c+1][l]+temp;
}
//on place la somme dans en bas de la colonne
resultat[c+1][employeNbr] = temp;
//on n'oublie surtout pas de remettre la varialbe temporaire à 0 pour la prochaine colonne
temp = 0;
}
//Tant qu'on y est, autant remplir toute la dernière ligne
resultat[0][employeNbr] = "Totaux";
}
//fonction qui affiche le tableau resultat
function Affiche()
{
var tableau = "";
var ligne = new Array("","","","","","","","","","");
for(l=0;l<employeNbr+1;l++)
{
for(c=0;c<billet.length+2;c++)
{
//on génère chaque colonne pour une ligne: employé, nombre de billet
ligne[l] += "<td width=\"30px\">"+resultat[c][l]+"</td>";
}
//on rassemble les lignes générés
tableau += "<tr align=\"center\">"+ligne[l] + "</tr>";
}
//on génére l'entête du tableau
var entete = "<td><strong>Employé</strong></td><td><strong>Salaire</strong></td>";
for(z=0;z<billet.length;z++)
{
entete += "<td><font color=\"#FF0000\">"+billet[z]+"</font></td>";
}
document.write("<table border=\"1px\" bordercolor=\"#333333\" cellpadding=\"3px\" cellspacing=\"0\"><tr align=\"center\">"+entete+"</tr>"+tableau+"</table>");
}
function Main()
{
Nettoyage();
var i;
for(i=0;i<employeNbr;i++)
{
Vérification(i);
//ici, le nom des employés qui va être placé dans la première colonne
resultat[0][i] = document.paie.employe[i].value;
//Calcul du nombres de billets
BilletCalcul(i);
}
Totaux();
Affiche();
}
</script>
</head>
<body>
Attention, veuillez remplir le formulaire ligne par ligne sans en sauter!<br>
Si il y a une ligne de vide, toutes les valeurs qui suivent ne seront pas prises en compte!<br> <br>
<!-- il est possible de faire une boule mais le copier coller reste plus simple -->
<form name="paie">
nom:<input name="employe" type="text">salaire:<input name="salaire" type="text"><br>
nom:<input name="employe" type="text">salaire:<input name="salaire" type="text"><br>
nom:<input name="employe" type="text">salaire:<input name="salaire" type="text"><br>
nom:<input name="employe" type="text">salaire:<input name="salaire" type="text"><br>
nom:<input name="employe" type="text">salaire:<input name="salaire" type="text"><br>
nom:<input name="employe" type="text">salaire:<input name="salaire" type="text"><br>
nom:<input name="employe" type="text">salaire:<input name="salaire" type="text"><br>
nom:<input name="employe" type="text">salaire:<input name="salaire" type="text"><br>
nom:<input name="employe" type="text">salaire:<input name="salaire" type="text"><br>
nom:<input name="employe" type="text">salaire:<input name="salaire" type="text"><br>
<input type="button" onClick="Main();" value="Calculer">
</form>
</body>
</html>
Partager