py mysql結合面向物件,實現類似超市導購機器的功能【2.使用者登入及註冊功能】
阿新 • • 發佈:2020-08-14
py mysql結合面向物件,實現類似超市導購機器的功能(自我總結)
步驟2:
編寫主類 ,將登入和註冊兩個功能分寫到兩個.py檔案中,再根據選擇型別呼叫方法:from 類 import 方法
主類 run():
def run(self): while True: print('-----選單-----') print('1.使用者登入') print('2.使用者註冊') print('3.退出') num = input('請輸入操作型別:')if num == '1': _login = customer_logined() _login.run() elif num == '2': _resigned=customer_resigned() _resigned.run() elif num == '3': break else: print('操作型別錯誤,請重新輸入')
註冊 customer_resigned:
註冊時需判斷:使用者名稱是否已存在,是否為空;密碼是否為空;其他欄位為空時需要設定空值(應該還有其他方法,但是目前只會這樣處理);超出長度限制時報警
註冊成功後,顯示登陸頁,需要自行登入
def run(self): while True: is_exists = False print('-----使用者註冊-----') re_name = input('使用者名稱:') re_address = input('住址:') re_tel = input('聯絡方式:') re_psw = input('密碼:') if re_address.__len__() > 100: print('地址長度不能超過100') elif re_address.__len__() == 0: re_address = None if re_tel.__len__() > 11: print('手機號碼長度錯誤') elif re_tel.__len__() == 0: re_tel = None self.cs1.execute('select name from customers') for temp in self.cs1.fetchall(): if re_name in temp: is_exists = True if re_name.__len__() == 0 or re_name.__len__() > 30: print('使用者名稱長度不能超過30且不能為空') elif re_psw.__len__() == 0: print('密碼不能為空') elif is_exists == True: print('使用者名稱已存在') else: params = [re_name, re_address, re_tel, re_psw] sql2 = """insert into customers values (default,%s,%s,%s,%s,default)""" count = self.cs1.execute(sql2, params) self.conn.commit() print('使用者註冊成功,請登入...') _logined = customer_logined() _logined.run()
登陸 customer_logined:
登陸時需判斷:使用者名稱是否存在,若存在,輸入的密碼是否匹配
登陸成功後,顯示主選單目錄,選擇模組進行操作
def run(self): print('-----使用者登入-----') l_name = input('登入名:') l_psw = input('密碼:') # 判斷使用者名稱是否存在 sql1 = 'select * from customers where name = %s' count1 = self.cs1.execute(sql1, l_name) # print(count1) # 判斷密碼是否正確 params = [l_name, l_psw] sql2 = 'select * from customers where name=%s and password=%s' count2 = self.cs1.execute(sql2, params) # print(count2) if count1 == 0: print('使用者名稱不存在') elif count1 != 0 and count2 == 0: print('密碼錯誤') else: sql="""update customers set is_login=1 where name=%s""" count=self.cs1.execute(sql,l_name) # print(count) self.conn.commit() print('使用者登入成功,歡迎您,%s' % l_name) g_items=goods_items() g_items.run()