cdikop 发表于 2016-12-7 20:59:42

写了一个剪发次卡管理软件,大家见笑了


import pickle
pickle_file = open("customer_data.pkl", 'rb')
vip = pickle.load(pickle_file)

print("|---欢迎进入会员卡管理系统---|")
print("|------1:查询会员资料--------|")
print("|------2:添加新会员----------|")
print("|------3:消费划卡 -----------|")
print("|------4:关闭程序 -----------|")

def oper():#更新数据库
        pickle_file_new = open('customer_data.pkl', 'wb')
        vip1 = vip
        pickle.dump(vip1, pickle_file_new)
        pickle_file_new.close()

class Type:
    def inp_num(self):
      self.num = int(input("请输入编码:"))
      return self.num
    def inp_name(self):
      self.name = input("请输入客户姓名:")
      return self.name
    def inp_count(self):
      self.count = int(input("请输入充值次数:"))
      return self.count

   
while 1:
    print() #空一格
    oper()
    a = Type()
    instr = a.inp_num()

    if instr == 3:
      name = a.inp_name()
      if name in vip:
            if input("该客人剩余%s次,是否消费一次(YES/NO):" % vip) == 'YES':
                vip -= 1
                print("%s客人剩余%d次" % (name, vip))

    if instr == 2:
      name = a.inp_name()
      if name in vip:
            print("该客人已存在-->", end = "")
            print("%s客人剩余:%d次" % (name, vip))
            if input("是否修改充值卡次数(YES/NO):") == 'YES':
                vip += int(a.inp_count())
                print("%s客人剩余%d次" % (name, vip))
            
      else:
            vip = a.inp_count()

    if instr == 4:
      break
   
    if instr == 1:
      name = a.inp_name()
      print("%s用户剩余%d次" % (name, vip))      

print("|---感谢您的使用---|")





目前的小问题是,如果遇到重名的人怎么办? 希望知道的朋友能指导指导{:5_93:}

zua 发表于 2016-12-7 23:28:09

Python字典其实支持一键多值,看你怎么操作了。
你在创建字典的时候调用dict.setdefault()方法
然后把值以列表的形式加入就可以了。比如:dict1 = {}
name = "王麻子"
list1 = ["老王的账号","小王的账号","大王的账号"]
dict1.setdefault(name,0)
dict1["王麻子"] = list1

三个重名,老王小王中王都是王麻子,怎么访问各自的账号呢?
很简单
dict1["王麻子"]

结果是:
'老王的账号'

cdikop 发表于 2016-12-8 14:17:37

zua 发表于 2016-12-7 23:28
Python字典其实支持一键多值,看你怎么操作了。
你在创建字典的时候调用dict.setdefault()方法
然后把值 ...

谢谢,有点难我研究研究

zua 发表于 2016-12-8 14:55:14

cdikop 发表于 2016-12-8 14:17
谢谢,有点难我研究研究

就是创建字典,值用列表写入,毕竟每个列表可以扔很多个数据。
然后调用key的时候 就对应一个列表,然后再调取列表中的每个数据就可以了。读取列表是很简单的,下标就可以。

cdikop 发表于 2016-12-8 15:17:30

zua 发表于 2016-12-8 14:55
就是创建字典,值用列表写入,毕竟每个列表可以扔很多个数据。
然后调用key的时候 就对应一个列表,然后 ...

瞬间懂了

cdikop 发表于 2016-12-8 15:18:25

zua 发表于 2016-12-8 14:55
就是创建字典,值用列表写入,毕竟每个列表可以扔很多个数据。
然后调用key的时候 就对应一个列表,然后 ...

非常感谢{:5_108:}

zua 发表于 2016-12-8 16:03:34

cdikop 发表于 2016-12-8 15:18
非常感谢

{:5_95:}{:5_95:}{:5_95:} 最佳答案

保加利亚君 发表于 2016-12-14 20:33:17

厉害了word姐

调皮的小屌 发表于 2016-12-25 11:22:37

其实直接丢入数据库是最好的。
页: [1]
查看完整版本: 写了一个剪发次卡管理软件,大家见笑了