0% ont trouvé ce document utile (0 vote)
17 vues4 pages

Exam2020 C

Le document présente un examen final pour une application mobile dans le cadre d'un cours d'informatique à l'Université de Blida 1. Il contient des questions de cours sur le développement Android, des tâches de conception d'interface utilisateur, ainsi que des exercices de programmation sur les classes Commande et Produit. De plus, il aborde l'utilisation de Firebase Realtime Database pour gérer les commandes des clients.

Transféré par

Tourifiga
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
17 vues4 pages

Exam2020 C

Le document présente un examen final pour une application mobile dans le cadre d'un cours d'informatique à l'Université de Blida 1. Il contient des questions de cours sur le développement Android, des tâches de conception d'interface utilisateur, ainsi que des exercices de programmation sur les classes Commande et Produit. De plus, il aborde l'utilisation de Firebase Realtime Database pour gérer les commandes des clients.

Transféré par

Tourifiga
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Université de Blida 1 2019-2020 3ième année Licence

Département d’Informatique APPLICATION MOBILE Systèmes InformatiQues

EXAMEN FINAL (CORRIGE)


Nom:………………………….. Prénom:………………………… Groupe:……………….

1. QUESTIONS DE COURS (0.25 x 20=5 pts): Trouvez la meilleure correspondance pour les

descriptions ci-dessous en y associant un nombre de 1 à 25. Nous avons complété une


description (valeur en dp « 8 ») à titre d’exemple.
 En développement Android, les __2__ servent à organiser les 1 dpi
__20__ (un bouton, un texte, une image, etc.). 2 layout
 Toutes les vues doivent spécifier ces deux attributs 3 layout_height
____15______ largeur de la vue 4 match_parent
____3______ hauteur de la vue 5 margin
 Ils peuvent valoir : 6 padding
_____21______ : la vue est la plus petite possible 7 pixel
______4______ : la vue est la plus grande possible 8 valeur en dp
______8______ : une taille fixe (non recommandée) 9 String
 Les dp sont une unité de taille indépendante de l’écran. 100dp 10 SQLite
font 100 ___7____ sur un écran de 160 __1____. 11 sendPassword
 Il est possible de modifier l’espacement des vues avec : ResetEmail
_6__ : espace entre le texte et les bords, géré par chaque vue. 12 JSON
_5__ : espace autour des bords, géré par les groupes. 13 Bundle
 ___25___ est utilisé afin d’exposer une base de données 14 Intent
particulière aux autres applications. 15 layout_width
 La classe ___17____permet de créer et manipuler sa base de 16 AdapterView
données___10___. 17 SQLiteOpenHelper
 L'association entre un ____16___ et un Adapter est faite à l'aide de 18 resetEmail
la méthode___23______. 19 defineAdapter
 Spinner, Gallery sont des sous classes concrètes de ___16_______. 20 vue
 Firebase (Real Time Database) stocke les données au format 21 wrap content
__12___. 22 XML
 Une fois la méthode _____11___ est exécutée, le backend Firebase 23 setAdapter
génère un email de réinitialisation de mot de passe. 24 SQLDataBase
 La méthode getExtras() de la classe ___14___ retourne un objet de 25 ContentProvider
type ___13_____.

1/4
2. GESTIONNAIRE DES COMMANDES DES CLIENTS
Nous souhaitons réaliser une application mobile pour un magasin d’épicerie, qui permet aux
(1) clients de faire des commandes, au (2) propriétaire du magasin de gérer la liste des produits
disponibles, et aux (3) livreurs de consulter et de gérer les commandes des clients. L’objectif est de
réaliser l’application du livreur.

1. LAYOUT(4 PTS) : Compléter ligne_list.xml afin d’obtenir l’IHM illustrée par la figure donnée à droite.

ligne_list.xml
<GridLayout...android:columnCount="3"
android:rowCount="4"...>

<TextView android:layout_width="0dp"
android:layout_height="wrap_content"
android:id="@+id/dateText"
android:layout_row="0"
android:layout_column="0"
android:layout_columnWeight="0.25"…/>

<TextView android:layout_width="0dp"
android:layout_height="wrap_content"
android:id="@+id/idTxt"
android:layout_row="0"
android:layout_column="1"
android:layout_columnWeight="0.75"
android:layout_columnSpan="2".../>

