面向对象小项目综合练习(小二超市)

main.py

from gly import Gly
from pt import Pt
from vip import Vip
class Main(Gly,Pt,Vip):
def memu(self):
dict1 = {1: "vip用户", 2: "普通用户"}
print("****************欢迎进入小二超市******************")
for key, value in dict1.items():
print("\t\t\t\t", key, ".", value)
print("*************************************************")
num = input("选择>>>:")
if num == "1":
super(Main, self).vip_memu()
elif num == "2":
super(Main, self).pt_memu() # 进入普通用户页面
elif num.startswith("admin"):
super(Main,self).gly_memu() # 进入管理页面
m = Main("123","郭杰","123","1",0)
m.memu()

vip.py
#vip用户
from person import Person
class Vip(Person):#继承父类
def vip_memu(self):
while True:
dict1 = {1:"购物",2:"充值",3:"注销账户",4:"抽奖",5:"修改密码"}
print("****************欢迎登录小二超市*****************")
for key,value in dict1.items():
print("\t\t\t\t",key,".",value)
print("************************************************")
num = input("选择>>>:")
if num == "1":
super().shop()
elif num == "2":
self.pay()
elif num == "3":
super().logout()
elif num == "4":
pass#抽奖
elif num == "5":
super().update()
else:
print("请选择正确的菜单")
def pay(self):#充值系统
cardid = input("请输入ID:")
count = 0
for i in Person.user_list1:
if cardid == i.id:
print("卡余额:%d" %self.money)
money = int(input("充值金额:"))
i.money = i.money + money
print("卡余额:%d" % self.money)
count = 1
if count == 0:
print("请核对账号")
#
# v1 = Vip()
# v1.vip_memu()

pt.py
#普通用户
import random
from person import Person
class Pt(Person):
def pt_memu(self):#欢迎页面
pt_dict1 = {1: "注册vip", 2: "购物"}
print("************欢迎进入小二超市(普通用户)******************")
for key,value in pt_dict1.items():
print("\t\t\t\t",key,".",value)
print("********************************************************")
num = input("选择>>>:")
if num == "1":
self.zhuce()#调用同类方法名
elif num == "2":
self.pt_shop()
def code(self): # 随机生成一个账号
num1 = "1"
num2 = random.choice(range(10000,100000))
code = num1 +str(num2)
return code
def zhuce(self):#注册vip
name = input("请输入您的姓名>>>:")
sex = input("您的性别:")
while True:
pwd = input("请设置密码:")
if len(pwd) == 6:
pwd_again = input("确认密码:")
if pwd == pwd_again:#判断两次密码是否一致
print("注册成功!")
code = self.code()
print("您的会员号:%s" %code)#调用同类方法self.方法名
user_pt = Person(code,name,pwd,sex,0)
Person.user_list1.append(user_pt)#需要将生成的信息添加到用户列表中去
# print(Person.user_list1)
self.pt_memu()
else:
print("两次密码不一致!")
else:
print("密码长度为6位")
def pt_shop(self):#普通用户购物
super(Pt, self).shop()


# p1 = Pt("123","郭杰","123","1",0)
# p1.code()
# p1.pt_memu()

person.py
import random
# from shipin import Shipin
import sys
class Shipin(object):
def __init__(self,name,price,num):
self.name = name#食品名称
self.price = price#食品价格
self.num = num #食品数量

class Person(object):
#ID:账号
#name:用户名
#pwd:密码
#sex:性别
#money:卡余额
user_list1 = []#存放用户信息
food_list2 = []#存放食品信息
def __init__(self,Id,name,pwd,sex,money):#设置对象属性;创建一次用户就会自动调用一次
self.Id = Id
self.name = name
self.pwd = pwd
self.sex = sex
self.money = money
'''
将ID设置为私有属性
'''
@property#相当于get方法
def Id(self):
return self.__Id
@Id.setter#相当于set方法
def Id(self,Id):
self.__Id = Id
@property
def money(self):
return self.__money
@money.setter
def money(self,money):
for i in Person.user_list1:
if i.name.startswith("admin"):
self.__money = 0
else:
self.__money = money
def initfood(self):#初始化食品
s1 = Shipin("苹果",10,20)
s2 = Shipin("香蕉",10,30)
s3 = Shipin("西瓜",15,20)
Person.food_list2.append(s1)
Person.food_list2.append(s2)
Person.food_list2.append(s3)
def update(self):#修改密码
self.initfood()
num = input("输入ID:")
count = 0
for i in Person.user_list1:#循环遍历列表
if num == i.Id:#判断输入的密码是否存在列表中
new_pwd = input("新密码:")
new_pwd_again = input("确认密码:")
if new_pwd == new_pwd_again:#两次输入密码一样
i.pwd = new_pwd#重新赋值新密码
else:
print("密码不一致!")
count = 1
if count == 1:
print("查无此号,请核对")
def logout(self):#注销账号
num1 = input("输入ID:")
count = 0
for i in Person.user_list1:#遍历列表
if num1 == i.Id:
Person.user_list1.remove(i)#删除对象
print("注销成功!")
count = 1
if count == 0:
print("请核实账号!")
def shop(self):#购物系统
self.initfood()
userShop = {}#存放用户的购买的物品的名称和数量以及总价
flag = False
while True:
self.show()#调用同类方法self.方法名
name = input("购物名称>>>:")
count = 0
for i in Person.food_list2:
count = 1
if i.name == name:
number = int(input("购买斤数:"))
if number<= i.num:#判断购买的斤数是否大于库存
i.num = i.num - number#将库存的数量修改为库存的量-购买的量
money = number * (i.price)#花费金额等于购买的数量*斤数
if name in userShop.keys():
userShop[name][0] = number + userShop[name][0]#如果重复购买一件物品,将数量和价格累加
userShop[name][1] = money + userShop[name][1]
count = 1
else:
userShop.setdefault(name,[number,money])
an = input("是否继续购买:")
if an == "y":
flag = True
else:
for key,value in userShop.items():
print("你的购物是%s %d斤,总花费为%d"%(key,value[0],value[1]))
break
else:
print("对不起,库存仅为%d" %i.num)#显示库存的数量
if count == 0:
print("无该食品")
break
def show(self):
print("序号\t\t名称\t\t价格\t\t数量")
for i in range(len(Person.food_list2)):
print(i,"\t\t",Person.food_list2[i].name,"\t\t",Person.food_list2[i].price,"\t\t",Person.food_list2[i].num)

gly.py
#管理员账户
#2、管理员:修改管理员密码,注销账户,修改商品价格和增加商品
from person import Person
# from shipin import Shipin
from person import Shipin
class Gly(Person):
def initGly(self):#初始化两个管理员
g1 = Person("admin1","管理员","123456","男",0)
g2 = Person("admin2","管理员2", "123456", "男",0)
Person.list1.append(g1)
Person.list1.append(g2)
def gly_memu(self):
print("*********欢迎登录后台**************")
dict1 = {1:"修改密码",2:"注销账户",3:"修改商品价格",4:"维护商品"}
for key ,value in dict1.items():
print(key,".",value)
print("***********************************")
num = input("选择菜单>>>:")
if num == "1":
self.change_pwd()#调用同类的修改密码页面
elif num =="2":
self.logout()
elif num == "3":
self.update_price()
elif num == "4":
self.add()
else:
print("请选择正确菜单")
def change_pwd(self):#修改密码
super(Gly, self).update()
def logout(self):#注销账户
super(Gly,self).logout()
def update_price(self):#修改商品价格
flag = False
while True:
self.gly_show()#先展示现在的商品
print("\n\n")
name = input("商品名称")
count = 0
for i in Person.food_list2:
if i.name == name:
print("现在的 %s 的价格是%d" %(i.name,i.price))
price = int(input("请输入修改的价格:"))
i.price = price
continue_update = input("继续修改[y/n]:")
if continue_update == "y":
flag = True
else:
print("已修改%s商品的价格为%d" %(i.name,price))
count = 1
if count == 0:
print("对不起不存在该商品")
def add(self):#增加商品
flag = False#占位符
while True :
self.show()#先展示现在还有多少
print("\n\n")
food_name = input("商品名称:")
food_price = int(input("商品价格:"))
food_num = int(input("商品库存:"))
food = Shipin(food_name,food_price,food_num)
Person.food_list2.append(food)
continue_add = input("继续添加[y/n]:")
if continue_add == "y":
flag = True
else:
print("已维护好商品")
self.gly_memu()
def gly_show(self):
print("序号\t\t商品名称\t\t商品价格\t\t商品库存")
for i in range(len(Person.food_list2)):
print(i+1,"\t\t",Person.food_list2[i].name,"\t\t",Person.food_list2[i].price,"\t\t",Person.food_list2[i].num)



#
# g = Gly("admin1","管理员","123456","男",0)
# g.gly_memu()
# g.show()
#各模块之间衔接仍有问题,暂未调试

猜你喜欢

转载自www.cnblogs.com/guojie-guojie/p/9276571.html
今日推荐