作业需求
1. 购物系统,能够注册登录,用户第一次登录后,让用户输入金额,然后打印商品列表
2. 允许用户根据商品编号购买商品
3. 用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒
4. 购买完一件商品后打印购物清单及余额
5. 可随时查看购物清单和退出
6. 如果用户多次购买同一商品,必须合并商品数量和价格信息
7. 用户下次登录时,可查看之前的消费记录
流程图
README
1. 通过分析需求,使用面向过程和函数式编程的方式更好; 2. 文件序列化通过 pickle实现永久存储; 3. 每个用户信息用独立的数据文件来存储; 4. 要求输入数字的地方只能输入正整数; 5. 第二次购买的商品如果同第一次购买的相同,则在第一次商品信息上进行叠加。
程序代码
#!/usr/bin/python3 # -*- coding: utf-8 -*- # Author: hkey import os, pickle def file_oper(file, mode, *args): ''' 通过pickle序列化持久存储数据信息 :param file: 不同的用户生成不同的数据文件,文件名+'.db' :param mode: 对数据文件的操作,读取还是写入 :param args: 需要写入的数据信息 :return: 返回读取数据文件的信息 ''' if mode == 'wb': data = args[0] with open(file, mode) as f: pickle.dump(data, f) elif mode == 'rb': with open(file, mode) as f: data = pickle.load(f) return data def user(user, pwd, mode): ''' 用户注册及登录 :param user: 用户输入的用户名 :param pwd: 用户输入的密码 :param mode: 注册还是登录 :return: 登录成功,返回用户信息;登录失败,返回 None ''' db_file = user + '.db' # 用户注册 if mode == 'regist': if not os.path.isfile(db_file): user_info = {'name': user, 'passwd': pwd, 'stat': 0} file_oper(db_file, 'wb', user_info) print('