Valentin MARTIN Rapport PPE 1 BTS SIO 1ere année
Sommaire 1 Identification du projet 2 - La solution 3 Mise en œuvre A/ Le fond a) Explication du code b) Erreur de fonctionnement B/ La forme a) Graphisme b) Code source 4 Bilan technique A/ Problèmes rencontrés B/ Améliorations possibles 5/ Tests effectués
1 Identification du projet Une application Bureau est réalisé afin de gérer une bibliothèque personnelle. Dans le but d accompagner ce projet, une application mobile sur le thème de la gestion d une bibliothèque personnelle doit l accompagner. La plateforme et les différentes contraintes sont à gerer par l élève. Le but principal étant que l on puisse visualiser les différents livres de l utilisateur. 2 La solution choisie La plateforme choisie pour le développement est Windows Phone sachant que je possède le NOKIA Lumia 920 sous Windows Phone 8! L IDE utilisé sera Visual Studio 2012 qui possède un IDE pour le développement mobile! Le but de l application Une application ASP.NET est stockée sur un serveur. Sur celui-ci, l utilisateur rentre ses différents livres et dans le cas où un prêt à lieu, les différentes informations sur cet emprunteur. Sur cette fenêtre, l utilisateur peut modifier un livre déjà présent, le supprimer ou bien ajouter un livre qui s ajoutera aux autres livres stockées dans un fichier Books.xml stocké sur un serveur à l adresse suivante : http://88.191.145.50/test-v3/books/
Sur son téléphone, lorsque l utilisateur ouvre son Application, il arrive sur un menu lui proposant de visualiser divers catégories de biens : - Mes Livres - Mes Films - Mes Musiques Pour le design de l application j ai voulu un menu assez sobre avec des couleurs assez fléchit sans pour autant effrayer l œil de l utilisateur. Arrivé sur cette page, lorsque le choix de la catégorie a été effectué, une nouvelle page s ouvre chargeant les différents éléments présents dans cette catégorie. Ici, par exemple pour les livres nous pouvons voir La première de couverture, le titre, l auteur du bouquin et si le livre a été prêté le Nom de la personne qui possède le livre. En cliquant sur un élément, l utilisateur pourra voir En entête, le Titre qui comme à la mode Windows Phone ne rentre pas entièrement sur la page. En dessous nous retrouvons les mêmes informations qui étaient disponible sur la page précédente. En dessous, nous trouvons les informations sur l emprunteur, son numéro de téléphone (03, 06, 07 ), son numéro de téléphone portable et son adresse mail. En dessous j ai mis en place une zone réservé au résumé du livre. Cependant la taille de la zone est limitée!
Lorsque la touche SMS, ou mail est enfoncé un sms, mail prédéfini se mets en place dans la zone de texte. L utilisateur aura le choix de modifier ce message avant d être envoyé par les services mis en place par NOKIA. 3 Mise en œuvre A/ Le fond a) Explication du code Nous allons commencer le code par le fichier Books.xml qui est sur le serveur : <root> <Books> <Book> <Titre></Titre> <Auteur></Auteur> <Editeur></Editeur> <Resume></Resume> <picture></picture> <Pret> <Nom></Nom> <phone></phone> <email></email> </Pret> </Book> </Book> </root>
Nous allons commencer notre visite de code par l App.xaml.cs Dans la fonction App, nous ajoutons ces deux lignes de code : public Book selectedbook get; set; public CD selectedcd get; set; Ce code permet de sélectionner les éléments Book pour les livres, et les élèments CD pour les CD Passons à Book.cs Ce code contient l ensemble éléments nécessaire à la lecture de la Base de données. Ajout de la référence : using System.Xml.Serialization; // permet la sérialisation des données public class Book [XmlElement("Titre")] public string Titre get; set; [XmlElement("phone")] public string phone get; set; Books.cs Ajout des références : using System.Xml.Serialization; using System.Collections.ObjectModel; [XmlRoot("root")] //Les élements se trouvent dans root public class Books [XmlArray("Books")] //Dans Books, on trouve les différents Book [XmlArrayItem("Book")] //Dans Book, on trouve les divers info. public ObservableCollection<Book> Collection get; set;
Cette classe informe l application de l endroit où sont stockés les données dans le fichier.xml Le code de MainPage private void Button_MesLivres(object sender, GestureEventArgs e) NavigationService.Navigate(new Uri("/Livres.xaml", UriKind.RelativeOrAbsolute)); Le code principalement utilisé dans cette page est le lien vers le autres page => NavigationService.Navigate(new Uri( /Page.xaml»», Urikind.RelativeOrAbsolute)) ; Code source de Livre.xaml.cs public MainPage() InitializeComponent(); // connection à la Base de donnée if (!System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable()) MessageBox.Show("No network connection available!"); return; // récuperation des données XML WebClient downloader = new WebClient(); Uri uri = new Uri("http://88.191.145.50/Test-v3/Books/Books.xml", UriKind.Absolute); downloader.downloadstringcompleted += new DownloadStringCompletedEventHandler(BooksDownloaded); downloader.downloadstringasync(uri); e) if (e.result == null e.error!= null) MessageBox.Show("There was an error downloading the XMLfile!"); void BooksDownloaded(object sender, DownloadStringCompletedEventArgs
else // Deserialization des données si récuperation du fichier.xml XmlSerializer serializer = new XmlSerializer(typeof(Books)); XDocument document = XDocument.Parse(e.Result); Books Books = (Books) serializer.deserialize(document.createreader()); employeeslist.itemssource = Books.Collection; // Si des modifications ont eu lieu! private void employeeslist_selectionchanged(object sender, SelectionChangedEventArgs e) var app = App.Current as App; app.selectedbook = (Book) employeeslist.selecteditem; this.navigationservice.navigate(new Uri("/BooksPage.xaml", UriKind.Relative)); Code source de BookPage.xaml.cs Ce code permet la recuperation des livres. var app = App.Current as App; Book = app.selectedbook; // assignation des elements de la base de donnée aux différents élèments. PageTitle.Text = Book.Titre; lastname.text = Book.Auteur; title.text = Book.Editeur; pret.text = "Preter à : " + Book.Nom; image.source = new BitmapImage(new Uri(Book.picture, UriKind.RelativeOrAbsolute)); mail.text = "Email: " + Book.email; sms.text = "SMS: " + Book.phone; phone.text = "Appel: " + Book.phone; resume.text = Book.Resume; Les codes suivant de la page permettent d appeler le contact, lui envoyer un sms
private void phone_manipulationstarted(object sender, ManipulationStartedEventArgs e) MessageBoxResult result = MessageBox.Show("Appeller? ", Book.Nom, MessageBoxButton.OKCancel); if (result == MessageBoxResult.OK) // passer un appel PhoneCallTask phonetask = new PhoneCallTask(); phonetask.displayname = Book.Nom; phonetask.phonenumber = Book.phone; phonetask.show(); private void sms_manipulationstarted(object sender, ManipulationStartedEventArgs e) MessageBoxResult result = MessageBox.Show("Evoyer un sms?", Book.Nom, MessageBoxButton.OKCancel); if (result == MessageBoxResult.OK) // envoyer u un sms SmsComposeTask composesms = new SmsComposeTask(); composesms.body = "Coucou " + Book.Nom + ", j'aimerai savoir quand tu me renderas mon livre : " + Book.Titre + ". Bisous 'Envoyé à partir de MaBiblio_Pret'"; composesms.to = Book.phone; composesms.show(); private void mail_manipulationstarted(object sender, ManipulationStartedEventArgs e) MessageBoxResult result = MessageBox.Show("Envoyer un mail?", Book.Nom, MessageBoxButton.OKCancel); if (result == MessageBoxResult.OK) // envoyer un mail EmailComposeTask emailcomposer = new EmailComposeTask(); emailcomposer.to = "<a href=\"mailto:" + Book.email + "\">" + Book.email + "</a>"; emailcomposer.subject = "Edit your Subject"; emailcomposer.body = "Coucou " + Book.Nom + " j'aimerai savoir quand tu me renderas mon livre " + Book.Titre + " Bisous 'Envoyé à partir de MaBiblio_Pret'"; emailcomposer.show();
b) Erreur de fonctionnement En cas de non connection à la base de donnée car internet est indisponible, un message d erreur s affichera. Dès lors cela réalisé, aucun bug ne devrait apparaitre. 4. B/ Améliorations possibles Je travaille actuellement sur le fait de pouvoir voir comme pour mes livres, mes CD et mes DVD. A chaque connection à la BDD, un fichier xml viendrait se copier sur le stockage du télèphone. De cette manière en cas de non connection à internet, le dernier fichier xml chargé sera affiché!