目录
一.项目概述
二.文件结构
三.结果截屏
四.遇到问题和解决措施
五.源代码
项目介绍
设计题目:超市管理系统。
主要实现功能:管理员登录,增加商品,存储商品,修改商品,显示所有商品,用户注册和登录,查询商品,购买商品。
图1:超市管理系统流程图
总共写了5个文件。
文件一work.py:用户可以输入身份选择作为管理员或普通用户登录。根据不同的身份,系统提供相应的功能。
文件二goods.py:初始化商品对象。
文件三manager.py:定义了一个名为Manager的类,用于实现超市商品管理系统的管理员功能,对超市商品的增删改查等管理操作。这个类具有以下主要方法:管理员登录login(),展示管理员功能selectManageCode(),查询并打印所有商品信息queryAllGoods(),添加商品addGoods(),删除商品deleteGoods(),修改商品价格modifyGoods()。
文件四user.py:初始化用户对象。
文件五userfun.py:定义了一个用户功能类,主要用于处理超市系统中普通用户的操作,包括商品查询、购买流程管理等。这个类具有以下主要方法:显示用户功能user_option(),注册新用户register(),让用户决定是否进行新用户注册selectRegister(),查询某件商品 findGoodsById(),购买商品并添加至购物车buyGoods()。
图2
图3
图5
问题1:TypeError: 'str' object is not callable
解决措施:在格式化字符串时犯了一个错误。问题在于打印商品列表时忘记添加% 操作符。
问题2:TypeError: 'set' object is not subscriptable
解决措施:当尝试从 self.goodlist 中获取最后一个商品时,报错提示 'set' object is not subscriptable。这是因为在创建 Manager 实例时将 goodlist 初始化为了一个集合(set),而在 Python 中集合是不可通过索引访问其元素的。为了解决这个问题,我在初始化 Manager 时传入的是列表(list)而不是集合(set)。
问题3:TypeError: must be real number, not str
解决措施:在 queryAllGoods 方法中,当遍历 self.goodlist 并打印商品信息时,错误提示是因为有一个商品的价格不是数字类型而是字符串类型。这可能是因为在添加商品时,尽管已经使用了 try-except 语句来确保输入的商品价格为数字类型,但是在某些情况下,它没有正确地将用户输入转换为浮点数。为了解决这个问题,我再次检查了 addGoods 方法中的 goodprice 变量是否始终被成功转换为浮点数。
问题4:TypeError: UserFun.init() takes 1 positional argument but 2 were given
解决措施:在 UserFun 类中定义了两个 __init__ 方法,当实例化 UserFun 类时,Python 不知道该调用哪个初始化方法。同时,第一个 __init__ 方法接收一个参数 goodlist,而第二个 __init__ 方法不接收任何参数。为了解决该问题,需要将这两个初始化方法合并成一个,并确保它能正确处理商品列表和用户列表。
work.py
goods.py
manager.py
user.py
userFun.py