# Th krebs, le 13/01/2014
# -*-coding:utf-8 -*-
#---------------importation
des bibliothèques-------------------
from __future__ import
division
from lycee import *
from tkinter import *
import sqlite3
import os
import os.path
from os import chdir
#---------------récupération
répertoire de travail--------------
rep = os.getcwd()
print(rep)
#--------------création
répertoire sqlite3----------------------
try:
   
os.mkdir(rep + "/Sqlite3")
except:
   
print("\Sqlite3 existe déjà")
rep=rep+"\Sqlite3"
print(rep)
os.chdir(rep)
#-----------création
et connexion à la base de données----------
fichierDonnees
=rep+"/repertoire.sq3"
#print(fichierDonnees)
con=sqlite3.connect(fichierDonnees)
try:
   
con.execute("CREATE TABLE membres (prenom TEXT, nom TEXT, numero
INTEGER)")
except:
   
print("la table est déjà crée")
#---------------------------------------------définition
des fonctions------------------------------------------------
def
repondre(titre,parent,boutton):
   
Fenetre = Tk()
   
Fenetre.title(titre)
   
Fenetre.configure(bg='grey')
   
Fenetre.tk_focusFollowsMouse()
   
nom = Label(Fenetre, text = parent, bg='grey')
   
reponse=StringVar()
   
lareponse = Entry(textvariable=reponse,
bd=5,background='white',relief='sunken', width=50)
   
valeur = Button(Fenetre, text = boutton,bg='grey',justify='left',
command=Fenetre.quit)
   
affichage = Label(Fenetre,bg='grey', width=50)
   
nom.pack()
   
lareponse.pack()
   
valeur.pack()
   
affichage.pack()
   
Fenetre.mainloop()
   
saisir=lareponse.get()
   
Fenetre.destroy()
   
return (saisir)
def
afficher(nblignes,titre,parent,boutton):
   
Fenetre = Tk()
   
Fenetre.title(titre)
   
Fenetre.configure(bg='grey')
   
Fenetre.tk_focusFollowsMouse()
   
nom=nblignes*[""]
   
for i in range(0,nblignes):
       
nom[i] = Label(Fenetre, text = parent[i], bg='grey')
       
nom[i].pack()
       
trait=Label(Fenetre, text =
'_________________________________________________________________________',
bg='grey')
       
trait.pack()
   
valeur = Button(Fenetre, text = boutton,bg='grey',justify='left',
command=Fenetre.quit)
   
affichage = Label(Fenetre,bg='grey', width=50)
   
valeur.pack()
   
affichage.pack()
   
Fenetre.mainloop()
   
Fenetre.destroy()
   
return ()
def enreg():
   
fiche=3*['']
   
fiche=GestionNouvContact()
   
