This repository has been archived on 2022-03-31. You can view files and clone it, but cannot push or open issues or pull requests.
GesMag/documentation/documentation.tex
2021-11-20 00:30:55 +01:00

183 lines
7.7 KiB
TeX
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

\documentclass{article}
\usepackage[french]{babel} % français
\usepackage[T1]{fontenc} % encodage
\usepackage[hidelinks]{hyperref} % liens cliquable dans la table des matières
\usepackage{graphicx} % images
\usepackage{listingsutf8} % intégration code
\usepackage{xcolor} % couleurs personnalisés
\usepackage{geometry} % change les dimensions de la page
\usepackage{enumitem} % liste personnalisée
\usepackage{amssymb, pifont} % police (todolist)
\renewcommand{\familydefault}{\sfdefault} % police en "sans-serif"
\geometry{ % définition taille pages
a4paper,
left=20mm,
top=20mm
}
% Définition de la liste de choses à faire/faites (https://tex.stackexchange.com/q/247681/)
\newlist{todolist}{itemize}{3}
\setlist[todolist]{label=$\square$}
\newcommand{\fait}{\rlap{\raisebox{0.3ex}{\hspace{0.4ex}\tiny \ding{52}}}$\square$}
% définition blocs de codes
\lstset{
breaklines=true,
extendedchars=true,
inputencoding=utf8/latin1
}
% Python definition (c) 1998 Michael Weber
% Définitions supplémentaires (2013) Alexis Dimitriadis
% Modifié par https://tex.stackexchange.com/q/235783 et par moi-même
\definecolor{maroon}{cmyk}{0, 0.87, 0.68, 0.32}
\definecolor{halfgray}{gray}{0.55}
\definecolor{ipython_frame}{RGB}{207, 207, 207}
\definecolor{ipython_bg}{RGB}{247, 247, 247}
\definecolor{ipython_red}{RGB}{186, 33, 33}
\definecolor{ipython_green}{RGB}{0, 128, 0}
\definecolor{ipython_cyan}{RGB}{64, 128, 128}
\definecolor{ipython_purple}{RGB}{170, 34, 255}
\lstdefinelanguage{iPython}{
morekeywords={access,and,break,class,continue,def,del,elif,else,except,exec,finally,for,from,global,if,import,in,is,lambda,not,or,pass,print,raise,return,try,while},
morekeywords=[2]{abs,all,any,basestring,bin,bool,bytearray,callable,chr,classmethod,cmp,compile,complex,delattr,dict,dir,divmod,enumerate,eval,execfile,file,filter,float,format,frozenset,getattr,globals,hasattr,hash,help,hex,id,input,int,isinstance,issubclass,iter,len,list,locals,long,map,max,memoryview,min,next,object,oct,open,ord,pow,property,range,raw_input,reduce,reload,repr,reversed,round,set,setattr,slice,sorted,staticmethod,str,sum,super,tuple,type,unichr,unicode,vars,xrange,zip,apply,buffer,coerce,intern},
sensitive=true,
morecomment=[l]\#,
morestring=[b]',
morestring=[b]",
morecomment=[s]{"""}{"""},
morestring=[s]{'''}{'''},
morestring=[s]{r'}{'},
morestring=[s]{r"}{"},
morestring=[s]{r'''}{'''},
morestring=[s]{r"""}{"""},
morestring=[s]{u'}{'},
morestring=[s]{u"}{"},
morestring=[s]{u'''}{'''},
morestring=[s]{u"""}{"""},
literate=
*{+}{{{\color{ipython_purple}+}}}1
{-}{{{\color{ipython_purple}-}}}1
{*}{{{\color{ipython_purple}$^\ast$}}}1
{/}{{{\color{ipython_purple}/}}}1
{^}{{{\color{ipython_purple}\^{}}}}1
{?}{{{\color{ipython_purple}?}}}1
{!}{{{\color{ipython_purple}!}}}1
{\%}{{{\color{ipython_purple}\%}}}1
{<}{{{\color{ipython_purple}<}}}1
{>}{{{\color{ipython_purple}>}}}1
{|}{{{\color{ipython_purple}|}}}1
{\&}{{{\color{ipython_purple}\&}}}1
{~}{{{\color{ipython_purple}~}}}1
{==}{{{\color{ipython_purple}==}}}2
{<=}{{{\color{ipython_purple}<=}}}2
{>=}{{{\color{ipython_purple}>=}}}2
{+=}{{{+=}}}2
{-=}{{{-=}}}2
{*=}{{{$^\ast$=}}}2
{/=}{{{/=}}}2,
commentstyle=\color{ipython_cyan}\ttfamily,
stringstyle=\color{ipython_red}\ttfamily,
keepspaces=true,
showspaces=false,
showstringspaces=false,
rulecolor=\color{ipython_frame},
frame=single,
frameround={t}{t}{t}{t},
framexleftmargin=6mm,
numbers=left,
numberstyle=\tiny\color{halfgray},
backgroundcolor=\color{ipython_bg},
basicstyle=\scriptsize\ttfamily,
keywordstyle=\color{ipython_green}\ttfamily,
escapechar=,
escapebegin=\color{ipython_green},
}
\title{Projet final Tkinter}
\author{Anri Kennel\thanks{Numéro d'étudiant : 20010664}\, (L2-A)\\Module Programmation dinterfaces $\cdot$ Paris 8}
\date{Année universitaire 2021-2022}
\begin{document}
\maketitle
\tableofcontents
\begin{center}
\emph{Les explications sont en commentaire du code.}
\end{center}
\clearpage
\section{Consigne}
\begin{todolist}
\item[\fait] Page de login \texttt{/1.5}
\begin{todolist}
\item[\fait] Nom d'utilisateur ne contient que des lettres et des chiffres
\item[\fait] Mot de passe de minimum 8 caractères dont 1 caractère spécial, une majuscule et une minuscule (possibilité d'afficher ou non en clair le mot de passe)
\item[\fait] Un bouton de connexion (possibilité aussi d'utiliser la touche Entrer pour aller plus vite) qui permet de se rendre sur l'interface Caissier ou Manager
\item[\fait] Un bouton pour quitter l'application
\end{todolist}
\item Page de manager (définit par un nom d'utilisateur et un mot de passe) \texttt{/7.5}
\begin{todolist}
\item Peut ajouter et supprimer un caissier
\item Peut voir la liste des caissiers
\item Un suivi des ventes
\item Un bouton pour vider tous les champs de saisie
\item Un bouton pour quitter l'application
\item Un bouton pour se mettre en "mode caissier"
\end{todolist}
\item Page de caissier (définit par un identifiant, un nom d'utilisateur, un mot de passe, un nom, un prenom, une date de naissance, une adresse et une code postal) \texttt{/6}
\begin{todolist}
\item Afficher le stock disponible
\begin{todolist}
\item 4 rayons de chacun au moins 10 articles de votre choix (fruits/légumes, boulangerie, boucherie/poissonnerie ou produits d'entretien)
\item Au clic sur le produit, l'identifiant, le nom, la quantité en stock et le prix s'affichent
\item Possibilité de rajouter des produits en stock
\end{todolist}
\item Affichage d'un ticket de caisse
\begin{todolist}
\item Date de vente
\item ID, nom, quantité, prix des produits achetés
\item Prix total
\item Un bouton pour valider
\end{todolist}
\item Interface d'export des statistiques (stock le montant total de vente par jour)
\end{todolist}
\end{todolist}
Avec à savoir :
\begin{todolist}
\item Ergonomie \texttt{/2}
\item[\fait] Utilisateurs stockés dans la base de donnée \texttt{/2}
\begin{todolist}
\item[\fait] Possibilité de recréer la base de donnée automatiquement si elle n'existe plus
\end{todolist}
\item Ajout d'autres fonctionnalités \texttt{/1}
\begin{todolist}
\item Heure de connexion stricte pour les caissiers
\item Meilleur caissier (avec le plus de ventes sur la journée/semaine précédente par exemple)
\item Exporter le ticket de caisse en format image
\item Chiffrer les mots de passes dans la base de donnée
\end{todolist}
\item[\fait] Lisibilité du code
\begin{todolist}
\item[\fait] Toutes les fonctions sont nommés et typés \textit{(j'utilises Python \texttt{3.9.7})}
\end{todolist}
\end{todolist}
\clearpage
\section{Code}
\subsection[\texttt{main.py}]{\texttt{main.py}, fichier principale}
\begin{lstinputlisting}[language=iPython]{../main.py}\end{lstinputlisting}
\subsection[\texttt{db.py}]{\texttt{db.py}, gère la communication avec la base de donnée en sa globalité}
\begin{lstinputlisting}[language=iPython]{../db.py}\end{lstinputlisting}
\subsection[\texttt{users.py}]{\texttt{users.py}, implante la partie pour les utilisateurs}
\begin{lstinputlisting}[language=iPython]{../users.py}\end{lstinputlisting}
\end{document}