目录python
要求以下:git
FUNC_MSG = {
'0': '注销',cancel
'1': '登陆',login
'2': '注册',refister
'3': '查看余额',Check the balance
'4': '转帐',transfewr accounts
'5': '还款',repayment
'6': '取款',withdrawal
'7': '查看流水',Check the current account
'8': '购物',shopping
'9': '购物车',shopping cart
'q': '退出'quit
}
account information 帐户信息app
# -*- encoding:utf-8 -*- import os product_list = [ ['Iphone7', 5800], ['Coffee', 30], ['python Book', 99], ['Bike', 199], ['viv0 X9', 2499] ] db_file = r'account_information.txt' account_information = list() # 帐户信息 information = list() uname_pwd = list() # 用户名,与密码 shopping_cart = dict() # 购物车 yao_balance = list() # 别人的 message_info=list() #本身的流水 # 00删除用户信息 def del_cancel(): if len(uname_pwd) == 0: login() del_cancel() elif len(uname_pwd) == 3: longinhou() else: print('已经被注销,请登录后删除信息') # 若是删除信息,检测没登录执行 def longinhou(): uname = uname_pwd[0] pwd = uname_pwd[1] print('开始删除') str_file = db_file dst_file = '%s.swap' % db_file with open(str_file, 'r', encoding='utf8') as rf, \ open(dst_file, 'w', encoding='utf8') as wf: for line in rf: line = line.strip('\n').split(',',3) if line[0] == uname and pwd == line[1]: continue else: line = ','.join(line) + '\n' wf.write(line) os.remove(str_file) os.rename(dst_file, str_file) print('删除成功') # 0注销 def cancel(): if len(uname_pwd) == 0: login() cancel() elif len(uname_pwd) == 2: print('已经注销') else: print('开始注销') uname_pwd.pop(0) print('注销成功') # 1登录 def login(): count = 0 tag = True while tag: count += 1 uname = input('请输入用户名>:').strip() pwd = input('请输入密码>:').strip() with open(db_file, 'r', encoding='utf8') as f: for line in f: line = line.strip('\n').split(',',3) if line[0] == uname and line[1] == pwd: print('登录成功') uname_pwd.extend(line[:3]) print(uname_pwd) tag = False break else: continue if count == 3: tag = False # 2注册 def refister(): if len(uname_pwd) == 3: print('请退出先注销在注册') else: uname = input('请输入用户名>:').strip() with open(db_file, 'r', encoding='utf8') as fr: for line in fr: line = line.strip('\n').split(',',3) if line[0] == uname: print('已经被注册,请直接登录') return 0 while True: pwd1 = input('请输入密码>:').strip() pwd2 = input('请确认密码>:').strip() if pwd2 != pwd1: print('密码不一致,请重新输入') continue else: print('正在注册,请等待') break balance = input('请充钱>:').strip() messgae = list() #type:list with open(db_file, 'a', encoding='utf8') as f: f.write(('%s,%s,%s,%s\n') % (uname, pwd1, balance,messgae)) print('注册成功') # 3查看余额 def Check_the_balance(): if len(uname_pwd) == 0: login() print(uname_pwd[2]) elif len(uname_pwd) == 3: print(uname_pwd[2]) else: print('已经被注销') # 4转帐 def transfewr_accounts(): """给某人进行转帐""" if len(uname_pwd) == 0: login() transfewr_accounts() elif len(uname_pwd) == 3: payee_name = input('请输入收款人的姓名:').strip() with open(db_file, 'r', encoding='utf8') as fr: for line in fr: line = line.strip('\n').split(',',3) if payee_name in line: yao_balance.append(int(line[2])) print(12) money = int(input('请输入转帐金额>>>:').strip()) yao_balance[0] += money balance = int(uname_pwd[2]) balance -= money uname_pwd[2] = balance message_info_list =eval(line[3]) #type:list info_list = f'收到{uname_pwd[0]}转帐{money}' info_list2 = f'向{payee_name}转帐{money}' message_info.append(info_list2) informat(payee_name,info_list) yao_balance.clear() print('转帐成功,请查看') return message_info_list else: print('已经注销,请登录') # 5还款 def repayment(): """还款""" if len(uname_pwd) == 0: login() repayment() elif len(uname_pwd) == 3: bank = 'bank' with open(db_file, 'r', encoding='utf8') as fr: for line in fr: line = line.strip('\n').split(',',3) if bank in line: yao_balance.append(int(line[2])) money = int(input('请输入还款金额>>>:').strip()) yao_balance[0] += money balance = int(uname_pwd[2]) balance -= money uname_pwd[2] = balance message_info_list =eval(line[3]) #type:list info_list = f'收到{uname_pwd[0]}转帐{money}' info_list2 = f'向{bank}转帐{money}' message_info.append(info_list2) informat(bank,info_list) print('还款成功,一共取出', money) yao_balance.clear() else: print('已经注销,请登录') # 6取款 def withdrawal(): """从银行取款""" if len(uname_pwd) == 0: login() withdrawal() elif len(uname_pwd) == 3: bank = 'bank' with open(db_file, 'r', encoding='utf8') as fr: for line in fr: line = line.strip('\n').split(',',3) if bank in line: yao_balance.append(int(line[2])) money = int(input('请输入取款金额>>>:').strip()) yao_balance[0] -= money balance = int(uname_pwd[2]) balance -= money uname_pwd[2] = balance message_info_list =eval(line[3]) #type:list info_list = f'收到{uname_pwd[0]}转帐{money}' info_list2 = f'向{bank}转帐{money}' message_info.append(info_list2) informat(bank,info_list) print('取款成功,一共取出', money) yao_balance.clear() else: print('已经注销,请登录') # 7查看流水 #想不出来,如何调用 def Check_the_current_account(): if len(uname_pwd) == 0: login() Check_the_current_account() elif not uname_pwd[0].isdigit(): with open(db_file,'r',encoding='utf8') as fr: for line in fr: line = line.strip('\n').split(',',3) if uname_pwd[0] in line: print(line[-1]) else: print('请登录') # 8购物 def shopping(): if len(uname_pwd) == 0: login() shopping() elif not uname_pwd[0].isdigit(): uname = uname_pwd[0] balance = int(uname_pwd[2]) tag = True while tag: for i, product in enumerate(product_list): print(i, product) choice = input('请输入商品编号,输入q退出>>').strip() if choice.isdigit(): choice = int(choice) if choice < 0 or choice >= len(product_list): continue pname = product_list[choice][0] pprice = product_list[choice][1] if balance > pprice: if pname in shopping_cart: shopping_cart[pname]['count'] += 1 print(shopping_cart) else: shopping_cart[pname] = { 'pprice': pprice, 'count': 1 } balance -= pprice uname_pwd[2] = balance info_list2 = f'购物消费了{balance}' message_info.append(info_list2) else: print("买不起,穷逼! 产品价格是{price},你还差{lack_price}".format( price=pprice, lack_price=(pprice - balance))) elif choice == 'q': break else: print('请输入正确的编号') informat() else: print('已经被注销') print(shopping_cart) # 9购物车 def Shopping_cart(): if len(uname_pwd) == 0: login() Shopping_cart() elif len(uname_pwd) == 3: balance = int(uname_pwd[2]) print(""" --------------------已购买商品列表------------------------- id 商品 数量 单价 总价 """) total_cost = 0 for i, key in enumerate(shopping_cart): print('%10s%15s%10s%15s%12s' % (i, key, shopping_cart[key]['count'], shopping_cart[key]['pprice'], shopping_cart[key]['pprice'] * shopping_cart[key]['count'])) total_cost += shopping_cart[key][ 'pprice'] * shopping_cart[key]['count'] print(""" 您的花费总额为: %s 您的余额为: %s --------------------------end--------------------------------- """ % (total_cost, balance)) shopping_cart.clear() else: print('已经被注销') ### 更改信息 def informat(to_people=None,message=None): if to_people : print(message) src_file = db_file dst_file = r'%s.swap' % db_file with open(src_file, 'r', encoding='utf-8') as read_f, \ open(dst_file, 'w', encoding='utf-8') as write_f: for line in read_f: if line.startswith(to_people): l = line.strip('\n').split(',',3) l[-2] = str(yao_balance[0]) l[-1]=eval(l[-1])#type:list l[-1].append(message) l[-1] = str(l[-1]) line = ','.join(l) + '\n' write_f.write(line) os.remove(src_file) os.rename(dst_file, src_file) uname = uname_pwd[0] pad = uname_pwd[1] balance = uname_pwd[2] src_file = db_file dst_file = r'%s.swap' % db_file with open(src_file, 'r', encoding='utf-8') as read_f, \ open(dst_file, 'w', encoding='utf-8') as write_f: for line in read_f: if line.startswith(uname): l = line.strip('\n').split(',',3) l[-2] = str(balance) l[-1] = eval(l[-1]) # type:list l[-1].append(message_info) l[-1] = str(l[-1]) line = ','.join(l) + '\n' write_f.write(line) os.remove(src_file) os.rename(dst_file, src_file) message_info.clear() # 执行程序 while True: choice = input("请选择00: 删除用户信息,0:注销,1: 登陆,2:注册,3:查看余额," "4:转帐,5:还款,6:取款,7:查看流水,8:购物,9:购物车,q:退出>>>:") if choice == '00': del_cancel() elif choice == '0': cancel() elif choice == '1': login() elif choice == '2': refister() elif choice == '3': Check_the_balance() elif choice == '4': transfewr_accounts() elif choice == '5': repayment() elif choice == '6': withdrawal() elif choice == '7': Check_the_current_account() elif choice == '8': shopping() elif choice == '9': Shopping_cart() elif choice == 'q': break