新手写的代码:
CASH MANAGER
包含存钱、取款、查余额、查明细、清除数据等。
缺点是密码裸露,为进行伪装

全部代码在这里:

# 愿我的代码能顺利跑起来。
# 写在前面的话:
# 别乱动代码!改动前仔细看注释!
import tqdm
import os
import time
import random
import string# 系统时间代码
TimeNow = time.strftime('%Y-%m-%d %H:%M:%S')print('''
****************************************************
*                                                  *
*                A.H.N CASH MANAGER                *
*             IRRIGATION BIRD.INC 2022             *
*                                                  *
*                                                  *
****************************************************
''')
print(f'日期时间:{TimeNow} 系统版本:1.30 Preview')def file_exam():"""参数说明:-DataReadline:开机系统加载后读取 f.readline()时的临时变量"""for _ in tqdm.tqdm(range(30), desc='[系统文件检测]', ncols=70, colour='blue', leave=False):time.sleep(0.05)# 如果系统文件,存在则读取账户名称,账户密码和资产数据等并返回if os.path.isfile('acc.db'):f = open('acc.db', 'r')print('[系统文件检测通过]')time.sleep(0.5)print('[准备加载账户数据]')time.sleep(0.5)for _ in tqdm.tqdm(range(30), desc='[加载文件数据]', ncols=70, colour='blue', leave=False):time.sleep(0.05)#print('OK')# 读取系统文件内容f = open('acc.db', 'r')DataReadline = f.readline()#print(DataReadline)if DataReadline == 'K':print('[系统数据损坏且无法进行修复]')print('[可能由于系统执行过数据清除]')time.sleep(0.5)print('[开始启动数据文件保护程序]')time.sleep(0.5)for _ in tqdm.tqdm(range(1000), desc='[数据文件保护]', ncols=70, colour='blue', leave=False):time.sleep(0.05)for _ in range(8):savecode = random.sample(string.ascii_uppercase + string.digits, 8)#print(savecode)savecode_ = ''.join(savecode)#print(savecode_)savecode__ = '#' + savecode_f = open('acc.db', 'w')f.write(savecode__)f.close()print('[请牢记保护代码]')print(savecode__[1:])print()input('[请记录保护代码后按任意键开始下一步]:')print('[请将保护代码输入CASH MANAGER REPAIR MASTER 进行系统文件修复]')time.sleep(1)print('[请不要关闭程序][等待程序自动退出]')time.sleep(5)exit('[再见]')# 判断系统文件是否符合以下要求:# 1.数据列总长度必须是4 2.密码长度为6 且均为数字 3.金额必须为浮点型# 以上有一点不符合则执行文件修复程序elif DataReadline == '':dataRepair()elif DataReadline == None:dataRepair()elif not DataReadline[-1].isdigit():dataRepair()elif len(DataReadline) < 19:dataRepair()# 所有检查字符串切片的判断必须要从这里开始elif DataReadline[0] == '#':print('[系统数据损坏无法修复且已获得保护]')print('[请将保护代码输入 CASH MANAGER REPAIR MASTER 开始修复]')time.sleep(5)exit('[再见]')# 系统文件正常时,直接读取并返回账户数据else:f = open('acc.db', 'r')for DataLine in f:DataLine = DataLine.split(',')UserNameLoad = DataLine[0]PasswordLoad = DataLine[1]MoneyLoad = DataLine[2]SafeLock = DataLine[3]return UserNameLoad, PasswordLoad, MoneyLoad, SafeLock# 未检测到系统文件时,开始新用户注册,注册成功后返回账户数据else:print('-' * 50)print('[未检测到系统文件]')time.sleep(0.5)print('[开始新用户注册程序]')f = open('acc.db', 'w')while True:UserName = input('[请设置账户名称][注意区分大小写]:').strip()if len(UserName) != 6:print('[账户名称长度规定为六位]')continueelse:while True:Password_1 = input('[请设置账户密码][长度为六位数字]:').strip()if not Password_1.isdigit():print('[账户密码必须都是数字]')continueelif len(Password_1) != 6:print('[账户密码长度必须是六位]')continuePassword_2 = input('[请确认账户密码]:').strip()if Password_1 == Password_2:print('[账户注册成功]')PersonData = [UserName, Password_2, '0.00', '0']PersonData = ','.join(PersonData)f.write(PersonData)for _ in tqdm.tqdm(range(50), desc='[账户信息注册]', ncols=70, colour='blue', leave=False):time.sleep(0.05)f.close()return UserName, Password_2, '0.00', '0'else:print('[两次密码输入不一致][请重新输入]')continue# 账户修复函数
def dataRepair():print('-' * 50)print('[**警告**][检测到系统文件损坏]')time.sleep(0.5)print('[开始启动账户自动修复程序]')print('[由于数据丢失或损坏][您的帐户即将被重置]')time.sleep(0.5)for _ in tqdm.tqdm(range(1000), desc='[正在重置账户]', ncols=70, colour='blue', leave=False):time.sleep(0.05)print('-' * 50)print('[账户重置完成]')f = open('acc.db', 'w')while True:TempName = input('[请设置紧急重置账户名称]:').strip()if len(TempName) != 6:print('[账户名称长度规定为六位]')continueelse:while True:TempPassword_1 = input('[请设置紧急重置账户密码][长度为六位数字]:').strip()if not TempPassword_1.isdigit():print('[账户密码必须都是数字]')continueelif len(TempPassword_1) != 6:print('[账户密码长度必须是六位]')continueTempPassword_2 = input('[请确认紧急重置账户密码]:').strip()if TempPassword_1 == TempPassword_2:print('[紧急账户设置成功]')TempData = [TempName, TempPassword_2, '0.00', '0']TempData = ','.join(TempData)f.write(TempData)f.close()time.sleep(3)exit('[再见]')else:print('[两次密码输入不一致][请重新输入]')continuedef login(LoginName, LoginPassword, LoginSafeLock):print('-' * 50)print('[用户登录]')if LoginSafeLock == '1':print('[您的账户已被锁定]')time.sleep(3)exit('[再见]')else:while True:UName = input('[请输入账户名称]:').strip()if UName == LoginName:print('-' * 50)count = 0while count < 3:PWord = input('[请输入账户密码]:').strip()if PWord == LoginPassword:print('[账户登录成功]')return LoginName, LoginPassword, LoginSafeLockelse:print('[密码输入错误]')print(f'[三次密码输入错误账户将被锁定][剩余{2 - count}次]')count += 1continueprint('[您的账户已被锁定]')time.sleep(3)LoginSafeLock = '1'return LoginName, LoginPassword, LoginSafeLockelse:print('[账户名称错误]')def startscreen(UM):print('-' * 50)print(f'欢迎[{UM}] [{TimeNow}]')print('''[业务种类]
[标注 * 表示该功能暂不可用]
[1.现金存入 2.账户取款 3.明细查询]
[4.修改密码 5.数据清除 *.数据导出]
[7.余额查询 8.关于软件 0.退出程序]''')print('-' * 50)while True:Choise = input('[请选择业务代码]:').strip()if Choise.isdigit():Choise = int(Choise)if 0 <= Choise < 9:return Choiseelse:print('[业务代码输入错误]')continueelse:print('[业务代码必须是数字]')continuedef business(N, P, M):if N == 0:exit('[再见]')elif N == 1:print('[现金存入]')SaveMoney = input('[请输入存入的金额]:').strip()if SaveMoney.count('.') == 1:M = float(M)M = round(M, 2)SaveMoneyList = SaveMoney.split('.')SaveMoneyStr = ''.join(SaveMoneyList)if SaveMoneyStr.isdigit():SaveMoney = float(SaveMoney)SaveMoney = round(SaveMoney, 2)M += SaveMoneyM = str(M)print(f'[您已存入:{SaveMoney}元][当前余额:{M}元]')f = open('data.db', 'a', encoding='GBK')SaveTime = time.strftime('%Y-%m-%d %H:%M')SaveMoney = str(SaveMoney)SaveData = [SaveTime, '存入', SaveMoney, M]SaveDataWrite = ' '.join(SaveData)f.write(f'{SaveDataWrite}\n')f.close()return P, Melse:print('[金额格式错误]')return P, Melse:print('[金额必须精确到小数点后两位]')return P, Melif N == 2:print('[账户取款]')LoadMoney = input('[请输入取出的金额]:').strip()if LoadMoney.count('.') == 1:M = float(M)M = round(M, 2)LoadMoneyList = LoadMoney.split('.')LoadMoneyStr = ''.join(LoadMoneyList)if LoadMoneyStr.isdigit():LoadMoney = float(LoadMoney)LoadMoney = round(LoadMoney, 2)if LoadMoney <= M:M -= LoadMoneyM = str(M)print(f'[您已取出:{LoadMoney}元][当前余额:{M}元]')f = open('data.db', 'a', encoding='GBK')LoadTime = time.strftime('%Y-%m-%d %H:%M')LoadMoney = str(LoadMoney)LoadData = [LoadTime, '取出', LoadMoney, M]LoadDataWrite = ' '.join(LoadData)f.write(f'{LoadDataWrite}\n')f.close()return P, Melse:print('[账户余额不足]')M = str(M)return P, Melse:print('[金额格式错误]')return P, Melse:print('[金额必须精确到小数点后两位]')return P, Melif N == 3:print('[明细查询]')if os.path.isfile('data.db'):print('     [日期]      [项目 金额 余额]')f = open('data.db', 'r')for line in f:print(line, end='')return P, Melif N == 4:print('[修改密码]')OldPassword = input('[请输入旧密码]:').strip()if OldPassword == P:NewPassword_1 = input('[请输入新密码]:').strip()NewPassword_2 = input('[请确认新密码]:').strip()if NewPassword_1 == NewPassword_2:print('[密码修改成功]')return NewPassword_2, Melse:print('[两次密码输入不一致][密码修改失败]')return P, Melse:print('[密码验证错误][返回主菜单]')return P, Melif N == 5:print('[数据清除]')print('[警告][数据清除后无法恢复][请输入清除代码进行确认]')ClearCode = random.sample(string.ascii_uppercase + string.digits, 6)ClearCode = ''.join(ClearCode)Code = input(f'[请输入清除代码开始清除数据] {ClearCode}:').strip()if Code == ClearCode:print('[开始进行数据清除]')time.sleep(0.5)print('[第一步:清除账户数据]')time.sleep(0.5)for _ in tqdm.tqdm(range(1000), desc='[清除账户数据]', ncols=70, colour='red', leave=False):time.sleep(0.05)f = open('acc.db', 'w')f.write('K')f.close()print('[账户数据清除完成]')time.sleep(0.5)print('[第二步:清除账户明细]')time.sleep(0.5)for _ in tqdm.tqdm(range(1000), desc='[清除账户明细]', ncols=70, colour='red', leave=False):time.sleep(0.05)f = open('data.db', 'w')f.write('')f.close()print('[全部数据清除已完成]')time.sleep(0.5)print('[请不要关闭程序][等待程序自动退出]')time.sleep(5)exit('[再见]')else:print('[清除代码输入错误][停止数据清除]')return P, Melif N == 6:print('[数据导出]')print('[该功能暂不可用]')return P, Melif N == 7:print('[余额查询]')print(f'[当前余额][{M}元]')print(f'[查询时间][{TimeNow}]')return P, Melif N == 8:print('[关于软件]')Software = ['代码:边峥同学', '2022年5月21日 主代码框架完成', '2022年5月22日 修复了诸多BUG', '内部版本号:KID']for i in Software:print(i)return P, M# 主程序运行框架
# step1 系统文件检测和注册程序
UserNameR, PasswordR, MoneyR, SafeLockR = file_exam()
# step2 用户登录
UserNameR, PasswordR, SafeLockR = login(UserNameR, PasswordR, SafeLockR)
# 登录密码错误返回值锁定
if SafeLockR == '1':f = open('acc.db', 'w')LockData = [UserNameR, PasswordR, MoneyR, SafeLockR]LockData = ','.join(LockData)f.write(LockData)f.close()exit('[再见]')# 业务列表和业务办理
while True:# 展示业务列表供用户选择Pick = startscreen(UserNameR)# 开始业务PasswordR, MoneyR = business(Pick, PasswordR, MoneyR)# 每完成业务后重新自动保存数据BusinessOver = [UserNameR, PasswordR, MoneyR, SafeLockR]BusinessOver = ','.join(BusinessOver)f = open('acc.db', 'w')f.write(BusinessOver)f.close()# 业务完成后稍作停顿time.sleep(2)# print(UserNameR, PasswordR, MoneyR, SafeLockR)# print('OK')

