Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2016
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 18.11 KB | None | 0 0
  1. #########################
  2. ## Opdracht 2 Blok 3 ##
  3. ## IF3 ##
  4. ## Sander Leurs, Mike Vromen ##
  5. #########################
  6. import os
  7. import pymssql
  8.  
  9. menu_keuze = True
  10. #Connectie maken Python <> SQL
  11. def connect_sql():
  12. global conn
  13. conn = pymssql.connect(server='.', user='IF3', password='IF3_VB', database='IF3_TENNIS')#, port = 1433)# port nummer van belang omdat ik een instantie heb aangemaakt waardoor default poort 1433 is aangepast!
  14. # Om poortnummer te achterhalen zie handleiding "Bepaal SQL poort nummer.docx"
  15. print("Connected to DB")
  16.  
  17. #Disconnect Python <> SQL
  18. def disconnect_sql():
  19. conn.close()
  20.  
  21. #Vraag 1 - Toevoegen van een speler
  22. def insert_speler():
  23. os.system('cls')
  24. spelersnummer = ''
  25. spelersnaam = ''
  26. spelervoor = ''
  27. spelergebdatum = ''
  28. spelergeslacht = ''
  29. spelerjaartoe = ''
  30. spelerstraat = ''
  31. spelerhuisnr = ''
  32. spelerpostcode = ''
  33. spelerplaats = ''
  34. spelertelefoon = ''
  35. spelerbondnmr = ''
  36.  
  37. print("---------------- TOEVOEGEN VAN SPELER --------------------")
  38. while spelersnummer == '' or spelersnaam == '' or spelervoor == '' or spelergebdatum == '' or spelergeslacht == '' or spelerjaartoe == '' or spelerstraat == '' or spelerhuisnr == '' or spelerpostcode == '' or spelerplaats == '' or spelertelefoon == '' or spelerbondnmr == '':
  39. spelersnummer = input("Spelers Nummer: ")
  40. spelersnaam = input("Spelers Naam: ")
  41. spelervoor = input("Spelers Voorletter: ")
  42. spelergebdatum = input ("Geboorte datum? --jaar-mn-dg--: ")
  43. spelergeslacht = input ("M of V ?: ")
  44. spelerjaartoe = input ("Jaar van toetreden?: ")
  45. spelerstraat = input ("Straat naam?: ")
  46. spelerhuisnr = input ("Huis nummer?: ")
  47. spelerpostcode = input ("Postcode?--1234AB--: ")
  48. spelerplaats = input ("Plaats naam?: ")
  49. spelertelefoon = input ("Telefoon nummer?: ")
  50. spelerbondnmr = input ("Bond nummer?: ")
  51. if spelersnummer == '' or spelersnaam == '' or spelervoor == '' or spelergebdatum == '' or spelergeslacht == '' or spelerjaartoe == '' or spelerstraat == '' or spelerhuisnr == '' or spelerpostcode == '' or spelerplaats == '' or spelertelefoon == '' or spelerbondnmr == '':
  52. print('Alles invullen A.U.B.')
  53. data = (spelersnummer, spelersnaam, spelervoor, spelergebdatum, spelergeslacht, spelerjaartoe,spelerstraat,spelerhuisnr,spelerpostcode,spelerplaats,spelertelefoon,spelerbondnmr)
  54. cursor = conn.cursor()
  55. cursor.execute('INSERT INTO SPELER (spelersnr,naam,voorletters,geb_datum,geslacht,jaartoe,straat,huisnr,postcode,plaats,telefoon,bondsnr) VALUES(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)', data)
  56. conn.commit()
  57.  
  58. #Vraag 2 - Lijst van spelers
  59. def show_spelers():
  60. os.system('cls')
  61. print("---------------- OVERZICHT spelers --------------------")
  62. cursor = conn.cursor()
  63. cursor.execute('SELECT NAAM,VOORLETTERS,GEB_DATUM,GESLACHT,PLAATS FROM SPELER ORDER BY naam ASC')
  64. row = cursor.fetchone()
  65. headers = ("Achternaam","Voorletters","Geb_datum","Geslacht","Plaats")
  66. print("--------------------------------------------------------------------")
  67. print("| %-13s | %-12s | %-10s | %-8s | %-10s|"%(headers[0], headers[1], headers[2], headers[3], headers[4]))
  68. print("--------------------------------------------------------------------")
  69. while row:
  70. print("--------------------------------------------------------------------")
  71. print("| %-13s | %-12s | %-10s | %-8s | %-10s|"%(row[0], row[1], row[2], row[3], row[4]))
  72. row = cursor.fetchone()
  73. print("--------------------------------------------------------------------")
  74.  
  75. #Vraag 3 - Lijst van speler met input voor plaats
  76. def show_speler_plaatsnaam():
  77. os.system('cls')
  78. print("---------------- OVERZICHT spelers met input plaats --------------------")
  79. print("LET OP !!! De plaatsnaam moet PRECIES overeenkomen met de plaatsnamen in de database")
  80. cursor = conn.cursor()
  81. plaatsnaam = input("Voer een plaatsnaam in: ")
  82. print("\n")
  83. cursor.execute("SELECT NAAM, VOORLETTERS, GEB_DATUM, GESLACHT, PLAATS FROM SPELER WHERE PLAATS='%s'" % plaatsnaam)
  84. row = cursor.fetchone()
  85. headers = ("Naam","Voorletters","Geb_datum","Geslacht","Plaats")
  86. print("--------------------------------------------------------------------")
  87. print("| %-13s | %-12s | %-10s | %-8s | %-10s|"%(headers[0], headers[1], headers[2], headers[3], headers[4]))
  88. print("--------------------------------------------------------------------")
  89. while row:
  90. print("--------------------------------------------------------------------")
  91. print("| %-13s | %-12s | %-10s | %-8s | %-10s|"%(row[0], row[1], row[2], row[3], row[4]))
  92. row = cursor.fetchone()
  93. print("--------------------------------------------------------------------")
  94.  
  95. #Vraag 4 - Lijst van spelers jonger dan 18 jaar met hun woonplaats
  96. def show_speler_junior():
  97. os.system('cls')
  98. print("---------------- OVERZICHT spelers jonger dan 18 jaar --------------------")
  99. cursor = conn.cursor()
  100. cursor.execute('SELECT NAAM,VOORLETTERS,GEB_DATUM,GESLACHT,PLAATS FROM SPELER WHERE DATEDIFF(YEAR,GEB_DATUM,GETDATE()) <= 18 ORDER BY naam ASC')
  101. row = cursor.fetchone()
  102. headers = ("Achternaam","Voorletters","Geb_datum","Geslacht","Plaats")
  103. print("--------------------------------------------------------------------")
  104. print("| %-13s | %-12s | %-10s | %-8s | %-10s|"%(headers[0], headers[1], headers[2], headers[3], headers[4]))
  105. print("--------------------------------------------------------------------")
  106. while row:
  107. print("--------------------------------------------------------------------")
  108. print("| %-13s | %-12s | %-10s | %-8s | %-10s|"%(row[0], row[1], row[2], row[3], row[4]))
  109. row = cursor.fetchone()
  110. print("--------------------------------------------------------------------")
  111.  
  112. #Vraag 5 - Lijst van mensen met een boete hoger dan het gemiddelde boete bedrag
  113. def show_speler_gem_boete():
  114. os.system('cls')
  115. print("---------------- OVERZICHT spelers met hoger dan gem. boete bedrag --------------------")
  116. cursor = conn.cursor()
  117. cursor.execute('SELECT S.NAAM, S.VOORLETTERS, B.BEDRAG FROM SPELER S JOIN BOETE B on S.SPELERSNR = B.SPELERSNR WHERE B.BEDRAG > (SELECT AVG(BEDRAG) FROM BOETE)')
  118. row = cursor.fetchone()
  119. headers = ("Achternaam","Voorletters","Boete")
  120. print("--------------------------------------------")
  121. print("| %-13s | %-12s | %-10s|"%(headers[0], headers[1], headers[2]))
  122. print("--------------------------------------------")
  123. while row:
  124. print("--------------------------------------------")
  125. print("| %-13s | %-12s | %-10s|"%(row[0], row[1], row[2]))
  126. row = cursor.fetchone()
  127. print("--------------------------------------------")
  128.  
  129. #Vraag 6 - Lijst van mensen met een boete hoger dan het gemiddelde boete bedrag dmv input
  130. def show_speler_boete_input():
  131. os.system('cls')
  132. print("---------------- OVERZICHT spelers met hoger dan input bedrag --------------------")
  133. cursor = conn.cursor()
  134. BoeteInput = input("Wat is het minimaale boete bedrag?: ")
  135. cursor.execute("SELECT S.NAAM, S.VOORLETTERS, B.BEDRAG FROM SPELER S JOIN BOETE B on S.SPELERSNR = B.SPELERSNR WHERE B.BEDRAG > '%s'" % BoeteInput)
  136. row = cursor.fetchone()
  137. headers = ("Achternaam","Voorletters","Boete")
  138. print("--------------------------------------------")
  139. print("| %-13s | %-12s | %-10s|"%(headers[0], headers[1], headers[2]))
  140. print("--------------------------------------------")
  141. while row:
  142. print("--------------------------------------------")
  143. print("| %-13s | %-12s | %-10s|"%(row[0], row[1], row[2]))
  144. row = cursor.fetchone()
  145. print("--------------------------------------------")
  146.  
  147. #Vraag 7 - Lijst van telefoon nummers van het actieve bestuur
  148. def show_tel_bestuur():
  149. os.system('cls')
  150. print("---------------- OVERZICHT van de telefoonnummers van het actieve bestuur --------------------")
  151. cursor = conn.cursor()
  152. cursor.execute('SELECT S.Naam, S.VOORLETTERS, F.FUNCTIENAAM, S.TELEFOON FROM BESTUURSLID B JOIN SPELER S on B.SPELERSNR = S.SPELERSNR JOIN FUNCTIE F on B.FUNCTIE = F.FUNCTIENR WHERE B.EIND_DATUM is NULL')
  153. row = cursor.fetchone()
  154. headers = ("Achternaam","Voorletters","Functie","Telefoonnummer")
  155. print("--------------------------------------------------------------------")
  156. print("| %-13s | %-12s | %-15s | %-15s |"%(headers[0], headers[1], headers[2], headers[3]))
  157. print("--------------------------------------------------------------------")
  158. while row:
  159. print("--------------------------------------------------------------------")
  160. print("| %-13s | %-12s | %-15s | %-15s |"%(row[0], row[1], row[2], row[3]))
  161. row = cursor.fetchone()
  162. print("--------------------------------------------------------------------")
  163.  
  164. #Vraag 8 - Lijst van aantal leden per plaats
  165. def show_aantal_leden_plaats():
  166. os.system('cls')
  167. print("---------------- OVERZICHT van de aantal leden per plaats--------------------")
  168. cursor = conn.cursor()
  169. cursor.execute('SELECT COUNT(S.NAAM),S.PLAATS FROM SPELER S WHERE S.PLAATS is not NULL GROUP BY S.PLAATS')
  170. row = cursor.fetchone()
  171. headers = ("Aantal leden","Plaats")
  172. print("--------------------------------")
  173. print("| %-13s | %-12s |"%(headers[0], headers[1]))
  174. print("--------------------------------")
  175. while row:
  176. print("--------------------------------")
  177. print("| %-13s | %-12s |"%(row[0], row[1]))
  178. row = cursor.fetchone()
  179. print("--------------------------------")
  180.  
  181. #Vraag 9 - Lijst van de aanvoerder het teamnummer en het totaal boetes per team
  182. def show_aanvoerder_teamnr_boete():
  183. os.system('cls')
  184. print("---------------- OVERZICHT van de aanvoerder, teamnummer en het totaal boetes per team--------------------")
  185. cursor = conn.cursor()
  186. cursor.execute("SELECT (SELECT S.NAAM FROM SPELER S WHERE S.SPELERSNR = (SELECT TS.SPELERSNR FROM TEAMSPELER TS WHERE TS.AANVOERDER = 'J' AND TS.TEAMNR = T.TEAMNR)) AS AANVOERDER,T.TEAMNAAM, SUM(B.BEDRAG) TOTAAL FROM BOETE B JOIN TEAMSPELER TS ON TS.SPELERSNR = B.SPELERSNR JOIN TEAM T ON T.TEAMNR = TS.TEAMNR GROUP BY TS.TEAMNR, T.TEAMNAAM, T.TEAMNR")
  187. row = cursor.fetchone()
  188. headers = ("Aanvoerder","Teamnaam","Totaal boete")
  189. print("----------------------------------------------------------")
  190. print("| %-13s | %-20s | %-15s'|"%(headers[0], headers[1], headers[2]))
  191. print("----------------------------------------------------------")
  192. while row:
  193. print("---------------------------------------------------------")
  194. print("| %-13s | %-20s | %-15s|"%(row[0], row[1], row[2]))
  195. row = cursor.fetchone()
  196. print("---------------------------------------------------------")
  197.  
  198. #Vraag 10 - Lijst van de aanvoerder het teamnummer en het totaal boetes per team
  199. def show_bestuurs_boete():
  200. os.system('cls')
  201. print("---------------- OVERZICHT van de bestuursleden met een boete--------------------")
  202. cursor = conn.cursor()
  203. cursor.execute("SELECT S.VOORLETTERS, S.NAAM, S.GESLACHT, B.BEDRAG FROM SPELER S JOIN BOETE B ON B.SPELERSNR = S.SPELERSNR JOIN (SELECT DISTINCT SPELERSNR FROM BESTUURSLID) BS ON BS.SPELERSNR = S.SPELERSNR GROUP BY S.SPELERSNR, S.VOORLETTERS, S.NAAM, S.GESLACHT, B.BEDRAG")
  204. row = cursor.fetchone()
  205. headers = ("Voorletters","Achternaam","Geslacht","Boete")
  206. print("------------------------------------------------------")
  207. print("| %-13s | %-12s | %-10s| %-8s|"%(headers[0], headers[1], headers[2], headers[3]))
  208. print("------------------------------------------------------")
  209. while row:
  210. print("------------------------------------------------------")
  211. print("| %-13s | %-12s | %-10s| %-8s|"%(row[0], row[1], row[2], row[3]))
  212. row = cursor.fetchone()
  213. print("------------------------------------------------------")
  214.  
  215. #Vraag 11 - Lijst van alle bestuursleden die een x aantal boeten of meer hebben x = input
  216. def show_speler_aantal_boete_input():
  217. os.system('cls')
  218. print("---------------- OVERZICHT van de bestuursleden die een x aantal boetes of meer hebben --------------------")
  219. cursor = conn.cursor()
  220. AantalInput = input("Wat is het minimaale aantal boetes?: ")
  221. cursor.execute("SELECT S.NAAM, S.VOORLETTERS, count(*) as Aantal FROM SPELER S JOIN BOETE B ON B.SPELERSNR = S.SPELERSNR JOIN (SELECT DISTINCT SPELERSNR FROM BESTUURSLID) BS ON BS.SPELERSNR = S.SPELERSNR GROUP BY S.SPELERSNR, S.VOORLETTERS, S.NAAM, S.GESLACHT HAVING COUNT(*) >= '%s';" % AantalInput)
  222. row = cursor.fetchone()
  223. headers = ("Achternaam","Voorletters","Aantal")
  224. print("--------------------------------------------")
  225. print("| %-13s | %-12s | %-10s|"%(headers[0], headers[1],headers[2]))
  226. print("--------------------------------------------")
  227. while row:
  228. print("-------------------------------------------")
  229. print("| %-13s | %-12s |%-10s|"%(row[0], row[1],row[2]))
  230. row = cursor.fetchone()
  231. print("-------------------------------------------")
  232.  
  233. #Vraag 12 - Lijst van de bestuursleden die nu in het bestuur zitten en nog nooit een functie hebben gehad
  234. def show_bestuursleden_functie():
  235. os.system('cls')
  236. print("---------------- OVERZICHT van de bestuursleden die nu in het bestuur zitten en nog nooit een functie hebben gehad--------------------")
  237. cursor = conn.cursor()
  238. cursor.execute("SELECT S.NAAM, S.VOORLETTERS FROM BESTUURSLID B JOIN BESTUURSLID B1 on B.SPELERSNR = B1.SPELERSNR JOIN SPELER S on B.SPELERSNR = S.SPELERSNR WHERE B1.EIND_DATUM is NULL GROUP BY B.SPELERSNR, S.VOORLETTERS, S.NAAM HAVING count (*) = 1")
  239. row = cursor.fetchone()
  240. headers = ("Achternaam","Voorletters")
  241. print("--------------------------------")
  242. print("| %-13s | %-12s |"%(headers[0], headers[1]))
  243. print("--------------------------------")
  244. while row:
  245. print("--------------------------------")
  246. print("| %-13s | %-12s |"%(row[0], row[1]))
  247. row = cursor.fetchone()
  248. print("--------------------------------")
  249.  
  250. connect_sql()
  251.  
  252. while menu_keuze:
  253. os.system('cls')
  254. print ("""
  255. Wat wilt u nu doen?
  256.  
  257. 1. Speler toevoegen aan de database
  258. 2. Lijst van spelers in de database
  259. 3. Lijst van spelers wonend in woonplaats x
  260. 4. Lijst van spelers jonger dan 18 jaar
  261. 5. Lijst van spelers met een boete hoger dan de gemiddelde boete
  262. 6. Lijst van spelers met een boete hoger dan het input bedrag
  263. 7. Telefoonlijst van het actieve bestuur
  264. 8. Lijst van aantal leden per plaats
  265. 9. Lijst van aanvoerder, het teamnummer en het totaal boete bedrag per team
  266. 10. Lijst van alle bestuursleden die een boete hebben
  267. 11. Lijst van alle bestuursleden die een x aantal boetes of meer hebben
  268. 12. Lijst van de bestuursleden die nu in het bestuur zitten en nog nooit een functie hebben gehad
  269.  
  270. 0. Disconnect SQL en sluit dit script af
  271. """)
  272. menu_keuze = input("Wat wilt u doen?: ")
  273. if menu_keuze == "1":
  274. os.system('cls')
  275. speler_toevoegen = input("Wilt u een nieuwe speler toevoegen (J/N): ")
  276. if speler_toevoegen.upper() == "J":
  277. insert_speler()
  278. input ("\nDruk op enter om terug te gaan naar het menu.")
  279.  
  280. elif menu_keuze == "2":
  281. show_spelers()
  282. input ("\nDruk op enter om terug te gaan naar het menu.")
  283.  
  284. elif menu_keuze == "3":
  285. show_speler_plaatsnaam()
  286. input ("\nDruk op enter om terug te gaan naar het menu.")
  287.  
  288. elif menu_keuze == "4":
  289. show_speler_junior()
  290. input ("\nDruk op enter om terug te gaan naar het menu.")
  291.  
  292. elif menu_keuze == "5":
  293. show_speler_gem_boete()
  294. input ("\nDruk op enter om terug te gaan naar het menu.")
  295.  
  296. elif menu_keuze == "6":
  297. show_speler_boete_input()
  298. input ("\nDruk op enter om terug te gaan naar het menu.")
  299.  
  300. elif menu_keuze == "7":
  301. show_tel_bestuur()
  302. input ("\nDruk op enter om terug te gaan naar het menu.")
  303.  
  304. elif menu_keuze == "8":
  305. show_aantal_leden_plaats()
  306. input ("\nDruk op enter om terug te gaan naar het menu.")
  307.  
  308. elif menu_keuze == "9":
  309. show_aanvoerder_teamnr_boete()
  310. input ("\nDruk op enter om terug te gaan naar het menu.")
  311.  
  312. elif menu_keuze == "10":
  313. show_bestuurs_boete()
  314. input ("\nDruk op enter om terug te gaan naar het menu.")
  315.  
  316. elif menu_keuze == "11":
  317. show_speler_aantal_boete_input()
  318. input ("\nDruk op enter om terug te gaan naar het menu.")
  319.  
  320. elif menu_keuze == "12":
  321. show_bestuursleden_functie()
  322. input ("\nDruk op enter om terug te gaan naar het menu.")
  323.  
  324. elif menu_keuze == "0":
  325. os.system('cls')
  326. input ("Bedankt voor het gerbuiken van dit script !")
  327. disconnect_sql()
  328. raise SystemExit
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement