)),即调用dbapi模块中的load_data_from_db方法来展示用户信息

4、定义login函数,输入用户名和密码

(1)、调用user_exists,判断用户是否存在,不存在则使用common.show_message进行异常颜色输出。

(2)、如存在则调用 用户登录模块_user_login ,首先对输入的密码参数进行md5计算_password = common.encrypt(password),调用common模块中的encrypt函数,并进行用户信息的判断的赋值

(3)、判断是否用户被锁定

(4)、判断用户是否登录成功,成功则break退出,失败则输出异常信息

(5)、连续三次登录失败,则设置用户锁定标识为1,并update_user更新到user.db

(6)、重置trycount 重置次数

5、update_user即为将dict_user用户列表信息进行回写文件

6、定义用户存在函数user_exists、创建函数create_user、删除函数del_user、锁定函数unlock_user

7、创建并init_user_info初始化用户信息,输入各种信息后,调用 create_user来生成用户

8、定义静态方法user_auth,用于用户登录验证装饰器

9、定义bind_card函数判断卡绑定

10、注销用户函数logout,将系统属性置空

11、个人中心 - 修改密码函数modify_password

12、修改用户信息modify_user_info

(1)、首先输出当前的用户信息

(2)、输入新的用户信息

(3)、输入新的信用卡信息,并创建一个新的卡对象,调用CreditCard模块:cardobj = CreditCard

(4)、判断信用卡是否存在

(5)、输入其他信息,并update_user回写文件

13、根据用户名获取用户信息load_user_info

2、shopping.py之类Shopping:

1、定义私有变量:__welcome_title 菜单标题、__database 数据库文件、__shop_report_file购物报表

2、定义__init__: 特别定义方法

(1)、获取数据表数据self._get_shop_market()

(2)、购物商城欢迎菜单self._construct_title_menu()

3、_get_shop_market方法:加载购物商品信息dbapi.load_data_from_db(shoppingmarket.db)

4、_construct_title_menu方法:输出购物商城菜单

self.welcome_menu = self.__welcome_title.format(menu="".join(_menu))

5、get_goods_list_by_typeid方法:根据用户选择的商品分类编号,获取该分类下所有商品

6、定义静态方法print_goods_list:列表中的商品信息输出到屏幕,商品列表或购物车商品列表

(1)、输出商品信息标题

(2)、循环输出商品具体信息

7、定义方法add_shopping_card(self, goodsid):根据商品编号加入购物车

(1)、定义变量_goods_tuple ,即具体的商品列表

(2)、开始查找输入的商品编号,并加入购物车列表中,并计算金额

(3)、成功后break

(4)、返回return 成功与否

8、定义payfor_shopcart结算方法,并调用@Users.user_auth认证模块作装饰器

购物车结算模块,功能包括:购物车付款、购物记录写入文件

(1)、判断用户是否绑定信用卡,如无,则返回错误,有,则继续、

(2)、实例化信用卡类cardobj = CreditCard(userobj.bindcard)

(3)、判断信用卡余额是否大于购买金额,如果不够,输出额度不够,否则继续

(4)、调用common.create_serialno(),生成一个流水号

(5)、调用卡的支付模块进行支付cardobj.card_pay(self.shopping_cost, 1, serno)

支付扣款

记录消费流水对账单,将发生了费用还没有还款的账单信息写入文件 report_bill 中

更新信用卡可透支余额信息到数据库 creditcard.db

(6)、记录购物流水shopping_record,并写入报表记录文件shopping_history

(7)、购物结算完成后将对象的购物车清空shopping_cart.clear(), 购物车商品总价清0 ,待下次购物

(8)、返回错误代码

3、creditcard.py之类CreditCard:

1、指定数据表__database的表creditcard

2、定义信用卡额度,信用卡透支余额,信用卡日息,提现手续费率,信用卡状态等变量

3、定义_load_card_info函数,用户输入的卡号获取信用卡信息

4、定义card_is_exists函数,判断输入的信用卡是否存在

5、定义card_pay(self, cost, paytype, sereialno)函数,信用卡支付,从信用卡可透支余额中扣费

(1)、根据传入的paytype的值,定义payfor的名称,例:1:消费、2:转账、3:提现、4:手续费

(2)、支付扣款self.credit_balance -= cost

(3)、定义_tmp_bill_record,记录消费流水对账单

(4)、将消费流水对账单写回到文件report_bill

(5)、更新信用卡可透支余额信息到数据库 creditcard.db

6、定义新发行信用卡create_card函数,根据输入的卡号密码等信息并更新到creditcard.db

7、定义信用卡更新update_card函数,根据输入的卡号密码等信息并更新到creditcard.db

8、定义转账、提现时验证操作_pay_check函数,转账、提现时验证操作,判断卡的余额与支付密码是否正确。并 返回错误类型码

9、定义提现函数fetch_money(self, count, passwd)

(1)、根据传入的取现金额,计算取现+手续费总额

(2)、调用_pay_check函数,根据返回值进行操作。

(3)、如果返回值是errorcode.NO_ERROR,则调用card_pay函数将取现金额和手续费计帐,并回写文件

(4)、并返回errorcode.NO_ERROR

10、定义信用卡转账函数translate_money(self, trans_count, passwd, trans_cardobj)

(1)、根据传入的转帐金额,计算转帐+手续费总额

(2)、调用_pay_check函数,根据返回值进行操作。

(3)、如果返回值是errorcode.NO_ERROR,则调用card_pay函数将转帐金额和手续费计帐,并回写文件

(4)、并给对方卡充值,trans_cardobj.credit_balance += trans_count,并调用trans_cardobj.update_card()写入数据库文件

(4)、并返回errorcode.NO_ERROR

11、定义对账单列表数据函数load_statement_list,调用dbapi.load_statement_list(self.cardno)

12、定义recreate_statement函数,实现今天的日期将当前卡的对账单重新生成,主要对过了还款日的账单重新生 成利息信息

(1)、获取当前日期today

(2)、获取卡的对账单信息card_statement = dbapi.load_statement_list(self.cardno)

(3)、如果有记录,进行循环读取,并判断isfinished字段是否是1,是则加记录加到临时列表tmp_list

(4)、未还款,则获取pdate还款时期,并判断是否过期

(5)、如果过期则计算利息:record[k]["interest"] = v["total"] * settings.EXPIRE_DAY_RATE * day_delta

(6)、将过期或非过期的记录都加到临时列表tmp_list

(7)、将更新过的列表写入文件,替换原有信息dbapi.write_statement_list(self.cardno, tmp_list)

4、common.py介绍:

1、函数verification_code(),用来生成一个4位的验证码,并返回验证码

2、函数encrypt(string),用来字符串加密

3、函数write_log(content),用来写错误日志

4、函数get_chinese_num(uchar),用来计算汉字的个数

5、函数show_message(msg, msgtype)根据msgtype类型,对print函数进行封装,根据不同类型显示不同颜色

6、函数create_serialno(),用来生成一个消费、转账、提款时的流水号,不重复

7、函数numtochr(num_of_weekday),将数字星期转换为中文数字

8、函数input_msg(message, limit_value=tuple()),判断input输入的信息是否为空的公共检测函数,为空继续输入,不为空返回输入的信息

9、函数input_date(msg, default_date),对输入的日期进行判断是否正确 yyyy-mm-dd or yyyy-m-d

5、report.py介绍: 账单生成模块

1、导入calendar,timedelta等模块

2、函数get_date(),用来用户输入一个时间段,如果显示报表是要提供开始、结束日期,返回开始,结束时间

2.1 调用common.input_date来生成一个开始日期startdate

2.2 调用common.input_date来生成一个结束日期enddate

2.3 返回一个时间的字典

3、函数print_shopping_history(userobj),个人中心 - 购物历史记录打印模块

4、函数print_bill_history(userobj) ,个人中心-账单明细 打印模块

5、函数create_card_statement(cardno),生成信用卡对账单

6、函数create_statement_main(),卡对账单初始化模块,从卡数据库文件中加载所有卡号,对所有卡调用生成对账单模块

7、函数print_statement_list(cardno, list_info),将卡号对应的未还款记录显示出来

8、函数print_statement_detail(cardno, serino, details),还款模块 - 用户选择还款的单号后,显示详细的还款对账单及流水信息

程序说明

python购物记录程序_python ATM购物程序相关推荐

  1. python用字典编写购物程序_Python编写购物小程序

    购物车要求: 用户名和密码存放于文件中 启动程序后,先登录,登录成功则让用户输入工资,然后打印商品列表,失败则重新登录,超过三次则退出程序 允许用户根据商品编号购买商品 用户选择商品后,检测余额是否够 ...

  2. python判断火车票座位_Python抢票程序优化,可以选择车次和座次

    Python抢票程序优化,可以选择车次和座次 阅读文本大概需要 5 分钟. pk 哥在元旦前写了一篇关于自动化抢票的程序 用Python抢火车票加邮件通知,同时建了一个火车票助力群,本来只是写着玩玩, ...

  3. python编写购物程序_Python实现购物程序思路及代码

    要求: 启动程序后,让用户输入工资,然后打印出带有序号的商品列表 用户输入商品序号购买相应的商品,或者输入 ' q ' 退出购买界面 选择商品后,检查余额是否足够,够则直接扣款,不够则提示余额不足 用 ...

  4. python自动取款机程序_python ATM取款机----运维开发初学(上篇)

    自动取款机基本功能:可以存取转账,刷卡信息查询,银行卡号历史信息查询,消费记录查询,修改密码. 思维导图如下: 数据库设计: mysql> desc balan_list; #保存账号交易记录o ...

  5. python简单的小程序_Python简单小程序---名片简易系统

    Python简单小程序---名片简易系统 主程序功能代码 import cards_tools while True: cards_tools.show_meun() action = int(inp ...

  6. python怎么重复程序_python怎么让程序重复运行

    python让程序重复运行的方法:1.报错后,重新启动[.py]文件,继续执行:2.重复执行本[.py]文件中的内容:3.异常调用函数本身. python让程序重复运行的方法: 方法一: 报错后,重新 ...

  7. python教程程序_Python如何发布程序的详细教程

    如何发布一个Python程序: 1.安装一个pyInstaller 在pycharm里点 file -–>setting-–>Project workspace-->Interpre ...

  8. python print 如何加锁_python中给程序加锁之fcntl模块的使用

    python 中给文件加锁--fcntl模块 import fcntl 打开一个文件 f = open('./test') ##当前目录下test文件要先存在,如果不存在会报错. 对该文件加密: fc ...

  9. python中怎么编写程序_python写完程序怎么运行

    安装并配置完成之后,我们就可以编写第一个python程序.学过其他语言的兄弟姐妹们,都知道语言的入门程序就是hello world.那么,我们这里也以hello world来抛砖引玉,打开python ...

最新文章

  1. 步步为营 .NET 设计模式学习笔记 六、Adapter(适配器模式)
  2. 【硅谷牛仔】Facebook最初的CEO肖恩帕克
  3. 用Python解“支票问题”题
  4. 胆固醇竟是新冠最隐蔽同伙!协助病毒入侵细胞,普林斯顿、哈佛医学院首次观察到全过程...
  5. Invalid packet stream index
  6. ni软件管理器_Multisim 12.0软件安装包+安装教程
  7. vue rule鼠标移走校验_Vue-cli+Element-ui实现后台管理系统(二)实现后台登录功能...
  8. 安卓实训项目:贪吃蛇V1.0
  9. mock server java_MockServer 简单示例
  10. 利用k-means算法解决简单的无监督图像识别任务
  11. JAVA练习题1(初级基本数据类型、运算符)
  12. linux steam安装路径,Ubuntu Kylin 18.04 steam安装及解决方法
  13. Java单例模式的双if
  14. Chapter Three : Python 序列之字符串操作详解
  15. oppo怎么修改dns服务器地址,OPPO R7/R7 Plus修改DNS图文教程
  16. Android 图片 批量上传,移动端图片批量上传问题
  17. h5课件制作_一款专业的HTML5课件制作工具:炫课
  18. QT之QTableWidget控件
  19. linux域名通过代理,Haproxy根据域名匹配后端服务器
  20. DaVinci DM6437 中文教程

热门文章

  1. 一些IOS开发中的小技巧
  2. Window捕获消息机制及动态创建button-MFC
  3. C#使用Aspose.Words操作word文档(利用模板2)
  4. GDI C++ 位图的绘制
  5. Python—实训day12—汽车用户消费投诉案例-分析及可视化
  6. latex插入表格心得
  7. 集装箱计算机跟踪管理方式,集装箱运输第二章集装箱及其箱务管理(图文)解析.ppt...
  8. c语言readline库6,readline-6.3 之arm平台交叉编译
  9. 如何解决移动端键盘弹起将底部导航栏顶起
  10. Android开发之带行号显示的Log工具类