Témoignages

Les épreuves du BTS SIO ont débuté. Vous pouvez commenter les épreuves et faire part aux autres de votre ressenti. Pour les épreuves orales vous pouvez même aider vos camarades en expliquant les points sur lesquels vous avez été interrogé. Vous pouvez aussi envoyer les énoncés immédiatement après l'épreuve pour qu'ils soient disponibles sur le site en envoyant un email.

Correction de l'étude de cas 2016 du BTS SIO : FFBSP

La correction peut comporter des erreurs, ce n'est pas la correction officielle, vous pouvez laisser un message si vous voulez proposer une autre solution.

Mission 1 - Question 1

Le travail à réaliser pour créer l’application web :

Analyse de toutes les fonctionnalités de l’application GestBowl.

Analyse de la structure de la base de données de l’application GestBowl.

Incorporation des fonctionnalités de GestBowl dans l’application web en PHP.

Modification de la base de données MySQL si nécessaire.

Mise en service du site web

Formation des salariés à la nouvelle interface web.

Mission 1 - Question 2

Le travail à réaliser pour se connecter à distance à la base MysQL :

Mettre en place la solution proposée par l’hébergeur au niveau de réseau.

Analyser la structure de la base de données MySQL.

Modifier le programme GestBowl pour que la connexion ne soit plus locale mais utilise un lien vers une base MySQL.

Modifier le logiciel et les commandes SQL pour s’adapter à la structure de base MySQL et aux commandes MySQL.

Déployer la nouvelle version du logiciel sur tous les postes clients.

Supprimer la base locale Access.

Mission 2 - Question 3

Cette question est la plus difficile, la question suivante est plus classique avec des parcours de listes.

La classe Licence

  class Licence
{
	private $LePratiquant;
	private $Numero;
	private $LeClub;
	private $LaCategorie;
	private $Annee;
	
	public function __construct($numero, $pratiquant, $club, $categorie, $annee )
	{
		$this->LePratiquant = $pratiquant;
		$this->LeClub = $club;
		$this->LaCategorie = $categorie;
		$this->Annee = $annee;
		
	}
	
	
	
	public function GetDescription()
	{
            return $this->Numero . " " . $this->LePratiquant->GetNom() . " " . $this->LePratiquant->GetPrenom();	
	}...
   

La classe LicenceJeune

   class LicenceJeune extends Licence
{
	private $NomResp;
	
	public function __construct($nomResp, $pratiquant, $numero, $club, $categorie, $annee)
	{
		parent::__construct($numero, $pratiquant, $club, $categorie, $annee);
		$this->NomResp = $nomResp;
		
	}
	//Implémentation de la méthode GetDescription dans la classe fille.
	//On retourne en plus le nom du responsable en plus	
	public function GetDescription()
	{
		//On rajoute les informations
		return parent::GetDescription() . " " . $this->NomResp . " " . $this->PrenomResp . " ". $this->TelResp;
	
	}
	
	
}

La classe LicenceMixte

class LicenceMixte extends Licence
{
	private $Entreprise;
	public function __construct($entreprise, $pratiquant, $numero, $club, $categorie, $annee)
	{
		parent::__construct($numero, $pratiquant, $club, $categorie , $annee);
		$this->Entreprise = $entreprise;
	}
	//Implémentation de la méthode GetDescription dans la classe fille.
	//On retourne le nom de l'entreprise
	
	public function GetDescription()
	{	
	return parent::GetDescription() . " " . $this->Entreprise->GetNom();
				
	}	
}
   

Mission 2 - Question 4

Dans la classe Licence

        //La méthode retourne un booléen
	public function EstActive()
	{		
		return $this->Annee == date("Y");
	}

Dans la classe Club

    //La méthode retourne la liste des licences actives
	public function GetLicenceActive()
	{
		$listeLicenceActive = array();
		//On parcourt toutes les licences du club et on ne garde que celles qui sont actives.
		foreach ($this->LesLicences as $uneLicence)
		{
	       
			if ($uneLicence->EstActive())
			{
				$listeLicenceActive[] = $uneLicence;
			}
		}
		return $listeLicenceActive;
	}

Dans la classe LigueRegionale

        public function GetFunctionActiveParCategorie()
	{
		$listeParCategorie = array();
		
		//On parcourt tous les clubs de la ligue
		foreach ($this->LesClubs as $unClub)
		{	
			//Pour chaque club on récupère les licences actives
			foreach ($unClub->GetLicenceActive() as $uneLicenseActive)
			{
				$libelleCategorie = $uneLicenseActive->GetCategorie()->GetLibelle();
				
				//Si le libellé de la catégorie est déjà présent on incrémente la valeur dans le tableau associatif
				//sinon on crée une nouvelle entrée dans le tableau associatif.
				if (isset($listeParCategorie[$libelleCategorie]))
				{				
					$listeParCategorie[$libelleCategorie]++;
				}
				else 
				{
					$listeParCategorie[$libelleCategorie] = 1;
				}
			}
		}
		return $listeParCategorie;
	}

Mission 4 - Question 7

Scénario nominal (on ne tient pas compte des cas d'erreurs)

 azure offre web minute

Mission 4 - Question 8

Tarif mensuel avec contrat VAD

On a un nombre de transactions > 1000 et un montant de transaction de 100 000 euros

La calcul : 15 + (100 000 * 0,4/100) + (0,01 * 5000) = 15 + 400 + 50 = 465

Tarif mensuel sans contrat VAD

On a aussi un montant de transaction de 100 000 euros

La calcul : (100 000 * 0,5/100) = 500

Mission 4 - Question 9

Les deux offres sont quasiment équivalentes au niveau des couts.

Au niveau de la sécurité les deux offres sont aussi similaires, les informations sont transmises cryptées.

La solution contrat VAD est plus longue à mettre en place car il faut obtenir un agrément. L’autre solution est plus rapide au niveau de la mise en service.

Avec le contrat le commerçant est réglé plus vite que dans la solution sans contrat. Il n’a pas besoin d’attendre pour le règlement. Il est surement aussi plus facile de discuter avec sa banque qu’avec une autre société en cas de problème.