con.execute("insert into membres (prenom, nom, numero) values
(?,?,?)",fiche)
   
con.commit()
   
return()
def GestionNouvContact():
       
Fenetre = Tk()
       
Fenetre.title("nouveau contact")
       
Fenetre.configure(bg='grey')
       
Fenetre.tk_focusFollowsMouse()
       
igt=0
       
nomchp=['prenom','nom','numéro de mobile']
       
labelchp = 3*['']
       
reg = 3*['']
       
registred = 3*['']
       
saisi = 3*['']
       
for igt in range(0,(3)):
           
labelchp[igt] = Label(Fenetre, text = nomchp[igt], bg='grey')
           
reg[igt]=StringVar()
           
registred[igt] = Entry(textvariable=reg[igt],
bd=5,background='white',relief='sunken', width=50)
           
labelchp[igt].pack()
           
registred[igt].pack()
       
valeur = Button(Fenetre, text = "Valider",bg='grey',justify='left',
command=Fenetre.quit)
       
affichage = Label(Fenetre,bg='grey', width=50)
       
valeur.pack()
       
affichage.pack()
       
Fenetre.mainloop()
       
for igt in range(0,3):
           
saisi[igt]=registred[igt].get()
       
Fenetre.destroy()
       
return saisi
def ShowChoice():
       
mod=v.get()
       
return mod
def Recherche():
       
recherche=repondre('recherche','nom','suivant')
       
t=(recherche,)
       
index=0
       
affprenom=[""]
       
affnom=[""]
       
affnumero=[""]
       
cursor = con.execute("SELECT * FROM membres WHERE nom=? order by nom ,
prenom",t)
       
for j in cursor:
           
index=index+1
       
fiches=(index+1)*[""]
       
k=0
       
cursor = con.execute("SELECT * FROM membres WHERE nom=? order by nom ,
prenom",t)
       
for row in cursor:
          
affprenom="Prenom: "+str(row[0])
          
affnom="Nom: "+str(row[1])
          
affnumero="Numero: "+str(row[2])
          
fiches[k]=affprenom+"  |  "+affnom+" 
| 
"+affnumero+"  |  "
          
k=k+1
       
return(index,fiches)
#-------------------------------------------------------programme
principal------------------------------------------------------
#----------initialisation
menu------------
root = Tk()
v = IntVar()
v.set(1)
boutton='suivant'
mode = [
              
("enregistrer contact",1),
              
("lister contacts",2),
              
("rechercher contact",3),
              
("effacer contact",4),
              
("mettre à jour contact",5),
              
("quitter",6)
              
]
#----------appel du
menu----------
Label(root,text="""action
à effectuer:""",justify = LEFT,padx = 20).pack()
for txt, val in mode:
   
Radiobutton(root,text=txt,indicatoron = 0,width = 20,padx =
20,variable=v,command=ShowChoice,value=val).pack(anchor=W)
Button(root, text =
boutton, command=root.quit).pack()
root.mainloop()
root.destroy()
mod=ShowChoice()
while (mod != 6):
   
mod=ShowChoice()
#----------Gestion du
mode enregistrement----------
   
if mod == 1:
       
enreg()
#----------Gestion du
mode lister----------
   
if mod == 2:
       
index=0
       
affprenom=[""]
       
affnom=[""]
       
affnumero=[""]
       
cursor = con.execute("select prenom, nom, numero  from
membres")
       
for j in cursor:
           
index=index+1
       
fiches=(index+1)*[""]
       
k=0
       
cursor = con.execute("select prenom, nom, numero  from membres
order by nom , prenom")
       
for row in cursor:
          
affprenom="Prenom: "+str(row[0])
          
affnom="Nom: "+str(row[1])
          
affnumero="Numero: "+str(row[2])
          
fiches[k]=affprenom+"  |  "+affnom+" 
| 
"+affnumero+"  |  "
          
k=k+1
       
afficher(index,'Liste des contacts',fiches,'suivant')
#----------Gestion
Recherche-----------------
   
if mod == 3:
       
[index,fiches]=Recherche()
       
afficher(index,'Résultat de la recherche',fiches,'suivant')
#----------Gestion
effacement-----------------
   
if mod == 4:
       
[index,fiches]=Recherche()
       
afficher(index,'Recherche nom contact à
effacer',fiches,'suivant')
       
effacer=repondre('effacement','nom contact à
effacer','recherche')
       
effacer2=repondre('effacement','prénom contact à
effacer','recherche')
       
eff=[""]
       
eff[0]=effacer2+" "+effacer
       
t=(effacer,effacer2,)
       
cursor = con.execute("DELETE FROM membres WHERE nom=? and prenom=?",t)
       
con.commit()
       
afficher(1,'Contact éffacé: ',eff,'suivant')
#----------Gestion mise
à jour-----------------
   
if mod == 5:
       
[index,fiches]=Recherche()
       
afficher(index,'Recherche nom contact à mettre à
jour',fiches,'suivant')
       
actu=repondre('Mise à jour','nom contact à mettre
à jour','recherche')
       
actu2=repondre('Mise à jour','prénom contact
à
mettre à jour','recherche')
       
t=(actu,actu2,)
       
cursor = con.execute("SELECT * FROM membres WHERE nom=? and prenom=?",t)
       
for row in cursor:
          
numero='ancien numéro: '+str(row[2])
       
maj=repondre('nouveau numero',numero,'mise à jour')
       
nvnum=[""]
       
nvnum[0]=actu2+" "+actu+" "+str(maj)
       
r=(maj,actu,actu2)
       
cursor = con.execute("UPDATE membres SET numero=? WHERE nom=? and
prenom=?",r)
       
con.commit()
       
afficher(1,'Contact mis à jour: ',nvnum,'suivant')
#----------menu
boucle------------
   
root = Tk()
   
v = IntVar()
   
v.set(1)  # initializing the choice, i.e. Python
   
boutton='suivant'
   
mode = [
                  
("enregistrer contact",1),
                  
("lister contacts",2),
                  
("rechercher contact",3),
                  
("effacer contact",4),
                  
("mettre à jour contact",5),
                  
("quitter",6)
                  
]
   
Label(root,text="""action à effectuer:""",justify =
LEFT,padx = 20).pack()
   
for txt, val in mode:
       
Radiobutton(root,text=txt,indicatoron = 0,width = 20,padx =
20,variable=v,command=ShowChoice,value=val).pack(anchor=W)
   
Button(root, text = boutton, command=root.quit).pack()
   
root.mainloop()
   
root.destroy()
   
mod=ShowChoice()
con.commit()
con.close()
#-----------------------------------------fin
du programme principal-----------------------------------------