06.09自我总结

1.文件摆放

├── xxxx
│ ├── run.py
│ └── fil_mode.py
│ └── data_time.py
│ └── loading.py
│ └── data_time.py
│ └── register.py
│ └── login.py
│ └── top_up.py
│ └── balance_enquiry.py
│ └── shopping.py
│ └── freeze.py

2.运行文件

1.run

run.py

from login import login
from register import register
from top_up import top_up
from shopping import shopping
from balance_enquiry import balance_enquiry
from freeze import freeze
from login import login_name
msg_dict ={
'1':login,
'0':register,
'2':top_up,
'3':balance_enquiry,
'4':shopping,
'5':freeze,
'q':'quit'
}
while True:
print("\033[0;31;44m\t\t杨大爷超市欢迎您\t\t\t\t\033[5m")
print("\033[0;30;42m\t\t输入0进入注册界面\t\t\t\033[5m")
print("\033[0;30;42m\t\t输入1进入登入界面\t\t\t\033[5m")
print("\033[0;30;42m\t\t输入2进入充值界面\t\t\t\033[5m")
print("\033[0;30;42m\t\t输入3进入余额查询界面\t\t\033[5m")
print("\033[0;30;42m\t\t输入4进入购物界面\t\t\t\033[5m")
print("\033[0;30;42m\t\t输入5进入解冻界面\t\t\t\033[5m")
print("\033[0;30;42m\t\t输入q退出程序 \t\t\t\t\033[5m")
print(38 * '-')
user_shopping_chiose = input('请输入你要选择的功能')
if user_shopping_chiose not in msg_dict:
print('请好好输入')
continue
elif user_shopping_chiose=='q':
print('再见')
break
msg_dict[user_shopping_chiose]()

3.自定义辅助模块

1.用于文件的读取和写入

fil_mode.py

import json
import os
def fil_add_info_dict(dict,fil='用户注册信息.txt'):
info_dict = json.dumps(dict)
with open(fil,'a',encoding='utf8') as fa :
fa.write(f'{info_dict}\n')
return True def fil_info_name_list(fil='用户注册信息.txt'):
name_list = list()
with open(fil,'a+',encoding='utf-8') as fa :
fa.seek(0)
data = fa.read()
if data:
with open(fil,'r',encoding='utf-8') as fr :
for info_dict in fr:
info_dict = json.loads(info_dict)
name_list.append(info_dict.get('name'))
return name_list def fil_info_balance_amend(name,balance,fil='用户注册信息.txt'):
name_list = fil_info_name_list(fil) #fil_info_name_list为用字典里面的所有名字生成的列表
if name in name_list:
with open(fil,'r',encoding='utf8') as fr,\
open('1.txt','w',encoding='utf8') as fw:
for info_dict in fr:
info_dict = json.loads(info_dict)
if name == info_dict['name']:
info_dict['balance'] = balance
info_dict =json.dumps(info_dict)
fw.write(f'{info_dict}\n')
fw.flush()
os.remove(fil)
os.rename('1.txt',fil) def fil_userinfo(name,fil='用户注册信息.txt'):
with open(fil,'a+',encoding='utf8') as far:
far.seek(0)
for a in far:
a = json.loads(a)
if a['name'] == name:
info_dict = a
return info_dict
return False def fil_info_frzzez_amend(name,freeze,fil='用户注册信息.txt'):
name_list = fil_info_name_list(fil) #fil_info_name_list为用字典里面的所有名字生成的列表
if name in name_list:
with open(fil,'r',encoding='utf8') as fr,\
open('1.txt','w',encoding='utf8') as fw:
for info_dict in fr:
info_dict = json.loads(info_dict)
if name == info_dict['name']:
info_dict["freeze"] = freeze
info_dict =json.dumps(info_dict)
fw.write(f'{info_dict}\n')
fw.flush()
os.remove(fil)
os.rename('1.txt',fil)

2.用于子程序返回主界面来个延迟动画效果

loading.py

import time
def loading():
txt = '返回主界面中loading'
print(f'\033[1;42;m{txt}\033[0m',end='')
for a in range(10):
print(f'\033[1;42;m.\033[0m',end='')
time.sleep(0.1)
print('')
return True

3.用于记录时间

data_time.py用于记录时间

import time
def data_time():
return time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())

4.功能模块

1.注册功能

register.py

