Advertisement
speedypro1

Slutprojekt

May 10th, 2017
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.38 KB | None | 0 0
  1. #!usr/bin/env python
  2. #-*- coding: utf-8 -*-
  3.  
  4. #Importerar shelve för att sedan kunna spara till en fil.
  5. import shelve
  6. import pymysql
  7. from tkinter import *
  8. import tkinter.messagebox as MsgBox
  9. personinfolista = []
  10. db = pymysql.connect(host="localhost", user="root", password="", db="personinfo")
  11. try:
  12. q = shelve.open("personinfolistan")
  13. infolist = q["personinfo"]
  14. q.close()
  15.  
  16. except:
  17. pass
  18.  
  19. #skapar en klass för en person och dess parametrar
  20. class person ():
  21. def __init__(self, förnamn, efternamn, telefonnummer, personnummer, adress, postnummer, stad):
  22. self.__förnamn = förnamn
  23. self.__efternamn = efternamn
  24. self.__telefonnummer = telefonnummer
  25. self.__personnummer = personnummer
  26. self.__adress = adress
  27. self.__postnummer = postnummer
  28. self.__stad = stad
  29.  
  30. def getförnamn(self):
  31. return self.__förnamn
  32.  
  33. def setförnamn(self, förnamn):
  34. if förnamn == "":
  35. self.__förnamn = "None"
  36. else:
  37. self.__förnamn = förnamn
  38.  
  39. def getefternamn(self):
  40. return self.__efternamn
  41.  
  42. def setefternamn(self, efternamn):
  43. if efternamn == "":
  44. self.__efternamn = "None"
  45. else:
  46. self.__efternamn = efternamn
  47.  
  48. def gettelefonnummer(self):
  49. return self.__telefonnummer
  50.  
  51. def settelefonnummer(self, telefonnummer):
  52. if telefonnummer == "":
  53. self.__telefonnummer = "None"
  54. else:
  55. self.__telefonnummer = telefonnummer
  56.  
  57. def getpersonnummer(self):
  58. return self.__personnummer
  59.  
  60. def setpersonnummer(self, personnummer):
  61. if personnummer == "":
  62. self.__personnummer = "None"
  63. else:
  64. self.__personnummer = personnummer
  65.  
  66. def getadress(self):
  67. return self.__adress
  68.  
  69. def setadress(self, adress):
  70. if adress == "":
  71. self.__adress = "None"
  72. else:
  73. self.__adress = adress
  74.  
  75. def getpostnummer(self):
  76. return self.__postnummer
  77.  
  78. def setpostnummer(self, postnummer):
  79. if postnummer == "":
  80. self.__postnummer = "None"
  81. else:
  82. self.__postnummer = postnummer
  83.  
  84. def getstad(self):
  85. return self.__stad
  86.  
  87. def setstad(self, stad):
  88. if stad == "":
  89. self.__stad = "None"
  90. else:
  91. self.__stad = stad
  92.  
  93. class personinfo():
  94.  
  95. #fönstret för programmet
  96. def __init__(self, root):
  97. self.root = root
  98. root.wm_title("Personinfo.se")
  99.  
  100. #ramar
  101. self.topFrame = Frame(root)
  102. self.topFrame.pack()
  103. self.bottomFrame = Frame(root)
  104. self.bottomFrame.pack(side=BOTTOM, ipadx=2, ipady=2)
  105.  
  106. #topp-ram
  107. self.buttonSave = Button(self.topFrame, text="Spara", width=10, command=self.saveToFile)
  108. self.buttonSave.pack(anchor=N, side=LEFT, padx=2, pady=2)
  109. self.buttonQuit = Button(self.topFrame, text="Avsluta", width=10, command=root.quit)
  110. self.buttonQuit.pack(anchor=N, side=LEFT, padx=2, pady=2)
  111. self.buttonInfo = Button(self.topFrame, text="Information", width=10, command=self.showInfo)
  112. self.buttonInfo.pack(anchor=N, side=LEFT, padx=2, pady=2)
  113. self.buttonsearch = Button(self.topFrame, text="Sök", width=10, command=self.search)
  114. self.buttonsearch.pack(anchor=N, side=LEFT, padx=2, pady=2)
  115.  
  116.  
  117. #botten-ram
  118. self.förnamnLabel = Label(self.bottomFrame, text="Förnamn")
  119. self.förnamnLabel.grid(row=0, column=0, sticky=E)
  120. self.efternamnLabel = Label(self.bottomFrame, text="Efternamn")
  121. self.efternamnLabel.grid(row=1, column=0, sticky=E)
  122. self.telefonnummerLabel = Label(self.bottomFrame, text="Telefonnummer")
  123. self.telefonnummerLabel.grid(row=2, column=0, sticky=E)
  124. self.personnummerLabel = Label(self.bottomFrame, text="Personnummer")
  125. self.personnummerLabel.grid(row=3, column=0, sticky=E)
  126. self.adressLabel = Label(self.bottomFrame, text="Adress")
  127. self.adressLabel.grid(row=4, column=0, sticky=E)
  128. self.postnummerLabel = Label(self.bottomFrame, text="Postnummer")
  129. self.postnummerLabel.grid(row=5, column=0, sticky=E)
  130. self.stadLabel = Label(self.bottomFrame, text="Stad")
  131. self.stadLabel.grid(row=6, column=0, sticky=E)
  132.  
  133. #entry-boxes där man sedan får skriva in t.ex förnamn för en person
  134. self.förnamn = StringVar()
  135. self.efternamn = StringVar()
  136. self.telefonnummer = StringVar()
  137. self.personnummer = StringVar()
  138. self.adress = StringVar()
  139. self.postnummer = StringVar()
  140. self.stad = StringVar()
  141. self.förnamnEntry = Entry(self.bottomFrame, textvariable=self.förnamn)
  142. self.förnamnEntry.grid(row=0, column=1)
  143. self.efternamnEntry = Entry(self.bottomFrame, textvariable=self.efternamn)
  144. self.efternamnEntry.grid(row=1, column=1)
  145. self.telefonnummerEntry = Entry(self.bottomFrame, textvariable=self.telefonnummer)
  146. self.telefonnummerEntry.grid(row=2, column=1)
  147. self.personnummerEntry = Entry(self.bottomFrame, textvariable=self.personnummer)
  148. self.personnummerEntry.grid(row=3, column=1)
  149. self.adressEntry = Entry(self.bottomFrame, textvariable=self.adress)
  150. self.adressEntry.grid(row=4, column=1)
  151. self.postnummerNoEntry = Entry(self.bottomFrame, textvariable=self.postnummer)
  152. self.postnummerNoEntry.grid(row=5, column=1)
  153. self.stadEntry = Entry(self.bottomFrame, textvariable=self.stad)
  154. self.stadEntry.grid(row=6, column=1)
  155.  
  156. #metod för att spara till en textfil
  157. def saveToFile(self):
  158. toFile = open("personinfo.txt", "a")
  159. toFile.write(self.förnamn.get() + " " + self.efternamn.get() + self.personnummer.get() + " \n")
  160. toFile.close()
  161.  
  162. #sparar info till databasen
  163. self.förnamn.set = ""
  164. self.efternamn.set = ""
  165. self.personnummer.set = ""
  166. try:
  167. with db.cursor() as cursor:
  168. sql = "INSERT INTO personinfo(förnamn, efternamn, telefonnummer, personnummer, adress, postnummer, stad) VALUES " \
  169. "('{}', '{}', '{}', '{}', '{}', '{}', '{}')".format(self.förnamn.get(), self.efternamn.get(), self.telefonnummer.get(), self.personnummer.get(), self.adress.get(), self.postnummer.get(), self.stad.get())
  170.  
  171. cursor.execute(sql)
  172. db.commit()
  173. except:
  174. db.rollback()
  175. print("Hoppsan, något blev visst fel!")
  176.  
  177. #rutan talar om att personen blev sparad till registret
  178. MsgBox.showinfo("Sparat", "Personen är sparad i registret!")
  179.  
  180. #rutan inehåller info om programmet och är kopplad till "Information"-knappen
  181. def showInfo(self):
  182. MsgBox.showinfo("Programinfo", "All rights reserved. © www.personinfo.se 2017")
  183.  
  184. #metod för att söka efter en person
  185. def search(self):
  186. self.bottomFrame.destroy()
  187. self.bottomFrame = Frame(root)
  188. self.bottomFrame.pack()
  189.  
  190. sökruta = Label(self.bottomFrame, text="Förnamn")
  191. sökruta.grid(row=0, column=0, sticky=E)
  192. self.förnamnEntry = Entry(self.bottomFrame, textvariable=self.förnamn)
  193. self.förnamnEntry.grid(row=0, column=1)
  194.  
  195. self.searchknapp = Button(self.bottomFrame, text="Sök", command = lambda:self.searchDB(self.förnamnEntry.get()))
  196. self.searchknapp.grid(row=1, column=1)
  197.  
  198. #söker igenom databasen efter förnamnet som skrevs in
  199. def searchDB(self, fnamn):
  200.  
  201. sql = "SELECT * FROM personinfo WHERE förnamn = '{}'".format(fnamn)
  202.  
  203. try:
  204. cursor = db.cursor()
  205. cursor.execute(sql)
  206. results = cursor.fetchall()
  207. # Visa först print(result)
  208. MsgBox.showinfo("Lyckades", "Personen hittades!")
  209. print("Förnamn".ljust(30) + "Efternamn".ljust(7) + "Telefonnummer".ljust(15) + "Personnummmer".ljust(15) + "Adress".ljust(15) + "Postnummer".ljust(15) + "Stad".ljust(15))
  210. for row in results:
  211. print(row[0].ljust(30), row[1].ljust(7), row[2].ljust(15), row[3].ljust(15), row[4].ljust(15), row[5].ljust(15), row[6].ljust(15))
  212. except:
  213. print("Personen du sökte kunde tyvärr inte hittas!")
  214.  
  215. if __name__ == "__main__":
  216. root = Tk()
  217. personinfo(root)
  218. root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement