zoukankan      html  css  js  c++  java
  • 面向对象小项目综合练习(小二超市)

    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(" ", 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(" ",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(" ",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("序号 名称 价格 数量")
    for i in range(len(Person.food_list2)):
    print(i," ",Person.food_list2[i].name," ",Person.food_list2[i].price," ",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(" ")
    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(" ")
    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("序号 商品名称 商品价格 商品库存")
    for i in range(len(Person.food_list2)):
    print(i+1," ",Person.food_list2[i].name," ",Person.food_list2[i].price," ",Person.food_list2[i].num)



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

  • 相关阅读:
    sql2000/2005获取表的列SQL文
    SQL Server未公开的两个存储过程
    HNOI2008 玩具装箱
    noi2004 郁闷的出纳员
    狼抓兔子(平面图转对偶图求最短路)
    pku1917 Automatic Poetry
    幸福的道路
    闲话电子商店(eshop)的设计和经营2
    基金清仓,晚上欢聚
    早上想来想去,把自己的基金卖了1/5
  • 原文地址:https://www.cnblogs.com/guojie-guojie/p/9276571.html
Copyright © 2011-2022 走看看