Exercice java calculer le prix de la connexion téléphonique

But:
Ecrire un programme qui aide un surfeur sur l'Internet à calculer le prix de la connexion téléphonique
Thème:
Modularisation, algorithme


Ecrivez un programme Connexion.java qui aide un utilisateur d'Internet à calculer le prix de la connexion téléphonique. Le programme demandera à l'utilisateur d'entrer l'heure à laquelle il s'est connecté et l'heure à laquelle il s'est déconnecté. Vous pouvez faire les simplifications suivantes:

  • Il n'est pas nécessaire d'indiquer les minutes. On calcule donc avec des heures entières.
  • L'heure du début de la connexion est toujours inférieure à l'heure de la fin de la connexion. Cela veut donc dire que l'utilisateur n'est jamais connecté de avant minuit jusqu'à après minuit et que la durée maximale d'une connexion est de 23 heures.

Les tarifs de connexion sont les suivants:

  • Tarif 1 de 7h à 17h : 10 francs/heure
  • Tarif 2 de 0h à 7h et de 17h à 24h : 5 francs/heure

Modularisez le programme sous forme de méthodes auxiliaires. Exemples d'exécution:

Début de la connexion : 5
Fin de la connexion : 7
Vous avez été connecté 2 heures pour 10 francs

Début de la connexion : 6
Fin de la connexion : 8
Vous avez été connecté 2 heures pour 15 francs

Début de la connexion : 8
Fin de la connexion : 10
Vous avez été connecté 2 heures pour 20 francs

Début de la connexion : 0
Fin de la connexion : 23
Vous avez été connecté 23 heures pour 165 francs

Début de la connexion : 10
Fin de la connexion : 5
Bizarre, le début est après la fin ...

Début de la connexion : 10
Fin de la connexion : 10
Bizarre, vous n'avez pas été connecté du tout ...
import java.util.Scanner;
class Connexion {
private static Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
int debut = lireEntier("Début de la connexion : ");
int fin = lireEntier("Fin de la connexion : ");

boolean donneesOK = testerDonnees(debut, fin);

if (donneesOK) {
int nbHeures = fin - debut;
int nbHeuresTarif1 = calculerNbHeuresTarif1(debut, fin);
int nbHeuresTarif2 = nbHeures - nbHeuresTarif1;
afficherPrix(nbHeuresTarif1, nbHeuresTarif2);
}
}
/**
* Demande à l'utilisateur d'entrer un entier.
* @param message Le message affiché à l'utilisateur
* @return L'entier entré par l'utilisateur (sans vérification)
*/

static int lireEntier(String message) {

System.out.print(message);
int entier = scanner.nextInt();
return entier;
}
/**
* Vérifie si les données entrées sont cohérentes.
* @param debut Heure du début de la connexion
* @param fin Heure de la fin de la connexion
* @return true si la fin est après le début
*/

static boolean testerDonnees(int debut, int fin) {
if (debut == fin) {
System.out.println("Bizarre, vous n'avez pas été " +
"connecté du tout ...");
return false;
} else if (debut > fin) {
System.out.println("Bizarre, le début est après la fin ...");
return false;
}
return true;
}
/**
* Calcule le nombre d'heures passées en tarif 1
* @param debut Heure du début de la connexion
* @param fin Heure de la fin de la connexion
* @return Le nombre d'heures passées en tarif 1
*/

static int calculerNbHeuresTarif1(int debut, int fin) {
int nb = 0;
for (int heure = debut; heure fin; heure++) {
if ((heure >= 7) && (heure 17)) {
nb++;
}
}
return nb;
}
/**
* Affiche le prix à payer par l'utilisateur
* @param nbHeuresTarif1
* @param nbHeuresTarif2
*/

static void afficherPrix(int nbHeuresTarif1, int nbHeuresTarif2) {
int prix = nbHeuresTarif1 * 10 + nbHeuresTarif2 * 5;
System.out.println("Vous avez été connecté " +
(nbHeuresTarif1 + nbHeuresTarif2) +
" heures pour " + prix + " francs");
}
}
Article publié le 13 Août 2010 Mise à jour le Lundi, 31 Août 2020 20:09 par Salim KHALIL