from fil_mode import *
from loading import loading
def register():
print('\033[1;34;46m\t\t欢迎使用注册功能\t\t\033[0m')
register_name_Ture = 0
name_list = fil_info_name_list()
while register_name_Ture==0:
print('\033[1;34;43m\t\t请您输入注册账号\t\t\033[0m')
print('\033[1;34;43m\t\t账号由全英文组成\t\t\033[0m')
print('\033[1;31;m输入Q退出程序\t\033[0m')
register_name = input('请输入:').strip()
if register_name == 'Q':
loading()
return False
elif len(register_name.replace(' ','')) != len(register_name):
print('\033[1;31;m输入账号中有宫格请重新输入\t\033[0m')
continue
elif not register_name.isalpha():
print('\033[1;31;m输入账号不是由全英文组成请重新输入\t\t\033[0m')
continue
elif register_name in fil_info_name_list():
print('\033[1;31;m输入账号以存在请重新输入\t\t\033[0m')
else:
register_name_Ture =1
print('\033[1;34;43m\t\t账号名已注册成功\t\t\033[0m')
while True:
print('\033[1;34;43m\t\t请您输入注册密码\t\t\033[0m')
print('\033[1;34;43m\t\t账号由全数字组成\t\t\033[0m')
register_pwd = input('请输入:').strip()
if len(register_pwd.replace(' ', '')) != len(register_pwd):
print('\033[1;31;m输入密码中有宫格请重新输入\t\033[0m')
continue
elif not register_pwd.isdigit():
print('\033[1;31;m输入密码不是由全数字组成请重新输入\t\t\033[0m')
continue
else:
print('\033[1;32;m\t\t注册成功\t\t\033[0m')
register_info_dict = {'name':None,'pwd':None,'balance':0,'integral':0,'freeze':0}
register_info_dict['name'] = register_name
register_info_dict['pwd'] = register_pwd
fil_add_info_dict(register_info_dict)
print('注册成功')
loading()
break
return True

2.登入功能

login.py

from fil_mode import *
from loading import loading
login_name = [None] #用全局可变的受局部影响
def login():
print('\033[1;34;46m\t\t欢迎使用登入功能\t\033[0m')
name_list = fil_info_name_list()
login_name_Ture = 0
login_count =0
if not name_list:
print('\033[1;31;m没有用户注册请先注册\033[0m')
loading()
return False
global login_name
if not login_name[0]:
while login_name_Ture == 0:
print('\033[1;34;43m\t\t请您输入账号\t\t\033[0m')
print('\033[1;31;m输入Q退出程序\t\033[0m')
login_username = input('请输入:').strip()
if login_username == 'Q':
loading()
return False
elif len(login_username.replace(' ', '')) != len(login_username):
print('\033[1;31;m输入账号中有宫格请重新输入\t\033[0m')
continue
elif not login_username.isalpha():
print('\033[1;31;m输入账号不为全英文\t\t\033[0m')
continue
elif not login_username in fil_info_name_list():
print('\033[1;31;m输入账号不存在\t\t\033[0m')
continue
else:
login_name_Ture = 1
print('\033[1;34;43m\t\t账号输入正确\t\t\033[0m')
while login_count < 5:
print(f'\033[1;34;43m\t你有{5-login_count}次机会输入密码\t\t\033[0m')
print('\033[1;34;43m\t\t请您输入密码\t\t\033[0m')
login_pwd = input('请输入:').strip()
if len(login_pwd.replace(' ', '')) != len(login_pwd):
print('\033[1;31;m输入密码中有宫格请重新输入\t\033[0m')
login_count += 1
continue
elif not login_pwd.isdigit():
print('\033[1;31;m输入密码不为全数字\t\t\033[0m')
login_count += 1
continue
else:
user_dict = fil_userinfo(login_username)
if user_dict['pwd'] != login_pwd:
print('\033[1;31;m输入密码错误请重新输入\t\t\033[0m')
login_count += 1
continue
else:
if user_dict["freeze"] == 0:
print('\033[1;32;m\t\t登入成功\t\t\033[0m')
login_name[0] = login_username
loading()
return True
else:
print('\033[1;31;m登入失败\t\t\033[0m')
print(f'\033[1;31;m账户{login_username}以被冻结\t\t\033[0m')
loading()
return False
fil_info_frzzez_amend(login_username,1)
print('\033[1;31;m\t\t登入失败\t\t\033[0m')
print(f'\033[1;31;m{login_username}账号密码登入失败太多已被冻结\033[0m')
loading()
return False
while True:
print(38 * '-')
print("\033[0;40;46m\t\t欢迎使用登入功能\t\t\t\033[0m")
print(f'账号{login_name[0]}已经登入')
chiose = input('输入1当前账号退出并退出登入程序\n'
'输入2当前账号退出并重新登入程序\n'
'输入Q退出当前程序')
print(38 * '-')
if chiose == '1':
login_name[0] = None
return False
elif chiose == '2':
login_name[0] = None
login()
return
elif chiose == 'Q':
loading()
return True
else:
print('\033[1;31;m请正确输入')

3.充值

top_up.py

