INTM 2005 informatique

Publié par

MANAGEMENT Année 2005 èreConcours d’entrée en 1 année Epreuve d’Informatique Durée : 4 heures Coefficient : 12 Traitez les deux exercices du sujet suivant : EXERCICE 1 : 24 points Partie 1 : (10 points) Partie 2 : (14 points) EXERCICE 2 : 16 points N.B.: Ce document comporte 5 pages. Page 1 sur 5 EXERCICE 1 (sur 24 points) (sujet librement inspiré de la réalité et volontairement simplifié) Partie 1 (sur 10 pts) Contexte : Soit la base de données suivante réalisée personnellement par un libraire de quartier parisien et dynamique. On ne s'intéressera pas ici aux commandes individuelles de livres de référence ou classiques, mais uniquement à la vente des nouveautés éditoriales. Ce libraire a signé un contrat à tacite reconduction annuelle avec chacun des grands éditeurs, qui lui assure la mise en vente périodique de lots de nouveautés (environ une fois par trimestre, au moins pour la rentrée littéraire en septembre, et à l'occasion des grands prix littéraires comme le Goncourt, le Renaudot ou le Nobel (NomPrix)… qui ont tous lieu à la même époque chaque année). Un lot comprend chaque livre dans une quantité déterminée par l'éditeur en fonction du succès attendu et du type de clientèle de la librairie (QteDansLot). La table VENTE enregistre chaque ligne du ticket de caisse du libraire. On ne s'intéressera pas ici à l'aspect financier des relations ...
Publié le : jeudi 21 juillet 2011
Lecture(s) : 305
Nombre de pages : 10
Voir plus Voir moins
Page 1 sur 5
MANAGEMENT
Année 2005
Concours d’entrée en 1
ère
année
Epreuve d’Informatique
Durée :
4 heures
Coefficient :
12
Traitez les deux exercices du sujet suivant :
EXERCICE 1 :
24
points
Partie 1 : (10 points)
Partie 2 : (14 points)
EXERCICE 2 :
16
points
N.B.: Ce document comporte 5 pages.
Page 2 sur 5
EXERCICE 1
(sur 24 points)
(sujet librement inspiré de la réalité et volontairement simplifié)
Partie 1 (sur 10 pts)
Contexte :
Soit la base de données suivante réalisée personnellement par un libraire de
quartier parisien et dynamique. On ne s'intéressera pas ici aux commandes individuelles
de livres de référence ou classiques, mais uniquement à la vente des nouveautés
éditoriales.
Ce libraire a signé un contrat à tacite reconduction annuelle avec chacun des grands
éditeurs, qui lui assure la mise en vente périodique de lots de nouveautés (environ une
fois par trimestre, au moins pour la rentrée littéraire en septembre, et à l'occasion des
grands prix littéraires comme le Goncourt, le Renaudot ou le Nobel (
NomPrix
)… qui ont
tous lieu à la même époque chaque année).
Un lot comprend chaque livre dans une quantité déterminée par l'éditeur en fonction du
succès attendu et du type de clientèle de la librairie (
QteDansLot
).
La table VENTE enregistre chaque ligne du ticket de caisse du libraire.
On ne s'intéressera pas ici à l'aspect financier des relations entre le libraire et ses
éditeurs.
VENTE
NumISBN
DateHeureVente
QteVendue
PRIX LITTERAIRE
NomPrix
AnneePrix
NumISBN
LIVRE
NumISBN
Titrelivre
PrixVenteHT
QtéDansLot
NumContrat
DateReception
LOT
NumContrat
DateReception
CONTRAT
NumContrat
DateDebContrat
NomEditeur
Page 3 sur 5
Ecrire en SQL les requêtes suivantes :
(sachant que l'on peut utiliser une variable du
SGBD : SYSDATE qui contient la date du système d'exploitation, et que SYSDATE + 1
correspond à la date de demain).
1.
Créer la table LOT
2.
Donner les noms des éditeurs ayant déjà reçu au moins une fois un prix.
3.
Donner pour chaque éditeur, la date du dernier lot qu’il a reçu
4.
Donner les numéros ISBN et les titres des livres plus vendus aujourd'hui
qu'hier
5.
Donner par lot reçu, le nom de l'éditeur, la liste des titres de livres (dans
l'ordre chronologique)
6.
Augmenter de 5 % les prix de tous les livres
7.
Donner le nombre de prix obtenus par éditeur (on comptera 2 si un éditeur a
gagné le prix Goncourt 2 années de suite)
Partie 2 (sur 14 pts)
Déduire le Modèle entités-associations de la partie 1 et le compléter à l'aide du texte
ci-dessous :
Il arrive qu'à la fin d'une durée minimum de mise en vente des livres d'un lot (différente
pour chaque contrat), tous les livres reçus ne paraissent pas pouvoir se vendre dans un
délai raisonnable. Le libraire est alors autorisé à effectuer un
retour des invendus
à
l'éditeur : il sélectionne à sa guise au sein d'un lot, les livres en la quantité qu'il souhaite
pour les retourner en une fois à l'éditeur.
Inversement, pour un ouvrage à succès, le libraire peut être amené à effectuer une
commande de rappel
(il choisit lui-même les quantités qui lui semblent nécessaires).
Il pourra effectuer autant de commandes de rappel qu'il le souhaite, tant que le livre
concerné n'est pas épuisé. On considérera qu'il n'est jamais réédité. Il ne pourra pas
effectuer de colis de retour concernant les commandes de rappel.
Les
ventes
sont enregistrées (date, heure et liste des ouvrages) et donnent lieu à la mise à
jour de la quantité en stock.
Afin d'assurer la
promotion des ouvrages
en vente, le libraire organise de petites
manifestations promotionnelles, avec une entrée payante en soirée. Il s'agit d'une lecture
Page 4 sur 5
ou d'un débat afin de promouvoir un auteur. Il y a toujours un animateur qui est soit
l'auteur lui-même soit le libraire lui-même. On éditera le résultat de chaque
manifestation : nombre d'entrées payantes, nombre d'invitations honorées, nombre
d'exemplaires de chaque ouvrage promu vendus dans les 30 jours suivants.
Le libraire effectue également des
ventes d'ouvrages à la sortie du cinéma
art et essai
de son quartier avec lequel il est associé. Il s'agit de proposer aux cinéphiles à l'entrée et
à la sortie de la séance une sélection d'ouvrages concernant le film (même contexte
historique, géographique, artistique … ). Pour cela, le cinéma lui envoie périodiquement
son programme prévisionnel à partir duquel le libraire sélectionne des films (titre et
durée en mn, dates et heures de toutes les séances prévues, liste des ouvrages à exposer).
On considérera qu'une séance ne propose qu'un film.
De même que pour les manifestations promotionnelles, on enregistrera le nombre
d’exemplaires de chaque ouvrage vendus dans les 30 jours qui suivent la manifestation.
EXERCICE 2 (sur 16 points)
Remarques préliminaires :
Les algorithmes demandés seront écrits dans le langage structuré de votre choix
(C, C++, Pascal, Ada, Java, pseudo langage algorithmique, …) à l’exclusion de toute
autre présentation (pas d’organigramme).
Les algorithmes seront précédés d’une introduction générale et seront eux-mêmes
commentés soigneusement. Les fonctions et procédures utilisées seront clairement
spécifiées.
Les algorithmes demandés se situent dans le cadre de la gestion des employés d’une
entreprise à l’échelle mondiale, où de nouvelles personnes entrent dans l’organigramme
de l’entreprise tous les jours, et où de nombreuses personnes quittent aussi l’entreprise
fréquemment. Les employés appartiennent tous à une hiérarchie dans laquelle il est
impossible qu’une personne donnée ait plus d’un supérieur.
Question 1 (2 pts)
Proposer deux structures de données permettant de mémoriser nos employés avec le
souci d’éviter les duplications, de permettre une grande rapidité dans les opérations
d’inscription et de suppression, d’inscrire les liens hiérarchiques et de donner un temps
de recherche aussi bon que possible. Pour chaque structure proposée, vous préciserez si
elle assure de bonnes performances pour les cinq fonctionnalités principales ci-dessus,
ainsi que ses avantages ou inconvénients.
Page 5 sur 5
Question 2 (2 pts)
La structure de données qui a finalement été choisie est une liste simplement chaînée
dans laquelle les employés sont mémorisés par ordre alphabétique, avec, dans chaque
cellule de la liste, outre le lien normal vers la cellule suivante, un lien vers le supérieur
hiérarchique. On pourra supposer qu’un type ou une classe
Liste
a été défini, ainsi
qu’un type ou classe
Employé
. Ecrire un algorithme qui vérifie que la liste est
effectivement triée par ordre alphabétique. Les fonctionnalités disponibles sont :
la
fonction estVide(uneListe) retourne booléen
qui indique si
la liste qui lui est donnée est vide ou pas,
la
fonction sousListe(uneListe) retourne Liste
qui retourne la
liste chaînée identique à la liste donnée mais sans la première cellule,
la
fonction valeur(uneListe) retourne Employe
, qui retourne
l’employé inscrit dans la cellule de tête de la liste donnée,
l’opération
<
permettant de comparer deux employés et retournant un booléen
valant Vrai si le premier employé a un nom inférieur à celui de l’autre dans l’ordre
alphabétique.
Question 3 (4 pts)
Dans chacune des cellules de la liste, un lien renvoie vers le supérieur hiérarchique de
l’employé concerné, lui-même employé. Ecrire un algorithme qui indique, pour un
employé donné, le nombre de personnes qui dépendent directement de lui. Ceux qui
seraient sous les ordres d’un de ses subordonnés directs ne seront pas comptabilisés.
Pour écrire cet algorithme, les fonctionnalités disponibles sont :
celles de la question précédente,
la
fonction supérieur(laListe) retourne Employé
, qui retourne
le supérieur hiérarchique de l’employé situé dans la cellule de tête de la liste donnée,
l’opération
=
entre deux employés qui indique s’ils sont identiques ou pas.
Question 4 (8 pts)
Si des erreurs survenaient lors des inscriptions d’employés dans la liste, il pourrait
arriver qu’un employé ait un supérieur qui aurait lui-même un supérieur dont le
supérieur serait l’employé de départ, autrement dit qu’un circuit apparaisse dans les liens
entre les employés et leurs supérieurs hiérarchiques. Ecrire un algorithme qui s’assure
que ce n’est pas le cas. Outre les fonctionnalités précisées dans les questions
précédentes, nous disposerons de :
la
fonction estVide(unEmployé) retourne booléen
qui indique
si l’employé qui lui est donné est réel ou pas (notre société comporte certainement un
« employé » sans supérieur hiérarchique…lorsqu’il sera rencontré dans la liste chaînée,
la fonction
supérieur
retournera un « employé vide »).
Soyez le premier à déposer un commentaire !

17/1000 caractères maximum.