模块core下的代码

core/admin.py

from core import src
from interface import admin_interface#添加用户
def add_user():src.register()    #调用添加账户信息#修改用户额度
def change_balance():while True:#1)输入需要修改的账户名chang_user=input("请输入需要修改额度的用户:").strip()#2)修改的用户用户额度money=input("请输入需要修改的用户额度:").strip()if not money.isdigit():continue#3)调用修改额度接口flag,msg=admin_interface.change_balance_interface(chang_user,money)if flag:print(msg)breakelse:print(msg)#冻结用户def lock_user():while True:#1)输入要冻结的用户名change_user=input("请输入需要冻结的账户:").strip()flag,msg=admin_interface.lock_user_interface(change_user)if flag:print(msg)breakelse:print(msg)##管理员功能字典admin_func={'1':add_user,'2':change_balance,'3':lock_user,
}def admin_run():while True:print("""1.添加账户2.修改额度3.冻结账户""")choice=input("请输入管理员功能编号:").strip()if choice not in admin_func:print("请输入正确编号!")continueadmin_func.get(choice)()

core/src.py

"""
核心代码区,用户视图层
"""from interface import user_interface
from lib import common
from interface import bank_interface
from interface import shop_interface# 全局变量,记录用户是否已登录
login_user=None#1.注册功能
def register():while True:#1.让用户输入用户名和密码进行校验username=input("请输入用户名:").strip()password=input("请输入密码:").strip()re_password=input("请再次输入密码:").strip()# 很小的逻辑处理,比较两次密码是否一致if password==re_password:#2)调用接口层的注册接口# flag,msg--->(flag--->False,msg--->'用户名已经存在!)# (True,用户注册成功)(False,注册失败)flag,msg=user_interface.register_interface(username,password)#3)根据flag判断用户注册是否成功,if flag:print(msg)breakelse:print(msg)# 2.登录功能
def login():# 登录视图while True:# 1)让用户输入用户名与密码username=input("请输入用户名:").strip()password=input("请输入密码:").strip()#2)调用接口层,将数据传给登录接口#True,f'用户:{username}登录成功!'#return False,'密码错误'#return False,'用户不存在,请重新输入'flag,msg=user_interface.login_interface(username,password)if flag:print(msg)global  login_userlogin_user=username   #标记登录的用户breakelse:print(msg)# 3.查看余额
# @common.login_auth
def check_balance():# 1.直接调用查看余额接口,获取用户余额balance=user_interface.check_bal_interface(login_user)print(f'用户{login_user}账户余额为:{balance}')# 4.提现功能
# @common.login_auth
def withdraw():while True:# 1)让用户输入提现金额input_money=input("请输入提现金额:").strip()# 2)判断用户输入的金额是否是数字if not input_money.isdigit():print("请重新输入")continue#3)用户提现金额,将提现的金额交付给接口层来处理flag,msg=bank_interface.withdraw_interface(login_user,input_money)if flag:print(msg)breakelse:print(msg)# 5.还款功能
# @common.login_auth
def repay():"""银行卡还款,无论信用卡或者储蓄卡,是否能充任意大小的金额:return:"""while True:# 1.让用户输入还款金额input_money=input("请输入需要还款的金额:").strip()# 2.判断用户输入的是否是数字if not input_money.isdigit():print("请输入正确的金额")continueinput_money=int(input_money)# 3)判断用户输入的金额大于0if input_money>0:# 4)调用还款接口flag,msg=bank_interface.repay_interface(login_user,input_money)if flag:print(msg)breakelse:print("输入的金额不能小于0")# 6.转账功能
# @common.login_auth
def transfer():"""1.接收用户输入的转账目标用户2.接收永不输入的转账金额:return:"""while True:#1)让用户输入转账用户与金额to_user=input("请输入转账目标用户").strip()money=input("请输入转账金额:").strip()#2)判断用户输入的金额是否是数字或>0if not money.isdigit():print("请输入正确的金额")continuemoney=int(money)if money>0:#3)调用庄重接口                     #当前用户    目标用户  转账金额flag,msg=bank_interface.transfer_interface(login_user,to_user,money)if flag:print(msg)breakelse:print(msg)else:print("请输入正确的金额!")# 7.查看流水
# @common.login_auth
def check_flow():# 直接调用查看流水接口flow_list=bank_interface.check_flow_interface(login_user)if flow_list:for flow in flow_list:print(flow)else:print("当前用户没有流水")# 8.购物功能
# @common.login_auth
def shopping():# 不从文件中读取商品数据,直接写#1)创建一个商品列表#shop_list={#'0":{'name':“天津狗不理”,"price":30}## }#列表套列表的商品数据#[[商品名称1,商品单价1],[商品名称2,商品单价2]...]shop_list=[["山海灌汤包",30],["抱枕", 200],["大礼包", 300],["香港灌汤包", 50],["pad", 3500],["pc",30000],]#初始化当前购物车shopping_car={}   #{"商品名称":[“单价”,“数量”]}while True:#1)带你商品信息,让用户选择#枚举:enumerate(可迭代对象)---->(可迭代对象的索引,索引对应的值)#枚举:enumerate(可迭代对象)---->(0, ["山海灌汤包",30])for index,shop in enumerate(shop_list):shop_name,shop_price=shopprint(f"商品编号为:{index}",f"商品名称:{shop_name}",f"商品单价:{shop_price}")#2)让用户根据商品编号进行选择choice=input("请输入商品编号(是否结账输入y or n):").strip()#2.1输入的是y进入支付结算功能if choice=='y':#调用支付接口进行支付if not shopping_car:print("购物车是空的,不能支付,请重新输入!")continue#6) 调用支付接口进行支付flag,msg=shop_interface.shopping_interface(login_user,shopping_car)if flag:print(msg)breakelse:print(msg)#2.2)输入的是n 添加购物车elif choice=='n':#判断当前用户是否添加过购物车if not shopping_car:print("购物车是空的,不能添加,请重新输入!")continue#7)调用添加购物车接口flag,msg=shop_interface.add_shop_car_interface(login_user,shopping_car)if not choice.isdigit():print("请输入正确的编号!")continuechoice=int(choice)#3)判断choice是否存在if choice not in range(len(shop_list)):print("请输入正确的编号!")continue#4)获取商品名称与单价shop_name,shop_price=shop_list[choice]#5) 加入购物车#5.1) 判断用户选择的商品是否重复,重复则数量+1if shop_name in shopping_car:#[shop_price,1][1]------->1+=1#添加商品数量shopping_car[shop_name][1]+=1else:#否则数量默认为1#{'商品名称':[‘单价’,'数量']}shopping_car[shop_name]=[shop_price,1]print("当前购物车:",shopping_car)# 9.查看购物车
# @common.login_auth
def check_shop_car():#直接调用查看购物车接口shop_car=shop_interface.check_shop_car_interface(login_user)print(shop_car)# 10.管理员功能
def admin():from core import adminadmin.admin_run()func_dict={'1':register,'2':login,'3':check_balance,'4':withdraw,'5':repay,'6':transfer,'7':check_flow,'8':shopping,'9':check_shop_car,'10':admin,}# 视图层  主程序
def run():while True:print("""1.注册功能2.登录功能3.查看余额4.提现功能5.还款功能6.转账功能7.查看流水8.购物功能9.查看购物车10.管理员功能""")choice=input("请输入功能编号:").strip()if choice not in func_dict:print("请输入正确的功能编号!")continuefunc_dict.get(choice)()    #相当于func_dic.get("1")()--->registerif __name__ == '__main__':run()

