Beruflich Dokumente
Kultur Dokumente
L’application, sous VB.Net, permet la gestion de payement de carburant par les clients dans
les stations de service. L’IHM de cette application est la suivante :
Objet graphique Propriété Name
ComboBox CmbNumP
TextBox TextNLitre
TextBox TextPLitre
TextBox TextNumC
TextBox TextMrq
TextBox TextImmat
TextBox TextClr
TextBox TextNumS
TextBox TextRechMat
DateTimePicker DTPpayemet
Button CmdAjouter
Button CmdEnregistrer
DataGridView DGV
Travail à Faire :
I-1. Déclarer les objets nécessaires à la connexion, en mode non connecté, à la base de données. (1 pt)
I-2. Créer la procédure connecter qui permet de se connecter à la base de données En cas d’erreur, on
affiche un message d’erreur: (1 pt)
I-3. Donner le code de la procédure chargerDataSet permettant de charger le DataSet par les trois
tables Vehicule,Pompes et InstancePayement. (1,5 pts)
I-4. Donner le code de la procédure évènementielle de la zone texte « TxtNumS ». (1,5 pt)
Private Sub txtNumS_Validated (ByVal sender …., ByVal e As …) Handles txtNumS.Validated
…………
End Sub
Cette procédure permettant après la validation de remplir l’objet ComboBox nommé
« CmbNumP » par les numéros des pompes de la station dont sa numéro saisi dans la zone de
teste nommée « txtNumS ».
Cette procédure permet de rechercher un véhicule dont le matricule commence par les
caractères saisis dans la zone de texte « TxtRech ». Le résultat de recherche s’affichera dans
l’objet DataGridView (DGV).
N.B :Dans ce qui suit, on va se focaliser sur une petite partie de l’application mentionné ci-dessus.
<?php
$host = "ServeurX"; // L'adresse du serveur
$login = "SuperAd"; // Le nom d'utilisateur de mysql
$password = "1a2b3c"; // Le mot de passe de mysql
$base = "StationService"; // Le nom de la base
functionconnexion()
{
………………………………….
}
?>
2. Compléter le script PHP du fichier nommé « Installation.php », qui permettra de créer la table «
Employe » (02 pts)
<?php
//appel de la fonction connexion()
include("connexion.php");
connexion();
………………………………….
/* soumettre la requête formée à la base de données,
et affiche une éventuelle erreur à l'écran */
mysql_query($sql) or die(mysql_error());
// la déconnexion
mysql_close();
?>
<HTML>
<HEAD>
<TITLE>Page de consultation</TITLE>
</TITLE>
<META CHARSET="UTF-8"/>
</HEAD>
<BODY><H1 ALIGN="CENTER"> >Liste des employés</H1>
………………………………….
<?php
include("connexion.php");
// Etablir la connexion
connexion();
………………………………….
?>
<TABLE>
</BODY>
</HTML>
4. Ecrire en JavaScript, la fonction qui permettra d’affiche une boite de dialogue avec le message de
confirmation suivant « Voulez-vous
vous supprimer cet enregistrement»,
enregistrement», après avoir cliqué sur l’action «
Supprimer ». (0,75 pt)
5. Ecrire en PHP, le script qui permettra la redirection vers une page nommé « Accueil.php » (0,75 pt)
Une vue abstraite de cette gestion nous a conduit au diagramme de classes suivant :
}
a) Définir le constructeur pour initialiser les attributs de cette classe. (0.5 pt)
b) Donner la définition de la méthode « toString », afin de retourner une chaine porteuse
d’informations sur une personne, la chaine aura la forme suivante : (1 pt)
cin xxxx , nom : xxxxx , prénom : xxxxxx.
c) Redéfinir la méthode « equals » pour qu’il compare deux personnes selon leurs cin ou les
noms et les prénoms. (1.5 pt)
III-2. Le détail de la classe « PropriétaireFidèle » est le suivant :
public class PropriétaireFidèle extends Personnes implements Comparable {
private Integer numCarte,point;
public PropriétaireFidèle(………….) {
……………
}
……. ….. Getter et Setter
@Override
public String toString() {
………………………
}
@Override
public int compareTo(Object t) {
………………
}
}
a) Proposer un constructeur adéquat permettant d’initialiser tous les attributs ; (1 pt)
b) Donner les getters et setters de toutes les propriétés de la classe PropriétaireFidèle. (1 pt)
c) Redifinir la méthode « toString », afin de retourner une chaine porteuse d’informations sur
une personne, la chaine aura la forme suivante : (1 pt)
cin xxxx , nom : xxxxx , prénom : xxxxxx , numéro carte xxxxx , points xxxxx
d) Redifinir la méthode compareTo qui compare deux Propriétaires Fidèles par leurs points.
(1 pt)
III-3. Le détail de la classe « StationServices» est le suivant :
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
public class StationServices {
private String adresse,tel;
private Date dateDernierControle;
private ArrayList<PropriétaireFidèle> listes;
public StationServices(String adresse, String tel, Date dateDernierControle) {
this.adresse = adresse;
this.tel = tel;
this.dateDernierControle = dateDernierControle;
listes= new ArrayList<PropriétaireFidèle>();
}
public boolean addPersonne(PropriétaireFidèle P){
………….
}
public boolean dellPersonne(PropriétaireFidèle p){
…………
}
public Personnes getPersonne(int index){
……………
}
public Personnes getPersonne(String cin){
…………….
}
public void tierListeParPoint(){
…………..
}
@Override
public String toString() {
…………..
}
Le client peut accéder à partir de son poste en envoyant le numéro de la carte au serveur1 ce
dernier contient un programme à l’écoute de tous les demandes clients. Le serveur1 envoie une
requête au serveur2 dont on a installé la base de données concernant les clients abonnés et pour
remettre cette connexion on a utilisé le Framework JDBC pour accéder à la base de données.
1- Questions de cours : (2 pt)
a- Donner l’architecture décrite ci-dessus?
b- Définir une Socket. Quelle est la différence entre socket TCP/IP et UDP ?
c- Que signifie le terme middleware.
2- Le programme coté client : (3 pt)
Ecrire un programme client en respectant les étapes suivantes:
• Demande de connexion au serveur.
• Saisir au clavier et envoyer le numéro de la carte.
• Recevoir les données envoyées par le serveur (le nombres des points accumulé dans le
numéro envoyé)
• Fermeture de la connexion à la fin (réception d’une ligne vide ‘NULL’).
3- Programme cote serveur: (3 pt)
Supposant que le serveur traite un seul client à la fois donner son programme en respectant
les étapes suivantes:
• Acceptation de la connexion
• Recevoir le numéro de la carte envoyé par le client
• Le serveur1 fait appel à une fonction prés compilé dans le serveur serveur2 nommée
« nombrePoint » qui reçoit comme paramètre le numéro de la carte et retourne le leur
nombre de point.
• Lorsque le serveur1 obtient le nombre de point, il l’envoie au client.
• Fermeture de la connexion.
Éléments de correction de DAI :
Imports System.Data.SqlClient
Public Class Form1
Private cn As SqlConnection
Private dst As New DataSet
Private adptVehicule As SqlDataAdapter
Private adptPayement As SqlDataAdapter
Private adptPompe As SqlDataAdapter
I-2.
Sub connecter()
Try
cn = New SqlConnection("Data Source=(local);Initial Catalog=sserv;Integrated
Security=True")
cn.Open()
Catch ex As Exception
MessageBox.Show("Erreur de connexion" + ex.Message)
End
End Try
End Sub
I-3.
Sub chargerDataSet()
Dim cmdv, cmdp, cmdpp As SqlCommand
cmdv = New SqlCommand("select * from vehicule", cn)
cmdp = New SqlCommand("select * from InstancePayement ", cn)
cmdpp = New SqlCommand("select * from Pompes ", cn)
adptPayement = New SqlDataAdapter(cmdp)
adptPompe = New SqlDataAdapter(cmdpp)
adptVehicule = New SqlDataAdapter(cmdv)
adptVehicule.Fill(dst, "vehicule")
adptPayement.Fill(dst, "InstancePayement")
adptPompe.Fill(dst, "Pompes")
End Sub
I-4.
Next
End With
End Sub
I-5.
Sub Lister_vehicule()
Me.DGV.DataSource = dst.Tables("vehicule")
End Sub
I-6.
I-7.
Dim dr As DataRow
dr = dst.Tables("InstancePayement").NewRow
dr(1) = mat
dr(2) = CmbNumP.SelectedValue
dr(3) = Val(TextPLitre.Text.Trim)
dr(4) = Val(TextNLitre.Text.Trim)
dr(5) = DTPpayemet.Value.Date.ToString
dst.Tables("vehicule").Rows.Add(dr)
End Sub
End Class
6.
<?php
$host = "ServeurX"; // L'adresse du serveur
$login = "SuperAd"; // Le nom d'utilisateur de mysql
$password = "1a2b3c"; // Le mot de passe de mysql
$base = "StationService"; // Le nom de la base
functionconnexion()
{
global $host, $login, $password, $base;
$db = mysql_connect($host, $login, $password);
mysql_select_db($base,$db);
}
?>
7.
<?php
//appel de la fonction connexion()
include("connexion.php");
connexion();
//les instructions de formation de la requête SQL
$sql= "CREATE TABLE IF NOT EXISTS `Employe` (";
//insérer dans la table la colonne "numEmp" de type int (entier)
$sql .= "`numEmp` int NOT NULL auto_increment,";
//insérer la colonne "cin" de type "nchar" et qui ne peut être nulle
$sql .= "`cin` nchar(10) NOT NULL,";
$sql .= "`nom` nchar(10) NOT NULL,";
$sql .= "`prenom` nchar(10) NOT NULL,";
$sql .= "`dateEmb` date NOT NULL,";
$sql .= "`numStationService` int NOT NULL,";
$sql .= "PRIMARY KEY (`numEmp`),";
$sql .= "UNIQUE KEY `numEmp_2` (`numEmp`),";
$sql .= "KEY `numEmp` (`numEmp`)";
// déterminer le type de table
$sql .= ") ENGINE=MyISAM;";
/* soumettre la requête formée à la base de données,et affiche une éventuelle erreur à l'écran */
mysql_query($sql) or die(mysql_error());
// la déconnexion
mysql_close();
?>
8.
<HTML>
<HEAD>
<TITLE>Page de consultation</TITLE>
<META CHARSET="UTF-8"/>
</HEAD>
<BODY><H1 ALIGN="CENTER">Liste des employés</H1>
<TABLE BORDER=1 BGCOLOR="#A6CAF0">
<TR>
<TD>CIN</TD>
<TD>Nom</TD>
<TD>Prénom</TD>
<TD>Date d’embauche</TD>
<TD>Numéro station-service</TD>
<TD>Actions</TD>
</TR>
<?php
include("connexion.php");
// Etablir la connexion
connexion();
// On récupère les enregistrements de la table Employe
$query = "select * from Employe";
$result = mysql_query($query);
// On parcourt la liste des enregistrements
while ($row = mysql_fetch_assoc($result)) {
$cin= $row['CIN'];
$nom = $row['Nom'];
$prenom = $row['Prenom'];
$dateemb= $row['dateEmb'];
$numstationservice= $row['numStationService'];
$numemp= $row['numEmp'];
echo "<tr> \n";
echo "<td>$cin</td> \n";
echo "<tr><td>$nom</td> \n";
echo "<td>$prenom</td> \n";
echo "<td>$dateemp</td> \n";
echo "<td>$numstationservice</td> \n";
echo "<td><a href=\"modifier.php?id=$numemp\">Modifier</a>";
echo " <a href=\"supprimer.php?id=$numemp\">Supprimer</a></td>";
echo "</tr>";
}
// Fermeture de la connexion à la BD
mysql_close();
?>
<TABLE>
</BODY>
</HTML>
9.
<scriptlanguage="javascript">
functionsure(){
return confirm("Vous êtes sûr de vouloir valider la suppression ?");
}
</script>
10.
<?php
include("connexion.php");
connexion();
header('Location: acceuil.php');
?>
return true;
}
}
III-2. la classe « PropriétaireFidèle »:
public class PropriétaireFidèle extends Personnes implements Comparable {
private Integer numCarte,point;
public PropriétaireFidèle(int numCarte, int point, String cin, String nom, String prenom) {
super(cin, nom, prenom);
this.numCarte = numCarte;
this.point = point;
}
@Override
public String toString() {
return super.toString() + ", numCarte=" + numCarte + ", point=" + point ;
}
@Override
public int compareTo(Object t) {
PropriétaireFidèle f=(PropriétaireFidèle)t;
return this.point.compareTo(f.getPoint());
}
}
III-3. la classe « StationServices»:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
@Override
public String toString() {
String s="la Station de Service d adresse " + adresse + ", tel " + tel + ", date Dernier Controle "
+ dateDernierControle + "\n";
for (PropriétaireFidèle p : listes)
s+=p+"\n";
return s;
}
}
DOSSIER IV : C/S (8 pts)