Advertisement
Guest User

Untitled

a guest
Apr 6th, 2019
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.08 KB | None | 0 0
  1. import json
  2. from tkinter import *
  3. import os
  4. import time
  5.  
  6. USER = False
  7. fonts = 100
  8. name_shop = ['blank','asdasda','asddasb','casd','dasdasd']
  9. number_shop = len(name_shop)
  10. list_shop = ['blank']
  11.  
  12. def display(text):
  13. roots = Tk()
  14. roots.title(' ')
  15. roots.geometry('250x50')
  16. rlbl = Label(roots, text='\n'+str(text), font=fonts)
  17. rlbl.pack()
  18.  
  19. class user():
  20. def __init__(self, login=True):
  21. self.username = False
  22. self.password = False
  23. self.rank = False
  24. if login:
  25. if not os.path.exists('login'):
  26. self.signup()
  27. else:
  28. self.login()
  29.  
  30. def signup(self):
  31. global roote
  32. global nameE
  33. global pwordE
  34. global pwordE1
  35. global rank
  36.  
  37. root.destroy()
  38. roote = Tk()
  39. roote.title('Signup')
  40. rank = IntVar()
  41.  
  42. intruction = Label(roote, text='Sign up\n', font=fonts)
  43. intruction.grid(columnspan=2)
  44.  
  45. nameL = Label(roote, text='New Username: ', font=fonts)
  46. pwordL = Label(roote, text='New Password: ', font=fonts)
  47. pwordL1 = Label(roote, text='Confirm Password: ', font=fonts)
  48. nameL.grid(row=1, column=0)
  49. pwordL.grid(row=2, column=0)
  50. pwordL1.grid(row=3, column=0)
  51.  
  52. nameE = Entry(roote, font=fonts)
  53. pwordE = Entry(roote, show='*', font=fonts)
  54. pwordE1 = Entry(roote, show='*', font=fonts)
  55. nameE.grid(row=1, column=1)
  56. pwordE.grid(row=2, column=1)
  57. pwordE1.grid(row=3, column=1)
  58.  
  59. if os.path.exists('login'):
  60. c1 = Radiobutton(roote, text='Boss', variable=rank, value=1, font=fonts)
  61. c2 = Radiobutton(roote, text='Staff', variable=rank, value=2, font=fonts)
  62. c1.grid(row=4, column=0)
  63. c2.grid(row=4, column=1)
  64.  
  65. signupButton = Button(roote, text='Signup', command=self.write_file_signup, font=fonts)
  66. signupButton.grid(columnspan=2)
  67. roote.mainloop()
  68.  
  69. def write_file_signup(self):
  70. global rank
  71. if pwordE.get() == pwordE1.get():
  72. self.username = nameE.get()
  73. self.password = pwordE.get()
  74. if not os.path.exists('login'):
  75. self.rank = 'Master'
  76. else:
  77. if rank.get() == 1:
  78. self.rank = 'Boss'
  79. elif rank.get() == 2:
  80. self.rank = 'Staff'
  81. else:
  82. self.Invalid_sign_up()
  83. return
  84.  
  85. with open('login') as file:
  86. data = file.readlines()[0].split('$')
  87. data = data[:len(data)-1]
  88. for each in data:
  89. uname, pword, _ = each.split('|')
  90. if nameE.get() == uname:
  91. self.Invalid_sign_up()
  92. return
  93.  
  94. with open('login', 'a+') as file:
  95. file.writelines(nameE.get()+'|'+pwordE.get()+'|'+self.rank+'$')
  96. file.close()
  97.  
  98. display('Signed up')
  99. roote.destroy()
  100. else:
  101. self.Invalid_sign_up()
  102.  
  103. def Invalid_sign_up(self):
  104. display('Invalid Sign up')
  105.  
  106. def login(self):
  107. global roota
  108. global nameEL
  109. global pwordEL
  110.  
  111. root.destroy()
  112. roota = Tk()
  113. roota.title('Login')
  114.  
  115. intruction = Label(roota, text='Please Login\n', font=fonts)
  116. intruction.grid(columnspan=2)
  117.  
  118. nameL = Label(roota, text='Username: ', font=fonts)
  119. pwordL = Label(roota, text='Password: ', font=fonts)
  120. nameL.grid(row=1)
  121. pwordL.grid(row=2)
  122.  
  123. nameEL = Entry(roota, font=fonts)
  124. pwordEL = Entry(roota, show='*', font=fonts)
  125. nameEL.grid(row=1, column=1)
  126. pwordEL.grid(row=2, column=1)
  127.  
  128. login = Button(roota, text='Login', command=self.CheckLogin, font=fonts)
  129. login.grid(columnspan=2)
  130.  
  131. def CheckLogin(self):
  132. s_login = False
  133. with open('login') as file:
  134. data = file.readlines()[0].split('$')
  135. data = data[:len(data)-1]
  136. for each in data:
  137. uname, pword, rank = each.split('|')
  138. if nameEL.get() == uname and pwordEL.get() == pword:
  139. self.username = nameEL.get()
  140. self.password = pwordEL.get()
  141. self.rank = rank
  142. display('Logged In')
  143. s_login = True
  144. roota.destroy()
  145. break
  146.  
  147. if not s_login:
  148. display('Invalid Login')
  149.  
  150.  
  151. class shop():
  152. def __init__(self, number):
  153. self.number_product = 1
  154. self.number = number
  155. self.product = []
  156. self.load_product()
  157. if not os.path.exists('shop'+str(self.number)):
  158. os.mkdir('shop'+str(self.number))
  159.  
  160. def display_product(self):
  161. global USER
  162. c = 0
  163. blank = ' '
  164. rootd = Tk()
  165.  
  166. product0 = Label(rootd, text=blank+'หมายเลข'+blank, font=fonts)
  167. product0.grid(row=c, column=0)
  168.  
  169. product1 = Label(rootd, text=blank+'ชื่อ'+blank, font=fonts)
  170. product1.grid(row=c, column=1)
  171.  
  172. if USER.rank == 'Master':
  173. product2 = Label(rootd, text=blank+'ต้นทุน'+blank, font=fonts)
  174. product2.grid(row=c, column=2)
  175.  
  176. product3 = Label(rootd, text=blank+'ราคาขาย'+blank, font=fonts)
  177. product3.grid(row=c, column=3)
  178.  
  179. for i in self.product:
  180. c += 1
  181.  
  182. product0 = Label(rootd, text=blank+str(c)+blank, font=fonts)
  183. product0.grid(row=c, column=0)
  184.  
  185. product1 = Label(rootd, text=blank+i['name']+blank, font=fonts)
  186. product1.grid(row=c, column=1)
  187.  
  188. if USER.rank == 'Master':
  189. product2 = Label(rootd, text=blank+i['cost']+blank, font=fonts)
  190. product2.grid(row=c, column=2)
  191.  
  192. product3 = Label(rootd, text=blank+i['price']+blank, font=fonts)
  193. product3.grid(row=c, column=3)
  194.  
  195. rootd.mainloop()
  196.  
  197. def load_product(self):
  198. if os.path.exists('shop'+str(self.number)+'/product'):
  199. with open('shop'+str(self.number)+'/product', 'r+') as file:
  200. self.product = json.load(file)
  201.  
  202. def change_price(self):
  203. global USER
  204. global list_price
  205. global rootf
  206.  
  207. c = 0
  208. blank = ' '
  209. rootf = Tk()
  210.  
  211. product0 = Label(rootf, text=blank+'หมายเลข'+blank, font=fonts)
  212. product0.grid(row=c, column=0)
  213.  
  214. product1 = Label(rootf, text=blank+'ชื่อ'+blank, font=fonts)
  215. product1.grid(row=c, column=1)
  216.  
  217. if USER.rank == 'Master':
  218. product2 = Label(rootf, text=blank+'ต้นทุน'+blank, font=fonts)
  219. product2.grid(row=c, column=2)
  220.  
  221. product3 = Label(rootf, text=blank+'ราคาขาย'+blank, font=fonts)
  222. product3.grid(row=c, column=3)
  223.  
  224. price = Label(rootf, text=blank+'ราคาเปลี่ยน'+blank, font=fonts)
  225. price.grid(row=c, column=4)
  226.  
  227. list_price = []
  228.  
  229. for i in self.product:
  230. c += 1
  231.  
  232. product0 = Label(rootf, text=blank+str(c)+blank, font=fonts)
  233. product0.grid(row=c, column=0)
  234.  
  235. product1 = Label(rootf, text=blank+i['name']+blank, font=fonts)
  236. product1.grid(row=c, column=1)
  237.  
  238. if USER.rank == 'Master':
  239. product2 = Label(rootf, text=blank+i['cost']+blank, font=fonts)
  240. product2.grid(row=c, column=2)
  241.  
  242. product3 = Label(rootf, text=blank+i['price']+blank, font=fonts)
  243. product3.grid(row=c, column=3)
  244.  
  245. price = Entry(rootf, font=fonts, width=10)
  246. price.grid(row=c, column=4)
  247. list_price.append(price)
  248.  
  249. submit = Button(rootf, text='Submit', command=self.change_price_, font=fonts)
  250. submit.grid(columnspan=5)
  251.  
  252. rootf.mainloop()
  253.  
  254. def change_price_(self):
  255. c = 0
  256. for i in list_price:
  257. self.product[c]['price'] = i.get()
  258. c += 1
  259.  
  260. with open('shop'+str(self.number)+'/product', 'w+') as file:
  261. json.dump(self.product, file)
  262.  
  263. display('อัพเดทสินค้าเรียบร้อย')
  264. rootf.destroy()
  265.  
  266.  
  267. for i in range(1, number_shop):
  268. list_shop.append(shop(i))
  269.  
  270. def add_product():
  271. global USER
  272. if USER.rank == 'Master' or USER.rank == 'Boss':
  273. global rootg
  274. global nameE
  275. global costE
  276.  
  277. rootg = Tk()
  278. rootg.title('Login')
  279.  
  280. intruction = Label(rootg, text='Product\n', font=fonts)
  281. intruction.grid(columnspan=2)
  282.  
  283. name = Label(rootg, text='Product\n', font=fonts)
  284. intruction.grid(column=0)
  285.  
  286. name = Label(rootg, text='ชื่อสินต้า: ', font=fonts)
  287. cost = Label(rootg, text='ต้นทุน: ', font=fonts)
  288. name.grid(row=1)
  289. cost.grid(row=2)
  290.  
  291. nameE = Entry(rootg, font=fonts)
  292. costE = Entry(rootg, font=fonts)
  293.  
  294. nameE.grid(row=1, column=1)
  295. costE.grid(row=2, column=1)
  296.  
  297. submit = Button(rootg, text='submit', command=add_product_, font=fonts)
  298. submit.grid(columnspan=2)
  299.  
  300. rootg.mainloop()
  301. else:
  302. display('อัพเดทสินค้าเฉพาะเจ้าของเท่านั้น')
  303.  
  304. def add_product_():
  305. product = {
  306. "name" : nameE.get(),
  307. "cost" : costE.get(),
  308. "price" : "NON"
  309. }
  310.  
  311. for i in range(1, number_shop):
  312. list_shop[i].product.append(product)
  313. with open('shop'+str(i)+'/product', 'w+') as file:
  314. json.dump(list_shop[i].product, file)
  315.  
  316. rootg.destroy()
  317.  
  318. def product_display():
  319. global USER
  320. if USER.rank == 'Master':
  321. blank = ' '
  322. rooth = Tk()
  323.  
  324. product0 = Label(rooth, text=blank+'หมายเลข'+blank, font=fonts)
  325. product0.grid(row=0, column=0)
  326.  
  327. product1 = Label(rooth, text=blank+'ชื่อ'+blank, font=fonts)
  328. product1.grid(row=0, column=1)
  329.  
  330. product2 = Label(rooth, text=blank+'ต้นทุน'+blank, font=fonts)
  331. product2.grid(row=0, column=2)
  332.  
  333. product3 = Label(rooth, text=blank+'ราคาขายเฉลี่ย'+blank, font=fonts)
  334. product3.grid(row=0, column=3)
  335.  
  336. for i in range(0,len(list_shop[1].product)):
  337. product0 = Label(rooth, text=blank+str(i+1)+blank, font=fonts)
  338. product0.grid(row=i+1, column=0)
  339.  
  340. product1 = Label(rooth, text=blank+list_shop[1].product[i]['name']+blank, font=fonts)
  341. product1.grid(row=i+1, column=1)
  342.  
  343. product2 = Label(rooth, text=blank+list_shop[1].product[i]['cost']+blank, font=fonts)
  344. product2.grid(row=i+1, column=2)
  345.  
  346. average_price = 0
  347. count_ = 0
  348. for j in range(1, number_shop):
  349. if list_shop[j].product[i]['price'] != 'NON':
  350. count_ += 1
  351. average_price += int(list_shop[j].product[i]['price'])
  352.  
  353. if count_ != 0:
  354. average_price /= count_
  355. average_price = round(average_price, 2)
  356. else:
  357. average_price = 'NON'
  358.  
  359. product3 = Label(rooth, text=blank+str(average_price)+blank, font=fonts)
  360. product3.grid(row=i+1, column=3)
  361.  
  362. rooth.mainloop()
  363. else:
  364. display('ดูสินค้าทั้งหมดเฉพาะเจ้าของเท่านั้น')
  365.  
  366. def stop_c_price():
  367. rootz.destroy()
  368.  
  369. def c_price():
  370. global rootz
  371. root.destroy()
  372. rootz = Tk()
  373. rootz.title('Main')
  374. rootz.geometry('250x250')
  375. rootz.configure(background='black')
  376.  
  377. variable = StringVar()
  378. variable.set('เลือกร้าน')
  379.  
  380. w = OptionMenu(rootz, variable, *name_shop[1:], command=c_price_)
  381. w.configure(width=10)
  382. w.pack(ipadx=10, ipady=10, pady=10)
  383.  
  384. close = Button(rootz, text='Close', command=stop_c_price, font=fonts, bg='red', fg='white')
  385. close.pack(pady=10)
  386.  
  387. def c_price_(shop_):
  388. for i in range(1, number_shop):
  389. if name_shop[i] == shop_:
  390. list_shop[i].change_price()
  391. break
  392.  
  393. def loggedin():
  394. global USER
  395. USER = user()
  396.  
  397. def stop1():
  398. exit(0)
  399.  
  400. def stop2():
  401. global root
  402. global USER
  403. USER.username = False
  404. USER.password = False
  405. USER.rank = False
  406. root.destroy()
  407.  
  408. USER = user(False)
  409. while True:
  410. if USER.rank == False:
  411. root = Tk()
  412. root.title('Main')
  413. root.geometry('250x250')
  414. root.configure(background='black')
  415.  
  416. login = Button(root, text='Login', command=loggedin, font=fonts)
  417. login.pack(ipadx=10, ipady=10, pady=80)
  418.  
  419. close = Button(root, text='Close', command=stop1, font=fonts, bg='red', fg='white')
  420. close.pack(pady=10)
  421.  
  422. root.mainloop()
  423.  
  424. ##################################################
  425.  
  426. if USER.rank != False:
  427. root = Tk()
  428. root.title('Main')
  429. root.geometry('250x250')
  430. root.configure(background='black')
  431.  
  432. changeprice = Button(root, text='เปลี่ยนราคาสินค้า', command=c_price, font=fonts)
  433. changeprice.pack(pady=10)
  434.  
  435. if USER.rank == 'Master':
  436. addproduct = Button(root, text='เพิ่มสินค้า', command=add_product, font=fonts)
  437. addproduct.pack(pady=10)
  438.  
  439. productdisplay = Button(root, text='ดูสินค้า', command=product_display, font=fonts)
  440. productdisplay.pack(pady=10)
  441.  
  442. newUSER = user(False)
  443. addstaffboss = Button(root, text='เพิ่มพนักงาน', command=newUSER.signup, font=fonts)
  444. addstaffboss.pack(pady=10)
  445.  
  446. logout = Button(root, text='logout', command=stop2, font=fonts, bg='red', fg='white')
  447. logout.pack(pady=10)
  448.  
  449. root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement