目录

* 注册功能(掌握) <https://www.cnblogs.com/nickchen121/p/10799173.html#注册功能掌握>
* 接受用户输入用户名,进行合法性校验,拿到合法的用户名
<https://www.cnblogs.com/nickchen121/p/10799173.html#接受用户输入用户名进行合法性校验拿到合法的用户名>
* 接受用户输入密码,进行合法性校验,拿到合法的密码
<https://www.cnblogs.com/nickchen121/p/10799173.html#接受用户输入密码进行合法性校验拿到合法的密码>
* 将合法的用户名和密码写入文件
<https://www.cnblogs.com/nickchen121/p/10799173.html#将合法的用户名和密码写入文件>
* 注册 <https://www.cnblogs.com/nickchen121/p/10799173.html#注册>
* 封装文件读写功能 <https://www.cnblogs.com/nickchen121/p/10799173.html#封装文件读写功能>
* 分层实现功能(掌握) <https://www.cnblogs.com/nickchen121/p/10799173.html#分层实现功能掌握>
面向过程编程是解决问题的一种思想,相当于武林门派,武林门派之间没有好坏之分,因此它与我们之后学习的面向对象编程其实没有好坏之分。

面向过程编程,核心是编程二字,过程指的是解决问题的步骤,即先干什么、后干什么、再干什么、然后干什么……

基于该思想编写程序就好比在设计一条流水线,面向对称编程其实是一种机械式的思维方式。


当我们写登录功能,我们首先需要输入账号、密码,然后认证两次密码是否相同,然后从数据库中读取密码验证用户密码输入是否正确,然后输入验证码……之后,我们就能够实现登录功能。这样把登录功能问题流程化,进而是解决问题的思路非常清晰。



优点:复杂的问题流程化,进而简单化。

生产汽水瓶的流水线,没办法生产特斯拉。流水线下一个阶段的输入与上一个阶段的输出是有关联的。因此他的扩展性极差。

缺点:扩展性差。

注册功能(掌握)

接受用户输入用户名,进行合法性校验,拿到合法的用户名
def check_username(): username = input('username>>>').strip() if
username.isalpha(): return username else: print('用户名必须为字母,傻叉')
接受用户输入密码,进行合法性校验,拿到合法的密码
def check_pwd(): while True: pwd = input('password>>>').strip() if len(pwd) <
5: print('密码长度至少五位') continue re_pwd = input('re_password>>>').strip() if pwd
== re_pwd: return pwd else: print('两次输入密码不一致')
将合法的用户名和密码写入文件
def insert(username, pwd, path='57.txt'): with open(path, 'a',
encoding='utf8') as fa: fa.write(f'{username}:{pwd}\n')
注册
def register(): username = check_username() pwd = check_pwd() insert(username,
pwd) print(f'{username}注册成功') register() username>>>nick password>>>12345
re_password>>>12345 nick注册成功
如果现在我们需要校验用户的年龄,因此我们需要增加一个check_age()方法,并且其他有牵连的地方都需要修改,因此它的扩展性极差。

封装文件读写功能
# def register(): # while True: # username = input('username>>>').strip() # #
检测用户是否重复,如果重复则重新输入 # with open('db.txt', 'r', encoding='utf8') as fr: # for
line in fr: # info = line.strip('\n').split(':') # if username == info[0]: #
print('用户名已经存在') # break # else: # # 用户名不存在 # # 跳出循环,不用重复输入用户名字 # res = # def
tell_info(): # username = input('username>>>').strip() # with open('db.txt',
'r', encoding='utf8') as fr: # for line in fr: # info =
line.strip('\n').split(':') # if username == info[0]: # return info
数据处理层
def select(username): with open('db.txt', 'r', encoding='utf8') as fr: for
line in fr: info = line.strip('\n').split(':') if username == info[0]: return
info def tell_info(): username = input('username>>>').strip() info =
select(username) print(info)
用户功能层
def register(): while True: username = input('username>>>').strip() #
检测用户是否重复,如果重复则重新输入 res = select(username) if res: print('用户名已经存在') else: break
while True: pwd = input('password>>>').strip() re_pwd =
input('re_password>>>').strip() if pwd != re_pwd: print('两次输入密码不一致,请重新输入')
else: break
把注册功能分开之后,功能与功能直接解耦合,复杂的问题流程化,更加清晰。

分层实现功能(掌握)

* 用户功能层:实现用户具体的功能。
* 接口层:连接数据处理层和用户功能层。
* 数据处理层:处理数据后把结果交给接口层。

分层实现功能的好处:当我们需要实现web端和app端的软件,我们只要把数据处理层和接口层写好,然后实现不同的用户功能层即可,web端使用web端的用户功能层,app端使用app端的用户功能层,但是接口层和数据处理层是通用的。

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信