from fil_mode import *
from login import login_name
from loading import loading
def top_up():
print('\033[1;34;46m\t\t欢迎使用充值功能\t\033[0m')
name_list = fil_info_name_list()
login_name_Ture = 0
login_count =0
if not name_list:
print('\033[1;31;m没有用户注册请先注册\033[0m')
loading()
return False
global login_name
if not login_name[0]:
print('\033[1;31;m没有用户登入请先登入\033[0m')
loading()
return False
info_dict = fil_userinfo(login_name[0])
print(f"\033[1;32;m当前账户{login_name[0]}可用余额为{info_dict['balance']}元\033[0m")
while True :
print('\033[1;34;43m\t\t请您输入充值的金额\t\t\033[0m')
print('\033[1;31;m输入Q退出程序\t\033[0m')
balance = input('请输入:').strip()
if balance == 'Q':
loading()
return False
elif len(balance.replace(' ', '')) != len(balance):
print('\033[1;31;m输入金额中有宫格请重新输入\t\033[0m')
continue
elif not balance.isdigit():
print('\033[1;31;m输入金额不为全数字\t\t\033[0m')
continue
else:
balance_int = int(balance)
info_dict['balance'] += balance_int
fil_info_balance_amend(login_name[0],info_dict['balance'])
print(f'\033[1;32;m充值成功\033[0m')
print(f"\033[1;32;m当前账户{login_name[0]}可用余额为{info_dict['balance']}元\033[0m")
print('\033[1;34;43m\t\t是否继续充值\t\t\033[0m')
print('\033[1;31;m输入Q退出Y为继续\t\033[0m')
while True:
chiose = input('请输入')
if chiose not in ['Q','Y']:
print(f'\033[1;32;m请好好输入\033[0m')
elif chiose == 'Q':
loading()
return False
else:
break

4.余额查询

balance_enquiry.py

from fil_mode import *
from login import login_name
from loading import loading
import time
def balance_enquiry():
print('\033[1;34;46m\t\t欢迎使用余额查询功能\t\033[0m')
name_list = fil_info_name_list()
login_name_Ture = 0
login_count =0
if not name_list:
print('\033[1;31;m没有用户注册请先注册\033[0m')
loading()
return False
global login_name
if not login_name[0]:
print('\033[1;31;m没有用户登入请先登入\033[0m')
loading()
return False
info_dict = fil_userinfo(login_name[0])
print(f"\033[1;32;m当前账户{login_name[0]}可用余额为{info_dict['balance']}元\033[0m")
print('\033[1;42;m5秒后返回主界面\033[0m',end='')
loading()
time.sleep(4)

5.账号解冻功能

freeze.py

from fil_mode import *
from loading import loading
def freeze(): print('\033[1;34;46m\t\t欢迎使用账号解冻功能\t\033[0m')
name_list = fil_info_name_list()
login_name_Ture = 0
login_count = 0
if not name_list:
print('\033[1;31;m没有用户注册请先注册\033[0m')
loading()
return False
while True :
print('\033[1;34;43m\t\t请您输入解冻账号\t\t\033[0m')
print('\033[1;31;m输入Q退出程序\t\033[0m')
name = input('请输入:').strip()
if name == 'Q':
loading()
return False
elif len(name.replace(' ', '')) != len(name):
print('\033[1;31;m输入账号中有宫格请重新输入\t\033[0m')
continue
elif not name.isalpha():
print('\033[1;31;m输入账号不为全英文字母\t\t\033[0m')
continue
elif name not in name_list:
print('\033[1;31;m输入账号不存在\t\t\033[0m')
continue
else:
user_dict = fil_userinfo(name)
user_freeze = user_dict['freeze']
user_pwd = user_dict['pwd']
if user_freeze == 0:
print(f'\033[1;31;m当前账户{name}未被冻结\t\t\033[0m')
loading()
return
else:
while True :
print('-'*50)
a = input('输入:杨大爷请帮我解冻\n请输入:')
if a != '杨大爷请帮我解冻':
print('\033[1;31;m想解冻就好好输入\033[0m')
continue
fil_info_frzzez_amend(name, 0)
print(f'\033[1;32;m账号{name}解冻成功\033[0m')
loading()
return

5.自我总结

1.json

其中dumps,loads,用于文件

#当有一个字典或者一个列表时候我们可以使用json中的dump,load进行快速修改,多个文件就不行了
其中dump,load,用于内存

2.python终端颜色打印

单行打印

print(`\033[1;(这里前景色和背景色任意选一个代码);(可以不输入)m内容\033[0m`)

多行打印同一效果

print(`\033[1;(这里前景色和背景色任意选一个代码);(可以不输入)m内容`)
print('内容')
........
print('最后的内容\033[0m')

