--------------------------------声明:完全原创,转载请注明出处!------------------
超市账户&商品管理系统
主要功能:
用户管理系统
用户分为超级管理员和管理员和用户三种:
(1)超级管理员(相当于系统的最大BOSS,如果某个超市买了这个管理系统,超级管理员就可以专门为这个买家创建一个管理员账号):
a. 账号只有一个并且是固定的
b. 用户名:admin 默认密码:admin
c. 用户名不可以更改,密码登录后可改
d. 超级管理员创建、删除和查看管理员信息
(2)管理员(相当于某家超市的老板,可以给超市的相关工作人员创建账号)
a. 可以修改自己的密码
b. 创建、删除和查看用户信息
c. 对用户进行授权(权限主要包括:商品的查看权限、删除权限、修改权限、增加权限)
d. 对该超市的所有的商品拥有所有的权限
( 3 ) 用户(相当于某家超市的所有员工,不同员工会被分配不同的权限,但都有售卖权限)
商品管理系统
(1)超市进货入库功能
(2)超市售货功能
(3)点货功能
注意:a. 通一个管理员创建的用户,管理的是同一个超市的商品,数据应该同步
b. 所有数据都需要做数据持久化
c. 实现功能的时候需要考虑人性化问题,比如:手机号需要做合法化的检验
需求分析
运用面向对象的编程思想,结合文件操作对账户和所有商品信息进行数据持久化(使用pickle模块,保存的数据类型是对象,方便调用各种方法)。其中所有账户信息保存在同一个文件内,不同管理员(不同的超市的老板)拥有自己的专属的保存商品的文件,自己以及下面的员工对商品的操作都是对这同一个文件操作。部分效果图如下,所有功能测试可用。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
代码
import pickle # 导入pickle模块,方便数据持久化
all_users = [] # 本列表临时存放(指存放在内存)所有账户信息 超管等级为0 普管等级为 1 店员等级为 2
admin_goods = [] # 本列表临时存放管理员(该超市)对应的货物信息,登录不同的账号只会打开该超市对应的货物文件
class Goods: # 货物类
def __init__(self, id: int, name: str, price: float, amount: int):
self.id = id # 商品货号
self.name = name # 品名
self.price = price # 价格
self.amount = amount # 数量
def __str__(self): # 重写方法,方便打印
return '货号:{},品名:{},价格:{}元,数量:{}'.format(self.id, self.name, self.price, self.amount)
class ShopManager: # 店员类
def __init__(self, user_name:str, pass_wd:str,permission:int,authorization:int, belong:str): # belong 属于哪个管理员
if user_name == 'admin':
print('不可使用超管账户名!')
else:
self.user_name = user_name # 用户名
self.pass_wd = pass_wd # 密码
self.permission = permission # 账号等级 0:超管 1:普管 2:店员
# 商品权限数字:查看0001 删除0010 修改0100 增加1000 通过按位与运算来验证权限
self.authorization = authorization
self.belong = belong # 该店员属于哪个管理员(哪家超市)
def __str__(self): # 重写方法,方便打印
return '店员账户:{},密码:{},等级:{},权限数字:{}'.format(self.user_name, self.pass_wd, self.permission,self.authorization)
def view_goods(self): # 查看商品(点货)
# 验证权限
if self.authorization & 0b0001 == 0b0001:
for item in admin_goods:
print(item)
else:
print('很抱歉,你没有商品查看权限!')
def del_goods(self): # 删除商品