<TextView android:layout_width="0dp"
android:layout_height="wrap_content"
android:id="@+id/adresseText"
android:layout_row="1"
android:layout_column="1"
android:layout_columnWeight="0.45"…/>

<TextView android:layout_width="0dp"
android:layout_height="wrap_content"
android:id="@+id/nbrProduit"
android:layout_row="2"
android:layout_column="1"
android:layout_columnWeight="0.45"…/>

<TextView android:layout_width="0dp"
android:layout_height="wrap_content"
android:id="@+id/prixTxt"
android:layout_row="3"
android:layout_column="1"
android:layout_columnWeight="0.75"
android:gravity="center"
android:layout_columnSpan="2".../>
<Button android:layout_width="0dp" <ImageView
android:layout_height=" wrap_content ...
android:text="Livrer Commande" android:id="@+id/cartImg"
android:id="@+id/livrerBtn" android:layout_row="1"
android:layout_row="1" android:layout_column="0"
android:layout_column="2" android:layout_rowSpan="3".../>
android:layout_rowSpan="2"
android:layout_columnWeight="0.3"/>
</GridLayout>

2/4
2. CLASSES COMMANDE/PRODUIT : Un produit est caractérisé par : un id (String), un label (String) et
un prix (int). Une commande est représentée par : un id (String), une date (String), l’adresse du
client (String), le numéro de téléphone du client (String), un état (int) et une liste des produits.
Compléter le code suivant. (0.75+1.25+1+1=4 PTS)
public class Produit {
private String id;
private String label;
private int prix;
//Le code des getters/setters/constructeurs a été omis à cause de l'espace
}

public class Commande {


private String id;
private String date;
private ArrayList<Produit> listeProduit;
private String contactClient;
private String adresseClient;
private int etat; //0 commande non livrée, 1 commande livrée

public Commande(String id, String date, ArrayList<Produit> listeProduit, String


contactClient, String adresseClient) {
[Link] = id;
[Link] = date;
[Link] = listeProduit;
[Link] = contactClient;
[Link] = adresseClient;
[Link] = 0;
}

public int getCoutTotal(){ //retourne le coût total de la commande


int prixT = 0;
for(Produit p:listeProduit)
prixT = prixT + [Link]();
return prixT;
} //Le code des getters/setters a été omis à cause de l'espace
}

3. ADAPTER (5 PTS): Afin d’implémenter une liste dont le contenu soit plus complexe qu’un simple
TextView, il faut définir un adaptateur personnalisé. Compléter le code de la classe MyAdapter :

public class MyAdapter extends ArrayAdapter<Commande>{


private Activity context;
private ArrayList<Commande> listeCmd;
public MyAdapter(Activity context, ArrayList<Commande> listeCmd) {
super(context, [Link].ligne_list, listeCmd);
[Link] = context;
[Link] = listeCmd;
}

3/4
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView==null)
convertView= [Link]().inflate([Link].ligne_list,null);

TextView date = (TextView)[Link]([Link]);


[Link]([Link](position).getDate().toString());

TextView id = (TextView)[Link]([Link]);
[Link]([Link](position).getId());

TextView adresse = (TextView)[Link]([Link]);


[Link]([Link](position).getAdresse());

TextView numProduit = (TextView)[Link]([Link]);


[Link]([Link]([Link](position).getListeProduit().
size())+" produits");

TextView prix = (TextView)[Link]([Link]);


[Link]([Link]([Link](position).getCoutTotal()));

ImageView cart= (ImageView)[Link]([Link]);


if([Link](position).getCoutTotal()>=20000)
[Link]([Link].cart_full);
else
[Link]([Link]);

return convertView;
}...}

4. BASE DE DONNEES (2 PTS): L’application utilise Firebase Realtime Database. Compléter le code qui
met à jour la liste des commandes non livrées :
listeCmd = new ArrayList<Commande>();
myAdapter = new MyAdapter(this,listeCmd);
DatabaseReference ref = [Link]().getReference("Commande");
[Link](new ValueEventListener() {
public void onDataChange(DataSnapshot dataSnapshot) {
[Link]();
for (DataSnapshot d : [Link]()){
Commande commande=[Link]([Link]);
if([Link]()==0)
[Link](commande);
}
[Link]();
}
...});

4/4

Vous aimerez peut-être aussi