python面向过程编程小程序 -ATM(里面用了终端打印)的更多相关文章

  1. python面向过程编程小程序- 模拟超市收银系统

    6.16自我总结 功能介绍 程序功能介绍: 商品信息再读取修改买卖均已xlsx格式 且生成购物记录也按/用户名/购买时间.xlsx格式生成 账号密码输入错误三次按照时间进行冻结 用户信息已json格式 ...

  2. 【Python精华】100个Python练手小程序

    100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分,可以边学习边练习,更容易掌握python. [程序1] 题目:有1.2.3.4个数字,能组成多少个互不相同 ...

  3. 整理了适合新手的20个Python练手小程序

    100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分,可以边学习边练习,更容易掌握python. 本文附带基础视频教程:私信回复[基础]就可以获取的 [程序1] ...

  4. 利用python实现微信小程序游戏跳一跳详细教程

    利用python实现微信小程序游戏跳一跳详细教程 1 先安装python 然后再安装pip <a href="http://newmiracle.cn/wp-content/uploa ...

  5. 微信小程序开发:python+sanic 实现小程序登录注册

    开发微信小程序时,接入小程序的授权登录可以快速实现用户注册登录的步骤,是快速建立用户体系的重要一步.这篇文章将介绍 python + sanic + 微信小程序实现用户快速注册登录全栈方案. 微信小程 ...

  6. Python实现微信小程序支付功能

    由于最近自己在做小程序的支付,就在这里简单介绍一下讲一下用python做小程序支付这个流程.当然在进行开发之前还是建议读一下具体的流程,清楚支付的过程. 1.支付交互流程 当然具体的参数配置可以参考官 ...

  7. Python - 文件分发小程序

    一.概述 该小程序实现从源端到目标端的文件一键拷贝,源端和目标段都在一台电脑上面,只是目录不同而已 二.参数文件说明 1. settings.txt的说明 a. 通过配置settings.txt,填源 ...

  8. Python 发送微信小程序的模板消息

    在小程序的开发过程中,会存在模板消息的发送,具体文档见 这里,模板消息的发送是和语言无关的,这里将简要写一下怎么用 Python 给用户发送模板消息.     通过文档可以知道,发送的时候,需要使用小 ...

  9. Python编写购物小程序

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

随机推荐

  1. Windows Mount NFS Share from e.g. Linux

    Note: Not Stable, so steps below are for reference only ************ Linux Configuration NFS Share 1 ...

  2. 网易Lofter

    作为老网虫,对网易的感情是很深的.当我知道Lofter这个东西后,曾经很兴奋要好好打理自己的博客,然而兴奋很快过了.因为Lofter无时无刻不在刷存在感.无限空间加无限图片流量,国内的服务无法做的更好 ...

  3. Python基础(六) 函数

    .函数 函数是对动作的封装 2.1函数的基本结构 #函数的定义 def 函数名(): #函数提 pass #函数的执行 函数名() 2.2参数初识 #形参 def hanshu(aaa): #参数相当 ...

  4. 升级vue全家桶过程记录

    背景 如果你使用了element-ui的el-tabs组件,并且想要单独升级element-ui至2.10.0,你会发现,使用了el-tabs组件的页面只要打开就卡死.原因是element-ui~2. ...

  5. sqlserver/mysql按天,按小时,按分钟统计连续时间段数据

    文 | 子龙 有技术,有干货,有故事的斜杠青年 一,写在前面的话 最近公司需要按天,按小时查看数据,可以直观的看到时间段的数据峰值.接到需求,就开始疯狂百度搜索,但是搜索到的资料有很多都不清楚,需要自 ...

  6. 读书笔记——《谁说菜鸟不会数据分析—Python篇》

    最近刚读完一本新书,关注的公众号作者出的“谁说菜鸟不会数据分析—Python篇”,话说现在很多微信公众号大牛都在出书,这貌似是一个趋势.. 说说这本书吧,我之前看过一些网文,对于数据分析这一块也有过一 ...

  7. 电商、P2P等大型互联网系统包含哪些业务模块?

    01 前言 在互联网飞速发展的时代,各大互联网公司正在进行激烈的竞争,业务模式也在不断的扩张,这种现状使得目前各大公司的架构系统面临着极大的挑战,而对于我们普通的软件开发者而言,如果你仅仅了解过一些关 ...

  8. 推荐三个学习git的网站或教程

    廖雪峰官方教程:https://www.liaoxuefeng.com/wiki/896043488029600/900388704535136 ProGit中文版:https://git-scm.c ...

  9. 长春理工大学第十四届程序设计竞赛(重现赛)L

    L.Homework Stream 题目链接:https://ac.nowcoder.com/acm/contest/912/L 题目 作为大珩班尖子生,小r每天有很多作业要完成,例如工图.工图和工图 ...

  10. Codeforces Gym100502G:Outing(缩点+有依赖的树形背包)

    http://codeforces.com/gym/100502/attachments 题意:有n个点,容量为tol,接下来n个关系,表示选了第i个点,那么第xi个点就必须被选.问最多可以选多少个点 ...