一.首先是用户属性的类

class account(object):# 储存用户信息的类def __init__(self, id1, name, tel, money):self.id = id1# 账户self.name = name# 姓名self.tel = tel# 电话self.money = money# 余额def __str__(self):return f'{self.id},{self.name},{self.tel},{self.money}'

二.然后就是整个管理类

1.储存信息的列表

def __init__(self):self.users_list = []# 储存信息的列表

2.各个功能的选择部分函数,使用到的函数在下面都会有介绍

def function(self):"""调用各个函数的函数"""# 函数的说明文档,一般用来记录函数的作用self.load_users()# 将文件里的信息读取出来while True:self.show_menu()menu_num = int(input('请输入需要的功能序号'))if menu_num == 1:self.add_users()elif menu_num == 2:self.del_users()elif menu_num == 3:self.modify_users()elif menu_num == 4:self.query_users()elif menu_num == 5:self.show_users()elif menu_num == 6:self.save_users()elif menu_num == 7:print('感谢使用,再见')breakelse:print('输入有误,请重新输入')continue

3.展示功能菜单的函数

def show_menu(self):"""展示功能菜单"""print('1--添加用户')print('2--删除用户')print('3--修改用户')print('4--查询用户')print('5--显示所有用户')print('6--保存用户信息')print('7--退出系统')

4.添加用户信息的函数

def add_users(self):"""添加用户"""id1 = input('请输入用户账户')for i in self.users_list:# 增删改查里都有循环用来查找数据然后再进行对应操作if i.id == id1:print('输入的账户已存在!!!')returnname = input('请输入用户姓名')tel = input('请输入用户电话')money = input('请输入用户余额')user = account(id1, name, tel, money)# 将所有信息放入列表self.users_list.append(user)# 将列表追加进储存的列表

5.删除用户信息的函数

def del_users(self):"""删除用户"""del_users_id = input('请输入需要删除用户的id')for i in self.users_list:if i.id == del_users_id:self.users_list.remove(i)breakelse:print('输入的用户不存在')

6.修改用户信息的函数

def modify_users(self):"""修改用户"""modify_users_id = input('请输入需要修改用户的id')for i in self.users_list:if i.id == modify_users_id:print('已查询到用户,下面请按提示输入修改后的信息')i.name = input('姓名:')i.tel = input('电话:')i.money = input('余额:')# 找到之后对姓名、电话、余额进行更改,可以做到单项更改,但是太麻烦了,也就是加上一些if而已# 账户不做更改,做更改还要判断账户是否重复,我嫌麻烦# 想加就把上面的for循环弄下来稍微改一下就行breakelse:print('输入的用户不存在')

7.查询用户信息的函数

def query_users(self):"""查询用户"""query_users_id = input('请输入需要查询用户的id')for i in self.users_list:if i.id == query_users_id:print(f'账户:{i.id}\t姓名:{i.name}\t电话:{i.tel}\t余额:{i.money}')breakelse:print('输入的用户不存在')

8.显示所有用户信息的函数

def show_users(self):"""显示所有用户"""for i in self.users_list:print(f'账户:{i.id}\t姓名:{i.name}\t电话:{i.tel}\t余额:{i.money}')

9.保存用户信息的函数

def save_users(self):"""将信息保存"""information = open('account.dat', 'w')new_list = [i.__dict__ for i in self.users_list]# ___dict___强调储存的是静态属性information.write(str(new_list))# 以字符串形式写入information.close()# 关闭文件

10.加载文件里信息的函数

def load_users(self):"""加载信息"""try:information = open('account.dat', 'r')except:information = open('account.dat', 'w')else:# 读取数据:文件读取出的数据是字符串还原列表类型;[{}] 转换 [学员对象]data = information.read()# 字符串if len(data)!=0:# 判断读取的数据长度,如果没读到数据依旧运行下一行的代码会导致异常# 顺带着也当做优化了,没读取到也就不用运行转换循环了new_list = eval(data)self.users_list = [account(i['id'], i['name'], i['tel'], i['money']) for i in new_list]# 用循环将列表转换成字典形式finally:information.close()# 无论怎样最后都关闭文件