其中注释掉一些用于运行检测是否正常的代码……

Python写的现金管理程序相关推荐

  1. 用python写一个文件管理程序下载_Python管理文件神器 os.walk

    原标题:Python管理文件神器 os.walk 来自:CSDN,作者:诡途 [导语]:有没有想过用python写一个文件管理程序?听起来似乎没思路?其实是可以的,因为Python已经为你准备好了神器 ...

  2. 如何用python写一个文件管理程序

    不知道大家有没有想过用python写一个文件管理程序?听起来似乎没思路?其实是可以的,因为Python已经为你准备好了神器os.walk,一起来试试吧! Python中os.walk是一个简单易用的文 ...

  3. 用python写计算机专业_自学open cv,用Python写的,本人是一名学生党,因为我本专业不是搞计算机的_cc霜_学生党_教育_教育其他...

    自学open cv,用Python写的,本人是一名学生党,因为我本专业不是搞计算机的,所以一切从0开始,自己学习的时候就整理一些笔记,以防忘记了.

  4. Python写的代码打包成.exe可执行文件

    Python写的代码打包成.exe可执行文件 1. 安装pyinstaller 2. [在线生成icon](http://www.ico51.cn/) 3. 打包命令 pyinstaller -i x ...

  5. 用python做算法_自己用python写的螺旋矩阵生成算法

    自己用python写的螺旋矩阵生成算法 如果输入6,可以生成如下矩阵: 1 20 19 18 17 16 2 21 32 31 30 15 3 22 33 36 29 14 4 23 34 35 28 ...

  6. python写一个通讯录step by step V3.0

    python写一个通讯录step by step V3.0 更新功能: 数据库进行数据存入和读取操作 字典配合函数调用实现switch功能 其他:函数.字典.模块调用 注意问题: 1.更优美的格式化输 ...

  7. python俄罗斯方块算法详解_用 Python 写一个俄罗斯方块游戏 (

    @@ -2,34 +2,34 @@ > * 原文作者:[Dr Pommes](https://medium.com/@pommes) > * 译文出自:[掘金翻译计划](https://g ...

  8. Python到底是什么样的语言? Python和Java比谁更快? TensorFlow的主体是用Python写的吗?

    Python到底是什么样的语言? Python和Java比谁更快? TensorFlow的主体是用Python写的吗? Python到底是什么样的语言? 解析: 这里是一些关键点:Python是解释型 ...

  9. python编写测试工具-python 写一个性能测试工具(一)

    国庆重新学习了一下go的gin高性能测试框架. 用JMeter来测试gin与flask接口的性能,差别很大. 为什么我自己不尝试写一个性能工具,性能工具的核心就是 并发 和 请求. 请求可以选择Pyt ...

最新文章

  1. 机器学习算法1_线性回归
  2. 程序员面试题100题第19题——反转链表
  3. 如何让Git克隆到当前目录
  4. iBatis.Net(C#)SQL数据映射
  5. vue实现查询多条记录_sql:多表查询
  6. 简单粗暴, 包邮送 30 本 Python 新书。
  7. 单链表的初始化,整表创建,单个元素插入,单个元素删除,整表删除等操作...
  8. 推荐系统实战第一部分 协同过滤
  9. 笨方法学python第四版当当_Python编程(第四版)
  10. 以太坊虚拟机 EVM(3)交易流(FISCO BCOS为例)
  11. 缺失索引自动创建语句
  12. bootstrap4.0图标使用_Bootstrap 图标字体 Font Awesome 4.0 发布
  13. c语言超市选址问题实验报告,单仓库设施选址决策方法(重心法,C语言代码)
  14. 牛客网 多校3 I三角形(皮克定理)
  15. TeamViewer三种许可证的区别是什么?
  16. undi是什么意思_undefined是什么意思
  17. 桌面池计算机置备,Horizon View 7 发布Win10桌面二:即时克隆桌面池配置
  18. 仓库如何盘点?使用盘点机盘点有什么好处?仓库盘点方法?
  19. c语言int转换为bytes,__c语言__整型、实型的存储(十进制转二进制)
  20. word回车后间距太大_word编辑按回车换行上下间距好大怎么回事

热门文章

  1. 蜗牛学院:这6种心态,容易毁掉你的职场
  2. 21 C++ 长度单位转换
  3. 荒野行动8月1日服务器维护,荒野行动手游12月21日服务器维护到几点 12月21日具体开服时间公告...
  4. 计算机二级考MS office还是WPS office?
  5. Wpf大屏软件开发过程中遇到的若干问题
  6. 华米 Amazfit 跃我 GTR 4和GTS 4的区别
  7. 智能时代悄然到来刷脸支付逐渐成为潮流
  8. 微信公众号主体已注销 如何办理账号迁移和公证书?
  9. Oracle 11g实时SQL监控 --好东西不该藏着
  10. 2015CDAS中国数据分析师行业峰会:R语言量化投资数据分析应用