pythonATM,购物车项目实战_补充3——core模块相关推荐

  1. JavaEE项目实战_流程审批之二

    JavaEE项目实战_流程审批之二 这部分的程序界面原型如下: 1. 请假页面: 员工如需请假,在登录系统后,点击请假功能,填写各项数据后,提交审批.也可以暂时不提交,将内容保存为草稿.以后可以加入功 ...

  2. 精通Python网络爬虫_核心技术框架与项目实战_韦玮.pdf

    精通Python网络爬虫_核心技术框架与项目实战_韦玮 编辑推荐 从技术.工具.实战3个维度讲透Python网络爬虫各项核心技术和主流框架,深度讲解网络爬虫的抓取技术与反爬攻关技巧 内容简介 随着大数 ...

  3. Python和Java结合的项目实战_[项目实战] Python高级教程项目实战篇 Python和Java结合的项目实战 视频教程 [...

    资源介绍 课程简介:xa0xa0 Python高级教程项目实战篇 Python和Java结合的项目实战 视频教程 教学视频 ----------------------课程目录 Python项目实战篇 ...

  4. Java EE Web开发与项目实战_【手把手】JavaWeb 入门级项目实战 -- 文章发布系统 (第一节)...

    312334546574820.jpg 序 前一段时间有很多朋友来问我各种问题,比如java怎么学,c,c++,c#,java,还有php等等,到底学哪个好,哪个好就业?其中不乏刚毕业找不到工作的学生 ...

  5. python开发商城实战视频_商城项目实战_商城项目实战教程_商城项目实战视频教程 _课课家...

    本套餐将包括两个重磅性的课程与一个赠送学习的课程,分别为SpringBoot实战视频教程与RabbitMQ实战教程跟SSM整合开发之poi导入导出Excel.目的是为了让各位小伙伴可以从零基础一步一个 ...

  6. android movie 资源释放,Android 资讯类App项目实战 第四章 电影模块

    前言: 正在做一个资讯类app,打算一边做一边整理,供自己学习与巩固.用到的知识复杂度不高,仅适于新手.经验不多,如果写出来的代码有不好的地方欢迎讨论. 以往的内容 第四章 电影模块 本章内容最终效果 ...

  7. opencv 4计算机视觉项目实战_资源|计算机视觉实战操作(PDF下载)

    这是近一两年来分享的关于计算机视觉实战相关的项目汇总.理论总是枯燥乏味的,公式又是那么晦涩难懂,而视觉的魅力就在于,完美的数学公式后,隐藏着惊艳令人惊艳的结果.但是,如果有人告诉你,你需要先学会数学, ...

  8. java手机杀毒_Android项目实战_手机安全卫士splash界面

    - 根据代码的类型组织包结构 1. 界面 com.hb.mobilesafe.activities 2. 服务 com.hb.mobilesafe.services 3. 业务逻辑 com.hb.mo ...

  9. Go后端博客项目实战_持续更新ing

    前言 因为是仿写他人的优秀博客后端,已经把博客代码拉下,进行分析. 但是在分析的过程中自己理解的很困难. 所以想出了一种解决方法: 将原项目代码拉下后,大概研究一下该项目实现的基本功能有哪些?自己能不 ...

  10. bootstrap 标题居中加颜色_BootStrap从基础到项目实战_第1季_03章_01_CSS样式之栅格布局...

    目标 目标一.理解什么是栅格布局 目标二.掌握栅格布局具体应用 目标三.掌握BootStrap通用CSS样式(排版.代码.代码.表单.按钮.图片.辅助类.响应式工具) 内容 一.BootStrap全局 ...

最新文章

  1. raid5 增加一块硬盘_Raid5热备盘上线同时另一块硬盘离线如何恢复数据
  2. 关于一些blog优化
  3. .NET Core 集成JWT认证
  4. jzoj6801-NOIP2020.9.19模拟patrick【树状数组】
  5. 设置clion执行前的cmake命令,和CMAKELIST.txt不冲突
  6. std::dynamic_pointer_cast细节用法
  7. Bailian2786 Pell数列【数列】(POJ NOI0102-1788,POJ NOI0103-1788)
  8. ceph cluster monitor
  9. Mybatis源码分析之Mapper文件解析
  10. basler相机参数简要中文说明_basler相机参数设置
  11. tex 表格内容换行_LaTeX:表格内换行与各种居中完美解决
  12. 细胞穿膜肽-MnO2复合物(TAT-MnO2)多肽偶联氧化锰纳米粒|MnO2包裹聚多巴胺的纳米颗粒
  13. 新人如何快速融入团队
  14. LeetCode 水壶问题
  15. 简单文件加密解密系统(c++)
  16. 关于TI公司DSP工程调用DELAY_US()进入非法中断问题的解决
  17. 基于 PIR 的运动检测:传感器解决方案
  18. 机器人自我恢复(一) Hod Lipson的论文解读
  19. c语言如何实现1-n全排列,全排列思路解析附C语言实现
  20. VR进化论|教你搭建通用的WebVR工程

热门文章

  1. java.lang.ClassFormatError
  2. caffe安装编译问题-ImportError: No module named caffe
  3. mysql-proxy读写分离,负载均衡
  4. Welcome-to-Swift-13继承(Inheritance)
  5. JAVA SE、JAVA EE、JAVA ME的联系与区别
  6. 【学堂在线数据挖掘:理论方法笔记】第四天(3.28)
  7. Ubuntu怎么从图形桌面切换到命令行界面
  8. 【ubuntu操作系统入门】系统安装
  9. Pytorch——常用的神经网络层、激活函数
  10. 文献笔记5 review on RS Hydrology