1. 程式人生 > 實用技巧 >py mysql結合面向物件,實現類似超市導購機器的功能【2.使用者登入及註冊功能】

py mysql結合面向物件,實現類似超市導購機器的功能【2.使用者登入及註冊功能】

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()