三.完整代码如下

class account(object):# 用户信息类def __init__(self, id1, name, tel, money):self.id = id1# 账户self.name = name# 姓名self.tel = tel# 电话self.money = money# 余额def __str__(self):return f'{self.id},{self.name},{self.tel},{self.money}'class accountmanager(object):# 管理系统类def __init__(self):self.users_list = []# 储存信息的列表def function(self):"""调用各个函数的函数"""# 函数的说明文档,一般用来记录函数的作用self.load_users()# 将文件里的信息读取出来while True:self.show_menu()menu_num = int(input('请输入需要的功能序号'))if menu_num == 1:self.add_users()elif menu_num == 2:self.del_users()elif menu_num == 3:self.modify_users()elif menu_num == 4:self.query_users()elif menu_num == 5:self.show_users()elif menu_num == 6:self.save_users()elif menu_num == 7:print('感谢使用,再见')breakelse:print('输入有误,请重新输入')continuedef show_menu(self):"""展示功能菜单"""print('1--添加用户')print('2--删除用户')print('3--修改用户')print('4--查询用户')print('5--显示所有用户')print('6--保存用户信息')print('7--退出系统')def add_users(self):"""添加用户"""id1 = input('请输入用户账户')for i in self.users_list:# 增删改查里都有循环用来查找数据然后再进行对应操作if i.id == id1:print('输入的账户已存在!!!')returnname = input('请输入用户姓名')tel = input('请输入用户电话')money = input('请输入用户余额')user = account(id1, name, tel, money)# 将所有信息放入列表self.users_list.append(user)# 将列表追加进储存的列表def del_users(self):"""删除用户"""del_users_id = input('请输入需要删除用户的id')for i in self.users_list:if i.id == del_users_id:self.users_list.remove(i)breakelse:print('输入的用户不存在')def modify_users(self):"""修改用户"""modify_users_id = input('请输入需要修改用户的id')for i in self.users_list:if i.id == modify_users_id:print('已查询到用户,下面请按提示输入修改后的信息')i.name = input('姓名:')i.tel = input('电话:')i.money = input('余额:')# 找到之后对姓名、电话、余额进行更改,可以做到单项更改,但是太麻烦了,也就是加上一些if而已# 账户不做更改,做更改还要判断账户是否重复,我嫌麻烦# 想加就把上面的for循环弄下来稍微改一下就行breakelse:print('输入的用户不存在')def query_users(self):"""查询用户"""query_users_id = input('请输入需要查询用户的id')for i in self.users_list:if i.id == query_users_id:print(f'账户:{i.id}\t姓名:{i.name}\t电话:{i.tel}\t余额:{i.money}')breakelse:print('输入的用户不存在')def show_users(self):"""显示所有用户"""for i in self.users_list:print(f'账户:{i.id}\t姓名:{i.name}\t电话:{i.tel}\t余额:{i.money}')def load_users(self):"""加载信息"""try:information = open('account.dat', 'r')except:information = open('account.dat', 'w')else:# 读取数据:文件读取出的数据是字符串还原列表类型;[{}] 转换 [学员对象]data = information.read()# 字符串if len(data)!=0:# 判断读取的数据长度,如果没读到数据依旧运行下一行的代码会导致异常# 顺带着也当做优化了,没读取到也就不用运行转换循环了new_list = eval(data)self.users_list = [account(i['id'], i['name'], i['tel'], i['money']) for i in new_list]# 用循环将列表转换成字典形式finally:information.close()# 无论怎样最后都关闭文件def save_users(self):"""将信息保存"""information = open('account.dat', 'w')new_list = [i.__dict__ for i in self.users_list]# ___dict___强调储存的是静态属性information.write(str(new_list))# 以字符串形式写入information.close()# 关闭文件account_manager = accountmanager()# 创建类account_manager.function()# 运行系统