py mysql结合面向对象,实现类似超市导购机器的功能【2.用户登录及注册功能】
py mysql结合面向对象,实现类似超市导购机器的功能(自我总结)
需优化:
1.目前只能通过is_login判断当前用户,如果有多个用户的is_login为1,代码会报错
2.没有实现在线购物的操作
3.后期优化为可视化的窗口
步骤2:
编写主类 ,将登录和注册两个功能分写到两个.py文件中,再根据选择类型调用方法:from 类 import 方法
主类 run():
class prac01(object): def __init__(self): # 创建connect连接 self.conn = connect(host='localhost', port=3306, user='root', password='zhouyl1992', database='jingdong', charset='utf8') self.cs1 = self.conn.cursor() def __del__(self): # 关闭连接 self.cs1.close() self.conn.close() 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('操作类型错误,请重新输入') def main(): p = prac01() p.run() if __name__ == '__main__': main()
注册 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:
登陆时需判断:用户名是否存在,若存在,输入的密码是否匹配
登陆成功后,显示主菜单目录,选择模块进行操作;
登陆成功后,将customers表中用户名对应的is_login字段值强行修改为1,表示已登录,用于后面检测当前使用的用户
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()
----------END

浙公网安备 33010602011771号